Bartek Szafko

all of the bits and pieces

Listonic.pl

with 4 comments

Raczej nie piszę o startupach, ale tym razem zrobię wyjątek, bo warto. Listonic.pl to serwis pozwalający na zbudowanie listy zakupów dzielenie jej np. z żoną i umożliwiający dostęp do listy poprzez mobilną przeglądarkę. Autorzy także udostępnili aplikację java na telefony komórkowe, która umożliwia pracę offline.

image

Co ciekawe serwis jest napisany w asp.net – można to wywnioskować oglądając kod źródłowy strony, jest tam wiele kawałków charakterystycznych dla .neta. Myślę, że może to być ciekawy głos w dyskusji, którą toczyłem jakiś czas temu z Michałem Grzegorzewskim o tym, że startupy raczej trzymają się z daleka od techonologii .net. Oczywiście sama technologia, w której wykonano serwis nie ma większego znaczenia z punktu widzenia użytkowników i biznesu liczy się tylko użyteczność i czy realizuje założone cele.

Autorzy zpewniają, że pracują nad wieloma dodatkami, w tym wersję na Windows Mobile. Postanowiłem ich trochę ubiec i poeksperymentować w .net compact framework stworzyć prototyp możliwej aplikacji,  oto moja propozycja:

image image image

Interfejs trochę ala iphone, ale myślę, że może zdać egzamin. Projekt bazowałem na Fluid – Windows Mobile .NET Touch Controls Thomasa Gerbera.

Written by Bartłomiej Szafko

Maj 19th, 2009 at 9:51 pm

Posted in General

Tagged with ,

Wix – wyświetlanie kopiowanych plików

without comments

imageNie wiem czy zauważyliście, ale przy domyślnie stworzony instalatorach w WiX okno postępu instalacji nigdy nie wyświetla dokładnie jakie pliki, klucze rejestru są zakładane i kopiowane, wyświetla się tylko dosyć ogólna informacja “Kopiowanie nowych plików”:

image

Na przykład instalator od resharpera wyświetla bardzo sczegółowe info o tym co się dzieje:

image

Żeby dodać podobny efekt, musimy zmodyfikować interfejs użytkownika dodać nową kontrolkę i zasubskrybować jej zawartość do zdarzenia ActionData:

<Control Id="ActionData" Type="Text" X="59" Y="165" Width="273" Height="41" Transparent="yes" TabSkip="no">
  <Subscribe Event="ActionData" Attribute="Text" />
</Control>

Niby prosta modyfikacja, ale wymaga albo zbudowania WiXa od nowa(chociaż UIExtension) albo dodania całego UI do swojego projektu instalatora – co ma niewątpliwe zalety na przyszłość, będzie można trochę poszaleć i np stworzyć coś podobnego do resharpera. BTW instalator resharpera jest dobrym miejscem do podejrzenia jak zrobić parę ciekawych rzeczy w wix – więc orca w dłoń i do roboty.

Written by Bartłomiej Szafko

Maj 18th, 2009 at 10:45 pm

Posted in WiX

Tagged with , ,

Mój ulubiony polski nietechnologiczny podcast

without comments

image

To tchnienie grozy Jacka Brzezowskiego. Jacek czyta kryminały i horrory, a wychodzi mu to naprawdę świetnie.

Na razie mój ulubiony odcinek to “Darłowskie śledztwo Eberhardta Mocka” autorstwa Marka Krajewskiego.

Written by Bartłomiej Szafko

Maj 12th, 2009 at 10:00 pm

Posted in Links

Tagged with

19. spotkanie poznańskiej grupy .NET

without comments

image Już 14 maja ( jak zwykle w czwartek) o godzinie 18:00 19. spotkanie poznańskiej grupy .NET. Lokalizacja to siedziba firmy Cognifide przy Al.Wielkopolskich 4.

 

Tematy

NHibernate będzie  pierwszym tematem – prelekcje o tym popularnym ORM wygłosi Darek Tarczyński.

Drugim tematem będzie Fluent NHibernate, prelekcje wygłosi Marek Błotny, który jest autorem serii wpisów o tym rozszerzeniu do NHibernate.

Ostatnia prezentacja Andrzeja Piotrowskiego, który wygrał konkurs speaker idol i będzie prelegentem na codecamp Warszawa.  Andrzej prosi o feedback po swojej prezentacji – tak żeby mógł się lepiej przygotować do codecampu.

Gadżety

W ramach sprzątania magazynu przed wakacjami mam do rozdania trochę gadżetów i mam nadzieję, że pozbędę się ich wszystkich.

