Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
6

AMD! Po co mi to pokazujecie?

amd1.png

po co mi oferujecie nową wersję, po co to ściąganie instalatora, uruchamianie go, po co dezinstalacja dotychczasowej wersji — by zaraz się na mnie wypiąć,

amd2.png

i pozostawić system w niepełnosprawnym stanie?

FAIL!

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
2

Twit:

I think I can go home now. I've seen everything now.

Null
A wy jak obsługujecie możliwość bycia nullem?

UPDATE ktoś w komentarzach nic nie zrozumiał i zaproponował kod
kod

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 791
0

https://www.develeap.com/pl/
Warunki uczestnictwa wydają mi się "kręte".

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
6

To jest ten jeden z lepszych pracodawców w Krakowie?

screenshot-20220620125940.png

AS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 358
2

Klasa Order zmapowana w JPA:

Kopiuj
@OneToOne(cascade = cascadeType.ALL)
@JoinColumn(name = "PRICE_ID”)
private Amount price;

@OneToOne(cascade = cascadeType.ALL)
@JoinColumn(name = "COST_ID")
private Amount cost;

Amount to typowe currency+value. Jest osobna tabela z generowanym kluczem głównym, tylko po to, aby trzymać te wartości. Co siedziało w głowie oryginalnego programisty, nie wiem. Ale domyślam się, że to było toksyczne połączenie Junior Architect+Hibernate.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
7

screenshot-20220623124720.png

Jeszcze dobrze nie zacząłem pisać, a podpowiadaczka już poprawiła mi humor. :D

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
1

Właśnie się wydarzyło na telefonie mojej żony i okazuje się że to popularny błąd na iOS występujący od iOS 14 (prawie dwa lata). W rogu ekranu nagle pojawia się prostokąt rozmazujący wszystko pod spodem (jest nad wszystkimi aplikacjami)

Ciekaw jestem jak przypadkowo można stworzyć takiego buga

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5227
1

ładny wzorek

Kopiuj
static void sha256_transform(u32 *state, const u8 *input)
{
	u32 a, b, c, d, e, f, g, h, t1, t2;
	u32 W[64];
	int i;

	/* load the input */
	for (i = 0; i < 16; i++)
		LOAD_OP(i, W, input);

	/* now blend */
	for (i = 16; i < 64; i++)
		BLEND_OP(i, W);

	/* load the state into our registers */
	a = state[0];  b = state[1];  c = state[2];  d = state[3];
	e = state[4];  f = state[5];  g = state[6];  h = state[7];

	/* now iterate */
	t1 = h + e1(e) + Ch(e, f, g) + 0x428a2f98 + W[0];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1 + t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0x71374491 + W[1];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1 + t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0xb5c0fbcf + W[2];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1 + t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0xe9b5dba5 + W[3];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1 + t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0x3956c25b + W[4];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1 + t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0x59f111f1 + W[5];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1 + t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0x923f82a4 + W[6];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1 + t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0xab1c5ed5 + W[7];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1 + t2;

	t1 = h + e1(e) + Ch(e, f, g) + 0xd807aa98 + W[8];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1 + t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0x12835b01 + W[9];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1 + t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0x243185be + W[10];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1 + t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0x550c7dc3 + W[11];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1 + t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0x72be5d74 + W[12];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1 + t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0x80deb1fe + W[13];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1 + t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0x9bdc06a7 + W[14];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1 + t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0xc19bf174 + W[15];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1+t2;

	t1 = h + e1(e) + Ch(e, f, g) + 0xe49b69c1 + W[16];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1+t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0xefbe4786 + W[17];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1+t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0x0fc19dc6 + W[18];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1+t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0x240ca1cc + W[19];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1+t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0x2de92c6f + W[20];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1+t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0x4a7484aa + W[21];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1+t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0x5cb0a9dc + W[22];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1+t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0x76f988da + W[23];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1+t2;

	t1 = h + e1(e) + Ch(e, f, g) + 0x983e5152 + W[24];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1+t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0xa831c66d + W[25];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1+t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0xb00327c8 + W[26];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1+t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0xbf597fc7 + W[27];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1+t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0xc6e00bf3 + W[28];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1+t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0xd5a79147 + W[29];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1+t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0x06ca6351 + W[30];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1+t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0x14292967 + W[31];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1+t2;

	t1 = h + e1(e) + Ch(e, f, g) + 0x27b70a85 + W[32];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1+t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0x2e1b2138 + W[33];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1+t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0x4d2c6dfc + W[34];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1+t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0x53380d13 + W[35];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1+t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0x650a7354 + W[36];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1+t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0x766a0abb + W[37];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1+t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0x81c2c92e + W[38];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1+t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0x92722c85 + W[39];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1+t2;

	t1 = h + e1(e) + Ch(e, f, g) + 0xa2bfe8a1 + W[40];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1+t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0xa81a664b + W[41];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1+t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0xc24b8b70 + W[42];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1+t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0xc76c51a3 + W[43];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1+t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0xd192e819 + W[44];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1+t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0xd6990624 + W[45];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1+t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0xf40e3585 + W[46];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1+t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0x106aa070 + W[47];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1+t2;

	t1 = h + e1(e) + Ch(e, f, g) + 0x19a4c116 + W[48];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1+t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0x1e376c08 + W[49];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1+t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0x2748774c + W[50];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1+t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0x34b0bcb5 + W[51];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1+t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0x391c0cb3 + W[52];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1+t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0x4ed8aa4a + W[53];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1+t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0x5b9cca4f + W[54];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1+t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0x682e6ff3 + W[55];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1+t2;

	t1 = h + e1(e) + Ch(e, f, g) + 0x748f82ee + W[56];
	t2 = e0(a) + Maj(a, b, c);    d += t1;    h = t1+t2;
	t1 = g + e1(d) + Ch(d, e, f) + 0x78a5636f + W[57];
	t2 = e0(h) + Maj(h, a, b);    c += t1;    g = t1+t2;
	t1 = f + e1(c) + Ch(c, d, e) + 0x84c87814 + W[58];
	t2 = e0(g) + Maj(g, h, a);    b += t1;    f = t1+t2;
	t1 = e + e1(b) + Ch(b, c, d) + 0x8cc70208 + W[59];
	t2 = e0(f) + Maj(f, g, h);    a += t1;    e = t1+t2;
	t1 = d + e1(a) + Ch(a, b, c) + 0x90befffa + W[60];
	t2 = e0(e) + Maj(e, f, g);    h += t1;    d = t1+t2;
	t1 = c + e1(h) + Ch(h, a, b) + 0xa4506ceb + W[61];
	t2 = e0(d) + Maj(d, e, f);    g += t1;    c = t1+t2;
	t1 = b + e1(g) + Ch(g, h, a) + 0xbef9a3f7 + W[62];
	t2 = e0(c) + Maj(c, d, e);    f += t1;    b = t1+t2;
	t1 = a + e1(f) + Ch(f, g, h) + 0xc67178f2 + W[63];
	t2 = e0(b) + Maj(b, c, d);    e += t1;    a = t1+t2;

	state[0] += a; state[1] += b; state[2] += c; state[3] += d;
	state[4] += e; state[5] += f; state[6] += g; state[7] += h;

	/* clear any sensitive info... */
	a = b = c = d = e = f = g = h = t1 = t2 = 0;
	memset(W, 0, 64 * sizeof(u32));
}

Po refactorze:

screenshot-20220626234909.png

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
11

Stacja dyskietek 3,5" wydaje nieprzyjemny chrobot gdy próbuje się z niej cokolwiek odczytać, a nie ma w stacji dyskietki.
Jeśli dyskietka jest włożona, też dźwięk się wydobywa, ale inny.

Posiadanie stacji dyskietek w komputerze z Windows 10 jest uciążliwe. Co godzinę - dwie, jakiś proces (może systemowy, może nie) najwyraźniej iteruje po wszystkich dyskach nie robiąc wyjątków, bo słyszę ten chrobot. Czasami dzieje się to autonomicznie, czasami na skutek kliknięcia (np. otwarcia jakiegoś okna ustawień).
Kiedyś by to nie przeszło, bo byłoby zauważalne. Ale dziś programiści myślą że można bezkarnie czytać sobie z każdej istniejącej literki dysku - najwyżej sfailuje...

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
7

W PHP możemy używać superglobalnych zmiennych $argc oraz $argv, podobnie jak w C, do odczytania parametrów uruchomieniowych.

Jest też opcja abstrakcji, nie specjalnie mądra, getOpt(), do parsowania tego. Opcja pozwala parsować wartości, np --file src/, albo flagi, np -t.

Teraz zgadnijcie jak jest oznaczona flaga, która jest włączona, np przekazanie --file src/ -v

Kopiuj
array(1) {
  [file] =>
  string(4) "src/"
  [v] =>
  bool(false)
}

Tak. Jeśli wartość jest false, to znaczy że istnieje. (nie przekazana wartość jest nieobecna w wyniku).

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
4

Robiłem pair progrmaming z nowym gościem w pracy, miałem go za ogarniacza, dopóki nie spotkaliśmy się na screen share. Chciał żębym miał najnowsze zmiany. Zrobiłem przed chwilą git fetch, więc teraz wystarczyło tylko git merge origin/master; na co mój nowy kompan "nie rób merga, miałeś tylko pulla zrobić". Well.

DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 599
3

Jak widzę takie coś to zastanawiam się czy tam jakiś interval w jQuery leci i sprawdza czy przypadkiem nie zamknąłem przeglądarki (edit: trochę nie zabłysnąłem żarcikiem, miałem na myśli websockety i jakiś signal r po stronie serwera), jak tak to nie oddadzą pieniędzy.
Screenshot_20220721_201555.jpg

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2964
13

Wszyscy rozsądni programiści Javy wiedzą, że używanie wywołania System.gc( ) to antywzorzec. Za wyjątkiem bardzo specyficznych sytuacji np. w testowaniu wycieków, nie powinno się tak robić, bo GC sam lepiej wie kiedy się uruchomić, a samo wywołanie GC ręcznie i tak nie uratuje nas przed OOM, jeśli miałby nastąpić. No i nie ma też żadnej gwarancji że System.gc() w ogóle cokolwiek zrobi, bo oficjalna dokumentacja stwierdza że to tylko wskazówka dla JVM i ponadto można to wywołanie zablokować przez -XX:+DisableExplicitGC.

Wczoraj otrzymałem logi od jednego z użytkowników, skarżących się na sporadyczne bardzo długie pauzy GC (ok 5 - 10 sekund), prowadzące do timeoutów. Trochę dziwne, bo przecież używamy garbage collectora G1, który raz na zawsze miał rozwiązać problem długich pauz i w ogóle odkąd go wprowadzono Java miała stać się krainą powszechnej szczęśliwości. A tam w logach takie coś:

Kopiuj
2022-07-13T05:14:52.337-0700: 10156403.914: [Full GC (System.gc())  26G->570M(31G), 7.2234043 secs]

"Jaki debil wywołuje System.gc w kodzie produkcyjnym?!" pomyślałem i zabrałem się za grepowanie kodu. Nie znalazłem jednak nic. Jednak nie dałem za wygraną i w końcu dotarłem do miejsca, skąd to wywołanie leciało:

Kopiuj
  static void reserveMemory(long size, int cap) {
        synchronized (Bits.class) {
            if (!memoryLimitSet && VM.isBooted()) {
                maxMemory = VM.maxDirectMemory();
                memoryLimitSet = true;
            }
            // -XX:MaxDirectMemorySize limits the total capacity rather than the
            // actual memory usage, which will differ when buffers are page
            // aligned.
            if (cap <= maxMemory - totalCapacity) {
                reservedMemory += size;
                totalCapacity += cap;
                count++;
                return;
            }
        }

        System.gc();
        ...

Tak, to kod biblioteki standardowej Java. :facepalm

Java oferuje ręczną alokację pamięci off-heap (DirectByteBuffer) ale WTFem jest to że ta pamięć nadal może być zwolniona tylko za pośrednictwem GC, bo każdy taki bufor składa się z dwóch części: niewielkiego obiektu umieszczonego na stercie, podlegającego GC, i właściwego bufora na dane, znajdującego się poza stertą GC, na stercie "natywnej" (zwane off-heap). Bufory takie niestety nie mają żadnej metody free, delete, close ani niczego podobnego, co by uwolniło pamięć off-heap. Zwalniają pamięć dopiero jak obiekt na stercie GC zginie. Stąd ręczne wymuszenie GC jak direct memory sie skończy.

Myślę że dodatkowym WTFem jest to, że opcja -XX:+ExplicitGCInvokesConcurrent nie jest włączona domyślnie na G1 ani CMS. Włączenie tej opcji spowodowałoby przynajmniej że GC nie przeszłoby w tryb stop-the-world przy tym wywołaniu, a jedynie zatrzymany zostałby bieżący wątek.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
2

PHP Cache'uje wyjątki w wyrażeniach regularnych :o

  • Kopiuj
    \ini_set('pcre.jit', '1');  // Włącz JIT
    
    \preg_match('/((?1)?)/', ''); // wywołaj błąd kompilacji
    \preg_last_error(); // PREG_JIT_STACKLIMIT_ERROR
    
  • Kopiuj
    \ini_set('pcre.jit', '0');  // Wyłącz JIT
    
    \preg_match('/((?1)?)/', ''); // wywołaj błąd kompilacji
    \preg_last_error(); // PREG_INTERNAL_ERROR
    

A teraz najlepsze:

Kopiuj
\ini_set('pcre.jit', '1');  // Włącz JIT
\preg_match('/((?1)?)/', ''); // wywołaj błąd kompilacji

\ini_set('pcre.jit', '0');  // Wyłącz JIT
\preg_match('/((?1)?)/', ''); // wywołaj błąd kompilacji

\preg_last_error(); // PREG_JIT_STACKLIMIT_ERROR, mimo ze JIT jest wyłączony :D

Ostatni error jest zcache'owany po patternie. Inne wzorce już zwracają poprawne błędy. Nawet zmiana z \d na [0-9] powoduje odświezenie cache'a i poprawny wyjątek :D

Pehap nie przestaje mnie zadziwiać zdolnością do wytwarzania głupich rozwiązań.

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

ja to lubię te kody gdzie funkcja zwraca kod błędu i jest on ważny ale się go nie używa bo po co? A jeszcze okazuje się że przypadkiem działa! miałem taką sytuację:

  1. Dodawałem tam pewien mikro feature

  2. Z jednej funkcji miałem usunąć takie jedno wywołanie funkcji i zmienić kod pod if na trochę bardziej skompilowany ale z zachowaniem użycia obecnych wywołań API.

  3. W logice tej oprócz wywołania API było jeszcze uaktualnienie wewnętrznego stanu w klasie.

  4. Oczywiście mówię prosta zmiana cyk jak funkcja zwróci error to co byście zrobili? No nie kontynuowali a jak jakieś zmiany w wewnętrznym stanie klasy zaszły to zrobili rollback do starych wartości o ile coś trzeba. No i tak zrobiłem, wydawało mi się naturalne tylko nie zaczaiłem że oryginalny kod tego nie robił jakoś mój umysł to zignorował, dopisałem z automatu obsługę błędów.

  5. Jako że nie miałem sprzętu żeby to przetestować lokalnie to dostał tester i jakie było moje zdziwienie że coś co od lat działa już nie!

  6. Otóż co się okazało. że poprzedni kod olewał zwracaną wartość(jak wspomniałem), zmieniał stan klasy i wiśta wio. A to api co tam zmieniało wartości w innej części kodu jednak dane wyglądały inaczej bo się przecież nie powiodło!

  7. Ba okazało się że to API nie mogło tak działać nigdy w ten sposób(dla tego typu urządzenia, takie ograniczenie) zawsze był error.

  8. Czemu przez lata "działało"? A bo te dane zmienione zapisano też w persistent i jak resetowano urządzenie to jak było na "świeżo" to miało szansę zadziałać bo się stan z persistent memory wczytywał i odpalał się inny kawałek kodu co w tym kontekście działał.

    W ogóle chyba nikt nie wiedział jak urządzenie ma się zachować(?). Lubię takie przaśne bugi. Niby działało, niby funkcje zwracają kody błędów ale jak wiadomo to są fanaberie te kody. I tak się żyje na tej wsi.

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 791
1

Po wielu przemyśleniach i zdystansowaniu się do zagadnienia dochodzę to wniosku, że webówka to jedno wielkie WTF. Frameworki, pluginy, webpacki, dostrajanie stron pod kątem różnych przeglądarek/urządzeń moblinych... Już nie mówiąc o tym, jak deklaruje się zmienne w językach typu JS czy PHP. Co za syf i bangladesz...

Odpuszczam webówkę, spróbuję swoich sił w aplikacjach desktopowych (C#).

Mikan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
3

Chyba wygrałem w Eurojackpot i nie są w stanie wyliczyć mojego konta:

screenshot-20220802224909.png

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
3

Nie wiem czemu, ale wpisanie do MS Teams: (Windows) powoduje pojawienie się tego: screenshot-20220803115217.png
Co ciekawe jeśli zacytuje się taki tekst to emoji się zmienia: screenshot-20220803115709.png

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 791
2

Naprawdę, aż tyle tego musi być zainstalowane by MSQL albo inne oprogramowanie od Microsoft działało?

screenshot-20220804135904.png

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
9

Kto widzi gdzie jest bug w tym kodzie:

Kopiuj
std::string escape(const std::string& s)
{
    auto result = boost::replace_all_copy(s, "\\", "\\\\"); // replace \ with \\
    boost::replace_all(result, "\"", "\\\""); // replace " with \"
    return result;
}

Live demo

Spoiler 1 źródło

Zaznacz tekst poniżej, żeby zboczyć spoiler 2 (pl z dokładnym opisem):
Problemem jest preprocessor, który zobaczy najpierw linię kończącą się znakiem "\" a to oznacza, że następna linia jest kontynuacją obecnej linii.
Efekt jest taki, że następna linia staje się częścią komentarza :) bo komentarze są interpretowane na etapie kompilacji.
Markdown dobrze koloruje składnie (dlatego użyłem txt a nie cpp) i linia jest szara, ale wszystkie IDE jakie testowałem na tym się rozkłada 💩

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1793
3

zrobiłam w jednym miejscu dodatkową możliwość podania przy wywołaniu funkcji oczekiwanego w jej środku komunikatu, który jeśli będzie równy temu oczekiwanemu to cośtam
użyłam tego na razie w jednym miejscu, podajac oczekwiany tekst 'costam' jako parmetr
tylko w tym jednym przypadku
kolega to wywalil i na sztywno wpisal w funkcje porowanie z magicznym tekstem 'costam'
funkcja teraz porównuje dla każdego wywolania, w klazdym miejscu programu z tekstem 'costam'

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 791
1

Miałem pewien skrypt, który napisany był pod PHP 5 (używał modułu pod starszą wersję). Niedawno kolega zaktualizował serwer do PHP 7.4 nie informując mnie o tym. Dlatego osoby korzystające z tego skryptu przysłały maila WTF. Także tego...

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 791
0

W kodzie HTML wstawiam obrazek:

Kopiuj
<img src = zdjecie/produkt.jpg alt = "zdjęcie">

Natomiast w katalogu na serwerze plik nazywa się produkt.JPG. Zdjęcie się nie wyświetla, nawet bezpośredni URL wywala błąd [404] File Not Found : Plik nie istnieje.
Dopiero po zmianie na produkt.jpg jest ok.

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 791
0

Serwer na którym działa moja strona jest jakiś dziwny. Gdy wyświetlę kod źródłowy, to zamiast:

Kopiuj
<link rel="stylesheet" href="index.css>

widzę:

Kopiuj
<link rel="stylesheet" href="Aindex.css.pagespeed.cf.xkdddXaXOllqT.css">

Dodam jeszcze, że pomimo wyczyszczenia cache przeglądarki na jednym komputerze, strona dalej pokazuje się w starszej wersji (wczoraj zmieniłem 2 linijki w index.css).

hzmzp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 741
10

@kosmonauta80 to jest wątek wtf. Jeżeli masz problem to otwórz nowy temat w odpowiednim dziale.

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
3

Nie wiem czy bardziej WTF programowania czy trochę humoru https://naukaios.pl/5-najlatwiejszych-i-5-najtrudniejszych-jezykow-programowania/

Spis treści
1 TOP 5 Najprostszych języków programowania
1.1 HTML (ang. HyperText Markup Language)
1.2 JavaScript – w skrócie JS
1.3 C – imperatywny język programowania
1.4 Python – najpopularniejszy język programowania
1.5 Java – obiektowy język programowania
2 TOP 5 Najtrudniejszych języków programowania
2.1 C++ – nietypowe rozszerzenie języka C
2.2 Prolog – język programowania do analizy języków naturalnych
2.3 LISP – język programowania z 1958 roku
2.4 Haskell – czysto funkcyjny język programowania
2.5 Malbolge – język zbyt trudny dla człowieka

WhiteLightning
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3257
0

Zrobilo sie chlodniej, chcialem wrocic do swoich prototypow z Androida a tu ZONK! (25 USD zmarnowane bo bede musial nowe konto zrobic, niby spamowali na powiazane konto, ale kurcze myslalem ze subskrypcja jest na stale :P ) gp.png

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 791
0

screenshot-20220902081644.png

A9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 411
3

Mały teścik na produkcji :)Zrzut ekranu 2022-09-07 130340.png

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
7

Już ostatnio narzekałem na przeglądarki na mikro. Dziś coś mniejszego. Używam chromium do pracy a on do mnie na stronie startowej mówi "Super Duper Module - foo bar baz fo bar baz"

Super Duper Module

Chciałem wygooglać o co chodzi ale trafiłem tylko na złoszenie https://bugs.mageia.org/show_bug.cgi?id=28534 . Za duże mi to nie wyjaśniło i dalej zastanawiam się o co chodzi

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.