Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
LN
  • Rejestracja:około 16 lat
  • Ostatnio:12 miesięcy
  • Postów:1398
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ć:

Kopiuj
$ explorer
(...)

wkleił:

Kopiuj
$ >explorer
(...)

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

edytowany 1x, ostatnio: [losowa nazwa]
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 21 godzin
  • Lokalizacja:Poznań
0

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

Kopiuj
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 :]


edytowany 1x, ostatnio: Marooned
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:4 dni
  • Lokalizacja:Rzeszów
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


Sarrus
LOL. To jakaś firma robiła? Wygląda jakby to studenci na zaliczenie robili.
dzek69
niestety. istnieją od dawna i istnieją do dziś. miałem do czynienia z ich kodem wielokrotnie, za każdym razem - porażka. apostrof w GET/POST wysypuje stronę, widziałem nawet, że goście używając Smartów potrafili korzystać z tego tylko do generowania nagłówka i stopki, ALE jeżeli jakieś dane miały być dynamiczne - to używali tagu {php} i to jeszcze raz nawet pętlę zrobili w {php}, co chwila zamykając i otwierając tryb php, żeby dopisać parę znaków pomiędzy zmiennymi.
no_solution_found
a to jeszcze nic, ja pracowałem przy kodzie, gdzie na jednej podstronie wykonywało się około 6 tyś zapytań z czego było widać 20-30 rekordów, a resztę było wcześniej pobierane, żeby wyświetlić jakieś statystyki z tych danych... Kilka dobrych joinów i ilość spadła to koło setki i dalej już w tym nie grzebałem, bo takie przyśpieszenie jest chyba satysfakcjonujące, co nie? Nawet specjalnie zmienili hosting na lepszy, bo przekraczali limit zasobów na vhoście
dzek69
my się też przenosimy na dedyka z nazwy.pl, bo tam memory_limit to 64MB, a kiedyś się wywalało przez to (choć najgorszą z podstron ogołociłem z części danych (które i tak były w popupie po najechaniu, w dodatku w cholerę danych jest tam nadmiarowych - te same wpisy w zasadzie) i doczytuję je ajaxem - co pozwoliło na zmniejszenie zużycia o 20MB :D). nigdy nie spodziewałem się, że można spłodzić i SPRZEDAĆ coś takiego..
KR
Oj, też kiedyś poprawiałem jakiś serwis zrobiony przez "profesjonalną firmę". Podobne problemy. Tylko tam pisał kod jakiś fan widoków - zapytania w PHP były proste, ale po rozwinięciu okazywało się, że mieli złączenia ponad 20 tabel.
siararadek
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 9 lat
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):

Kopiuj
                    //CO TO KURWA JEST???????
                    //if (!settings.ProductStatesPresentationType.HasValue || settings.ProductStatesPresentationType.Value == 0)
                    //{
                    //    canSell.StockLevel = 0;
                    //}
Kopiuj
                    /// pokazuj kurwa albo nie, a nie jakieś pierdolone na wyczerpaniu
                    //if (webSite.WebSiteTypeId == (byte)WebSiteTypeEnum.WebsiteAdvertisingWithStore)
                    //{
                    //    ViewBag.BelowStocks = (config.ShowBelowStocks != true && product.Stock <= 0);
                    //}
Kopiuj
             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...

edytowany 1x, ostatnio: siararadek
Zobacz pozostałe 3 komentarze
dzek69
ktoś ma nerwicę jak moja szefowa, ona nie klnęła, nie znała się na robocie, ale maile, gdzie temat brzmiał "!!!!!!!!!!!!!!!!!!!!!!!!!!", albo nawet "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", czasem z kolei "??????????!"
Johnny_Bit
Autoresponder z cytatem z Pratchetta. "Oso­by używające więcej niż 3 wyk­rzyk­ników lub py­taj­ników to oso­by z za­burze­niami włas­nej oso­bowości."
deus
Oficjalne oświadczenie: to nie ja byłem tym leadem.
Albaniusz
Czy obicie mordy leadowi może być odebrane za nietakt towarzyski?
vpiotr
Też mamy takiego frustrata w pracy... Sam pisze "samokomentujący się" kod którego nie można zrozumieć. W ogóle kiedyś myślałem że "how to write unmaintable code" to żart, ale teraz spotykam ludzi którzy chyba to wdrażają na serio.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 godzin
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

  • Bez.jpg (30 KB) - ściągnięć: 145
