Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
no_solution_found
  • Rejestracja: dni
  • Ostatnio: dni
0

a ja w kodzie w jednym z projektów znalazłem taki komentarz:

Kopiuj
           // **************************************
            // JAK Paweł zrobi uprawnienia to wywalić w trymiga tego badziewnego ifa :D
            // *************************************
            if ($this->session->userData['status_affiliate'] <= Admin_Model_Wspolpracownicy::STATUS_AFFILIATE_TRAINED &&
                    $module == 'frontend' && ($controller == 'provision' || $controller == 'raports' || $controller == 'shipment' || $controller == 'analisys'))
                $this->_redirect('/');

:D

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

W załączniku najlepszy generator słów dla programu wykorzystującego brute forcing do łamania haseł na skrzynkach pocztowych;

Co ciekawe, algorytm ma 6356 linii kodu i działa poprawnie; Zapisuje wygenerowane słowa do pliku; Gdyby nie to, że można go zoptymalizować o 99,7% to może i taki śmieszny by nie był :)

EDIT: Próbowałem wkleić kod do Pastebin, ale wczytało mi tylko 2,5k linii kodu; Chyba go szlag trafił, bo pewnie nigdy tak gównianego kodu nie widział :)

EDIT: Zmieniłem format pliku w załączniku na .zip, żeby mógł go obsłużyć system :P

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

Nie wiem jakim cudem, ale CRM, nad którym pracowałem przez 1,5 roku u poprzedniego pracodawcy (i który nazywam największą wprawką w historii programowania ;)) jest upubliczniony i można do niego bez problemu wejść przez Google. Po ujrzeniu znajomego formularza, wpisałem tam (to chyba jakiś odruch warunkowy) ledwo przypomniany login i hasło. Tak, dla jaj, no bo przecież niemożliwe, alby ktoś deweloperską bazę danych wystawił do internetu... No i się zalogowałem. [rotfl]

siararadek
  • Rejestracja: dni
  • Ostatnio: dni
0

Dodawałem dziś pewną funkcjonalność, najpierw napisałem test, program go nie przeszedł, później napisałem metodę, która dodawała ową funkcjonalność. Odpalam test - nie działa. To zaczałem przeszukiwać, gdzie jest błąd, czy dobrego stringa ładuję itd. Po jakiejś godzinie zauważyłem, że zapomniałem wywołać tą metodę -_-

lolq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 423
0

pewnie nic nadzwyczajnego, ale zaciekawiło mnie:

Kopiuj
for ($i = 0; $i <= 10; $i--)

po wyrzuceniu błędu o przekroczeniu limitu czasu (choć zwiększyłem później limit na localhoscie), nastąpiła pętla nieskończona, do tego FF zaczął ciągnąć nagle po 20 mb/s pamięci, zanim licznik dotarł mi do miliona FF pożerał już ponad 1,5 gb ram (trwało to dosłownie krótką chwilę) xD taa... fajny sposób na zawieszanie przeglądarki, żeby to jeszcze szybciej działało :P

msm
  • Rejestracja: dni
  • Ostatnio: dni
0

.NET też ma swoje dziwactwa (chociaż podejrzewam że ta metoda to nakładka na funkcję WinAPI zachowaną dla wstecznej kompatybilności od czasów DOS-a):

DirectoryInfo.GetFiles Method (String)

Because this method checks against file names with both the 8.3 file name format and the long file name format, a search pattern similar to "1.txt" may return unexpected file names. For example, using a search pattern of "1.txt" will return "longfilename.txt" because the equivalent 8.3 file name format would be "longf~1.txt".

Czyli jeśli mamy w folderze pliki

  • a1a.txt
  • longlonglong.txt
    Zapytanie o pliki pasujące do wzorca *1*.txt zwróci... oba. Logiczne.
Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

http://www.php.net/manual/pl/function.session-set-cookie-params.php
http://www.php.net/manual/en/function.session-set-cookie-params.php

W polskiej wersji dokumentacji nie ma argumentu httpOnly, a wy się pytacie czemu nasz rząd jest tak słabo zabezpieczony [rotfl]

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

Nie do końca związane z kodem, ale programistyczne jak najbardziej.

