Programistyczne WTF jakie Was spotkały

0

Moje małe osobiste:

void wywal_sie()
{
    int tab[1];
    tab[100] = 123;
    } 

To miało służyć do zamknięcia programu, ale nie dokończyłem programu z tym :P.

0
Shalom napisał(a)

Nie prościej było wywołać nullpointerexception? Albo division by zero? Trochę pewniejsze ...

int main()
{
  int *p = 0;
  *p /= 0;
}
0

Mam krótsze:

int i=1/0;

Ewentualnie można zawsze tak:

while(1);
0

Mamy problem w GUI (Swing) - jest jakis memory leak i jak sie glowne okno chwyci i rusza wystarczajaco dlugo, to peka w szwach i wybucha. Nie wiem dokladnie o co chodzi, podobno jakies cos w Substance ze za duzo cachuje w jakichs statycznych cache czy cos.
W kazdym razie, propozycja CTO / tech leada / mojego bezposredniego przelozonego: 'w repaint zrobimy System.out.println i wypiszemy max i used momory i sie dowiemy co jest nie tak'.

0

Jak zwykle wiesz co mowisz. Swinga uzywamy w ten sposob, ze korzystamy z biblioteki Canoo ULC (Ultra Light Client ;d) - koduje sie podobnie do Swinga tyle ze po stronie serwera (ULCButton, ULCComboBox itp, tzw server-side half objects), a biblioteka po stronie klienta korzysta ze Swinga (client-side half object) i odzwierciedla to, co jest 'pokazywane' na serwerze. W ten sposob w naszym 'GUI' (na serv) mamy dostepne lokalne EJB, CDI, JPA i takie tam. Dziala nawet calkiem fajnie, tylko ten Swing... Wszystko deployowane za pomoca JNLP, a Java Web Start do stabilnych i bezblednych implementacji nie nalezy, do tego dochodza niekomatybilne zmiany miedzy kolejnymi updatami, np. 1.6_20 a 1.6.21. Kolesie od GUI placza i zlorzecza, glownie na Swinga.

Dzisiaj opowiedzialem kolezance o 'dupa debugging' (System.out.println("dupa") aby sprawdzic czy sie kod wykonuje czy nie), i stwierdzilem ze nasz CTO na tyle opanowal ta technike ze nawet umie nia profilowac aplikacje.

BTW, jak twoj Stack Probe? Sukces komeryjny czy sie nie wiedzie? Niedlugo bedziemy musieli na powaznie profilowac, wiec bedziemy sie rozgladac, i bardzo chenie polece rodzimy produkt ;d

0

@Krolik: niestety pytasz nieodpowiednia osobe, znam tylko z nazwy, nie uzywalem.

0

"Baza danych" z naciskiem na wydajność: Edycja obiektu

0

Typowy, niestety, przykład na znajomość podstaw JavaScriptu, przykład z forum (troszkę przerobiłem):

eval("document.getElementById('"+elem.id+"').style." + propName +"='" + propValue + "';");

A autor chciał osiągnąć po prostu:

elem.style[propName] = propValue;

I w tak właśnie "uzasadniony" sposób najczęściej ludzie używają evila() w JavaScripcie...

1

A propos eval, moje dzisiejsze odkrycie - w PHP eval nie jest funkcją tylko 'elementem składniowym', przez co tego cudu techniki nawet do disabled_functions się dopisać nie da... Kolejny powód żeby nie tykać PHP.

0

Combobox firmy Telerik, o takie coś: http://demos.telerik.com/aspnet-ajax/combobox/examples/overview/defaultcs.aspx

Domyślnie po kliknięciu myszką zaznacza się cały tekst, przez co nie da się go wyciąć, co jest irytujące. Aby wyłączyć takie działanie wystarczy ustawić właściwość EnableTextSelection... na false. :D :D :D

0

dzisiaj się z takim plikiem nagłówkowym spotkałem:

#pragma once

class CROZGALEZIENIE
{
public:
	CROZGALEZIENIE(void);
public:
	~CROZGALEZIENIE(void);
public:
	int Ile;
public:
	int L;	//1-L,T,,K
public:
	int T;
public:
	int x;
public:
	int y;
public:
	bool used;
public:
	bool uzyty;
public:
	bool L_typ;
public:
	bool T_typ;
public:
	bool LT_typ;
public:
	bool O_typ;
public:
	int nr;
};
0

Z serii "żarty programisty".

 
void jakisEvent(...)
{
  if(warunekWyjscia)
  {
    return;
    int a = 0;
    a = a / a;
  }
  
  jakisKod();
}
0

