sobota, 29 maja 2010

Dwie produkcje od lft

Produkcje od lft dawno nie gościły na tym blogu. Tak dawno, że się już pojawiły nowe ;)

Jeżeli ktoś nie pamięta (bo w sumie od listopada ubiegłego roku nic o lft nie pisałem), to jest to człowiek z Finlandii, który tworzy dema, których można dotknąć ;) Tzn. zamiast na komputerze, to na samodzielnie budowanym układzie elektronicznym z mikrokontrolerem jako sercem. Podpinasz: cinche na audio, kabel VGA od monitora, zasilanie (bateria 9V) i gotowe :)

czwartek, 27 maja 2010

Wielokropek w C++

Ostatnio pojawił się u mnie w kodzie C++ wielokropek (..., ang. ellipsis). Rzecz nie była zbyt jasna, więc dzisiaj więcej szczegółów ;)

Zastanawialiście się kiedyś jak działa funkcja printf? Ma ona w sobie pewną magię, bo przyjmuje niemalże dowolną liczbę parametrów - coś, czego nie robią funkcje na co dzień. Spójrzmy na jej definicję:

int printf ( const char * format, ... );

Pojawia się tutaj tajemniczy wielokropek :) Jak go użyć w swojej aplikacji? Najlepiej wcale nie używać ;)

wtorek, 25 maja 2010

Pac-Man Google

Z okazji 30-lecia wydania gry Pac-Man Google miał w ostatni piątek najlepszy doodle EVER.

Interaktywny Pac-Man to jest to, zwłaszcza taki, który od oryginału różni się tylko kształtem planszy (oczywiście logo Google) :) Można grać nawet w 2 osoby po "wrzuceniu" kolejnej monety (gracz nr 2 kontroluje WSADem Ms. Pac-Man) i podobno nawet level nr 256 jest wiernie oddany - tzn. zabugowany ;)

poniedziałek, 24 maja 2010

Różne Screens of Death

Blue Screen of Death znają wszyscy użytkownicy Windowsa. Ale jak się okazuje, niebieski to nie jedyny śmiercionośny kolor.

Screen of death to najczęściej komunikat jaki wyświetla system operacyjny (lub jakaś inna aplikacja) po krytycznym błędzie. Chociaż czasem nawet i błąd nie musi być krytyczny. Generalnie "ekrany śmierci" nie powinny się pojawiać, ale wiadomo jak jest... ;)

Jeżeli chodzi o kolory, to niebieski jest najpopularniejszy, ale możemy jeszcze wyróżnić:

- czerwony - widoczny w wersjach beta Windows Vista.
- purpurowy - serwer wirtualizacyjny VMware
- czarny - pojawia się w Windows 3.x, OS/2, Linuksie lub Nintendo Wii
- zielony - dla użytkowników Xbox 360 oraz NES (wersja top-load)
- szary - NES (wersja front-load)
- żółty - błąd aplikacji ASP.NET (te akurat często widuję :P)
- pomarańczowy - na starszych wersjach Nintendo DS
- biały - niektóre BIOSy

Ale jak się okazuję kreatywność programistów sięga dalej niż paleta kolorów ;)

piątek, 21 maja 2010

typeof w szablonach C++

Często kiedy wykorzystujemy szablony w C++ pojawia się pytanie - jak sprawdzić w czasie kompilacji, czy typ T jest podtypem typu U?

Kolejna wersja standardu C++ wprowadzi operator typeof. Jest on już zaimplementowany w pewnych kompilatorach (np. g++). Można wykorzystać operator typeid z C++ lub dynamic_cast, ale to działa w czasie wykonania, przez co zwalnia wykonanie programu.

Ale jak się okazuje, typeof czasu kompilacji można zaimplementować w standardowym C++ już teraz. Ja np. jeszcze w grudniu twierdziłem, że to niemożliwe :)

czwartek, 20 maja 2010

Agenda Circling Forth

Oj zawsze można się 1 dzień opóźnić z postem :) Dawno nie było demosceny :)

Ostatnio obiecywałem, że umieszczę zwycięzcę Breakpoint 2010, jak tylko pojawi się w HD. No cóż, chwilę z tym czekałem ;) Dzisiaj "Agenda Circling Forth", demo autorstwa CNCD i legendy sceny, grupy Fairlight :)

