Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
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

ShookTea
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.
Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • 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...

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.

  • Rejestracja: dni
  • Ostatnio: dni
11

wypłata Western Union na konto w bankomacie BZ WBK

user image

teraz mi będzie brakowało 0,0000000000001 zł :/

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • 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?

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
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?

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
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/

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
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ść.

LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Biłgoraj
  • Postów: 54
0

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

  • Rejestracja: dni
  • Ostatnio: dni
7

Dokumentacja tabel Comarch ERP XL

Tabela: CDN.Rezerwacje
Kolumna: Rez_Typ
Opis: Typ rezerwacji: 1 - rezerwacja 0 - nierezerwacja

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • 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
  • Rejestracja: dni
  • Ostatnio: dni
6

st.JPG

n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • 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

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: 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()
})
  • Rejestracja: dni
  • Ostatnio: dni
3

Aplikacja internetowa:
1.Napisana metodą Copy'ego Paste'a w php.
2.Zamiast metod do wyciągania zapytań kod zapytanie + pentelka wyciągająca dane.
3.Kod html przemieszany z php.
4.Ostatni WTF - system posiada feature mailingu. Obsługuje wiele domen. do każdego maila są templatki. Jeślli istnieje templatka pod daną stronę jest używana customowa. Jeśli nie istnieje defaultowa (na razie ok) ale.. Jeśli templatka customowa = templatce customowej to templatka customowa jest usuwana z bazy.
Jakie było moje zdziwienie gdy klient zgłosił mi że maile nie dochodzą - ponieważ dorabiałem coś stwierdziłem że oprę się na customowych templatkach (potworzyłem i działało, zrobiłem defaultowe templatki takie same jak customowe (nie wiedząc o wspomnanej wyżęj zależności) . W efekcie jak klient nic nie zmienił i kliknął save .. metoda save usuwała templatkę customową i zwracała komunikat - zapisano pomyślnie - tyle że kod przestawał działać bo defaultowa temnplatka była usuwana. Rozumiem że to taka pułapka na wypadek gdyby nie twórca systemu chciał coś sobie dopisać...

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
31

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

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
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/
fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
3

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

captcha.png

Marooned
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
14

miejsce instalacji.png

  • Rejestracja: dni
  • Ostatnio: dni
5

z serii "Złote myśli Microsoftu":

Udzielając dostępu innym osobom, wybierasz...

tworzenie serwera VPN PPTP w windows 8.1 napisał(a)

user image

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
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 :|.

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1862
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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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ć.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • 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óż...

CI
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.

doktorko
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gallifrey
  • Postów: 44
1

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

blad-latarnika.png

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.