W zeszłym tygodniu chciałem skorzystać na cudzym komputerze z pewnego forum (stojącego na phpbb by Przemo), ale nie pamiętałem hasła, więc oczywiście musiałem wygenerować nowe. Zalogowałem się, zrobiłem co chciałem, wszystko ok.
Parę dni później wróciłem do domu, wchodzę na to forum i zostałem automatycznie zalogowany, nie musiałem podawać nowego hasła!

Za takie czary autorom należałoby upierdzielić rączki przy łopatkach.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Dokańczając dzisiaj skrypt PHP...
Mam jeden plik, który wykonuje zapytanie SQL, po czym zwraca ID ostatniego rekordu za pomocą die(mysql_insert_id()).
W/w plik jest jest wywoływany za pomocą jQuery (właściwie, to jest to zwykły formularz HTML, aczkolwiek z dodatkiem jQuery Form, aby strona się nie odświeżała), a jego wynik jest przekazywany do innego skryptu PHP ($.get), który także modyfikuje coś w bazie danych (tutaj właśnie jest używana wartość przekazana wcześniej za pomocą mysql_insert_id()).
Jakie WTF?
A no takie:
Jeżeli formułka wygląda tak: die(mysql_insert_id()) to do skryptu dochodzi pusty ciąg znaków.
Jeżeli formułka wygląda tak: die("cośtam".mysql_insert_id()) to do skryptu dochodzi cośtam+ID rekordu.
Godzina z życia mniej.

  • Rejestracja: dni
  • Ostatnio: dni
0
Patryk27 napisał(a)

Jakie WTF?
A no takie:
Jeżeli formułka wygląda tak: die(mysql_insert_id()) to do skryptu dochodzi pusty ciąg znaków.
Jeżeli formułka wygląda tak: die("cośtam".mysql_insert_id()) to do skryptu dochodzi cośtam+ID rekordu.
Godzina z życia mniej.

Jedyne WTF to Twoja odporność na RTFM.

die

(PHP 4, PHP 5)

die — Equivalent to exit()

Parameters

status

If status is a string, this function prints the status just before exiting.

If status is an integer, that value will be used as the exit status and not printed. Exit statuses should be in the range 0 to 254, the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully.

WTF, są jeszcze programiści, którzy nie używają IDE, nie debugują kodu i unikają dokumentacji?

MO
  • Rejestracja: dni
  • Ostatnio: dni
0

fragment dokumentacji JGroups, może nie do końca wtf:

If this still fails, consult a system administrator to help you setup IP multicast correctly.
If you are the system administrator, look for another job :-)

jednak ten zapis bardzo Mnie rozbawił.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

user image

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Przyjęło się, że kod zawsze wyświetlamy i publikujemy czcionką o stałej szerokości (Courier, Lucida Console, Consolas, itp.)
Zobaczcie, na jaki fantastyczny pomysł wpadli w najnowszym numerze SDJ:

user image

MasterBLB
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1454
0

Dzisiaj otworzyłem sobie swój staary projekt,taki z 2006 roku i wyrwało mi się jedno wielkie O.o o.O KURR.A...

fragmenty kodu:

Kopiuj
if(c=='a')
{
    rób_coś;
    goto nextchar;
}
if(c=='b')
{
   rób_coś;
   goto nextchar;
}
//i takich porównań to było kilkanaście

nextchar:
//coś tam dalej

Jestem jednym z tych osobników,co to nie wzdragają się przed goto,ale tutaj to już nie zdzierżyłem i musiałem poprawić na else ify

Inny kwiatek to następujące makro w pliku barcodegenerator.h:

Kopiuj
#ifndef CREATE_BARCODE_OBJECT_MACRO
#define CREATE_BARCODE_OBJECT_MACRO(classname) code=new classname;\
	connect(ui.barcodeText,SIGNAL(textChanged(const QString&)),code,SLOT(setCodeText(const QString&)));\
	connect(ui.labelText,SIGNAL(textChanged(const QString&)),code,SLOT(setLabelText(const QString&)));\
	connect(ui.labelAbove,SIGNAL(toggled(bool)),code,SLOT(setAboveBelow(bool)));\
	connect(ui.digitsToo,SIGNAL(toggled(bool)),code,SLOT(setDrawDigits(bool)));\
	ui.barcodeText->setValidator(&code->validator);\
	ui.barcodeText->clear();\
	ui.labelText->clear();\
	ui.previewWidget->setCurrentBarcode(code);
#endif

