Programistyczne WTF jakie Was spotkały

Odpowiedz Nowy wątek
2009-04-03 11:31
rnd
11

Dziś w pracy moim oczom ukazała się klasa na 30k linijek. W jednym pliku.
Jeszcze jestem w szoku :-D
A jakie Wy mieliście WTF?


#define TRUE FALSE
//Happy debugging suckers :D
edytowany 2x, ostatnio: Demonical Monk, 2011-12-04 00:47

Pozostało 580 znaków

2019-08-05 15:05
1

Pozwolę sobie skomentować komentarze odnośnie mojego powyższego WTF
x = 0.1 + 0.2; // -> 0.30000000000000004 - JavaScript rulez!

Tak, wiem że dwójkowa reprezentacja ułamków dziesiętnych może skutkować dziwacznymi wynikami. Walczyłam z podobnymi efektami już 20+ lat temu. Niektórzy komentatorzy pisali powyżej, coś w stylu "przecież to jest zapisywane w postaci dwójkowej, więc takie będą efekty", z czym pozwolę się sobie nie zgodzić, bo zapis wartości w postaci dwójkowej nie wymusza wcale, by operacje matematyczne z ich udziałem wykonywać zawsze po prostu na bitach.

Moje WTF tyczy się tego, że po ponad 20 latach nie widzę w tej kwestii żadnego postępu, a twórcy języka/implementacji nie widzą żadnego problemu w tym, żeby taki sposób przeprowadzania operacji stosować w języku "dla ludu", w którym ktoś mógłby chcieć np. podliczyć swoje rachunki.

A na koniec wkleję skrin z identyczną operacją przeprowadzoną w Basicu na prawie 40-letnim Commodore 64:

C64, basic, dodawanie

jako komentarz, dla tych, którzy uważają, że "tak po prostu jest, więc tak musi być".


Pokaż pozostałe 13 komentarzy
Te komentarze tutaj, to jakaś bzdura, IEEE754 powstało kilka lat po wprowadzeniu C64 na rynek. - somekind 2019-08-05 18:03
Problem ma, bo problem wynika ze sposobu działania komputerów, a nie normy jakiejś organizacji. - somekind 2019-08-05 18:31
@obscurity: sprawdzałem tylko w jshellu. @Freja Draco: na podstawowym poziomie tak. Jednak błąd będzie się nawarstwiał z czasem i w końcyu będzie problem. - Koziołek 2019-08-06 12:12

Pozostało 580 znaków

2019-08-06 14:45
5

Jeśli już kiedyś tutaj było, to wybaczcie:


F... to miało iść do wątku z humorem. Chyba potrzebuję wakacji od forum ;) - Freja Draco 2019-08-06 16:28

Pozostało 580 znaków

2019-08-08 01:09
6

javascript:
title

Pokaż pozostałe 18 komentarzy
@LukeJL: nie takie rzeczy robili, teraz ludzie robią Linuksy i Quake'i w przeglądarce - vpiotr 2019-08-09 14:19
@vpiotr nie chodzi o to, co można tylko pytanie tylko o koszt takich zabaw. Kiedyś patrzyłem, że np. interpreter Pythona zajmował z 3 megabajty w pliku *.js. A z tym Quake to też pytanie, jak to bd działać na słabszych urzadzeniach. - LukeJL 2019-08-09 15:09
@vpiotr fajnie z tym Quakem, aż sobie włączyłem. Tylko szkoda, że nikt nie chodzi do zabijania. Ale może zły tryb włączyłem. - LukeJL 2019-08-09 15:12
@LukeJL quakejs działa zacnie nawet na słabym notebookie . JS nie musi być powolny - trudno napisać wydajną VMkę, ale się da (V8 już jest niezła, a możliwości teoretycznych usprawnień nadal dużo (tak mi się zdaje)). - jarekr000000 2019-08-09 15:18
@jarekr000000: to nie tylko kwestia V8, tylko też sprawnego renderingu WebGL. - LukeJL 2019-08-09 15:21

Pozostało 580 znaków

2019-08-09 10:45
8

Nie do końca programistyczne.

2 tygodnie temu wróciłem z urlopu i VDI (zdalny Windows) zgłosił mi wygaśnięcie hasła. W wymogach wielkie/małe litery, cyfry i znaki specjalne. Wbiłem nowe hasło i kontynuowałem pracę. Niestety, mniej więcej raz w tygodniu leci wymuszony restart. Nowe hasło zostało przyjęte na stronie, z której odpalam VDI, ale już na ekranie logowania Windows wywalało błąd. Ani stare ani nowe nie przechodziło, zablokowałem konto, kontakt z ITS (mniej więcej jak na ostatnim filmiku HRejterzy), pan odblokował mi konto i strzelił reseta.. po resecie Windows czasem nie pyta o hasło, loguje się jakoś automatycznie.

Minęło dni kilka, znów reset, znów hasło nieprawidłowe.. Ustawiłem sobie nowe (przez stronę można), zalogował się automatycznie.. ale po paru dniach znów reset i znów "hasło nieprawidłowe" i ITS..
Sytuacja stawała się co raz bardziej absurdalna aż do dziś... ta sama historia, ale tym razem znajoma z biurka obok "a spróbuj wirtualną klawiaturą wpisać". Odpalam, a tam... układ brytyjski! WTF. Dlatego nic poza wykrzyknikiem nie przechodzi, jakieś funty i inne krzaki zamiast klasycznego układu amerykańskiego. Hash obok entera.. mogłem sobie wpisywać swoje hasło i 100 razy i bym nie trafił. Dopiero po zalogowaniu ładuje ustawienia mojej klawiatury.

