2010-12-20

Cofnięcie uprawnień administracyjnych

Od czasu Visty istnieje zjawisko zwane UAC. Powoduje ono, przy odrobinie szczęścia, podniesienie uprawnień aplikacji do poziomu administratora po akceptacji użytkownika, w sposób całkowicie przezroczysty dla systemu. Przynajmniej tak być powinno, jednak przezroczystość ta jest fikcyjna. Weźmy dla przykładu aplikację uruchamianą z prawami admina, która potrzebuje poprzez COM (dokładniej: API oparte na COM) skomunikować się z aplikacją działającą w trybie użytkownika. Nie działa. Są też różne inne przypadki (File manager? Installer?) wymagające łatwego uruchomienia aplikacji w trybie użytkownika. Jak to zrobić?

2010-12-19

Pesymizm wczesnoprojektowy

Zaczynając nowy projekt nadzieje i oczekiwania są wielkie - dzieło będzie wspaniałe, cudowne, wielkie, idealne i inne superlatywy. Jaka jest rzeczywistość - wie każdy, kto ukończył (lub chociaż próbował) przynajmniej jeden w miarę kompletny projekt. Zwykle po czymś takim powstaje post mortem projektu, opisujące co wyszło, co nie wyszło i starające się dociec dlaczego nie wyszło. Przy kolejnym projekcie postanowiłem odwrócić PERL-kota ogonem - zacząć od wstępnego szkicu prawdopodobonego post mortem (ułożonego na bazie moich doświadczeń przy poprzednich projektach).

2010-12-17

Precz z płaskimi jak deska!

Pamiętasz menu Start z czasów Windows 98? Pamiętasz z czasów Windows XP? Widziałeś obecne (Windows 7) menu start? Miałeś okazję widzieć menu "Programs" w Ubuntu 10.10? Jeśli któryś z punktów nie jest spełniony - uzupełnij, dzisiejszy odcinek porówna niektóre z aspektów tworzenia interfejsów do kobiet ;-)

2010-12-08

Zaklinacz kodu

Czasem, gdzieś w komentarzach w kodzie pojawiają się takie określenia jak "White Magic", "Black Magic", "Deep Magic" i inne określenia różnych szkół magii. Nie każdy (zwłaszcza początkujący) koder zna znaczenie tych określeń, będących właściwie skrótami dłuższych, opisowych komentarzy.

Co ciekawe i zaskakujące: bardzo trudno znaleźć w Sieci dokładne wyjaśnienie wspomnianych terminów. Jest dokument, który opisuje wspomniane zagadnienia, jednak przebicie się przez cały, obszerny spis żargonu nie należy do przyjemnych zadań. W związku z tym postanowiłem podsumować kilka wybranych terminów i opisać je szerzej.

2010-11-04

Nokia N8 - recenzja

Jak dobrze wiadomo, jestem fanem i maniakiem smartfonów. Funkcjonalnych, potężnych smartfonów - staram się zmieścić w jednym urządzeniu tyle funkcjonalności, ile tylko się da. Stąd ucieszyła mnie możliwość dokładnego, "bojowego" sprawdzenia Nokii N8 - telefonu, który z czystym sumieniem mogę polecić właściwie każdemu.

2010-10-25

Prostota vs. estetyka

Wzorce projektowe, zalecenia projektowe platformy i wszystkie podobne powstają w jednym celu: mają ułatwić tworzenie i rozumienie kodu pisanego z użyciem danego API. Czy mówimy o operacjach asynchronicznych w Symbianie, czy o tworzeniu obiektu aplikacji jako globalnego - zawsze celem jest zwiększenie przejrzystości i przewidywalności kodu. Są jednak takie sytuacje, gdy trzymanie się wspomnianej przejrzystości zabiera stanowczo za dużo czasu i rozwiązanie najbardziej oczywiste, "podręcznikowe" jest tym najgorszym.

2010-10-14

emit Alert(StackOverflow);

