Prawie wszystkie wpisy na tej stronie dotyczą łotdafaków UX-owych, a nie programistycznych. Może powinien być osobny temat?
- Rejestracja:ponad 4 lata
- Ostatnio:około 2 lata
- Lokalizacja:Warszawa
- Postów:1092
https://docs.microsoft.com/pl-pl/azure/hdinsight/use-pig
Apache świnia xD




- Rejestracja:ponad 6 lat
- Ostatnio:3 dni
- Lokalizacja:Silesia/Marki
- Postów:5505
Niby rekrutacja, ale dla mnie bardziej UX WTF
Wejdźcie na stronę https://workeo.dev/offer/bitclear-scaladeveloper i kliknijcie sobie Aplikuj
. Na jednym ekranie tylko jedno pytanie, po wypełnieniu pytania przechodzi się do następnego. Bo programista jest za głupi żeby wypełniać kilka pytań na raz.
Piersze pytanie Jak masz na imię
Drugie pytanie Jak się nazywasz
. I co ja mam tam podać? Imię i nazwisko czy samo nazwisko?
najgorszy jaki widziałem w życiu formularz do wysyłania CV. Chyba dostosowany do pokolenia Z, W takich momentach czyje się stary :(

Jak masz na imię
a drugie Jak się nazywasz
to mniej więcej wiadomo, że w drugim chodzi o nazwisko. Ale jeśli od razu by padło pytanie Jak się nazywasz
to w sumie nie wiadomo czy chodzi o samo nazwisko czy o imię + nazwisko

jak się nazywasz?
to pytanie o nazwisko. To, że niektórzy odpowiadają na nie imieniem i nazwiskiem, to jest ich sprawa, ale to nie jest poprawne.


- Rejestracja:ponad 22 lata
- Ostatnio:około 10 godzin
- Lokalizacja:Poznań
Grzebiemy w czyimś projekcie. W Javie wymyślili nowy typ danych, który leci też na front. Roboczo nazywam to HindiBool. Ma dwie wartości:
"YES"
, null


- Rejestracja:prawie 14 lat
- Ostatnio:3 dni
- Postów:2512
Zaszła potrzeba wysyłania niektórych logów do jakiegoś serwera Syslog. Ok więc jako że korzystamy z log4net
, to postanowiłem użyć appendera wbudowanego, a mianowicie RemoteSyslogAppender
. Ok wszystko fajnie logi idą - jest git. Jednakże, klient chce wysyłać tekst zawierający polskie litery. No ok, kodowanie UTF-8 i wszystko fajnie. Jest opcja encoding
w konfiguracji - super. No nie super, bo okazało się, że log4net wycina polskie znaki. Próbowałem też jakieś niemieckie - też nie ma. Nie to, że krzaki. Ich w ogóle nie było. No to WTF. Sprawdzam w kodzie źródłowym, a tam to:
// Accept only visible ASCII characters and space. See RFC 3164 section 4.1.3
if (((int)c >= 32) && ((int)c <= 126))
{
builder.Append(c);
}
Czyli "it's not a bug it's a feature". Sprawdzam rzeczone RFC:
The code set traditionally and most often used has also been seven-bit ASCII in an
eight-bit field like that used in the PRI and HEADER parts. In this
code set, the only allowable characters are the ABNF VCHAR values
(%d33-126) and spaces (SP value %d32). However, no indication of the
code set used within the MSG is required, nor is it expected. Other
code sets MAY be used as long as the characters used in the MSG are
exclusively visible characters and spaces similar to those described
above.
Czyli używanie innych znaków nie jest zakazane lub odradzane, ale ten appender je arbitralnie wycina niezależnie od podanego kodowania. Nic o tym nie ma w dokumentacji https://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_RemoteSyslogAppender.htm

- Rejestracja:prawie 14 lat
- Ostatnio:3 dni
- Postów:2512
Kolejne WTF z cyklu. W kodzie źródłowym appendera (log4net) RemoteSyslogAppender
natrafiłem na to:
#if NET_4_5 || NETSTANDARD
Client.SendAsync(buffer, buffer.Length, RemoteEndPoint).Wait();
#else
this.Client.Send(buffer, buffer.Length, this.RemoteEndPoint);
#endif
gdzie Client to System.Net.Sockets.UdpClient.
Czy potrafi mi ktoś wyjaśnić po kiego używać asynchronicznej wersji i wywoływać na tym Wait
jak można po prostu użyć synchronicznej?

- Rejestracja:około 17 lat
- Ostatnio:około 2 godziny
- Lokalizacja:Wrocław
Największym WTFem jest chyba używanie log4net
po 2005 roku.




- Rejestracja:prawie 7 lat
- Ostatnio:2 dni
- Lokalizacja:Kraków
- Postów:1999
Bardziej UX-owy niż programistyczny...
https://developer.allegro.pl/documentation/#
Spróbujcie zescrollować na dół strony ;)





