Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:6 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
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12167
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


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 4x, ostatnio: flowCRANE
Zobacz pozostałe 53 komentarze
Patryk27
A czy przypadkiem Coyote nie jest open source? :P
Riddle
A nie wiem nawet.
Marooned
/facepalm - zajrzyj do działu Coyote na forum. Ok. Proponuję zakończyć dyskusję w tym miejscu. Każdy kolejny komentarz tutaj może zostać nagrodzony krótką przerwą w dostępie do forum. Nie uprzykrzajmy życia innym z powodu niedociągnięć systemu. EOT.
JA
To zapewne sekretna wiadomość, trzeba czytać z góry, jak linie na płaskowyżu Nazca - http://screenshooter.net/1084042/xgiiyct
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
  • 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]

edytowany 1x, ostatnio: somekind
dzek69
Ja wiem, że tu był inny komentarz (no bo był?), ale fajnie to wygląda - Twój post i tylko Twój komentarz "Dziękuję mój największy fanie" :D
somekind
Ech, madmike się bawi jak umie. A jak nie umie, też się bawi. Co poradzić?
madmike
Hmm, zamiast się cieszyć, że dyskretnie zwraca Ci uwagę na błędy, a potem się równie dyskretnie "wycofuje", to jeszcze jakieś "ale" :]
somekind
Dyskretnie i publicznie? Już nie ściemniaj, jakbyś chciał dyskretnie, to byś wysłał PW.
siararadek
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 9 lat
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ę -_-

edytowany 1x, ostatnio: siararadek
Zobacz pozostałe 3 komentarze
RE
najwyraźniej ktoś nie pomyślał o DI, a zrobił wszystko na sztywno i bez przebudowywania całości niewiele dało się zrobić.
Shalom
Jedno z drugim niewiele ma wspólnego, bo taki Powermock umożliwia mockowanie absolutnie wszystkiego, z uwzględnieniem statycznej inicjalizacji, czy mockowania calych obiektów z wyłączeniem konkretnych metod (tak żeby można było testować tylko jedna metodę, niezależnie od innych). Dla chcącego nic trudnego ;)
RE
oh, o tym żem nie wiedział.
Shalom
moim faworytem jest tam metoda createNicePartialMockForAllMethodsExcept() ;)
siararadek
Myślałem, czy by mocka nie zrobić, ale testuję tutaj funkcjonalność przechodzenia drzewa parametrów refleksją, podpinania się pod liście i nasłuchiwanie ich OnPropertyChanged, aby mogły zmieniać inne parametry, które od nich zależą. I to działa, nawet bardzo dobrze. Tylko teraz potrzebuję testować działanie konkretnych zależności, w odniesieniu do modułu. A, żeby dostać parametry konkretnego modułu, to muszę wszystkie moduły załadować. I koło się zamyka.
lolq
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
  • 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


...
iooi
A tam nieskończona, w końcu się musi przekręcić.
lolq
do momentu przekręcenia przeglądarki xD
msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:4 miesiące
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.
edytowany 3x, ostatnio: msm
Endrju
"No one will need more than 8 letters in file name" Bill Gates. ;-)
Azarien
wygląda na to, że tak jest w całym windowsie, i to od 1995 roku :-)
iooi
zachowanie opisane powyżej (wildcardy) też jest całkiem interesujące
Demonical Monk
  • Rejestracja:około 17 lat
  • Ostatnio:11 miesięcy
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]


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 2x, ostatnio: Demonical Monk
unikalna_nazwa
polska dokumentacja jest tak pięknie tłumaczona że nie pamiętam kiedy ostatnio z niej korzystałem
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
  • 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.

lolq
ja miałem bugi w gg, że zalogowałem się, wyskoczył komunikat, że zostałem zalogowany jeszcze gdzieś indziej, ofc kilka razy czasami zmieniałem hasła, ale ten komunikat i tak losowo się pojawia, rzadko bo rzadko ale jednak :P głupie kufna
xeo545x39
GG tak już ma, ja też tak mam, nawet nie na oryg. kliencie.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • 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.


edytowany 1x, ostatnio: Patryk27
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?

Zobacz pozostałe 2 komentarze
msm
To że coś jest udokumentowane nie znaczy że nie jest WTF-em. Podejmowanie zupełnie różnych działań w zależności od typu argumentu to nie jest coś czego bym się jako programista głównie języków silnie typowanych spodziewał :>
ZJ
To bardziej się bierze z tego, że php zaczął jako język nieprzemyślany i początkowych błędów nie da się już wyeliminować. Jako osoba tworząca język masz do wyboru: zepsuć istniejące programy i przyzwyczajenia programistów, lub bawić się w kompatybilność wsteczną. Patrz np.na C++, gdzie okazuje się, że zmiana NULL z 0 na nullptr psuje praktycznie każdy większy program.
AP
Całe PHP to jest jedno wielkie WTF ;)
somekind
PHP zaczął jako język nieprzemyślany i jakoś skończyć się nie może. :(
Azarien
@Zjarek: i dobrze że psuje, bo takie jest zadanie nullptr – a nie tylko zmiana nazwy stałej. Każde miejsce, w którym nullptr psuje kompilację, oznacza WTF-a programisty.
MO
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 5 godzin
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ł.

edytowany 1x, ostatnio: moskitek
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 7 godzin
0

user image

edytowany 1x, ostatnio: Azarien
Marooned
A ponoć kanji Ci nie straszne ;-)
hauleth
Akurat to jest bardziej kantoński.
Marooned
Wiem, wiem.. akurat koreański, japoński i rodzinę chińskich mniej więcej w piśmie rozpoznaję.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 7 godzin
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

