Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
0

Witam,

Znalazłem jeszcze jeden WTF w powyższym kodzie. Stosowałeś tam "var" zamiast wpisać normalnie zmienną "Visit".
Czemu tak zrobiłeś?

Pozdrawiam

somekind
A gdzie tu WTF? Po co pisać całą nazwę klasy, skoro można po prostu var?
Azarien
bo "wizit wizit niu wizit" to dopiero wtf jest.
0

Taaa... a potem podczas analizy kodu, zastanawiać się co artysta miał na myśli. Po to sa nazwy klas by z nich korzystać, a nie wymyślać sobie uniwersalne nazwy nic nie mówiące.

Zobacz pozostałe 17 komentarzy
AF
@Koziołek Zgadza się, jestem w stanie, ale dobra praktyka sugeruje jawnie podać typ, jeżeli nie jest on widoczny na pierwszy rzut oka. Nie kosztuje to nic, a jednocześnie zwiększa czytelność kodu w wielu sytuacjach, szczególnie właśnie wtedy, gdy szybkie podejrzenie typu przez najechanie myszką czy wciśnięcie skrótu w IDE jest niemożliwe, bo kod przegląda się w prostszym edytorze.
somekind
@Afish, przede wszystkim, po co wyłączać IDE? Przecież to jest narzędzie pracy. Jak nie mam włączonego IDE, tzn. że nie pracuję, więc czemu miałbym patrzeć na jakiś kod? :) Tak czy siak, sensowne nazywanie zmiennych i funkcji rozwiązuje problem z przeglądaniem kodu w notatniku. Jak masz w kodzie Visit cycki = Srutututu() to podanie nazwy typu nic nie daje.
AF
@somekind A kto mówi o wyłączaniu IDE? Jak mam otwarte już cztery instancje VS na różnych pulpitach, to naprawdę nie chce mi się otwierać piątej, aby podejrzeć na szybko jakąś pierdołę w innym miejscu. A jak nie otworzę projektu, to VS działa jak notatnik.
n0name_l
A jest jakis powod dla ktorego majac otwarte 4 instancje VS potrzebujesz jeszcze przegladac 5 miejsce? Generalnie to jeszcze nie doszedlem do poziomu pracowania nad 4 solucjami naraz.
AF
@n0name_l Bo nagle podchodzi współpracownik i prosi o zerknięcie do kodu w celu wyjaśnienia jakiejś głupoty, nad którą akurat nie pracujesz.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 19 godzin
  • Lokalizacja:Wrocław
4
PanPytaPanNieBladzi napisał(a):

Taaa... a potem podczas analizy kodu, zastanawiać się co artysta miał na myśli. Po to sa nazwy klas by z nich korzystać, a nie wymyślać sobie uniwersalne nazwy nic nie mówiące.

Po to jest inferencja typów, by z niej korzystać. Wiesz, że w niektórych językach w ogóle nie deklaruje się typów zmiennych?
I która nazwa nic Ci nie mówi? Zmienna visit zdefiniowana jako new Visit? W takim razie problem analizy kodu Ciebie nie dotyczy, bo żadnego nie jesteś w stanie przeanalizować.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
several
var jest dobre, używam często. Ale ostatnio w systemie w którym pracuję coraz szerze rozprzestrzenia się takie coś var plugin = GetPlugin() Gdy jest tego za dużo, czytanie robi się irytujące, trzeba wtedy dodatkowej akcji żeby poznać typ zmiennej, gdzie w przypadku mojego systemu (pluginami poganianego) często jest to ważna informacja. Wszystko z głową.
n0name_l
Ale jaki tu moze byc inny typ niz IPlugin?
several
@n0name_l w idealnym świecie to mógłby być tylko IPlugin ;) Niestety nie żyjemy w idealnym świecie. Zreszta miałem na myśly bardziej ogólną sytucją użycia var przy inicjalizacji zmiennej wartością/referencją zwracaną przez funkcję/metodę.
somekind
@several, i to jest powód dla którego zmienne i metody powinny mieć opisowe nazwy. var availableTextPlugins = GetAvailableTextPlugins(), var visitsForUserFromLastMonth = GetVisitsByUserAndDateRange(int userId, Date startDate, Date endDate), itp. Ważne jest to, co jest w zmiennej, a nie jaki ma typ. Typ jest istotny dla kompilatora.
several
Ciężko się nie zgodzić.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 22 godziny
2

Zrobiłem wpłatę (prawdziwych) pieniędzy na konto i otrzymałem mejla o tytule: "TEST - Potwierdzenie otrzymania wpłaty."
Brzmi groźnie.