Moja pierwsza myśl jak to zobaczyłem "Czemu kur.a nie użyłem fabryki czy czegoś w ten deseń?! o.O" i zaraz potem refleksja,że jaki wtedy jeszcze niedouczony byłem i nie znałem wzorców projektowych

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

http://4programmers.net/Forum/Newbie/194808-c++_problem_z_losowaniem_liczb?p=824848 - w tym temacie jest kod, który ma 3500 linii oraz funkcję:

Kopiuj
int bramka_pot9()
{
    if(liczba_losowana>=1&&liczba_losowana<=95)
    {
        a++;
    }
    if(liczba_losowana>=96&&liczba_losowana<=100)
    {
        b++;
    }
}

Która występuje 119 razy(zmienia się trochę nazwa i stałe!!

MO
  • Rejestracja: dni
  • Ostatnio: dni
0

wdrażam się w nowy projekt. Mam do dopisania mały fragment kodu ale jak oglądam kod to nie mogę znaleźć miejsca w które ma go dodać. Wcześniej obgadane jak to ma być, więc wydawało mi się że wszystko rozumiem. Jak zobaczyłem kod to ni huhu, widzę miejsce w którym to teoretycznie powinno być, ale kod jakoś nie pasuje. W końcu włączyłem debuger i rzucałem jakieś fejkowe zdarzenia w systemie aby się "dodebugować" do miejsca które mnie interesuje. No nic, po prawie nauczeniu się 700 linijek kodu stwierdziłem że nie daje rady.
Okazało się że po prostu przez przypadek z tego teoretycznie pasującego kodu usunięto 2 linijki.

Cóż małe niedopatrzenie, ale przyszła mi na myśl pewna idea wdrażania nowych programistów do projektu:
usunąć kilka linijek kodu z miejsca dość złożonego i kazać im dodać coś do miejsca które realizuje usuniętą funkcjonalność, następnie powiedzieć że ten kod jest poprawny :D po kilku godzinach analizowania i debugowania będą na tyle obeznani w kodzie że będą go recytować.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Python ma dwa operatory porównania: == i is (i nie ma żadnych "krótkich" typów całkowitych).

Kopiuj
a=256
b=256
a == b #True
a is b #True
a=257
b=257
a == b #True
a is b #False

Liczba 257 nie jest wyjątkiem, jest tak (chyba) dla wszystkich liczb >=257.

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

Czytam sobie o tworzeniu aplikacji na różne urządzenia przenośne, wszak to przyszłość teraz, więc wypada się znać. Okazuje się, że niekiedy tworzenie aplikacji polega również na tworzeniu ich atrap (bo splash screenem nie można już tego nazwać) w celu zmylenia użytkownika:

When the system launches an app, it temporarily displays a static launch image on the screen. Your app provides
this image, with the image contents usually containing a prerendered version of your app’s default user
interface. The purpose of this image is to give the user immediate feedback that the app launched, but it also
gives your app time to initialize itself and prepare its initial set of views for display. When your app is ready to
run, the system removes the image and displays your app’s windows and views.

(Źródło: http://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/iphoneappprogrammingguide.pdf s. 94)

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
1

z przed kilku minut... może nie stricte programistyczne (raczej zarządzanie projektem/produktem), ale...

Generalnie kilka miesięcy temu napisałem taki mały programik integrujący dwa systemy w firmie. Taka duperelka, która obudowuje wywołanie WS. Trafiło na testy sprawa przyschła... aż do dziś.

Własnie wyszedł od nas jeden z wodzów biznesowych z wielce zdziwioną miną, bo okazało się, że produkt nie jest wdrożony do produkcji (zgadnijcie kto zapomniał dać zgodę), a on od kilku dni ma urwanie tyłka z klientami dzwoniącymi i zgłaszającymi, że integracja nie działa...

Zatem wniosek dla potomnych - jak wam wisi jakiś mały produkt do wdrożenia i nie ma zgody biznesu to należy męczyć i się przypominać, bo może się okazać, że komuś się po prostu zapomniało odpowiedzieć na maila.

iooi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 573
0

wtf.PNG

Sczególnie opis pod pierwszym wynikiem wywołuje u mnie lekki wtf.

MO
  • Rejestracja: dni
  • Ostatnio: dni
0

mysql> delete from quest_finished;
mysql> select count(id) from quest_finished;

+-----------+
| count(id) |
+-----------+
| 0 |
+-----------+
1 row in set (12 min 3.42 sec)

tabela quest_finished jest pusta, serwer nie jest przeciążony :)

wcześniej tabela miała 12gb, delete from quest_finished usuwa wszystkie wiersze ale mysql nie zwalnia miejsca na dysku, stąd taki czas, zanim przejrzałem dokumentację mysql to trochę zonk że po usunięciu wszystkich wierszy mysql zachowuje się tak jakby dalej tam były.

siararadek
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam na uczelnię napisać prosty konwerter kodu z Javy do C# (wiem, że absurdalne, wiem). Poszukałem więc czegoś opensource do parsowania języka Java, aby małą część przerzucić do C# (bo w tym języku piszę ten 'program'). To co znalazłem przerosło moje oczekiwania: klasa z 10259 liniami kodu:

http://code.google.com/p/javaparser/source/browse/branches/mavenized/JavaParser/src/main/java/japa/parser/ASTParser.java

I jeszcze te nazwy metod: jj_3R_1() - jj_3R_338() czy tam więcej...

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

@siararadek:
Słabo się tematem interesujesz, bo ten plik .java to plik wygenerowany z gramatyki, która leży dosłownie obok: http://code.google.com/p/javaparser/source/browse/branches/mavenized/JavaParser/src/main/java/japa/parser/java_1_5.jj

Parsowanie kodu źródłowego w postaci tekstowej odbywa się aktualnie z reguły za pomocą parserów wygenerowanych z gramatyk typu (chyba) najczęściej LALR lub LL (parser powyżej pochodzi z http://en.wikipedia.org/wiki/JavaCC który generuje parsery z gramatyk typu LL).

Dla porównania przykładowa gramatyka dla C# 4.0: http://www.antlr.org/grammar/1335792765749/CSharp_4.0_grammar.zip

siararadek
  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki za pokazanie mi mojej niewiedzy :) już się zabieram do czytania.

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

Mój WTF, jeden z wielu przy analizie COBOL-a:

(pisane z głowy w pseudo-C-kodzie):

Kopiuj
if (zmienna0 > 0)
  zmienna2 = zmienna1;
else
  zmienna1 = zmienna2;

Takie kwiatki powstają jeśli ktoś w pętli chce przeczytać tylko konkretny wiersz a z resztą zrobić coś innego (np sumę)...
Tylko do k... nędzy czy to musi tak wyglądać?

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Nie wiem czy wcześniej było - kanadyjski programista specjalizujący się w Pythonie i Django: http://www.boduch.ca/

Copyright © 2012 Adam Boduch

;]

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

