(==) Using config file: "/etc/X11/xorg.conf"
(EE) Failed to load module "vmwgfx" (module does not exist, 0)
(EE) vmware: Please ignore the above warnings about not being able to to load module/driver vmwgfx
if (User::$id == User::ANONYMOUS)
{
throw new Error(500, 'Edycja komentarzy możliwa jest przez zalogowanych użytkowników!');
// /\ internal server error
}
//...
if (isset($this->post->notify) && !$watch->isWatched($pageId, $moduleId, $pluginId))
{
$watch->watch($pageId, $moduleId, $pluginId);
}
elseif (!isset($this->post->notify) && $watch->isWatched($pageId, $moduleId, $pluginId))
{
$watch->watch($pageId, $moduleId, $pluginId); /** czyli jak wykonać 2 zapytania po to, żeby ustawić X - dop. jebany stasio **/
}
//...
$parser->setOption('html.allowTags', array('b', 'i', 'u', 'del', 'hr', 'sup', 'sub', 'code', 'kbd', 'tt', 'pre', 'strong', 'a'));
// jezeli html jest wylaczony - nalezy ustawic to w konfiguracji parsera
if ($enableHtml == 0)
{
$parser->setOption('html.allowTags', array(''));
}
//...
$enableAnonymous = $this->module->$module('commentEnableAnonymous', $pageId);
$enableHtml = $this->module->$module('commentEnableHtml', $pageId);
if ($enableAnonymous == 2) /** MAGIC NUMBERS!!! - dop. jebany stasio **/
{
throw new Exception('Pisanie komentarzy zostało wyłączone!');
}
if (User::$id == User::ANONYMOUS)
{
if ($enableAnonymous == 0)
{
throw new Exception('Aby napisać komentarz, musisz się zalogować!');
}
}
Ze źródeł serwera OpenTibia:
case ID_MENU_GAME_RELOAD_RELOADALL:
if(g_game.getGameState() != GAME_STATE_STARTUP)
{
if(g_monsters.reload())
{
if(commands.reload())
{
if(Quests::getInstance()->reload())
{
if(g_game.reloadHighscores())
{
if(g_config.reload())
{
if(g_actions->reload())
{
if(g_moveEvents->reload())
{
if(g_talkActions->reload())
{
if(g_spells->reload())
{
if(g_creatureEvents->reload())
{
if(Raids::getInstance()->reload() && Raids::getInstance()->startup())
{
g_npcs.reload();
std::cout << "Reloaded all." << std::endl;
}
else
std::cout << "Failed to reload raids." << std::endl;
}
else
std::cout << "Failed to reload creature events." << std::endl;
}
else
std::cout << "Failed to reload spells." << std::endl;
}
else
std::cout << "Failed to reload talkactions." << std::endl;
}
else
std::cout << "Failed to reload movements." << std::endl;
}
else
std::cout << "Failed to reload actions." << std::endl;
}
else
std::cout << "Failed to reload config." << std::endl;
}
else
std::cout << "Failed to reload highscores." << std::endl;
}
else
std::cout << "Failed to reload quests." << std::endl;
}
else
std::cout << "Failed to reload commands." << std::endl;
}
else
std::cout << "Failed to reload monsters." << std::endl;
}
break;
Bo wyjątki zachowuje się na wyjątkowe sytuacje. Na co komu logger skoro jest cout
?

Wibowit napisał(a)
/** czyli jak wykonać 2 zapytania po to, żeby ustawić X - dop. jebany stasio **/
???
isWatched będzie wykonany co najwyżej raz, chociaż ja bym tam i tak wstawił XORa :)
XOR zly bo dla 'isset and !iswatched' zwroci rowniez true, co jest wynikiem nie wspieranym przez obecny kod.
No i masz racje, nie zauwazylem pierwszego ifa ;d
Tosz to WTF.
Z pewnego frameworka webowego na New BSD:
if (!in_array(count($ip), array(0, 4, 8, 12)))
{
$count = count($ip);
while (--$count % 4 == 0)
{
if ($count % 4 == 0)
{
$ip = array_slice($ip, 0, $count);
}
}
}
Z tym while
i $count
to ktoś chyba popił i poczuł się "hackerem".
public static function transformUrl($text, $limit = false)
{
$limit = (int) $limit;
...
}
Bo grunt to dynamiczne typowanie.