"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.
Zobacz pozostałe 3 komentarze
Wibowit
Niestety nie zgadłeś. Kupuję maść na powiększanie penisa :p
babubabu
dobrze że nie maść na ból dpy
Wibowit
a co, znasz jakieś efekty uboczne?
babubabu
@Wibowit raczej domyślam się jak przy pomocy powiększonego penisa można spowodować by ktoś potrzebował maści na ból dpy.
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
5

Nie tyle stricte programistyczne, ale generalnie wymyślili to chłopcy z M$. Otóż outlook blokuje załączniki. Bywa. Blokuje pliki z rozszerzeniem XML. Bywa. Nie udostępnia opcji "pobierz mimo wszystko". Delikwent, który wymyślił takie podejście powinien zawisnąć... zabawniejsze jest jednak rozwiązanie.
Sam M$ proponuje wysłanie pliku z innym rozszerzeniem. Ja wiem jak je zmienić. Pani Basia w urzędzie w Wilkowyjach niekoniecznie. Względnie wysłać plik skompresowany... który też zostanie zablokowany...
Najzabawniejsze jest jednak ostatnie rozwiązanie podane na ich stronie... prośba do admina serwera exchange i przegrzebka w rejestrze....


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Zobacz pozostały 1 komentarz
Koziołek
klucz spakowane
Sarrus
i zabezpieczone hasłem, bo bez tego sobie rozpakowywał i też nie przepuszczał
bogdans
blokadę plików exe można też ominąć (bez używania hasła) dwukrotnie pakując
somekind
SOA #1 (jeśli chodzi o Outlooka, bo na GMaila nie ma rady).
KR
ja wysyłam pliki ._exe i też jest ok
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
2

Zamawiałem właśnie obiad online. Dostawca korzysta z usługi pyszne.pl.
W komentarzu napisałem, że firma znajduje się na dwóch piętrach, wiec można dostarczyć jedzenie pod jeden z dwóch adresów.
Dostałem maila potwierdzającego, ale estymowany czas wykonania zamówienia wskazywał na 2 minuty do tyłu, więc zadzwoniłem do dostawcy.
On twierdzi, że nic mu na drukarce nie wyszło, więc złożyłem zamówienie telefonicznie (z zastrzeżeniem, by uważał na duplikację zamówienia), tak na wszelki wypadek.
5-10 minut potem dzwoni telefon z Łodzi (siedzę w Krakowie), gość się dopytuje o ten komentarz.
WTF serwis internetowy zatrudnia żywych ludzi do przetwarzania zamówień. Ten komentarz powinien wyjść na drukarce u dostawcy, automatem, a wszelkie wątpliwości powinie rozstrzygać z klientem dostawca.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Azarien
spoko; za parę lat może dorobią się mechanicznych maszyn na korbkę https://www.youtube.com/watch?v=Yv4Pd1EGx4g
PI
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 6 lat
  • Postów:61
0

oj jest tego full.... kiedyś jak instalowałem klientowi PS-a, instalator wywalił komunikat całkowicie pusty (żadnej treści, nagłówka tylko wykrzyknik)....
Dwa lata temu dostałem od klienta dysk 1TB z odłamanym ramieniem hta..... na potwierdzeniu przyjęcia notatka o "soraya FUCKS".....

Kiedyś gnojek z helpdesku jednej z firm ft koniecznie wcisnąć mi chciał że on wie lepiej na jakim ja sprzęcie pracuje. Nawet podał mi jego (oczywiście wymyśloną) konfigurację...... jeszcze kilka razy im odwalało aż dostali bana ISP......

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:3 minuty
0

Prosty dokument Corela (jedna figura - prostokąt) zapisany w formacie wersji X4 zajmuje 10 kB, a w formacie X6 już 1,3 MB. W obu przypadkach zapisany pod tym samym Corelem X6.

MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
0

https://www.imperialviolet.org/2014/02/22/applebug.html
Kiepskie są te standardy kodowania w Apple, ten błąd dowodzi, że:

  • kompilują ważne biblioteki bez flagi -Wall (powinno wyjść "unreachable code")
  • goto które przechodzi code review
  • brak testów automatycznych, dla tak krytycznej dla bezpieczeństwa biblioteki.

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
hauleth
Masz o "unreachable code" niżej. Clang nie zawiera tych warnów w -Wall.
Marooned
Dlatego zawsze używam {} - nawet jak za IFem mam jedno polecenie.
sprzedamsanki
  • Rejestracja:prawie 18 lat
  • Ostatnio:prawie 8 lat
  • Postów:278
1