ZAPRASZAM DO REJESTRACJI

Written by Bartłomiej Szafko

Maj 12th, 2009 at 9:33 pm

Wix w Visual Studio Express

without comments

image

Bartek zadał pytanie:

Od pewnego czasu szukam narzędzia do robienia instalek (lepszego niż z VS) testowałem już advanced installer i instalshield teraz znalazlem twoj opis WIX ale żedne z tych narzędzi nie integruje się z VS2008 express. Moje pytanie "Czy jest na to jakiś sposób" czy też muszę przejść na wyższą pułkę?

Wtyczka Votive, która dodaje nowy typ projektu – WixProj i pozwala na uruchomienie Candle i Light z poziomu Visual Studio niestety nie działa w wersji Express. Wersja ta ma wogóle wyłączoną możliwość instalacji dodatków( poza chlubnym wyjątkiem jakim jest TestDriven.net). Brak Votive jednak nie uniemożliwia użycia Wixa.

Wtyczka votive uruchamia aplikacje Candle i Light. Możemy zrobić to samo posługując się “Post build event” we właściwościach projektu:

image

A plik buildmsi.bat może mieć postać zbliżoną do:

"%wix%bin\candle.exe" -out obj\Debug\Product.wixobj -arch x86 -ext "%wix%bin\WixUIExtension.dll" Product.wxs
"%wix%bin\Light.exe" -cultures:pl-PL -ext "%wix%WixUIExtension.dll" -out bin\Debug\WixProject2.msi -pdbout bin\Debug\WixProject2.wixpdb obj\Debug\Product.wixobj

W zależności od tego w jaki sposób zbudowaliśmy Product.wxs do candle może trzeba będzie podać dodakowe komendy -Dnazwaparametru=wartosc. Zmienna %Wix% jest ustawiana przez instalator podczas konfigurowania Wixa.

Written by Bartłomiej Szafko

Maj 10th, 2009 at 2:10 pm

Posted in WiX

Tagged with ,

Kindle i inne readery

with 6 comments

O nowym kindle od amazona jest ostatnio dosyć głośno. Ciekaw jestem kiedy będziemy używać tylko padów i e-ink jak w star treku( który nawiasem mówiąc nie podobał mi się). Interesujące jest to, że jeszcze nikt nie pokusił się o zrobienie rachunku tzw.: obciążenia środowiska naturalnego. Tzn ile kosztuje wyprodukowanie kindla(w kategoriach odpadów, CO2 itp) w opozycji do 3500 książek papierowych – to  może być bardzo ciekawe zestawienie.

Swoją drogą chyba zbliża się upadek następnego przemysłu – drukarnie, księgarnie i cała logistyka książkowa. Za parę lat ksiązki papierowe pewnie będą towarem luksusowym, tak jak teraz winyle.

Niestety pewnie minie dekada zanim w Polsce przestawimy się na e-booki, potrzeba zrozumienia idei przez ogół i dużo edukacji.  Moim zdaniem byłoby warto z punktu widzenia wygody, ale i tak nic nie zastąpi widoku ładnej biblioteczki i zapachu książki prosto z drukarni.

Written by Bartłomiej Szafko

Maj 10th, 2009 at 1:37 pm

Posted in Books,General

Robert D. Putnam “Samotna gra w kręgle”

with 2 comments

imageZachęcony rozmową Jacka Żakowskiego z Januszem CzapskimCzapińskim pt. “Polska smuta”, które zostało opublikowane w jednym z ostatnich wydań polityki (dostępne także w sieci) siegnąłem po zbiór wykładów Putnama. Myszę przyznać, że jest to naprawdę ciekawa lektura.

Zarówno artykuł jak i niektóre wykłady Putnama poruszają bardzo ciekawy temat kapitału społecznego. Muszę przyznać, że nawet w życiu zawodowym tłumaczy spojrzenie na zachowania ludzi poprzez pryzmat tego kapitału wiele tłumaczy. Czapski przywołuje też tzw.: “chory indywidualizm” – mógłbym dużo na ten temat powiedzieć ;)

W wykładach też można znaleźć wiele ciekawych wątków na temat stowarzyszeń i państwa obywatelskiego. Dla mnie szczególnie interesujące były rozdziały dotyczące stowarzyszeń, badania na temat wieku uczestników sposobów i rodzajów zaangażowania.

Zdecydowanie polecam, co prawda nie da się przeczytać odrazu od deski do deski, trzeba sobie umiejętnie dozować i dawać czas na przemyślenie.

Written by Bartłomiej Szafko

