Spot the bug

// some replace magic.
Value = Regex.Escape(Value);
Value.Replace("%s", "(.+?)");
Value.Replace("%d", "([0-9]+)");
if (Value.Contains("%s"))
{
throw new Exception("Replace fucked up at: " + Key);
}

Result? Unhandled Exception

Czemu o czemu to wywala wyjątek? Jako że zapewne nikt gotów śpieszyć mi z pomocą tutaj nie zajrzy, dodam tylko dla wyjaśnienia, że metoda Replace jest opisana jako: Replaces all occurrences of a specified String in this instance, with another specified String, z akcentem na all, a Contains oczywiście sprawdza, czy string takowy tekst zawiera. No i najwyraźniej mimo, że kazałem mu zamienić wszystkie wystąpienia %s, nadal występuje ono po zamianie! _O_… Czemu?

O… Błąd już znalazłem, jak zwykle kretyński. Szkoda, że takie błędy popełniam całe życie i nie tylko w programowaniu.

Notka o tak, dla rozluźnienia.

Bezproduktywność i bezsens.

Jak zapewne powszechnie wiadomo, najbardziej lubiane (:P) są tu notki o absolutnie wszystkim. Wszyscy wiemy także, że o wszystkim = o niczym. I cały ten blog jest o niczym i czasem wydaje mi się z lekka pozbawiony sensu.

Bo dobre blogi to praktycznie zawsze blogi specjalistyczne [1, 2, 3, ew. np. 4; kurde, ile ja linków fajnych pogubiłem...]. Na jeden konkretny temat, dla osób nim zainteresowanych. Ich absolutnym przeciwieństwem są „blogi nastolatek” [1, 2] (losowe, bez obrazy dla właścicielek/li, pod nr 1 panienka w ogóle miała zajebisty patent pt. „kolor tekstu = kolor tła”, czyli „nic nie widzę, póki się grafika z powolnego serwera nie załaduje”; podałbym jeszcze link do siostry jako przykład kretynizmu najwyższego, ale się wstydzę i wypieram.). Gdzieś pomiędzy nimi znajdą się jeszcze blogi osobiste [1], szczere i poważne. Do takich też mi daleko i to się raczej nie zmieni.
A ten? Ten jest o niczym. Bez żadnych wartości merytorycznych, więc odwiedzany tylko przez… hm, no właśnie, przez kogo? I po co? ;P

Skoro już o blogach – Riddle ostatnio wygłosił kilka uwag, nt. blogowania w Polsce. Bo to jest właśnie ta nasza polska pieprzona mentalność – nie należy sobie pomagać, a zgnoić. Wszystkiego trzeba się czepiać, mimo, że sami często robią tak samo.
w Polsce jest tak mało blogów posiadających oryginalny look & feel.” – a co sądzicie o moim? Szczerze.
Tutaj jeśli post jest śmieszno-szyderczy w rządku ustawią się oburzeni i obrażeni. Nie można napisać czegoś od siebie” – zdecydowanie tak. Chociaż rozumiem te słowa troszkę inaczej, niż ich autor, to jednak podpisuję się pod tym rękoma i nogami.
Oczywiście ta nasza wspaniała mentalność dotyczy nie tylko blogowania. Jak przeczytałem matce nagłówek z gazety, że prezes sąsiedniej spółdzielni mieszkaniowej umorzył biednej cukierni dług 50 000 zł to zareagowała natychmiast: „wziął w łapę!”.
Nawet w TV ostatnio jeden amerykanin się wypowiadał: w stanach ktoś, kto widzi luksusowy dom sąsiada myśli: „Ciekawe, jak fachowo muszę pracować by też taki wybudować”, a w Polsce: „Ciekawe, co, komu i ile razy ukradł, pieprzony oszust!”.

Anyway… Poczytaj sobie całą fajną resztę tego wpisu »

