Archive for marzec, 2008

Roczek

marzec 31, 2008

 

Dziś mija rok, od chwili założenia tego bloga. Muszę przyznać, że czas ten zleciał, zdumiewająco szybko. Dopiero, co zastanawiałem się nad sensem tegoż przedsięwzięcia, a tu proszę pierwsza ‘rocznica’. Czas, więc na jakieś małe podsumowanie.

 

W sumie opublikowałem 175 postów (nie licząc tego), otrzymałem 130 komentarzy (aż tyle!?) i dorobiłem się 12 kategorii. Obecnie średnio dziennie odwiedza mnie ok. 120 osób, przy czym najlepszego dnia zaliczyłem 305 wejść na stronę. W sumie strona została wyświetlona ok. 29.000 razy, co daje mi ok. 80 wizyt dziennie. Dobrze, że wordpress.com nie zlicza także moich wejść, bo licznik wskazywałby teraz jakieś 50.000 ;)

 

Wyniki może nie są imponujące, ale też nie robiłem nic w kierunku popularyzacji bloga - pozostawiłem to naturalnemu biegowi rzeczy. Blog nie figuruje w żadnych katalogach, stronach społecznościowych nie korzystam też z serwisów typu digg czy wykop. Nie powiem, że nie zależy mi na ‘oglądalności’ no, bo przecież, w tym cały sens posiadania strony internetowej, niezależnie od jej charakteru. Jednak nie szukam, nazwijmy to ‘podkręcanej popularności’, chwilowych wizyt ludzi niezwiązanych/niezainteresowanych tematem. Wszak jest to blog o dość wąskiej (jak na informatykę) tematyce i do tegoż ‘wąskiego’ grona odbiorców są skierowane moje posty.

 

Z rzeczy, z które planuję, a nie mam czasu zrealizować jest zmiana silnika bloga z WordPress’a na BlogEngine.NET. Nie żebym miał jakieś problemy z wordpress’em, ale PHP nie ma dla mnie większego sensu i wolałbym być bliżej platformy .NET. Więc jeśli zauważycie jakieś drastyczne zmiany w wyglądzie strony, to znaczy, że w ostatnim czasie się potwornie nudziłem ;)

 

Ot, miało być króciutko, a wyszło tak jak widzicie. Dzięki wszystkim za obecność na blogu za komentarze i maile. Na koniec muszę sam sobie pogratulować :) za wytrwałości i świadomie przyznać, że nie sądziłem, że ten ‘eksperyment’ przetrwa i będzie miał się dobrze!

iPhone Tutorial for .NET Developers

marzec 29, 2008

Rabi Satter opisuje jak stworzyć najprostszą możliwą aplikację (czytaj ‘Hello World’) dla iPhone’a. Korzysta ze środowiska, Xcode które jest dostarczane razem z iPhone SDK. Wszystko podane z perspektywy programisty .NET’owego. Po przeczytaniu, zdałem sobie sprawę, że pracując z platformą .NET i Visual Studio, bardzo łatwo zapomnieć, że tam gdzieś istnieje całkiem inny świat ;)

Tak od jakiegoś czasu chodzą mi po głowie myśli o zakupie iPhone’a. Fajny design, mnogość możliwości, łatwość obsługi i oczywiście moda ;) . To trzeba, chłopakom, przyznać potrafią wylansować produkt.
Oczywiście nie ma róży bez kolców, wysoka cena i niezdrowa chęć producenta do kontroli/ograniczania tego, co chcemy zrobić z urządzeniem. Bez łamania umowy i hakowania urządzenia nie da się dużo zdziałać, przykładem może być konieczność korzystania z iTunes do zmiany melodyjki telefonu (koszt $2). Na dodatek nie będę mógł pisać własnych aplikacji, no chyba, że Apple wyda SDK na PC’ta albo ja zainwestuje w Mac’a ;)

MyMobiler v 1.2

marzec 28, 2008

