Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
Koziołek
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6822
4

Lecimy dalej, bo w ramach wdrażania się w projekt robię za "Dezynsekcja, dezynfekcja, deratyzacja", czyli doprowadzam kod do stanu akceptowalnego przez Sonara.

Dziś dwa słowa o "magii" widoczności w javie.

Kopiuj
package a.b.c

public class SuperClass{

   protected Cośtam metoda(){
      return cośtam;
   }
}

Mamy sobie superklasę z metodą protected, która to metoda jest widoczna w dziedziczących i w pakiecie a.b.c. Wszystko ok? Zatem tworzymy podklasę

Kopiuj
package a.b.d

public class PodClass extends SuperClass{

   @Override
   protected Cośtam metoda(){
      return super.metoda();
   }
}

Która jest w pakiecie a.b.d i która nadpisuje metodę z superklasy tak jak na listingu. Pytanie po co to robi?

Odpowiedź jest sobie inna klasa w pakiecie a.b.d, która koniecznie musi korzystać z metody, a jako, ze ta jest protected w superklasie zatem jest nieosiągalna dla klas z pakietu a.b.d. Tworzy się zatem sztuczną klasę, której zadaniem jest.... tunelowanie widoczności metody.

Tak też nazywam ten magiczny wzorzec wprost z Czelabińskich klimatów.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Wibowit
ja tu bardziej widzę 'magię' architektury projektu. ktoś coś skopał.
Koziołek
Magia na poziomie architektury wynika z możliwości odprawienia rytuału na poziomie klas. Silnie powiązana z językiem.
KR
Java jest czasem wnerwiająca z tą swoją widocznością pakietową. Nie da się zrobić metody widocznej w całym pakiecie wyższego poziomu, można tylko publiczną bądź ograniczoną do najbardziej zagłębionego pakietu. Opcja pośrednia jest akurat często potrzebna.
Koziołek
I po to masz public, albo przenosisz do pakietu wyżej. Po to by położenie metody miało sens na poziomie organizacji kodu.
KR
O położeniu metody decydują inne czynniki niż jej widoczność (choćby dane na których operuje, albo po prostu metoda jest naturalna dla danego typu obiektu). Efektem braku hierarchicznego package private jest to, że w Javie większość metod ma tendencję do stawania się public. W Scali jest to zrobione lepiej. Bardzo często chcemy, aby kod użytkownika nie grzebał nam po bebechach biblioteki. Wtedy private[pakiet] robi dokładnie to, co trzeba.
Azarien
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 2 godziny
16

Kiedyś "obowiązywało" Login i Register. I wszystko jasne.

Nastała moda na Sign up i Sign in i za cholerę nigdy nie pamiętam które jest które.

wth.jpg

  • wth.jpg (6 KB) - ściągnięć: 142
Zobacz pozostały 1 komentarz
msm
@Azarien - http://ux.stackexchange.com/questions/11936/when-to-use-join-register-or-sign-up - Log in / out is more technical sounding than sign in / out, I would opt for sign in / out simply because it is more human speak.. Że niby sign up/in jest bardziej "human"? Dziwne, mam dokładnie takie same odczucia jak Ty. Cóż, może jestem słaby z mówienia po ludzku.
Azarien
Różnica między “sign up” a “sign in” jest taka sama jak między „zapisać się” a „wpisać się” – np. „zapisz się do nas” a „wpisz się na listę obecności”. Problem tylko w tym, że nigdy nie wiem które jest które ;-)
AL
@Azarien to wbrew pozorom spory temat, nie wiem czy czytujesz Coding Horror Jeffa Atwooda: http://blog.codinghorror.com/the-god-login/
vpiotr
@Azarien: To jest true WTF dla UX. Nawet jak napisałeś to po polsku to miałbym trudność z decyzją...
Marooned
true story, bro! Po prostu dla nativów to jest lepsze, dla reszty świata już niekoniecznie.
ShookTea
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Wrocław
  • Postów:629
1

@Azarien
GitHub:

  1. Sign in/up/out
  2. Na stronie głównej zamiast formularza logowania mamy formularz rejestracji, który od poprawnego logowania (ukrytego pod przyciskiem) różni się w praktyce tylko tym, że ma jedno pole więcej: rejestracja ma oddzielnie login i e-mail, a przy logowaniu można podać to lub to.