Zobacz pozostałe 2 komentarze
02
są coraz bardziej pro
ZJ
Ja kiedyś używałem w edytorze normalnych czcionek, ale niestety dużo kodu się na nich psuje, więc musiałem wrócić do czcionek o stałej szerokości. Trochę szkoda, bo wg mnie czyta się wtedy kod sprawniej.
Marooned
Pobili Comic Sans
AR
Kolejną granicę pobiją wtedy, kiedy zamiast zamknięcia nawiasu i średnika na końcu, będzie smutna emotka, z przymrużonym oczkiem.
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:około godziny
  • 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


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB
Zobacz pozostały 1 komentarz
Marooned
Mój WTF jakiś czas temu to brak switcha na stringach w Javie :D
MasterBLB
@unikalna_nazwa - switch nie nadaje się,bo w pewnym momencie jest sprawdzanie przedziału <'0','9'>,a 10 case'ów jeden pod drugim tak jakoś niezbyt szczęśliwie wygląda,zaś zrobienie znaków normalnie a wrzucenie cyfr do defaulta to jednak jest zaciemnianie funkcjonalności,nie wspominając już o uwrażliwianiu się na błędy
unikalna_nazwa
można jeszcze dać ifa w default ;P
adf88
Też nie jestem wyznawcą "never goto" nie mniej jednak w przypadku długiego switch'a nie bałbym się użyć 10-ciu case'ów, lepsze to rozwiązanie niż pozostałe.
MasterBLB
Bać się nie ma czego,ale tak jakoś to wizualnie nie teges wyglądało,dlatego pozostałem przy else ifach
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:20 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!!


somekind
Oj tam, programowanie liniowe to taki sam paradygmat jak każdy inny. ;P
KO
właśnie miałem o tym temacie napisać:)
MO
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 5 godzin
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
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
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.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
Zobacz pozostałe 2 komentarze
Koziołek
Optymalizacja polegająca na uwspólnieniu małych liczb. W Javie typ short i int pokrywają się w zakresie shorta. Można powiedzieć, że dla małych liczb zarówno JVM jak i interpreter pythona gwarantują, że nie będzie więcej niż jednej instancji małych liczb w pamięci. W ten sposób niezależnie ile razy "stworzysz" liczbę np. 1 to zawsze będzie to ten sam obszar pamięci.
msm
(==) - porównanie standardowe, w tym przypadku wartości. is - porównanie referencji. Reszta jak piszę Koziołek i 0x200x20.
bogdans
Zgoda, tylko dla Javy ta tablica "małych" obiektów ma naturalne granice (-128 do 127 dla Byte, Short, Integer, Long), a dla Pythona ma raczej księżycowe: The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object.
Koziołek
a bo to jest pytong... tam wszystko jest z księżyca...
ZJ
To nie robi takiego problemu, jak w Javie, ponieważ inty są immutable (jak str i long), czyli porównywanie referencji ma średni sens (zwiększysz liczbę o jeden i już masz teoretycznie inny obiekt, jeżeli przechowujesz gdzie indziej w pamięci tę liczbę to też praktycznie).
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
  • 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)

edytowany 2x, ostatnio: somekind
unikalna_nazwa
a to tak uzyskują to złudzenie szybkości działania :O a ja psioczyłem na androida bo apki na ipodzie wczytują się tak błyskawicznie
somekind
Nie no, coś Ty, po prostu iOS jest tak szybki, że łamie prawa fizyki i dane do pamięci wczytują się z nadświetlną. ;P
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Stacktrace
  • Postów:6821
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.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Zobacz pozostałe 6 komentarzy
Koziołek
tu nie ma winy IT czy biznesu. Po prostu w niewielkiej firmie (400 osób) kadra wodzowska rekrutuje się z molochów po 10k-30k luda i próbują wprowadzać podobne rozwiązania papierowe tzw. procedury. Tyle tylko, że sami w nich grzęzną.
vpiotr
Procedury procedurami ale emaile udrażniają wiele spraw. O ile oczywiście ktoś je czyta i na nie reaguje. Bo są też typy które twierdzą że nie mają czasu ich czytać. Przy takich ręce opadają...
Koziołek
Procedury wprowadza się po to by zejść z maili. Niektórzy jednak nawet maili z trackera nie czytają... bo po co :)
vpiotr
Aaa, czyli do procedur macie jakiś system oprócz Outlooka?
Koziołek
całe dobrodziejstwo inwentarza od IBMa z Lotus Notes na czele. Do tego dochodzi jeszcze jakiś serwer dokumentów i duuużooo dupereli. Generalnie jakbym pracował w firmie zatrudniającej ponad 10k ludzi. Przy czym tu chodzi o mentalność wodzostwa, a nie narzędzia czy procedury.
iooi
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 11 lat
  • Postów:573
