Programistyczne WTF jakie Was spotkały

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.

02
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 8 lat
  • Postów:1176
4

Hehe
user image

fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
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,

Kopiuj
 #import <UIDevice+Hardware.h>

oraz

Kopiuj
 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

edytowany 4x, ostatnio: fasadin
bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
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.

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
Zobacz pozostałe 13 komentarzy
Olamagato
Tak stawiając sprawę mogę się z tym zgodzić. Jednak być może wraz z Javą 8/9/10 pojawi się nowa biblioteka standardowych kolekcji tak samo jak się to stało w przypadku I/O czy powszechnego użycia Joda-time zamiast standardowej obsługi daty i czasu.
Azarien
@Olamagato: jak już wspomniałem WTF polega na tym, że te dwie metody remove mają identyczną nazwę, co jest przyczyną (jedną z) takiego zachowania. Wystarczyło nie przeciążać tej metody, a nie byłoby problemu, przy zachowaniu wszystkich pozostałych dziwnostek Javy.
Olamagato
@Azarien: Problem w tym, że przeciążono ją wtedy kiedy nie było ani autoboxingu, ani generyków. Rozróżnienie między obiektami, a typami prostymi było wtedy całkowite. Drugi przykład był wtedy całkowicie błędny i nie mógł wprowadzać w błąd. Pierwszy z kolei gwarantował, że jeżeli obiekt nie został usunięty, to nastąpiła próba usuwania takiego, który nie istnieje w kolekcji. Mogę się założyć o kostkę klozetową, że Java 8 wprowadzi kolejne wtf w istniejących metodach różnych wcześniejszych standardowych klas. :) Tak się dzieje kiedy język jest wciąż żywy.
Azarien
ale ja uważam że przeciążenie było błędem od samego początku. co to za bzdura że funkcja działa zupełnie inaczej w zależności od tego czy int jest zboksowany czy nie.
Olamagato
@Azarien: To kwestia czy w ogóle należy używać przeciążania w bibliotekach. W tym wypadku zgadzam się z Tobą, ponieważ remove(int) i remove(Object) mają zupełnie inną koncepcję i tak też działają.
hauleth
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:8 dni
0

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

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


edytowany 1x, ostatnio: hauleth
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
  • Lokalizacja:Wrocław
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


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
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.

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

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

  • asm.zip (0 KB) - ściągnięć: 102
  • t.zip (7 KB) - ściągnięć: 86

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 3x, ostatnio: bogdans
Zobacz pozostałe 14 komentarzy
Shalom
@bogdans liczba kroków to raczej nie problem. Przecież zepsute są górne bajty liczby, więc mógłbyś mieć nawet 64 shifty do zera (gdyby najwyższy bit najwyższego bajtu był zapalony).
Gynvael Coldwind
@bogdans: ad (a) - Przez "powtarzalność wyników" masz na myśli "takie same wyniki co uruchomienie programu"? Jeśli tak: niezainicjowane zmienne nie są losowe; wręcz przeciwnie, są w pełni deterministyczne - więc raczej normalnym jest, że wyniki będą się powtarzać w danym środowisku. Jeśli masz na myśli "powtarzają się liczby na różnych pozycjach", to w naszym przypadku się nie powtarzają - po każdym przesunięciu 32-bity zawiera inną wartość (tylko dla patternów typu 0x5555555555555555ULL by były powtórzenia w dolnych 32-bitach). ad (b) @Shalom już odpowiedział :)
Azarien
@Gynvael Coldwind: ale adres bazowy, stosu i sterty w nowszych windowsach jest losowy (ze względu bezpieczeństwa, aby utrudnić mieszanie w pamięci innych procesów). to może wprowadzać element losowy do UB.
Azarien
ok, już wiem. to czy działa czy nie, nie zależy od wersji mingw, tylko od wersji windowsa (a zarazem wersji msvcrt.dll). oto jedna z przyczyn, dla których MS nie zaleca linkowania do systemowego runtime'u…
Gynvael Coldwind
@Azarien Zgoda :) Wyraziłem się trochę nieprecyzyjnie - przez "deterministyczny" chodziło mi bardziej o "wiadomo co tam będzie w danym środowisku, ale nie zawsze jaką to będzie miało wartość konkretnie". Więc jest taka jak piszesz, jeśli trafi zmienna trafi na obszar w którym był jakiś pointer do heapu/stosu/PEB/TEB to wartość będzie w części losowa.
lukasz1235
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 8 lat
  • Postów:1105
0

@bogdans

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

co można przetłumaczyć tak:

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

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

edytowany 1x, ostatnio: lukasz1235
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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