Co więcej, kursor myszy znika jak najeżdżam na tę wirtualną klawiaturę, więc muszę na oko z wyczuciem niewidzialnym kursorem najechać, kliknąć i mieć nadzieję, że * w polu hasła to odpowiedni znak :D


Pokaż pozostałe 15 komentarzy
Generalnie mam cały czas podpięte dwie.. wbudowaną w notebooka i pełnowymiarową. Trzecia by się gdzieś zmieściła ;-) - Marooned 2019-08-09 14:09
No ja staram się mieć hasła uniwersalne pasujące do obu układów. W praktyce oznacza to nieużywanie shift + 2 i shift + 3. - somekind 2019-08-09 14:40
W sumie chyba najlepsza uwaga. Nie przyjrzałem się wcześniej, ale fakt, że w obu przypadkach miałem shift + 2 i + 3. Jakoś założyłem, że cały rząd będzie inny. Pomocna uwaga. Thx - Marooned 2019-08-09 14:46
Lata praktyki dla klientów z UK. ;) - somekind 2019-08-09 15:39

Pozostało 580 znaków

2019-08-14 11:08
4

screenshot-20190814110824.png

edytowany 1x, ostatnio: Krolik, 2019-08-14 11:08
Pokaż pozostałe 3 komentarze
@AreQrm: Więcej pakietów to nic. Różnica w danych ważniejsza ;) - PerlMonk 2019-08-14 12:53
@dzek69: widziałeś, ale czy wiesz może, jakie są możliwe powody? - Silv 2019-08-14 15:25
Coś było mocno nie tak z tym mirrorem dzisiaj - dane sączyły się jak krew z nosa, natomiast po zmianie mirrora cała aktualizacja poszła w kilka sekund. - Krolik 2019-08-14 15:28
@Krolik: Tak się mówi, ale właściwie nie rozumiem. Przecież jak krew z nosa leci, to raczej szybko... - Silv 2019-08-14 15:32
E tam, jest napisane, że "extra", to musi być więcej :D - yarel 2019-08-17 09:14

Pozostało 580 znaków

2019-08-14 22:29
1

WTF No. 1

Gdzieś w odmętach pull requesta drugiego juniora, javowca 2y:

@Test
void 'Foo should this and that blah blah blah unit test'() {
  def foo1 = new Foo(/* jakieś 80 znaków inicjalizacji */)
  assertFooThisAndThatInThose2LinesOfCodeOrSo(foo1, CONST_1)

  def foo2 = new Foo(/* jakieś 80 znaków inicjalizacji */)
  assertFooThisAndThatInThose2LinesOfCodeOrSo(foo2, CONST_2)

  def foo3 = new Foo(/* jakieś 80 znaków inicjalizacji */)
  assertFooThisAndThatInThose2LinesOfCodeOrSo(foo3, CONST_3)
}

No zdarza się. Sam ciągle popełniam takie wtopy i babole, że jak już mija zaćmienie umysłu to aż łapię się za głowę i rozważam pokutę w postaci 10 lat robót w kamieniołomie.

Ale...

Ten sam junior namawia mnie do parametryzowania wszystkiego co się da, również wtedy, gdy zwyczajnie żadnej korzyści to nie przyniesie. Ale widocznie tego nie szło ani sparametryzować, ani rozbić tych 3 przypadków na 3 osobne testy ¯\_(ツ)_/¯

WTF No. 2

Ten sam delikwent, ten sam pull request, też gdzieś w testach:

@Test
void 'this and that should blah blah blah'() {
  // coś tam coś tam
  assertThisAndThatBlahBlah(foo, bar)
}

private assertThisAndThatBlahBlah(Foo foo, Bar bar) {
  assertThisAndThatBlahBlah(foo, bar, SOME_DEFAULT_BAZ)
  assertThisAndThatBlahBlah(foo, bar, SOME_DEFAULT_BAZ)
  assertThisAndThatBlahBlah(foo, bar, SOME_DEFAULT_BAZ)
  assertThisAndThatBlahBlah(foo, bar, SOME_DEFAULT_BAZ)
  assertThisAndThatBlahBlah(foo, bar, SOME_DEFAULT_BAZ)
}

private assertThisAndThatBlahBlah(Foo foo, Bar bar, Baz baz) {
  // nic co mogłoby uzasadnić N wywołań pod rząd
}

A może to po prostu dobre praktyki testowania w JUnit, a ja jestem głupi i się nie znam? :/


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)
Co poradzisz, testy męczą, sam dzisiaj migrowałem z JUnit 4 na 5 :P - Burdzi0 2019-08-14 22:31
testy męczą szczególnie jak jest w nich taka sieczka i kiedyś coś zacznie failować :] - superdurszlak 2019-08-14 22:35
@superdurszlak: przynajmniej są jakieś testy :) Ja jestem na projekcie gdzie wszystkie testy unitowe to tak na prawde integracyjne, choć czasem mockują 90% systemu bo oczywiście wszystko jest od wszystkiego zależne. W końcu zrozumiałem też czym jest testowanie mockito :) Myślałem że tak się tylko mówi, myliłem się. - orchowskia 2019-08-17 08:16
A kto przetestuje testy? - PerlMonk 2019-08-17 09:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0