edytowany 1x, ostatnio: Azarien
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Wrocław
0
Zobacz pozostały 1 komentarz
Azarien
Proszę o wytłumaczenie dowcipu.
somekind
D:\Call.of.Duty.Modern.Warfare.3-RELOADED\SportsStore\SportsStore\SportsStore\Global.asax.cs:31 - nie wpadłbym, żeby źródła programu trzymać w katalogu jakiejś gry. ;)
Azarien
Widziałem to, ale nie zwróciłem uwagi, pewnie pomyślawszy że chodzi o źródła gry...
mcoder
Może pisze trainer do gry?
somekind
W postaci aplikacji webowej?
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
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.


edytowany 1x, ostatnio: Patryk27
Azarien
miałem podobne cuda z formą przeniesioną z Visual Studio 2010 do 2012...
no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:2 dni
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?


Zobacz pozostałe 2 komentarze
dzek69
musiałbyś pokazać taki kod źródłowy z obcięciem tego, co zbędne, ale wtedy sam dotarłbyś gdzie KONKRETNIE jest problem
no_solution_found
w jakim szanującym się języku programowania stałoby się takie coś? Rozumiem jakby interpreter nie ruszył, ale pluć kodem na lewo i prawo w przypadku takiego błędu?
dzek69
To nie błąd jakiś sam z siebie tylko programista debil. IIS-a zapewne też skonfigurujesz, żeby jakieś aspx-y trakował jako txt do wyświetlenia ;]
no_solution_found
ale on pliki php interpretował normalnie, tylko gdy był błąd w składni, to robił takie rzeczy
vpiotr
administrator pewnie po cichu zupgradowal PHP-a a ten zaczął być bardziej restrykcyjny. W języku kompilowanym taki błąd wyskakuje od razu, w skryptowym - różnie, czasami dopiero po wywołaniu błędnej funkcji.
Coldpeer
Moderator
  • Rejestracja:około 19 lat
  • Ostatnio:około rok
  • Lokalizacja:Londyn
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:

Kopiuj
$ 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!

Kopiuj
$ 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.


<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>
edytowany 4x, ostatnio: Coldpeer
Zobacz pozostałe 3 komentarze
Coldpeer
O racja, dostalem blad skladniowy (ale nadal nulle wygladaja jak spacje) jak usunalem ?>. Niemniej taki Notepad++ pokazuje nulle jako znaczek NUL zamiast spacji niezaleznie od sytuacji, co jak widac moze byc uzyteczne.
Demonical Monk
Prawdopodobnie dlatego, że PHP to upośledzony język szablonów który ktoś postanowił przerobić na język "ogólnego użytku". Jak wyszło wszyscy widzą. Development ichniej VMki swoją drogą mnie przeraża, wystarczy poprzeglądać commity i to: http://monk.4programmers.net/php.txt
no_solution_found
@bogdans emacs nie pokazuje, a to jest chyba porządny edytor, co nie? :) sublime text oraz geany otwierają ten plik jako plik binarny, dziwne...
bogdans
@no_solution_found, wprowadziłem nowe kryterium porządności. Skoro emacs nie pokazuje nulli , to nie jest porządny. ;P
Azarien
Emacs, jak każde dzieło Stallmana, to jedno wielkie WTF. ;-)
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:4 dni
  • Lokalizacja:Rzeszów
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


edytowany 2x, ostatnio: dzek69
Johnny_Bit
Pliz pliz pliz, powiedz że to na 100% prawda... Bo widzisz: shared hosting może mieć statsy które NIC nie zmieniają w stronie. ba - są kompletnie przeźroczyste dla serwisu bo działają w oparciu o serwer (np. apache, nginix). Jak to prawda na bank co piszesz to czemu home jeszcze ma klientów...
dzek69
Ale serwerowe statystyki nie zbierają rozdzielczości ekranu i tym podobnego stuffu dostępnego tylko z poziomu języków client-side - a to w sumie przydatna statystyka. Łatwiej też liczyć długość wizyty na stronie, bo javascript może wysyłać ping do serwera statystyk i wiemy kiedy zakładka jest zamknięta, gdzie większość czasu latał kursor myszy, ple ple ple, zresztą myślę, że dobrze wiesz ;)
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

Sarrus
Jak będę kiedyś szukał hostingu to już wiem gdzie na pewno nie brać.
Azarien
@Sarrus: IMHO lepiej dopłacić i mieć VPS na którym masz root-a i nikt ci reklam czy statystyk nie dorzuci.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 godzin
0

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