Jaki to jezyk programowania? Wyglada na Jave, a jesli tak, to ten kod jest kompletna bzdura - on sie nie skompiluje moim zdaniem. Po return dostaniesz blad kompilatora ze kod jest nieosiagalny.

0

void jakisEvent**(...)**

C++ :/

0

Jak na mój gust to C++ i kod skompiluje się bez problemu :)

0

To nie będzie C - przecież jak byk widać tam this (przez domniemanie) XD

0

Ja tak nie raz już robiłem:p Po prostu żeby nie komentować tego co dalej, tylko od razu zakończył funkcję. Przydatne czasami przy "debuggingu"
W Javie i innych językach można to załatwić w taki sposób:

if(true) return;
1

Dla mnie epickim WTF jest implementacja kolejki w STL'u gdzie mamy swobodny dostęp do wszystkich elementów oraz jest ona zrobiona na wektorze zamiast na listach o.O

0

Kilka godzin straciłem nad problemem: program działa spod IDE, a wywala się skompilowany z makefile'a.
W końcu okazało się, że w %PATH% trafił się inny exek o identycznej nazwie (mt.exe) co potrzebny do builda.

0
SELECT node.nid AS nid,
   node.title AS node_title,
   node.created AS node_created
 FROM node node 
 LEFT JOIN term_node term_node_value_0 ON node.vid = term_node_value_0.vid AND term_node_value_0.tid = 38
 LEFT JOIN term_node term_node_value_1 ON node.vid = term_node_value_1.vid AND term_node_value_1.tid = 55
 LEFT JOIN term_node term_node_value_2 ON node.vid = term_node_value_2.vid AND term_node_value_2.tid = 2
 LEFT JOIN term_node term_node_value_3 ON node.vid = term_node_value_3.vid AND term_node_value_3.tid = 49
 LEFT JOIN term_node term_node_value_4 ON node.vid = term_node_value_4.vid AND term_node_value_4.tid = 4
 LEFT JOIN term_node term_node_value_5 ON node.vid = term_node_value_5.vid AND term_node_value_5.tid = 37
 LEFT JOIN term_node term_node_value_6 ON node.vid = term_node_value_6.vid AND term_node_value_6.tid = 53
 LEFT JOIN term_node term_node_value_7 ON node.vid = term_node_value_7.vid AND term_node_value_7.tid = 3
 LEFT JOIN term_node term_node_value_8 ON node.vid = term_node_value_8.vid AND term_node_value_8.tid = 42
 LEFT JOIN term_node term_node_value_9 ON node.vid = term_node_value_9.vid AND term_node_value_9.tid = 46
 LEFT JOIN term_node term_node_value_10 ON node.vid = term_node_value_10.vid AND term_node_value_10.tid = 41
 LEFT JOIN term_node term_node_value_11 ON node.vid = term_node_value_11.vid AND term_node_value_11.tid = 50
 LEFT JOIN term_node term_node_value_12 ON node.vid = term_node_value_12.vid AND term_node_value_12.tid = 35
 LEFT JOIN term_node term_node_value_13 ON node.vid = term_node_value_13.vid AND term_node_value_13.tid = 40
 LEFT JOIN term_node term_node_value_14 ON node.vid = term_node_value_14.vid AND term_node_value_14.tid = 56
 LEFT JOIN term_node term_node_value_15 ON node.vid = term_node_value_15.vid AND term_node_value_15.tid = 5
 LEFT JOIN term_node term_node_value_16 ON node.vid = term_node_value_16.vid AND term_node_value_16.tid = 47
 LEFT JOIN term_node term_node_value_17 ON node.vid = term_node_value_17.vid AND term_node_value_17.tid = 54
 LEFT JOIN term_node term_node_value_18 ON node.vid = term_node_value_18.vid AND term_node_value_18.tid = 51
 LEFT JOIN term_node term_node_value_19 ON node.vid = term_node_value_19.vid AND term_node_value_19.tid = 36
 LEFT JOIN term_node term_node_value_20 ON node.vid = term_node_value_20.vid AND term_node_value_20.tid = 45
 LEFT JOIN term_node term_node_value_21 ON node.vid = term_node_value_21.vid AND term_node_value_21.tid = 1
 LEFT JOIN term_node term_node_value_22 ON node.vid = term_node_value_22.vid AND term_node_value_22.tid = 43
 LEFT JOIN term_node term_node_value_23 ON node.vid = term_node_value_23.vid AND term_node_value_23.tid = 48
 LEFT JOIN term_node term_node_value_24 ON node.vid = term_node_value_24.vid AND term_node_value_24.tid = 39
 LEFT JOIN term_node term_node_value_25 ON node.vid = term_node_value_25.vid AND term_node_value_25.tid = 44
 LEFT JOIN term_node term_node_value_26 ON node.vid = term_node_value_26.vid AND term_node_value_26.tid = 52
 WHERE (node.status <> 0) AND (term_node_value_0.tid = 38 OR term_node_value_1.tid = 55 OR term_node_value_2.tid = 2 OR term_node_value_3.tid = 49 OR term_node_value_4.tid = 4 OR term_node_value_5.tid = 37 OR term_node_value_6.tid = 53 OR term_node_value_7.tid = 3 OR term_node_value_8.tid = 42 OR term_node_value_9.tid = 46 OR term_node_value_10.tid = 41 OR term_node_value_11.tid = 50 OR term_node_value_12.tid = 35 OR term_node_value_13.tid = 40 OR term_node_value_14.tid = 56 OR term_node_value_15.tid = 5 OR term_node_value_16.tid = 47 OR term_node_value_17.tid = 54 OR term_node_value_18.tid = 51 OR term_node_value_19.tid = 36 OR term_node_value_20.tid = 45 OR term_node_value_21.tid = 1 OR term_node_value_22.tid = 43 OR term_node_value_23.tid = 48 OR term_node_value_24.tid = 39 OR term_node_value_25.tid = 44 OR term_node_value_26.tid = 52)
   ORDER BY node_created DESC
 LIMIT 0, 10
 

