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-03-01 14:21
2

Czasami wystarczy jedna linijka, żeby było WAT:

const auto b64 = base64::encode(json.str(), true);

Nieważne jaki byłby to język, jaki sens ma kodowanie JSon-a do base64? Co autor miał na myśli? Myślał w ogóle jak to pisał?

By mnie jeszcze bardziej dobić, klasa w której jest ten kwiatek nazywa się: MachineConfiguration


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 3x, ostatnio: MarekR22, 2019-03-01 14:29
Pokaż pozostałe 4 komentarze
Nie no JSon zawsze powinien iść jako body w HTTP. Wszelkie inne wersje są radosnym udziwnieniem. Zresztą jak nazwa klasy wskazuje, że ten kod nie powinien mieć nic wspólnego z komunikacją (i nie ma), więc nie powinien też tworzyć JSon-a, ani enkodować czegokolwiek do base64. - MarekR22 2019-03-01 14:45
Trzeba przyznać że autor śmiało i bezkompromisowo kultywuje tradycję nazywania zmiennych rodem z C na 8-bitowcach. - vpiotr 2019-03-01 14:51
base64 zrzuca ci UTF-8 na podstawowe znaki ASCII, a to daje gwarancję, że nie nastąpią błędy w interpretacji danych w trakcie przesyłania. - Koziołek 2019-03-01 18:04
Mi się zdarzyło enkodować jsona do base64, gdy chciałam włożyć obiekt do struktury dokumentu openxml, celem późniejszej deserializacji. Mogłam oczywiście serializować xmla, ale json jest krótszy, a nie chciałam rozpychać dokumentu ponad miarę. - aurel 2019-03-04 13:20

Pozostało 580 znaków

2019-03-04 12:36
5