Visual Studio 2010 na Win8. Non stop używany przez mnie podgląd wartości zmiennej stringowej w oknie modalnym z doinstalowanym formatowaniem JSONa, z jakiegoś powodu przy zamknięciu często (choć nie zawsze) powoduje reset explorera, a przynajmniej przerysowanie wszystkich okien łącznie z pulpitem w systemie. Dzieje się to bardzo szybko i nie próbuję nawet tego naprawić. Biorąc pod uwagę czas jaki bym zmarnował na znalezienie przyczyny, to nie warto. WTF jednak się pojawił kiedy zauważyłem, że czasem podczas przerysowania pojawia się na chwilę to menu, które się rozwija po najechaniu na prawy brzeg ekranu w Win8. Powoduje ono zawsze pojawienie się także zegara w lewym dolnym rogu. Gdzie WTF? Otóż w trakcie tych losowych przerysowań zegar pokazuje godzinę niemającą nic wspólnego z aktualną, co więcej na obu monitorach jest ona różna.

Teraz parskam śmiechem w pracy za każdym razem jak ot zobaczę.


The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' (I found it!) but 'That's funny'
SW
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 4 lata
  • Postów:426
7

Otwieranie strony z wymuszonym trybem zgodności z IE7 powoduje włączenie akutalizacji Offica ;o

MI
Taki ficzer :D
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:3 minuty
0

Defraggler od paru godzin pokazuje "Pozostały czas: 1 minuta".

hzmzp
Chciałem zobaczyć :D 43,9GB pofragmentowane chce robić >1dzień LOL prościej wychodzi zrobić formata i zainstalować wszystko od nowa (jakieś 3h)
Azarien
no nie, nie prościej, ale można zgrać na nośnik zewnętrzny wszystko co się da i będzie szybciej. albo po prostu zostawić defragmentację na noc.
Marooned
99% cieszy tylko przez pierwsze 5 godzin
AB
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:464
5

Jak można wydać 50 milionów?
https://empatia.mpips.gov.pl/

Parę słów na temat pozyższego: http://biznes.interia.pl/wiadomosci/news/mpips-uruchamia-portal-informacyjno-uslugowy-emptia,1973602,4199
"koszt projektu to ok. 50 mln zł"

edytowany 1x, ostatnio: Adam Borowski
Zobacz pozostałe 13 komentarzy
Azarien
może im płacili od linii.
siararadek
Okruszki chleba mnie rozbroiły :D
Sarrus
window.onload = function(){document.readyState!="complete" && (document.readyState = "complete");} :). Zajrzałem do skryptów js : function WyborSposobuOdpowiedzi(). To już mi dużo mówi o poziomie firmy która to robiła. Chociaż po przemyśleniu to jest patriotyczny kod :D
Johnny_Bit
To akie pytanie - ja wiem że to jest lipa, Ty wiesz, Pan, Pani... Ale czemu na to poszło 50mln i czemu urzędnicy nie kumają że taka platforma tyle nie kosztuje a jeśli nawet tyle kosztuje to powinna mieć wyższą jakość?
Sarrus
Ta strona nie kosztowała 50mln zł. Pewnie około 100tyś zł a reszta idzie na opracowania merytoryczne i płace dla kierowników oraz ich kierowników oraz ich kierowników oraz na wczasy połowy pracowników resortu itd. itp. Nawiasem mówiąc chciałbym zobaczyć rozliczenie takiego projektu. Z czystej ciekawości
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Hardwarowy WTF:

Facet wszczepiajacy sobie komputer wielkosci paczki papierosow do reki.

http://www.vice.com/motherboard/diy-cyborg?utm_medium=cpc&utm_source=gravity&utm_campaign=gravity

ShookTea
Czy dobrze rozumiem, że the implant can record data from Cannon's body and transfer it to any Android-powered mobile device gościu był zbyt leniwy, by przesyłać dane "tradycyjnie", i kazał sobie z tego powodu wszczepić implant, który tak paskudnie wygląda? (zwłaszcza z tatuażem, wszami i "dlaczego coś kanciastego wystaje ci z ręki?")
vpiotr
Facet się nazywa Tim Cannon. To chyba sprzęt do monitorowania ciała, więc inaczej się nie da, tylko wielkość tego sprzętu zabija... Ciekawe ile lekarz za to wziął kasy i jak szybko mu to wyjęli.
Azarien
Chyba cyrulik. Lekarz to by użył znieczulenia.
02
no z tą wielkością to chyba lekko przesadził. Czyżby koleś sobie wmontował jakiś zestaw startowy dla początkujących elektroników?
RE
To nie lekarz mu wszczepiał ten gigantyczny termometr z bluetoothem tylko kolejny fanatyk amatorskiego modyfikowania ciała. Kompletny debilizm.
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
1