Qt jest dość popularnym API do obsługi okien i nie tylko. Warto wspomnieć, że na jego bazie powstał interfejs graficzny KDE, mnóstwo większych i mniejszych aplikacji jak Skype, Gadu-Gadu, Google Earth, Kate oraz reszta aplikacji z pakietu KDE. API jest przemyślane, wieloplatformowe, kod przenosi się łatwo, ponadto w samym Qt wmontowano chyba wszystko, z czego typowy developer korzysta tworząc natywną aplikację. Jako, że każda platforma i każde API ma swoje niuanse, dzisiaj o przepełnianiu stosu za pomocą sygnałów i slotów - właśnie w Qt.

2010-10-06

Miasto przyjazne komunikacyjnie: opcja prywatna

Kontynuując poprzedni tekst dotyczący komunikacji publicznej w Warszawie, tym razem postanowiłem skoncentrować się na oparciu ruchu mieszkańców na prywatnych środkach komunikacji. Ponieważ, na chwilę obecną, własny pojazd jest jedynym sensownym rozwiązaniem (zwłaszcza gdy jedzie się do centrum po południu, a wraca nocą - w weekendy częsty scenariusz), tym razem całość opiera się o założenie, że większość osób ma i chce używać własnych pojazdów.

2010-09-28

Miasto przyjazne komunikacyjnie: opcja publiczna

Na chwilę obecną Warszawa jest komunikacyjnie miastem wrogim człowiekowi. Wrogim - to nie przesada. Wieczne korki, wieczna niewygoda, godziny czekania. Co najgorsze, nic tak naprawdę się z rozwiązaniem tego problemu nie robi. Niby są pomysły, niby są plany, jednak... za mało radykalne. Żeby dało się tu żyć, konieczne są poważne zmiany. Jest na to kilka pomysłów, moje (zupełnie różne) przedstawię w tym i kilku kolejnych publikacjach.

O rozwiązywaniu problemów - jak uczyć się programować

Mówi się, że informatyka jest nauką o rozwiązywaniu problemów. Po przeczytaniu kilku różnych wpisów na blogach dotyczących studiowania informatyki (zwłaszcza tekstu Gynvaela) postanowiłem trochę napisać o samodzielnej nauce programowania. Znacznie się różni od metod przyjętych na uczelniach, sądzę, że może być przydatna zwłaszcza na studentów. Tego sposobu nauki nie poznacie w szkole (przynajmniej polskiej), będziecie natomiast musieli przyswoić go w pracy.

2010-09-22

Aplikacja sterowana zewnętrznie

Różne są sposoby programowania asynchronicznego. Stosuje się wątki, przetwarzanie porcjami, delegację do osobnych procesów i jeszcze kilka innych technik. Zakładając, że w danym przypadku wydzielamy pewną operację asynchroniczną do osobnego procesu (załóżmy, niech to będzie kompresja), należy mieć nad tym zadaniem pewną kontrolę. Jak można to zrobić?

2010-09-17

Parallel blogging

Krótko: z racji pojawienia się tu dużej ilości materiałów na temat socjotechniki, wyodrębniłem je w formie osobnego bloga. Nie potrafię określić, gdzie aktualizacje będą częstsze - regularności radzę się nie spodziewać. Oczywiście wszelkie aktualizacje zawiera Twitter ;)

2010-09-05

Jak zaprogramować programistę część 1

Ostatnio miałem dość niecodzienne zadanie: zostałem poproszony o pomoc w znalezieniu sposobu, w jaki bezproblemowo można komunikować się na płaszczyźnie prywatnej z programistą. Ponieważ temat uważam za ciekawy i wiąże się z rozszerzoną niedawno tematyką bloga, postanowiłem zamieścić tu streszczenie i opracowanie wszystkiego tego, co już przekazałem i co przekażę. Wiem doskonale, że prezentowana tu wizja "przeciętnego programisty" jest bardzo stereotypowa - nie jest to na pewno poważne i jako poważne nie powinno być traktowane ;)

2010-08-06

