Archiwum dla październik 2008
PDC 2008 Video
Może to tylko ja jeszcze nie miałem możliwości, zapozna się z nowościami z PDC. Gdyby jednak, ktoś jeszcze się znalazł, tutaj może znaleźć nagrania z prezentacji z załączonymi plikami PowerPoint.
Stackoverflow
Ostatnio słyszę dużo o nowym forum dla developerów mianowicie o stackoverforw.com. Postanowiłem sprawdzić o co tyle hałasu. Stonka fajna przejrzysta, bez zbędnych bajerów ale przecież nie o to tu chodzi. Ważne są odpowiedzi, ich jakoś i czas w jakim zostają udzielone. Tematyka pytań, dowolna rzecz jasna w ramach szeroko pojętego zagadnienia jakim jest tworzenie oprogramowania. Postanowiłem zadać, proste acz nie co może specyficzne pytanie i zobaczyć jaki będzie rezultat. Pytanie dokładnie brzmiało:
Define ‘poco’?
Can someone define what exactly ‘poco’ means? I’ve encountering the term more and more often and I’m wondering is it only about plain classes or it mean something more?
Jeszcze się dziwię temu co się stało zaraz po jego zadaniu. Pierwszą odpowiedź miałem zaraz po tym, jak zostałem przekierowany do strony głównej. Nie minęła nawet minuta, co ja piszę nawet 30 sekund. Fakt nie trzeba dużo aby opisać co znaczy akronim POCO, ale mimo wszystko. Potem ruszyła mała lawina. Po 9 minutach od zadania pytania miałem 7 odpowiedzi z czego jedynie dwie były prośbami o sprecyzowanie czy na pewno chodzi mi o ‘poco’ a nie o ‘pojo’ (to goście od Javy). Pojawiły się komentarze do udzielonych odpowiedzi w wyniku czego niektóre pytania zostały, nawet kilkukrotnie przeredagowane!
W efekcie po niespełna 10 minutach miałem przeszło 50 wyświetleń pytania, pełne wyjaśnienie terminu wraz z rysem historycznym skąd się on wywodzi. Co bardziej interesujące głosowanie czytelników, wyłoniło najlepszą odpowiedź.
Wnioski nasuwają się same – masz pytanie, teraz wiesz gdzie je zadać! Community to potęga.
CodeRush Xpress for Visual Studio
Panowie (i panie
) z DevExpress udostępnili nową wersję CodeRush Xpress – swojego narzędzia wspomagającego pracę programisty. Program jest dostępny za darmo i zawiera całkiem interesującą listę udogodnień dla developerów.
CodeRush jest największym konkurentem ReSharper’a – wtyczki o której słyszał, chyba, każdy developer .NET. Nowa darmowa wersja na pewno poszerzy grono zwolenników tego pierwszego. Konkurencja zawsze jest dobra, przypomni panom z JetBains (twórcy ReSharper’a), że nie wolno zakopywać gruszek w popiele i nadal muszą się starać aby utrzymać prowadzenie. Tym bardziej, że w związku z długim okresem oczekiwania na wersję 4.0 wtyczki, pojawiło się dużo głosów niezadowolenia.
CodeRush’a nie znam, w wolnej chwili (jakoś brakuje ich ostatnio) zainstaluję go sobie i się nim pobawię. Jedno co obecnie mi się w nim nie podoba to ‘cukierkowatość’ interfejsu, strzałeczki, kreseczki. Nie wiem może wynika to z mojej ignorancji, czas pokaże.
Agile Tuning
AgileTuning.PL jest nowym polskim podcastem IT poświeconym, jak sama nazwa wskazuje, metodologiom agile. Pierwszy odcinek omawia tzw. stand up’y – czyli krótkie, najlepiej codzienne spotkania zespołu. Zapraszam do słuchania.
Telephony Library
Większość obecnych urządzeń mobilnych z Windows Mobile na pokładzie (i nie tylko), posiada wbudowany telefon. A to otwiera ciekawe możliwości przed naszymi aplikacjami. Wszystko było by pięknie gdyby nie konieczność pracy z Telephony Application Programming Interface (w skrócie TAPI) biblioteką która umożliwia dostęp do tych wszystkich potencjalnie przydanych możliwości. Problemem jest stopień skomplikowania biblioteki, została ona napisana w C w roku bodaj 1993 i od tego czasu jedynie rozszerzana o nową funkcjonalność ew. przystosowywaną do nowych standardów. W efekcie operowanie na niej nie należy do przyjemności, no chyba, że ktoś ma skłonności lekko sadomasochistyczne.
Lepszym rozwiązaniem może być skorzystanie z komercyjnej biblioteki Telephony Library dostarczonej przez panów z OpenNetCF. Biblioteka ta jest wrapperem napisanym wokół TAPI i usuwa większość trudności na no bok. Przykładowo prosta klasa umożliwiająca nawiązywanie połączeń może wyglądać następująco:
using System; using OpenNETCF.Telephony; public class Phone : IDisposable { private Telephony _tapi; private Line _line; private IAsyncResult _callResult; public event Call.CallStateHandler CallStateChanged; public static readonly Phone Instance = new Phone(); public Phone() { Initialize(); } private void Initialize() { _tapi = new Telephony(); _tapi.Initialize(); _line = _tapi.CreateLine(0, MediaMode.InteractiveVoice, CallPrivilege.Owner); if (_line == null) { return; } _line.NewCall += new Line.NewCallHandler(NewCall); } private void NewCall(Call call) { call.CallState += new Call.CallStateHandler(CallStateChanged); } public void Call(string phoneNumber) { if (_line == null) { return; } _callResult = _line.BeginMakeCall(phoneNumber, 1, null, null, this); } public void EndCall() { if (_callResult == null) { return; } Call call = _line.EndMakeCall(_callResult); if (call != null) { call.Hangup(); call.CallState -= new Call.CallStateHandler(CallStateChanged); call.Dispose(); call = null; } } #region IDisposable Members public void Dispose() { if (_tapi != null) { _tapi.Shutdown(); _tapi = null; } } #endregion }
.NET CF i aktualizacja WSDL
Dzisiaj muszę trochę ponarzekać na Visual Studio 2008
Chłopaki zrobili kawał dobrej roboty tyle, że nie ma rzeczy idealnych, tak jest i w tym przypadku. Aplikacja mobilna, nad którą aktualnie pracuję konsumuje pokaźną ilość web service’ów i jak to w życiu bywa, z biegiem czasu i rozwojem funkcjonalności ulegają one zmianie. Normalka – niby nic a jednak pojawia się pewien problem – otóż o ile dodanie nowego web service’u przebiega poprawnie, to uaktualnienie już istniejącego powoduje następujący błąd:
I z aktualizacji nici. Dzieje się tak jedynie dla referencji w aplikacjach mobilnych, we wszystkich innych typach projektów (win forms/web) funkcjonalność działa bez zarzutu. Po jakiejś godzince walki i eksperymentów z instalacją/deinstalacją Visual Studio 2008 SP1 doszedłem, że problem znika po odinstalowaniu i ponownym zainstalowaniu .NET Compact Framework 3.5 Redistributable i uruchomieniu komendy:
devenv /resetskippkgs
Która spowoduje, że przy następnym uruchomieniu Visual Studio spróbuje załadować wszystkie zarejestrowane dodatki, nawet te, które wcześniej z jakiś względów były pomijane.


