odpowiedź jest prosta i niektórym znana - to tylko dostaniesz co napiszesz sam'a.

- Rejestracja:ponad 22 lata
- Ostatnio:około 10 godzin
- Lokalizacja:Poznań
Serwer nieco przymula. top
pokazuje, że mysqld jedzie >100% CPU, hmm..
mysql> show full processlist;
executing | select count(*) as xxx from yyy where zzz UNION SELECT BENCHMARK( 10000000000000000000000000, MD5(0))
W końcu mam namacalny dowód na istnienie liczby gazylion
;]

- Rejestracja:około 17 lat
- Ostatnio:około godziny
- Lokalizacja:Wrocław
Ostatnio było o Getinie, to teraz dla odmiany o mBanku.
W polu wpisywania kwoty nie można używać strzałek ani delete. Zajebiście ułatwia to edycję kwoty, dzisiaj prawie zapłaciłem 157 tys czynszu za mieszkanie. ;)


- Rejestracja:prawie 14 lat
- Ostatnio:ponad 2 lata
- Postów:353
...
catch(...) {
error = true;
} finally {
if(error) {
sysout(...);
}
}
Autentyczny kod spotkany na projekcie :D Chyba VW ;p Hindusi sa the best :)

- Rejestracja:około 17 lat
- Ostatnio:około godziny
- Lokalizacja:Wrocław
Moim zdaniem taka obsługa wyjątków jest ciekawsza:
public Exception LoadData(...)
{
SqlException exception;
try
{
// cośtam z bazą i innymi pierdołami
}
catch (SqlException ex)
{
exception = ex;
}
return exception;
}
I nie, nie Hindusi, 100% Anglicy.


API for functional testing of Swing user interfaces
do WinForms'ów raczej się nie nada. Ja też wątpię, że będą to pisać całkowicie od zera, ale trudność w tym produkcie polega na tym, że poprawność działania części modułów można zweryfikować obserwując co aktualnie odgrywa się na telewizorze.

@Marooned
Ciekawe czy to był tylko DoS czy ktoś chciał po czasie wykonania wnioskować co się dzieje i jakieś blindSQLInjection.
Tak czy owak nice.

- Rejestracja:ponad 12 lat
- Ostatnio:prawie 11 lat
- Postów:189
Potrzebuję wyciągnąć pewne dane z Bardzo Ważnej Rządowej Strony czy tam jakiejś agencji - nieważne, ważne, że w grę wchodzą publiczne pieniądze, więc portal kosztował zapewne chociaż te kilkaset tysięcy pln,a funkcjonalność... no cóż.
Można wyciągać rekordy pojedyńczo (zabezpieczone captcha), ale mi jest potrzebne kilka tysięcy, na szczęście jako że taki jest cel istnienia tej strony jest tam również opcja masowego eksportu (co ciekawe, tu captchy już nie ma), która jednak... nie działa. Napisałem maila w tej sprawie tydzień temu, do dzisiaj zero odzewu, jak nie działało, tak nie działa, a dane mi są potrzebne na ten tydzień.
Jako że szkoda mi trochę czasu na siedzenie i klikanie kilka godzin formularzy, postanowiłem sobie całość zautomatyzować, piszę właśnie scraper i doszedłem do tej ich captchy:
<td style="padding:0;">
<input type="text" size="10" name="token">
<input value="90246" type="hidden" name="rand">
</td>
Jak to zobaczyłem to przestało mnie dziwić, że coś tak skomplikowanego jak eksport do xls nie działa.




- Rejestracja:prawie 18 lat
- Ostatnio:prawie 8 lat
- Postów:278




- Rejestracja:około 17 lat
- Ostatnio:20 minut
Jakiś średni projekt klienta SIPowego, repo git-a 2 miesiące temu zajmowało 700MB.
Parę dni temu robię fetch (przez VPN-a) i czekam... czekam... i nic.
Po zakończeniu fetch-a repozytorium ma 5.76 GB :| (ściągo się przez noc).




