Programistyczne WTF jakie Was spotkały

0

Mojemu koledze przytrafiło się "Przekleństwo Copyego-Paste'a" - chciał wkleić z internetu ciąg komend do shell'a, gdzie explorer to nazwa wykonywalnego programu:
Miał wkleić:

$ explorer
(...)

wkleił:

$ >explorer
(...)

Oczywiście skasowało mu to program explorer (rozmiar 0 bajtów). Ups :D

0

Po świątecznej przerwie odpalam svn up na projekcie (pod Windows) by pobrać zmiany kumpla (Linux) aż tu:

Can't move
 '\NazwaProjektu\.svn\tmp\svn-C0E72D3D' to
 '\NazwaProjektu\watch?v=9bZkp7q19f0': The
 filename, directory name, or volume label syntax is incorrect.

to watch?v=9b... jak rodem z Youtube.. no to sprawdzamy:


gangnam style.. WTF?!

Pisząc, że boję się otworzyć lodówkę by nie zobaczyć Gangnam style nie myliłem się aż tak bardzo..
Cały HTML z YouTube jako plik watch?v=9bZkp7q19f0 :]

0

Gdzieś przy okazji wspominałem, że pracuję nad totalnie dupiastym kodem (zrobionym przez moją ulubioną firmę, nawet wrzucałem tutaj przykłady ich CSS: selektor { left: right; }), zabiera toto ponad 60MB pamięci na jednej z podstron, przed moimi modyfikacjami na localhoście wykonywała się ta podstrona ok. 90 sekund, itd. itd. Na tej jednej z podstron było ok 300 zapytań do bazy. Po moich modyfikacjach było 60, nie wgłębiałem się w resztę dlaczego tak. Na moje oko do 15 zapytań byłoby wskazane jak na tego typu stronę (to wszystko co robię to jest jeden wielki backend), ale niech będzie.

Dziś zainteresował mnie mały lag przy otwieraniu innej z podstron. Na localhoście da się zauważyć ok 3-4 sekundy zanim przeglądarka dostanie HTML. Sprawdzam najbardziej istotne (moim zdaniem) zapytanie na stronie - w phpMyAdmin wykonało się w 0,05s. No to nie jest źle. Robię sobie więc zrzut wszystkich wykonanych zapytań wraz z czasem wykonania, żeby poszukać co jest nie tak. I okazuje się, że żadne zapytanie nie trwa za długo - jest ich po prostu 1938 o.O

0

Mamy w firmie kod, który został napisany na nasze zamówienie w innej firmie. I takie kwiatki w kodzie (uwagi Leada do reszty):

                    //CO TO KURWA JEST???????
                    //if (!settings.ProductStatesPresentationType.HasValue || settings.ProductStatesPresentationType.Value == 0)
                    //{
                    //    canSell.StockLevel = 0;
                    //}
                    /// pokazuj kurwa albo nie, a nie jakieś pierdolone na wyczerpaniu
                    //if (webSite.WebSiteTypeId == (byte)WebSiteTypeEnum.WebsiteAdvertisingWithStore)
                    //{
                    //    ViewBag.BelowStocks = (config.ShowBelowStocks != true && product.Stock <= 0);
                    //}
             catch 
             {
                 // nie chuj nie rozumiem czmu tutaj ma być połykane, ale chuj nie bede drązył tematu kurwa!!!!!!!!!!
             }

Atmosfera w firmie musi być genialna...

0

Dezinstalator, który wrzeszczy o brakujący każdy z tysięcy plików, po tym jak aplikacja została skasowana na chama:

Bez.jpg

0

http://stackoverflow.com/questions/8790690/component-registration-exception-with-windsor

Ostatnia linijka wklejonego Exception jest zabawna. ;)

0

Mamy jedną formę, na niej dwa panele, Splitter oraz StatusBar, mniej-więcej tak:
img1.png
(splitter rusza się góra-dół, oczywiście)
Przy ruszaniu splitterem, do pliku zapisywana zostawała wysokość panel2, aby przy uruchomieniu ponownie programu nie trzeba było regulować tego od nowa.
Tak więc mam kod w OnCreate formy:
Panel2.Height := Settings.getInteger(sSplitter1); (w uproszczeniu)
I nagle WTF, bo po wykonaniu tego kodu niby całość wygląda dobrze (panele mają odpowiednie wymiary, splitter na miejscu), lecz nie można poruszać już splitterem w żadną ze stron :|
...
Okazało się, że wersja po wykonaniu tego kodu wyglądała tak:
img2.png
Z racji tego StatusBar'a nie można było poruszać splitterem, na czego rozwiązanie minęło mi pół dnia (już nawet grzebałem po kodach źródłowych kontrolek w poszukiwaniu czegoś, co pozwoli mi "naprawić" ten błąd)... bo jak zwykle patrzałem w kod, a nie przyglądałem się formie po jego wykonaniu.
Zmylił mnie także fakt, że w Delphi 7 ten kod jeszcze działał poprawnie, a już w Lazarusie takie rzeczy się dzieją; problem rozwiązałem poprzez ręczne przesuwanie tego StatusBara na sam dół formy.