- Rejestracja:ponad 13 lat
- Ostatnio:około 3 godziny
- Lokalizacja:Tuchów
- Postów:12156

masz blue screeny regularnie? może przez czyszczenie rejestru?
- no raczej ciężko, żeby nieregularne czyszczenie rejestru powodowało regularne bluescreeny. Natomiast przy pracy z SF różne dziwne rzeczy się dzieją. ja już po prostu z tego wyrosłem
- no nie wiem, dzisiaj na pisaniu komentarzy na temat CCleanera spędziłeś więcej czasu niż ja na używaniu go w ciągu kilku lat, chyba jednak wciąż czujesz silną więź z tym programem. :)




- Rejestracja:prawie 7 lat
- Ostatnio:4 minuty
- Postów:1659
kod pisany w C, zmienna typu int pełniąca rolę booleana niby wszystko normalne, tylko dlaczego TRUE jest oznaczone przez -1

<wzdycha>
(Pewnie nigdy).

boolean
niejawnie konwertowany z / na int
to rak. Starożytny potwór, który za niejeden krytyczny błąd, również w security, odpowiada.
- Rejestracja:około 12 lat
- Ostatnio:około godziny
- Postów:1427
W .NET 5 dodano rekordy, fajny feature, który docelowo miał pozwalać na szybkie i łatwe tworzenie klas z domyślnym value-based comparision. Szybki check jak to zajebiście działa.
using System;
public class Program
{
public static void Main()
{
var a = new A { Value = "Test" };
var b = new A { Value = "Test" };
Console.WriteLine(a == b);
IA c = new A { Value = "Test" };
IA d = new A { Value = "Test" };
Console.WriteLine(c == d);
}
public interface IA
{
}
public record A : IA
{
public string Value {get; init;}
}
}
Wyniku nie będę zdradzał, ale dla mnie to expectations vs reality
.

MyMessage
jest interfejsem znacznikowym? b) Czy MyMessage
jest interfejsem znacznikowym jeśli można zdefiniować aktora tak żeby przyjmował tylko wiadomości dziedziczące po MyMessage
(takie typowanie udostępnia TypedAkka, dzięki czemu nie można wysłać innym wiadomości do tego aktora)


The marker interface pattern is a design pattern in computer science, used with languages that provide run-time type information about objects. It provides a means to associate metadata with a class where the language does not have explicit support for such metadata.
Another solution is for the language to support metadata directly: Both the .NET Framework and Java (as of Java 5 (1.5)) provide support for such metadata. In .NET, they are called "custom attributes", in Java they are called "annotations". Despite the different name, they are conceptually the same thing.