Kopiuj
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>
KR
A programmer had a problem. He thought to himself, "I know, I'll solve it with threads!". has Now problems. two he
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:6 minut
0

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
somekind
PIT na komórce? Hardcore...
MO
  • Rejestracja:ponad 18 lat
  • Ostatnio:około godziny
0

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

delete from translation where id - 23102

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:4 dni
  • Lokalizacja:Rzeszów
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 ;)


edytowany 1x, ostatnio: dzek69
somekind
Po prostu świat jest pełen flashowych fanatyków, którzy wpychają to g**no wszędzie, gdzie się da.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 20 godzin
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.


"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.
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 21 godzin
  • Lokalizacja:Poznań
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...


ShookTea
Kompletnie bez sensu to coś.
Marooned
The first letter of an element is not necessary trivial to identify: https://developer.mozilla.org/en-US/docs/CSS/::first-letter
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 21 godzin
  • Lokalizacja:Poznań
0

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

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

brzmi fajnie, ale

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

blah...


Koziołek
Brak kontroli typów się kłania. W drugim przypadku masz tablicę jednoelementową (jedyny element pusty string). Swoją drogą JS jest dziwny...
aurel
No ej, ale co ty byś chciał otrzymać z ''.split(','), jak nie jednoelementową tablicę? Gdyby zachowało się inaczej, to odebrałabym to jako fuck up... Tak jest logicznie i składnie.
Marooned
skoro '1,2' daje [1,2] to po &quot;&quot; oczekiwałbym [], a nie ['']
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.

Zobacz pozostałe 3 komentarze
aurel
@Sarrus, nic by się nie stało, tylko programista patrzyłby na to i zrozumieć nie mógł, czemu mają być dwa różne zachowania dla różnych stringów... Dodajmy jeszcze taki wyjątek, że jak jest tylko jedna spacja, to też zwraca pustego stringa, a jak są dwie, to już tablicę -_-' Czemu nie, po co spójność...
msm
Hmm, w Coyote jest opcja łączenia posta z powyższym na wypadek właśnie takich anonimów. Tylko nie wiem czy to było testowane na postach z komentarzami. Ktoś odważny? ;)
dzek69
@MarekR22: A co byś chciał z &quot;test&quot;.split(',') ?
MarekR22
zdaje sobie sprawę, że zamysł jest taki, że lista zawiera o jeden element więcej niż znaleziono separatorów i stąd ten jeden pusty string w liście. Jednak przypadek pustego stringa jest na tyle szczególny, że zwrócenie pustej listy niczego nie psuje , a ułatwia pewne rzeczy tak jak w przykładzie Marooned'a.
bogdans
Ja, przetestowałem przy paru komentarzach i jednym komentującym. Skleja dobrze.
unikalna_nazwa
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 9 lat
0

Pasjans w windows 8 zajmuje prawie 100 MB


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
Azarien
Saper też. Za to po raz pierwszy jest w nim sam saper, tj. chodzi się ludzikiem ;-)
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:4 dni
  • Lokalizacja:Rzeszów
1

To ja znowu javascript:

Kopiuj
>>> 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..


Zobacz pozostałe 3 komentarze
Coldpeer
a jak zachowuje sie Number(str) ?
dzek69
&gt;&gt;&gt; Number(&quot;017&quot;) -> 17
Coldpeer
thats good then! :)
unikalna_nazwa
i to jest przestarzałe zachowanie - w nowym chromie nic z tego postu nie jest prawdą - przykładowo parseInt("017") = 17
dzek69
"nic z tego postu" - czyli parseInt("01") !== 1 ? :P
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 godzin
0
Kopiuj
#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".

agilob
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 8 lat
  • Postów:148
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


Kiedyś miałem sen... że wszyscy ludzie zaczną używać tagów <code> i czytać błędy kompilatora...
MarekR22
tu się rozchodzi o DVD -R/+R. Według wiki: http://pl.wikipedia.org/wiki/DVD DVD-R ma pojemność 4 707 319 808 bajtów (tu wejdzie), a DVD+R 4 700 372 992 bajtów (i tu masz kłopot). Oczywiście i tak jest to fail bo zapychanie nośnika na styk lubi się potem mścić.
0

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

