Programistyczne WTF jakie Was spotkały

1
 
#include <stdio.h>

using namespace std;

int main()
{
    short int a = 0;
    short int tab[65535];
    for (int j=0;j<100000;j++)
    {

    tab[j] = ++a;
    printf("%i \n",tab[j]);
    }
    return 0;

}

Myślałem że program się wywali, a tymczasem zapętlił się w nieskończoność?

Gdy wypisuję zmienną j okazuje się że j jest short intem?

Ktoś mnie oświeci WTF?

7

Długa dyskusja email, po której w końcu ustalono, że certyfikaty na serwerach testowych muszą być poprawione tak by dostarczały identyfikację serwera.
Gość od serwerów (i od ich bezpieczeństwa) pisze, że nie może zaktualizować certyfikatów bo jego hasło nie działa.
Na czym polega WTF? na tym, że podał hasło które mu nie działa. Wątek nieszyfrowany, liczba dyskutantów duża, większość z firm trzecich :).

2

make clean przerywający pracę błędem bo nie znalazł jednego z plików do skasowania.

muszę mu podstawić cokolwiek pod brakującą binarkę (plik tekstowy) żeby mógł ją sobie spokojnie skasować i kontynuować pracę...

0
Azarien napisał(a):

make clean przerywający pracę błędem bo nie znalazł jednego z plików do skasowania.

Chyba (?) podobne cuda dzieją się przy projekcie w Apache Cordova w Visual Studio. Czasem nie da się zrobić rebuilda, bo brakuje pliku clean.bat. Rozwiązaniem jest przejście do innego commita w historii, clean projektu, a potem powrót do commita, na którym chcieliśmy pracować.

0

Za to kocham PHP

Catchable fatal error: Argument 1 passed to Model_Stories::getCustomizedFieldByStoryId() must be an instance of integer, integer given, called in /......../application/controllers/StoriesController.php on line 180 and defined in /......../models/Stories.php on line 820
8

Niekoniecznie programistyczne WTF ale nadal:

Skala na "wykresie" w BZ WBK jest logarytmiczna
Oto przykładowy wykres karty kredytowej - zielonkawe słupki to spłaty równe sumie wszystkich czerwonych słupków pomiędzy nimi
bzwbk.png
Bardzo czytelne, nieprawdaż?

5

Gra 8 Ball Pool na miniclip, gracz z małym levelem:

good.png

i gracz z maksymalnym rankingiem:

bad.png

Chyba ktoś tego nie przewidział.

6

W połowie 2015 roku Objective-C dorobiło się genericsów: http://yourcodesucksexception.blogspot.com/2015/06/whats-new-in-ios9-and-xcode-7-wwdc-2015.html
Niezły zapłon.

2
Wibowit napisał(a):

W połowie 2015 roku Objective-C dorobiło się genericsów: http://yourcodesucksexception.blogspot.com/2015/06/whats-new-in-ios9-and-xcode-7-wwdc-2015.html
Niezły zapłon.

A JavaScript po 20 latach dorobił się w końcu iterowania po tablicach.. ;)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of

5

Excel, kodowanie i podobne...

Generalnie pracuję obecnie z apką, która dostaje dane z BPM-a. jeden z serwisów przyjmuje pliki, ale że nie można ich przesłać bezpośrednio do nas to BPM używając javascriptowego FileReader tworzy z pliku string zakodowany w base64 i wysyła nam go jsonem.

W pewnych warunkach ma to sens i działa całkiem nieźle. Całość posypała się w momencie gdy zaczęliśmy używać plików CSV.

Rzecz polega na tym, że użytkownik pobiera taki plik od nas (bezpośrednio) po czym otwiera w Excelu, edytuje, zapisuje jako CSV i nam go odsyła (przez kodowany string).

Teraz mięsko