- Rejestracja:prawie 16 lat
- Ostatnio:4 miesiące
Parę hacków z .net frameworka znalezionych reflectorem :) Wszystkie metody pochodzą z klasy Internal (to zresztą wszystkie jej metody).
private static void CommonlyUsedGenericInstantiations_HACK()
{
Array.Sort<double>(null);
Array.Sort<int>(null);
Array.Sort<IntPtr>(null);
new ArraySegment<byte>(new byte[1], 0, 0);
new Dictionary<char, object>();
new Dictionary<Guid, byte>();
new Dictionary<Guid, object>();
new Dictionary<Guid, Guid>();
new Dictionary<short, IntPtr>();
new Dictionary<int, byte>();
new Dictionary<int, int>();
new Dictionary<int, object>();
new Dictionary<IntPtr, bool>();
new Dictionary<IntPtr, short>();
new Dictionary<object, bool>();
new Dictionary<object, char>();
new Dictionary<object, Guid>();
new Dictionary<object, int>();
new Dictionary<object, long>();
new Dictionary<uint, WeakReference>();
new Dictionary<object, uint>();
new Dictionary<uint, object>();
new Dictionary<long, object>();
new Dictionary<MemberTypes, object>();
new EnumEqualityComparer<MemberTypes>();
new Dictionary<object, KeyValuePair<object, object>>();
new Dictionary<KeyValuePair<object, object>, object>();
Internal.NullableHelper_HACK<bool>();
Internal.NullableHelper_HACK<byte>();
Internal.NullableHelper_HACK<char>();
Internal.NullableHelper_HACK<DateTime>();
Internal.NullableHelper_HACK<decimal>();
Internal.NullableHelper_HACK<double>();
Internal.NullableHelper_HACK<Guid>();
Internal.NullableHelper_HACK<short>();
Internal.NullableHelper_HACK<int>();
Internal.NullableHelper_HACK<long>();
Internal.NullableHelper_HACK<float>();
Internal.NullableHelper_HACK<TimeSpan>();
Internal.NullableHelper_HACK<DateTimeOffset>();
new List<bool>();
new List<byte>();
new List<char>();
new List<DateTime>();
new List<decimal>();
new List<double>();
new List<Guid>();
new List<short>();
new List<int>();
new List<long>();
new List<TimeSpan>();
new List<sbyte>();
new List<float>();
new List<ushort>();
new List<uint>();
new List<ulong>();
new List<IntPtr>();
new List<KeyValuePair<object, object>>();
new List<GCHandle>();
new List<DateTimeOffset>();
RuntimeType.RuntimeTypeCache.Prejitinit_HACK();
new CerArrayList<RuntimeMethodInfo>(0);
new CerArrayList<RuntimeConstructorInfo>(0);
new CerArrayList<RuntimePropertyInfo>(0);
new CerArrayList<RuntimeEventInfo>(0);
new CerArrayList<RuntimeFieldInfo>(0);
new CerArrayList<RuntimeType>(0);
new KeyValuePair<char, ushort>('\0', 0);
new KeyValuePair<ushort, double>(0, -1.7976931348623157E+308);
new KeyValuePair<object, int>(string.Empty, -2147483648);
new KeyValuePair<int, int>(-2147483648, -2147483648);
Internal.SZArrayHelper_HACK<bool>(null);
Internal.SZArrayHelper_HACK<byte>(null);
Internal.SZArrayHelper_HACK<DateTime>(null);
Internal.SZArrayHelper_HACK<decimal>(null);
Internal.SZArrayHelper_HACK<double>(null);
Internal.SZArrayHelper_HACK<Guid>(null);
Internal.SZArrayHelper_HACK<short>(null);
Internal.SZArrayHelper_HACK<int>(null);
Internal.SZArrayHelper_HACK<long>(null);
Internal.SZArrayHelper_HACK<TimeSpan>(null);
Internal.SZArrayHelper_HACK<sbyte>(null);
Internal.SZArrayHelper_HACK<float>(null);
Internal.SZArrayHelper_HACK<ushort>(null);
Internal.SZArrayHelper_HACK<uint>(null);
Internal.SZArrayHelper_HACK<ulong>(null);
Internal.SZArrayHelper_HACK<DateTimeOffset>(null);
Internal.SZArrayHelper_HACK<CustomAttributeTypedArgument>(null);
Internal.SZArrayHelper_HACK<CustomAttributeNamedArgument>(null);
}
Whoa... Podejrzewam że w jakiś sposób jest to optymalizacja, ale nie wiem w jaki (tzn. oczywiście że wygenerowany kod dla List<int> zostaje w pamięci i nie trzeba go już ruszać, tylko dlaczego stworzenie wszystkich na raz, w tym paru zazwyczaj niepotrzebnych, ma zaletę nad tworzeniem wtedy kiedy potrzeba). A może się mylę i ten hack ma jakieś głębsze znaczenie?
private static T NullableHelper_HACK<T>() where T : struct
{
Nullable.Compare<T>(null, null);
Nullable.Equals<T>(null, null);
T? t = null;
return t.GetValueOrDefault();
}
Hmm. jakieś sugestie na co to może być hack?
private static void SZArrayHelper_HACK<T>(SZArrayHelper oSZArrayHelper)
{
int arg_06_0 = oSZArrayHelper.get_Count<T>();
T arg_0E_0 = oSZArrayHelper.get_Item<T>(0);
oSZArrayHelper.GetEnumerator<T>();
}
Kolejna optymalizacja?
// System.RuntimeType.RuntimeTypeCache
[SecuritySafeCritical]
internal static void Prejitinit_HACK()
{
if (!RuntimeType.RuntimeTypeCache.s_dontrunhack)
{
RuntimeHelpers.PrepareConstrainedRegions();
try
{
}
finally
{
RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeMethodInfo> memberInfoCache = new RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeMethodInfo>(null);
CerArrayList<RuntimeMethodInfo> cerArrayList = null;
memberInfoCache.Insert(ref cerArrayList, "dummy", MemberListType.All);
RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeConstructorInfo> memberInfoCache2 = new RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeConstructorInfo>(null);
CerArrayList<RuntimeConstructorInfo> cerArrayList2 = null;
memberInfoCache2.Insert(ref cerArrayList2, "dummy", MemberListType.All);
RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeFieldInfo> memberInfoCache3 = new RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeFieldInfo>(null);
CerArrayList<RuntimeFieldInfo> cerArrayList3 = null;
memberInfoCache3.Insert(ref cerArrayList3, "dummy", MemberListType.All);
RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeType> memberInfoCache4 = new RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeType>(null);
CerArrayList<RuntimeType> cerArrayList4 = null;
memberInfoCache4.Insert(ref cerArrayList4, "dummy", MemberListType.All);
RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimePropertyInfo> memberInfoCache5 = new RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimePropertyInfo>(null);
CerArrayList<RuntimePropertyInfo> cerArrayList5 = null;
memberInfoCache5.Insert(ref cerArrayList5, "dummy", MemberListType.All);
RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeEventInfo> memberInfoCache6 = new RuntimeType.RuntimeTypeCache.MemberInfoCache<RuntimeEventInfo>(null);
CerArrayList<RuntimeEventInfo> cerArrayList6 = null;
memberInfoCache6.Insert(ref cerArrayList6, "dummy", MemberListType.All);
}
}
}
I ostatni hack (na cache?). Najfajniej wygląda to try {} finally { /* cały kod */ }, jeszcze czegoś takiego nie widziałem...
O, i jeszcze jedno. Zastanawialiście się kiedyś do czego służy właściwość IsFixedSize w tablicach?
public bool IsFixedSize
{
get
{
return true;
}
}


