Programistyczne WTF jakie Was spotkały

1
niezalogowany napisał(a):

to nie android ssie jaja, a Twoja wiedza odnośnie tej platformy. Nie piszę tego złośliwie, bo jak zaczynałem to miałem bardzo podobne obiekcje. Teraz już nie mam bo na pytania zadane przez Ciebie jestem w stanie odpowiedzieć.

Nie zadalem tutaj pytan. A co do programowania na androida, to wydaje misie ze sie przyzwyczailes do gowna. Pisanie na iOs jest znacznie przyjemniejsze.

niezalogowany napisał(a):

1.Co do emulatora, to nie jest żaden WTF, zainstaluj Genymotion albo HAXM jak masz procesor intela. Emulator chodzi wtedy szybciej niż przeciętny smarfon/tablet.

Genymotion jest zabugowany, HAXM mam pod osx, ale pod linuksem nie udalo mi sie uruchomic. Ale to moja wina, nie staralem sie zbytnio.

niezalogowany napisał(a):

mylisz pojęcia pomiędzy internal storage, a pamięcią wbudowaną (to są dwie różne rzeczy!). Do tego dochodzi jeszcze karta sd, więc telefon może mieć 3 rodzaje pamięci. Wołasz getExternalStorageDirectory i jeżeli nie jest null to nie obchodzi Cię czy jest to karta sd, czy pamięć wewnętrzna (nie internal storage).

Czyli linijka z dokumentacji ktora mowi ze external storage moze byc internal storage ma wg. ciebie sens? Ja nie myle tych pojec, google je pomylil.

niezalogowany napisał(a):

tutaj kłania się nauka tworzenia layoutów (najtrudniejsza część nauki jeżeli chodzi o androida). Do tego tworzysz specjalne foldery np. layout-land-small, layout-sw600dp, values-portrait-xxlarge itp. itd. i wszystko wygląda jak trzeba.

Wiem o tych folderach, nie tworze wlasnego layoutu - mowie tutaj o wbudowanych rzeczach, ktore niby just work... Not!

niezalogowany napisał(a):

Naprawdę? To nie lepiej skorzystać z GreenDao i wszystko robić na obiektach np. tak : qb.where(PersonDao.Properies.Id.eq(10)).build().unique() ?

Pewie lepiej. Ale to nie jest w standardzie tylko jakas zew. ORM. Nie potrzebujemy tego integrowac tylko po to aby pobierac dane z MediaStore, nie mamy wiecej bazy. Poza tym, czegos bys nie napisal, to googlowe api dostepu do contentproviderow uzywa takich smiesznych konstrukcji i tyle - to jest fakt.

niezalogowany napisał(a):

bugów trochę jest, ale nie mnóstwo. Często spotykam się w tej platformie z zarzutami o bugi, a okazuje się, że programista stosuje złe rozwiązanie uparcie twierdząc, że to bug.

No tak, to nie bug to feature. Zgadza sie, faktycznie bardzo czesto tak jest.

1

Pisanie na iOs jest znacznie przyjemniejsze.
no widzisz, a ja oglądając projekt w ios (zaznaczam, że się nie znam kompletnie na tej platformie) wizualizuję sobie to tak:
. Mimo tego faktu nie krytykuje jednak tej platformy, ponieważ jak zaznaczyłem, nie znam jej dobrze.

4

Hehe
user image

3

Wreszcie moj pierwszy post. Czekalem dlugo na niego, bo nie chcialem byle czego reprezentowac. Wiec uwaga NAKURZAM

musialem sprawdzic pod jakim iphonem/ipadem jest uruchomiona aplikacja. Znalazlem fajne zrodla do tego z licencja MIT. (w ktorym jest blad, ale to nie zasluguje na pierwszy post w WTF)
No to jadymy,

 #import <UIDevice+Hardware.h>

oraz

 environment.SetValue ( MOAI_ENV_devProduct,   		[[[ UIDevice currentDevice ] hardwareString ] UTF8String ]); 

tyle zmian w pliku, zadowolony kompiluje. Kompilacja sie udala, ale aplikacja sie crashuje na samym poczatku. Hmmm, komentuje druga linijke. No aplikacja dziala, wiec to na pewno problem z ta linijka.

Poprosilem o pomoc eksperta od tego, gdyz ja z ios nieduzo mialem do czynienia. Po 3 godzinach roznych ustawien ekspert znalazl rozwiazanie. Mnie WTF trzyma juz pol godziny. Co pomoglo? Wklejenie zrodel z tamtego pliku (UIDevice+Hardware.h) do pliku w ktorym jest uzywany.
super dziala, ale kurza twarz czemu? Czemu to to sie nie crashuje, przeciez kod zostal tylko dodany w innym miejscu!

Ekspert: ok, found the real reason: obj-c runtime does not load extension methods from static libraries by default