Jak powszechnie wiadomo produkty dużych korporacji są dziwne... DB2 by IBM.

W schemacie tworzę sobie tabelę:

id:INTEGER
kraj:VARCHAR(20)
typ:VARCHAR(20)
licznosc:INTEGER

następnie robię insert:

Kopiuj
insert into raport_storeX (kraj, typ, licznosc) values ("POL", "T111", 1);

Wali błędem error -206 niepoprawny identyfikator WOJEWODZTWO.

WTF?

Okazuje się, że DB2 jest case-sensitive w zapytaniach, ale... DB2 robi upperase dla wszystkich identyfikatorów w parsowanym zapytani... mało tego... tylko w przypadku gdy zapytaniem jest INSTER.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Zobacz pozostały 1 komentarz
Koziołek
no w Oracle jest to przynajmniej spójne. Tu możesz zrobić selecta bez patrzenia na wielkość znaków, ale inserta już nie za bardzo.
Shalom
Pewnie inne osoby pisały elementy parsera i tak wyszło :D
vpiotr
Ale skąd tu WOJEWODZTWO?
Koziołek
aj... nie ten komiunikat :) KRAJ miało być.. jazdę miałem z kilkoma zapytaniami.
vpiotr
Właśnie dlatego nigdy nie stosuję dużych / małych liter w SQL-u (zawsze małe dla identyfikatorów). Technologia SQL zawsze była toporna, a do tego jest tyle warstw po drodze, że na pewno może się zdażyć, że któraś przekłamuje wielkość liter (ORM, xDBC, BDE, dbExpress etc). Tutaj już sama baza dała po łapkach.
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Praca z klientem jest zawsze źródłem wtf-ów...

Wysyłam sqlkę do weryfikacji z pytaniem czy jest poprawna z ich punktu widzenia. Chodzi przede wszystkim o to czy jeden z warunków działa prawidłowo (IMO, tak ale niech oni za to odpowiadają)...

Odpowiedź klienta

Nie mam jak tego przetestować ani zweryfikować.
Jeżeli zapytanie zwraca wartości i realizuje potrzeby biznesowe raportu, jest poprawne

Czy zapytanie spełnia warunki?
Nie wiem, ale jeżeli spełnia to spełnia...

shit...


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
no_solution_found
jak klient nie jest ort!, to nie wie co z tym czymś zrobić :D
sprzedamsanki
IMHO, to on najdelikatniej jak mógł napisał "It's not my f.. job"
Koziołek
no jest programistą i to od dawna. A o weryfikację zresztą sami prosili, bo my dostajemy tylko okrojone bazy :)
no_solution_found
no to widać mu się nie chciało :)
KR
Moderator
  • Rejestracja:prawie 21 lat
  • Ostatnio:około 2 godziny
  • Postów:2964
9

Mój operator kablówki ma fajne podejście do bezpieczeństwa.

WTF #1: Router zainstalowany przez operatora ma interfejs administracyjny dostępny z zewnątrz.
WTF #2: Nie da się zablokować WTF #1.
WTF #3: Router przychodzi z domyślnym loginem i łatwym hasłem (coś w stylu admin/123), a wszystkie routery mają taki sam login i hasło.
WTF #4: Nie da się zmienić loginu ani hasła.
WTF #5: Wszystkie routery w bloku są w jednej sieci lokalnej, bez jakiegokolwiek firewalla pomiędzy.
WTF #6: Na jednym IP jest więcej niż jeden router. I nie, nie chodzi o NAT. Jak wpiszę adres IP swojego routera, to wcale nie jest gwarantowane, że zgłosi się mój router. Może się zgłosić router sąsiada. Odświeżę stronę i zgłasza się router innego sąsiada. Właściwie nawet nie wiem nawet jak to jest możliwe.
WTF #7: Aby mieć gwarancję, że się modyfikuje ustawienia swojego routera, a nie routera sąsiada, operator radzi wypiąć z niego kabelek przychodzący z klatki schodowej.
WTF #8: Interfejs administracyjny routera udostępnia hasło do WiFi jawnym tekstem. Wystarczy podejrzeć źródło strony.
WTF #9: Ludzie mają strasznie słabe hasła do WiFi (ale to jest akurat znana rzecz).
WTF #10: Routery w ogóle nie zapewniają NAT ani firewalla. Znając IP w sieci lokalnej bez problemu można pingować komputer sąsiada podłączony do innego routera.
WTF #11: W ogóle magiczne rzeczy się dzieją - np. jak podłączę się do ich routerka przez wifi, to Internetu nie mam, jak podłączę się przez Ethernet to Internet jest. A miesiąc temu było na odwrót. Bardzo możliwe, że rozmnażanie IP poprzez strategię "wiele urządzeń na jednym IP" ma z tym coś wspólnego, albo jest jeszcze jakiś inny WTF.