vpiotr
Na GitHub ktoś pomyślał, bo te dwie funkcje na głównej stronie różnią się wyglądem, przez co można wywnioskować co do czego. "Sign in" - przycisk dla stałych klientów u góry (czyli pewnie tych co mają konto). "Sign Up" to od razu cały formularz - przez co można wnioskować że do rejestracji. Inna wskazówka: "Pick a username" - raczej tego się nie robi dla konta które już masz.
ShookTea
Chodziło raczej o to, by można było się domyślić, co do czego służy, na pierwszy rzut oka, a raczej ten "rzut" nie skupia się na bladych napisach w tle :P
Koziołek
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6822
9

Z serii dżender jest wszędzie.

Implementacja w klasie o nazwe AbstractPersistentEntity, która to klasa nie jest klasą abstrakcyjną...

Kopiuj
public boolean equals (Object o) { 
   return true; 
} 

Wszyscy równi...


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
JA
Tak jakoś mi się z wierszem Herberta skojarzyło takie równanie wszystkich- https://www.youtube.com/watch?v=8Y44dfd5Jn4 :)
Riddle
a jaki hashCode?
Koziołek
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6822
2

Germański programista II...

Jest sobie coś co się nazywa InitServlet, w którym startuje sobie aplikacja. Serwlet robi dużo dziwnych rzeczy m.in. udaje, że nie ma JMXa na maszynie i wypisuje wszystkie zainstalowane biblioteki, robi jakieś magie konfiguracyjne i kontrolne środowiska itp. metoda init ma jedynie 500 linii, a na samym początku mamy:

Kopiuj
if (debug)
   (new Throwable()).printStackTrace();

by nie było, że sobie jaja robię z jakiegoś n00ba. Mówimy o kodzie faceta, który programował jak ja jeszcze u ojca z jaja na jajo radośnie skakałem, a w samej Javie gość robi od początku czyli już 20 lat.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
AL
dupa-debug ftw? ;)
Koziołek
@alagner coś wyższego rzędu, bo wypisuje cały stack więc można, teoretycznie, sprawdzić kilka informacji o środowisku.
Koziołek
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6822
2

Germański programista III

Nadal sprzątam kod po naszym szwabiszku...

Kopiuj
if (true) { // Always add the report parameters, as they identify this report

Czy ktoś może mi powiedzieć o co temu panu chodzi?


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Zobacz pozostałe 11 komentarzy
wasiu
Na stawki nie ma co patrzeć, bo 100-125€/h to standard. Tylko z tego trzeba utrzymać biuro, sprzęt, wyjazdy firmowe, project managerów, sekretarki, hr'y no i kierownika. Klient z reguły kasowany jest tylko za dzień pracy programisty pomijając całą resztę jaka wydawana jest na prowadzenie firmy :)
krzysiek050
Ja obstawiam że kiedyś tam było po prostu if(false) do tymczasowego wyłączenia funkcjonalności. Później chwilowo zmienione na true, a jeszcze później zapomniane bo tak działało dobrze.
Koziołek
@wasiu to jest stawka pojedynczego kontraktora. @krzysiek050 continuous delivery dla featurów, które klient może sobie włączyć.
wasiu
Nie, no nie chce mi się wierzyć. Toć górne widełki dla kontaktorów to 500-600€ dzień i to też tylko przy dużych projektach. Z kolei stawka jaką firmy kasują klienta za dzień pracy deva waha się w okolicach 1000€/dzień tylko ona musi uwzględnić wszystko o czym pisałem wyżej.
Koziołek
Podpowiem jeden z największych banków na świecie. Projekt z okazji regulacji na Risk Market.
Koziołek
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6822
9

Germański programista IV

Łapanie wyjątków powinno być łatwe proste i przyjemne...

Kopiuj
 catch (Exception e) {
            String name = e.getClass().getName();
            if ("org.apache.catalina.connector.ClientAbortException".equals(name)
                    || "java.net.SocketException".equals(name)) {
                // These simply indicate that the client has closed the connection prematurely
                logger.info(e.toString());
            } else {
                throw new IOException(e);
            }
        }

Obie klasy są w classpathie.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
2

Mam projekt który używa poco.
Gdzieś w swojej klasie mam metodę GetUserName w innym miejscu używam tej metody, ale nie działa.
Najpierw zaskoczenie, że auto-uzupełnianie chce mi wstawić GetUserNameW i wtedy się buduje.
Po długiej i bolesnej analizie znalazł się winny plik nagłówkowy: "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\WinBase.h"
Ma coś takiego:

Kopiuj
#ifdef UNICODE
#define GetUserName  GetUserNameW
#else
#define GetUserName  GetUserNameA
#endif // !UNICODE

WTF, kto pisze takie makra i to w czymś co jest powszechnie używaną biblioteką? Jakim cudem przeszło to review?
Czy nie mogli po prostu zrobić funkcji inline w rożnych wersjach dla UNICODE?


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
msm
Nie chcę Cię martwić, ale takich funkcji są setki w WinAPI :P. Niektóre nowsze wspierają tylko unicode, ale swego czasu (od Windowsa NT Windows jest natywnie unikodowy, a część wcześneij) praktycznie wszystkie funkcje dostały swoje makro i brata bliźniaka. Ad. Jakim cudem przeszło to review? - tego raczej nie wymyślił junior, tylko to jedna z ważniejszych definicji projektowych. A o powody to już ich musisz pytać :P.
Azarien
staaaare :-) a wymyślali to w czasach, kiedy takie rzeczy review przechodziły (okolice 1993).
Azarien
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 2 godziny
3

