poniedziałek, 26 maja 2008

Problemy i częste błędy podczas pracy z Silverlight-em . Part 2

Kolejnym błędem, jaki może się przydarzyć podczas pracy z Silerelightem jest cachowanie aplikacji, a dokładnie plików xap, w pamięci przeglądarki. Gdy zmiany w kodzie nie są widoczne w uruchamianej aplikacji, warto sprawdzić czy widzimy jej najnowszą wersję.

Problem ten nie jest widoczny, gdy rozwijamy tylko aplikację Silverlight, ale jeśli zagnieżdżamy ją w stronie ASP.NET, która jest w tym samym "Solution", to bardzo często plik xap nie jest podmieniany na nowy, a co za tym idzie wyświetlamy starą i nieaktualną wersję aplikacji Silverlight-a.

Rozwiązanie:

  1. Przeglądarka IE -> Tools -> Internet Options -> General -> Browsing History -> Delete -> Temporary Internet Files (ja tu wybieram opcję "Delete All", tak żeby mieć pewność)
  2. Drugim, może nie do końca rozwiązaniem, jest wyświetlanie numeru build-a aplikacji. Wystarczy wrzucić drobną labelkę, a w niej numer wersji. Np.:

    <TextBlock x:Name="label" Width="400" Height="50"

    TextWrapping="Wrap" />

Assembly assembly = Assembly.GetExecutingAssembly();

label.Text = assembly.FullName;


W pliku AssemblyInfo.cs należy zmienić z 1.0.0.0 na 1.0.*

[assembly: AssemblyVersion("1.0.*")]

[assembly: AssemblyFileVersion("1.0.*")]


Straciłem kilka godzin, zanim przypadkiem wpadłem na to, że pracuje na niezaktualizowanej wersji aplikacji Silverlight-a. Mam nadzieje, że Wy już nie będziecie musieli się z tym męczyć.


Pozdrawiam,
Jacek Ciereszko

Problemy i częste błędy podczas pracy z Silverlight-em . Part 1

Jednym z najbardziej dokuczliwych błędów jakie możemy otrzymać jest błąd ładowania plików lub assembly. Pojawia się on podczas pracy z aplikacją Silverlight, która łączy się z WCF Services w aplikacji ASP.NET. Wygląda to mniej więcej tak:

Fix for ASP.NET "Could not load file or assembly App_Web..." Error..

Rozwiązanie:

Rozwiązaniem które znam, jest czyszczenie katalogu C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\

Po usunięciu wszystkich plików dotyczących projektu, błąd znika na jakiś czas i aplikacja działa poprawnie. Aby móc wyczyścić katalog, należy zamknąć projekt w Visual Studio.

Nie wiem czy jest to jedyne i poprawne rozwiązanie tego problemu ale na pewno działa :)

Resources

edit:

Znalazłem przyczynę i rozwiązanie powyższego problemu!! (link)


Pozdrawiam,
Jacek Ciereszko



niedziela, 25 maja 2008

Relacja z konkursu Win The Web - 24 hours web development contest

Minął tydzień od zakończenia konkursu, czas na krótkie podsumowanie. Ponieważ wciąż nie dysponuje wszystkim fotkami, zapewne zaktualizuje ten artykuł w ciągu kilku najbliższych dni.



Dla tych, którzy nie słyszeli jeszcze o konkursie "Win The Web", chciałbym polecić stronę konkursową http://mswtw.com/ oraz moje poprzednie artykuły na temat konkursu link1 i link2.

Krótki opis

No, więc konkurs rozpoczął się zgodnie z planem, około godziny 9:30. Odbywał się jednocześnie w 6 krajach Europy Środkowo-Wschodniej i wzięło w nim udział ponad 50 drużyn (zwykle 3 osobowych). Osobom spoza Warszawy został zapewniony nocleg.

Na początku organizatorzy opowiedzieli nam o tym, co nas czeka i jak będzie przebiegał konkurs. Następnie udaliśmy się do wylosowanych pokojów i rozpoczęliśmy przygotowania do konkursu (instalację oprogramowania, itp.). Na przygotowania mieliśmy prawie 2 godziny. O 11:30, zebraliśmy się w sali konferencyjnej, gdzie zostały rozdane zadania. O 12:00 rozpoczął się development, czyli to, na co każdy z nas czekał, od dawna.



Głównym zadaniem było stworzenie systemu do monitoringu samochodów w firmie przewozowej, czyli na starcie otrzymaliśmy bazę danych z odczytami z urządzeń GPS umieszczonych w pojazdach. Dane te należało zaprezentować w przejrzysty sposób, wypełniając przy okazji listę funkcjonalności, które aplikacja musiała spełniać (pełny opis głównego zadania -> link).