BTW: Operator obiecał zająć się tą sprawą, ale nie potrafi określić, kiedy to naprawią.

edytowany 2x, ostatnio: Krolik
Zobacz pozostałe 3 komentarze
Koziołek
dlatego jeżeli jest to operator na U, to opłaca się zainwestować w prywatny router i jakiegoś VPNa gdzieś niedaleko. Świat staje się lepszy.
no_solution_found
zepsuj od czasu do czasu co nieco, a będą musieli się tym zająć szybko, bo będą telefony :D
KR
Nie, nie jest to operator na U. Router mam dodatkowy prywatny z firewallem, wifi na szczęście też, więc jest troszkę bezpieczniej. Wifi na modemo-routerze operatora wyłączyłem, co niestety nie zabezpiecza mnie całkowicie, bo i tak kto chce może mi je zdalnie włączyć, odczytać hasło, a następnie kraść mi transfer lub dokonywać włamów z mojego punktu dostępowego.
KR
Z psuciem od czasu do czasu to nie jest dobra opcja, bo to jest karalne. Karalne może być nawet pobranie materiałów poufnych omyłkowo dostępnych bez zabezpieczeń, jak się niedawno przekonał jakiś francuski dziennikarz.
Sarrus
A do tego może ktoś się zemścić :P
Ola Nordmann
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:414
1
Kopiuj
mongo[mDB.DB['PLAYER']].find({id_user: id_user}, { _id: 0 }, function(err, result) {
    if (err || !result)
       callback(false);
    else if (!mFn.validateJSON(result[0])) 
      callback("null");
    else 
      callback(true);
  });

Na dobry początek coś takiego. Dalej jest jeszcze gorzej. Ciekawostka: validateJSON sprawdza, czy dany obiekt da się sprowadzić do JSON, czyli... czy istnieje :|


<img src="http://scontent-a-vie.xx.fbcdn.net/hphotos-ash3/1379478_311850692288742_1730250652_n.jpg" />
Geniusz zua :>
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0
Kopiuj
<!--[if IE 8]>   
    <html class="no-js ie ie8 lt-ie9" lang="pl"> 
<![endif]-->
<!--[if IE 9]>   
    <html class="no-js ie ie9" lang="pl">
<![endif]-->
<!--[if gt IE 9]>
    <html class="no-js" lang="pl">
<![endif]-->
<!--[if !IE]>
    <html lang="pl">
<![endif]-->

Ostatni warunek... strona za 100 milionów... bank... WTF????


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
no_solution_found
chyba ktoś tu nie lubi IE :D
Koziołek
jeszcze raz obczaj jak idą komentarze... i co się sparsuje no w FF, a co zostanie olane
AB
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:464
0

Serio programistom PHP tak słabo płacą? 5zł na godzinę?
Poszukiwany PHP Developer

Zobacz pozostałe 2 komentarze
AB
Praktyki? Przecież oczekują 3 lat doświadczenia w webdevie i bdb znajomości PHP, frameworków i technologii webowych.
ShookTea
@Adam Borowski, @dsa - a w pensji tego doświadczenia nie widać, skoro nawet górne granice widełek nie mieszczą się w minimum :)
DS
Może to chodzi o 5-7k miesięcznie? ;p
ShookTea
mało prawdopodobne: "5 - 7 zł netto" :D
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
1

Ostatnio grzebie się w iOSie i regularnie natrafiam na dziwactwa tej platformy.
UIToolbar (ten element na górze z buttonami do nawigacji) ma właściwość tintColor.
W wersji iOS mniejszej niż 7.0 tintColor miał wpływ na kolorystykę samego UIToolbar nie miał wpływu na guziki.
Od wersji 7.0 Apple jednak wymyśliło, że zmieni znaczenie tintColor, od teraz ten kolor ma wpływ na kolor ikonek w buttonach, a poprzednią funkcjonalność przejął barTintColor.
To już jest niezły WTF, ale najlepsze jest właśnie z barwieniem ikonek, tintColor powoduje, że wyświetlane ikonki są przerabiane tak, że wszystkie nieprzezroczyste piksele dostają ten właśnie kolor, więc ikonka zachowuje jedynie kształt, a tak staje się cała jednobarwna (domyślnie niebieska).
Przez ostatnie parę dni szukałem jak obejść tą wspaniałą "funkcjonalność". Ustawienie tintColor na nil nic nie daje (przywraca domyślną wartość, a właściwie dziedziczy ją po widokach rodzicach).
Potem próbowałem kolor o nazwie "clearColor" , ale ikonka znikła.
Po długich poszukiwaniach w końcu znalazłem rozwiązanie:

Kopiuj
UIImage *icon = [[UIImage imageNamed: @"iconName.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
barItem.image = icon;

https://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/instm/UIImage/imageWithRenderingMode
https://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIImageRenderingMode
Dla tych co nie znają Objective C, to najpierw jest tworzony obiekt z ikoną, a następnie na jego podstawie tworzony jest jego kopia, z drobną modyfikacją, która zapewni normalny rendering, a nie ten zmodyfikowany przez tintColor. Szkoda, że nie dodali linka w tintColor do tego API w UIImage oszczędzili by ludziom choć troszkę nerwów.
Takiego WTF w API to w życiu nie widziałem.

Skoro takie cuda potrafią wymyślać, to aż strach pomyśleć jak wygląda kod odpowiedzialny za bezpieczeństwo. Niektórzy tak narzekają, na bezpieczeństwo Androida, ale gdyby wyciekł kod iOS-a to okazało by się, że ma kilka razy więcej dziur niż Android.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
Azarien
goto fail; goto fail;
Szuwar_Jr
Pomyliłeś UIToolbar z UINavigationBar.
MarekR22
fakt, ale i tak nie ma to znaczenia, bo oba mają ten sam "feature".
Szuwar_Jr
Nie spotkałem się z tym, ale trochę to brzmi jak wymuszenie flat design'u.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:3 minuty
1

Nokia HERE Maps.

Żeby nie można było palcem na mapie wskazać: STĄD - DOTĄD?
Żeby nie można jako początku trasy albo celu wybrać pozycji z ulubionych? (to po co one są, jako pasywne gwiazdki na mapie?)

Pała z funkcjonalności.

Zobacz pozostały 1 komentarz
somekind
To chyba nie sa synonimy. Funkcjonalność to zbiór funkcji programu, a użyteczność to wygoda jego obsługi. Program może być funkcjonalny, ale nieużyteczny, może też być użyteczny, ale niefunkcjonalny.
hzmzp
Ja sobie nie wyobrażam jak można złożyć niefunkcjonalny ale użyteczny program XD
KR
niefukcjonalny = ubogi w funkcje; niefunkcjonalny może być dla kogoś użyteczny, jeśli ma akurat tę jedną potrzebną funkcję :)
Johnny_Bit
niefunkcjonalny a uzyteczny = proste gry np. 2048. Uzywane do grania ale funkcji nie mają wielu ;) Funkcjonalne a nieużyteczne = KopiczekOS.
AB
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:464
0

Współczuję wszystkim programistom PHP, naprawdę...
Programista www / php / haxe

15zł/h brutto umowa o dzieło albo 15/h netto na b2b? Rly? Jeszcze wymagają doświadczenia... Co prawda to tylko jakieś wizytówki, CMS-y, sklepy ale mimo wszystko... chyba panie w Biedronce podobnie zarabiają i jeszcze mają ciepłą posadkę na umowę o pracę...

Zobacz pozostałe 10 komentarzy
somekind
Ani to programistyczne, ani gospodarcze WTF. W końcu praca jest warta tyle, ile ktoś jest skłonny za nią zapłacić.
Koziołek
Nope... praca jest tyle warta na ile wyceni ją pracownik. Tak samo puszka coli jest warta tyle na ile wycenia ja sklep, a nie tyle na ile wycenia ją klient.
somekind
A jeśli sklep wyceni colę za drogo, to klienci pójdą do innego albo kupią tańszy towar. Ale mniejsza z tym - programistycznego WTF w tym nie ma na pewno.
MarekR22
nie no biorąc pod uwagę ile gość płaci początkującym (nie ważne, że ktoś nie ma wykształcenia) to oferta naprawdę super, gość po prostu stracił szacunek do studentów (demograficzny niż + sposób finansowania uczelni robią swoje).
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 19 godzin
  • Lokalizacja:Wrocław
0