Maj 10th, 2009 at 1:28 pm

Posted in Books

Tagged with

Instalator w pliku msi część 7 – generowanie listy plików do instalacji

with one comment

W poprzednich częściach o WiX:

Jakiś czas temu Szymon Kobalczyk i Marcin Książek pytali o możliwość automatycznego tworzenia skryptów WxS w oparciu o stworzone przez projekt. Taki mechanizm byłby szczególnie przydatny dla projektów, w których często zmieniają się pliki, które muszą być zainstalowane np: dla aplikacji webowych. Gdy zajrzałem do jednego ze starych projektów stwierdziłem, że używałem do tego dosyć rozbudowanego skryptu Wsh.

W wix3 istnieje całkiem przydatny program narzędziowy, który pozwala właśnie na stworzenie pliku wxs. Aplikacja nazwya się heat. Przy wywoływaniu heat-a ważny jest tzw. harvester, czy zbieracz plików. Przykładowymi harvesterami jest directory, który zbiera wszystkie pliki z folderu oraz project, który tworzy wxs na podstawie wyniku projektu z VS.

Przykładowe wywołanie może wyglądać tak:

heat.exe project myproj.csproj -sfrag -srd -gg -suid -pog:Binaries -pog:Content -out Files.wxs

Omówie po kolei wszystkie parametry:

  • project – określa typ harvestera, następna jest nazwa pliku projektu
  • sfrag – powoduje, że nie są generowane osobne fragmenty dla każdego pliku
  • gg – generuje odrazu guidy dla componentów
  • suid – powoduje, że pola Id dla komponentów i plików nie są unikalnymi guidami, co jest całkiem przydatne w sytuacji gdy chcielibyśmy w innym miejscu odwołać się do plików
  • pog:Binaries – określa, które grupy wyjścia mają być uwzględnione w pliku, w przykładzie wybrałem Binaria, parametr pog można powtarzać
  • out Files.wxs – plik, do którego będzie generowanie wyjście

Plik Files.wxs będzie miał taką postać:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="c2csi.Binaries">
            <Component Id="c2csi.Binaries.c2csi.exe" Guid="{0CCD4E1F-0AD8-40F3-B741-7A11E3E70D99}">
                <File Id="c2csi.Binaries.c2csi.exe" Source="$(var.c2csi.TargetDir)\c2csi.exe" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="c2csi.Binaries">
            <ComponentRef Id="c2csi.Binaries.c2csi.exe" />
        </ComponentGroup>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="c2csi.Content">
            <Component Id="c2csi.Content.XMLFile1.xml" Guid="{41E641F5-C0CA-470B-A7F2-73EF37B49A5F}">
                <File Id="c2csi.Content.XMLFile1.xml" Source="$(var.c2csi.ProjectDir)\XMLFile1.xml" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="c2csi.Content">
            <ComponentRef Id="c2csi.Content.XMLFile1.xml" />
        </ComponentGroup>
    </Fragment>
</Wix>

Dodatkowo do tego główny skrypt:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="00225fb3-42b1-4404-a595-f9a1c9ad5d16" Name="WixProject2" Language="1045" Version="1.0.0.0" Manufacturer="WixProject2" UpgradeCode="4dd7c3bd-1d88-4d2b-8da9-fd39b11b2653" Codepage="1250">
        <Package InstallerVersion="200" Compressed="yes" />

        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />

        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="c2csi.Binaries" Name="WixProject2">
                </Directory>
            </Directory>
        </Directory>

        <Feature Id="ProductFeature" Title="WixProject2" Level="1">
      <ComponentGroupRef Id="c2csi.Binaries"/>
        </Feature>
    </Product>
</Wix>

Trzymanie plików w osobnym skrypcie WxS jest dobrą praktyką, natomiast z automatycznym generowaniem należy być ostrożnym może to spowodować nieprzewidziane problemy.

Uruchamianie heat warto wrzucić do before build action do projektu wix.

Written by Bartłomiej Szafko

Kwiecień 30th, 2009 at 8:26 pm

Posted in WiX

Tagged with ,

[EN] Windows Installer XML – Heat bug?

with 2 comments

I was trying to write a post on generating wxs scripts with heat. But i think I found a bug. Below more info – maybe someone can verify.

I’ve got a following directory contents:

image

And I run heat with following parameters:

heat dir . -dr D_INSTALLLOCATION -sfrag -srd -gg -suid -cg test -out test.wxs