- Rejestracja:ponad 13 lat
- Ostatnio:około 4 lata
Ciąg dalszy mojego posta w tym temacie z przed paru miechów. Kilka nowych wtf z roboty.
Foo* foo = new Foo;
if (foo == NULL) {
// ...
}
while (m_isSthDone) {
// ...
if (!WriteReply(foo)) {
break;
}
break;
}
doSth();
usleep(1000); // wait for a while
usleep(500); // to be sure wait just a little bit more
Sporo programistów jest zdania, że tak zaimplementowany singleton jest thread safe:
static T* Instance()
{
if (!m_pInstance)
{
m_pInstance = new T;
}
return m_pInstance;
}
void Foo::bar(A* ptr)
{
if (m_isB)
{
((B*)ptr)->sth();
if (((B*)ptr)->sth2())
{
((B*)ptr)->sth3();
}
}
}
bool Foo::bar()
{
if (!m_sth->init())
{
goto error;
}
// ...
error:
return false;
return true;
}
for (std::vector<T>::iterator it = sth.begin(); it != sth.end(); it++)
{
sth.erase(it);
}
bool Foo::bar()
{
#if 0
// ...
#endif
return true;
}
// ...
while (it != sth.end())
{
if (it->bar())
{
// ...
}
it++;
}

Foo* foo = new Foo; if (foo == NULL) { }
Jak bardzo starożytny to kod? Bo w epoce kamienia to był poprawny sposób radzenia sobie z błędną alokacją (dzisiaj od tego jest std::bad_alloc) (ewentualnie ktoś kto to pisał mógł pochodzić z epoki kamienia). A goto error;
i tak nie przebije goto fail;
:P

VC6 was non-compliant by default in this regard. VC6's new returned 0 (or NULL)
. No ale skoro 2008 rok to na pewno nie to.

usleep
to już jest naprawdę zabawne.
Nie pytajcie gdzie to było.
void get_tomorrow_date( struct timeval *date )
{
sleep( 86400 ); // 60 * 60 * 24
gettimeofday( date, 0 );
}