Grzebię w źródłach Quake'a (jedynki). Zamysłem było zaimplementowanie soundtracka z mp3/ogg zamiast cd-audio i pozbycie się DirectDraw (interesuje mnie oryginalny software'owy renderer, wszystkie istniejące sourceporty zajmują się tylko OpenGL).

Ale ten kod jest straszny. Kod specyficzny dla systemu (DOS/Win/Linux/Mac) wymieszany z kodem wspólnym, częściowo pod ifdefami, częściowo pod zwykłymi ifami, a częściowo na zasadzie „jeden plik .h i kilka specyficznych dla systemu plików .c do wyboru”; funkcje na kilkaset linii (robiące zdecydowanie więcej niż „jedną rzecz”).

Całość oczywiście nieobiektowa, w C.

Wniosek: można mieć burdel w kodzie a i tak osiągnąć sukces :D

/Aż dziw że ludziom się chce, jak patrzeć na to co potrafią różne sourceporty/

edytowany 2x, ostatnio: Azarien
satirev
Nie wiem co w tym dziwnego. Wystarczy spojrzeć na np. CryEngine, Steam, czy RakNeta, tam także kod jest wtf-owy ale koniec końców działa i to zaskakująco dobrze.
Azarien
działać działa, ale że ludzie chcą w tym grzebać gdy nikt im za to nie zapłaci.. ;-)
satirev
Tutaj zgoda ; )
xxx_xx_x
"funkcje na kilkaset linii (robiące zdecydowanie więcej niż „jedną rzecz”)" - kazde wywołanie funkcji to był spory narzut w tamtych czasach, "Całość oczywiście nieobiektowa, w C." - tutaj to samo, obiektowość miała znaczący wpływ na prędkość aplikacji. W programowaniu gier rezygnuje się z czytelności kodu na rzecz prędkości. Teraz już jest z tym nieco lepiej bo mamy mocne komputery i większość operacji można przenieść na kartę graficzną.
Azarien
inicjalizacja trybu graficznego to nie jest miejsce gdzie trzeba tak strasznie oszczędzać, zwłaszcza że gra testuje kilka trybów przed wybraniem jednego, co trwa. a co do czytelności - pod DOS-em gra obsługuje dźwięk przez kartę GUS (snd_gus.c) albo SoundBlaster (snd_dos.c). I jest ładnie. Pod Windows już gorzej - DirectSound i WaveOut, oba w jednym pliku snd_win.c, na zasadzie if (directsound) { ... dużo kodu ... } else { ... jeszcze więcej kodu ... }. No nic, kod jest jaki jest i trzeba będzie go ogarnąć.
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
0

Zmień apple id lub hasło i przejdź "prostą" procedurę:
https://support.apple.com/en-us/HT204071
Najzabawniejsze jest to, że na OS X chce usunąć wszystkie kontakty wpisy do kalendarza itd, mimo, że nie robił backupu do iClouda od pół roku i nie da się tego obejść.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
LA
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Lokalizacja:Biłgoraj
  • Postów:54
0