- Rejestracja:około 9 lat
- Ostatnio:około 3 godziny
- Postów:5107
Pamiętajcie, piszcie długie i opisowe nazwy funkcji aby każdy rozumiał o co chodzi np.
IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr(...)
[BindingImpl (BindingImplOptions.Optimizable)]
public static IntPtr GetAppearance (IntPtr class_ptr, UITraitCollection traits, params Type [] whenFoundIn)
{
if (traits == null)
throw new ArgumentNullException ("traits");
IntPtr[] ptrs = TypesToPointers (whenFoundIn);
if (Runtime.IsARM64CallingConvention) {
// The native function takes a variable number of arguments ('appearanceWhenContainedIn:'), terminated with a nil value.
// Unfortunately iOS/ARM64 (not the general ARM64 ABI as published by ARM) has a different calling convention for varargs methods
// than regular methods: all variable arguments are passed on the stack, no matter how many normal arguments there are.
// Normally 8 arguments are passed in registers, then the subsequent ones are passed on the stack, so what we do is to provide
// 6 dummy arguments (remember that Objective-C always has two hidden arguments (id, SEL), which are the two first arguments
// here), in order to push the arguments we care about to the stack.
return IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr (
class_ptr, // x0
Selector.GetHandle (UIAppearance.selAppearanceForTraitCollectionWhenContainedIn), // x1
traits.Handle, // x2
ptrs [0], // x3
IntPtr.Zero, // x4
IntPtr.Zero, // x5
IntPtr.Zero, // x6
IntPtr.Zero, // x7
ptrs [1], // the rest is on the stack. This is where iOS/ARM64 expects the first varargs arguments.
ptrs [2], ptrs [3], ptrs [4], IntPtr.Zero);
} else {
return Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr (class_ptr, Selector.GetHandle (UIAppearance.selAppearanceForTraitCollectionWhenContainedIn),
traits.Handle, ptrs [0], ptrs [1], ptrs [2], ptrs [3]);
}
}



- Rejestracja:ponad 7 lat
- Ostatnio:2 dni
Może nie programistyczny ale organizacyjny. Zespół w którym pracuję podzielił się na 2. Wynikł z tego poważny problem, ponieważ w moim zespole nie ma certyfikowane sc(r)um-mastera. Dramat w jednym akcie.

Pytanie co za firma wystawia te certyfikaty
- ScrumAlliance i jest to masówka. Dużo znajomych porobiło(5-6 lat temu). Faktycznie u Germańców ten certyfikat to taka norma. W Polsce, też jest trochę firm, gdzie ten certyfikat jest popularny (pracodawca dopłaca). Prawcowałem w zespole, gdzie było więcej Certyfikowanych Sado Maso niż Certyfikowanych Jave Developerów (to drugie to jakies stare nudy) :-).

- Rejestracja:prawie 5 lat
- Ostatnio:około 3 godziny
- Postów:264
Amazon uruchomił polską stronę, Amazon.pl. Próbuję wyszukać Philip K. Dick
, czyli zgodnie z faktycznym zapisem imienia. Nic. Zero. Null. Strona mówi tylko, że wyszukała nie Philip
, ale... Philips
, czyli dodała s
na końcu imienia. W pierwszej chwili jednak pomyślałem, że coś mi się ubzdurało, więc wpisałem Phillip K. Dick
, czyli przez dwa l
. Znalazło 21 pozycji. Co ciekawe, właściwe wyniki (setki pozycji) daje dopiero kliknięcie Zamiast tego wyszukaj philip k. dick
.
Oczywiście Amazon.com sam poprawia imię przy wyszukiwaniu, przy czym wyszukanie błędnego (Search instead...
) zwraca zbliżony zestaw wyników, co wyszukanie poprawnego.

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Hibernate operation: could not prepare statement; SQL [select ....]
(...)
Caused by: java.sql.SQLException: Prepared or callable statement has more than 2000 parameter markers.
(nie mój serwis, ale te logi będę podsyłać każdemu kto twierdzi że Hibernate przecież ładnie ogarnia query i w ogóle o niczym nie trzeba myśleć...)






- Rejestracja:prawie 15 lat
- Ostatnio:około 5 godzin
- Lokalizacja:Laska, z Polski
- Postów:10051
W PHP zawołanie funkcji z nadmiarowymi argumentami jest jednocześnie dozwolone i niedozwolone.
Wbudowane funkcje
ctype_lower("a", "b"); // error: ctype_lower() expects exactly 1 parameter, 2 given
array_unique([], SORT_STRING, []); // error: array_unique() expects at most 2 parameters, 3 given
Funkcje użytkownika
$closure = function ($arg) {};
function my_function($arg) {};
$closure(1, 2); // works
my_function(1, 2); // works

JĘZYK PROGRAMOWANIA powinny być predictible i reliable
- no fajnie, tylko czemu czepiasz się PHP, który akurat nic wspólnego z predictible i reliable
nie ma - by design.


if (func_num_args() > n) throw new Exception("Too many args");
. W ten sposób Ty musiałbyś dodać po prostu takie sprawdzenie samodzielnie do każdej swojej funkcji.