Z życia programisty :(

- Bez sensu, najpierw bez powodu przestało działać, a teraz bez powodu i żadnych zmian w kodzie znowu działa poprawnie…
- I na tym właśnie polega programowanie.Adapted from: GGblog

And computer code never compiled the first time out. The programmers always had to go back and fix the lines. And even after it was compiled, a computer program never ever worked right the first time. Or the second time… Or the hundredth time… It had to be debugged, and debugged again and again
…and again.Michael Crichton, ‚Prey’ („Rój”)

Tym optymistycznym wstępem wprowadzam biednego czytelnika w małą wycieczkę po moim świecie. I moim życiu. Życiu, w którym – szczerze mówiąc – więcej mam pomysłów na to, co „możnaby zrobić” niż czasu, chęci, a najczęściej [czasu i] wiedzy.

Najczęstszą przyczyną braku czasu była oczywiście szkoła – trzeba uczciwie przyznać, że jest ważniejsza, niż własne fanaberie. Drugą – rodzina ;P Tylko kiedy ich tu nie ma można się naprawdę czymś (w skupieniu) zająć – jeśli oczywiście nie strzelę sobie ‚samobója’ i nie rozproszę się rozmowami na gadu. Cóż, life’s brutal :P

Cytując z opisów gg: Samobójstwo mężczyzny: skok z jego EGO na jego IQ. Co właśnie popełniłem przy okazji mojego jedynego własnego i udanego (i rozwijanego) programu, ICQa.
Każda kolejna wersja, jaką oficjalnie zamieszczam w internecie wychodzi na światło dzienne dopiero kiedy mam pewność, że jest na to „dość dobra”, tj. stabilna, wszystko w niej działa, nie zauważyłem żadnych poważnych problemów. Oczywiście niejednokrotnie błędy kochają ujawniać się w chwilę po wyjściu takowej… Tak, jak szwankowanie okna głównego w 5.02 (niemożność powrotu po wylogowaniu / skasowania treści okna). Niemniej jednak zawsze program obejrzę najpierw ja i kilka losowo wybranych osób ;P. Jeśli wszyscy zgodnie twierdzą, że wszystko jest ok – wersja ląduje na serwerze. Później czasem te osoby, które mówiły, że wszystko gra nagle znajdują usterki (gdy jest za późno :P) i błędy są kwalifikowane do poprawienia „przy następnej wersji”.

Tym razem było jednak kilka znaczących różnic. ICeQ 5.03, ukazując się po bardzo długiej przerwie (klasa maturalna), zyskuje funkcję automatycznego raportowania błędów (tzw. wyjątków) zaistniałych podczas pracy programu. Dopracowane powiadomienie mające ukazać się użytkownikom starszych wersji (aczkolwiek nie jestem taki pewien, czy wszystkich) – i program pojawia się w dziale download swojej strony domowej. W ciągu kilku godzin (?) pobiera go 350 osób. A ja na poczcie mam początkowo 20 raportów błędów, a po kilku kolejnych godzinach około 60. I teraz to przejrzyj wszystko, zrozum, ustal przyczyny…
Poukładałem je w kilka kategorii, według tego, czego właściwie dany błąd dotyczy. Długo mi to, prawdę mówiąc, zajęło, tym bardziej, że przy niektórych musiałem znaleźć kontakt z użytkownikiem, któremu dany błąd wyskoczył (a raporty błędów są w tej wersji bardziej niż mniej anonimowe). W ciągu nocy udało się ustalić przyczyny błędów i większość z nich z pewnością poprawić, jednak przy niektórych (jako, że u mnie nie występują) nie mam jeszcze pewności, czy poprawki zadziałają.

Cała sytuacja zadziałała na mnie wybitnie przygnębiająco… (A Fakt, przepraszam, fakt (autentyczna literówka, ale postanowiłem wykorzystać i podpiąć link :P), że FireFox pada mi ostatnio dużo częściej, niż dostaję raport błędu ICQa 5.03 od jednej z tych 350 osób wcale mnie nie pociesza). Nie jest fajnie, kiedy starasz się poprawić wszelkie możliwe błędy, czujesz satysfakcję z tego, co zrobiłeś/łaś, a chwilę później dostajesz masę skarg (od bezdusznych maszyn tym razem), a wchodząc na czat spotykasz tylko opinie „nie działa mi, nie mam już siły, kasuję” (tu akurat nie dowiedziałem się, czemu nie działa – nic więc nie poprawię).

Kwintesencję oddaje dialog:

ikari: (Sobota 03.06.2006 20:49) ciekawe co mial microsoft po wprowadzeniu raportowania bledow.
MKL: (Sobota 03.06.2006 20:57) wiesz, mysle, ze urwanie dupy. ale nie sadze, zeby tam sie tym zajmowala jedna osoba.

Uwaga: Jeśli jesteś w nastroju na pozostawienie komentarza – reszty notki nie czytaj.


Zupełnie abstrahując od wszystkiego, co związane z informatyką, cieszę się, że mam wakacje (bo m.in. wreszcie mogę zająć się programowaniem… ups :x) – żeby jeszcze tylko siostra mniej była w domu i coś… I najbardziej kuszącą perspektywą korzystania z czasu wolnego wydaje mi się całkowita izolacja od wszystkich i wszystkiego.
Bo bardzo chciałbym… odpocząć. Po prostu odpocząć od życia.

Dead God, please make everyone day. Amen.

Ten obrazek już się tu kiedyś pojawiał, ale jego aktualność nie przemija nigdy. Przykro mi! (nie chcę tradycyjnej burzy komentarzy na ten jeden temat (dlatego miałem pierwotnie zamiar w ogóle nie wspominać)).

Ale myślę, że nie będzie źle, jeśli publicznie wspomnę, że gdyby zdarzyło się jakieś całkowite zniknięcie mojej osoby to oznacza to udaną nareszcie próbę całkowitej izolacji. Do tzw. odwołania. Jak to w życiu bywa, właśnie wtedy, kiedy chcesz mieć wszystkich głęboko gdzieś, zawsze znajdzie się ktoś, kto Cię lata (dosłownie) nie widział i akurat teraz musi (pragnie) się spotkać. No ewentualnie ktoś, z kim kontakty poważnie zaniedbujesz, np. ojciec…

PS. Odchudziłem troszkę kod HTML bloga. Może transfer przyspieszy o kilkanaście milisekund.

kawa, delphi, blog, kraj i świat.

Ze świata: „(…) [w Japonii] powstały nawet specjalne sklepy, w których, często przez Internet, można kupić używaną przez nastoletnie dziewczęta bieliznę. Popyt na taki towar jest ogromny. Dodatkowo spragniony dziewczęcej czułości Japończyk udaje się do tzw. krainy mydła, czegoś pośredniego między łaźnią, salonem masażu a domem publicznym. Oficjalnie nie ma mowy o prostytucji, ale goście krainy mydła z rzadka przychodzą się tam tylko odświeżyć”. Żyć nie umierać. [src*: „Polityka”, 15/2006]

Z kraju: Ja wiem, że wszyscy to już wiecie, ale z racji nieoglądania TV zawsze dowiaduję się ostatni. Akurat kiedy po głowie z uporem maniaka chodziła mi „Piosenka księżycowa”, przeczytałem news o poważnym wypadku łódzkiego (!**) zespołu Varius Manx. Wokalistka ma uszkodzony kręgosłup, lider kapeli leży nieprzytomny pod respiratorem.

Z pokoju: OUT OF COFFEE. SKOŃCZYŁA MI SIĘ KAWA. Teraz już nawet zbożowa. To naprawdę tragiczna wiadomość, z trwałym wpływem na moje codzienne życie. Poza tym coś na zdrowiu podupadam ;P.

To, że się pociła jej japończy szefowie uznawali za antropologiczną ułomność” – o_O Japończycy się nie pocą?!

Ogólnie poczytałem sobie jeden numer „Polityki”, znaleziony bez okładki gdzieś w domu, w dodatku sprzed ponad miesiąca. Ale kilka artykułów było w nim naprawdę ciekawych – o doświadczeniach ze stanu śmierci klinicznej jako podtrzymujących odwieczne nadzieje, że po śmierci coś jeszcze istnieje, o „wyższości” chama nad inteligentnem, o emancypatkach w Japonii, o Storyteller Museum (genialna idea ;)), Mariach Magdalenach i micie Czarnobyla… :) Kurde, fajnie jest mieć czas poczytać gazetę :P


