Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
LP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 366
8

Mało programistyczne WTF, bardziej projektowe (jest taki wątek?)

Od 1.04 w nowej robocie, korpo nad korpami - wiedziałem to z góry, akceptuję.

We wtorek / środę miałem szkolenia (06, 07.04) - w sumie 8h ~świadczenia usług. Od tego czasu do dzisiaj... nikt się do mnie nie odezwał. Nie mam dostępu do repa, nie mam kontaktu z ludzmi z projektu, nie ma komunikatora. Podpytałem się mojego menago - hej ale oco chodzi. Spokojnie Lubie_programowac u nas tak czasem jest. Okazało się że projekt w którym miałem robić im uciekł i szukają mi innego. Po dzisiejszym spotkaniu z menago + sales będę od maja (sic!) robić na 1/4 etatu w jednym projekcie. Co z $$$? Dobrze - płacone jest 8h / dzień za każdy dzień.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10231
8

PHP bardzo różnie rozumie pojęcie modyfikacji i nie-modyfikacji arrayów.

  • array w PHP ma coś co się nazywa internal pointer, co jest po prostu wskaźnikiem na jeden klucz. PHP go używa do iterowania po array'u (coś jak $i w zwykłym for, tylko że schowane).
  • On niby jest internal, ale możemy nim sterować funkcjami next(), key(), current(), reset(), etc (coś jak wbudowany iterator).
  • Wszystkie funkcje które tworzą nowy array, zwracają nowy array z internal pointerem na początku: array_slice(), array_values(), [...$array], array_merge()
  • Ale! array_values(), kiedy się wsadzić tablice sekwencyjną, np array_values([1,2,3]), zwraca ten sam array więc zwraca ten sam array internal pointer :/
Kopiuj
$array = [0 => 'foo', 2 => 'bar']; // tablica nie sekwencyjna
next($array);
$copy = array_values($array);      // function made a copy with reset internal pointer
current($copy); // "foo" 
Kopiuj
$array = [0 => 'foo', 1 => 'bar'];  // tablica sekwencyjna
next($array);
$copy = array_values($array);       // function didn't make a copy, so internal pointer is shared
current($copy); // "bar"

PS: Warto może dodać że array_keys(), już tak nie działa, tzn jeśli wsadzimy [0,1,2] do array_keys(), to dostaniemy również [0,1,2] (czyli niby potencjalnie to samo), ale tutaj internal pointer jest już ustawiony na 0.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
8

Pokręcony kod w C
https://en.wikipedia.org/wiki/Duff%27s_device

Kopiuj
send(to, from, count)
register short *to, *from;
register count;
{
    register n = (count + 7) / 8;
    switch (count % 8) {
    case 0: do { *to = *from++;
    case 7:      *to = *from++;
    case 6:      *to = *from++;
    case 5:      *to = *from++;
    case 4:      *to = *from++;
    case 3:      *to = *from++;
    case 2:      *to = *from++;
    case 1:      *to = *from++;
            } while (--n > 0);
    }
}

"the most dramatic use yet seen of fall through in C"

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
5

Typowa biblioteka w Pythonie
Screenshot from 2021-05-06 11-23-16.png

Do którego id przejdę jak query zwróci false?

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8489
9

Nieprogramistyczne, ale UXowe WTF.
Otóż od wielu miesięcy byłem przekonany, że Facebook ma buga w funkcji wyszukiwania w Messengerze (mówię o stronie internetowej messenger.com). Czyli że rozwalili kluczową funkcję (która i tak kijowo działała).

Dzisiaj dopiero się zorientowałem, że w rzeczywistości wyszukiwanie dalej działa 🤪To co natomiast przestało działać to... klawisz enter. Tj. szukając wpisywałem frazę do wyszukiwania, a potem naciskałem enter. I kiedyś to działało, jednak teraz czyści to tylko input i nic nie wyszukuje.

Jednak uświadomiłem sobie, że można dalej wyszukiwać po prostu poruszając kursorem myszy i klikając przycisk search messages for.. .(ew. też strzałka w dół działa, co też odkryłem, ale klawisz tab o dziwo już nie).
screenshot-20210510033619.png

I teraz - ciekawi mnie, czy brak wsparcia dla entera to jest jakiś bug, z którym nikt nic nie zrobił od miesięcy (ciekawi mnie też ile procent użytkowników to dotyka), czy to może nie jest bug, tylko ficzer? Może jakaś fatalna decyzja projektowa?