Właśnie stawiam serwer na tablecie. O dziwo działa.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pozdro, Lauro.
Zobacz pozostały 1 komentarz
LA
Miałem jeszcze do wyboru laptop sprzed 2000, z Win8, na którym nie mam uprawnień administracyjnych. I tablet jest zdecysowanie lepszym rozwiązaniem, ale i tak jak to brzmi: "serwer WWW na tablecie" ;p
ShookTea
Nie mówi się o dziwo, tylko o panienko ~~ ksiądz sucharotwórca
Azarien
"laptop sprzed 2000, z Win8" O_o masz UB bo Win8 oficjalnie wymaga procesora z SSE2, a pierwszy procesor z tymi instrukcjami wyszedł w roku 2000.
ShookTea
@Azarien mam wrażenie, że chodziło mu o Win98, tylko mu się jedna cyferka zgubiła.
LA
Sory, pomyliło mi się - miało być 2001, albo wcześniej.
somekind
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
0

Statyczna akcja kontrolera. static musiałem dodać sam, inaczej kod się nie kompiluje, bo: https://msdn.microsoft.com/en-us/library/ms245046.aspx

Jak można używać narzędzi "zwiększających jakość" kodu, które prowadzą do powstawania takich patologii?

Azarien
ale to jest tylko warning, w dodatku nie ma obowiązku Code Analysis, no chyba że ci narzucają i w dodatku koniecznie że musi być na czysto..
somekind
W projekcie jest obowiązek, i tak to wszystko jest skonfigurowane, że ostrzeżenia StyleCopa to błędy kompilacji. Uroki korporacji.
Azarien
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 2 godziny
6

st.JPG

  • st.JPG (50 KB) - ściągnięć: 142