* – kopiowanie fragmentu utworu (tj. tekstu, kodu źródłowego, et ceatera) bez podania jego źródła jest naruszeniem praw autorskich.
** – nie wiedziałem, że Varius Manx pochodzi z Łodzi …


Czy Was też tak strasznie wkurza, jak ktoś kto przychodzi do Was (w sumie bez większej zapowiedzi) musi wszystko dotknąć, obejrzeć, pomacać i poprzestawiać?
No ale nvmd, miałem unikać osobistych tematów.

W Delphi 7 występuje poważny brak narzędzi do refactoringu. O ile Delphi 2005 miało wbudowane narzędzia do zmiany nazwy funkcji, zmiennej, czy wydzielenia z kawałka kodu nowej procedury (przy czym genialnie automatyzcznie ustalało, co jest parametrem, co wyjściem itp.), to w ‘siódemce’ nie ma absolutnie nic. Boli to nawet przy prostych czynnościach jak zmiana nazwy zmiennej z kombinacji literek na coś bardziej czytelnego. A ICQowi gdzieniegdzie by się to przydało ;P

A Firefox przechodzi samego siebie. 10-15% użycia procesora schodzi OT TAK, bo program jest uruchomiony. Otwarte tylko dwie strony, żadna nie zawiera flasha i ruchomych elementów, ba, nawet JS mogę wyłączyć – a 15% nadal gdzieś idzie.