poniedziałek, 17 maja 2010

Portal: The Flash Version

"Portal" to niesamowicie popularna gra z 2007 roku. Tutaj jej wersja 2D, flash. Nieautoryzowana ;)

O dziwo "Portal" nie został wydany jako osobna gra, a w zestawie "The Orange Box". W wersji flash bohaterem wyposażonym w Aperture Science Handheld Portal Device (ASHPD) jest 15837. No i są tylko dwa wymiary.

sobota, 15 maja 2010

Wzorzec Post/Redirect/Get w ASP.NET MVC

Każdy(a) z Was pewnie spotkał się komunikatem "Aby wyświetlić tę stronę, Firefox musi ponownie przesłać dane etc..." O co chodzi i co zrobić, aby w naszych systemach tak nie było?

Podobny komunikat pokazuje, że odwiedzany przez nas serwis Web ma poważny problem, jakim jest ponowne wysyłanie POST. Schemat jest taki:

1. Przeglądarka wysyła polecenie GET i otrzymuje stronę z formularzem.
2. Użytkownik go wypełnia i klika "Wyślij".
3. Przeglądarka wysyła z użyciem POST dane do aplikacji.
4. Aplikacja odsyła stronę, że operacja się udała.
5. Użytkownik chce przeładować stronę z komunikatem.
6. Przeglądarka wysyła ostatnie zapytanie. Jakie? To z POST, z punktu 3.
7. Aplikacja drugi raz wykonuje akcję związaną z formularzem.

Czyli my chcemy zrobić coś normalnego (przeładować stronę, kliknąć "Wstecz"), a aplikacja zrobi coś więcej niż od niej oczekujemy. Hmmmm. A ciekawie robi się dopiero, kiedy ktoś używa przeglądarki, która nie ostrzega przed ponownym wysłaniem POST, takiej jak IE6.

Jak sobie z tym poradzić?

czwartek, 13 maja 2010

Wzlot i upadek SNK

Dzisiaj ciekawy dokument na temat jednej z najsłynniejszych firm z rynku automatów do gier (czyli gier arcade) - japońskiego SNK.

SNK słynie głównie z systemu do automatów - Neo Geo MVS. System ten powstał w 1990 roku i był używany (czyli powstawały na niego nowe gry) przez 14 lat. Jest to system do gier arcade, który był . O dziwo, przeżył on te 14 lat bez żadnych upgrade'ów specyfikacji. Najmniejszych. Czyli gry, które widzieliśmy w 2004 roku mogły równie dobrze powstać w roku 1990 - potrzebny był tylko skill programistyczny.

SNK to nie tylko hardware, to też kultowe serie gier. W Polsce najpopularniejsza z nich to chyba "Metal Slug", ale japońska firma to też kultowe serie bijatyk:
- Samurai Shodown
- Fatal Fury
- The King of Fighters
- The Last Blade

Neo Geo zyskało wielką popularność na rynku dzięki temu, iż umożliwiało łatwą wymianę gier używając kartridży. Teraz te nośniki są gratką dla kolekcjonerów - są sprzedawane za ceny do 150 dolarów. Te rzadkie można kupić za ok. $1000, natomiast rekordzistą jest niezwykle rzadka europejska wersja gry "Kizuna Encounter". Istnieje tylko 5 egzemplarzy, ostatni został sprzedany za blisko 12 000 dolarów.

Ok, to czas na film :)

wtorek, 11 maja 2010

Antywirus i strony WWW

W ostatnich dniach na facebook popularna była strona "why you should not add your parents as friends on Facebook?". Dlaczego moja Avira wykryła zagrożenie szybciej niż u innych osób?

Jeżeli ktoś nie klikał (i słusznie) zostań fanem, to nie wie jak to chciało się rozprzestrzeniać. Wirus mianowicie instruował sam użytkownika, żeby ten skopiował szkodliwy kod w JavaScripcie, wkleił go w pasek adresu przeglądarki, a następnie sam uruchomił. Przypomina się dowcip o prostym i skutecznym wirusie e-mailowym: "Proszę skasuj wszystkie pliki z komputera, ale najpierw roześlij tą wiadomość wszystkim znajomym" ;)