Zobacz pozostałe 6 komentarzy
EroSanin
@ShookTea mi z kolei odejście od turowego bitewniaka RPG nie przypadło do gustu :(
satirev
à propos Steam to może kiedyś skrobnę w tym temacie dłuższego posta nt ich kodu ; >
spartanPAGE
@Satriev będę czekać, wiem czego się spodziewać >;}
EroSanin
@Satirev a ja nie wiem :( Pisz jak najszybciej ! :D
n0name_l
  • Rejestracja:około 13 lat
  • Ostatnio:około 5 lat
  • Postów:2412
1

Przeglądając sobie kody około .NETowe...

59619864ca.png

Jestem ciekawy jak ktoś zarządza danymi w tej tablicy. :P

msm
>lex.fs. To prawdopodobnie wygenerowane przez narzędzie jest po prostu.
n0name_l
Tak, WTFem imo jest to, że w XXI wieku w kodzie źródłowym trzymane są ogromne ilości danych, dziwnych danych, których ludzkim okiem (no może poza okiem @deus) nie idzie przeczytać.
spartanPAGE
  • Rejestracja:ponad 12 lat
  • Ostatnio:5 dni
3

Panie, przysiadłem na pół godziny, działa to zostawiłem
?
oh

Kopiuj
//init
$("#intro").show()
$("#blog").hide()
$("#about").hide()
$("#team").hide()
$("#projects").hide()
$("#forum").hide()
$("#contact").hide()
$("#intro-btn").click(function(){
$("#intro").show()
$("#intro-btn").removeClass('active')
$("#blog").hide()
$("#blog-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#about").hide()
$("#about-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#team").hide()
$("#team-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#projects").hide()
$("#projects-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#forum").hide()
$("#forum-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#contact").hide()
$("#contact-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#footer").show()
})
$("#blog-btn").click(function(){
$("#blog").show()
$("#blog-btn").removeClass('navbar-element').removeClass('active').addClass('navbar-element-active')
$("#intro").hide()
$("#about").hide()
$("#about-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#team").hide()
$("#team-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#projects").hide()
$("#projects-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#forum").hide()
$("#forum-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#contact").hide()
$("#contact-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#footer").hide()
})
$("#about-btn").click(function(){
$("#about").show()
$("#about-btn").removeClass('navbar-element').removeClass('active').addClass('navbar-element-active')
$("#intro").hide()
$("#blog").hide()
$("#blog-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#team").hide()
$("#team-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#projects").hide()
$("#projects-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#forum").hide()
$("#forum-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#contact").hide()
$("#contact-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#footer").hide()
})
$("#team-btn").click(function(){
$("#team").show()
$("#team-btn").removeClass('navbar-element').removeClass('active').addClass('navbar-element-active')
$("#intro").hide()
$("#blog").hide()
$("#blog-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#about").hide()
$("#about-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#projects").hide()
$("#projects-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#forum").hide()
$("#forum-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#contact").hide()
$("#contact-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#footer").hide()
})
$("#projects-btn").click(function(){
$("#projects").show()
$("#projects-btn").removeClass('navbar-element').removeClass('active').addClass('navbar-element-active')
$("#intro").hide()
$("#blog").hide()
$("#blog-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#team").hide()
$("#team-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#about").hide()
$("#about-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#forum").hide()
$("#forum-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#contact").hide()
$("#contact-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#footer").hide()
})
$("#forum-btn").click(function(){
$("#forum").show()
$("#forum-btn").removeClass('navbar-element').removeClass('active').addClass('navbar-element-active')
$("#intro").hide()
$("#blog").hide()
$("#blog-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#team").hide()
$("#team-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#about").hide()
$("#about-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#projects").hide()
$("#projects-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#contact").hide()
$("#contact-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#footer").hide()
})
$("#contact-btn").click(function(){
$("#contact").show()
$("#contact-btn").removeClass('navbar-element').removeClass('active').addClass('navbar-element-active')
$("#intro").hide()
$("#blog").hide()
$("#blog-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#team").hide()
$("#team-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#about").hide()
$("#about-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#projects").hide()
$("#projects-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#forum").hide()
$("#forum-btn").removeClass('navbar-element-active').removeClass('active').addClass('navbar-element')
$("#footer").hide()
})
Sarrus
Na żarty był dzień wczorajszy :P
spartanPAGE
@Sarrus ktoś się spóźnił z psikusem, bo to ja to teraz musiałem poprawiać :P
Riddle
ten kod to jakieś g**no :/
spartanPAGE
@TomRiddle no co ty :D Jest powód, dla którego tutaj się znalazł
Wibowit
  • Rejestracja:ponad 20 lat
  • Ostatnio:około godziny
  • Lokalizacja:XML Hills
31

"Finish" ma jedyne słuszne tłumaczenie:
finish.png


"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.
Azarien
ale... fiński to Finnish a nie finish.
Wibowit
kto by się tym przejmował :P
bogdans
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 5 lat
0

Obrabiałem film programem ffmpeg. Program ten wyświetla na konsoli sprawozdanie z przebiegu, sprawozdanie ujawniło, że dodanie ramek skróciło film

Kopiuj
frame=10220 fps= 16 q=28.0 size=   35383kB time=00:06:49.20 bitrate= 708.4kbits/
frame=10231 fps= 16 q=28.0 size=   35421kB time=00:06:49.68 bitrate= 708.3kbits/
frame=10243 fps= 16 q=28.0 size=   35455kB time=00:06:47.76 bitrate= 712.3kbits/

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
Zobacz pozostałe 3 komentarze
Azarien
bo po polsku w kontekście filmu zawsze była mowa o KLATKACH. dopiero w ostatnich latach panoszy się "ramka" jako tłumaczenie angielskiego "frame".
RE
szczerze powiem, że nie mam absolutnie żadnego problemu z takim tłumaczeniem czy używaniem tych dwóch wyrazów jako synonimów w tym kontekście. nawet ramki mi bardziej pasują (w kontekście IT i ramek w transmisji danych niż klatek jako kadrów filmowych).
Azarien
w kontekście pakietów danych ok
Marooned
To coś jak tłumaczenie font jako czcionka ;-) Są puryści, których to razi (dzień dobry) i tacy, co to ich nawet poszłem nie razi. Ale tu rzeczywiście klatka filmu nie musi być równoznaczna z ramką pakietu danych opisujących fragment filmu. Ale aż tak się nie znam na kodekach.
Azarien
@Marooned: ostatnio skanowałem stare slajdy. tam są rzeczywiście ramki :D
fasadin
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:4883
3

W firme korzystamy w sumie z 4 jezykow programowania

  • C++ Builder 6
  • C++11
  • Python
  • C#

Poki co pracowalem z C++11. Stworzylem swoj wlasny projekt i oprocz jednego malutkiego wtf bylo wporzadku.

Ale projekt zostal odlozony... na jakis tam czas...

dostalem zadanie z pythonem (mam poprawic pare rzeczy w "Dashboard")

Gdy czekam na srodowisko (dostalem wytyczne ze mam pracowac z visual studio 2010...) popatrzylem sobie w kod. Z tego co zrozumialem pracuje nad nim jedna osoba...