Jakiś czas temu pisałem o programie MyMobiler. Darmowym narzędziu, dzięki któremu możemy kontrolować urządzenie PDA, podłączone do komputera. Właśnie zainstalowałem, jego najnowszą wersję. Autor oprócz usunięcia problemu z wprowadzaniem danych i odświeżeniu wyglądu aplikacji, dodał także szereg nowych, interesujących możliwości:

  1. Mechanizm ’skórek’ dla naszej aplikacji - co by okienko wyglądało podobnie do rzeczywistego urządzenia.
    image
  2. Mobile Exploler - zewnętrzny interfejs do operowania na plikach zgromadzonych na urządzeniu. Według mnie o niebo wygodniejszy w obsłudze od opcji Explore z ActiveSync’a. Co prawda samemu jestem uzależnionym od Total Commandera i wolę korzystać z plug-in’u, o którym pisałem tutaj. Jednak zawsze to ciekawa alternatywa.
    clip_image002
  3. Mapowanie przycisków specjalnych urządzenia do klawiszy funkcyjnych.
  4. Nagrywanie naszych poczynań i zapis do pliku w formacie AVI.
  5. Możliwość połączenia się z urządzeniem bez konieczności korzystania z ActiveSync’a.
  6. Drag & Drop plików z komputera na PDA - przynajmniej tak twierdzi autor, mi nie udało się w ten sposób skopiować żadnego pliku.

Całość pracuje stabilnie, jedynym minusem, jakiego mogę się doszukać, są zauważalne spore opóźnienia między wydaniem polecenia a jego wykonaniem. Jednak nie wykluczam, że winę za to może ponosić urządzenie a nie program.

Strona domowa projektu znajduje się tutaj.

Windows Services

marzec 18, 2008

Odkąd pracuję z Visual Studio tworzenie usług sytemu Windows (ang. Windows service), zawsze było żmudnym procesem. Co by nie powiedzieć o usprawnieniach wprowadzanych w kolejnych wersjach środowiska, proces ten nie uległ znaczącym zmianom. Chyba największym problemem jest pracochłonny i kłopotliwy proces testowania, który wymaga wykonania następujących kroków:

  • Zainstalowania naszej usługi w systemie, konieczny jest do tego specyficzny instalator - opis jak takowy przygotować można znaleźć m.in. tutaj. Sam projekt powinien być skompilowany w trybie Debug, aby zachować informacje o ustawionych breakpoint’ach.
  • Do katalogu w którym zainstalowaliśmy naszą program, kopiujemy plik *.pdb który znajdziemy w katalogu bin naszego projektu.
  • Uruchamiamy usługę. Możemy skorzystać z Panelu Sterowania lub wystukać na linki komend net start “nazwa naszej usługi”
  • Uruchamiamy Visual Studio i z menu Tools wybieramy Attach to Process (lub wciskamy: Ctrl + Alt + P), pojawia się przed nami następujące okienko:

image

  • Z listy dostępnych procesów wybieramy ten reprezentujący naszą usługę. Ponieważ, zwykle usługi działają ze specjalnymi uprawnieniami, musimy najpierw zaznaczyć opcję Show processes from all users.
  • Klikamy Attach i Visual Studio podłączy się do naszego procesu. Dzięki skopiowanemu wcześniej plikowi *.pdb, zawierającemu symbole debugowania środowisko będzie wstanie określić położenie kodu źródłowego naszej aplikacji. W przypadku gdy źródła będą niedostępne, zostaniemy poproszeni o podanie ich położenia.
  • I możemy swobodnie debugować.

Niestety, cały proces musimy powtórzyć gdy zmodyfikujemy kod i ponownie chcemy go przetestować.

Problemem jaki możemy napotkać po drodze są kłopoty z ponowną instalacją naszej usługi, komunikat:

image

Nie doszedłem czym jest on spowodowany, jednak podejrzewam, że nie wszystko zostało, prawidłowo usunięte podczas wcześniejszej de-instalacji. Aby temu zaradzić, musimy ręcznie odinstalować usługę. Z linii komend wpisujemy polecenie:

sc delete “nazwa naszej usługi”

Wszystko powyższe sprawdza się jeśli korzystamy z systemu Windows XP, jeśli jednak używamy osławionej Visty. W liście procesów okna Attach to Process, nie pojawi się pozycja reprezentująca naszą aplikację. Ma to prawdopodobnie ma to związek z nową architekturą zabezpieczeń systemu. W takim wypadku ‘zewnętrze’ podłączenie środowiska do procesu możemy zastąpić jedną linią kodu, która spowoduje automatyczne uruchomienie debugger’a:

System.Diagnostics.Debugger.Launch();

Oczywiście nie zmienia to faktu, że musimy naszą usługę zainstalować i przekopiować odpowiednie pliki. Inną użytecznym poleceniem może być:

System.Diagnostics.Debugger.Break();

która wymusi wstrzymanie wykonania programu. Dobrze jest umieścić powyższe metody w dyrektywie kompilacji warunkowej, aby przypadkiem nie zostały, częścią finalnej wersji programu.

#if DEBUG
System.Diagnostics.Debugger.Launch();
#endif

Dwa komputerki

marzec 4, 2008

Jak już pisałem w poprzednim poście, dostałem nowego blaszaka do pracy. Trochę czasu zajęło mi ustawienie systemu i zmuszenie go do pracy w firmowej sieci. Tak się złożyło, że moja nowa maszyna była pierwszym komputerem w firmie, z zainstalowanym systemem Windows Vista. Zgadnijcie komu przypadł ‘zaszczyt’, zmuszenia tego wszystkiego do pracy? Teraz rozumiem wszystkie narzekania, admin’ów na nowy system Microsoftu, zainstalować Vistę na jednej maszynie i z niej korzystać to jedno a zmusić ją do pracy w domenie to zupełnie inna bajka. No dobra trochę przesadzam, ale jako typowego developera nie pociąga mnie rozgryzanie problemów administracyjnych, czemu Vista nie łączy mi się z internetem czy instalowanie najświeższych update’ów, service pack’ów i innych takich na głównym serwerze. Szczególnie, że nie wiedzieć czemu, po czymś takim drukarka w biurze, przestaje być dostępna w sieci. :(

Najcięższą próbą, z całej tej operacji okazała się walka z Nortonem Antivirus’em wersją korporacyjną. Nie bacząc na ostrzegawcze komunikaty, pozwoliłem sobie zainstalować część kliencką na Viscie - co okazało się zdecydowanie, złym pomysłem. Liczba błędnych komunikatów i niemożność odinstalowania aplikacji zmusiły mnie do szybkiej re-instalacji systemu. Wiem, ignorowanie ostrzeżeń, nie jest najlepszym pomysłem, ale to chyba pierwszy raz, gdy Windows rzeczywiście miał rację. Aha i bynajmniej nie jest to krytyka filozofii: ‘Chcesz sobie zrobić kuku to proszę bardzo, ale na własną odpowiedzialność’.

No dobrze, dosyć tych narzekań, ;) teraz już wszystko chodzi zgrabnie i jestem zadowolony. Jednak nie o tym chciałem pisać, otóż pracuję teraz na dwóch komputerach, na jednym klient pocztowy, przeglądarka, iTunes, SSMS etc. na drugim Visual Studio i inne narzędzia. Wszystko było by pięknie gdybym jeszcze nie musiał skakać z jednej myszki/klawiatury na drugą. Z pomocą przyszło mi tu Google i znaleziony dzięki nim programik Input Director. Program ten instalujemy na maszynach, pomiędzy którymi chcemy współdzielić klawiaturę/myszkę, określamy kolejność ekranów i gotowe. Podczas pracy nie zauważyłem, żadnych opóźnień czy dziwnych skoków kursora. Dodatkową opcją programu, która rewelacyjnie ułatwia pracę, jest możliwość synchronizacji schowków na połączonych komputerach. Teraz praca z wykorzystaniem dwóch komputerów to niczym nie zmącona przyjemność. ;)