W bazie lądują "krzaki". Wielka awantura, task idzie tydzień wniosek jaki przedstawiłem managerowi - nie możemy tego naprawić, bo:

  1. Jak się plik CSV w kodowaniu UTF-8 otwiera w excelu to wszystko jest OK.
  2. Jak się go edytuje to nadal jest nieźle
  3. Jak zapisujesz jako CSV to excel zamienia kodowanie pliku na ANSI, czyli domyślną stronę kodową systemu zapisaną w rejestrze.
  4. Jak wywołujesz FileReader.readAsDataUrl to plik jest zapisywany jako base64 i wysyłany do nas, ale po naszej stronie dekodujemy go jako UTF-8 (i nie chcemy inaczej, bo nie mamy informacji o kodowaniu).
  5. Wrzucamy crap do bazy.

Właściwy WTF to sposób w jaki excel zapisuje pliki zmieniając po drodze kodowanie. Okazuje się, że nie można zmienić w żaden sposób.

// edit (z rozwiązaniem):

Zamiana formatu z csv na xlsx. Co okazało się stosunkowo szybkie, ale tylko dlatego, że połowa systemu pracuje na plikach excela.

1

sortowanie wojewódtsw po nazwie:

Collections.sort(wojewodztwa, new Comparator<WojewodztwoMapCmt>() {
	@Override
	public int compare(WojewodztwoMapCmt o1, WojewodztwoMapCmt o2) {
		String o1Name = o1.name().replace("Ś", "S").replace("Ł","L");
		String o2Name = o2.name().replace("Ś","S").replace("Ł","L");
		return o1Name.compareTo(o2Name);
	}
});

(gwt, client side). ładne i moje

2

KAWASAKI KMX 125 to pojazd zaliczany do kategorii Motocykle. KAWASAKI KMX 125 posiada nadwozie typu 0.0. Ten model samochodu jest sprowadzany do Polski od roku 1996.0. Jego moc maksymalna to 11.0 KW, a liczac w koniach mechanicznych, moc modelu KAWASAKI KMX 125 wynosi 15.0 KM. Silnik KAWASAKI KMX 125 o pojemnosci 125.0 cm3, to typ Cylinder stojacy, posiadajacy 1.0 cylindry. Na kazdy cylinder w silniku KAWASAKI KMX 125 przypadaja 0.0 zawory. Manualna skrzynia biegów posiada 6.0 biegów do przodu. Caly uklad napedowy KAWASAKI KMX 125 osiaga moment obrotowy w wysokosci 0.0 NM. KAWASAKI KMX 125 posiada 0.0, a typ paliwa na jakie jezdzi KAWASAKI to Benzyna . Wracajac do opisu nadwozia warto nadmienic, ze KAWASAKI KMX 125 posiada 0.0 drzwi, 0.0 siedzenia, a bagaznik ma maksymalna pojemnosc wynoszaca 0.0 litry. Wymiary samochodu to: 0.0mm dlugosci, 0.0mm szerokosci, i 0.0mm wysokosci.

Ilość zaworów itp. wyświetlają ze zmiennej (zmiennoprzecinkowa) ;p

9

1b.PNG

21

2015-11-14.png
Jednostka to jednostka - wynik oczywiście w dolarach kwadratowych
Dopisując na końcu "N" możemy uzyskać dolarokilogramy kwadratowe * metr na sekundę kwadrat

8

user image
Rozmowa programistów.

15

Trafiłem do projektu gdzie jest wielu Hindusów. Nie wiem czy każdy tak pisze ale to jeden z przykładów. Chyba chciał być bardzo pewny tego Stringa...

(String) (String) rs.getString("nazwa_kolumny");
16

Poniższe kody pochodzą z webowego panelu kontroli nad systemem NVR (aka "nagrywacz" obrazu z kamer IP).

Chińska jakość kodu :)