po troche przydlugawej konwersacji z nim

Ja: that's way copy paste to another file it's for me magic
Ekspert: yes, some magic is needed.. now we can forget about it lol

a i w ogole dodaje objective-c do jezykow ktorych na pewno nie bede chcial sie uczyc

0

Nie wiem do kogo kierować to WTF, do siebie czy do twórców Javy. Straciłem dwie godziny by zrozumieć dlaczego w poniższym kodzie pierwsze usuwanie z kolekcji nie działa, a drugie działa.

System.out.println(pos.get(i)); => 1
System.out.println(nr); => [1, 2]
nr.remove(pos.get(i));
System.out.println(nr); => [1, 2]
nr.remove(pos.get(i)-1);
System.out.println(nr); => [2]

nr jest typu ArrayList<String>, a pos jest typu ArrayList<Integer>.

0

Przeglądam sobie dokumentację MiniTest::Spec (nota bene zajebiście ktoś to wymyślił), a tu WTF:

def self.before type = :each, &block
  raise "unsupported before type: #{type}" unless type == :each

  add_setup_hook {|tc| tc.instance_eval(&block) }
end

Jak w ZSRR, każdy może mieć swoje zdanie o ile zgadza się ono ze zdaniem partii.

1

Sprawdzałem coś w dokumentacji Resharpera i znalazłem taki komentarz:

Resharper quits/crashes while performing this task when the Type count exceeds a few hundred. I have a single c# file with over 7000 declared types (547,286 lines) that I need to break apart for obvious reasons. Any suggestions?

Współczuję gościowi. :)

*źródło: http:*www.jetbrains.com/resharper/webhelp/Refactorings__Move_Types_into_Matching_Files.html

0

Pewien kod w C(C++) wyglądający na całkowicie poprawny, dawał błędne wyniki. Po krótkich badaniach wypreparowałem fragment odpowiedzialny za błędy.

#include <stdio.h>
int main()
{
    unsigned long long x;
    scanf("%llu",&x); //tu wpisuję 13 i ENTER
    //x = 13;
    while(x>0)
    {
        x/=2;
        printf("%llu\n",x);
    }
    return 0;
}

Wyjście:

6
3
1
0
0
0
0
0
0
0
0
0
0
0
2147483648
1073741824
2684354560
1342177280
2818572288
3556769792
3925868544
4110417920
4202692608
4248829952
4271898624
4283432960
4289200128
4292083712
4293525504
4294246400
4294606848
2147303424
1073651712
536825856
268412928
134206464
67103232
33551616
16775808
8387904
4193952
2096976
1048488
524244
262122
131061
65530
32765
16382
8191
4095
2047
1023
511
255
127
63
31
15
7
3
1
0

Odkomentowanie przypisania x=13 powoduje, że wyniki stają się poprawne. Kompilatory mam raczej wiekowe, ale na trzech różnych (gcc z 2001, g++ z 2009, mingw 4.4.1) wyniki są identyczne.
Dla zainteresowanych dodałem spakowany program.

0

@bogdans

movl  24(%esp), %eax
movl  28(%esp), %edx
orl   %edx, %eax
testl %eax, %eax
jne   L3

co można przetłumaczyć tak:

while((x | jakieś_śmieci) != 0)

Zresztą cały ten kod asma to jedno wielkie WTF.

0

@lukasz1235 co ty opowiadasz? To jest long long przecież

movl  24(%esp), %eax
movl  28(%esp), %edx

ładujemy do eax połówkę zmiennej i do edx drugą połówkę (bo rejestry są 32 bit a mamy 64 bit zmienną)

orl   %edx, %eax

robimy bitowego ora na tych dwóch połówkach i wynik wpisujemy do eax

testl %eax, %eax

robimy bitowego anda rejestru eax z samym sobą i skaczemy jeśli nie zwróciło nam to 0

W efekcie jeśli gdziekolwiek w eax albo edx był bit o wartości 1 to wykonamy skok do L3 czyli do wnętrza pętli.

0

Faktycznie, nie zauważyłem, że to long long. Ale okazało się, że przez przypadek miałem rację i w edx jednak są śmieci.
http://msdn.microsoft.com/en-us/library/xdb9w69d(v=vs.110).aspx - w tabelce nie ma "%llu", dlatego pod Windowsem powinno być "%I64u".

$ wine t.exe 
400000000000
284020736
142010368
71005184
35502592
17751296
8875648
4437824
2218912
1109456
554728
277364
138682
69341
34670
17335
8667
4333
2166
1083
541
270
135
67
33
16
8
4
2
1
0