Może tak nie stricte programistyczne, ale na pewno WTF.
Niedługo minie rocznica komunikatu, który mi wyświetla Windows Update:
- screenshot-20210315110948.png (15 KB) - ściągnięć: 3




Trzystanowy boolean, który ma pięć możliwych wartości, z czego trzy są nie wspierane…

- Rejestracja:około 17 lat
- Ostatnio:około 2 godziny
- Lokalizacja:Wrocław
Cały dzień nie mogę się skupić na robocie, wręcz odczuwam psychosomatyczny ból spowodowany przez to, że muszę używać pewnej wewnątrzfirmowej libki, której trzon API stanowią takie klasy: EventEnvelope<TPayload>
oraz GenericEventEnvelope
.
Jak widać niegeneryczna wersja to ta, która ma generic
w nazwie. Logiczne.
Architektom przy zatrudnianiu powinni ucinać ręce, żeby nie mogli pisać kodu. Diagramy przecięż można malować trzymając pędzel w zębach, za to oszczędzi się takich wtfów programistom.






- Rejestracja:około 6 lat
- Ostatnio:około 4 godziny
Jak zaokrąglić liczbę do dwóch miejsc po przecinku w CSS:
https://stackoverflow.com/a/64921523
div {
--shf: 4.9406564584124654e-322;
width: calc(x * var(--shf) / var(--shf));
}
trzeba przyznać że pomysłowe (choć niezupełnie działa jak powinno)

- Rejestracja:prawie 15 lat
- Ostatnio:około 5 godzin
- Lokalizacja:Laska, z Polski
- Postów:10051
Programistyczny WTF jest takie, kiedy niemal codziennie na spotkaniach programiści używają określeń "base64 encryption" albo "base64 hashing".
Zabawne jest to, że przyznają "base64 is not a very secure encryption", ale utrzymują że b64 to jest enkrypcja tak czy tak :D
(Wyjaśnienie: base64 to nie jest żadna enkrypcja, tylko zapis liczby w systemie 64-kowym, zamiast w binarnym czy dziesiętnym. Nie ma nic wspólnego z bezpieczeństwem danych).

IntToStr()
jest kodowaniem - kodujesz liczbę za pomocą cyfr w kodzie ASCII.


- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719



- Rejestracja:ponad 6 lat
- Ostatnio:około godziny
- Postów:46
public static final int XD = IntStream.rangeClosed(0, 10)
.parallel()
.reduce(0, (a, b) -> a + b);
public static void main(String[] args) {
System.out.println("Hello, World!");
}
Jeśli spróbujemy uruchomić powyższy kod to nic się nie stanie, nie dostaniemy żadnej informacji.
Ale jeśli zmienimy (a, b) -> a + b
na Integer::sum
to nasza aplikacja już zadziała.


- Rejestracja:prawie 23 lata
- Ostatnio:około 9 godzin
Kolega prosi o pomoc. Ma projekt we Flutterze, ma zdalne API, próbuje z niego dostać dane i dostaje komunikat "API key needed". A klucz API wysyła, w takim nagłówku jak trzeba. Biorę przykładowy kod z dokumentacji API, w C# - działa. Piszę dokładny odpowiednik we Flutterze, korzystając z biblioteki http - nie działa. W czym rzecz?
Stwierdziłem, że podsłucham sobie komunikację sieciową. W Android Studio jest dodatek do tego, instaluję Android Studio. Nie działa - bo wymaga użycia określonej biblioteki w Androidzie. A Flutter robi to sam z siebie, w DevTools jest zakładka network - zawsze się człowiek czegoś uczy. Podglądam komunikację sieciową - wygląda w porządku, klucz API jest wysyłany. Z ciekawości buduję projekt dla weba, nie dla Androida - ta sama sytuacja, "API key needed". Eksportuję żądanie do formatu cURL bezpośrednio z zakładki network w przeglądarce, uruchamiam - nie działa.
Biorę jeszcze jeden przykładowy projekt - w JavaScripcie. Dokumentacja jest źle zrobiona, nawet się nie ma prawa uruchomić. Poprawiam, wysyłam, działa. Eksportuję żądanie do cURL i przyglądam się.
Oprócz nieistotnych nagłówków typu User-Agent znajduję różnicę, wreszcie. Zmieniam - działa. Zmieniam znów - nie działa. A zatem to to.
Flutterowa biblioteka http domyślnie wysyła żądanie z Content-Type
ustawionym na application/x-www-form-urlencoded; charset=utf-8
. A tymczasem API oczekuje - uwaga uwaga - application/x-www-form-urlencoded
. Bez określenia charsetu.
I zgodnie z logiką rzuca kodem 200 OK z komunikatem "API key needed" w JSON-ie.
I teraz najlepszy dowcip - nie mam pojęcia jak zmusić http do nie wysyłania tego nagłówka w ten sposób - jak się ustawia wszystko ręcznie, to i tak dorzuca, encoding ustawione na null nie zmienia (bo domyślnie to UTF-8) i tak dalej. Mogę sobie zmienić encoding, ale nie mogę go wyrzucić. Jest już 23, rzucam to wszytko w diabły, biorę inną bibliotekę niż "oficjalna" - Dio. Działa.
Dzisiaj, kilka dni po rozwiązaniu problemu, z ciekawości zaglądam na dokumentację tego API czy jest jakakolwiek wzmianka o tym. Gdzie tam. Ale jest sekcja "dyskusje". I rok temu ktoś miał ten sam problem, w PHP. Pod tym tylko komentarze "mam to samo, pomuszcie".
API płatne powyżej 300 żądań miesięcznie, minimum 10$ miesięcznie.