Ach, byłbym zapomniał o tym wszystkim, co skłoniło mnie do napisania notki ;p

Znalazłem ostatnio ciekawą stronę, rysującą grafy reprezentujące strukturę stron internetowych (tagi HTML, nie podstrony). Oczywiście nie byłbym sobą, jakbym nie machnął grafa dla bloga i strony programu ;)

Blog ikariego okazał się być nieoczekiwanie… skomplikowany:
Free Image Hosting at www.ImageShack.us

Strona ICQa jest ładna i prosta:
Free Image Hosting at www.ImageShack.us

A propos bloga. Należy zauważyć, iż linki wewnątrz bloga (księga, komenty, główna itp.) nie mają już w sobie numeru bloga (&blogid=1), który wreszcie jest w pełni rozpoznawany po adresie strony. Wierzcie lub nie, ale nie zawsze tak było. Ogólnie część kodu została wymieniona na poprawioną już dawno, poprawki poprawione, a na koniec całość sprawdzona i… poprawiona. Jednak w ferworze walki z bazą danych zaszła pewna drobna komplikacja. Wiecie, jaki jest skutek kliknięcia przypadkowo „UMCS2” zamiast „UTF8” w polu kodowania pola [odpowiedzialnego za szablon pojedyńczej notki]? Nawet po wróceniu do UTF8 dane były już utracone. A mój blog przybrał poniższy wygląd:
Free Image Hosting at www.ImageShack.us

I szczerze mówiąc nie tylko mój. Ale korzystając z okazji – najpierw przywróciłem wszystkie szablony ręcznie z najnowszego backupu (z… listopada _^_), a następnie.. usunąłem blogi, na których od 2 lat nie pojawiała się żadna notka. W ogóle to być może kiedyś za parę lat, jak iBlog będzie już w pełni gotowy to będzie można się przede wszystkim ZAREJESTROWAĆ ;P

♪ La la la ♫ (i tak kurwica)

Rzeczy proste:
Utworów na ten tydzień
mogłoby być sporo. I wiem, że wielu z Was taka muzyka podobać sie nie będzie. Trudno ;P
Kilka propozycji:
Błędne wojenne rozkazy *
Chicane – Saltwater (osobiście kojarzy mi się, mimo braku oczywistych podobieństw, z Delerium – Underwater)
Iio – Rapture
Darude – Calm before the storm
Perły i Łotry – Burza **