Getin Online nie przestaje mnie zadziwiać. Podczas logowania przy niewypełnionym polu hasła można wcisnąć enter i następuje próba zalogowania. Bardzo wygodne.
Gorsze jest to, że gdy np. po zerwaniu lokaty spróbujemy wykonać przelew ze swojego konta, to pojawi się komunikat o braku wystarczającej ilości środków na koncie. Czyżby ktoś u nich nie ogarniał transakcji i wyświetlał losowe komunikaty?


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
Zobacz pozostałe 7 komentarzy
AB
Hmm serwis Internetowy mBanku wg mnie jest spoko, ale to chyba kwestia gustu. Nie mam jednak żadnych wątpliwości, że tam nie ma takich problemów z przelewami i masz zawsze dostęp do swoich pieniędzy. Nie masz Internetu, ale masz problem z limitem na karcie, chcesz zrobić przelew czy założyć lokatę o 2 w nocy w sobotę? Nie ma problemu, dzwonisz na infolinię i załatwiasz wszystko od ręki. Nie wiem czy masz takie możliwości w jakimkolwiek innym banku?
Koziołek
Mój ostatni WTF (powyżej) jest właśnie z ich serwisu. Inny opisany poniżej..
aurel
Em, a to są jeszcze jakieś banki, które nie udostępniają telefonicznej obsługi konta...?
AB
Wiele banków ma infolinię otwartą tylko w dni powszednie w określonych godzinach.
somekind
@aurel, są, np. Getin Online. To co oni oferują telefonicznie w porównaniu z tym, co jest w mBanku, to początki średniowiecza. No, ale niestety, lokaty mają najlepsze, więc trzeba przeboleć wszystko inne.
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Duży bank na M....

Wchodzimy na konto oszczędnościowe, przełączamy widok historii na wersję z poprzedniej wersji serwisu, bo tylko tam mam eksport do CSV. Robię eksport
Wchodzę na konto główne próbuję zrobić to samo dostaję historię oszczędnościowego...

Pomaga twarde przeładowanie strony (ctrl+f5) oraz oczywiście przelogowanie się.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
AB
Płatności -> Historia -> Zmień widok. Na dropliście po lewej wybierasz konto, w formularzu wybierasz okres i typ eksportu. Voila i masz eksport do CSV w nowym serwisie oraz dostajesz historię wybranego konta, a nie innego. Przynajmniej u mnie działa ;)
Koziołek
tak też robię, ale jak przejdziesz do innego konta to zaczyna się pieprzyć.
AB
Dziwne, ja przed momentem sprawdzałem i dostaję zawsze wybrane konto :/
Koziołek
czyli kolejny ciekawy random w ichniej apce..
JK
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:107
0

Klasa...3.4k linijek, w każdej metodzie taki kod:

		$db = NewADOConnection(database_type);
		$db->Connect(host, user,  password, database);

I tak klas jest kilka....

Nigdy więcej freelancerki.

DS
No wiesz... ale gdzie zarobisz pracująd dla kogoś tyle, co na kontrakcie? ;p
JK
Masz rację, ale z biura wychodzisz o 16 i reszta świata cię nie interesuje, masz możliwości rozwoju. A tutaj siedzisz przy jakimś pseudo CMS z 2002 roku, który w bazie danych w BLOBIE przechowuje cały kod html podstrony... słowa tego nie opiszą.
DS
Dlatego trzeba sobie dobrze dobierać klientów ;p Ewentualnie odpowiednio liczyć za grzebanie się w g...nie.
JK
Jak to powiedział Seliga, to jest "Rzeźbienie w brązie" :)
DS
Zreszta, między innymi dlatego wybrałem sobie technologię, w której nie ma zbyt dużo legacy code i wtf-ków ;p
Johnny_Bit
@dsa Toż tam to prawie zawsze jest wtf albo legacy... Jak coś straciło łączność z headem jakiś rok temu to już nie dogrzebiesz się. No chyba ze bundle, a budnle mają to do siebie że stare wersje i stare bugi zostają. Ale jak serio jest wszystko na równi z head i trzyma standardy to racja - i to lepsze i fajniejsze.
DS
Nie no póki co nie mam problemu z wybieraniem samych sensownych projektów, zresztą, robiłem już migrację z RoR 2.x do aktualnego i myślę, że i tak było o wiele lepiej, niż przy takich rzeczach jak powyżej. Z drugiej strony miałem też aktualny projekt do ratowania napisany w ogóle bez trzymania się jakichkolwiek konwencji (ale to z kolei nie problem frameworku czy języka), itp., aż w końcu dev 'uciekł', a firma miała spory problem z dalszym rozwojem tej apki. Zapłacili odpowiednio to się trochę pomęczyłem, ale takie przypadki to raczej rzadkość.
0

W kodzie pewnego systemu finansowego.