Kopiuj
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ą)

Kopiuj
orl   %edx, %eax

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

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
lukasz1235
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 8 lat
  • Postów:1105
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".

Kopiuj
$ 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
edytowany 1x, ostatnio: lukasz1235
Shalom
Czyli to format dla scanf() jest źle wygenerowany i wartość jest źle wczytywana? o_O
byku_guzio
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 7 lat
Gynvael Coldwind
  • Rejestracja:ponad 21 lat
  • Ostatnio:7 dni
  • Lokalizacja:Zurich, Switzerland
  • Postów:457
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.)


peace,
gynvael.coldwind//vx "Imagination is more important than knowledge..." Albert Einstein
aurel
Moderator
  • Rejestracja:prawie 15 lat
  • Ostatnio:3 minuty
9

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

Kopiuj
If SprawdzCostam = True Then
Else
    GoTo koniec
End If

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

edytowany 1x, ostatnio: aurel
Zobacz pozostały 1 komentarz
aurel
To są narzędzia wspomagające edycję dokumentów napisane w VBA.
KR
A może coś tam miedzy Then a Else kiedyś było, ale zostało usunięte później i nikt nie odwrócił warunku? Bo w to, że ktoś tak od początku napisał to mi się wierzyć nie chce.
aurel
Niestety... W tym samym module trafiłam na kilka tego typu konstrukcji... Do tego często redundantnych...
Marooned
Urocze kolorki ma GeSHi dla VB.
satirev
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 4 lata
4
Kopiuj
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
  • ...
Zobacz pozostałe 5 komentarzy
Wibowit
w czasach CVSa Linux był trzymany w tarballach, a pull requesty przesyłało się jako diffy :] dopiero jak pojawił się chyba BitKeeper to Linux przesiadł się na VCSa.
satirev
Pisząc praca bez VCSa miałem na myśli to, że wszystko jest wrzucane na pałę do 1 brancha.
Shalom
@Satirev aaa no ale to zupełnie co innego. Przecież cała masa firm siedzących na SVNie tak właśnie robi. Nie widzę tu wielkiego problemu (oprócz niedogodności wynikających z braku dwufazowych commitów).
KR
"kompiluje się, znaczy działa", czyli podejście Haskellowe :D
hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 8 godzin
  • Postów:619
0

Nie umiem tego skomentować...
user image

Zobacz pozostały 1 komentarz
ShookTea
Co to za Super Krowa?
several
Biorąc pod uwagę charakter poprzednich postów w tym temacie, to w apt-get moo nie widzę żadnego programistycznego WTF.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 5 godzin
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"


"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.
edytowany 1x, ostatnio: Wibowit
Demonical Monk
  • Rejestracja:około 17 lat
  • Ostatnio:10 miesięcy
10

fail.png

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


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk
Wibowit
Coyote mówi: Spróbuj też: Demonical Monk to glonojady i ścierwo
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
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

edytowany 3x, ostatnio: fasadin
Gjorni
A nie lepiej po prostu zdjąć teksturę/wyłączyć siatkę (w zależności od oczekiwanych właściwości obiektu)?
fasadin
foreach (UISprite sprite in lesson.GetComponentsInChildren<UISprite>()) sprite.enabled = false; Jezeli chodzi Ci o cos takiego to byloby to jakims rozwiazaniem, ale nie do konca. Bo np zdjecie tektury nie spowoduje ze obiekt nie bedzie klikalny. Ale skoro sa layer's to powinna byc obsluga setVisible dla obiektow na layer'ze, albo ich nie usuwac! Ogolnie poradzilem sobie z tematem inaczej juz.
7

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

:|

Shalom
Nie mam pomysłu co ten kod miał właściwie robić :D Jedyne co mi przychodzi do głowy, to to że warunek miał być foo == null a nie foo.bar == null.
Sarrus
Myślę, że @Shalom ma rację i to jest po prostu bug
Marooned
A gdzie tu bug? To po prostu rozwinięcie this.obj = foo.bar; ;-)
Sarrus
bug w sensie, że programista zapewne miał inne zamiary i app może działać inaczej niż powinna
0

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

mychal
ten kod można zastąpić poprzez this.obj = foo.bar;
0

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

MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:27 minut
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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
hzmzp
To nie to że gmail tego nie czyta tylko przeglądarka nie rozumie tego <img src="data:image/png;base64,iVBORw0K..">
MarekR22
przeczytaj dokładnie co napisałem, to gmail przeciął treść w środku taga i dlatego przeglądarka odmówiła posłuszeństwa (treść strony nie ma domknięto taga), a FF od dawna obsługuje obrazki wstawione w treść strony, problem z takimi obrazkami ma jedynie IE.
Marooned
Też się kilka razy na to naciąłem. Parę dni później oglądam "wysłane" i widzę, że pusty mail poszedł.
freemp3
  • Rejestracja:około 11 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Miechów
  • Postów:284