eval bez evala (pewnie szef zabrania):
(warto też zaznaczyć, że takie parsowanie JSONa nie jest uznawane za bezpieczne (chyba, że jesteśmy 100% pewni źródła stringa, który dekodujemy) - i co ciekawe - Chińczyk do projektu ostatecznie dorzucił jakiś open sourcowy parser JSONa (tak, wszyscy wiemy, że teraz obsługa JSON jest wbudowana, ale panel ma obsługiwać też stare przeglądarki)), ale chyba z niego nie korzysta, albo korzysta tylko w niektórych miejscach w kodzie

ParseJSON:function(str){
    return (new Function("","return "+str))();
},

Obsługa błędów oczywiście TODO - choć akurat to popularne i u nas, żeby nie robić obsługi błędów, przecież na pewno zadziała:

error: function(XMLHttpRequest, textStatus, errorThrown){
//TODO: 处理status, http status code,超时 408
// 注意:如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能
//是"timeout", "error", "notmodified" 和 "parsererror"。
}, 

Choć widać, też, że Chińczyk odbył wewnętrzną walkę, żeby może jednak ten handler błędu zrobić:
user image

Chiński font, na wypadek gdyby Ariala nie było:

font-family: Song, Arial, "宋体";

Chińczyk gubi się w ifach:
user image

Dwa zestawy funkcji do obsługi ciastek, bo jeden chyba sprawiał problemy:
user image

8

WTF!???????!!!!!!!!!!!????????

public static boolean isCurrentTimeBetween(Date startTime, Date endTime)
	{
		boolean result = false;		
		
		Date currentTime = new Date();
		
		SimpleDateFormat dateFormatter =  new SimpleDateFormat(LONG_DATE_FORMAT);
		SimpleDateFormat timeFormatter =  new SimpleDateFormat(TIME_FORMAT);
		
		String formattedTime =  dateFormatter.format(currentTime);
		String [] values = formattedTime.split(":");
		
		int currentDay = Integer.parseInt(values[0]);
		int currentMonth = Integer.parseInt(values[1])-1; 
		int currentYear = Integer.parseInt(values[2]);  
		
		int currentHour = Integer.parseInt(values[3]);
		int currentMins = Integer.parseInt(values[4]);
		int currentSecs = Integer.parseInt(values[5]);
		
		int startHour = 0;
		int startMins = 0;
		int startSecs = 0;
		
		int endHour = 0;
		int endMins = 0;
		int endSecs = 0;
		
	
		if(startTime!=null && endTime != null)
		{
			formattedTime = timeFormatter.format(startTime);
			values = formattedTime.split(":");
			startHour = Integer.parseInt(values[0]);
			startMins = Integer.parseInt(values[1]);
			startSecs = Integer.parseInt(values[2]);
			
			formattedTime = timeFormatter.format(endTime);
			values = formattedTime.split(":");
			endHour = Integer.parseInt(values[0]);
			endMins = Integer.parseInt(values[1]);
			endSecs = Integer.parseInt(values[2]);
			
		}
		else
		{
			/*
			 * If start end time not specified, use current date as start and end time
			 */
			startHour = Integer.parseInt(values[3]);
			startMins = Integer.parseInt(values[4]);
			startSecs = Integer.parseInt(values[5]);
			
			endHour = Integer.parseInt(values[3]);
			endMins = Integer.parseInt(values[4]);
			endSecs = Integer.parseInt(values[5]);
		}
		
		GregorianCalendar startCal = new GregorianCalendar(currentYear, currentMonth, currentDay, startHour, startMins, startSecs);
		GregorianCalendar endCal = new GregorianCalendar(currentYear, currentMonth, currentDay, endHour, endMins, endSecs);
		GregorianCalendar currentCal = new GregorianCalendar(currentYear, currentMonth, currentDay, currentHour, currentMins, currentSecs);
		result = (currentCal.compareTo(startCal)>=0) && (currentCal.compareTo(endCal)<=0);
		return result;
	}
7

Praca w Azji.

2
    /**
     * @deprecated use setDocumentID() instead
     * @param int $id the document ID
     * @return fluent interface
     */
    public function setId($id)
    {
        $this->_id = $id;
        return $this;
    }