- Rejestracja:prawie 14 lat
- Ostatnio:3 dni
- Postów:2512
To mi przypomina pewne api do komunikacji z którym musiałem implementować sam protokół http, bo to coś wymagało podpisania nagłówka http w całości.
Konia z rzędem temu, kto uzyska surową formę http przed wysłaniem żądania w C#. Gdy pierwsze testy nie przechodziły, napisałem prośbę o pomoc do autorów. Dostałem w odpowiedzi, że nie tego się już nie robi, a podpisuje jedynie url :D. No świetnie - dziękuję za aktualną dokumentację. I spora część kodu wyleciała.
Jak już wszystko miałem przewalczone i działające przyszła pora na wdrożenie. Okazało się, że moja aplikacja ma się łączyć ze starszą wersją ich aplikacji, gdzie całe to API nie jest wspierane. Musiałem dopisywać integrację przez SDK. YAFUD

- Rejestracja:ponad 11 lat
- Ostatnio:około 8 godzin
- Postów:619
Połączyłem się przez RDP z moje kompa do VM managementu i z niej odpalony RDP do innej VM2 na fullscreen. Na VM2 klikam w menu start i zamykam system, bo chcę zmodyfikować konfiguracje i... nagle wywala mi zdalny pulpit! Okazało się że, klikając w menu start na VM2 wyświetliło się menu z managementu. Reszty chyba możecie się domyśleć. VM z managementu jest jedynym dojściem do zażądania całą infrastrukturą a włączyć można ją tylko przez bezpośrednie podpięcie pod servera XD dobrze że kolokacja blisko, a nie na drugim końcu kraju. Kochany M$.




- Rejestracja:prawie 14 lat
- Ostatnio:4 dni
- Postów:3168
Maven wprowadzil nowa wersje z poprawka security. Ale sposob komunikowania o co chodzi jest po prostu niesamowicie przyjazny:
Generalnie user dostaje w twarz komunikat:
Downloading from maven-default-http-blocker: http://0.0.0.0/.......
Tutaj zmiana: https://maven.apache.org/docs/3.8.0/release-notes.html
Tutaj komentarz do zmiany:
https://www.mail-archive.com/dev@maven.apache.org/msg123882.html

- Rejestracja:około 17 lat
- Ostatnio:2 minuty
Dzisiejszy WTF z Stackoverflow:
:)
- Stackoverflow_copy_limit_april_fool.png (7 KB) - ściągnięć: 77
- Stackoverflow_copy_limit_description_april_fool.png (275 KB) - ściągnięć: 3

- Rejestracja:ponad 13 lat
- Ostatnio:około 3 godziny
- Lokalizacja:Tuchów
- Postów:12156
Ledwo włączyłem, a ten już narzeka, że za długo sesja trwa. :D
- Screenshot_20210308-041354.png (576 KB) - ściągnięć: 3



vpiotrvpiotr