dzek69
Idea OGÓLNIE ma sens. Nigdy nie widziałem żadnych głębszych implementacji tego, ja np. w swoim oprogramowaniu chcę kiedyś zrobić korekcję literówek np. (jak ktoś z łapy wpisze domena.pl/konmtakt/ to na ładnej 404 zasugeruje przejście pod poprawny link). w tym przypadku jednak, podawanie wszystkich linków jak leci - nie ma sensu. g**no pomaga, nieobeznana osoba widzi "jakiś błąd" i stertę linków do niczego nieprzydatnych. a i obeznanej nic z tego nie przyjdzie w tym przypadku
Sarrus
Feature serwera jakiś. Pewnie sami nigdy w logo nie klikali ;]
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:4 dni
  • Lokalizacja:Rzeszów
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..


edytowany 1x, ostatnio: dzek69
ShookTea
Może to, co napiszę, to głupota, ale wyczyść wszystkie dane (historia, ciasteczka) przeglądarki i spróbuj jeszcze raz. Ja tak kiedyś miałem z zwykłym HTMLem - zawartość pliku zmieniłem i zapisałem, a strona nadal wyglądała tak samo. Dopiero po wyczyszczeniu danych przeglądarki zauważyłem zmiany (co ciekawe, strona nie wymagała do działania ciasteczek)
dzek69
Dzięki za rady, ale wiem jak działa cachowanie w Operze, wiem, że ładowany był nowy plik, nie bardzo też była możliwość żeby oba formularze (bez przeładowania strony - bo to aplikacja ajax) działały, ciasteczka nie mają nic do rzeczy, bo to mój system i wiem do czego wykorzystuję ciastka :) "Rozwiązanie" już dopisuję w edicie.
Sarrus
To jest sytuacja podobna do: "Ja pierd**, dlaczego tu nie działa! No przecież to jest niemożliwe! Chodź podejdź. Zobacz, że wszystko jest dobrze, tu ustawiam, tu przekazuję, tam dodaję, tu ..... aaa no tak, moja wina, jestem debilem..." :D
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 godzin
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.

Johnny_Bit
Hmm... nie mam windy ale narzeczonej jak instalowałem Adobe Readera, to przy instalacji była opcja czy się chce mieć ikonkę na pulpicie, w pasku szybkiego uruchamiania itp. Odznaczone toto było i do tej pory Adobe Readera nie ma na pulpicie. Może warto by pokombinować z uninstall&install z odznaczeniem tych opcji? No chyba że nowe wersje tego nie mają...
siararadek
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 9 lat
0

Znalezione dzisiaj w kodzie:

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

I nikt nie wie po co.

KR
może kiedyś coś było między tymi linijkami?
Azarien
kill it, kill it with fire.
MarekR22
może to jest błąd przy merge'owaniu.
somekind
Jeśli to C# i mergowanie TFSem, to bardzo prawdopodobne. :P
0

Haskell mistrz liczb:

Kopiuj
**Prelude>** min 9.000000000000001 9.1
9.000000000000002
hauleth
To, co powinieneś wiedzieć, z powodu niedokładności reprezentacji liczb zmiennoprzecinkowych. Więc dla mnie 0 wtf.
Sarrus
Dla mnie wtfem jest ten post. Lepiej poczytaj o arytmetyce liczb zmiennoprzecinkowych.
msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:4 miesiące
0

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

Kopiuj
Prelude> 9.000000000000001
9.000000000000002
edytowany 1x, ostatnio: msm
several
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 20 godzin
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).


edytowany 1x, ostatnio: several
Zobacz pozostałe 2 komentarze
Sarrus
A co powiecie o poznańskich biletomatach. Ktoś odkrył, że jak anulujesz zakup gdy biletomat czeka na pieniądze, to anuluje płatność, ale samej transakcji już nie. Trochę ludzi jeździło za darmo, zanim się połapali i naprawili ;]
satirev
@Sarrus żeby cały hak się udał, trzeba było anulować zakup w "odpowiedniej chwili" ;p
Koziołek
1. to normalne ponieważ informacja o bilecie jest przechowywana na chipie w karcie zatem musi tam zostać wgrana.
Semen Korczaszko
Ale przyznasz, @Koziołek, że można to rozwiązać lepiej. Z resztą w Wawie system jest tak spieprzony, że nie wykluczone, że trzeba będzie przejść na bilety online zamiast offline.
Koziołek
Generalnie mocno się zdziwiłem jak się dowiedziałem, że to wszystko włącznie z Metrem działa offline. Szczególnie, że jednym z założeń cyfryzacji systemu biletowego było zbieranie na bieżąco statystyk ruchu.
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)