$ ./a.out 
400000000000
200000000000
100000000000
50000000000
25000000000
12500000000
6250000000
3125000000
1562500000
781250000
390625000
195312500
97656250
48828125
24414062
12207031
6103515
3051757
1525878
762939
381469
190734
95367
47683
23841
11920
5960
2980
1490
745
372
186
93
46
23
11
5
2
1
0
3

Wrzuciłem swoje 2 grosze w komentarz pod oryginalnym postem.

TL;DR: chodzi o brak supportu dla %llu w niektórych libc - wtedy jest to jak %u traktowane.
Testy pod Windowsem:
http://gynvael.coldwind.pl/n/scanf_printf_llu (%llu około Visty zostało dodane na moje oko - wcześniej był inny znacznik MS.)

9

Własnie natknęłam się na takie cudo... (zmieniłam tylko nazwę funkcji, reszta jest toczka w toczkę):

If SprawdzCostam = True Then
Else
    GoTo koniec
End If

Nie na forum w dziale Newbie, tylko w produkcie :|

4
int findPosition (int* tab, int size) {
   for (int i = 0; i < size; i++) {
      if (tab[i] != -1) {
         if (tab[i] == 0) {
            return i;
         }
      }
   }
   return -1;
}
  • synchronizacja wątków sleepami
  • pliki *.cpp z 25000 liniami kodu ( funkcje na 700-900 linii, czy zagnieżdżenia na 5-7 poziomów )
  • nie znajomość/nie używanie stla
  • pisanie/używanie wrapperów na pthread zamiast korzystania z boost::thread, który jest dołączany do projektu
  • kod się buduje == przechodzi wszystkie testy
  • praca bez systemu kontroli wersji
  • ...
0

Nie umiem tego skomentować...
user image

10

Cenzurowanie komentarzy w pej.cz (i pewnie innych należących do o2.pl):
"dla lud******ażdym wieku"
Chodziło o "dla ludzi w każdym wieku" ale algorytm znalazł tutaj określenie na kobietę lekkich obyczajów :)

edit:
Kolejne:
"mięso z kurczątek sześc***ygodniowych"

10

fail.png

Chyba hardcoded, bo po kliknięciu nic nie zwraca. Działa również niezalogowanym :D

0

UNITY!
O ile na poczatku lubialem prostote i to ze mozna cos fajnie szybko wybudowac. Tak teraz powoli zaczynam to nienawidzic. NGUI i 2d do unity to rzecz wspaniala, ALE samo unity (przynajmniej w jednej rzeczy) jest straszne

Prosta rzecz, trzeba cos zrobic nie widocznego. Jakbyscie to zrobili? No SetVisible(false); prawda? NIE MA CZEGOS TAKIEGO.
Tak, nie ma. Jedyna opcja na dobra sprawe zeby zrobic cos niewidocznego w NGUI/Unity jest zrobienie
NGUITools.SetActive(Obiekt,false);
(ok mozna PODOBNO uzyc klasy Renderer, ale to tez nie jest taka prosta sprawa)

No ok, ale co to niesie za soba? Obiekt przestaje istniec, null, zero, nil, nie ma go. I teraz badz madry i znajdz sobie taki komponent jak potrzebujesz cos wylaczyc wlaczyc w innych skryptach. Jedynym rozwiazaniem jest trzymanie referencji do kazdego obiektu ktory chcesz zrobic inactive. Swietnie, cala architektura ktora wymyslilem poszla do kosza bo trzeba pomyslec nad nowa. A bo bym zapomnial, dezaktytowanie obiektu rowniez dezaktywuje jego componenty w druga strone czytalem ze to tez dziala, nie sprawdzalem bo nie chcialem sie zalamac (czyli dezaktywujesz component to caly rodzic pojdzie setactive(false) <--- to tutaj jest ten najwiekszy WTF)

Zeby nie bylo ze jestem golosowny
http://docs.unity3d.com/Documentation/ScriptReference/GameObject.Find.html
"This function only returns active gameobjects."

http://www.tasharen.com/forum/index.php?topic=6236.msg29954#msg29954

i jeszcze troche tego jest. Ehh, wspanialy poczatek tygodnia

7

this.obj = foo.bar == null ? null : foo.bar;

:|

0

Ale o co chodzi? Ja w sumie nie widze w tym kodzie nic bardzo dziwnego?

0

Fakt, nie zauwazylem ze testowane i przypisywane jest to samo ;d

1

GMAIL FAIL
Miałem wysłać do kogoś obrazek, ku mojemu zadowoleniu copy paste do emaila zadziałało bez problemu, przynajmniej tak wyglądało podczas tworzenia wiadomości.
Bez refleksji wysłałem maila i po drugiej stronie wyszły krzaki.
Otwieram swojego maila i co? Też krzaki! Nie no, żeby gmail tworzył emaila, którego nawet sam nie potrafi przeczytać!
Obrazek wstawił mi do email-a jako base64, jak ja podglądam wiadomość to skraca wiadomość (obrazek skan był duży), więc pojawiło się <code><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA....</code> i brak domknięcia taga, klikam więc linka "pokaż całą wiadomość", a tam po prostu obrazka nie ma. Badam treść strony i widzę, że gmail zupełnie pozbawił obrazek treści, zostawił tylko: <code><img alt=""></code>.
Zaobserwowane na FF26, ale zapewne na innych przeglądarkach będzie to samo.

