Test wp-syntax
May 13th, 2008Hello world!
1 2 3 4 5 6 7 | #include <stdio.h> int main() { printf("Hello, world!\n"); return 0; } |
Hello world!
1 2 3 4 5 6 7 | #include <stdio.h> int main() { printf("Hello, world!\n"); return 0; } |
W sobotę po kolokwium (tak, było w sobotę…) czekając na ludzi, zaczepił mnie jakiś student psychologii z prośbą o wypełnienie ankiety. Tematem ankiety była seksualność. Miałem chwilę czasu i byłem ciekawy, o co chodzi (tak, zaciekawiła mnie ta seksualność), więc przystąpiłem do wypełniania.
Budowa ankiety była dosyć prosta. Zawierała jakieś 40-50 pytań tak/nie typu “czy miewasz erotyczne sny z X?”, “czy uprawiałeś seks z X?”, “czy potrafisz być czuły wobec X?”, “czy podniecają Cię ładne/ładni X?”, “czy czujesz potrzebę zrealizowania się w związku z X?”, gdzie pytania o numerach nieparzystych miały zamiast X słowo “dziewczynami”, a reszta ─ “chłopakami”. Nie powiem, jak odpowiadałem, w każdym razie zaznaczyłem niektóre z tych parzystych. :>
Przy okazji wpadłem na pomysł współczynnika durności testu. Większość z nich zawiera potwarzające się pytania, tylko inaczej sformułowane. Ma to na celu wyeliminowanie czegośtam, nieważne. W każdym razie, jeśli jest tego za dużo, to to irytuje.
Teraz zacznie się matematyka. Niech Q będzie zbiorem pytań ankiety, a relacja = określona na zbiorze Q^2 (God, I wish I had LaTeX here…) jest zdefiniowana następująco:
Jeśli a i b należą do zbioru Q, to a = b wtw., gdy a pyta o to samo, co b.
Oczywistym jest, że = jest relacją równoważności. Napis [a] (dla a należącego do Q) będzie oznaczał klasę abstrakcji względem tej relacji (dla humanistów: zbiór wszystkich pytań pytających o to samo, co a). Współczynnik durności ankiety, S, definiuje wzór:
S = |Q| / |{ [a] | a należących do Q }|
Czyli innymi słowy stosunek liczby pytań do liczby pytań unikalnych. :> Teraz trzeba wymyślić jakąś skalę, ja przyjąłem, że do 1,1 ankieta normalna, do 1,4 jest normalnym psychologicznym testem, a do 2,0 jest durna. Powyżej 2,0 staje się niepoważna.
Jakieś dwa tygodnie temu dowiedziałem się, że Opera Software rozpoczyna rekrutacje m. in. na wakacyjny staż. Pomyślałem, że miło by było pracować nad ulubioną przeglądarką, więc napisałem CV oraz list motywacyjny (z drobną pomocą życzliwych) i wysłałem wszystko 5 maja.
6 maja zadzwoniła do mnie jakaś pani, która, jak się okazało, mówiła do mnie w języku angielskim. Zaprosiła mnie na 7 maja na “Dni kariery”, podczas których odbędzie się test programistyczny, porozmawiają ze mną, etc.
Musiałem wstać dość wcześnie, bo przed 8:00 rano, ale jakoś dałem radę. Hotel znajdował się blisko rynku, odnalazłem więc go bez trudu. Wszedłem, nie zauważyłem nic specjalnego, więc zapytałem recepcjonistki, a ona pokręciła głową i powiedziała, nic nie wie. Nagle zobaczyłem kogoś, kto wygląda, jakby też zmierzał na przesłuchanie, więc podążyłem za nim schodami na górę i tak trafiłem na miejsce. Od pani o azjatyckich rysach twarzy dostałem karteczkę z moim imieniem, nazwiskiem i numerkiem. Dostałem numer 22459 (37*607, iloczyn dwóch liczb pierwszych :>), choć wszystkich nas było może ze 40. Wszedłem do sali, usiadłem w drugim rzędzie obok jedynej dziewczyny i rozejrzałem się po sali.
“Po cholerę oni przyszli w garniturach?” ─ pomyślałem. Grupa była raczej typową grupą informatyków-komputerowców (to określenie ma dla mnie pejoratywne zabarwienie), bawiących się smartfonami, palmtopami, rozmawiająca o najnowszych technologiach. Ble. Moją drugą myślą było: “Ble, sztywniacy z polibudy” (wiem, złośliwy jestem :>). Tylko kilka osób się pozytywnie wyróżniało, zauważyłem także paru znajomych z II (mojego instytutu).
Po jakiś 30 minutach zaczęła się prezentacja. Najpierw pani z HR opowiadała nam, jak super się pracuje w Operze, jacy to oni są szczęśliwi, jakich utalentowanych mają pracowników i jak zajebistą przeglądarkę tworzą. Potem był filmik z wypowiedziami (sztucznymi) pracowników, który nam miał pokazać, że to prawda. Następny był jakiś szef działu “engineering”, który opowiadał praktycznie to samo, ale dodał więcej szczegółów technicznych. Mimo to nie dowiedziałem się niczego nowego. Trzeci był Polak, ktoś ważniejszy we Wrocławiu i mówił to samo, co pozostali. Straszna nuda, która trwała półtorej godziny. A! Bym zapomniał. Był konkurs przed prezentacją, trzeba było “odszyfrować” napis, którym były kody ASCII liter w heksach. Rozwiązanie brzmiało “if you can read this we want you” i można było wygrać Ninendo Wii.
W końcu coś ciekawszego ─ test. Przez 30-40 minut mieliśmy odgadnąć, co robią dwie funkcje w C. Jedna wypisywała n pierwszych wyrazów ciągu Fibonacciego w dziwny sposób (rekurencja, zmienne statyczne, mało czytelny zapis), druga liczyła “n \over k”, czyli symbol Newtona.
I tu już się rozluźniłem, wiedziałem bowiem, że poszło mi nie najgorzej. Zjadłem dwie kanapki, ciastko, napiłem się soku, pogadałem ze znajomymi, popatrzyłem jak inni machają pilotami do Wii.
W końcu ogłosili wyniki. Najpierw Wii wygrał znajomy z uczelni, nieźle. ;) Potem gwóźdź programu, czyli kto zostaje, a kto idzie do domu. Test “zdało” jakieś 14 osób, reszta, ok. 17 mogła pójść do domu. Śmiać mi się chciało, bo wstali i poszli głównie ci w garniturach. ;) Sztywniacy. :>
Poszedłem na spacer. Miałem jakieś 40-50 minut wolnego czasu, więc poszedłem się przejść wokół rynku. Po powrocie czekało mnie dłuższe, 10-15 minutowe przesłuchanie zarówno HR-ki jak i programisty. Pytali się ogólnie o mnie, który rok studiuję, jakie mam plany, jaki jest mój największy projekt, itp. Wydawało mi się, że dobrze mi idzie.
Znowu przerwa, tym razem krótka. Nintendo Wii jest dziwne, ale to może kwestia gry, w którą grałem z jakimś kolesiem z Opery. ;) Potem pani o hinduskich rysach twarzy mnie poprosiła i powiedziała mi, że przeszedłem przez drugi etap i jutro mi wyślą maila ze szczegółami, co dalej.
Uff… Powiedziałem wszystkim ładne “goodbye” i udałem się na zasłużony obiad.
Hah! My dream have come through! I wrote my first compiler with my own lexer and parser. It compiles LOLCode (slightly modified version, see in specification [in polish, but only output language]) to stack machine language. My project contains also stack machine which interprets output files and prints them in human readable assembler and three examples of LOLCode programs. It’s all GPL so you can learn how it works. It’s written in C and I didn’t have much time to write pretty dynamic arrays and If someone will fix it, I would be verry happy. If you’ve got question about how it works, go ahead, write me and ask.
Przy okazji pobawiłem się Google Spreadsheet. ;)
http://spreadsheets.google.com/pub?key=pGWzSN9qMru5kSDOS6VN_Sg
It’s for my Python Course. It provides only very basic HTTP, but yet can be used for simple WWW hosting. Link.
Features:
TODOs:
To run just edit pyhttpd.conf and change Port and Document root. Then type “python pyhttpd.py” and it should be now listening for connections.
How to run a python script and its output send to client? Pyhttpd checks if the requesting file is a python one. If so then it opens a python interpreter by a pipe, sends _GET and _POST dictionaries and file contents. And finally, sends interpreter outputs to client.
_GET and_POST are just dictionaries with variable names as keys. So if there is a foobar.py?i=500 request then _GET will be { ‘i’ : ‘500′ } (note that this is always a string value).
It’s GPL if someone asked.
Ostatnio często czytam stwierdzenia, że dostęp do kodu źródłowy nie jest przydatny zwykłym użytkownikom, którzy nie mają zielonego pojęcia o programowaniu. Krew mnie powoli zalewa, gdy o tym słyszę, więc powiem tak: otwarty kod źródłowy wolnego oprogramowania umożliwia innym programistom (niezależnym od autorów oprogramowania) analizować dany program, wykrywać i naprawiać jego błędy oraz tworzyć rozszerzenia i inne dodatki, dzięki czemu wszyscy użytkownicy (cała społeczność) ZYSKUJĄ (uff… długie zdanie).
Załóżmy, że jakiegoś programu używa 200000 osób, jedna na tysiąc programuje, więc daje nam 200 programistów, zdolnych przejrzeć i poprawić nasz program. Korzystają wszyscy, nie tylko informatycy. Na tym to polega. Jasne? Mam nadzieję, że cześć osób zrozumie.
Bo to pierwszy dzień roku - można odpowiedzieć. Ale dlaczego akurat w tym czasie, tzn. około dwa tygodnie po przesileniu zimowym? Nie jest to jakaś “ładna data” z żadnego punktu widzenia.
Nasz kalendarz gregoriański bazuje na kalendarzu juliańskim, stworzonym na rozkaz Juliusz Cezara w 46 roku p. n. e. To wie każdy. Wikipedia o kalendarzu juliańskim mówi nam:
Powodem reformy kalendarza było to, że wcześniej stosowany księżycowy kalendarz rzymski rozregulował się, w wyniku czego w 46 p.n.e. kalendarzowy grudzień wypadał we wrześniu. Dlatego, żeby ponownie zsynchronizować kalendarz z porami roku, rok 46 p.n.e. wydłużono o 90 dni.
Kalendarz rzymski zaczynał się idami marcowymi, jednak:
Pierwotnie pierwszym miesiącem roku był marzec, a 15 marca (Idy marcowe) rozpoczynali urzędowanie konsulowie. W 155 r. p.n.e. termin ten przesunięto o dwa i pół miesiąca wstecz, na 1 stycznia, gdyż w przeciwnym razie konsulowie desygnowani na ten rok nie zdążyliby na początek sezonu działań wojennych do Hiszpanii (gdzie aktualnie toczono wojnę). Ustaliło to początek cyklu pracy administracji państwowej (rzymscy urzędnicy byli wybierani na roczną kadencję) na pierwszego stycznia. I tak już zostało do tej pory.
Czyli wszystkiemu winna jest wojna w Hiszpanii jakieś 2162 lat temu, kiedy rzymscy urzędnicy musieli przesunąć początek roku administracyjnego na 1 stycznia. Bowiem kadencja urzędników trwała rok i co roku nowe osoby obejmowały urząd. Aby zdążyć na wojnę, trzeba było przesunąć to rozpoczęcie na 1 stycznia. Kalendarz ten był tylko administracyjnym. W religijnym nadal obowiązywał marzec jako początek roku. Nie udało mi się dociec, dlaczego i kiedy zmieniono też religijny.
Zwolennicy wolnego oprogramowania mają zwykle problem z jego nazwą. Po angielsku “free” może znaczyć również darmowy, dlatego zaznacza się, że “free as in freedom”, a nie “free as in free beer”. Po polsku “wolny” to także przeciwieństwo “szybkiego”. Dzisiaj w nocy wymyśliłem fajne tłumaczenie: “wolny jak ptak” i “wolny jak żółw”. Fajne, prawda? Programy wolne jak ptak. ;)
Dlaczego w każde święta muszę dostawać pierdyliard życzeń, od każdego znajomego lub nawet nieznajomego? Czy takie życzenia coś znaczą? Też mogę sobie napisać skrypt, który roześle jakiś szablon życzeń do wielu osób, ale po co? Przecież to spam.
Ludzie! Opamiętajcie się! Waszych życzeń nawet nikt nie czyta!