- Rejestracja:prawie 16 lat
- Ostatnio:4 miesiące
(uwaga, dość długie wtf fabularne)
No więc grepuje sobie spokojnie access log na 4p (bo okazało się że link wyświetlany każdemu anonimowemu prowadzi do 404, zapewne od co najmniej kilku miesięcy...).
Niby wszystko fajnie, tylko kodowanie trochę dziwne, i nie mogę za bardzo jakiegoś znanego mi kodowania dopasować:
$ xxd -g 1 < fragment.txt
0000000: 2f 43 5f 69 5f 43 2b 2b 2f 31 36 35 34 39 34 2d /C_i_C++/165494-
0000010: 57 65 6b 74 6f 72 5f 6f 62 69 65 6b 74 c3 83 c6 Wektor_obiekt...
0000020: 92 c3 82 c2 b3 77 5f 69 5f 73 70 72 79 74 6e 65 .....w_i_sprytne
0000030: 5f 77 73 6b 61 c3 83 e2 80 a6 c3 82 c2 ba 6e 69 _wska.........ni
0000040: 6b 69 20 22 2d 22 0a 20 20 20 31 20 2f 43 5f 69 ki "-". 1 /C_i
0000050: 5f 43 2b 2b 2f 31 36 35 34 39 34 2d 57 65 6b 74 _C++/165494-Wekt
0000060: 6f 72 5f 6f 62 69 65 6b 74 c3 83 c6 92 c3 86 e2 or_obiekt.......
0000070: 80 99 c3 83 e2 80 9a c3 82 c2 b3 77 5f 69 5f 73 ...........w_i_s
0000080: 70 72 79 74 6e 65 5f 77 73 6b 61 c3 83 c6 92 c3 prytne_wska.....
0000090: a2 e2 82 ac c2 a6 c3 83 e2 80 9a c3 82 c2 ba 6e ...............n
00000a0: 69 6b 69 20 22 2d 22 0a 20 20 20 31 20 2f 43 5f iki "-". 1 /C_
00000b0: 69 5f 43 2b 2b 2f 31 36 35 34 39 34 2d 57 65 6b i_C++/165494-Wek
00000c0: 74 6f 72 5f 6f 62 69 65 6b 74 c3 83 c6 92 c3 86 tor_obiekt......
00000d0: e2 80 99 c3 83 e2 80 a0 c3 a2 e2 82 ac e2 84 a2 ................
00000e0: c3 83 c6 92 c3 a2 e2 82 ac c5 a1 c3 83 e2 80 9a ................
00000f0: c3 82 c2 b3 77 5f 69 5f 73 70 72 79 74 6e 65 5f ....w_i_sprytne_
0000100: 77 73 6b 61 c3 83 c6 92 c3 86 e2 80 99 c3 83 c2 wska............
0000110: a2 c3 a2 e2 80 9a c2 ac c3 82 c2 a6 c3 83 c6 92 ................
0000120: c3 a2 e2 82 ac c5 a1 c3 83 e2 80 9a c3 82 c2 ba ................
0000130: 6e 69 6b 69 20 22 2d 22 niki "-""
Co to za kodowanie w którym ó
jest enkodowane jako C383C692C382C2B3
(pokazywane jako ó
)?
Na pewno wygląda to na utf-8 i jest poprawną sekwencją utf8, więc logiczne byłoby dekodować jako utf-8, ale co dalej? Przeprowadziłem test:
>>> for codec in codecs:
... try:
... result = "C383C692C382C2B3".decode("hex").decode("utf-8").encode(codec)
... print codec, result
... except:
... pass
...
cp850 ǟ▒▒
cp858 ǟ▒▒
cp1252 ó
cp1254 ó
gb18030 ▒0▒1▒0▒6▒0▒0▒0▒6
utf_32 ▒▒ ▒ ▒ ▒ ▒
utf_32_be ▒ ▒ ▒ ▒
utf_32_le ▒ ▒ ▒ ▒
utf_16 ▒▒▒ ▒▒ ▒
utf_16_be ▒▒ ▒ ▒
utf_16_le ▒ ▒▒ ▒
utf_7 +AMMBkgDCALM-
utf_8 ó
utf_8_sig ó
Wszystko unicodowe można od razu odrzucić (skoro dekodujemy z unicode to po co do niego wracać), zostajemy z kilkoma opcjami z których prawidłowa okazuje się: cp1252 (o tym zaraz):
>>> print ("C383C692C382C2B3"
... .decode('hex')
... .decode('utf8')
... .encode('cp1252')
... .encode('hex'))
c383c2b3
To co otrzymamy w ten sposób okazuje się... Znowu poprawnym utf-8. Więc dlaczego by nie powtórzyć cyklu?:
>>> print ("C383C692C382C2B3"
... .decode('hex')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252'))
ó
Ok, czyli mamy nasze ó - zostało zapisane w utf-8, odczytane w cp1252 i znowu zapisane w utf-8...
Ale to jeszcze nic, bo kiedy spojrzeć dalej do pliku to drugie 'ó' zostało zakodowane jako C383C692C386E28099C383E2809AC382C2B3
.
Jak mozna by się spodziewać, analogicznie do poprzedniego uzyskujemy
>>> print ("C383C692C386E28099C383E2809AC382C2B3"
... .decode('hex')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252'))
ó
Niestety, to nie koniec. W pliku jest jeszcze trzecie 'ó', kodowane jako C383C692C386E28099C383E280A0C3A2E282ACE284A2C383C692C3A2E282ACC5A1C383E2809AC382C2B3
:
>>> print ("C383C692C386E28099C383E280A0C3A2E282ACE284A2C383C692C3A2E282ACC5A1C383E2809AC382C2B3"
... .decode('hex')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252'))
ó
:|.
Obecny rekord wielkości (124 bajty) trzyma jedno z 'ę', kodowane 5 razy:
>>> print ("C383C692C386E28099C383E280A0C3A2E282ACE284A2C383C692C382C2A2C383C2A2C3A2E282ACC5A1C382C2ACC383E280A6C382C2BEC383C692C386E28099C383E2809 AC382C2A2C383C692C382C2A2C383C2A2C3A2E282ACC5A1C382C2ACC383E280A6C382C2BEC383C692C3A2E282ACC5A1C383E2809AC382C2A2"
... .decode('hex')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf8')
... .encode('cp1252')
... .decode('utf-8')
... .encode('cp1252')
... .decode('utf-8')
... .encode('cp1252'))
ę
Ale jako że zobaczyłem jakieś 0.0001 logów to nie dam głowy że gdzieś w nie czai się kilobajtowe 'ń' czy coś podobnego.
Przeraża mnie trochę ten plik :(
PS. wpisy nie podane chronologicznie tylko po posortowaniu, pewnie pochodzą z bardzo różnych okresów w historii 4p ;)


latin1
) - to domyślne kodowanie w mysql, jestem pewien że dlatego.

ó
)


- Rejestracja:około 12 lat
- Ostatnio:prawie 6 lat
- Lokalizacja:Wrocław
- Postów:629
Niby nic wielkiego, ale dziwnie to wygląda.
if (a == 0) {
//kod
}
else {
if (a == 1) {
//kod
}
else {
if (a == 2) {
//kod
}
else {
//itd.
}
}
}





// kod
, a func
moze dowolny kod trzymac.
- Rejestracja:ponad 12 lat
- Ostatnio:ponad 10 lat
- Postów:464


@Adam Borowski
Jakoś w django mnie to nie dziwi :D
http://dissectingtheframe.files.wordpress.com/2013/05/django-unchained-man-with-iron-fists.jpg

- Rejestracja:ponad 22 lata
- Ostatnio:około 10 godzin
- Lokalizacja:Poznań
Mozilla.....
właśnie dostałem maila
Marooned,
please post your results
thanks
to komentarz do buga https://bugzilla.mozilla.org/show_bug.cgi?id=491283
a bug w Firefox 11 z 2012

- Rejestracja:ponad 12 lat
- Ostatnio:9 miesięcy
- Lokalizacja:Dąbrowa Górnicza
Myslalem, ze nigdy nie przyjdzie mi tu opublikowac postu, ale na nieszczescie sie mylilem:
Kiedys modne bylo robienie obrazkow w ASCII, to jest stopien wyzej, bo robi sie obrazki z wartosci w bazie danych :):)
Wiecej nie zmiescilo sie na ekranie, z lewej idzie do jeden plus dane kazdego produktu.
Dzis zaczalem migarcje tego czegos z classic asp do c# .net i nawet jakos uzywanie emotek ( :) i :D ) w tym poscie mnie zlosci :(
DODANO NIEDLUGO POZNIEJ :D:D:D
Ten sam projekt, ale inna tabela ;(
- 392381f506.png (77 KB) - ściągnięć: 137
- 906c1bf7f0.png (943 KB) - ściągnięć: 212



porównania w stylu
String.Compare(x, y) == 0
zamiast zwykłego
x == y
w setkach miejsc w całej aplikacji :O
aha, aplikacja jednojęzyczna, a porównywane w ten sposób stringi to na przykład nazwy atrybutów w xmlu
ktoś był nadgorliwy?



<code=csharp>
w poście

Compare
, nawet jeśli łatwo jest sprawdzić działanie ==
...


- Rejestracja:ponad 16 lat
- Ostatnio:prawie 5 lat
Wiele lat temu zetknąłem się z programem magazynowym (Clipper, baza DBF), w którym nie było usuwania (anulowania) dokumentów, a dodatkowo był wymóg by data kolejnego wprowadzanego dokumentu była większa lub równa niż data poprzedniego dokumentu. Mój kontakt polegał na babraniu się w bebachach programu po tym jak magazynier (sprzedawca) podając datę dokumentu pomylił 3 lutego z 2 marca i zablokował możliwość wprowadzania dokumentów lutowych.

- Rejestracja:ponad 13 lat
- Ostatnio:około 4 lata
Tym razem zasłyszane "mądrości" od programistów C++:
Mądrość I - Każdy obiekt unii trzymany jest w L1.
Mądrość II - Po co używać std::set, jeśli istnieje coś takiego jak std::vector.
Mądrość III - Pomiędzy semaforem, a mutexem nie ma żadnej różnicy.
Mądrość IV - Pisanie funkcji w taki sposób
template <typename T>
bool foo(std::shared_ptr<T> ptr)
{
if (!ptr)
return false;
//...
return true;
}
zamiast w ten sposób
template <typename T>
bool foo(std::shared_ptr<T> ptr)
{
if (ptr)
{
//...
return true;
}
return false;
}
powoduje dodanie kilku instrukcji procesora więcej, ergo binarka nam puchnie.
Mądrość V - Najlepszym sposobem na race condition jest sleep z parametrem sprawdzonym empirycznie.
Mądrość VI - Można (a czasami nawet trzeba) rzucać wyjątki z destruktora.





- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
W ramach szukania klasycznego artykułu o programowaniu "How to shoot yourself in the foot" znalazłem dość ciekawą stronę podsumowującą cytat z Lema
Nie wiedziałem, że na świecie jest tylu idiotów, dopóki nie poznałem internetu.
-- Stanisław Lem


problem z cytatami w internecie jest taki, że ludzie w nie wierzą
powiedziała Maria Skłodowska-Curie :P


- Rejestracja:około 12 lat
- Ostatnio:prawie 6 lat
- Lokalizacja:Wrocław
- Postów:629
Tak to jest, gdy się nie zna IDE... lub gdy autorzy IDE zamykają funkcje programu w "innych" nazwach.
Z wyjątkiem małych przerw w Eclipsie, większość kodu piszę w NetBeans. I do każdej zmiennej piszę settery/gettery. Ręcznie - bo przejrzałem pobieżnie menu refaktoryzacji i nie znalazłem niczego z "get" bądź "set" w nazwie. Przed chwilą odkryłem "Encapsulate Fields".

rule._aligment
z zewnątrz wygląda dość... źle





- Rejestracja:około 12 lat
- Ostatnio:prawie 6 lat
- Lokalizacja:Wrocław
- Postów:629
Tknęło mnie przerażenie.
Wystarczyło zastosować skrót myślowy - napisałem "do każdej zmiennej", bo było szybciej, ale mija się to z prawdą, chodziło bardziej o "do każdej zmiennej, jeśli jest to konieczne" - i już burza o tym, czy settery/gettery powinny być stosowane, czy nie. I był już taki temat, nie powtarzajcie się :)