Witam na kolejnej lekcji programowania.

  1. Dzisiaj nauczymy się, że kod powinien mieć dokumentację i komentarze

    // set title
    setTitle(MSG_TITLE);
    /**
    *
    * @param fromDate from date.
    * @param toDate to date.
    * @param reportType the report type.
    */
    
    /* domain values */
    /**
    * Get quantity domain
    *
    * @return domain DomainKey
    */
    public DomainKey getQuantityDomain() {
    return quantityDomain;
    }
    /**
    * Set quantity domain
    *
    * @param number DomainKey
    */
    public void setQuantityDomain(DomainKey quantityDomain) {
    this.quantityDomain = quantityDomain;
    }
    /* field values */
    /**
    * Get quantity
    *
    * @return quantity
    */
    public Double getQuantity() throws NumberFormatException {
    return quantityDef.getValue();
    }
    /**
    * Set quantity
    *
    
    * @return quantity
    */
    public void setQuantity(Double quantity) {
    quantityDef.setPredefinedValue(quantity);
    }```
  2. Żeby przestrzegać single responsibility prinnciple. (pamiętajmy czego się nauczyliśmy w punkcie 1.)

    * @param string The value
    * @return The value
    */
    public String returnStringValue(String string) {
    return string;
    }
  3. Trzeba również dobrze nazywać swoje zmienne

    Enumeration<Object[]> enumx = request.getRequests();
    Object[] oArray;

*Kwiatki wygrzebane z projektu

Pokaż pozostałe 5 komentarzy
@Azarien a co da ci komentarz "//set title" do metody setTitle(). Rozjaśnia ci jej działanie?:D - Berylo 2019-03-05 09:14
@Berylo: jeśli setTitle() jest zwykłym "passthrough" to w ogóle nie powinno istnieć, a title powinno być publiczne. Natomiast, jeśli to nie jest passthrough tylko robi jakieś walidacje, to należy opisać jakie i dlaczego. - hauleth 2019-03-05 11:47
@hauleth: o czym Ty mówisz:) Wkleiłem absurdalny fragment kodu, w którym komentarz jest zupełnie niepotrzebny i nazwałem to "kwiatkiem z projektu". Po co wchodzisz w dywagacje do czego służą komentarze i jak je stosować. Zwróciłem też uwagę @Azarien, że tego typu komentarze nie są w ogóle przydatne w takiej formie. - Berylo 2019-03-05 12:42
Kiedyś uważałem inaczej, ale komentarze co robi kod są bardzo ważne. 2 dni temu poprawiłem błąd w Apache Spark, który dostrzegłem szybko tylko dzięki temu, że autor napisał z pozoru bezsensowny komentarz, tzn. w stylu z jakiego tu się nabijacie: "// check the next element", a kod robił "check(collection.head)". Oczywista sprzeczność między komentarzem i kodem. Okazało się, że komentarz był dobry, kod był błędny. - Krolik 2019-03-05 19:25
Gdyby było odwrotnie tzn. komentarz błędny a kod dobry, to zapewne nic by się nie stało. Po prostu straciłbym minutę na wyjaśnienie rozbieżności i poprawienie błędnego komentarza. - Krolik 2019-03-05 19:27

Pozostało 580 znaków

2019-03-07 18:50
5

Bazodanowe WTF z dzisiaj:

Klient zrobił klaster z 3 serwerów ze współczynnikiem replikacji ustawionym na 3 tzn. każda informacja przechowywana w 3 egzemplarzach. Na każdym serwerze miał po 2 katalogi na dane czyli 6 łącznie. Klaster sobie hulał ładnie przez pewien czas, dane się ładnie zapisywały i odczytywały. W pewnym momencie klient doszedł do wniosku, że trzeba uporządkować struktury na dysku i jednak ładniej będzie mieć po jednym katalogu na dane, zamiast dwóch. Usunął więc po jednym katalogu na każdym węźle, zarówno z konfiguracji jak i z dysku. Tzn tak po prostu zalogował się na każdy serwer, usunął 50% danych i zrobił restart. Łącznie miał teraz 3 katalogi. Krótko się cieszył z porządku na dysku, bo jak się możecie spodziewać po tej rekonfiguracji system zaczął rzucać wyjątkami o niedostępności niektórych danych.

Klient zgłosił się do pomocy technicznej, że lecą "jakieś dziwne błędy" :D

Niestety zapomnieliśmy napisać w dokumentacji, że "usuwanie zbyt dużej liczby katalogów z danymi może powodować utratę danych". :D

edytowany 1x, ostatnio: Krolik, 2019-03-07 18:52
Cassandra :-) Klient miszcz. Ale od razu było trochę dziwnie z tą replikacja N na N. Czy ten klient faktycznie potrzebował Cassandry? - jarekr000000 2019-03-07 18:57
Klient z USA? - somekind 2019-03-07 18:58
Nie pamiętam. Ale ogólnie klienci z różnych regionów świata są zdolni do takich akcji. Praca przez tydzień w pomocy technicznej to świetne źródło WTFów. - Krolik 2019-03-17 08:45

Pozostało 580 znaków

2019-03-13 11:18
6
if (environment.IsDevelopment())
      return (I)Activator.CreateInstance(proxyType, configuration);
else
      return (I)Activator.CreateInstance(proxyType, configuration);

Niedawno trafiłem na to we własnym kodzie. Nie pamiętam dlaczego popełniłem takie coś ale chyba jakiś większy refactoring robiłem i tak jakoś wyszło..


Działa? działa... to na ch.. drążyć temat :) hehe :P No, ale fajne, fajne :) - axelbest 2019-03-13 11:19
jakbyś kiedyś potrzebował robić coś inaczej w developmencie, to połowę roboty masz zrobioną.. :D - superdurszlak 2019-03-13 11:28
a potem masz na produkcji pokój developerski jak w Fallout 76. Będziesz rozdawał bany? - MarekR22 2019-03-13 13:01

Pozostało 580 znaków

2019-03-13 19:58
8

Dwa tygodnie siedziałem nad modułem komunikacji z jednym z urządzeń które plotło totalne bzdury po RS232C. Aplikacja była deployowana na zdalnego PC kilkaset kilometrów dalej, bo urządzenie było ciut za duże i testowana organoleptycznie. Klient zarzekał się że wszystko jest sprawne i dobrze podłączone.
Po dwóch tygodniach okazało się że facet z labu zamienił przewody - plus z minusem czy jakoś tak. Od tamtej pory działało :)

Klient oszukujący support, skąd ja to znam. "Zrobiliście yyyy i zzzz na tym serwerze?" "Tak" "Ale na pewno?" "No tak, na pewno". Tydzień później okazuje się: "Operacja yyyy trwała bardzo długo, chyba się zawiesila i daliśmy Ctrl-C". - Krolik 2019-03-17 08:49
@Krolik: no bo to było źle zadane pytanie. Trzeba było zapytać, czy operacja się skończyła, a nie czy sobie coś-tam robili ;) - cerrato 2019-03-18 09:33
Tak, teraz zawsze prosimy o wklejenie wyników zleconych operacji. Nawet jeśli jesteśmy pewni jakie będą i same w sobie nie są nam potrzebne. - Krolik 2019-03-19 13:44
Sprytne podejście, muszę zapamiętać. Podejrzewam, że skorzystam kiedyś z tego patentu :D - cerrato 2019-03-19 21:07

Pozostało 580 znaków

2019-03-18 09:38
7

Programowanie w tle. Serwer pod bazę ma 128GB RAMu, to i tak dużo więcej niż potrzebne dla klienta, u którego toczy się akcja. Oddział zamorski firmy wyprodukował jakieś rozwiązanie i zdaje sobie sprawę, że zapytania bazodanowe nie są najwyższych lotów, jeden z zamorskich ziomków pisze "we should have to inform customer that the RAM size can be increased to 1TB"...

edited:
Drobna aktualizacja, po drążeniu tematu. Okazało się, że zapytania są słabe, bo developerzy nie mogą ich zmieniać... bo Hibernate im takie generuje :D

edytowany 1x, ostatnio: yarel, 2019-03-18 11:34
przeczytalem ale nic nie zrozumialem - masterO 2019-03-18 22:33
Mega dziwne. Bo mimo, że dość nie lubię hibernate to jednak zapytania można w nim praktycznie dowolne napisać. Czasem trzeba się nagimnastykować, ale można. Do tego można pisać natywne zapytania.... - jarekr000000 2019-03-18 22:43
@masterO: WTF nie jest bezpośrednio związany z kodem. Hindusi napisali "dodatek" do systemu i chcą żeby dorzucić 1 tera RAMu dla bazy, bo "zapytania są wolne". Winę zwalili na Hibernate, które według nich generuje nieoptymalne zapytania i nie da się nic z tym zrobić. Jak @jarekr000000 napisał, w Hibernate da się. Wystarczy tylko umieć. - yarel 2019-03-19 08:05

Pozostało 580 znaków

2019-03-22 13:36
2

Cuda UB w C++:
https://ideone.com/NkM2w2
https://ideone.com/7F88MV
https://stackoverflow.com/a/48731480/1387438


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
@MarekR22: To co pokazałeś, to chyba jeden z najbardziej znanych UB w C++. - arkadiusz97 2019-03-23 11:37

Pozostało 580 znaków

2019-03-24 18:05
4

W Krakowie wiszą teraz takie plakaty: https://www.smlobzow.pl/?wpfb_dl=503
Sortowanie śmieci spoko, nie mam z tym problemu.
Widzę też Qr Code. Wyciągam telefon i próbuje zeskanować i nic.
Może to przez to, że Qr Code jest na czarnym tle i fragment kodu zlał się z tłem? Nie to nie to.
Ale coś jakiś dziwny ten Qr Code. Standardowe znaczniki jakoś mi nie pasują.
I nagle olśnienie, grafik wstawił Qr code odwracając kolory.
Po odwróceniu kolorów, telefon nie ma problemu z czytaniem Qr code: http://www.mpo.krakow.pl
W sumie adres też jest WTF, bo nie powinien prowadzić do strony głównej, ale jakiś sensownych materiałów na temat sortowania śmieci.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
to i tak postęp, że postanowili jakoś nie wiem... sortować odpady czy coś. Mamy 2019r. i w najbliższej altance Śmietnikowa stoi z 10 otwartych, zielonych kontenerów i jakoś żaden nie wygląda tak, jakby miał służyć do segregacji czegokolwiek. - superdurszlak 2019-03-24 18:12
chyba u ciebie, w kuj-pomorskim i pomorskim, to od dawna się sortuje - szarotka 2019-03-24 18:17
W mojej rodzinnej mieścince też, ale najwyraźniej nie do wszystkich krakowskich osiedli dotarł ten wynalazek. Zresztą do dziś pamiętam widoki z okna akademika Politechniki Gdańskiej - a ściślej to wielką stertę odpadów, pod którymi kryły się jakieś kontenery, dla odmiany żółte. A to były wakacje, w roku akademickim sterta była pewnie 3 razy większa :) - superdurszlak 2019-03-24 18:29
Propo akademików, to nie wiem czy wszędzie jest ten zwyczaj, ale zdarzało mi się przechodzić obok pewnego akademika, ludzie wystawiają jedzenie w reklamówkach za okno, żeby było w chłodnym (lodówek nie mają czy boja się że ktoś im zje?), jak się coś popsuje, to po prostu wyrzucają przez okno (znaczy chyba specjalnie a nie przez przypadek, bo na trawniku leżą różne rzeczy a w taki przypadek to nie wierzę). Po prostu, nie licz akademików, studenci w grupie są jak zwierzęta :D - szarotka 2019-03-24 18:34
Kiedyś musiało tak być, raczej nie bez powodu wprowadzili na MS AGH zakaz trzymania czegokolwiek na parapetach. Za moich czasów jak już ktoś łamał zakaz, to przeważnie w celu wywietrzenia rzeczy po WF. No bo w sumie w tych ciasnych jak trumna pokojach trzymanie przepoconego syfu byłoby samobójstwem, a na zewnątrz jakiś odważny acz chwiejny rycerz Kielonu mógłby się ich pozbyć na swój sposób - spuszczając w WC czy coś w ten deseń. - superdurszlak 2019-03-24 18:41
Ale znajoma raz faktycznie trzymała ciasto na parapecie - nie mieściło się w lodówce czy coś, a koniecznie chciała przyjanuszyć na obronie bo "catering za drogi". Także aby zaoszczędzić na cateringu (który wyszedł by im pewnie w okolicy dyszki na łebka) specjalnie przywoziła do Krakowa to ciasto tylko po, by podmuch wiatru zrzucił je w nocy na trawnik z któregoś-tam piętra akademika. - superdurszlak 2019-03-24 18:44

Pozostało 580 znaków

wczoraj, 17:16
0

Nie do końca programistyczne ale WTF. W naszym oddziale był incydent bezpieczeństwa. Zrobiła się afera na poziomie korpo i teraz poza dodatkowymi szkoleniami dostaliśmy piosenkę o bezpieczeństwie danych. Muzyka Lady Gaga, słowa i wokal autorstwa jednej z dyrektorek z amerykańskiej centrali :D


Wiedza to potęga
Znajomy miał w firmie kradzież, jakiś ziomek wszedł z ulicy, wziął jakieś macbooki i nieniepokojony przez ochroniarza spokojnie wyszedł. Policja nie dawała dużych szans, to programiści sami zaczęli szukać i znaleźli sprzęt w ofercie pobliskiego komisu. - Afish wczoraj, 17:31
...u nas - jeszcze przed moim przyjęciem się do pracy - był koleś który wycinał kody z mleka z kuchni na jakiś konkurs czy coś. Nie byłoby w tym nic złego, gdyby wycinał je sobie ze zużytych kartonów, ale typ podobno masowo wylewał je do zlewu żeby tylko powycinać i ktoś się w końcu wku...zniecierpliwił :D - superdurszlak wczoraj, 17:36
U mnie w firmie ktoś wszedł od podwórza i sobie zabrał monitory. Nikt nie wie kiedy i jak. Po tym incydencie założono kamery. Innym razem dwóch zamaskowanych typków ukradło kamerę zamontowaną nad wejściem. Tak kamerę. Oczywiście rzeczona kamera ich nagrała, ale co z tego. - Sarrus wczoraj, 18:43

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