O 14:00 w pobliskiej restauracji czekał na nas obiadzik, gdzie najedliśmy się do syta oraz zrobiliśmy krótką przerwę od komputera.



Godzina 18:00 przyniosła pierwszą "wrzutę", czyli Task 1. Było to trzygodzinne zadanie za 10 punktów. Zadanie to polegało na stworzeniu aplikacji do hodowli wirtualnego stworzonka. Stworzenie można było karmić, resetować i takie tam (pełny opis zadania -> link). Część osób odpuściło sobie ten etap, gdyż za główne zadanie można było zdobyć aż 110 punktów i poświęcanie trzech godzin na to jedno, mogło się nie opłacić. W naszym wypadku, zgłosił się Jakub Korczak , który bardzo szybko i sprawnie wykonał zadanie, przynosząc nam o godzinie 21:00, 7 punktów :D



Następnie około godziny 22 (trochę inaczej niż w agendzie), przyjechało jedzonko na kolację. Pizze popite colą z kofeiną zapewniły nam siłę do pracy na resztę nocy. Oczywiście w trakcie całego wydarzenia, mieliśmy do dyspozycji mnóstwo napojów, kanapek, kawę, ciastka itd. Nikt z uczestników głodny lub spragniony nie był.

Punkt 1:00 w nocy otrzymaliśmy Task 2, którego zadaniem było stworzenie "promo site", czyli strony, która będzie opisywać naszą aplikację oraz nas samych (pełny opis zadania -> link ). Należało umieścić swoje zdjęcia, opisy, linki oraz print screeny z tworzonej aplikacji, co było ciężkie w tak wczesnym jej stadium. Task miał planowo skończyć się o 2:00 ale z jakiś nieznanych nam powodów, został przedłużony do końca konkursu i był oceniany razem z główna aplikacją. Chyba najlepszym rozwiązaniem tego zadania, było stworzenie ładnej strony w Silverlight-cie.

Naszą aplikację można obejrzeć w aplikacji konkursowej w dziale "About us" lub poniżej w tym artykule. Zanim jednak tam przejdziecie i powiecie, że to jakiś "badziew", weźcie pod uwagę, że tworzyliśmy ją tylko godzinę i był to środek nocy. :P

No i przyszła pora na punkt kulminacyjny wieczoru, czyli turniej gry w Guitar Hero 3!



Zawody rozpoczęły się o godzinie 2:00. Pomimo tego, że nie wszystkie zespoły pojawiły się w pełnym składzie, uczestników i tak było wielu. Graliśmy po dwóch/dwie osoby (tak tak była 1 dziewczyna – Elena Szapowałowa).



Zawodnik, który uzyskała lepszy wynik, przechodził dalej. W pierwszym etapie graliśmy "Santane", w drugim już nie pamiętam, ale na tym etapie odpadłem ;) Konkurs wygrał Michał Korzunowicz, który lepiej niż sam Santana, grał bezbłędnie na gitarze, pomimo tak później pory (mam nadzieję, że nie pomyliłem imienia i nazwiska, jak by co, to piszcie :P ).



Po konkursie udaliśmy się do swoich pokojów, gdzie pospieszenie, z co raz mniejszą ilością czasu, zabraliśmy się za "ostry development". Właśnie ten czas zadecydował o tym, że nasza aplikacja została ukończona na czas ;).



O godzinie 6:00 rano, powinien być Taks 3, który ze względu na problemy techniczne został odwołany.

Godzina 8:00 przyniosła nam śniadanko i chwilę odpoczynku. Chwila była krótka, ponieważ czas uciekał, a my wciąż nie mieliśmy zaimplementowanych wszystkich wymaganych funkcjonalności.

Właśnie te ostatnie godziny pozwoliły nam na sprawne połączenie wcześniej rozbitych części aplikacji w jedną "kupę". Z jednej strony była mapa Virtual Earth z zaimplementowanymi metodami w javascript-cie, z drugiej baza danych z "LINQ to Database" i WCF Services, a pośrodku, osadzony na mapie Silverlight, który miał wszystko koordynować i ładnie wyświetlać się na ekranie. ;)

Dodatkowo zrealizowaliśmy tachograph i 'menetlevel' w połączeniu z Fushion Charts, które idealnie sprawdziły się w tej roli. Oprócz podstawowych tasków, dodaliśmy także kilka "gadżetów", np. galeria samochodów zrealizowana przy pomoc Deep Zoom Composera, translator jako usługa z live.com, czy ankieta zadowolenia pracownika w Silverlight-cie.

O 11:00 rano w niedzielę zakończyliśmy nasz maraton kodowania i udaliśmy się na przygotowany w sąsiedniej restauracji obiad.