drupal... :|

0

Ozesz w morde - @cepa - czegos takiego dawno nie widzialem :D
To chyba swiadczy o jakosci kodu tych wszystkich pseudo cmsow typu drupal czy joomla ;)

1

Z bazy danych przychodzi lista wynikow, bardzo krotka, ladowana cala w poamieci za pomoca EclipseLink. Co w niej jest wazne to to ze elementy maja miec konkretna kolejnosc okreslana przez uzyty 'order by'. Kod wyglada mniej wiecej tak:

List<FooZBazy> results = service.get()...
Collection<Costam> list = new ArrayList<Costam>(results.size());
for (FooZBazy f : results) {
    Costam c = stworzCostamZFoo(f); // tutaj uzywane sa inne obiekty, jakies uslugi itp, niewazne
    list.add(c);
}
return c;

(ten kod w rzeczywistosci ma inne nazwy zmiennych, chodzilo mi o logike - prosta jak drut)

Otoz okazalo sie ze jednak UI pokazywane jest w zlej kolejnosci. Po wielkich dyskusjach moj tech lead (koles z 25 lat doswiadczenia, w Javie 12, ego nadmuchane ze moze odleciec) poprawil kod na:

List<FooZBazy> results = service.get()...
List<Costam> list = new ArrayList<Costam>(results.size()); // tak, tylko to zmienil
for (FooZBazy f : results) {
    Costam c = stworzCostamZFoo(f); // tutaj uzywane sa inne obiekty, jakies uslugi itp, niewazne
    list.add(c);
}
return c;

i w szoku ze nadal nie dziala! Zalamka nr 1. No wiec wyjasnilem ze akurat w tym fragmencie kolejnosc jest zachowana, nawet musialem pisac przykladowy kod aby wyjasnic ze sam interfejs nic nie zmienia. Nie chcial wierzyc i tak, no ale szukamy dalej.
Okazalo sie ze koles od UI bierze ta kolekcje, wklada ja do HashMap i mapuje jakastam nazwe do calego obiektu, zeby mogl latwo robic lookupy po nazwie. Zalamka nr 2 - nigdy nie uzywa tych lookupow, poza kodem w ktorym iteruje po kluczach tej mapy po to aby pobrac wartosci. Iterowac po liscie jest przeciez za malo hackowate.
Zalamka nr 3 - jak znalezlismy ten kod i powiedzialem ze tam jest problem, nie rozumial! Nie wiedzial jak to naprawic, nie rozumial ze wcale mu ten lookup nie jest potrzebny! No wiec dalem za wygrana w tym wypadku, i po prostu powiedzialem zeby uzyl LinkedHashMap bo ona chociaz przechowuje kolejnosc wstawien. Nie zrozumial o co chodzi. No w kazdym razie dziala. Koles 10 lat doswiadczenia, od samego poczatku tylko z Java i niczym wiecej. Na szczescie inni sa duzo lepsi od tych.

0