Teoretycznie teraz design wyszukiwarki jest zoptymalizowany pod wyszukiwanie osób. Problem w tym, że ja raczej nie szukam osób w messengerze, a często szukałem starych wiadomości, więc zobaczyłem, że nie działa i doszedłem do wniosku, że po prostu kolejny bug.

Drugi problem, że ten napis wcale nie wygląda jak przycisk. Ja dopiero dzisiaj się skapnąłem, że to się da kliknąć. Za moich czasów przyciski miały jakieś tło albo ramkę.

Trzeci problem, że z jakichś powodów ten przycisk jest po angielsku, mimo, że resztę interfejsu mam po polsku. Czyli kolejny WTF (nie każdy zna angielski).

Czwarty problem,że w polu edycyjnym jest napisane "szukaj w Messengerze", czyli ja to rozumiem, że szukaj w wiadomościach w Messengerze. Jakbym szukał znajomego, to bym nie pomyślał o tej akcji jako "szukaniu w Messengerze", bo ludzie żyją w świecie realnym, a nie są zamknięci "w Messengerze"(już prędzej się potocznie mówi "na facebooku / messengerze", choć nie wiem, na ile to poprawne językowo). Nie mogli napisać "wyszukaj znajomego"? O ile faktycznie to celowo, bo może po prostu zwyczajny bug.

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1801
2

jest klasa w javie powiedzmy X
są klasy z niej dziedziczące Xtaki, Xinny itp.
jest se fabryka XFactory z funkcją tworzącą na podstawie podanych parametrów obiekt której z klas dziedziczących z X
i kawałek kodu gdzie mamy obiekt klasy
X x;
pobieramy z niego nazwę i jakieś dane
przekazujemy do XFactory
Otrzymujemy inny obiekt tej samej klasy który wykorzystujemy żeby coś zrobił ale nie zmienił swojego stanu
Pytanie dlaczego nie można było tu użyć początkowego obiektu x
wspomniałam w wątku czy funkcje w javie nadal muszą mieć określone czy rzucają wyjątek? że do tego wątku się kod nadaje......

crejk
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
4
Kopiuj
        System.out.println(user.getGuild().getMembers().contains(user)); // true
        user.setName("szymi");
        System.out.println(user.getGuild().getMembers().contains(user)); // false
Marooned
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
10

screenshot-20210609223847.png
ała, lekko się zdziwiłem, jak po serii ctrl+z chciałem sporo przywrócić, a mi wszystko usunęło (na szczęście miałem w schowku) - wynik przemapowania skrótów vcode (rzadko używam) na IntelliJ (używam na co dzień) :D

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
1

Zrobiłem aktualizację systemu do wersji 20H2 i popsuło mi pasek zadań. Mam przypięty swój toolbar, kierujący do partycji z programistycznym barachłem, i ten oto toolbar przesunął się w lewo, zostawiając kupę miejsca po prawej jego stronie.

taskbar.png

Najlepsze jest to, że zrobiłem wszystko co w ludzkiej mocy, aby go dosunąć do strzałeczki zasobnika, ale ten nie chce się przesunąć — traktuje miejsce po prawej jak zajęte. Odblokowywałem pasek zadań, modyfikowałem, usuwałem, dodawałem, blokowałem, przestawiałem wszystkie ustawienia paska zadań, aby wymusić reorganizację elementów — no nic go nie zmusi do dosunięcia się.

Trudno, obejdzie się bez tego toolbara. :/

Co ciekawe, pasek zadań zachowuje się źle, bo nie używa tego miejsca w ogóle. Jeśli naotwieram masę programów i zacznie brakować miejsca na przyciski, to będą one ściskane w poziomie, a nieużytek jak był, tak jest nadal:

screenshot-20210610213007.png

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
3

Przeinstalowałem sterownik do grafiki — teraz mam na jednym ekranie pasek zadań na dole, a na drugim u góry. :D

screenshot-20210610223908.png

Cuda jaja. W sumie to nawet nie wiedziałem, że pozycja paska zadań nie musi dotyczyć wszystkich ekranów — można sobie go pozycjonować na każdym ekranie z osobna. Zawsze to nowa wiedza, a dziura na taskbarze jak była, tak jest nadal. ;)


Edit: dopadłem gnoja — odblokowałem pasek zadań, przeciągnąłem go na dół ekranu i pojawiła się zguba:

screenshot-20210610224218.png