Kopiuj
    def missing_files(self, press):
        count = 0;
        index = 3;
        if press[index + 0] == False:
            count = count + 1;
        if press[index + 1] == False:
            count = count + 1;
        if press[index + 2] == False:
            count = count + 1;
        if press[index + 3] == False:
            count = count + 1;
        if press[index + 4] == False:
            count = count + 1;
        if press[index + 5] == False:
            count = count + 1;
        if press[index + 6] == False:
            count = count + 1;
        if press[index + 7] == False:
            count = count + 1;

        if press[index + 8] == False:
            count = count + 1;
        if press[index + 9] == False:
            count = count + 1;
        if press[index + 10] == False:
            count = count + 1;
        if press[index + 11] == False:
            count = count + 1;

        return (count / 12.0);

oj bede mial co gadac za mniej wiecej tydzien na rozmowie ewaluacyjnej :) (w pierwszym miesiacu firma jak i ja mozemy po prostu zerwac umowe)
Nawet nie wiem czy zostane... Ale zapewne tak.

edytowany 1x, ostatnio: fasadin
Riddle
Nie wiedziałem że "C++ Builder 6" to język programowania :D (czepiam się hihi).
fasadin
to jest zupelnie cos innego niz czysty c++. Tak to framework, ale traktuje to jako osobny jezyk (mozesz uzywac delphi tam... musisz znac vlc etc)
MA
  • Rejestracja:ponad 17 lat
  • Ostatnio:9 dni
  • Lokalizacja:Poznań
3

Może nie taki WTF, ale analizując kod wyszukiwarki KRS...

captcha.png

Zobacz pozostałe 5 komentarzy
Koziołek
To jest ten rodzaj błędu co bezboleśnie przechodzi przez mój parser.
spartanPAGE
Ale to nie jest captcha tylko kaptcha :P
Marooned
refreschCaptcha
ShookTea
refresch niemieckie :D
fourfour
No co, nie powinno używać się polskich znaków w kodzie, więc sobie ktoś poradził tak, by sens utrzymać, a "ż" nie wstawiać :)
Marooned
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:około 12 godzin
  • Lokalizacja:Poznań
14

miejsce instalacji.png


MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
1

Komercyjny kod. Ktoś próbuje zrobić property elementu UI (CAEAGLLayer) by był thread safe, więc zmodyfikował setter w taki sposób:

Kopiuj
- (void) setBounds:(CGRect)bounds
{
	if ([m_boundsLock tryLock])
	{
		[super setBounds:bounds];
		
		[m_boundsLock unlock];
	}
}

Czyli ignoruj wartość jeśli nie udało ci się założyć locka :|.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
HI
  • Rejestracja:ponad 13 lat
  • Ostatnio:22 dni
  • Postów:1861
5

Dziś sam zrobiłem sobie niespodziankę...
Piszę programik który ma być zabezpieczony przed przeniesieniem na inny komputer (zabezpieczenie trochę "na sztukę", bo raczej nikt nie będzie próbował z nim walczyć).
Podczas instalacji generuje się "klucz" przypisany do komputera zawierający jakieś tam dane o komputerze/systemie i "bardzo mądrze" zawarłem w tym kluczu ilość dysków w systemie (myśląc "przecież raczej nie często ktoś zmienia ilość dysków/partycji").
Przy testach w pewnej chwili dostałem błąd informujący o nieprawidłowej instalacji, pierwsza myśl: zabezpieczenie zadziałało, druga: dlaczego ?
Odpowiedź bardzo prosta: podłączony pendrive :D

Sarrus
Pierwsze co pomyślałem jak przeczytałem "ilość dysków" zanim doczytałem do końca ;)
merlinnot
Hah, ja tak samo :)
MarekR22
Nie ma chyba większego programistycznego WTF, niż kiedy piracka wersja działa lepiej niż oryginalna.
flowCRANE
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Tuchów
  • Postów:12259
0