0

jeden z moich znajomych poprosił mnie o pomoc z PHPem. Wziął od kogoś innego w opiekę sklep napisany przez kogoś innego. Nagle zauważył, że strona się nie wyświetla i wypluwa kod źródłowy PHP! Napisał do mnie, dał mi dane dostępowe, abym się tam rozglądnął. Stworzyłem plik test.php w którym umieściłem phpinfo(). Wszystko było ok. Przekopiowałem do niego to co było w index.php i zonk, znowu wypluło kod PHP zamiast go interpretować. To zacząłem wklejać linijka po linijce i patrzeć na której się wysypuje. Gdy doszedłem do pierwszego require, skrypt się wysypał. AHA! Zaglądam do pliku, który wczytuje za pomocą require a tam są 2 syntaxerrory (źle zamknięte komentarze, wyglądało to tak jakby ktoś źle zastosował metodę copypasta), poprawiłem to i strona ruszyła.

WTF? Czyli jak serwer jest źle skonfigurowany to w przypadku błędu składni pluje kodem źródłowym?

0

Historia rozgrywa sie z uzyciem PHP. Nie wiem czemu, ale skrypt jedyne co zwraca to znak zapytania mimo ze kod na localu dziala. Zadnego bledu skladni, zadnego komunikatu, nic.
Po pol godzinie szukania i testowania w koncu zobaczylem 8200 "spacji", ktore w rzeczywistosci okazaly sie byc NULLami (nie mam pojecia skad i dlaczego sie tam znalazly). Jeszcze bardziej nie mam pojecia dlaczego CZASAMI wysypuje to skrypt w taki dziwny sposob. Po usunieciu NULLi dziala.

Co ciekawe:

php 5.4.4 - DZIALA OK (moj local)
php 5.3.13, 5.3.20 - NIE DZIALA

Wiecej info:

$ cat wysyp_php.php 
<?php
echo 'x';
?>//[tutaj sa te nulle]
y
$ wc -c wysyp_php.php  //(liczba bajtow pliku)
    8254 wysyp_php.php
$ php wysyp_php.php 
?
$ hexdump wysyp_php.php 
0000000 3c 3f 70 68 70 0a 65 63 68 6f 20 27 7a 27 3b 0a
0000010 3f 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0002030 00 00 00 00 00 00 00 00 00 00 00 0a 0a 6e      
000203e

Sprobowalem tez usunac te NULLe i zostawic tylko jednego. Welcome to the PHP world; efekt: wiecej znakow zapytania!

$ wc -c wysyp_php2.php 
      23 wysyp_php2.php
$ php wysyp_php2.php 
?????????
?
$ hexdump wysyp_php2.php 
0000000 3c 3f 70 68 70 0a 65 63 68 6f 20 27 78 27 3b 0a
0000010 3f 3e 00 0a 0a 0a 79                           
0000017

Zalaczam pliki gdyby ktos chcial sie pobawic.

Magia PHP.

0

Wgrywam sobie stronkę na serwer klienta - shared www na home.pl - a więc jestem sceptycznie nastawiony, bo to duży hosting typu "lubię przepłacać" z panelem w którym nic nie ma, albo nie idzie tego odnaleźć. na początek oczywiście niespodzianka, mój prosty unpacker plików zip (wgrywam zawsze na serwery zipa i rozpakowywuję przez skrypt w php) coś płacze o braku możliwości otworzenia sesji (bład zapisu do tymczasowego pliku). olałem, bo skrypt właściwy ogarnia sobie własną ścieżkę na sesje i możliwe, że zadziała. na ftp po rozpakowaniu odkryłem, że ścieżka o którą płakało poprzednio - istnieje, pliczek też (tylko pusty). nieważne. wgrywam - odpaliła się strona. yay!

Wchodzę do panelu administracyjnego - zalogowało się i po odświeżeniu (bez danych POST) - jest sesja, no to git. wchodzę gdzieś dalej - i tutaj powinna nastąpić podmianka poprzez ajax części strony na inną. u mnie natomiast robi się totalnie biała, pusta strona. WTF myślę - nawet jakby się coś wywalało po stronie serwera - to jakim cudem po aktualizacji jakiegoś DIVa robi mi białą stronę? zaglądam w żądania - żądanie ajax poszło pod jakiś adres, dostało przekierowanie i po przekierowaniu jest ładnie cała treść HTML (rzuciłem tylko okiem, że jest długi kod HTML).