Czyli dobrze kombinowałem — wymusić na pasku zadań reorganizację swojej zawartości. Teraz nie tylko pojawiła się brakująca ikonka, która zajmowała miejsce pomimo tego, że nie była wyświetlana, to w dodatku pojawiła się nowa pozycja w menu kontekstowym — ta, którą mi chłopaki sugerowali się zająć:

screenshot-20210610224438.png

Wyłączyłem ten pasek niusów, dodałem swój toolbar, zablokowałem paski zadań i bangla:

screenshot-20210610224621.png

Damn you, Microsoft! :D

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

Przeczytałem stary artykuł o jednej z alternatyw dla Prelude w Haskellu a tam komentarz:

Please don't use "mofu" anywhere in your code. If "f" doesn't suit you there, you can use "monofun" instead. But "mofu" reads as "mo-fu". Aren't all the "Coq"s and "Faq"s enough?

A wy co robicie jak komuś nie podoba się wasz kod bo jest tam ze dużo wulgaryzmów?

Kopiuj
type family Element mofu
type instance Element T.Text = Char                                                      
type instance Element [a] = a  

class MonoFunctor mofu where
    omap ∷ (Element mofu → Element mofu) → mofu → mofu
    default omap ∷ (Functor f, Element (f a) ~ a, f a ~ mofu) ⇒ (a → a) → f a → f a 
    omap = fmap

instance MonoFunctor T.Text where
    omap = T.map

instance MonoFunctor [a]
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
2
Kopiuj
package slick.dbio

/** A phantom type used as the streaming result type for DBIOActions that do not support streaming.
  * Note that this is a supertype of `Streaming` (and it is used in covariant position),
  * so that any streaming action can be used where a non-streaming action is expected. */
sealed trait NoStream

/** A phantom type used as the streaming result type for DBIOActions that do support streaming. */
sealed trait Streaming[+T] extends NoStream

Niby ma to sens, ale Streaming dziedziczączy po NoStream wydaje się dziwny mi :D

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
3

Jak ktos sie nudzi w pracy to polecam moja konfiguracje dzwiekowa w Windows

  • laptop do monitora przez hdmi
  • sluchawki do laptopa
  • glosniki do monitora

Windows potrafi rozpoznac przy takiej konfiguracji 3 urzadzenia:

  • sluchawki w laptopie
  • glosniki w laptopie
  • dzwiek przez monitor hdmi
    I... Odtwarzac np w czasie meetingu przez sluchawki a po meetingu przez glosniki laptopa.

Taki chyba "ficzer"?

PerlMonk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa 🐪
  • Postów: 1719
4

Aktualizacja CLion. Kliknąłem na dymek, aktualizacja pobrała się w kilka sekund. Restart, okno dialogowe z paskiem postępu, błąd: za mało miejsca na dyski. Faktycznie, zapomniałem, że to dysk 256 GB do "testów". Kliknąłem OK. Efekt? Clion się usunął w ramach aktualizacji, ale już nie zainstalował żadnej wersji w to miejsce. Czysta instalacja to kilkanaście sekund. Windows pokazuje, że jest 6 GB wolnego miejsca. Swoją drogą jest to kolejny raz, kiedy aktualizacja trwa długo i zamula.

Marooned
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
2

YT Pudelek.png

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

Bank PKO SA. Zniszczyla mi sie karta i chce duplikat.

  • Loguje sie na konto, szukam opcji wymien karte. Jest naciskam: dostaje komunikat ze jesli chce wymienic musze dzwonic na party line.
  • Dzwonie, przeklikuje sie przez kilka poziomow wyboru, slucham o RODO, kredytach, releaksujacej (?) muzyki, smutnej historii ze wszyscy konsultanci sa zajeci. W koncu sie udalo
  • Przedstawiam sie i mowie ze chce wymienic karte. Pani oznajmia mi ze to mozna zrobic jedynie w siedzibie banku.
  • Licze sobie w glowie po cichu do 3 by sie uspokoic i grzecznie pytam, dlaczego w takim razie na stronie pisze zeby dzwonic na infolinie a nie po prostu pojsc do banku.
  • To chyba nie pierwszy taki telefon bo pani z wymuszona powaga (slyszalem ze chcialo jej sie smiac ) mowi ze zglosi moja sugestie wyzej
    kurtyna...
p_agon
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 96-230
  • Postów: 952
6

Kupilem kilka shitcoinow za jakieś grosze i nagle na Binance pojawia się taki obrazek:
bladApi.jpg