I get following wxs:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <ComponentGroup Id="test">
            <ComponentRef Id="" />
            <ComponentRef Id="" />
            <ComponentRef Id="" />
            <ComponentRef Id="" />
        </ComponentGroup>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="D_INSTALLLOCATION">
            <Component Id="c2csi.exe" Guid="{43B03251-B0EE-4273-8E3C-DE54EAD0A263}">
                <File Id="c2csi.exe" KeyPath="yes" Source="SourceDir\c2csi.exe" />
            </Component>
            <Component Id="c2csi.pdb" Guid="{5B925509-EB62-461F-BEB8-FC4C8C99C290}">
                <File Id="c2csi.pdb" KeyPath="yes" Source="SourceDir\c2csi.pdb" />
            </Component>
            <Component Id="c2csi.vshost.exe" Guid="{048CE65A-FCD9-4A05-B482-45F326F40199}">
                <File Id="c2csi.vshost.exe" KeyPath="yes" Source="SourceDir\c2csi.vshost.exe" />
            </Component>
            <Component Id="test.wxs" Guid="{90927E13-B1AD-48D2-AADA-0C227CD2DC36}">
                <File Id="test.wxs" KeyPath="yes" Source="SourceDir\test.wxs" />
            </Component>
        </DirectoryRef>
    </Fragment>
</Wix>

Notice the ComponentGroup – it has empty Ids in ComponentRef.

Why would I want to generate non unique File Ids and put them in ComponentGroup?

The answer is: I would put ComponentGroupRef in Feature and use references to File element to create for example a shortcut in start menu.

Now when I removed –suid when calling heat it generated wxs with unique component and file ids which are impossible to reference in the main script.

Is it a bug or should I take a completly different approach?

UPDATE: when used project harvester with the same paramaters .wxs was ok:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="c2csi.Binaries">
            <Component Id="c2csi.Binaries.c2csi.exe" Guid="{22D0EAD2-B33C-4D1D-B5F2-FA046CF79649}">
                <File Id="c2csi.Binaries.c2csi.exe" Source="$(var.c2csi.TargetDir)\c2csi.exe" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="c2csi.Binaries">
            <ComponentRef Id="c2csi.Binaries.c2csi.exe" />
        </ComponentGroup>
    </Fragment>
</Wix>

Written by Bartłomiej Szafko

Kwiecień 24th, 2009 at 7:46 pm

Posted in WiX

Tagged with , , ,

Kolejna afera z ASP .NET MVC

with 3 comments

O aferze z Oxite było głośno jakiś czas temu. Microsoft wypuścił Oxite jako implementację przykładową przy użyciu asp .net mvc. Niestety aplikacja została bardzo ostro skrytykowana przez środowisko.

Teraz tym razem zdecydowano się wypuścić aplikację pokazującą jak budować serwisy typu web 2.0 przy pomocy ASP .NET MVC. Projekt nazwano KOBE. Tym razem znowu projekt spotkał się z miażdzącą krytyką środowiska, czego najbardziej dobitnym przykładem jest seria postów Orena:

Po takiej fali krytyki Phil Haack ( jeden z PMów asp .net) próbował tłumaczyć jaką stosują taxonomie nazewnictwa. Ciekawe rzeczy działy się także na tweeterze:

image

Po tym całym szumie, nie można już niestety pobrać Kobe – taki tekst jest widoczny na stronie:

This sample application is being updated to incorporate community feedback. An updated version will be released shortly.

Szkoda, że nie ma żadnego sensownego przykładu do pobrania ze strony Microsoftu. Moim zdaniem najlepszy jest przykład Roba Connery MVC StoreFront vel Kona.

W tym kontekście całkiem sensowne jest pytanie Jarka :

Pojawił się ASP.NET MVC 1.0 – interesuje mnie jak sprawa wygląda z komercyjnym zastosowaniem. Czy można już ASP.NET MVC wykorzystywać komercyjnie?

Oczywiście ASP .NET MVC można stosować komercyjnie, nic nie stoi na przeszkodzie. Dostępna jest oficjalnie wspierana wersja 1.0. Licencjonowanie zezwala na komercyjne użycie już od Preview( zdaje się 3), z tym że pomiędzy poszczególnymi wersjami preview nie była zachowywana zgodność. Teraz gdy jest 1.0 już nie ma takiego ryzyka.

Powstało już wiele fajnych aplikacji webowych, które wykorzystują MVC np stackoverflow, więc gra chyba jest warta świeczki. Tylko przykłady i implementacje referencyjne coś się nie udają :P

Written by Bartłomiej Szafko

Kwiecień 20th, 2009 at 7:01 pm

Posted in ASP .NET MVC

Tagged with , ,