// Ok ....

// exception 'BV_Exception' with message 'Call to undefined method setDocumentID

Ktoś chyba próbował refactoringu ale się poddał

0

user image

0

WTF

/**
    * Closes dialog and adds response function
    * 
    * @param        string [$eval]
    */
    public function dialogResponseClose($eval = null){
        $this->dialogResponse($eval);
        $this->dialogRefresh('ok'); 
    }
3

albo ze mna jest cos zle, albo to jest duzy WTF :D

Mam za zadanie zrobic przycisk ktory czysci dane ze wszystkich tabel. Baza danych to influxDB. Oczywiscie dokumentacja/google nie pomaga. Jest jedno rozwiazanie.

show MEASUREMENTS i w zaleznosci to co zwroci zrobic
drop measurment from (...) gdzie ... jest nazwa measurments (a mam ja z pierwszego polecenia) (bo nie ma delete, trzeba po prostu zdropowac)

co uslyszalem?
Wez zrob drop database

przez chwile myslalem, ze ze mnie robia zarty, ale nie! Mam zrobic Drop database

I w sumie drop database mam zrobic dla sql servera takze :D

A... rozwiazanie wydaje sie dzialac... jednak czuje, ze beda duze konsekwencje z tym.

3

A nie mozesz zrobić truncate na każdej tabeli skoro nie chcesz dropować bazy? Ale jeśli faktycznie masz skasować wszystkie dane to nie widzę problemu ze zrobieniem dropa, ale taki guzik opatrzyłbym 3 dialogami "czy jesteś pewien", koniecznością wpisania 70-znakowego kodu i przekręceniem jednocześnie 2 kluczyków. Bo jak klient przypadkiem kliknie to wiesz :D

2

Myślałem, że po zobaczeniu kolumny w tabeli pod tytułem is_wielka_plyta i molested unmolested jako zatruty nic mnie już nie zdziwi, a tu proszę:

public function getRodzajFromView() {

// ...

return $rodajs // nawet odmienił
}
3

Duże korpo. W projekcie mamy politykę zero warningów. Jak ominąć warning kompilatora deprecated conversion from string constant to 'char'* i stworzyć tablicę 10 elementów. Nie pisane przez hindusa ani praktykanta...

const std::string account = user + "@" + hostname;
std::vector<char *> commandVector;
commandVector.push_back(const_char<char*>("ssh"));
commandVector.push_back(const_char<char*>(account.c_str());
commandVector.push_back(const_char<char*>("-oBatchMode=no"));
commandVector.push_back(const_char<char*>("-oPubkeyAuthentication=no"));
commandVector.push_back(const_char<char*>("-oStrictHostKeyChecking=no"));
commandVector.push_back(const_char<char*>("-oNumberOfPasswordPrompts=1"));
commandVector.push_back(const_char<char*>("-oConnectTimeout=2"));
commandVector.push_back(const_char<char*>("-oUserKnownHostsFile=/dev/null"));
commandVector.push_back(const_char<char*>("version"));
commandVector.push_back(NULL);
char **command = &commandVector[0];
execvp(command[0], command); //should return here if everything fine
exit(-1); //something went wrong
2

zawsze sprawdzaj w dokumentacji mowili...

http://advosol.com/manuals/opcdanet/topic314.html

mowili ze All oznacza wszystko...

spedz 3 godziny prywatnego czasu (niewazne dlaczego) na zrobieniu paginacji zeby nie pobieralo 100k rekordow na raz...

okazuje sie ze All pobieraje jedynie dzieci od Parenta (ale nie dzieci dzieci...)

okazuje sie, ze teraz mozna zrobic lazy loading i to bardzo latwo...

okazuje sie, ze deadline jest dzisiaj :D

4

user image

1

Na PS4 inet_ntoa to funkcja o nazwie *Aton, a inet_aton to *Ntoa ; >

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