Trzesacymi rekami wchodzę na wypłatę, a tam wypłaty wyłączone na 24 godziny. Po 22 naprawili błąd :(

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
5

Smart TV Szajsung. Aplikacja HBO Go.
Zależnie od humoru używam audio angielski/polski (obecnie angielski).
Startuje film i teraz jeśli od razu zaczyna się od rozmowy (np jakiś epizod Rick i Morty) to przez chwilę słyszę tekst po polsku, potem chwila ciszy i potem tak jak powinno leci po angielsku.
Przełączanie na następny odcinek i to samo: polski -> cisza -> angielski :)

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10231
0

W PHP jest funkcja chunk_split(), która wstawia w string w jakichś przedziałach separator, np może zamienić "konsantynopolitańczykiewiczówna" na "kons,anty,nopo,lita,ńczy,kiew,iczó,wna".

Domyślnym separatorem jest "\r\n", czyli domyślnie funkcja dzieli na linie, może make sense. Trochę dziwne że nie PHP_EOL, tylko ewidentnie Windowsowe końcówki, liniii no ale okej.

Teraz WTF. Zgadnijcie jaka jest domyślna długość kawałków. Pomyślicie może że może 1? Albo że długość kawłka to nie jest argument opcjonalny? No to sobie obczajcie: https://www.php.net/manual/en/function.chunk-split.php

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

a.png

Znam prawdziwy powód, ale message trochę dziwny.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10231
8

true.png

PerlMonk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa 🐪
  • Postów: 1719
4

ftp://ftp.icm.edu.pl/../../../../../../../../../../../../../../../../../../../../../../../../../../../../

Tak, można sobie przechodzić do katalogu nadrzędnego mimo, że jesteśmy w korzeniu.

Pipes
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 459
11

Składam przez bank wniosek o "500+", bo mogę ;) Szkoda, że mój bank założył, że nie mogę być w szczęśliwym związku małżeńskim. Ja rozumiem, że FB mówi o 50+ płciach. Ja rozumiem, że ludzie mają dzisiaj różne podejście do związków, ale ... CZY MÓJ BANK NAPRAWDĘ NIE POZWALA MI KLIKNĄĆ ŻONATY / ZAMĘŻNA?! Nosz to już jest jednak przesadaZrzut ekranu 2021-06-15 o 19.05.12.png :)

Edit: Wdowcem też być nie mogłem, ale to pewnie wg wyliczeń na podstawie średniej długości życia dla obu płci - kobitki żyją dłużej :)

MO
  • Rejestracja: dni
  • Ostatnio: dni
17

Migracja starego systemu napisanego w cobolu do javy i front w angularze.
Migracja dla użytkownika ma być 1:1 (tzn wszystkie ekrany, zachowania itd).

Po paru miesiącach klient zobaczył efekt - apka w przeglądarce wygląda jak screeny z terminala (tak było uzgodnione)
Ale klient się nie spodziewał że będzie to "aż tak identyczne" i zarzucił że zamiast zmigrowanej aplikacji pokazujemy emultaor mainframe, którym łączymy się do starej aplikacji :D

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
7

Oracle, taki duży, taki fajny, taki dopracowany...
Dzisiaj kolejny raz stary klient dzwoni i płacze, że mu się dokumenty wolno drukują, że jak puszczą to muszą czekać po ~2 minuty na każdy wydruk. No to się łączę i paczę co się tam dzieje. Zapytanie wyciągające dane dla jednego wydruku (nie biczujcie za nazwy tabel/pól - ja tam pracowałem tylko jakiś czas, stan zastany, a z byłymi klientami mam na tyle dobry kontakt, że czasami dzwonią do mnie bo mają większą szansę, że pomogę :p):

Kopiuj
SELECT z.nr_zam, z.data_zam, n.id_k,n.id_a, CASE WHEN Trim(a.komunikator) IS NULL THEN a.miasto ELSE a.komunikator END miasto,Trim(a.ulica || ' ' || a.numer) adres,'$' || to_char(z.nr_zam)||to_char(z.data_zam, 'yyyymmdd') kod_zam,Sum(p.ilosc_kg) masa 
FROM zhzbiorcze z, zhnag n, zhpoz p, koadresy a 
WHERE n.nr_zam = z.nr_zam AND n.data_zam = z.data_zam AND p.nr_zam = z.nr_zam AND p.data_zam = z.data_zam AND a.id_k = n.id_k AND a.id_a = n.id_a AND a.is_deleted = 'N' 
GROUP BY z.nr_zam,z.data_zam,n.id_k,n.id_a,a.komunikator,a.miasto,a.ulica,a.numer,z.kolejnosc 
ORDER BY z.kolejnosc desc 