Przed wakacjami #3: idziemy po piwo

Kto jest klientem sklepu? Pracujący 9-17 obywatel, robiący zakupy przed lub po pracy, świętujący niedzielę, wstający w sobotę przed godziną 11 i posługujący się wyłącznie gotówką. Do tego: posiadający cały worek drobnych i żadnych "grubszych" nominałów (najlepiej w ogóle płacący odliczoną kwotę).

2010-08-05

Przed wakacjami #2: click to buy

W ramach przygotowań wakacyjnych zmuszony byłem zakupić kilka rzeczy. Oczywista sprawa: sklepy tradycyjne są drogie, mało wygodne (trzeba jeździć po całym mieście) i rzadko kiedy mają to, co aktualnie potrzebuję. Stąd pomysł i konieczność zrobienia zakupów online. Zapewne większość z Was korzystała już z opcji "kup przez Internet" - podstaw opisywał nie będę. Skoncentruję się na różnych szczegółach i analizie niektórych pomysłów dot. e-commerce.

2010-08-04

PUApka tutoriali

Studia informatyczne trwają pięć lat. Kurs CISCO trwa pół roku i kosztuje fortunę. Przeczytanie tutoriala jak skonfigurować małą sieć domową zajmuje 20 minut. Po co więc uczyć się trudnej teorii, gdy można użyć gotowej instrukcji, którą zrozumiałaby i wykonała nawet moja 12-letnia siostra?

Przed wakacjami #1: Trzymając w ręku bilet zielony...

Wsiądź do pociągu byle jakiego, nie dbaj o bilet... i się nie wypłacisz. Podróż koleją w tym kraju trzeba zaplanować - inaczej koszta rosną do kosmicznych wartości. Ponieważ Osoba Przezorna Zawsze Zabezpieczona ("Solidarność" ;-) ) - przygotowanie do wyjazdu zaczynam dzisiaj. XXI wiek sugeruje, że przed samym wyjazdem nie będzie konieczne ruszenie się sprzed komputera (komputera? Telefon powinien wystarczyć!) - a w dniu wyjazdu wystarczy zrobić to, co śpiewa Maryla. Czy tak jest?

2010-08-03

O czym mam pisać?

Info: blog zmienił adres. Wszystkie stare linki, oczywiście, działają, natomiast nowy url jest znacznie prostszy do zapamiętania. Dla niezauważalskich i iPhone'owców: nowy adres to http://blog.asmodeusz.net/.

Ostatnio mniej piszę. Mógłbym to tłumaczyć nawałem zajęć, pracy, projektów własnych, życiem (tak, pomimo bycia programistą z zamiłowania mam też życie :D ) czy innymi sprawami. Przyznam otwarcie: nie wiem, o czym miałbym pisać. Inaczej: mam kilka(dziesiąt) pomysłów na różne, mniej lub bardziej odkrywcze, wpisy - natomiast niemal żaden z nich nie pasuje do tematyki tego bloga. Stąd też szykują się najróżniejsze zmiany.

2010-07-14

Blog design - od koszmaru do portalu

Poprzedni design bloga straszył. Straszył potwornie. Czarne tło i białe litery męczyły wzrok. Koszmarna ilość reklam pomiędzy postami wkurzała (teraz już rozumiem, po co komu AdBlock). Wąski, wciśnięty między wielkie marginesy tekst okazywał się być niemal nieczytelny. Oczywiście, zdawałem sobie z tego sprawę. Wiedziałem, że jest źle, wiedziałem też, co jest złe. Mimo to nie poprawiałem bloga przez długi czas.

Dlaczego? Uważałem, że treść jest ważniejsza niż forma. Ciekawy tekst przeczyta każdy, nawet jeśli musi przecierpieć możliwie nieergonomiczny układ. W razie nadmiernych cierpień - nikt nie zabraniał wyłączenia CSS (wtedy blog zyskiwał znacznie na czytelności). Owszem, czytelność była niezerowa, jednak do kompletnego zera wiele nie brakowało. Pomijając dzień publikacji posta (wtedy ilość unikalnych odwiedzin skakała do około 10-20), średnia dzienna ilość wizyt oscylowała w granicach 1-4.