Po powrocie rozpoczął się etap "odpytki", gdzie przed zebranym jury prezentowaliśmy nasze aplikacje. Na szczęście, aplikacje mogły być uruchamiane z Visual Studio, a więc wcześniejsze zapowiedzi o ocenianiu aplikacji tylko po udanym deploy-u na serwer, nie sprawdziły się i mieliśmy więcej czasu na programowanie.

Ocenianie wyglądało na zasadzie pokazania działającej aplikacji i zaprezentowaniu listy funkcjonalności, które aplikacja musiała spełniać. Pod uwagę brany był także wygląd aplikacji, zastosowane technologie oraz extra dodatki.



Około godziny 14:00-14:30 jury zakończyło swoją pracę i podjęto decyzje, kto wygrał konkurs Win The Web w 2008 roku.



Po uroczystym rozdaniu nagród zwycięskim drużynom, uczestnicy otrzymali vouchery na taxi i rozjechali się do domów.

Uczestnicy

Pełna lista uczestników znajduje się na stronie konkursowej link. "Pending" zamiast "Accepted" wcale nie oznaczało, że ktoś nie mógł brać udziału w konkursie, po prostu organizatorzy nie zdążyli wszystkim zaakceptować statusów.

Zwycięzcy

Trzecie miejsce zajęli chłopaki z Warszawy,

czyli team

Devenue


W składzie:

Rafał Monkiewicz, Piotr Penza, Grzegorz Rycaj

A nagrodami były klawiatury i myszki Microsoft.


Drugie miejsce zajęła drużyna z B(rz)ydgoszczy (<- sami tak napisali ;])

Team:

UTP.NET TEAM

W składzie:

Michał Chyrek, Miłosz Oller, Kuba Pilecki

Nagrody za zajęcie 2 miejsca to gry Guitar Hero III (gra + gitara)


No i pierwszą nagrodę zgarnęła drużyna:

HP TEAM


W składzie:

Jacek Ciereszko, Michał Drozdowicz, Jakub Korczak

W nagrodę otrzymaliśmy po konsoli do gier "XBOX 360 Arcade" oraz oklaski. :)




Więcej informacji znajdziecie na oficjalnej stronie konkursu (link) i w newsach (link).

Drużyna HP TEAM

No więc, przyjechaliśmy na konkurs z Warszawy. To, co nas łączy, to wspólne miejsce pracy oraz pasja do programowania. Pracujemy w firmie Hewlett-Packard jako programiści i postanowiliśmy się sprawdzić biorąc udział w konkursie.

Nazwa drużyny HP TEAM wzięła się oczywiście od nazwy firmy. Gdy otrzymaliśmy zgodę na jej użycie, powstała idea żeby bardziej zaprezentować się w barwach HP, co zaowocowało przekazaniem nam gadżetów HP, które widać było między innymi podczas konkursu.



W skład zwycięskiej drużyny wchodzi Michał Drozdowicz, Jakub Korczak oraz ja, Jacek Ciereszko.

Aplikacje konkursowe

Ponieważ wciąż czekamy na umieszczenie naszej aplikacji, na ten moment mogę zamieścić tylko print screen, który mam nadzieje w najbliższych dniach uzupełnię działającą aplikacją.

Główna aplikacja:


Main Application



Task 2 (Promo Site):



Promo Site

Nic oszałamiającego, ale jak na aplikacje napisaną w godzinę to chyba nie tak źle ;)

Aplikacja wstępna (wymagana, aby móc brać udział w konkursie):


Pasjans

Podsumowując

Ze względu na wygraną, moja wizja konkursu na pewno nie jest tak obiektywna jak powinna. Smak zwycięstwa sprawił, że konkurs był jednym z lepszych w moim życiu i jestem bardzo zadowolony, że zdecydowałem się na udział. Cieszę się także, że towarzyszył mi Michał Drozdowicza oraz Jakub Korczaka, bez nich nigdy bym sobie nie poradził. Razem stanowimy zgraną i sprawną drużynę. Dzięki!

Chciałbym polecić tego typu wydarzenia, konkurs był inny niż wszystkie. Można było sprawdzić swoją wytrzymałość, przekonać się czy będziemy w stanie racjonalnie myśleć przy dużym zmęczeniu i pracując w stresie wynikłym z upływającego czasu. Umiejętność podejmowania prawidłowych decyzji w takich sytuacjach okazała się kluczowa, a nie jest łatwo rezygnować np. z wcześniej wymyślonych funkcjonalności, tylko, dlatego że zabraknie nam czasu.

Czas poświęcony na przygotowania do konkursu, kosztem między innymi prowadzenia blog-a, opłacił się. Konkurs dał mi możliwość sprawdzenia się w nowych warunkach i z przyjemnością wezmę udział w Win The Web w 2009!

Pozdrawiam,
Jacek Ciereszko