Jeszcze taka uwaga - oracle długo nie rozpoznawał słowa join - left join zapisywało się tak: SELECT * FROM a, b WHERE b.id(+) = a.id co oznacza SELECT * FROM a LEFT JOIN b on b.id = a.id - ten (+) oznaczał, że z "tej strony" rekordu może nie być. ANSI Join jest wspierany od wersji 9i (której chyba nikt nie używał, więc tak naprawdę od wersji 10g, czyli gdzieś od 2003 roku)

Plan:

Kopiuj
----------------------------------------------------------------------------------------------------------------
| Id  | Operation                                 | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                          |                    |     1 |   114 |     6  (17)| 00:00:01 |
|   1 |  SORT GROUP BY                            |                    |     1 |   114 |     6  (17)| 00:00:01 |
|   2 |   NESTED LOOPS                            |                    |     1 |   114 |     5   (0)| 00:00:01 |
|   3 |    NESTED LOOPS                           |                    |    17 |   114 |     5   (0)| 00:00:01 |
|   4 |     NESTED LOOPS                          |                    |     1 |    98 |     3   (0)| 00:00:01 |
|   5 |      MERGE JOIN CARTESIAN                 |                    |     1 |    77 |     3   (0)| 00:00:01 |
|   6 |       TABLE ACCESS FULL                   | ZHZBIORCZE         |     1 |    35 |     2   (0)| 00:00:01 |
|   7 |       BUFFER SORT                         |                    |  2821 |   115K|     1   (0)| 00:00:01 |
|   8 |        TABLE ACCESS BY INDEX ROWID BATCHED| KOADRESY           |  2821 |   115K|     1   (0)| 00:00:01 |
|*  9 |         INDEX SKIP SCAN                   | IDX_KOADRESY       |  1215 |       |     1   (0)| 00:00:01 |
|* 10 |      TABLE ACCESS BY INDEX ROWID BATCHED  | ZHNAG              |     1 |    21 |     0   (0)| 00:00:01 |
|* 11 |       INDEX RANGE SCAN                    | IDX_ZHNAG_DATA_KON |     1 |       |     0   (0)| 00:00:01 |
|* 12 |     INDEX RANGE SCAN                      | I_ZHPOZ1           |    17 |       |     2   (0)| 00:00:01 |
|  13 |    TABLE ACCESS BY INDEX ROWID            | ZHPOZ              |     1 |    16 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------

szybka zmiana na:

Kopiuj
SELECT z.nr_zam, z.data_zam, n.id_k,n.id_a, CASE WHEN Trim(a.komunikator) IS NULL THEN a.miasto ELSE a.komunikator END miasto,Trim(a.ulica || ' ' || a.numer) adres,'$' || to_char(z.nr_zam)||to_char(z.data_zam, 'yyyymmdd') kod_zam,Sum(p.ilosc_kg) masa 
FROM zhzbiorcze z, zhnag n, zhpoz p, koadresy a 
WHERE n.nr_zam = z.nr_zam AND n.data_zam = z.data_zam AND p.nr_zam(+) = z.nr_zam AND p.data_zam(+) = z.data_zam AND a.id_k = n.id_k AND a.id_a = n.id_a AND a.is_deleted = 'N' 
GROUP BY z.nr_zam,z.data_zam,n.id_k,n.id_a,a.komunikator,a.miasto,a.ulica,a.numer,z.kolejnosc 
ORDER BY z.kolejnosc desc 

czyli tabela zhpoz zamiast łączyć się przez join łączy się przez left join i nagle czas wykonania zapytania spada do ok. 3-4 sekund... A nowy plan wygląda tak:

Kopiuj
---------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                    |     1 |   114 |     6  (17)| 00:00:01 |
|   1 |  SORT GROUP BY                           |                    |     1 |   114 |     6  (17)| 00:00:01 |
|   2 |   NESTED LOOPS OUTER                     |                    |     1 |   114 |     5   (0)| 00:00:01 |
|   3 |    NESTED LOOPS                          |                    |     1 |    98 |     3   (0)| 00:00:01 |
|   4 |     MERGE JOIN CARTESIAN                 |                    |     1 |    77 |     3   (0)| 00:00:01 |
|   5 |      TABLE ACCESS FULL                   | ZHZBIORCZE         |     1 |    35 |     2   (0)| 00:00:01 |
|   6 |      BUFFER SORT                         |                    |  2821 |   115K|     1   (0)| 00:00:01 |
|   7 |       TABLE ACCESS BY INDEX ROWID BATCHED| KOADRESY           |  2821 |   115K|     1   (0)| 00:00:01 |
|*  8 |        INDEX SKIP SCAN                   | IDX_KOADRESY       |  1215 |       |     1   (0)| 00:00:01 |
|*  9 |     TABLE ACCESS BY INDEX ROWID BATCHED  | ZHNAG              |     1 |    21 |     0   (0)| 00:00:01 |
|* 10 |      INDEX RANGE SCAN                    | IDX_ZHNAG_DATA_KON |     1 |       |     0   (0)| 00:00:01 |
|  11 |    TABLE ACCESS BY INDEX ROWID BATCHED   | ZHPOZ              |     1 |    16 |     2   (0)| 00:00:01 |
|* 12 |     INDEX RANGE SCAN                     | I_ZHPOZ1           |    17 |       |     2   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------

ZHZBIORCZE to tabela z numerami zamówień do drukowania i nigdy tam nie ma więcej niż 10-20 rekordów więc indeks na tej tabeli jest co najmniej dyskusyjny.

W obu przypadkach dane zwracane są dokładnie takie same - zawsze jest przynajmniej jeden rekord w p odpowiadający z.

Jeśli ktoś miał by jakieś wytłumaczenie dlaczego tak to chętnie wysłucham bo dla mnie, mimo iż wiem na czym polega różnica w zapytaniach, to nie jestem w stanie pojąć różnicy w czasie wykonania.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
6

Z tego co zauważyłem, w Edge pojawiła się nowa ikonka w dolnym rogu pustej karty:

screenshot-20210811034047.png

Klikam na nią i wyskakuje okienko z ustawieniami prywatności:

screenshot-20210811033834.png

Zajebiście, że coś widać. Dopiero po najechaniu kursorem na którąś opcję, tekst się pokazuje:

screenshot-20210811033922.png

Nie dość, że zjanuszowany interfejs, to jeszcze wszystkie opcje zaznaczone, czyli pełna zgoda na wszystko. :|
Przy okazji — w systemie mam ustawiony język angielski, ale oczywiście Edge go nie ogarnia i wpycha na siłę polski.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10231
14

Kolejna śmieszna lekcja z PHP.

Czy string "foo" znajduje się w array'u [0, 1, 2]? Odpowiedź: tak

Kopiuj
in_array("foo", [0, 1, 2]); // true

Ba!

Kopiuj
in_array("foo", [0]); // true
in_array($_GET['dowolny string na świecie'], [0]); // true

A czemuż to? Bo in_array() wykonuje loose check (taki sam jak ==). Jaki to ma sens? Ano taki

Kopiuj
"foo" == 0; // true
"foo" === 0; // false

PS: Poprawnie, trzeba by zrobić in_array("foo", [1,2,3], true) - trzeci parametr to strict, który domyślnie jest false.

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5228
6

screenshot-20210818191442.png
screenshot-20210818191451.png

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
2

Oficjalna strona Talibów daje do wyboru języki Dari, Pashto, Urdu i arabski. Do wyboru jest też angielski, ale na chwilę obecną zdaje się brakuje plików html, bo link prowadzi do przeglądarki struktury katalogów - są tam różne śmieciowe pliki, można znaleźć też fotki które normalnie byłyby zawartością stron. W sumie nic ciekawego, ciekawostką jest sam fakt że coś takiego wisi na oficjalnej stronie rządu (póki co nieuznawanego) państwa o ludności podobnej do Polski.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10231
8

Znalazłem w kodzie produkcyjnym zmienną nutePffset. Siedziała w kodzie około półtora roku, w PRze na code review nikt jej nie znalazł.

Mój strzał: autorowi przesunęła się ręka, i chciał napisał byteOffset

(Wyjaśnienie: przesunięta ręka o jeden klawisz w prawo b -> n, y -> u, O -> P. Litery t, e, ffset pewnie pisał lewą ręką która nie była przesunięta).

PS: Myślę czy jej nie zostawić i nie udawać że jej nie widziałem, bo nute pffset śmiesznie brzmi :D

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.