0

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

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

Zobacz pozostałe 2 komentarze
Coldpeer
ja proponuje &lt;?php function f() { echo base64_decode(base64_encode(&quot;&lt;script&gt;document.write('&lt;br /&gt;')&lt;/script&gt;&quot;)); } f(); ?&gt;
unikalna_nazwa
ja proponuję &lt;span id=&quot;br&quot;&gt;&lt;/span&gt;&lt;?php function f() { echo base64_decode(base64_encode(&quot;&lt;script&gt;document.write('&lt;style&gt;span#br:after { content: \&quot;&lt;br /&gt;\&quot;; }&lt;/style&gt;')&lt;/script&gt;&quot;)); } f(); ?&gt;
no_solution_found
a ja proponuję: <br /> :D
Sarrus
@no_solution_found nieeee to zbyt banalne :)
Marooned
A ja proponuję &lt;br&gt; w dobie HTML5 :P
Ola Nordmann
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:414
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ć ;)

  • WTF.PNG (48 KB) - ściągnięć: 102

<img src="http://scontent-a-vie.xx.fbcdn.net/hphotos-ash3/1379478_311850692288742_1730250652_n.jpg" />
Geniusz zua :>
Azarien
a u mnie IDE podkreśla na czerwono prawidłowy kod (który się kompiluje). zepsuli niedawno, bo w 2013 Preview było jeszcze dobrze, 2013 RTM już kaszani.
Ola Nordmann
Ah... To wersja 2010 Pro
Ola Nordmann
Nowa jest brzydka :/
Azarien
nie mówię że nie; każda wersja ma swoje bugi - oficjalnego bugtrackera lepiej nie czytać, bo włosy dęba stają na myśl czego się używa :-)
AB
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:464
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.

xorgx3
Myślałem, że powie: "Też mi się zdarza grzebać w kontenerach, tylko, że w Javie"
Ola Nordmann
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:414
0

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

Kopiuj
/* 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;
}

<img src="http://scontent-a-vie.xx.fbcdn.net/hphotos-ash3/1379478_311850692288742_1730250652_n.jpg" />
Geniusz zua :>
edytowany 1x, ostatnio: flowCRANE
Azarien
ale o co chodzi, przecież działa... sam przykład nie zwalnia z resztą od konieczności przeczytania opisu.
Endrju
Co tu niby ma być WTF?
Ola Nordmann
char str[][5] = { "R2D2" , "C3PO" , "R2A6" };
0
Sarrus napisał(a):

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

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

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

Kopiuj
catch
{
    throw;
}

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

hzmzp
Bo on obsługuje tylko InvalidOperationException, wszystko spoza tego wyjątku wywala z bufera. Samo throw; przekazuje wyżej do wyjątku.
Azarien
czy to "z 2009 roku" miało oznaczać „dawno, dawno temu”?
MarekR22
pierwsze służy jedynie jako miejsce na wstawienia breakpointa, więc to nie jest wtf, ale na produkcji nie powinno się znaleźć. Drugie zapewne wynika z tego, że blok łapiący InvalidOperationException nie ma kodu, więc wstawiając breakpoint debugger prawdopodobnie nie potrafi rozróżnić czy chodzi o blok jawny czy domyślny, którego nie widać. Ciekawy mały WTF (warto sprawdzić czy dodanie jakiegoś kodu coś zmienia).
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 10 godzin
  • Lokalizacja:Poznań
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 ;-)


no_solution_found
no przecież autocomplete to podstawa!
mychal
Szkoda, że nie napisał "There is prompt <<Please provide URL>>. I would like it to be filled automatically, as I already have URL on my mind" :D
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
  • Lokalizacja:Wrocław
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ę:

Kopiuj
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


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
Zobacz pozostałe 6 komentarzy
Marooned
To jeszcze powiedz czym jest karna lama. Obstawiam, że to takie nasze "szyszki".
somekind
A w poprzedniej firmie było takie coś, że jak ktoś zepsuł builda, to dostawał takiego różowego pluszaka na biurko, i musiał z nim siedzieć cały dzień. ;)
MarekR22
fajny zwyczaj, domyślam się, że pluszak był duży i ostentacyjny (różowy)
Marooned
W poprzedniej firmie jak się położyło produkcję, to były pączki dla biura następnego dnia :)
somekind
U nas pączki były za spóźnienie na standup.
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)