Mój stary projekt z czasów, kiedy studiowałem elektronikę.
Zgadnijcie co to jest, czemu napisane w taki idiotyczny sposób i ile punktów dostałem: http://wklej.org/hash/325445c3fc6/

Zwycięzca dostanie talon na kawę z DM.

Tak w ogóle, to ten program naprawdę działa i coś robi, tylko raczej nieefektywnie. ;)

  • Rejestracja: dni
  • Ostatnio: dni
0

Napisałem sobie usługę. Próbuję odpalić, coś długo startuje. Szukam, szukam i mam.. WTF

Kopiuj
public double Time
{
	get { return Log.RealTime; }
	set { Time = value; }
}

Dlaczego VS2010 o czymś takim nie ostrzega? Chyba, że trzeba jakieś opcje włączyć na kompilatorze, o których nie wiem :-)

  • Rejestracja: dni
  • Ostatnio: dni
0

efekt dopisania do adresu strony pewnej firmy hostingowej (serwery shared windows) fragmentu ?-s

Kopiuj
if (isset($_GET['p'])){
    $promocja=$_GET['p'];
    $typ=str_split($_GET['f'],1);
    if ($typ[0]==0){
        $typ_promo='baner';
    }
    elseif ($typ[0]==1) {
        $typ_promo='mailing';
    }
    //else echo "DUPA";
    $wykonawca=$typ[1];
    $sql = "insert into kampanie_log(data,ip,promocja,typ,wykonawca) values(NOW(),'".$_SERVER["REMOTE_ADDR"]."','".$promocja."','".$typ_promo."','".$wykonawca."');";
    mysql_query($sql);
#    print($sql);
#    echo mysql_error();    
}

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.