0

wtf.PNG

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

  • wtf.PNG (100 KB) - ściągnięć: 188
edytowany 1x, ostatnio: iooi
Demonical Monk
  • Rejestracja:około 17 lat
  • Ostatnio:11 miesięcy
0

Women were the reason I became a monk - and, ah, the reason I switched back...
MO
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 5 godzin
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.

Zobacz pozostałe 3 komentarze
Shalom
To fakt, ale zwykle jak ktoś chce zrobić delete na wszystkim (i sie dziwi że nie zniknęło) to w zamyśle ma przywrócenie tabeli do stanu początkowego :)
MO
po prostu zdziwił mnie fakt że zliczanie wierszy na pustej tabeli zajmuje 12 minut
Koziołek
W prostych przypadkach tak. U nam na przykład skąpiradło z zarządu kupiło nam Oracle w wersji Standard i musieliśmy emulować tabele partycjonowane. W takim wypadku mam 5 identycznych tabel, ale nie mogę zrobić truncate na tabeli bo mi się m.n. widoki materializowane posypią. No, ale to jest patologia.
MO
tak, racja, w mysql to optimize table
AR
poza tym, zdaje się że truncate robione jest poza transakcją (ewentualną).
siararadek
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 9 lat
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...

edytowany 3x, ostatnio: siararadek
Koziołek
traf kiedyś na wynik konwersji COBOL > Java. Klasa krótsza niż 4k linii jest podejrzana, bo się pewno coś nie do końca przeniosło.
Shalom
@siararadek ale to jest parser przecież. Tego kodu nikt nie pisał z palca tylko wygenerował go na podstawie pewnej gramatyki. Pisałeś kiedyś kompilator? Zobacz sobie co taki ANTLr generuje i zobaczysz że właśnie tak to wygląda.
Azarien
istnieje coś takiego jak J# (Java pod .Net), a wynikowy kod CLR można zdekompilować do C# np. Reflectorem.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około godziny
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


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
siararadek
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 9 lat
0

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

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
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ć?

edytowany 1x, ostatnio: vpiotr
Koziołek
Tak. Taki urok COBOLa.
Demonical Monk
  • Rejestracja:około 17 lat
  • Ostatnio:11 miesięcy
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

;]


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
  • 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. ;)

edytowany 2x, ostatnio: somekind
Zobacz pozostałe 5 komentarzy
xeo545x39
Hmm.. Dlaczego idiotycznie? Może, żeby pokazać niewiedzę profesorów? Ile pkt? A tego to nie wiem :D Pewnie dużo.
CI
Jak widzę, co moi koledzy oddają, to to jest 100x lepsze. A co oddają ? Wiadomo - kalkulatorek, albo quiz na if(). Ale co wymagać, jeżeli wykładowca to człowiek, który nie potrafi korzystać z IDE. Raz, że korzysta z DevC++, dwa, gdy wywala mu błąd (np. zmienna nie jest zadeklarowana), to nie wie co robić :D
somekind
Temat projektu miałem narzucony przez prowadzącego, więc kalkulatorka nie można było napisać... Ale funkcja "poteguj" to już przegięcie. :D
Azarien
ja bym się głównie przyczepił komentarzy typu „koniec ifa zmiany wartości” — jeśli pojawia się potrzeba pisania takich, to znaczy że należy kod przebudować ;-)
somekind
Może to też znaczyć, że kod edytowało się w notatniku, w którym nie widać takich rzeczy. :)
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 :-)

RE
Kompilator powinien zabronić rekurencji, bo ludzie robią literówki? Aha.
Koziołek
bo to nie jest problem kompilatora... zazwyczaj znajduje się on gdzieś pomiędzy klawiaturą, a krzesłem...
somekind
Nie zdziwiłbym się gdyby Resharper albo inne tego typu narzędzie przed takimi błędami ostrzegało.
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();    
}
vpiotr
osłabia mnie ten kod... nie dość że bez bindowania, to nieokreślona wartość typ_promo i konwersja w locie typ[0] na int. To nie WTF tylko słabiutki kod. Ale dokładnie wiadomo dlaczego tak wygląda (QA & SQL Injection to nieznane lub zignorowane terminy)
iooi
Nie trzeba się dużo naszukać, żeby dowiedzieć się, jaka to firma.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)