Myślę - może to Opera? Nie byłem w stanie wykminić jak miałoby coś takiego nastąpić, ale warto sprawdzić inną przeglądarkę. W FF to samo. Ale moją uwagę przykuło "Wysyłanie żądania do hit.gemius.pl", które zostało na dole strony. WTF? Co ten home.pl dokleja reklamy na płatnych hostingach czy o co chodzi?
Zwrotka pierwszego żądania (przed przekierowaniem) zawierała tylko link i nic tam ekstra nie było, dlatego też drugiemu się nie przyjrzałem (temu długiemu).

Tam na końcu znalazłem to: http://i.imgur.com/yciSfiE.png

Nie mogłem uwierzyć własnym oczom!
Home.pl tak po prostu dokleja jakieś statystyki do stron.

Szybkie Google i okazuje się, że nie tylko ja miałem taki problem - gdzieś podobno się da to wyłączyć to udaję się do panelu. Przeklikałem 3 minuty - nie znalazłem. No to biorę się za opieprzanie supportu za ich dziwne pomysły, w międzyczasie kumpel [w sumie ja byłem podwykonawcą] grzebie po panelu za tymi statystykami. Okej, ja napisałem ticketa, kumpel po 11 minutach klikania odnalazł wyłączenie tego czegoś.

Ciekawostka: Zapytałem się supportu, że o ile taka prosta integracja statystyk może być przydatna, to dlaczego:

  1. doklejają to także do odpowiedzi na żądania ajaxowe [każda webaplikacja się przez to wywali, szczególnie jak oczekuje JSONa w odpowiedzi, czy tam coś innego niż sam HTML. w sumie na HTML przy podstawieniu będzie się robić biała strona bo:
  2. korzystają z paskudnego document.write do wstawiania czegokolwiek do treści strony

Odpowiedź była prosta:

Specyfika działania skryptu została opracowana przez firmę stat24.pl i licencja wymaga aby skrypt działał w konkretnych warunkach.

Niby głupota, ale mnie takie zagrywki zniechęcają. WTF był mocny po ujrzeniu tego

0

Z tym stat24 to są niezłe jaja, potwierdzam.

Miałem to samo z białym ekranem i AJAXem i nie mogłem dojść o co chodzi.

Dodam, że jest jeszcze kolejny babol wywoływany przez stat24. Ostatnio pół dnia męczyłem się grzebiąc w kodzie który był poprawny. Otóż na losowych stronach, PHP się zawieszał w ten sposób, że przesyłał równo 64kb danych i wisiał tak około 2-4minut, a potem przesyłał resztę. Cholernie dziwna sprawa. Wyłączyłem stat24 i problem się więcej nie pojawił. Widocznie stat24 chciał dokleić swój skrypt po przepełnieniu buforu OUTPUT (64kb z tego co wiem na systemach 32bitowych) zamiast po wykonaniu całego kodu. Mało tego, działo się to w losowych przypadkach.

Tak więc gdyby ktoś jeszcze miał podobny problem to STAT24 jest winowajcą wszystkich problemów na home.pl

0

Nacisnąłem Ctrl+C żeby przerwać kompilację:

qquicklistaccessor.cpp
qquicktimeline.cpp
qquickpixmapcache.cpp
qquickbehavior.cpp
NMAKE : NfMaANNtKMMaEAAl KK :EEe   rf::rNa  oMtffrAaaa KlttUE aa1 ell0:r  5 ree8forr:arrr t ootaUrrN
el1  rM 0UUmeA511irK800nrE:55ao  88tr:t::e  e  dUrftt 1maeeb0itrry5namm 8aliiu:t nns eeaaetdrttre re
e
rboddSmyr  ti  bbonuUyypas1  .te0uu
erssd
ee SrrbNt

yMoSS ApttuK.oosE
ppe ..r:


Stop.

C:\qt\qt-everywhere-opensource-src-5.0.1>
0

hmm palec nie trafił...i zostało tylko jedno (mysql):

delete from translation where id - 23102

0

Może nie do końca takie programistyczne WTF, bo nie będzie ani linijki kodu, ani ja nikomu w kod nie zaglądałem, ale..

Dotarłem dziś na stronę Biura Prasowego GG. Jako, że w przeglądarce mam aktualnie pluginy na żądanie zaintrygował mnie taki widok: http://i.imgur.com/XhFmWXA.jpg
Myślę sobie - pewnie wstawili jakieś animowane g..., zapewne z reklamą, jako nagłówek każdego z wpisów. Z ciekawości sobie kliknąłem: http://i.imgur.com/Ki6R67k.jpg

I tu właśnie następuje WTF. CO KONKRETNIE miał klepiący stronę na myśli, robiąc zwykły link nagłówkowy we Flashu? Jaka jest tego przewaga nad zwykłym <a rel="nofollow" href="">?
Ja za to widzę oczywiste wady:

  • Strata czasu
  • Zamulenie stronki
  • Ci bez Flasha (mobilne) nie widzą nagłówków

Edit: W sumie po przemyśleniach - jeżeli oni w ten sposób wykonują każdy szczegół swojego oprogramowania to nie dziwne, że to żre pamięć i cpu ;)