Błąd
Zapytanie SQL:
INSERT INTO `symserwis1`.`obrazki` (`id`, `image1`, `image2`, `image3`, `image4`) VALUES (NULL, 0xffd8[...]
MySQL zwrócił komunikat:
#2006 - MySQL server has gone away



class Sort
{
const ASC = 'ASC';
const DESC = 'DESC';
private static $enable = true;
public static function disable()
{
self::$enable = false;
}
}


public function int($value)
{
return (int)$value;
}
public function string($value)
{
return (string)$value;
}
public function float($value)
{
return (float)$value;
}
@unikalna_nazwa, z tego samego co i to. To ten framework co gonił Duke Nukem Forever, autor 7 lat temu książkę o PHP pisał.

@szypxx, opakowanie rzutowania w funkcję, która nie robi niczego innego niż zmienia kolejność nawiasów (z (float)x
na float(x)
) czy DEBILNE nazwy składowych: zmienna enable
i metoda disable
... zmieniająca enable
. Z innych podobnych kwiatków: Sort::display
nie wyświetla sortowanych danych czy czegokolwiek sensownego, po prostu tworzy tag <a>
do sortowania wedle podanej kolumny SQL i wypluwa poprzez echo
.
$drop_char_match = array('^', '$', ';', '#', '&', '(', ')', '`', '\'', '|', ',', '?', '%', '~', '[', ']', '{', '}', ':', '\\', '=', '\'', '!', '"', '-', '%20', "'");
Kolejny genialny kod i nazwa zmiennej, rzeczy do stripnięcia. Dla mniej kumatych, przyjrzyjcie się uważnie wystąpienim %
. Pikanterii dodaje stosowanie security through obscurity w oprogramowaniu open source.

- Rejestracja:około 14 lat
- Ostatnio:ponad 9 lat
chyba Ci trochę ktoś zalazł za skórę że tak zgłębiasz ten framework?
(wcale tego nie piszę żeby przykopać inny temat)

Jeśeli zalazł to 8-9 lat temu i jakoś z tym żyję. Chciałem po prostu wykorzystać kojota u siebie, ale problem jest taki: ten kojot jest zapełnie jak kojot z kreskówki, na dłuższą metę wszystko musi spierniczyć. Kolejny raz próbuję to doprowadzić do ładu - to co działa dla 4p prawie zawsze (9 przypadków na 10) w przypadku ogólnym już głupieje albo nie działa wcale. Przykłady nazewnictwa dawałem, żeby jedno wywołanie metody ogarnąć to trzeba czasem 20 plików przelecieć, dokumentacja niewiele pomaga. Czytanie kodu to koszmar, poprawianie czegokolwiek również: nasz weteran PHP stosuje metodologię Kopiego-Pejsta, pokazana w poprzednim poście tablica stripowanych "znaków" występuje w czterech różnych miejscach frameworku, nawet pod tą samą nazwą i z podobnym kodem. Inne perełki występują nawet po 6-8 razy.
Diff zmian najnowszej wersji:
{
if (User::$id == User::ANONYMOUS)
{
- throw new Error(403, 'Edycja komentarzy możliwa jest przez zalogowanych użytkowników!');
+ throw new Error(500, 'Edycja komentarzy możliwa jest przez zalogowanych użytkowników!');
}
$id = (int) $id;
$comment = &$this->getModel('comment');
Pierwszy argument wyjątku to status HTTP, z nieautoryzowanego dostępu został zmieniony na wewnętrzny błąd serwera. Czyżby Adam aż tak bardzo bał się Anonimowych?
a ty byś się nie bał? w tym roku 4p odwiedzi tsunami
wiem że to dzieło newbie ale mnie strasznie to rozśmieszyło:
if(!($link_true === false))
@Rev: ta, wiem i ma być !== false bo link_true było wynikiem str_pos
chodziło o absurdalną nazwę zmiennej z sufiksem "true" przyrównywanej do "false" a potem jeszcze zaprzeczanie tego :D I oczywiście od razu wiadomo o co chodzi ;)
- Rejestracja:prawie 16 lat
- Ostatnio:5 miesięcy
- Postów:2514
może nie największe, ale i tak WTF ;p

- Rejestracja:prawie 15 lat
- Ostatnio:około 7 lat
If UCase(login) = "ADMIN" And UCase(pwd) = "QWERTY" Then
m_ok = True 'udane logowanie
Else
Tak - to kod produkcyjny, na szczęście wewnętrzny
Tak - zwykli użytkownicy są trzymani w bazie z zahaszowanym hasłem

- Rejestracja:około 17 lat
- Ostatnio:10 miesięcy
krwq napisał(a)
może nie największe, ale i tak WTF ;p
Gdzie tu WTF? Zgubiłeś konwencję wywołania której pewnie domyślnie chińskie GCC nie pokazuje.
Brak obsługi __thiscall w GCC który jest (albo i był z miesiąc temu) dostarczany z Code::Blocksem to jest dopiero WTF.


- Rejestracja:ponad 15 lat
- Ostatnio:około rok
- Postów:195
yyy ? NIESTETY źle się wkleiło i dupa nie oddaje tego . Orginalny topic : http://forum.programuj.com/viewtopic.php?t=12607
if (tablica==0);//po zadeklarowaniu tablicy trzeba określić jej warunki. Nie mogą same zera w grafie.
cout<<"Nie mogą być same zera. Ponownie wprowadź dane"<<endl;
cin>>liczba[i][j];
else
cout<<"W tablicy nie ma samych zer. Jest graf"<<endl;
{
if (liczba[1][2]==1)// instrukcje warunkowe decydują o tym czy wierzchołki się łączą jeśli się nie łączą to szukane są dalsze wiązanie
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
}
if (liczba[1][3]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[1][4]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[1][5]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[1][6]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[2][1]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[2][3]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[2][4]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[2][5]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[2][6]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[3][1]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[3][2]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[3][4]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[3][5]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[3][6]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[4][1]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[4][2]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[4][3]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[4][5]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[4][6]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[5][1]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[5][2]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[5][3]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;{
{
if (liczba[5][4]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[5][6]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[6][1]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[6][2]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[6][3]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[6][4]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
{
if (liczba[6][5]==1)
cout<<"wierzchołek 1 łączy się z wierzchołkiem 2">>endl;
else
cout<<"nie ma lączeń miedzy wierzchołkami">>endl;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}


Pewien fragment mojego kodu w PHP:
echo "Debug: "+$DebugVal01;
I 2 godziny odnajdywania błędu, dlaczego cholerstwo zawsze wywala 0
zamiast np.:Debug: 239
Jakby kto nie wiedział, to do łączenia znaków w PHP używa się kropki, czego oczywiście nie zauważyłem :P

- Rejestracja:około 17 lat
- Ostatnio:około 9 godzin
- Lokalizacja:Wrocław
Korzystam z biblioteki do serializacji CSV i [CIACH!] mnie strzela, bo jakiś geniuś wymyślił, żeby numerować kolumny od 1 jak humaniści zamiast od 0 jak ludzie. :/

- Rejestracja:prawie 14 lat
- Ostatnio:5 dni
- Postów:2512
Była sobie pewna strona w php napisana przez niepracującą w tej firmie już osobę i na niej dropdown z pewną informacją - nazwijmy to typem. Dane zapisywane były w tabeli nazwijmy DANE. Więc należało nazwy pewnych typów zmienić, inne dodać, a jeszcze inne odjąć. Spodziewając, że w bazie danych znajdę odpowiednią tabelę z id i nazwą, a w DANE id tego typu, myślę sobie "łatwizna". Po krótkiej analizie okazało się, że takiej tabeli nie ma, a typ jest wpisywany do DANE w postaci tekstowej (czyli niezgodnie z 3 postacią normalną!). Natomiast do dropdown dane pobierane były zapytaniem w stylu
SELECT distinct typ FROM DANE
Ręce mi opadły poniżej poziomu morza...


- Rejestracja:około 17 lat
- Ostatnio:około 9 godzin
- Lokalizacja:Wrocław
Nie WTF, ale trochę śmiesznie wygląda.
Fragment przykładowego kodu z MSDN:
Parallel.Invoke(action, action, action, action, action, action, action, action);

- Rejestracja:ponad 15 lat
- Ostatnio:około 3 lata
[...]
g++;
g++;
g++;
g++;
g++;
}
}
}
g++;
g++;
g++;
g++;
g++;
}
g++;
g++;
g++;
g++;
g++;
}
[...]




- Rejestracja:ponad 21 lat
- Ostatnio:ponad 12 lat
- Postów:7923
<@joosa> how do you say float in java? just 1.5f?
<@Gliptic> FloatFactoryFactory.getInstance(FloatFactoryFactory.defaultInstanceDescriptionString).getFactory(Locale.getLocale("en-US")).createBuilder().setString("1.5").getResult()
proszę powiedzcie, że to nie prawda :D :D :D

Zgodnie z życzeniem i prawdą odpowiadam: to nie jest prawda.