* – z lepszych utworów tego zespołu. Sześć lat temu ich utwór „Geranium” kojarzył się komuś ze mną – tylko dlatego w ogóle ten zespół poznałem. Ich (pierwszy chyba) utwór „Prawo” w świetle obecnej sytuacji politycznej wydaje mi się wyjątkowo aktualny.
** – Szanta, acapella. Nie myślałem, że kiedykolwiek będę słuchać szant, a jednak ;) Polecam, zwróćcie uwagę na bas – to Michaś (O Słodkim Uśmiechu ;P). Imponujące, taka chudzina, a taki niski bas ;P Zespół widziałem na żywo, ale że był to koncert raczej nocny to do części instrumentalnej nie doczekałem. A szkoda, bo nie wiem, jak brzmi banjo ;P Po świętach powinienem dostać kompilację z ich płytek (z wyjątkiem ostatniej, uchowaj Szatanie, religijnej!) to może powiem cokolwiek więcej.

O zakładaniu butów słów kilka:
Jeśli masz czarne spodnie, kurtkę i glany to po założeniu glanów na spodnie (wygodne i praktyczne w ochronie spodni przed zachlapaniem) zostaniesz nazwany [przez Muriona] policjantem/CBŚowcem na służbie.
Jeśli założysz glany na jeansy to wg mnie można skomentować efekt jednym słowem: Howdy! ;D

Rzeczy garbate:
Życie zdecydowanie nie jest fajne. Nie wiem, co mi strzeliło do głowy, żeby kiedykolwiek tak uważać. A teraz to najchętniej narzekałbym tylko, że nic mi się nie udaje i nic mi się nie chce ;P (żeby nie było, że nie ostrzegałem, czy że nie zauważam):
- Zainstalowałem na dysku Ubuntu 5.1 (Breezy badger). Z 30gigowej partycji zajął już ponad 5 GB (pierwsze co zrobilem to uruchomienie instalatora dodatków – Automatix)… To moja pierwsza próba oswojenia sie z Gnomem, ale jakoś nie widzę w nim żadnych przewag nad KDE. Ale spójrzcie, jak on ładnie obsługuje ikonki! Jak przyjemnie przegląda się w nim foldery (mimo, iż obszar każdej ikony potrafi mieć różne rozmiary)! Czemuż o czemuż Windows tak nie może… to takie niewielkie z pozoru różnice…
- Długo z tym systemem oczywiście nie wytrzymuję (mimo początkowych pozorów uruchomienia Konnekta przez WINE), co widać, jeśli się poszuka w odpowiednich miejscach (a raczej byłoby widać, gdyby nie częste ostatnio restarty).
- Później w ramach fascynacji XGLem, próbowałem go zainstalować… Znalazłem jakiś tutorial do sadzania tego cuda na Ubuntu. Oczywiście gdzieś pod koniec (przy linijce „tu jestem pewien, że to zadziała – sprawdzałem na czystej instalacji”, która nie zadziałała) wyszło, że XGL pod Ubuntu i owszem, jest, ale tylko pod Dappera (nowsza niż oficjalna edycja).
- Później jednak odkryłem, że jednak da się zainstalować to pod Breezy, znalazłem na to tutorial. Oczywiście, nie udało się. Pakiet x11-common za cholerę nie chce mi się zainstalować, system mówi, że w ogóle nie wie, skąd taki pakiet wziąć, z tego wynika brak podrzędnych pakietów, ogólnie XGL nie chodzi, przez chwilę nie chodził w ogóle tryb graficzny, a tło programów w Wine zrobiło się czarne (i mam czarno na czarnym – bezużyteczne). Argh! W dodatku system za każdym razem wykrywa mi 4 aktualizacje, mówi, że 8 innych pakietów zainstalować się nie da, a menedżer aktualizacji wygląda jakby zwisł za każdym razem, gdy każę te aktualizacje zainstalować. Fajnie.
- Back to Windows. Zapragnąłem rozszerzyć systemowe menu przeciągnij-i-upuść o pozycję „dowiąż tutaj” – aby na dyskach NTFS jeden plik mógł być w kilku miejscach na raz, nie zajmując więcej przestrzeni. Znalazłem na to ładny projekt w Delphi, przetłumaczyłem parę rzeczy na polski (co by było spójnie z systemem) i kazałem go skompilować. Zonk. Wymagał czegoś z Jedi Code Library.
- Postanowiłem zainstalować JCL i JVCL. Pobrałem najnowszą wersję (JVCL 3.20) i uruchomiłem instalację – najpierw JCL, bo JVCL go wymaga. Zainstalowało się. Przeszedłem do folderu JVCL. Uruchomiłem instalację. Zonk. Brakowało mu pakietu xmlrtl… Jezu, jak w linuksie. Poguglowałem, wyszło na to, że to znany błąd JVCL 3 pod Delphi 2005 Personal Edition – zapomnieli, że ta edycja tego pakietu nie ma. Ale ojej, jak fajnie! Zrobili na to łatkę! Ściągnąłem, załatała, uruchamiam install po raz drugi. Zonk. W ogóle już nie uruchamia się instalator, wywala za to paredziesiąt błędów… Lekka konsternacja. Ale główka pracuje i ‚wykminiłem’, że jeśli to jest łatka do JVCL 3 to może na 3.2 nie działa (a nowszej łatki nie ma!). Wobec tego pobrałem JVCL 3… Ten z kolei nie wykrył zbyt-nowego JCL… Pobrałem więc starszy pakiet JVCL+JCL (żeby, do cholery, pasowało do siebie!), wypakowałem, uruchomiłem… Nadal się nie instaluje. Z łatką czy bez. A niech ich wszystkich szlag! Jak w linuksie!
- Z w/w powodu projekt zmartwychwstania ICQa może się opóźnić (bez dodatkowych pakietów nie mogę go skompilować/otworzyć…)
- Pomyślałem, że może wypali inna opcja – skopiuję wszystkie pliki Delphi ze starego systemu, a potem całą gałąź rejestru. Zły pomysł. Jako, że to różne edycje to miałem nieporejestrowane w systemie biblioteki itp… W dodatku plik rejestracji Delphi gdzieś zaginął, wszystko się sypało, pomoc już wcześniej, teraz całe środowisko.
- Wkurzyłem się, wyinstalowałem (pewnie dużo po tym zostało na dysku) Delphi… Mam nadzieję, że nie padnie od tego Visual Studio 2005 Express, jak ostatnio _-_… ♪ burza, niech to wszystko szlag ♪
- Kusi mnie pobawienie się kilkoma innymi linuksami, ale z limitowanym transferem nie powinienem sobie pozwalać na takie swobodne „tu parę giga, tam parę…”