0

Kiedyś w jakimś szablonie znalazłem taką linijkę:

 
<?php echo "<br />"; ?>
0

Zdarzało już się, że Visual odwalał dziwne rzeczy. Wtedy wystarczało Project->Rebuild i wszystko pięknie śmigało (no... raz, czy dwa musiałem ręcznie wyczyścić dane). Takie cudo zostało przez kompilator przepuszczone bez komentarza. Mało tego! Bez powtórzenia nie działa (projekt jest świeżo wyczyszczony - 3 razy dla pewności, Visual był uruchamiany ponownie => nie mam pojęcia, co zrobić, żeby on to łyknął).

WTF.PNG

P.S.: Samo HTML::CDocument nazwa; działa w innym miejscu.
P.S. 2: Kod i ostrzeżenia wywodzą się z funkcji testowych - tak ma być ;)

8

Szedłem ostatnio wysypać śmieci do pobliskiego kontenera, bo po świętach się tego sporo nazbierało, ładnych parę worków. Przy kontenerze jakiś gościu grzebał w środku zagiętym prętem, szukając jak się okazało puszek i czegoś do jedzenia. Chwile pogadaliśmy, dałem mu nawet 5zł. Gościu zapytał mnie czym się zajmuję na co dzień, bo od biednego nie chce brać pieniędzy. Powiedziałem, że komputery i takie tam. On mi na to, że też się tym interesuje i na przykład miesiąc temu napisał aplikację na Androida, która pozwala mu logistycznie planować obchód wszystkich śmietników w mieście i wyliczać zyski z określonych dzielnic.

0

Przykład użycia strncmp z http://www.cplusplus.com

/* strncmp example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[][5] = { "R2D2" , "C3PO" , "R2A6" };
  int n;
  puts ("Looking for R2 astromech droids...");
  for (n=0 ; n<3 ; n++)
    if (strncmp (str[n],"R2xx",2) == 0)
    {
      printf ("found %s\n",str[n]);
    }
  return 0;
}
0
Sarrus napisał(a):

Dziś trafiłem na kawałek kodu z 2009 roku

try
{
   data = GetData();
}
catch
{
   throw;
}

Moja reakcja WTF + :D

pół roku temu się z tego śmiałem, ale dzisiaj natrafiłem na wtfa w c#
wykonując asynchroniczne akcje w background workerze, chcę przechwycić w RunWorkerCompleted wyjątek który występuje

gdy w akcji workera jest taki kod:

try
{
    Sth();
}
catch (InvalidOperationException e)
{
    // obsługa wyjąku invalidoperationexception
}

w RunWorkerCompleted, e.Error wynosi null gdy rzucimy czymkolwiek innym niż InvalidOperationException

natomiast gdy dodam:

catch
{
    throw;
}

to nagle w e.Error pojawia się prawidłowy wyjątek
od godziny próbuję dowiedzieć się czemu

5

Dziś po angielsku, przeklejka z Bugzilli.

Zgłoszenie:

Choose "Add Social Media" option from the drop down menu of the object.
Type one letter "t."

I see the Error message.

Moja odpowiedź:

The error message says: "Provided URL is either invalid or link to a media with
blocked embedding option." which is correct. "t" is not a valid URL.

Try and you will be fine. "Add
social media" accept only few websites, eg: youtube, flickr, vimeo etc

Odpowiedź zrobiła furorę:

I understand that you mentioned for me. I tried to type "f" too at that time.
Then today "h" too. but the whole URL (your recommendation)works fine. I was
expecting the rooms guessing the whole site name for me by typing only one
letter. Sorry again.

Ja wiem, że japońska myśl techniczna wyprzedza resztę świata, ale o takiej sztucznej inteligencji jeszcze nie słyszałem - nawet w Kraju Kwitnącej Wiśni ;-)

5

Nagle przestały mi przechodzić testy logiki stwierdzającej, czy pacjent może się zapisać na wizytę. Wczoraj przechodziły, dzisiaj już nie, a przecież nic nie zmieniałem. Zaglądam do kodu, i w danych generowanych do testów widzę:

var visit = new Visit {
    VisitDate = new DateTime(2014, 2, 3, 9, 0, 0),
    Patient = patient,
    Type = VisitType.Standard
};

No tak, wszystko się zgadza. Przecież nie można rejestrować wizyt w przeszłości. :D

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