Zmiany ukierunkowane zostały pod jeden cel: blog ma być możliwie wygodny w czytaniu. Nie musi być stylowy, efektowny, piękny, ma być możliwie wygodny. Tak wygodny, żeby korzystanie zeń nie sprawiało żadnych problemów. Żeby wszystko, co potrzebne, było łatwe do znalezienia. Co więc dokładnie się zmieniło?

2010-07-13

Augmented Reality - first look

Dawno, dawno temu, ludzkość marzyła o pełnej integracji komputerów z życiem codziennym. Jak wiadomo, niezbyt się to udało, przynajmniej taki stan mamy na dzień dzisiejszy.

Jedną z technologii związanych z integracją świata wirtualnego i rzeczywistego jest szeroko pojęte Augmented Reality. Działanie AR opiera się na różnych implementacjach i rozwiązaniach, natomiast wspólny jest efekt: nałożenie, w czasie rzeczywistym, dodatkowych informacji wirtualnych na obraz świata rzeczywistego - zależnie od formy albo jako HUD na światłoprzepuszczalnej powierzchni, albo jako modyfikacje obrazu z kamery cyfrowej. Niżej zamieszczam pomysł prostego rozwiązania AR stosowalny, gdy dysponujemy zestawem: GPS + akcelerometr/żyroskop+kompas cyfrowy.

2010-07-07

Między programowaniem a pisaniem programów

Dzisiejszy wpis sponsorowany jest przez idee różnych rozmów na forach oraz najróżniejszych blogów poświęconych programowaniu i projektowaniu aplikacji. Jest to głównie moje własne podejście do rozróżnienia pomiędzy początkującym a zaawansowanym programistą - odzwierciedlone zwłaszcza w chwili, gdy wspomniany programista pracuje.

2010-06-21

Nokia N900 - test i recenzja

3.2MPix. 5MPix. 12MPix! Wbudowana pamięć 8GB. Wbudowana pamięć 16GB. Ekran 3.2". Ekran 4.3". Komórkowy wyścig zbrojeń uważam za otwarty. Dosłownie z tygodnia na tydzień pojawiają się nowe - szybsze, mocniejsze, podobno lepsze - urządzenia. Czy naprawdę wszystkie te "nowinki" są warte uwagi? I tak wiadomo do czego zmierza smartphone - do kieszonkowego, wyjątkowo mobilnego netbooka. Grunt, że jeden taki już jest.

2010-06-14

MFC, WinAPI i wersja systemu

WinAPI jest kompatybilne wstecz. Często powtarzana przez programistów Windows fraza, która generalnie jest prawdziwa. Są jednak pewne wyjątki, okazuje się, że nawet Microsoft robi spore zmiany we własnych headerach, co nieraz znacznie utrudnia utrzymanie kodu.

2010-05-26

C++ to zło?

[Defective C++]

Polecam przejrzeć. Dodatkowo, Reg skomentował to na swoim blogu.