Kawalek kodu zadania na zaliczenie(kumpel mi podeslal link do jakiegos gotowca, ktory znalazl):

 void wypelnij()
{	
	for(int i=0;i<NUM_POSS;i++)
		possb[i]=true;

	int n=0;
	for(int i0=1; i0>=0; i0--)
		for(int i1=1; i1>=0; i1--)
			for(int i2=1; i2>=0; i2--)
				for(int i3=0; i3<2; i3++)
					for(int i4=0; i4<2; i4++)
						for(int i5=0; i5<2; i5++)
							for(int i6=0; i6<2; i6++)
								for(int i7=0; i7<2; i7++)
								{
									poss[n][0]=i0;
									poss[n][1]=i1;
									poss[n][2]=i2;
									poss[n][3]=i3;
									poss[n][4]=i4;
									poss[n][5]=i5;
									poss[n][6]=i6;
									poss[n][7]=i7;
									n++;
								};
	
	for(int i=7; i<NUM_K;i++)
		possb[znajdz(i)]=false;

	
}

a ja myslalem, ze w moim kodzie jest duzo zagniezdzonych petli....
Jak sie dobrze przyjrzec to widac, ze wszystkie petle wykonuja sie.... 2 razy :|

0

mi dzisiaj zajęło dłuższą chwilę znalezienie mojego błędu dlaczego nie to co trzeba się usuwa w bazie:

if ($idkontakt==null || $id=null)
...

poza tym teraz się poczaiłem, że w zasadzie powinno być === (dziwny ten php)

0
int val = 0;
int chr = 0; 
while (*toInt) {
    switch(*toInt) { 
    case '0' : chr = 0;
                 break;
    case '1' : chr = 1; 
                 break;
    ....

    case '9' : chr = 9;
                 break;
    case 'A':
    case 'a':  chr =10;
                 break;
     ....

    case 'F':
    case 'f':  chr =15;
                 break;     

    }
    val = val * 16 + chr;
    toInt++;
}

Kod miał zamieniać liczbe hex zapisana w stringu na liczbe całkowita...

0

Testując sobie grzecznie aplikację www (już klikając po interfejsie) nagle dostałem wyjątek z komunikatem:

String or binary data would be truncated. The statement has been terminated

Komunikat jasny jak słońce, w przypadku gdy próbujemy wstawić do bazy ciąg znaków lub bajtów nie mieszczący się w kolumnie. Problem w tym, że ja nigdzie takich dużych danych nie miałem. :) Nawet by mi się nie chciało tyle wpisywać... Ale ok, tabela ma kolumnę nvarchar(4000), więc to pewno o to chodzi. Dane do niej są pobierane od użytkownika przez taką fajną kontrolkę: http://www.telerik.com/products/aspnet-ajax/editor.aspx Podejrzałem w debugerze, co ona zwraca do aplikacji i wyglądało to tak:

gsagasre

Przy czym gsagasre ja wpisałem faktycznie. Sprawdzam w Firebugu i faktycznie są tam te wszystkie divy... Tylko skąd się wzięły? Hmm... Cleeki to nazwa pewnej wtyczki do FF, której używam, wyłączyłem - wszystko było ok.

Nie wiem, czemu wtyczka wstawiała ten kod do iframe, na którym oparty jest edytor. Ale głupszego błędu w życiu nie spotkałem. :D

0

Taki kod ostatnio spotkałem:

private static bool CheckIfEditable(SomeClass so)
{
    if (so.Status.Id == SomeClassStatusesRepository.FindSomeClassStatusId(SomeClassStatusEnum.SomeValue))
        return true;
    else
        return false;
}

Wyszukiwanie (na podstawie wartości enuma) ID obiektu klasy słownika z bazy, w celu sprawdzenia, czy status się zgadza...
A wystarczyło po prostu tak:

private static bool CheckIfEditable(SomeClass so)
{
   return (so.Status.EnumValue == SomeClassStatusEnum.SomeValue);
}
1

aplikacja rzuca wyjątek, ale niewiele on mówi, więc zaglądam do kodu:

catch (ImageServiceException e) {
	if (e.getCause() instanceof NullPointerException){
		throw new IllegalStateException(
		"Plik jest błędny");
	}else{
		logger.log(Level.ALL, e.getMessage());
		throw new IllegalStateException("Błąd przetwarzania");
	}
}catch (GeneralSecurityException e) {
	logger.log(Level.ALL, e.getMessage());
	throw new IllegalStateException("Błąd techniczny");
}catch (Exception e) {
	logger.log(Level.ALL, e.getMessage());
	throw new IllegalStateException("Błąd przetwarzania");
}
 

Nie ma to jak szczegółowa informacja o błędzie:)

0
if (FALSE == initialize()) {  // initialize return FALSE on Success
   ...
} else {
  exit(1);
}
0

właśnie się pojawiło na forum http://4programmers.net/Forum/Delphi_Pascal/180690-problem_z_funkcja - tak też w sumie można. BTW dobrze, że nie pisał kik 5x5 :p

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