Kopiuj
public Typ nazwa(argumenty){
    return (Typ) wywołanie_funkcji(6 argumentów z czego 4 wywołania funkcji{
        public void funkcja1(argumenty){logika}
        .
        .
        .
        public void funkcja7(argumenty){logika}
    )};
}
Patryk27
Jaki był największy poziom wgłębienia? :P
Koziołek
i jeszcze teraz lambdy do tego... BTW, kradnę na przykład na prezentację na DevCrowd do Szczecina :)
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
5

Lekcja z dzisiaj. W ubezpieczeniach mówimy o trzech stronach Ubezpieczycielu, Ubezpieczonym i Ubezpieczającym. Pytanie co robi ten kod:

Kopiuj
ubezpieczony.getDaneUbezpieczeniowe().getIdOsobyUbezpieczonej()

Odpowiedź: zwraca ID ubezpieczającego. Takie to oczywiste...


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Olamagato
To jeszcze nie jest jeszcze najgorzej (choć jest do d**y) bo przynajmniej ktoś starał się to jakoś określić. Można się też spotkać z getInsurance1Id(), getInsurance2Id() itp. :)
Koziołek
czy getInsurance1Id jest gorsze ciężko powiedzieć, bo choć konkretnie spieprzone nie wprowadza w błąd.
BO
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 9 lat
  • Postów:4
1

To chyba też się załapie na "wtf"...

Kolos z algorytmów w Delphi/Pascal bo to jedyny język który Pani Dr. była w stanie nauczać.
Dostaję do napisania Fibonacciego rekurencyjnie więc piszę. Delphi nie chce ze mną współpracować (wywaliłem {$APPTYPE CONSOLE} i dlatego) więc przerzucam się szybko na Free Pascala gdzie wszystko działa. Oddaję i dostaję 3+ (pomijam, że max można było dostać 4, a przydzielanie zadań o różnym poziomie trudności na różne oceny było na zasadzie - Ty dostaniesz takie, a Ty takie.). Dociekam więc dlaczego tylko 3+ (po sprzeczce o podział ocenowy rozdawanych zadań o którym nikt nie wiedział) IMHO całość działała jak należy. Pada odpowiedź:

  • Uznałam, że musiał Pan ściągać bo nie pisał Pan w Delphi tylko użył Free Pascala. Ale po dłuższym zastanowieniu stawiam jednak 4.
edytowany 1x, ostatnio: Boulderdash
KR
Z czystej ciekawości - mógłbyś wkleić ten kod?
BO
Jasne. W wolniejszej chwili poszperam na laptopie w Pascalowym folderze z moimi plikami podpisanymi w dziwny sposób i wkleję tutaj.
MarekR22
za napisanie Fibonacciego rekurencyjnie dałbym 3+ maks 4
BO
Nie oczekiwałem więcej. Bardziej boli mnie fakt, że pozbawiono mnie i kilka innych osób możliwości złapania 5 - od tak, zwykłe widzimisię jak się później okazało.
KR
Jeżeli takie było zadanie, to za napisanie rekurencyjnie z memoizacją dałbym 5.
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
5

Oracle wersja 10.0.2 XE, czyli darmowa. Proste zapytanie w stylu:

Kopiuj
SELECT pole1, Sum(pole2) pole2, pole3 WHERE pole4 IN ('Wart1') AND pole5='Wart2' HAVING Sum(pole2) > 0 Group By pole1, pole3 ORDER BY pole1

w SQLTools przechodzi bez problemu i zwraca kilka wierszy. W .NET CF przy użyciu komponentu dotConnect for Oracle firmy devart, który pozwala na bezpośrednie połączenie z urządzeń z windowsem ce/mobile do oracle, wysypuje się z komunikatem ORA-00600 internal error code. Pierwsza odpowiedz jaką można znaleźć/dostać na temat takiego błędu to "daj sobie spokój z szukaniem - dzwoń do supportu". Po głębszym przegrzebaniu googla trafiłem na wskazówkę - dodaj na końcu warunku OR 0=1. Po zastosowaniu całe zapytanie wygląda tak:

Kopiuj
SELECT pole1, Sum(pole2) pole2, pole3 WHERE (pole4 IN ('Wart1') AND pole5='Wart2') OR 0=1 HAVING Sum(pole2) > 0 Group By pole1, pole3 ORDER BY pole1

i o dziwo działa :/. Ma to związek z innym planem zapytania. Przyjąłem do wiadomości, pogodziłem się z tym faktem i tak zostało z komentarzem, żeby nie usuwać bezsensownego warunku.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 1x, ostatnio: abrakadaber
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)