- Rejestracja:ponad 21 lat
- Ostatnio:około 3 godziny
Pewien płatny polski serwis nadaje hasła typu 123456 (ciekawe czy u wszystkich takie samo?) i nie widzę nigdzie opcji do zmiany.
Nazwy nie podam, bo jeszcze mi się ktoś włamie :D



- Rejestracja:około 17 lat
- Ostatnio:około godziny
- Lokalizacja:Wrocław
Z cyklu najbardziej gówniany system kontroli wersji w akcji:




Pewien projekt OS, którego kod przyszło mi dzisiaj przeglądać... bo test się zepsuł i trzeba spradzićz czy to nie nich
try {
Class<?> c = Class.forName("org.ujmp.core.io.ImportMatrix" + format.name());
Method m = c.getMethod("fromFile", new Class<?>[] { File.class, Object[].class });
Matrix matrix = (Matrix) m.invoke(null, file, parameters);
return matrix;
} catch (ClassNotFoundException e) {
throw new MatrixException("format not supported: " + format, e);
} catch (NoSuchMethodException e) {
throw new MatrixException("format not supported: " + format, e);
} catch (IllegalAccessException e) {
throw new MatrixException("format not supported: " + format, e);
} catch (InvocationTargetException e) {
throw new MatrixException("could not import", e);
}
a by nie było zmienna format
to zwykły enum


podobno kod gry terraria (czyli dość popularnej)



starbound

asdfvcxz napisał(a):
podobno kod gry terraria (czyli dość popularnej)
kod pochodzi z dekompilatora - w rzeczywistości oczywiście nie ma tylu wcięć i kod jest pewnie trochę ładniejszy; pewnie coś w stylu:
if (this.buffType[k] == BUFF_LAVA_IMMUNITY)
{
this.lavaImmune = true;
this.fireWalk = true;
}
else if (this.buffType[k] == BUFF_LIFE_REGEN)
this.lifeRegen += 2;
else if (this.buffType[k] == BUFF_SPEED)
this.moveSpeed += 0.25f;
else if (this.buffType[k] == BUFF_GILLS)
this.gills = true;
else if (this.buffType[k] == BUFF_DEFENSE)
this.statDefense += 8;
...
autor sam przyznaje że nie umiał zbytnio programować gdy się za nią zabierał a gra powstała z pasji


Shalom