Dzieciory się popozjeżdżały z wakacji, na chodnikach popojawiały się suche liście.
TAK!
Zbliża się Druga Ulubiona Pora Roku Jezuchów :D
Dzieciory się popozjeżdżały z wakacji, na chodnikach popojawiały się suche liście.
TAK!
Zbliża się Druga Ulubiona Pora Roku Jezuchów :D
Czytam sobie artykuł i zauważam reklamę w postaci „testu na inteligencję” w rodzaju „co tu nie pasuje?” Na pierwszy rzut oka wygląda to raczej na test na debilizm… Ale oto całość łamigłówki:
Co tu nie pasuje: U S O E A
…I dlaczego jest to ‚O’? ;)
Pzede wszystkim bywa tak, że technologia okazuje się niezwykle złośliwa. A najgorsza pod tym względem jest właśnie informatyka. Co prawda prawa Murphy’ego zostały sformułowane przez inżyniera lotnictwa, ale wśród informatyków znalazły najlepszy grunt.
Wysłałem na serwer nową wersję kilku klas i nagle jedna strona przestała się pojawiać. Przeglądarka dostaje ciąg znaków o długości zero. Cały serwis działa jak należy, poza tą jedną stroną. Dodajmy do tego niechęć admina do odpisywania na listy (siedzę w domu i nie mogę go popędzić fizycznie) i upierdliwego kolesia zlecającego zadanie i mamy klops murowany.
Ten sam upierdliwy koleś dał mi w intranecie zadanie: „podpiąć X w http://www.Y.pl” z dodatkowym opisem „o szczegóły pytaj”. No to zapytałem, nie dostałem odpowiedzi, zająłem się czymś innym i zapomniałem. Teraz się przypomniał, że jest pilna sprawa na http://www.Y.pl, stwirdziłem, że nic o tym nie wiem, tamten wytknął zadanie w intranecie, ja ponownie stwierdziłem że ciągle nic nie wiem i że nie widzę nic takiego, co by wymagało podpięcia X w http://www.Y.pl. Odparł, żebym najpierw zrobił to coś z niepokazującą się stroną a potem mi wyjaśni, bo nie chce robić bałaganu.
Przed chwilą przyszła wiadomość z automatu intranetowego, że zadanie zostało wstrzymane. Wniosek: miałem pytać o szczegóły kolesia, który nie miał zielonego pojęcia o tym, co chciał żebym zrobił.
Czasem się zastanawiam dlaczego największe rozróby zawsze są na tle bezrobocia ;) [ok, ok, wiem o co chodzi, nie trzeba mi tłumaczyć]
Ech, nie mieć żadnego szefa nad sobą, pracować nad tym, co się chce robić (nie wystarczy lubić) – oto raj na Ziemi. Niedawno skalkulowałem, że milion złotych by mnie urządził ;) Jeśli by to pociąć na 12 części i co miesiąc jedną wsadzać na roczną lokatę na 5%, to by wyszło z tego nieco ponad cztery tysiące miesięcznie. Całkiem przyzwoicie. Trzeba tylko mieć ten milion ;)
W taki sposób nasz ulubiony All Music Guide chwali Corrosion of Conformity. Najlepszą ocenę u nich dostał album „Blind” z 1991 roku, w zasadzie pierwszy, którego da się normalnie słuchać (po dwóch wcześniejszych płytach, jednej również bardzo wysoko ocenionej, i jednej EPce). Niestety, dla mnie cały efekt psuje straszny śmondak na wokalu ;) Zdecydowanie najlepszym utworem z tej płyty jest jedyny, na którym śpiewa gitarzysta i ich przyszły wokalista.
A że zbliża się sezon multiwyborczy, to nawet jest niezła okazja…
Corrosion of Conformity – Vote With a Bullet
The number in nations
The god in their hearts
The justice in swine
The devil in God
VOTE
This long hand that breaks our backs
Still casting shadows on all that we see
Unjustified…mercy killing is just a feeling
To keep our numbers from being free
(Chorus)
Prison for praise is not worth thinking
Sin is still in and our ballots are shrinking
So unleash the dogs – the only solution
Forgive and forget, fuck no
I’m talking about a revolution
The prophet man’s got a needle in his hand
Draws his dreams from your soul – bleeding minds into sand
The year of the fear has arrived decades too late
And our right to stand and fight is now solely sealed in fate
(Repeat first chorus)
One last chance mission with a vision
‚cos our lives are just cards i their stack
Our time is short but theirs is shorter
How much longer can they hold us back
(Chorus)
Prison for praise – the obvious answer
Once had power mad – living disaster
Don’t fuck with me ‚cos I’m on a freedom train
That bears no name – this time
I’m voting with a bullet
This view they once knew made our nooses too tight
This justice in swine
This devil in god
So God bless my soul – I’ve got total control
And the crosshairs lined up dead in my sight
I’m voting with a bullet
Na końcu teledysku pojawia się coś ciekawszego:
Politics is the control of wealth and power…
You are being conditioned to condemn politics as petty and boring, thus granting all the more control to powers that be…
You are either part of the problem, or part of the solution.
The choice is yours…
RETY! Gdyby masy zaczęły autentycznie myśleć przed wyborami, to by się chyba świat skończył! :D
W serwisie WWW czasem zdarzają się nieoczekiwane błędy. W takim jednym pod moją opieką pokazuje się strona w rodzaju „ups, coś się zjebło”, a w tle wysyła się do mnie list z „szczegółowymi informacjami”. Te „szczegółowe informacje” polegają na tym, że bierze toto wyjątek, który był przyczyną całego zamieszania, drukuje ślad stosu, wydłubuje zagnieżdżoną „przyczynę” (Throwable.getCause()
) i powtarza aż nic więcej nie będzie. Jakiś czas temu największy taki email miał 43 KB (czystym tekstem). Dziś (w wyniku pewnego eksperymentu) otrzymałem jeden o rozmiarze 142 KB :) Przy czym to i tak było mocno skrócone, zaś najgłębszy stos, jaki tam się pojawił, miał głębokość około 190 metod (bez rekurencji).
Na razie tylko jako zapowiedź i link do jednego z rozdziałów na liście mailinowej Debiana: Dissertation chapter (fwd). Całość ma traktować o Hackerach i etyce F/OSS :)
…ale port Quake 2 do Javy chodzi wybornie :D
PS. Tytuł jest przesiąknięty sarkazmem
Dostałem zadanie napisania czegoś większego w JavaScripcie. Taka biblioteczka. JavaScript nawet lubię, ale zadanie mi się nie spodobało. Ale podczas jego realizacji nadziałem się na coś, co mnie bardzo rozczarowało (zdaje się, że s już to wytykał). Otóż – JavaScript podobno ma „closures”. Ale popatrzmy na następujący fragment:
var arr=[]; for (var i=0; i < 5; i++) arr.push(function() {return i;}); var ret=[]; for (var j=0; j < arr.length; j++) ret.push(arr[j]()); return ret.join(", ");
Wynik: „5, 5, 5, 5, 5”.
WTF?!?!
Funkcja w interesującej nas pętli mianowicie łapie zmienną i
a nie jej wartość. Może to mieć iście katastrofalne skutki – wystarczy w drugiej pętli zamienić j
na i
i nigdy byśmy się nie dowiedzieli, że coś jest nie tak, ponieważ wynik by był „poprawny”: „0, 1, 2, 3, 4”. Nie pomaga nawet wstawienie pomocniczej zmiennej w naszej funckji: var k=i;
oraz return k;
– w momencie wykonania tej funkcji zmienna i
już ma niepoprawną wartość.
Drugi przykład:
var arr=[]; for (var i=0; i < 5; i++) (function() { var k=i; arr.push(function() {return k;}); })(); var ret=[]; for (var j=0; j < arr.length; j++) ret.push(arr[j]()); return ret.join(", ");
Tym razem wynik jest „poprawny”. Tym razem tworzymy funkcję i natychmiast wymuszamy jej wykonanie (to ten las nawiasów na końcu pętli :)). Pomocnicza zmienna k
jest konieczna, żeby złapać wartość i
w momencie wykonania. I działa…
Podejrzewam, że to jest zgodne ze standardem (IE i Mozilla wykonują to tak samo) i ma logiczne uzasadnienie (function() {...}
tworzy funkcję, ale to wszystko co robi). Mimo wszystko zdenerwowało mnie to.
Skrzyżowanie „Archetype” z „Concrete”? UO!!
…a przynajmniej Jonathana Schwartza :) Ostatnio SUN sypie opensource’owymi projektami, a teraz ogłasza walkę z Pijawami. Open Media Commons turns the tables on DRM – szczególnie polecam część zatytułowaną „Who’s rights are we managing?”, zaś pod „My pet peeves about DRM” pewnie podpisze się 99% internautów ;) DRM MUST DIE!!!!