Czytałem artykuł o tej "stronce" w serwisie niebezpiecznik.pl i zauważyłem, że antywirus autora wykrył zagrożenie ("JS/FoobNoob.A") dopiero kiedy ten próbował zapisać szkodliwy kod. Natomiast u mnie alarm Aviry pojawił się już jak kliknąłem (ech...) "Zostań fanem". Dlaczego?

niedziela, 9 maja 2010

Super Mario Crossover

Zazwyczaj wstawiam gry flash z lenistwa. Dzisiaj nie mogłem się doczekać, aby się móc podzielić ;)

Crossovery zawsze są w modzie. Np. ostatnio powraca jeden z najpopularniejszych - czyli po 10 latach oczekiwań dostaniemy "Marvel vs. Capcom 3".

Aż dziw, że ktoś nie wpadł wcześniej* na crossover postaci ze starego dobrego NES (Pegasusa w Polsce). Aż do teraz, kiedy to ulubieni 8-bitowi bohaterowie zmierzą się z grą "Super Mario Bros.".

piątek, 7 maja 2010

Profilowanie kodu w .NET

Przychodzi moment, kiedy zaczyna liczyć się wydajność. Wtedy dobry profiler jest niezastąpiony.

Dla platformy .NET istnieje wiele profilerów, ale oferta darmowych rozwiązań jest ograniczona, a przy tym wiele z nich pamięta czasy .NET 1.1 i na tym etapie się zatrzymała.

Na tym tle bardzo pozytywnie wyróżnia się EQATEC Profiler, który, mimo że darmowy, może stawać w szranki z płatnymi narzędziami.

środa, 5 maja 2010

Kiedy 1 kwietnia staje się rzeczywistością

Rzadko kiedy żart prima-aprilisowy ma poważniejsze konsekwencje niż zakłopotanie tych, którzy dali się nabrać. W pewnej serii gier komputerowych było inaczej.

Wszystko zaczęło się od 1991 roku i gry Street Figher II. A właściwie od tekstu głównego bohatera, Ryu:


"You must defeat Sheng Long to stand a chance" było błędem tłumaczenia z japońskiego. Poprawne tłumaczenie powinno brzmieć "If you cannot overcome the Rising Dragon Punch, you cannot win!". "Sheng Long" to właśnie "Rising Dragon Punch" (nazwa ciosu) - jednak najwyraźniej tłumacz myślał, że to jest osoba, a nie atak. Dodatkowo przetłumaczył ten fragment na język chiński, bo "Shēng Lóng" brzmi fajniej niż "Shōryūken" ;)

Wtedy pojawił się słynny żart z 1. kwietnia 1992 roku.

poniedziałek, 3 maja 2010

Rodzaje nietypowych bugów

Słyszeliście o Heisenbugu? Jeżeli nie, to macie szczęście ;)

Zadziwiające, że nietypowe błędy (bugi) oprogramowania zostały (przeważnie) nazwane od nazwisk wielkich XX wiecznych fizyków. No i jednego matematyka ;)

1. Heisenbug - nazwany od Zasady nieoznaczoności Heisenberga. Błąd ten pojawia się, kiedy program powinien normalnie pracować, ale nie można dojść jego przyczyny, ponieważ w trakcie debugowania wszystko działa i pracuje normalnie.

Przyczyną może być specyficzne działanie debuggera (uruchamia kod bez optymalizacji, czyści pamięć przez co nie ma problemu z niezainicjowanymi zmiennymi itd.) albo to, że nasze procedury mają niespodziewane efekty uboczne lub niewidoczne zależności. Nazwa wzięła się od tego, że podobnie jak w zasadzie nieoznaczoności "im bardziej przypatrujemy się jednej rzeczy, tym gorzej widzimy inne".

sobota, 1 maja 2010

Nano Ninja

Dzisiaj "one button ninja action", czyli kolejna "jednoprzyciskowa" gra.

Czy jest coś bardziej cool niż ninja? Chyba tylko ninja, który lata w powietrzu, skacze, rzuca shirukenami, a to wszystko ma dostępne po naciśnięciu tylko jednego przycisku.