Się wziąłem. Dziś w PHP ;) [no dobra, jest technicznie, u win]
Dość trucia mi czterech liter, bo „ja chcę opa w pokoju X, a on chyba jest pusty, a nawet jeśli nie jest to Y, ktokolwiek jest Y-em, na pewno już dawno nie wchodził na czat, bo JA go nie widziałem” ! Na stronie PolChatu znajduje się od dziś automatycznie aktualizująca się lista wszystkich full-opów pokoi głównych. O każdym ponadto wiemy, kiedy ostatnio się logował i jest to rozróżnialne po kolorze nicka (im jaśniejszy, tym dawniej – ten ktoś już nam „zanika” ;)). Ponieważ sprawdzanie czasu ostatniej aktywności wiąże się z OGROMNĄ liczbą zapytań do bazy danych – strona regeneruje się nie częściej niż 24 godziny. Pechowiec, który po 24h od ostatniego jej wygenerowania otworzy ten adres będzie musiał poczekać dłużej, na pełne wykonanie skryptu (około 30 sekund?).
Wziąłem się też troszeczkę za bloga. Po prawej macie komentarze głosowe serwowane przez WebAudio (design by WebAudio, Maldonka & ikari), niestety jedne na cały blog. Ale i tak nie cieszą się zbytnią popularnością. Chociaż podpadły mi już na starcie (nadal wyświetlają dawno usunięty komentarz!), liczę, że się przyjmą ;) Miło byłoby Was wszystkich usłyszeć.
Także zwykłe komentarze miały lifting. Pojawiła się obsługa avatarów dryfująca między MyBlogLog a Gravatarem (ukradłem i przerobiłem skrypt z MBL dla WordPressa). Żeby zaś nie dostać nerwicy przy wypełnianiu pól ‚e-mail’ i ‚strona www’ setki razy – wprowadziłem wreszcie ciastko, które te dane zapamiętuje. W akcie uaski pojawiło się wraz z checkboxem (miało nie pytać o zdanie ;P W końcu i tak paranoicy blokują wszystko jak leci).
Żeby nie było wątpliwości, wyraźnie dopisałem, że można podać swój e-mail. On i tak jest w locie przefikiwany na niedziałający, żeby nie trzeba było bać się spambotów. Ponadto przypominam, że życie botom zatruwam linkując po prawej stronie do ;)
Same wyświetlane maile zaś usunąłem bo po prostu nie mogłem na nie patrzeć ;P Jeśli ktoś faktycznie je podał, to są dostępne po kliknięciu na jego nick nad komentem. Natomiast w linkach gravatarowych jest tylko hash MD5, więc jawna postać maila nigdzie się nie pojawia.
Gdybyście chcieli hurtowej, zautomatyzowanej aktualizacji wszystkich komentarzy z danego nicka (tj. ich maili i/lub adresów www) to poproście w… komentach. Wtedy wszystkie wstecz dostaną prawidłowe dane – i co za tym idzie – avatary.
Hello, I’m a PC…
Widzieliście już nową kampanię reklamową Apple, w której ponad 20 zabawnych spotów porównuje „PeCety” i „jabłuszka”? Oto jeden z nich:
(Tym razem youtube, zauważyłem, że Google Video buforuje pliki z całej strony jeszcze zanim poprosimy o ich obejrzenie, co jest ble. Na ironię – obie strony należą do Google!). I’m a PC (…) I’m upgrading to Vista today (…) Like a lot PCs I have to update my graphics card… – znowu pokusiło mnie na instalację Visty. Niemniej jednak wcale nie jestem jeszcze przekonany do tego systemu na tyle, żeby się na niego przesiadać. „WinSxS” nadal zajmuje ponad 3 GB. System nadal zajmuje 7 GB na dysku. Poza tym po instalacji jeszcze chodzi w tle Desktop Search, co trochę początkowo spowalnia system, czasem nie jest tak szybki jak powinien, a nawet z kartą DX 9.0 mój komputer może liczyć na ocenę „2″ ;) (w skali 1-6 bodajże). Jak mam zmieścić się z takim systemem na dysku, jeśli w 2003 zapycham partycję 30-gigową? (Na Vistę mam obecnie max 16GB). Może sprawy wyglądałyby inaczej na wyśnionym nowym sprzęcie.
Speaking of peripherals… - skoro już o nowym sprzęcie mowa – Już za chwilę rusza głosowanie na podrasuj.idg.pl ! Bardzo ślicznie proszę, zarejestrujcie się, a po 15 lutego oddajcie na mnie głos za 5 pkt :) Bez obaw, możecie głosować na dowolnie dużo komputerów. Tym razem faktycznie zależy mi na każdym głosie, chcę wierzyć, że mogę dzięki Wam mieć jakieś realne szanse! :) Z góry dziękuję!
Niewiarygodne, kolejna notka w tak krótkim czasie, przechodzę sam siebie. A może to wszystko wina narzędzia Microsoft Expression Web, które – jak sama nazwa wskazuje – pomaga mi w ekspresji moich myśli ;)
A może to nadmiar myśli spowodowany tym i owym. Lub nadmiar czasu na ich pozamykanie w ciasne ramy słów.
Prywatność
Dawno miałem o tym napisać. Prywatność, temat-rzeka, ostatnio zyskujący na sile nawet w świecie informatyki i Internetu. Jako lekturę obowiązkową chciałbym Wam przedstawić artykuł z New York Times, publikowany kiedyś (2006-11-23) na Onecie: „Czasem dwie osoby to za dużo…„. Zaprawdę powiadam Wam – święte słowa, moi bracia i siostry.
Też nie znoszę tłumów w sklepach, nie lubię się przeciskać między ludźmi tępo wpatrującymi się w półkę (tarasując wózkiem przejście), choćbym sam tak samo się zachowywał – wolę obejść szerokim łukiem, pójść gdzie indziej i ewentualnie wrócić później, jak nikogo w tym miejscu nie będzie.
Ale szczególną twierdzę stanowi ta moja przestrzeń, która jest mniej mobilna – mój pokój. Nie znoszę, kiedy ktoś z rodziny mi tu wchodzi, tym bardziej, że nigdy nie jest to zapowiedziane (ani przyjemne – i nie wróży nic dobrego). Nienawidzę zaglądania do moich szafek, oglądania moich rzeczy, jednej wielkiej inspekcji. W tym moja mama szczególnie się lubuje. Zawsze do granic bulwersowały mnie historie o tym, jak ktoś komuś zajrzał do pamiętnika, znalazł coś ukrytego w pokoju albo czytał SMSy w komórce*. Przecież to jest nie do pomyślenia :|. Pogwałcenie wszelkich zasad prywatności, a może i wręcz poszanowania czyjejś osoby/przestrzeni/prywatności/woli/czegokolwiek. Każdy sam decyduje ile z siebie i swojego życia chce odkryć innym i wszelkie próby wpieprzania się jakichkolwiek innych na siłę powinny być karalne _-_
* pewnie liczba takich pozwów wzrosła od czasu, kiedy Wyborcza (!) opublikowała artykuł (link do niego już nie dziala, ale pisał o tym VaGla) o tym, jak łatwo podrobić treść SMSa i wykorzystać w sprawie rozwodowej. Sprawdziłem – zmiana treści czyjegoś SMSa na dowolną własną zajęła mi 20 minut od przeczytania artykułu, a jedyne co podobno operator może zweryfikować to nadawca i godzina wiadomości – te się będą zgadzać. Na tej podstawie SMS zostaje uznany za autentyczny.
Orange i Bash. Co je łączy? Błędy! ;P
Błędy, błędy, błędy… Pracując z komputerami, słyszymy o nich na każdym kroku. Jedni wyolbrzymiają (często jedynie ku własnemu przerażeniu) znaczenie tego słowa, zakładając, że zawsze oznacza wszystko, co najgorsze, czyli kradzież wszystkich osobistych danych (! patrz akapit wyżej ;P), pieniędzy i awarię oprogramowania i sprzętu, inni używają go raczej do określania bardziej „niewinnych” mankamentów działania czegokolwiek ;)
Te, które tu przedstawię różnią się od siebie swoją naturą.
Pierwszy z nich miał miejsce podczas niedawnej awarii serwisu Bash.org.pl. Wpisując adres z prefiksem www przez krótki czas można było przeglądać nie treść serwisu, a strukturę katalogów, która go napędza. Skutki w najgorszym wypadku mogą być o tyle poważne, że w kodzie serwisu bez problemu można było znaleźć rzeczy takie jak: $db = db::singleton('mysql:host=localhost;dbname=bash1', 'bash', 'JiFt(tu część hasła wyciąłem ;P)jilD'); Na szczęście serwer bazy danych nie pozwala na połączenia z zewnętrznych hostów – inaczej być może basha by już nie było ;) (Drodzy Państwo, macie backup?)
Drugie to absolutny hit. Sieć orange. Ośmieliłem się zrobić reportaż audio:
Programowanie i informatyka, znowu.
Znowu to ja nie wiem, co miałem tu napisać ;) (W ramach szablonu notki wstawiłem nagłówek, treść miała dojść później).
Wziąłbym się (naprawdę!) za filtrowanie postów na blogu wg tagów, ale chciałbym to zrobić jakoś zarazem dynamicznie (żeby nie odświeżało bez sensu wszystkiego, zwłaszcza paneli bocznych, tylko po kliknięciu checkboxa na liście tagów sobie ładnie przeładowało odpowiednie notki. Albo najlepiej żeby na dzień dobry też ładowało je pojedynczo, nie opóźniając zdarzeń onLoad), ale nie wiem, jak pogodzić to z wszystkim tym, co JS nie obsługuje – w dzisiejszych czasach są to głównie crawlery wyszukiwarek oraz paranoidalne (jeśli chodzi o konfigurację bezpieczeństwa) przeglądarki. Chciałbym, by Google i jemu podobne po wejściu na stronę główną widziało treści postów, a użytkownik… nie. Jemu załadują się po chwili, może nawet jeden po drugim, rekurencyjnie ;). I podmienią, jeśli zmieni filtr.
W sumie filtrowanie wg tagów wydaje się być o tyle zbędne, że praktycznie nikt nigdy nie skorzystał z prawie-tej-samej opcji serwowanej poprzez tag cloud i technorati po lewej, no ale… ;) Wizja to wizja.
A teraz super ciekawostka statystyczna ;) Czy kiedykolwiek zastanawiałeś się nad ogromem kodu programistycznego, który składa się na Twój system operacyjny lub… znajduje się na pokładzie samolotu?
0.5 mln linii kodu – prom kosmiczny
1.5 mln linii kodu – myśliwiec F16 (!)
2.0 mln linii kodu – Boeing 777 (:o)
5.6 mln linii kodu – myśliwiec F35
9.0 mln linii kodu – jądro Linuxa
11.0 mln linii kodu – okręt podwodny Virginia
50.0 mln linii kodu – Windows Vista
86.0 mln linii kodu – Mac OS X
213.0 mln linii kodu – Debian Linux
Nie wiem, czy w całym dotychczasowym życiu oprogramowałbym „chociażby” prom kosmiczny ;) Źródło statystyk – Microsoft ;)
I jeszcze genialny fragment dialogu z wywiadu z Billem Gatesem:
„Jon Stewart: Jakis 13-latek siedzi, pisze wirusa… (…) Czy zatrudniacie ludzi, ktorzy maja przechytrzyc piszacych wirusy?
Bill Gates: tak, 14-latków”
Ja tymczasem w ciągu dwóch tygodni (jeszcze w te ferie) dostanę paczuszkę Windows Server Codename Longhorn (docelowo: Windows Server 2007 lub 2008) ^^ Ciekawe tylko gdzie i na czym to posadzę… ;) Wymagania ponoć większe niż w Viście ;)
Simple and clean
„Simple and clean” to nie tylko tytuł utworu, który jest obecnie „Utworem na dziś” (TODO: historia poprzednich – to wszystko jest w bazie). Swoją drogą utwór ten zasługuje by poświęcić mu kilka słów więcej.
Są na pewno wśród Was osoby, które chociaż kilka razy słuchając utworu japońskiego wykonawcy starały się znaleźć do niego tekst i ze szczerym szokiem odkrywały, że tekst jest po… angielsku – Japończycy mają niebywały wprost talent do kaleczenia tego języka do tego stopnia, że nie da się go czasem rozpoznać. Natomiast Utada Hikaru doskonale angielski zna (z tym też mają problemy), sama swoje teksty na ten język tłumaczy i… wspaniale śpiewa. Już nie tylko pod względem „naprawdę po angielsku”, ale uważam, że ma świetny głos. Utwór na dziś to wersja live, w dodatku akustyczna i wideo, piosenki „Simple and Clean”, której wersję mp3 („z prądem” :P) również mogę zamieścić, jeśli byłby ktoś zainteresowany. Jak dobrze poszukam to może znajdę nawet wersję japońską :)
„Simple and clean” to także po „Prosto i czysto„, czyli… mój obecny pulpit (widoczny tu po prawej w klikalnej miniaturce) – włączając w to:
Tapetę
Motyw okna rozmowy Konnekta (kIEView)
Motyw samego Windowsa (klasyczny)
PS. Widoczna w oknie Konnekta rozmowa jest wręcz wzorcowa i spełnia wymogi „jak rozmawiać z ikarim„. Zachęcam do brania przykładu! :P
We’re all emo…
Ot, taka niesformułowana do końca wewnętrzna refleksja. Wszystkich coś wewnątrz gryzie, wszyscy coś [intensywnie?] przeżywają, a jednak chowamy to przed światem. Może w ramach wspomnianej wcześniej ochrony przestrzeni osobistej… No wlaśnie, a ja znow mam ochotę się zaszyć jak najdalej przed światem _-_. Chociaż podejrzanie intensywne kontakty z rodziną nie do końca to ułatwiają xD (a może wręcz przeciwnie?)
A propos emocji – oglądaliście „Człowieka z księżyca”? Czy to nagranie (+ komentarze) się z tym nie kojarzy…?
…and still DOOMed!
Znów na parę chwil wzięło mnię na Dooma. I porobiłem trochę screenów. Grając w trybie Multiplayer pojawiasz się w taki sam sposób jak demony – otwiera się portal, pojawiają się wyładowania (ach te efekty dźwiękowe! MRAU!), a pod stopami masz… świecący jeszcze przez chwilę pentagram:
Książki i inna twórczość literacka
Wróciłem na „Drogę do science-fiction” ;) Jednak czytając cokolwiek zawsze mam ochotę spisać wreszcie wszystko to, co obrasta w detale w mojej popapranej głowie (i dzielnie walczy z Alzheimerem, ktory za tym biega i detale wymazuje ;P). Ach, jestem niespełnionym pisarzem ;P Od dziecka kusiło mnie „pisanie książek” (jakkolwiek nieudolne próby by to nie były), całe zeszyty na to zakładałem ;P (i jak zwykle nigdy niczego nie kończyłem XD).
Swoją drogą, ma ktoś może dostęp do genialnego opowiadania, którego autorem jest James Blish – „Ciemność nie nadejdzie„? („There shall be no darkness„) Mile widziana wersja elektroniczna :)
Dziś zrobiłem kolejne podejście do połączeń HTTP w ICQu i… hurra! Wreszcie wszystko działa. No, prawie. Niektórzy być może pamiętają moje traumatyczne przejścia, kiedy przy poprzedniej próbie dorobienia tej opcji serwer widział 100 fantomowych połączeń nawet 2 tygodnie po ich zakończeniu (i wielu restartach z mojej strony) i jedyne, co pomogło to … restart tegoż serwera. Tym razem jest niby lepiej, niemniej jednak nie mogę pojąć, czemu to działa tak, jak działa.
Kod w Delphi, do zapytań HTTP używam idHTTP z pakietu Indy. Każde zapytanie ma nagłówek Connection: Close – zarówno po stronie klienta jak i odsyłane przez serwer. Mimo to netstat po obu stronach (klienta i serwera) pokazuje, że połączenia HTTP wiszą sobie jeszcze spory kawałek czasu po zakończeniu zapytania. Czemu?
Zasadniczy problem polega na tym, że wiszą dłużej niż trzeba czekać na nawiązanie kolejnego, zatem ich liczba rośnie. Jest to niebezpieczne nie tylko dla jakiejś tam stabilności któregokolwiek systemu (;P), ale i dla użytkownika, który znów może nagle dostać komunikat „BANG! Maksymalna ilość połączeń z tego IP przekroczona” na nie wiadomo jak długo. 10sekund między kolejnymi odświeżeniami czata to za długo dla użytkownika, a za krótko, by liczba połączeń nie rosła. Prace nad HTTP po raz kolejny zostają zawieszone.
Help needed.
Masz czasem takie uczucie, że każdy Twój kod (czy cokolwiek tam sobie tworzysz ;)) zawsze musi mieć kilka naprawdę poważnych błędów różnego rodzaju? (tu wstaw sobie dowolną analogię do swojej twórczości) Też czujesz się czasem jak gówno a nie [tu wstaw określenie człowieka, który tworzy to, co Tobie znowu nie wyszło ;P]. Wybacz Panie, jestem tylko nędznym robakiem.
PS. Jakby co to poprawiłem co się dało w księdze gości i komentach – w tym nawet odpowiedziałem na 1 komentarz, który nigdy nie został wysłany ;) Gdyby coś nie działało, don’t hesitate to contact me (via gg/jabber/tlen – tylko nie zaczynajcie od pytania, czy jestem ;))
Miałem tu coś napisać, nawet kilka razy sobie przypominałem, co. Ale tradycji staje się za dość i w chwili siadania do notki jakoś mi to umyka. Zresztą co ja mogę pisać o programowaniu? W ostatnim roku może nawet większość skończonego i działającego kodu jaki napisałem to programy na zaliczenie -_-. Poznałem trochę język ADA, na pewno mi się to przyda, prawda?…
Trochę szkoda, że opuściłem zajęcia Grupy.NET… A teraz nie wrócę, „bo za dużo w plecy” :P To u mnie typowe ;)
Implementacja .NETa w Mono wciąż jest… niesatysfakcjonująca. Nawet konsola nie do końca działa ;P To takie małe przemyślenie po uruchomieniu kawałka kodu z nadzieją, że Mono otworzy mu drzwi na świat Linuksa. Nie dziś, nie jutro.
Zresztą wszelkie kodowanie ostatnio odbywa się głównie… w mojej głowie ;) Cały czas myślę, jak osiągnąć ten jeden, złoty kod, który stanie się podstawą do napisania czegokolwiek na wszystko ;) Od początku przemyślany (z tym właśnie mam problemy), czyli architektura top-bottom (na nic mi się ta wiedza na egzaminie z algorytmów nie zdała).
Jeszcze nie czytałem, ale odłożyłem na stosik „do przeczytania” ten genialny artykuł o projektowaniu oprogramowania.
Czasem problemem jest motywacja. „A po co mi to?”, „A co będę z tego miał”, „A czy to warte mojego czasu” (tak, główna różnica to ta, że 5 lat temu tak na to nie patrzyłem, po prostu mi się chciało, choćbym nie wiem, jak głupie i mozolne cele sobie stawiał).
Kiedy czytam artykuły takie jak ten i ten to pytanie zaczyna brzmieć „co ja tu w ogóle robię?!”… Bo matka kazała? Póki co nie jestem zadowolony ze swojego życia…
Btw. (Taka luźna myśl się przypałętała) Być może ktoś z Was zadawał sobie pytanie „czemu linki na blogu ikariego otwierają się w tej samej karcie” – warto nadmienić, że atrybut target (określający ramkę docelową) tagu <a> w nowszych specyfikacjach już… nie istnieje. Po prostu to użytkownik ma decydować, gdzie otworzy sobie stronę (klikając np. środkowym przyciskiem lub z shiftem). Fakt faktem, może po kliknięciu już do mnie nie wracasz? ;)
PolChat
Temat, kurde, rzeka. Ilekroć zbierałem się, żeby tę część notki machnąć, to w kontakcie z jej przedmiotem po prostu ręce mi opadały. A wiszącymi tak bez sensu trudno się pisze (tekst wkursywie dedykuję mojemu wykładowcy Matematyki Dyskretnej ;)).
[wersja "uważam_na_słowa"] PolChat umiera zabijany nietrafnymi pomysłami swoich właścicieli. Niby sam utrzymuje się wyłącznie z reklam (a konkretnie stanowi finansowy balast), bo licencje na czat komercyjny sprzedaje zupełnie inna firma, która nie ma prawa ingerować w PolChat (portal?) jako taki, czyli, do cholery, to, od czego wszystko się zaczęło (dziś wprawdzie nawet autor podobno nie chce o tym słyszeć). A jednak! Celem wciśnięcia głupich komercyjnych licencji jak największej liczbie klientów, firma LiveChat celowo uszczupliła funkcjonalność serwera PolChatu. To potwierdzona informacja – to oni zabrali nam rozmowy moderowane.
Zastanówmy się nad konsekwencjami. Na Polczacie jednocześnie można znaleźć zazwyczaj około 2 500 ~ 3 000 czatujących w „godzinach szczytu”. W tej samej chwili na czaterii jest 22 700 osób. Tak, niemal dziesięciokrotnie więcej! Onet wprawdzie nie podaje jawnie sumy liczby osób, jednak liczby podane przy pokojach na stronie głównej same w sobie sumują się do 9700 osób i to bez pokoi erotycznych! Co też robi PolChat by zachęcić wobec tego ludzi do siebie? USUWA FUNKCJE, z których wielu użytkowników chciało korzystać, a niejeden pokój opierał na nich swoje podstawowe „atrakcje”. Obiecuje gruszki na wierzbie (nowy serwer, czyli rozmowy na kilku pokojach na raz) przez 2 lata, nie wprowadzając ich, mimo, że wszystkie inne serwisy tego typu oferują je od kilku lat. Posiada ekipę programistów i webmasterów (oficjalnie), którzy jednak niejednokrotnie palcem nie kiwną na poważne błędy w działaniu serwisu i czekają, aż zrobi to za nich ktoś inny (np. admin-serveroperator). Nie będziemy mogli zachęcić użytkowników przez spotkania ze znanymi ludźmi (na polchacie bywali: Mariusz Pudzianowski (i to regularnie), zespół Ich Troje (wielokrotnie), Alicja Janosz (co najmniej 2 razy), Iza Bełcik, Glaca ze Sweet Noise i bracia Mroczkowie – oraz wielu innych, ale tych widziałem na własne oczy), bo po prostu wypieprzyli nam opcję rozmowy moderowanej. Zabili najlepszą możliwość promocji serwisu.
Właściciel miał wizję PolChatu jako serwisu społecznościowego. Przykro mi, ale społeczność od PolChatu do tego czasu odejdzie. Cofamy się w rozwoju.
Chyba pora zacząć wreszcie pisać programy zupełnie z tym czatem nie powiązane, albo przynajmniej niezależne. Nie będę wsiadać na pokład Titanica widząc, że płynie wprost na góry lodowe.
No, a tak poza tym, to działa tam już opcja aktywacji nicka – po prostu wkleiłem kod z serwisu wklejki (jak sama nazwa wskazuje ;P), bo po raz kolejny nie byłem wstanie znaleźć błędu w tamtym kodzie. Ale nowy działa. Tysiące nicków nieaktywnych z takiego czy innego powodu też zostały odgórnie aktywowane.
PS. Joomla to za duży system na tak proste strony (główna funkcjonalność to przecież sam czat, chociaż ktoś chyba o tym zapomina)
Jeśli ktoś jeszcze nie miał okazji zauważyć, to linki do Archiwum znalazły się dużo wyżej, przy informacjach o blogu – bo prawdę mówiąc, nie wiem nawet, ilu z przypadkowych gości pokusiło się o przewinięcie treści w DÓŁ i w ogóle je zauważyło. Dla narzekających na powolne ładowanie bloga mogę pomyśleć o generowaniu ich JavaScriptem.
No i jest nowy „Utwór na dziś”. Jaras – chciałeś flashowego playera to masz – mp3 musiałem przekodować z MPEG-2.5 na MPEG-1, żeby dało się odtwarzać, a jego objętość wzrosła przez to z 850kB do 1.1MB. Swoją drogą z sobie tylko znanych powodów player ma jakieś poważne problemy z narysowaniem się w Internet Explorerze (w Gecko i Operze wygląda i działa wspaniale). Do tego skrypciku, a właściwie ich całego wachlarza (HTML, JS, PHP, CSS… + modyfikacje w enginie bloga wprowadzające funkcjonalność, którą już ponad 2 lata planowałem wprowadzić i… nie sprawdziły się w TYM przypadku) może także pojawić się link do historii wszystkich poprzednich utworów-na-dziś. Skrypt obsługuje mp3 i wideo, ale chwilowo z powodu ograniczeń technicznych chyba zostaniemy przy mp3 ;P
A radiowcom najbardziej w świecie zazdroszczę mikrofonów (chociaż już gdzieś to pisałem… ;)) i dźwiękoszczelnych pomieszczeń. Ale to było tak zupełnie btw. :)