Parę okienek wyskoczyło i zapomniałem, co miałem pisać _^_…
I padł FireFox (a raczej zwisł) i cudem odzyskałem ten tekst XD
Powstaje hit, przewodnik jak rozmawiać z ikarim! Jest to oczywiście bardzo wstępna jego wersja, aczkolwiek powinna rozwiać niektóre wątpliwości próbujących podjąc kontakt, zwłaszcza tych nie otrzymujących odpowiedzi (punkt ostatni). Niebawem zostanie podlinkowany w szablonie bloga.
A propos innych ciekawych stron – znalazłem serwis Stek prowadzony przez autora PolChatu, Kurnika i paru innych – Marka Futregę (osobisty idol i autorytet ;P mimo, iż jego jedyny mail do mnie był niezbyt pozytywną odpowiedzią i nie zauważyłem, kiedy zastąpił go yes2mike, bo podpisują się tak samo ;) ). Co ciekawe, layout strony przypomina wszystkie jego dzieła. :)

Matura nadchodzi wielkimi krokami. Oceny końcowe też. Tylko w kwestii tych drugich jestem pozytywnie nastawiony. W sumie to ostatnio zaczynam wyznawać filozowię „po co się czymkolwiek w ogóle w życiu przejmować, będzie co ma być”… Nie wiem, czy to najlepsza droga, ale cóż… ;P
Mam wszystko gdzieś i po raz kolejny żyłem iluzją, że dni wolne będą wolne. Zawsze zapominam, że nigdy tak nie jest…
Równie tradycyjnie zapomniałem, co jeszcze miałem tu pisać. Dlatego zakończę.
Wracam do lekkostrawnej muzyki. Dawno nie słuchałem Blank&Jones.