Z mojej strony krótko: z tezami przedstawionymi się zgadzam, do użytku radzę: do normalnego użytku jakiś język zarządzany (C#, VB.NET, Java), jeśli naprawdę potrzebna jest kontrola nad każdym bajtem i (de)alokacją - pure C (a ten moduł w C połączyć z zarządzaną obsługą usera).

2010-05-23

Studiowanie informatyki - warto?

Jak zapewne niektórzy z was wiedzą, po semestrze rzuciłem studia celem podjęcia pracy jako programista. Stwierdziłem, że potrafię się obejść bez nich i mogę wyjechać pracować w zawodzie. Jako, że niedawno trafiłem na ten wpis, postanowiłem napisać kilka własnych spostrzeżeń na temat studiów informatycznych i ich przydatności.

2010-05-18

GameMonkey w SpaceFight

SpaceFight się rozwija. Ba, rozwija się całkiem szybko - podstawowa fizyka, HUD i sterowanie istnieją, nawet zasoby są ładowane na podstawie danych, a nie hardkodowanych wartości (no... poza ścieżką do pliku z testową misją). Stąd w końcu pora na język skryptowy podpięty do projektu.

2010-05-06

Windows Phone 7 - porażka roku?

Większą część swoich rozważań opieram na lekturze tego tematu z forum XDA-developers, dodając do tego własne spojrzenie na rozwój technologii mobilnych i wielki krok w tył w wykonaniu MS. Jak zapewne wiecie, jestem bliższy power-userowi niż przeciętnemu zjadaczowi minut, stąd większa część oceny będzie zapewne "skażona" moimi wymaganiami względem systemu mobilnego.

2010-04-22

SpaceFight: dylatacja czasu

Kopia posta z Forum Gamedev.pl (zbyt dużo mówi o grze, żeby pominąć).

Dylatacja czasu i podróże wewnątrzukładowe:
Jako, że mowa o zjawisku udowodnionym naukowo i dokładnie opisanym , osoby nieobeznane odsyłam do wiki. Pewnego rodzaju innowacją byłoby wprowadzenie w moim shooterze podróży wewnątrz układu planetarnego. Jak bym to widział w chwili obecnej: do dyspozycji gracza w czasie misji jest kilka "punktów węzłowych": statek matka, punkt celu misji, możliwe, że 1-2 dodatkowe punkty powiązane z zadaniem, między tymi punktami gracz może "skakać" z prędkością zbliżoną do prędkości światła.

2010-04-15

Rok później: klawiatura i mysz

Dzisiaj mija rok, gdy skompletowałem obecny zestaw urządzeń wejściowych - klawiaturę, mysz i podkładkę. Ten czas wystarczył, by względnie obiektywnie ocenić dobór urządzeń i ich działanie względem potrzeb programisty. Dalej połączona recenzja mojego obecnego zestawu roboczego.

2010-04-14

MVC w obsłudze aktorów (obiektów) gry

Projektując obsługę agentów gry na potrzeby SpaceFight, nieświadomie zaaplikowałem wzorzec MVC (Model-View-Controller) - rozdzielenie aktora na model (czyli obiekt z danymi), widok (encja silnika graficznego/dźwiękowego) i kontroler. Podejście takie skutkuje sporą elastycznością w zakresie działania AI, stąd postaram się klarownie przedstawić koncepcję realizacji MVC w grze.

2010-04-12

SpaceFight - szkic pomysłu

Postanowiłem w końcu spisać pomysł dotyczący SpaceFight (projektu, który katuję już drugi rok), z zamiarem zebrania feedbaku i opinii. Czekam na uwagi, pomysł poniżej:

2010-04-09

Ovi Developers Challenge

Dwa lata pracy przy Symbianie spaczyły mnie wystarczająco - postanowiłem wziąć udział w polskim Ovi Developers Challenge organizowanym przez Nokię. Jako, że konkursów developerskich z nagrodami jest mało (a jeszcze mniej jest programistów znających Symbiana), liczę, że mam jakąś szansę na wygranie przynajmniej telefonu.

2010-04-01

Własny format pliku

Układając własne formaty plików zwracam uwagę przede wszystkim na łatwość parsowania i zapisu pliku. Dokładnie w tej kolejności - plik ma przede wszystkim być łatwy w parsowaniu, dopiero potem łatwy w zapisie. Zależność jest oczywista: w większości przypadów plik jest zapisywany znacznie rzadziej niż wczytywany, poza tym prosty w napisaniu, poprawny parser ułatwia znalezienie błędów w kodzie zapisującym (w drugą stronę jest nieco gorzej). Stąd zmontowałem swego rodzaju prosty szablon dla plików binarnych.

2010-03-19

Wirtualny System Plików

Jako, że piszę silnik połączony z grą, niemal koniecznością stało się użycie jakiegoś VFS. "Gotowca" nie chciałem - większość operuje na ANSI nazwach plików, do tego różnie sobie radzą z przezroczystością systemu plików (archiwa, rzeczywisty FS, priorytety itp.). Stąd powstało moje własne rozwiązanie - system SFFS z obsługą (własnych) archiwów SFA.

2010-03-17

Skuter Kingway Coliber - minirecenzja

Nie samym kodem człowiek żyje, czasem trzeba dojechać do miejsca kodzenia. Do tego sporo ludzi używa tzw. komunikacji miejskiej (słowo "komunikacja" akurat tu najmniej pasuje) czy też własnego, wygodnego samochodu. Nieliczni (a szkoda) decydują się na jednoślad, wybierając zwykle rower. A błąd! Skuter okazuje się być najlepszym sposobem poruszania się po mieście, jaki wymyśliła ludzkość (no, może poza limuzyną z szoferem, czy prywatnym śmigłowcem - zostańmy przy kategorii ludzi z zarobkami w okolicach średniej/mediany).

2010-03-16

Windows Phone 7 SDK

Mała uwaga: blog się niebawem przeniesie. Migracja z Wordpress na ASP.NET. Powód: chcę większą kontrolę nad samym blogiem.

Z racji zainteresowań (nie tylko) zawodowych, Windows Phone 7 SDK pojawiło się u mnie na dysku, gdy tylko się o tym dowiedziałem. Paczka zawiera nie tylko samo SDK, a też (w zestawie?) .NET Framework 4, XNA 4.0, nowy Silverlight, IDE Visual Studio 2010 Express (wersja tylko do mobile development). Czyli spora paczka. Sama instalacja jest nudna (pomijając kilka zapisów w EULA typu zakaz testowania na fizycznych urządzeniach czy zakaz dystrybucji Location API do Chin i Korei Północnej), za to sam pakiet zmienił się sporo w porównaniu do poprzednich.

2010-03-15

DX10: I made this box myself

Ostatnimi czasy trafiła mnie zachcianka zabawy w Gamedev. Jak niektórzy wiedzą, całkowicie wyłącza mi to logikę i zmusza do pisania absurdalnych, bezsensownych projektów, których i tak nie skończę ;-) Tym razem cel przerósł nawet moje "standardy" - samodzielna gra oparty o napisany do niej silnik. Czyli: nie dość, że mechanikuję, to jeszcze na tej mechanice chcę stworzyć grę.