0

Możliwe, że to dlatego, że Flash ma w miarę jednolity rendering czcionek - chociaż nie znam się na temacie. Z drugiej strony, w przypadku gdy ktoś chciał żeby dany napis pokazał się dokładnie tak jak zażyczył sobie projektant, to od zarania dziejów używano GIF albo PNG, a nie Flash.

0

Właśnie się zdziwiłem, że CSSowy :first-letter nie działa na wszystkie znaki. Niby fakt, że nawet w nazwie ma letter ale nie do końca rozumiem przesłane programistów do takiego ograniczenia.

Miałem akurat tekst w stylu + item i chciałem powiększyć plusik...

0

Co prawda wytłumaczalne, ale taki lekki fuckup wg mnie w JavaScript:

>>> var x = '1,3,7'.split(',')
>>> x.push(5)
>>> x.join(',')
"1,3,7,5"

brzmi fajnie, ale

>>> var x = ''.split(',')
>>> x.push(5)
>>> x.join(',')
",5"

blah...

0

Hmm, w sumie wydaje mi sie to logiczne. A czego bys oczekiwal?
Python zachowuje sie tak samo, ale groovy nie ;d

A nie, jednak tak samo ;d

Jakby nie bylo '' jest pelnoprawnym stringiem ktory nie ma przecinka, wiec split po nim zwraca ten sam element. Jesli chcielibyscie inaczej to byloby niespojne i byscie marudzili ze zonk jest gdzie indziej. Przyklad (pseudokod):

'abc'.split(',').append('5').join(',') - tutaj oczekujecie 'abc,5'
''.split(',').append('5').join('5') - ale tutaj tylko '5'?
Czyli a 'abc', przy czym zaden nie ma przecinka, sa w czyms inne? To mi troche smierdzi traktowaniem jak null albo inny pomysl.

0

Pasjans w windows 8 zajmuje prawie 100 MB

1

To ja znowu javascript:

>>> parseInt("0");
0
>>> parseInt("00");
0
>>> parseInt("01");
1
>>> parseInt("07");
7
>>> parseInt("08");
0
>>> parseInt("09");
0
>>> parseInt("010");
8
>>> parseInt("011");
9
>>> parseInt("017");
15
>>> parseInt("018");
1
>>> parseInt("019");
1
>>> parseInt("020");
16
>>> parseInt("021");
17
>>> parseInt("022");
18

Tak, zero oznacza zapis ósemkowy, pierwszy niepoprawny znak i kolejne są odrzucane przez parseInt, ale wołałbym bez tego magicznego ficzera. Ogólnie to ja nie programuje na jakimś hardkorowym poziomie, więc od zawsze zapis ósemkowy uważam za zbędny. Jeszcze HEX ok, ale to..
A WTF miałem, bo piszę sobie taką walidację i ma to też sprawdzenie, że podana liczba jest za duża/za mała. I wpisuję 03 - fajnie, 06 - fajnie, potem wpisałem 08 i nie patrząc na wynik przerzuciłem się na coś innego, potem wracam do tego i widzę, że mi się coś nie zgadza (bo 08 wg skryptu to było za mało, w porównaniu do 3). Uświadomienie przyszło szybko, ale wciąż.. Ten zapis ósemkowy..

0
#include <dshow.h>

efekt:
dsound.h: No such file or directory.

To znaczy że dali w pakiecie plik dshow.h, ale nie ma żadnej szansy go użyć, bo brakuje wymaganego przezeń dsound.h.
To jest Dev-C++. Ten niby nowy, "poprawiony".

0

Wiem, że to nie jest programistyczne, ale chcę się tym podzielić:
otóż openSUSE 12.3 RC2 zaliczyło niezłego faila:

RC2 is too big by 6 megabytes for the 4.7gig dvd.
4,706,009,088 bytes but standard dvd is 4,700,000,000 bytes

0

http://tripcard.pl/
Kliknijcie w logo. Nic strasznego, ale czemu to ma służyć?

0

Miałem sobie własny kod do walidacji javascript. Bardzo brzydka metoda (ale to dawno pisałem, działało dobrze, w końcu zdecydowałem się ulepszyć), mianowicie kod pobierał z ukrytego diva z formularza zestaw regułek, zapisanych w tym ukrytym divie w postaci tekstowej. Wszystkie formularze na stronie obsługiwane są przez jedną funkcję, która testuje funkcją walidującą formularz i potem decyduje czy puścić dane czy nie.

Funkcja walidująca do tej pory zwracała:

  • false w przypadku kiedy wszystko jest ok
  • obiekt w listą błędów w przypadku, kiedy był jakiś błąd

Wymieniłem funkcję walidującą na taką, pobierającą regułki z obiektu (który definiuję zaraz po formularzu), w dodatku funkcja zwraca:

  • true kiedy wszystko ok
  • obiekt, jak błąd

W funkcji obsługującej formularze naniosłem poprawkę, żeby "true" traktował jako powodzenie.

Ok, wyrzucam z jednego formularza tekstowe regułki, dodaję w formie obiektu, testuję - jest, działa aż miło!

Otwieram inną podstronę - z ciekawości klikam submit - i zonk. Pokazuje mi błędy wynikające z przeparsowania starych regułek o.O Stary kod był w komentarzu (nazwy funkcji te same), więc dla pewności go usunąłem całkiem - dalej to samo. "Działają" oba formularze, pomimo innej metody zapisu regułek używania tych samych plików, gdzie kod od parsowania regułek tekstowych jest wyrzucony całkiem. Nie może być to problem z cache, a nawet gdyby przeglądarka miała załapać nową wersję pliku na jednej podstronie, a potem wrócić do wersji z cache - to tu to odpada, bo cała strona to aplikacja ajaxowa, więc skrypty javascript ładowane są raz.

Póki co - nie wiem o co chodzi. Od godziny powinienem był się od tego oderwać, ale po prostu chciałem to skończyć i teraz stwierdzam, że to już jednak pora oderwać się od klawiatury.

Edit: Jednak jestem debilem.
Stare regułki nie były parsowane, nowych nie podałem, więc walidacja przepuszczała formularz bez niczego - to walidacja server-side zwracała te błędy :/ Jeszcze może gdyby nie odbywało się to w takim ułamku sekundy, że nie widać ajaxowego loadera - to bym się zorientował. Tytułowe WTF było, ale, ech, moja wina..

0

Ciągle powracająca na pulpit po każdej aktualizacji, ikonka Adobe Readera.
No na jakiego dziada mi Adobe Reader na pulpicie. Jak chcę otworzyć PDF-a to klikam na PDF-a.

0

Znalezione dzisiaj w kodzie:

            image.RotateFlip(RotateFlipType.Rotate180FlipNone);
            image.RotateFlip(RotateFlipType.Rotate180FlipNone);

I nikt nie wie po co.

0

Haskell mistrz liczb:

**Prelude>** min 9.000000000000001 9.1
9.000000000000002
0

Niezbyt sprytnie to przemyślałeś, masz tu coś 'ciekawszego' (a tak naprawdę chodzi o to samo):

Prelude> 9.000000000000001
9.000000000000002
0

System bydgoskiej karty miejskiej to jeden wielki WTF. Miało być łatwiej i szybciej ale coś im nie wyszło.

  • Po zakupie biletu przez internet i tak muszę dymać do BOK'u albo jakiegoś automatu żeby zakodować bilet na karcie
  • Przy zakupie nie mogę dowolnie sobie wybierać ulgi, muszę korzystać z tej którą zaznaczyłem w podaniu o kartę. Czyli gdy skończy Ci się ulga musisz dymać do BOKu żeby zaktualizować swoje dane
  • Przypadek z dzisiaj, będąc w trakcie płatności tknęło mnie że źle wprowadziłem datę od której mój bilet ma być ważny. Anulowałem płatność i teraz ten bilet wisi mi w jednej kieszeni jako "Oczekuje na płatność" i nie mogę nic z nim zrobić, nosz kurw.....ani zapłacić, ani anulować, ani edytować. Czyli znowu muszę lecieć do BOKu i pewnie znowu jakiś formularz wypełnić.

Że też ktoś płaci za takie pokraki.

edit
Kurde, a ja myślałem że tylko w Bdg takie kwiatki (patrz komentarze i posty niżej).

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