@hipekk - zabezpieczenie może i miałoby jakiś sens, gdybyś pobierał listę partycji na dysku twardym (typu DRIVE_FIXED, zamontowanym na pokładzie komputera; Jednak to i tak można zepsuć (wystarczy podłączyć dysk przenośny), więc musisz to jeszcze przemyśleć.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.

“An idiot admires complexity, a genius admires simplicity” — Terry A. Davis
edytowany 2x, ostatnio: flowCRANE
HI
Zostało parę "nie zmiennych" informacji (tzn których się raczej nie zmienia w ciągu życia systemu) i myślę że wystarczy (tak jak pisałem nie jest to jakaś krytyczna funkcjonalność :) )
Olamagato
Użyj LBA sektora jakiegoś potrzebnego krótkiego pliku z danymi lub kodem programu z atrybutem system. Szansa, żeby na kopii plik znalazł się w tym samym miejscu jest niezwykle mała. Nawet nie trzeba pamiętać jaki to dysk lub partycja i może to być dysk przenośny. Nie ruszy tego defragmentator. Można połączyć z numerem seryjnym dysku. Soft może być typu portable.
Patryk27
@Olamagato: niektóre defragmentatory ruszają pliki systemowe, chociażby UltraDefrag, wtedy będzie wtopa :P
Olamagato
@Patryk27 - Ruszanie przez defragmentator pliku systemowego, to ewidentny błąd programu, albo wadliwy projekt. Pliki systemowe mają (przynajmniej w Windows) gwarancję nienaruszalności miejsca przechowywania i jest to jedyna cecha odróżniająca je realnie od plików ukrytych i pozostałych. Tak więc przejmowanie się jakimś programem, który nie ma certyfikacji zgodności z systemem nie jest chyba ok. Być może gwarancja nienaruszalności została w najnowszych wersjach systemu zdjęta, ale biorąc pod uwagę parcie na technologię SSD, to byłoby to bez sensu.
Koziołek
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6822
1

Myślałem, że cykl o germańskim programiście już się zakończył wraz z migracją kodu do springa i jego masowym poprawieniem... nope...

Kopiuj
if(failureMessage !=null){
//... blebleble
log(failureMessage.replaceAll("%s" , valueOf(userId)));
}else{
//... blebleble
log(failureMessage.replaceAll("%s" , valueOf(userId)));
}

No cóż...


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Zobacz pozostałe 6 komentarzy
Sarrus
@niezdecydowany a jak inaczej się zabezpieczyć przed nullami?
Koziołek
@Sarrus chociażby NullObject, jak masz Scalę to masz Optional. W przypadku kolekcji wszelakich nie zwracać null, a pustą kolekcję.
n0name_l
[Drobny OT]: Jak masz scalę (lub inny sensowny język, a właściwie sensownego liba), to masz również \/ lub Validation, które pozwalają na dodatkowe informacje (często samo to czy wartość jest czy jej nie ma nie jest wystarczające).
hauleth
@Sarrus masz np. takiego Rusta, który w ogóle nie ma null i masz tylko Optional jako null object, a wszystko działa.
vpiotr
@all_above: jak masz Java 8 to masz... Optional: http://blog.jhades.org/java-8-how-to-use-optional/ , @Sarrus: jak masz Boost to masz Boost.Optional. Przydatne do sygnalizacji że wynik niekoniecznie się pojawi. Eksperymentalnie jest jeszcze w C++: http://en.cppreference.com/w/cpp/experimental/optional
CI
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 6 lat
  • Postów:5
0

Delphi, biblioteka przetwarzająca dane w XMLu do PostScripta:

Kopiuj
hl.Text := hl.Text;

Do tego procedura, w której zakomentowano całe ciało oprócz wywołania innej procedury.

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Wygląda jak proteza odświeżenia komponentu, bo żadnego innego sensu nie mogę się dopatrzyć; To i tak nie zmienia faktu, że do odświeżania służą dedykowane metody;
abrakadaber
abrakadaber
jak się dupiatych bibliotek używa to tak to wygląda
doktorko
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Gallifrey
  • Postów:44
1

Chciałem tylko się dowiedzieć na kogo mam zagłosować...

blad-latarnika.png


Clara: How can you and the Doctor be friends?
Missy: Why shouldn't we be?
Clara: You spend all of your time fighting.
Missy: Exactly.
edytowany 1x, ostatnio: doktorko
niezdecydowany
niezdecydowany
nie umiesz interpretować wyników, masz błąd w php, tak więc musisz głosować na kogoś kto wcześniej programował, robił to Korwin, także już wiesz :D
spartanPAGE
I Obama. Mamy gdzieś na liście Obamę? :PP
doktorko
lubię Korwina :)
dzek69
kto to pisał.. błędy na produkcji wywalać? WRAZ Z ZAPYTANIEM? może jeszcze na dole gdzieś hasło do bazy podają? :D
Marooned
http://i.imgur.com/m2z2H6u.png -> po angielsku JKM jak się patrzy! Przypadek? Nie sądzę...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.