2010-03-08

Reorganizacja

Jako, że niedawno panował tu spory bałagan i nadmiar tekstu, postanowiłem zreorganizować wyświetlanie bloga. Teraz w każdym poście (nie edytowałem tylko najstarszych) pojawia się opcja "czytaj dalej" - łatwiej przeglądać nagłówki, niż całe posty żeby wybrać interesujący temat. Żeby nie było, że piszę o blogu ( ;-) ), będzie ogólnie o różnie pojętej reorganizacji.

2010-02-22

Bitmapy dopasowane do rozdzielczości

Ogólnym zaleceniem w programowaniu grafiki 2D jest stosowanie bitmap dopasowanych do rozdzielczości ekranu/wielkości okna. Co, jak się okazuje, nie zawsze jest proste i bezproblemowe. Zakładając, że nasza gra ma za zadanie wyświetlać pełnoekranowe bitmapy, które docelowo wyglądać mają jak najładniej, a do tego szybko się ładować, wypadałoby mieć przejrzyste, ładne rozwiązanie.

2010-02-19

CleanupStack i ramkowanie

W przypadku alokacji i dealokacji zasobów istotna często jest kolejność. Przykładowo: tekstury Direct3D zależne są od istnienia urządzenia, natomiast samo urządzenie od obiektu Direct3D. Czasem problemem jest zwalnianie zasobów w odpowiedni sposób, zgodnie z niezbędną kolejnością. Wzorując się na Symbianowym pomyśle CleanupStacka postanowiłem przygotować opracowanie tego tematu.