<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7260523444214626147</id><updated>2011-12-21T14:04:58.848+01:00</updated><category term='facebook'/><category term='bpel'/><category term='OSGi'/><category term='java'/><category term='swordfish'/><category term='apple'/><category term='soa'/><category term='gwt'/><category term='PDE'/><category term='expression'/><category term='testy'/><category term='google chrome'/><category term='wrocław'/><category term='equinox'/><category term='praca'/><category term='stp'/><category term='wp7'/><category term='opengl'/><category term='tuscany'/><category term='eclipse modeling'/><category term='antlr'/><category term='xpath'/><category term='dsl'/><category term='sca'/><category term='uml'/><category term='ast'/><category term='tdd'/><category term='open graph'/><category term='sopera'/><category term='eclipse'/><category term='nurkowanie'/><category term='eclipse summit 2007'/><category term='mdd'/><category term='c++'/><category term='konferencja'/><title type='text'>Deep dive into...</title><subtitle type='html'>Kolejny BLOG o javie, architekturze, tworzeniu narzędzi i nurkowaniu...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2749306672200255745</id><published>2011-09-21T17:13:00.000+02:00</published><updated>2011-09-21T17:23:50.922+02:00</updated><title type='text'>Programowanie asynchroniczne - zupełnie nowa era</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a href="http://2.bp.blogspot.com/-Unz2PQgI5mA/Tnn-JfBpomI/AAAAAAAABRg/iSERS2RmO1A/s1600/Async.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://2.bp.blogspot.com/-Unz2PQgI5mA/Tnn-JfBpomI/AAAAAAAABRg/iSERS2RmO1A/s320/Async.jpg" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="shortpost"&gt;&lt;a href="http://2.bp.blogspot.com/-Unz2PQgI5mA/Tnn-JfBpomI/AAAAAAAABRg/iSERS2RmO1A/s1600/Async.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Unz2PQgI5mA/Tnn-JfBpomI/AAAAAAAABRg/iSERS2RmO1A/s320/Async.jpg" width="120" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;Programowanie asynchroniczne nie jest przyjemne. Każdy to wie. Nie dlatego że jest trudne bo można się wszystkiego nauczyć ale dlatego że kod jest nieczytelny jeżeli scenariusz wykracza poza 'Hello world'. Sam spędziłem lata pisząc rozwiązania bazowane na platformie Eclipse i moim najlepszym przyjacielem było 'asyncExec'. Jednak nawet pomimo tak przydatnych funkcji całość jest zwyczajnie nieczytelna. Pojawiło się jednak światło w tunelu - automatyczne przekształcanie kodu synchronicznego w asynchroniczny poprzez adnotacje dla kompilatora. Niestety nie jest to mechanizm dostępny w Javie ale i tak warto prezentację zobaczyć. To przyszłość każdego języka :)&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Klasyczny program pisany jest imperatywnie. Komenda za komendą. Całość wywołuje się synchronicznie za pomocą jednego wątku. Jeżeli chcemy część pracy przekazać do innego wątku to musimy to jawnie napisać (stworzyć klasę anonimową np. Runnable, wywołać 'asyncExec' itp). Taki kod jednak szybko przestaje być czytelny. Trudno sobie wyobrazić czytelny kod z kilkoma zagnieżdżeniami. Nie wspominając już o obsłudze wyjątków czy wywołań zwrotnych itp. Szybko robi się z tego spagetti. Logika biznesowa w takim kodzie schodzi na plan dalszy a główne skrzypce gra tutaj aspekt techniczny kodu.&lt;br /&gt;&lt;br /&gt;Czy to jedyna metoda? Wygląda na to że nie. Półtorej roku temu oglądałem materiały z PDC 2010 podczas których zapowiedziano iż MS pracuje nad wprowadzeniem obsługi asynchroniczności do jęzka C#. Temat wydał mi się diabelnie ciekawy ale zapomniałem o nim napisać. Wczoraj oglądając materiały z konferencji BUILD trafiłem na prezentację wersji finalnej która stała się podstawą nowego API Windows 8 (RuntimeRT). &lt;br /&gt;&lt;br /&gt;O co chodzi? O to by &lt;b&gt;programista mógł pisać zwyczajny kod wyglądający na synchroniczny ale kompilator potrafił przekształcić go w kod asynchroniczny bazowany na wywołaniach callback&lt;/b&gt;. Wygląda to niewiarygodnie. Można napisać metodę mającą 100 linii z czego np. 10 wywołań będzie wywołaniami asynchronicznymi. Kompilator rozbije taką metodą na serię metod zwrotnych. Nawet więcej można oznaczyć jakąś iterację że ma się wywołać równolegle a kolejna linijka kodu wykona się dopiero gdy przetworzone zostaną wszystkie elementy kolekcji. Całość sterowana dwoma prostymi słowami kluczowymi 'async' oraz 'await' umieszczanymi przy wywołaniu. To jest przyszłość jaką chciałbym kiedyś zobaczyć także w Javie.&lt;br /&gt;&lt;br /&gt;Prezentację można zobaczyć na poniższym wideo. Poza wywołaniami asynchronicznymi architekt prezentuje jeszcze kilka innych ciekawych rozwiązań (np. pisanie programów które wywołują kompilator dodając nowe metody "w locie" które następnie ten kod wywołuje itp.). Całość jest imponująca&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" scrolling="no" src="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-816T/player?w=800&amp;amp;h=450" style="height: 450px; width: 800px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Mam nadzieję że Oracle znajdzie szybko porozumienie z Google i OpenJDK stanie się wspólną maszyną Javy wspieraną przez wszystkich producentów. Tak by język po kilku latach stagnacji znów rozwijał się tak szybko jak jeszcze 5 lat temu. Współpraca nad jedną wspólną maszyną wirtualną to konieczność by składnia języka dogoniła najnowsze trendy. Transformacja asynchroniczna w C# pokazuje że jeszcze sporo można zrobić na poziomie języka.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2749306672200255745?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2749306672200255745/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2749306672200255745' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2749306672200255745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2749306672200255745'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2011/09/programowanie-asynchroniczne-zupenie.html' title='Programowanie asynchroniczne - zupełnie nowa era'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Unz2PQgI5mA/Tnn-JfBpomI/AAAAAAAABRg/iSERS2RmO1A/s72-c/Async.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8984648379464740434</id><published>2011-04-13T22:23:00.020+02:00</published><updated>2011-04-14T23:32:13.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><title type='text'>MIX 11: Polska wersja Windows Phone 7 jesienią [mango]</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://deepdiveinto.blogspot.com/2011/04/mix-11-polska-wersja-windows-phone-7.html"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/-NxLLjlN18bI/TaYISPKzibI/AAAAAAAABJo/0bjK4nHgG2o/s320/polska_wp7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5595168696456939954" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://deepdiveinto.blogspot.com/2011/04/mix-11-polska-wersja-windows-phone-7.html"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/-NxLLjlN18bI/TaYISPKzibI/AAAAAAAABJo/0bjK4nHgG2o/s320/polska_wp7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5595168696456939954" /&gt;&lt;/a&gt;&lt;/span&gt;Podczas konferencji MIX 2011 Microsoft zapowiedział oficjalną premierę telefonów z WP7 w Polsce. Do tej pory system dostępny był tylko w 5 wersjach językowych na terenie 16 państw. Po wakacjach się to zmieni. Wraz z uaktualnieniem Mango dodane zostaje 16 nowych języków a liczba państw zostaje rozszerzona do 35. Co najważniejsze jest Polska. &lt;span style="font-weight:bold;"&gt;Polska premiera oznacza oficjalny dostęp do sklepu z aplikacjami oraz pełne spolszczenie telefonu&lt;/span&gt;.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-YNUFu2xZaEw/TaaD6hdi8GI/AAAAAAAABJ4/JsFyH1HiDt8/s1600/polska.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 640px;" src="http://1.bp.blogspot.com/-YNUFu2xZaEw/TaaD6hdi8GI/AAAAAAAABJ4/JsFyH1HiDt8/s1600/polska.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5595304628492365922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Poza polską wersją w Mango pojawi się sporo nowych funkcji:&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;wielozadaniowość&lt;/span&gt;. Pojawi się możliwość szybkiego przełączania aplikacji. Dodatkowo aplikacje będą mogły swoje fragmenty uruchamiać w tle. Odpowiedzialne będą za to usługi agentów. Niektóre uruchamiać się będą cyklicznie inne tak jak player mediów może działać całkowicie w tle (agent playera mediów dostępny jest nawet dla stron internetowych typu Spotify)&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;przeglądarka internetowa IE9&lt;/span&gt;. Kod identyczny jest z wersją dla Windows (w co łatwo uwierzyć po wczorajszej prezentacji  IE10 działającej na procesorze ARM 1Ghz)&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/Or3wvF9ts0I" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;pełna integracja ze SkyDrive&lt;/span&gt;. Czyli wirtualnym dyskiem 25GB (dokumenty i inne pliki). &lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;zintegrowana z systemem baza danych SQL Server&lt;/span&gt; (!). System będzie miał zintegrowaną bazę danych i udostępniał każdej aplikacji dostęp do niej łącznie z mapowaniem ORM, zapytaniami LINQ itp. To z pewnością ukłon dla użytkowników biznesowych choć pewnie i bardziej złożone gry mogą z niej skorzystać.&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;sockety&lt;/span&gt; dzięki którym możliwe będzie stworzenie aplikacji typu Skype (pełna aplikacja dostępna będzie łącznie ze startem Mango)&lt;br /&gt;&lt;br /&gt;Tym samym system staje się pełnoprawnym systemem operacyjnym w stylu Symbiana. Brakuje jedynie zapowiedzi udostępnienia darmowej nawigacji offline (Nokia OVI Maps). Oraz samych telefonów Nokii. Najlepiej czegoś w stylu Nokii N8 :)&lt;br /&gt;&lt;br /&gt;Więcej informacji można znaleźć na stronie &lt;a href="http://live.visitmix.com/"&gt;konferencji MIX 11&lt;/a&gt;. Co ciekawe wszystkie materiały są dostępne online. Szkoda że nie jest to standardem w przypadku innych konferencji (EclipseCon/OSGICon)&lt;br /&gt;&lt;br /&gt;&lt;object type="application/x-silverlight-2" data="data:application/x-silverlight-2," width="512" height="288"&gt;&lt;param name="minRuntimeVersion" value="4.0.50401.0"/&gt;&lt;param name="source" value="http://channel9.msdn.com/scripts/Channel9.xap?v=1.5"/&gt;&lt;param name="initParams" value="mediaurl=http://smooth.ch9.ms/ch9/ef12/5121143b-effa-490b-83f7-9ec400b1ef12/MIX11KEY02.ism/manifest,thumbnail=http://files.channel9.msdn.com/thumbnail/99ad95dd-6910-4d5e-a956-6b9cf3c6d7cd.jpg,deliverymethod=adaptivestreaming,autoplay=false,entryid=5121143beffa490b83f79ec400b1ef12"/&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://live.visitmix.com/"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 277px; height: 147px;" src="http://4.bp.blogspot.com/-NuCAVWS_bRk/TaYPGZ_aSRI/AAAAAAAABJw/eePPcTKqDg0/s320/mix11.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5595176189784901906" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8984648379464740434?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8984648379464740434/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8984648379464740434' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8984648379464740434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8984648379464740434'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2011/04/mix-11-polska-wersja-windows-phone-7.html' title='MIX 11: Polska wersja Windows Phone 7 jesienią [mango]'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-NxLLjlN18bI/TaYISPKzibI/AAAAAAAABJo/0bjK4nHgG2o/s72-c/polska_wp7.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7034747627827825725</id><published>2011-03-23T06:49:00.007+01:00</published><updated>2011-03-23T07:48:21.236+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><title type='text'>EclipseCon / OSGi DevCon 2011 - ponownie brak wersji online</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-JrVD36-AHBI/TYmPP_h6yVI/AAAAAAAABIw/F5dB6IaNQy8/s1600/eclipsecon.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 232px; height: 97px;" src="http://1.bp.blogspot.com/-JrVD36-AHBI/TYmPP_h6yVI/AAAAAAAABIw/F5dB6IaNQy8/s320/eclipsecon.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5587154317644319058" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://deepdiveinto.blogspot.com/2011/03/eclipsecon-osgi-devcon-2011-ponownie.html"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://1.bp.blogspot.com/-JrVD36-AHBI/TYmPP_h6yVI/AAAAAAAABIw/F5dB6IaNQy8/s320/eclipsecon.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5587154317644319058" /&gt;&lt;/a&gt;&lt;/span&gt;Od dwóch dni trwa najważniejsza konferencja poświęcona rozwojowi technologii Eclipse oraz OSGi czyli &lt;a href="http://www.eclipsecon.org/2011/"&gt;EclipseCon/OSGI DevCon&lt;/a&gt;. Podczas konferencji prezentowane są najnowsze techniki, dema itp. Udział w tego typu wydarzeniu to szansa na spory skok do przodu w prowadzonych projektach. Po wizycie na Eclipse Summit Europe praktycznie przeorałem architekturę systemu projektowaną dla BZWBK. Od paru lat męczy mnie jednak pytanie: dlaczego EclipseCon nie ma wersji online?&lt;span class="fullpost"&gt;&lt;br /&gt; &lt;br /&gt;Nigdy nie miałem okazji być na EclipseCon ponieważ koszt przelotu do Stanów zwyczajnie był zbyt wysoki dla moich pracodawców. Myślę że w podobnej sytuacji są tysiące programistów zainteresowanych tymi technologiami. Nawet jeżeli ktoś ma okazję polecieć na EclipseCon to raczej nie poleci cały zespół deweloperski. Koszty zawsze będą zbyt wysokie. Dodatkowo problemem są sprawy organizacyjne. Załatwiając swoje wyjazdy na Eclipse Summit Europe lub Eclipse Banking Day zobaczyłem na własne oczy ile kosztowało mnie to czasu. Przekonanie pracodawcy, znalezienie taniego hotelu, taniego przelotu tak by nie przekroczyć przydzielonej kwoty. Sprawy organizacyjne zabierały mi kilka dni i nie zawsze były proste (np. gdy w hostelu rezerwacja musiała być przeprowadzona po niemiecku). &lt;br /&gt;&lt;br /&gt;Czy tak być powinno? Dlaczego nie można zobaczyć sobie wszystkich prezentacji poprzez internet? Większość dużych konferencji technicznych nadawana jest jednocześnie w internecie. Microsoft transmituje wszystkie wykłady z konferencji w ramach &lt;a href="http://channel9.msdn.com/"&gt;Channel9&lt;/a&gt;, &lt;a href="http://www.google.com/events/io/2010/"&gt;Google IO&lt;/a&gt; trafia w całości na YouTube. Kilka lat temu pojawiła się też &lt;a href="http://www.parleys.com/"&gt;platforma Parleys&lt;/a&gt; na której można zobaczyć ciekawe prezentacje ze świata Javy np. &lt;a href="http://www.parleys.com/#st=3&amp;id=189"&gt;Devoxx, SpringOne itd&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Eclipse ma swoją platformę &lt;a href="http://live.eclipse.org/"&gt;EclipseLive&lt;/a&gt;. Gdy platforma się pojawiła miałem nadzieję że będzie odpowiednikiem Channel 9. Że pojawią się w niej prezentacje z konferencji EclipseCon, EclipseSummitEurope. Tak się jednak nie stało. Nigdy nie pojawiają się tam materiały z konferencji dłuższe niż 5-10min (najczęściej z korytarza). Chyba dwa lata temu pojawił się pomysł by wszystkie prezentacje były dostępne jako PDF poprzez specjalną stronę. Nie udało się. Dziś mniej więcej 1/10 prezentacji ma dołączone jakiekolwiek materiały. Jednak są to prawie zawsze tylko slajdy które często są niewystarczające.&lt;br /&gt;&lt;br /&gt;Pełną listę prezentacji można znaleźć na tej stronie:&lt;br /&gt;&lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions"&gt;http://www.eclipsecon.org/2011/sessions/?page=sessions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lista prezentacji jest imponująca. Niektóre tematy są naprawdę ciekawe i dużo bym dał za to by móc je zobaczyć. Gdyby pojawiła się tam opcja wykupienia dostępu online z pewnością bym z takiej opcji skorzystał. Myślę że nawet osoby które miały okazje być na miejscu z chęcią zobaczyłyby prezentacje na które nie starczyło im czasu. &lt;span style="font-weight:bold;"&gt;Jednocześnie odbywa się aż 8 różnych wykładów&lt;/span&gt;. Zobaczenie wszystkich materiałów zabrałoby prawdopodobnie miesiąc :)&lt;br /&gt;&lt;br /&gt;Eclipse nie jest łatwą platformą do nauki. Mamy 100x więcej materiałów niż jeszcze 5-6 lat temu. Nie ma już potrzeby by z tłumaczyć translatorem instrukcję do GEF z języka japońskiego :). Na Amazonie jest spora ilość rewelacyjnych książek z logiem Eclipse (które chyba wszystkie kupiłem), są grupy dyskusyjne. Myślę jednak że to cały czas za mało by spopularyzować platformę Eclipse oraz OSGi. &lt;br /&gt;&lt;br /&gt;A jak wyglądały wersje online konferencji deweloperskich innych platform?&lt;br /&gt;&lt;br /&gt;Microsoft PDC 2010:&lt;br /&gt;&lt;a href="http://player.microsoftpdc.com/schedule/sessions"&gt;http://player.microsoftpdc.com/schedule/sessions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google IO 2010:&lt;br /&gt;&lt;a href="http://www.google.com/events/io/2010/"&gt;http://www.google.com/events/io/2010/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Czy kiedyś EclipseCon pojawi się w całości na YouTube?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7034747627827825725?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7034747627827825725/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7034747627827825725' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7034747627827825725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7034747627827825725'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2011/03/eclipsecon-osgi-devcon-2011-ponownie.html' title='EclipseCon / OSGi DevCon 2011 - ponownie brak wersji online'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-JrVD36-AHBI/TYmPP_h6yVI/AAAAAAAABIw/F5dB6IaNQy8/s72-c/eclipsecon.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7905681237301043499</id><published>2011-03-20T11:48:00.014+01:00</published><updated>2011-03-22T19:54:04.534+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testy'/><title type='text'>Akceleracja sprzętowa w przeglądarkach [Firefox4, IE9]</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-xOScSUtp1Mw/TYjD0LWBTMI/AAAAAAAABIg/Pyx5I1uX3qY/s1600/firefox4.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 250px;" src="http://4.bp.blogspot.com/-xOScSUtp1Mw/TYjD0LWBTMI/AAAAAAAABIg/Pyx5I1uX3qY/s320/firefox4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5586930638918864066" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-xOScSUtp1Mw/TYjD0LWBTMI/AAAAAAAABIg/Pyx5I1uX3qY/s1600/firefox4.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/-xOScSUtp1Mw/TYjD0LWBTMI/AAAAAAAABIg/Pyx5I1uX3qY/s320/firefox4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5586930638918864066" /&gt;&lt;/a&gt;&lt;/span&gt;Pod koniec 2009r Microsoft poinformował o planach stworzenia przeglądarki w pełni akcelerowanej sprzętowo za pomocą karty graficznej. Jeszcze tego samego dnia także w bazie Chromium powstało zadanie &lt;a href="http://code.google.com/p/chromium/issues/detail?id=28539"&gt;sprawdzenia możliwości wykorzystania Direct2D&lt;/a&gt;, w podobnym kierunku ruszyła także Mozilla. Po półtorej roku pojawiły się pierwsze dwie aplikacje: IE9 oraz Firefox4. Czas popatrzeć co i jak zostało zaimplementowane&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Zasada akceleracji sprzętowej wygląda różnie w różnych przeglądarkach. Pod Windowsem wykorzystywane są mechanizmy: &lt;a href="http://msdn.microsoft.com/en-us/library/dd368038(v=vs.85).aspx"&gt;DirectWrite&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/dd370990(v=vs.85).aspx"&gt;Direct2D&lt;/a&gt;, Direct3D, OpenGL . Pierwsze dwie biblioteki to nowość w systemie Windows7 (przeniesione także do Visty w ramach ServicePack2). Zastępują one starsze biblioteki GDI/GDI+ które pamiętają czasy pierwszych Windowsów (GDI+ pojawiło się w XP)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DirectWrite&lt;/span&gt; to najważniejsza biblioteka z punktu widzenia przeglądarki. Odpowiedzialna jest ona za renderowanie tekstu. Zaprojektowana została w taki sposób by operacja ta mogła być w pełni akcelerowana przez kartę graficzną dzięki czemu jest zdecydowanie szybsza niż standardowe biblioteki działające na CPU. Biblioteka odpowiada za przyspieszenie „zwykłych stron WWW” (szczególnie tych z różnymi niestandardowymi czcionkami). &lt;br /&gt;&lt;br /&gt;Drugą biblioteką jest &lt;span style="font-weight:bold;"&gt;Direct2D&lt;/span&gt;. Biblioteka ta odpowiada ze operacje na grafice (obrazki etc). Zawiera ona zaawansowane funkcje ujednolicające typowe operacje rysowania. Umożliwia to przyspieszenie operacji na grafice, rysowania obiektów canvas,  renderowanie grafiki wektorowej SVG itp. Podobnie jak DirectWrite biblioteka została zaimplementowana w taki sposób by działać jak najbliżej sprzętu.&lt;br /&gt;&lt;br /&gt;No i finalnie &lt;span style="font-weight:bold;"&gt;Direct3D&lt;/span&gt; oraz &lt;span style="font-weight:bold;"&gt;OpenGL&lt;/span&gt; to biblioteki renderujące grafikę 3D. W przypadku przeglądarki wykorzystywane są one jednak do składania poszczególnych elementów stron w jedną całość. Elementy składowe takie jak powierzchnia z tekstem, grafiki, wideo, elementy canvas itp. Składane są zgodnie z zaplanowanym layoutem. Ponieważ całość jest obsługiwana sprzętowo operacje takie jak rotacje, płynne przejścia w animacjach obsługiwane są praktycznie bez obciążania CPU. &lt;br /&gt;&lt;br /&gt;Różne przeglądarki w różny sposób korzystają z tych mechanizmów. Najprostszy model stosuje IE9. Operacje wykonywane są bezpośrednio, przeglądarka stara się przesunąć maksymalnie dużo operacji na stronę sprzętu. W tym celu wykorzystuje DW, D2D, D3D. Wadą takiego podejścia jest &lt;span style="font-weight:bold;"&gt;konieczność stosowania systemu operacyjnego Vista lub W7&lt;/span&gt; które mają zaimplementowany pełen zestaw bibliotek DX11. Co ciekawe karta graficzna musi być zgodna jedynie z zestawem funkcji DX9. Pozostałe przeglądarki mają trochę bardziej złożoną konstrukcję. Ponieważ działają one na &lt;span style="font-weight:bold;"&gt;wielu systemach operacyjnych&lt;/span&gt; konieczna jest warstwa abstrakcji umożliwiająca podmianę bibliotek graficznych. Niestety problemem jest brak standardowego API operacji na grafice 2D które byłoby niezależne od systemu. Aktualnie twórca każdej przeglądarki musi zaimplementować całość po swojemu lub wspierać kilka niezależnych bibliotek. Jak się można domyślić nie jest to prosta operacja.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Firefox&lt;/span&gt; zaimplementował API które z założenia wykorzystuje natywnie dostępne biblioteki systemowe. Tak więc pod Vistą oraz Windowsem7 wykorzystywany będzie DirectWrite/Direct2D. Pod Linuxem XRender a pod MacOS biblioteka Quartz. Jedynie w WindowsXP akceleracja będzie niedostępna co może skutkować bardzo słabą wydajnością Firefoxa w tym systemie. &lt;span style="font-weight:bold;"&gt;Opera&lt;/span&gt; ma własną bibliotekę Vega która do tej pory była najszybszą biblioteka graficzną pracującą w trybie softwarowym. Implementacja sprzętowa ma pojawić się w wersji 11.50 w oparciu o OpenGL i DirectX. &lt;span style="font-weight:bold;"&gt;Chrome&lt;/span&gt; także posiada własną bibliotekę &lt;a href="https://sites.google.com/a/chromium.org/dev/developers/design-documents/graphics-and-skia"&gt;Skia&lt;/a&gt;. Pojawiła się ona w wersji 2.0 w której Google zrezygnowało z wykorzystania GDI/GDI+. Aktualnie biblioteki pracują w trybie softwarowym jednak od wielu miesięcy trwają prace także nad akceleracją. Co ciekawe Google zrezygnowało z wykorzystania bibliotek D2D oraz DW pomimo iż &lt;a href="http://code.google.com/p/chromium/issues/detail?id=52689"&gt;zrezygnowano z akceleracji w systemie Windows XP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Całość wygląda tak:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-Xg34KpNQyVw/TYXcASHSF0I/AAAAAAAABIA/6X15xxE5vLA/s1600/Przegladarki.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px;" src="http://3.bp.blogspot.com/-Xg34KpNQyVw/TYXcASHSF0I/AAAAAAAABIA/6X15xxE5vLA/s400/Przegladarki.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5586112810243462978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A jak wygląda wydajność? Całość sprawdziłem w wielu benchmarkach różnego autorstwa. Z moich obserwacji wynika że im strona była bardziej złożona i było na niej więcej multimediów tym wyższe wyniki osiągały przeglądarki z akceleracją. IE9 wyniki ma trochę wyższe z uwagi na ścisłe powiązanie z systemem. Firefox za to zapewnia większą możliwość kastomizacji.&lt;br /&gt;&lt;br /&gt;Najładniejszym testem jaki udało mi się znaleźć jest WebVizBench, szczególnie gdy w tle ustawi się pełnoekranowe wideo (aż trudno uwierzyć że to zwykły HTML)&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="640" height="510" src="http://www.youtube.com/embed/QIc-wwcLrD4?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://webvizbench.com/Default.htm?skipdetect&amp;skipintro" target="_blank"&gt;http://webvizbench.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Inne testy można znaleźć:&lt;br /&gt;&lt;a href="http://hacks.mozilla.org/2010/09/hardware-acceleration/" target="_blank"&gt;http://hacks.mozilla.org/2010/09/hardware-acceleration/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ie.microsoft.com/testdrive/Views/SiteMap/Default.html" target="_blank"&gt;http://ie.microsoft.com/testdrive/Views/SiteMap/Default.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jeżeli ktoś posiada system Windows Vista lub Windows 7 myślę że warto wypróbować IE9 oraz Firefox 4. Po dwóch latach technologicznej dominacji Google Chrome &lt;span style="font-weight:bold;"&gt;mamy nowych liderów&lt;/span&gt;. Ciekawe kiedy pojawią się akcelerowane wersję Google Chorome oraz Opera 11.50&lt;br /&gt;&lt;br /&gt;Poniżej linki do finalnych wersji obu przeglądarek:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.beautyoftheweb.com/" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand; height: 90px;" src="http://3.bp.blogspot.com/-0qCgAYp047c/TYi_gsr27vI/AAAAAAAABII/qot0vCPL_-s/s400/ie9.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5586925906224934642" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.mozilla-europe.org/pl/" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand; height: 90px;" src="http://3.bp.blogspot.com/-fgjkvYmgS1g/TYi_5u1ah4I/AAAAAAAABIY/APYpVwLmM6o/s400/firefox4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5586926336298616706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7905681237301043499?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7905681237301043499/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7905681237301043499' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7905681237301043499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7905681237301043499'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2011/03/akceleracja-sprzetowa-w-przegladarkach.html' title='Akceleracja sprzętowa w przeglądarkach [Firefox4, IE9]'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-xOScSUtp1Mw/TYjD0LWBTMI/AAAAAAAABIg/Pyx5I1uX3qY/s72-c/firefox4.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-191329426721650032</id><published>2011-03-16T13:27:00.016+01:00</published><updated>2011-03-16T14:18:20.287+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='wrocław'/><title type='text'>Prezentacja OSGi w JEE we Wrocławiu [Wrocław JUG]</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://groups.google.com/group/wroclaw-jug"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px; height: 150px;" src="http://2.bp.blogspot.com/--f08kNCO8oQ/TYC1ZlcB6vI/AAAAAAAABH4/TZxNhJKmQuQ/s200/wroclaw-jug-frame.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5584662989090450162" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://groups.google.com/group/wroclaw-jug"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px; height: 150px;" src="http://2.bp.blogspot.com/--f08kNCO8oQ/TYC1ZlcB6vI/AAAAAAAABH4/TZxNhJKmQuQ/s200/wroclaw-jug-frame.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5584662989090450162" /&gt;&lt;/a&gt;&lt;/span&gt;Właśnie przeczytałem że jutro na Politechnice Wrocławskiej odbędzie się prezentacja "OSGI + J2EE". Została ona zorganizowana przez zespół R&amp;D Eurobanku. Myślę że warto się na taką prezentację wybrać. W rozwinięciu przekleiłem informację ze strony JUG’a&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;--------------&lt;br /&gt;Program prezentacji: &lt;br /&gt;- Case study: System informatyczny z dużą liczbą rozwijanych jednocześnie obszarów&lt;br /&gt;- Analiza potrzeby modularyzacji systemów informatycznych&lt;br /&gt;- Przegląd i porównanie dostępnych technik modularyzacji w środowisku Java EE&lt;br /&gt;- Wprowadzenie w kluczowe koncepcje OSGi&lt;br /&gt;- Propozycja modelowej architektury łączącej zalety Java EE i OSGi&lt;br /&gt;- Prezentacja praktycznego działania i architektury wielomodułowej platformy webowej&lt;br /&gt;&lt;br /&gt;Politechnika Wrocławska (budynek B4)&lt;br /&gt;Łukasiewicza 5&lt;br /&gt;Sala 448&lt;br /&gt;&lt;br /&gt;Zapisać można się poprzez stronę &lt;a href="http://groups.google.com/group/wroclaw-jug/browse_thread/thread/13064294544d02c8/aae9a05ff9e98f20?show_docid=aae9a05ff9e98f20"&gt;Wrocław JUG&lt;/a&gt;&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Przy okazji jeżeli ktoś interesuje się tematem zachęcam do lektury książki &lt;a href="http://equinoxosgi.org/"&gt;"OSGi and Equinox"&lt;/a&gt;. Czytałem ją rok temu i sporo mi wyjaśniła. Przy okazji jeżeli ktoś ma problemy z widocznoscią pakietów w trakcie integracji modułów to tutaj można znaleźć "niekonwencjonalne rozwiązanie":&lt;br /&gt;&lt;br /&gt;&lt;a href="http://deepdiveinto.blogspot.com/2010/06/jak-wamac-sie-do-obcego-bundla-w-osgi.html"&gt;http://deepdiveinto.blogspot.com/2010/06/jak-wamac-sie-do-obcego-bundla-w-osgi.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-191329426721650032?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/191329426721650032/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=191329426721650032' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/191329426721650032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/191329426721650032'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2011/03/prezentacja-osgi-w-jee-we-wrocawiu.html' title='Prezentacja OSGi w JEE we Wrocławiu [Wrocław JUG]'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/--f08kNCO8oQ/TYC1ZlcB6vI/AAAAAAAABH4/TZxNhJKmQuQ/s72-c/wroclaw-jug-frame.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-1706987880206159433</id><published>2011-02-11T14:53:00.005+01:00</published><updated>2011-02-11T16:01:50.706+01:00</updated><title type='text'>Nokia Windows Phone 7</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-F44SzVQhLws/TVVJG42t2NI/AAAAAAAABHE/zGWqv2WqF5c/s1600/NokiaWP7.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 250px;" src="http://4.bp.blogspot.com/-F44SzVQhLws/TVVJG42t2NI/AAAAAAAABHE/zGWqv2WqF5c/s320/NokiaWP7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5572440496630782162" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-F44SzVQhLws/TVVJG42t2NI/AAAAAAAABHE/zGWqv2WqF5c/s1600/NokiaWP7.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/-F44SzVQhLws/TVVJG42t2NI/AAAAAAAABHE/zGWqv2WqF5c/s320/NokiaWP7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5572440496630782162" /&gt;&lt;/a&gt;&lt;/span&gt;Na to czekałem. W ciągu ostatnich kilku lat miałem kilka telefonów, najczęściej psuły się po roku lub dwóch. Wyjątkiem był telefon Nokia N82. Niestety Symbian (który bardzo mi się podoba) pomimo swoich zalet nie zdawał testu jako system na miarę 2011r. Pojawiła się jednak nadzieja - Nokia Windows Phone 7 :)&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Zgodnie z wcześniejszymi plotkami Nokia ogłosiła dziś partnerstwo z Microsoftem. Dzięki niemu na telefonach Nokii instalowany będzie system Windows Phone 7. To jednak nie wszystko. Całe oprogramowanie Nokii zostanie dostosowane do nowego systemu. Przykładem są mapy. Nadal będziemy mieli możliwość używania map zainstalowanych w telefonie (wyjazdy zagraniczne bez kosztów roamingu). Także pozostałe usługi jak sklep OVI zostaną zintegrowane z ekosystemem WP7. &lt;br /&gt;&lt;br /&gt;Windows Phone 7 ma kilka zalet. Pierwszą jest środowisko programistyczne dla deweloperów. Jako osoba związana z tworzeniem narzędzi Eclipse muszę przyznać że konkurencyjne narzędzia Visual Studio zawsze były o krok do przodu. Momentami Eclipse wyprzedzało Visual Studio szybciej wprowadzając np. refaktoring itp. Jednak VS to kombajn z którym trudno konkurować nawet takim firmom jak IBM.&lt;br /&gt;&lt;br /&gt;Drugą sprawą jest fajny pomysł na integrację całości. Różne usługi, zewnętrzne programy wyglądają podobnie. Mają ten sam interfejs. Tak jakby nie były osobnymi aplikacjami ale pluginami wpinanymi do IDE. Pomysł na ujednolicenie GUI jest po prostu rewelacyjny. &lt;br /&gt;&lt;br /&gt;Są też potencjalne wady. Słynny brak multitaskingu dla zewnętrznych aplikacji instalowanych ze sklepu. Nie wiem czy będzie mi to przeszkadzało. W Symbianie często uruchamiam kilka aplikacji, jednak zawsze są to aplikacje systemowe. Z tego co czytałem takim aplikacjom system pozwala uruchamiać się jednocześnie. Całość nie powinna więc być uciążliwa. Myślę że będę mógł z tym żyć jeżeli tylko mój telefon będzie miał matrycę 1/1.83" :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Swoją drogą ciekawa była reakcja konkurencji. Jeden z wiceprezydentów Google związany z rozwojem Androida (Vic Gundotra) skomentował umowę pisząc:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dwa indyki nie czynią orła&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CEO Nokii jednak bardzo celnie odpowiedział:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dwaj bracia montujący rowery pewnego dnia postanowili latać&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-zC68UmifeGk/TVU_1yy86uI/AAAAAAAABG8/J4UkICWH8Gw/s1600/wright1stflight.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://3.bp.blogspot.com/-zC68UmifeGk/TVU_1yy86uI/AAAAAAAABG8/J4UkICWH8Gw/s400/wright1stflight.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5572430307341953762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Trzymam kciuki by "indyki" wspólnie nauczyły się latać. No i czekam na premierę Nokia N8 z Windows Phone 7. To telefon który kupię pierwszego dnia gdy pojawi się w sklepie :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-1706987880206159433?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/1706987880206159433/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=1706987880206159433' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1706987880206159433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1706987880206159433'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2011/02/nokia-windows-phone-7.html' title='Nokia Windows Phone 7'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-F44SzVQhLws/TVVJG42t2NI/AAAAAAAABHE/zGWqv2WqF5c/s72-c/NokiaWP7.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7834350229777877013</id><published>2010-11-26T17:59:00.015+01:00</published><updated>2010-11-26T23:04:34.641+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><title type='text'>Eclipse Demo Camp 2010 - Poznań</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://deepdiveinto.blogspot.com/2010/11/eclipse-demo-camp-2010-poznan.html"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TPAqllpJACI/AAAAAAAABFo/jA_f9f89BQw/s320/Eclipse_DemoCamp_New.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5543977966541275170" /&gt;&lt;/a&gt;Niestety w tym roku nie udało mi się zorganizować trzeciej wrocławskiej edycji Eclipse Demo Camp. Do tej pory spotkania organizowałem dzięki pomocy firmy Sygnity. Firma jednak jakiś czas temu zakończyła rozwój projektów eclipsowych. Nie udało mi się znaleźć nowego sponsora więc tym razem trzeba było ze spotkania zrezygnować. Każdemu jednak kto czekał na wrocławską edycję polecam &lt;a href="http://www.facebook.com/event.php?eid=155588817818747&amp;ref=mf"&gt;jutrzejsze spotkanie w Poznaniu!&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Poznańska edycja Eclipse Demo Camp jest najstarsza w Polsce. Spotkania odbywają się dwa razy w roku od co najmniej 4 lat. Tym razem spotkanie odbędzie się w pubie &lt;a href="http://www.johnnyrocker.pl/"&gt;Johnny Rocker&lt;/a&gt;. Spotkanie organizują w trójkę Natalia Klimasz i Krzysztof Daniel z IBM Eclipse Support Center oraz Adam Dudczak z Poznańskiej grupy JUG (Java User Group).&lt;br /&gt;&lt;br /&gt;Plan spotkania wygląda następująco:&lt;br /&gt;13.15 - &lt;span style="font-weight:bold;"&gt;Krzysztof Kaźmierczyk&lt;/span&gt;, IBM ESC, How to easy find Java memory problems using Eclipse using Memory Analyzing Tool&lt;br /&gt;13.45 - &lt;span style="font-weight:bold;"&gt;Jacek Pospychala&lt;/span&gt;, Zend, Testowanie GUI w aplikacjach Eclipse RCP&lt;br /&gt;14.15 - &lt;span style="font-weight:bold;"&gt;Krzysztof Daniel&lt;/span&gt;, IBM ESC, Server-Side Eclipse what it can do for you?&lt;br /&gt;15.00 - &lt;span style="font-weight:bold;"&gt;Anna Ferster&lt;/span&gt;, &lt;span style="font-weight:bold;"&gt;Marek Kuzora&lt;/span&gt; &amp; &lt;span style="font-weight:bold;"&gt;Filip Wiśniewski&lt;/span&gt;,Students PUT, Moduł rozszerzonych preferencji do Eclipse RCP&lt;br /&gt;15.30 - &lt;span style="font-weight:bold;"&gt;Małgorzata Janczarska&lt;/span&gt;, IBM, Building web application on top of Eclipse&lt;br /&gt;16.00 - &lt;span style="font-weight:bold;"&gt;Tomasz Zarna&lt;/span&gt;, IBM, Eclipse 3.7 Tips and tricks&lt;br /&gt;&lt;br /&gt;Każdego zainteresowanego rozwojem środowiska Eclipse zapraszam w imieniu organizatorów. To będzie rewelacyjne spotkanie! &lt;br /&gt;&lt;br /&gt;Wszystkie ważne informacje można znaleźć na oficjalnej stronie WIKI: &lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Poznan"&gt;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Poznan&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jeżeli ktoś ma konto w serwisie Facebook można także dodać się do specjalnie utworzonego wydarzenia (dzięki temu wasi znajomi dowiedzą się o spotkaniu EDC Poznań). Nie jest to jednak równoznaczne z rejestracją. To tylko taki opcjonalny dodatek w ramach grupy &lt;a href="http://www.facebook.com/eclipse.polska"&gt;'eclipse.polska'&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/event.php?eid=155588817818747&amp;ref=mf"&gt;http://www.facebook.com/event.php?eid=155588817818747&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Miałem okazję być na kilku wcześniejszych poznańskich spotkaniach i zawsze było rewelacyjnie (raz była nawet mata do Dance Dance Revolution!). Zawsze starałem się tak zaplanować swoje delegacje do poznańskiego oddziału PB Polsoft by po pracy móc być także na EDC (spotkania były wieczorami w ciągu tygodnia więc można było na nie jechać tylko z pracy). Żałuję że niestety nie będę mógł tym razem przyjechać (anulowałem więc prezentację XText). Mam nadzieję że następnym razem uda mi się lepiej zaplanować swój czas tak by nie kolidowały mi dwie ważne sprawy.&lt;br /&gt;&lt;br /&gt;Mam także nadzieję że uda mi się zorganizować trzecie wrocławskie EDC w czerwcu. Wszystko jednak zależy od tego czy znajdzie się jakaś firma rozwijająca projekty w technologiach eclipsowych która chciałaby całość sponsorować. Biorąc pod uwagę że coraz więcej firm stara się wejść w technologię EclipseEquinox/OSGI to mam nadzieję że uda się coś znaleźć. W końcu takie spotkania to idealny sposób by znaleźć pracowników znających od lat OSGI w praktyce - to możliwe tylko w EclipseRCP :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7834350229777877013?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7834350229777877013/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7834350229777877013' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7834350229777877013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7834350229777877013'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/11/eclipse-demo-camp-2010-poznan.html' title='Eclipse Demo Camp 2010 - Poznań'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-Hz5kL7u4E4/TPAqllpJACI/AAAAAAAABFo/jA_f9f89BQw/s72-c/Eclipse_DemoCamp_New.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7922608975909226466</id><published>2010-09-16T19:04:00.009+02:00</published><updated>2010-09-16T20:42:17.319+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Narzędzia z Instantiations dostępne za darmo</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TJJYPtkJNKI/AAAAAAAABDY/TQHyp4qEzI0/s1600/instatiations.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 119px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TJJYPtkJNKI/AAAAAAAABDY/TQHyp4qEzI0/s320/instatiations.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5517569520434754722" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TJJYPtkJNKI/AAAAAAAABDY/TQHyp4qEzI0/s1600/instatiations.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TJJYPtkJNKI/AAAAAAAABDY/TQHyp4qEzI0/s320/instatiations.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5517569520434754722" /&gt;&lt;/a&gt;&lt;/span&gt;Instantiations to jedna z legend świata Eclipse. Przez lata zajmowali się doskonaleniem swojego pakietu narzędzi do wizualnego tworzenia formularzy w SWT/Swing/GWT. Dzięki jakości swoich produktów firma potrafiła przez lata utrzymać się na trudnym rynku zdominowanym przez darmowe alternatywy (kiepski VisualEditor oraz dobry Netbeans Matisse). Miesiąc temu firma została przejęta przez Google. Głównym celem był edytor GWT.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Osobiście nigdy nie miałem okazji by coś poważniejszego zaprogramować z użyciem pakietu Instantiations. GUI które budowaliśmy było zbyt złożone by można było je "wyklikać" i jednoczenie nie było go za dużo. Budowanie narzędzi deweloperskich znacznie różni się od budowania aplikacji z milionem względnie prostych i przewidywalnych formularzy. Jednak jedna funkcja bardzo mnie interesowała. Mianowicie możliwość tworzenia skryptów na potrzeby regresji GUI. Szczególnie kusiło mnie nagrywanie edytorów graficznych opartych na GEF/GMF. &lt;br /&gt;&lt;br /&gt;Oprogramowanie testów regresji dla edytora graficznego jest niezmiernie trudne. Trudno tu polegać na samych testach jednostkowych gdy 95% kodu jest wygenerowana automatycznie i zawiera dosyć zagmatwaną logikę. Nie ma co ukrywać ale kod generowany przez GMF nie należy do najprzyjemniejszych i z czasem przekształca się w bliżej nieokreśloną masę wymieszanych metod własnych i automatycznych. Utrzymanie całości graniczy z cudem szczególnie gdy robi się coś nie do końca standardowego (jak przykładowo rozbicie edytora na na kilka współpracujących/opcjonalnych modułów OSGi). &lt;br /&gt;&lt;br /&gt;Niestety nigdy nie znalazłem czasu na dokładne testy tych narzędzi. Także cena była zaporowa. Nadzieją okazał się otwarty projekt &lt;a href="http://www.eclipse.org/swtbot/"&gt;SWTBot&lt;/a&gt; który pojawił się jakieś dwa lata temu. Przyznam że bardzo mi się spodobał ze względu na swoją prostotę jednak brak w nim było obsługi edytorów graficznych (dodane zostały raptem kilka miesięcy temu w wersji 'alpha'). &lt;br /&gt;&lt;br /&gt;Być może jednak warto wrócić do tematu. Dziś Google ogłosiło na swoim blogu że pełny pakiet narzędzi zostaje udostępniony całkowicie za darmo :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/tools/download-gwtdesigner.html"&gt;GWT Designer&lt;/a&gt; &lt;br /&gt;Zestaw narzędzi dla GWT&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/tools/download-codepro.html"&gt;CodePro AnalytiX&lt;/a&gt;&lt;br /&gt;Zautomatyzowany system analizy kodu&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/tools/download-wbpro.html"&gt;WindowBuilder Pro&lt;/a&gt;&lt;br /&gt;Narzędzia do budowania GUI w SWT/Swing/XWT/GWT&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/tools/download-wintester.html"&gt;WindowTester Pro&lt;/a&gt;&lt;br /&gt;Testy regresji w GUI&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://googlewebtoolkit.blogspot.com/2010/09/google-relaunches-instantiations.html"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 211px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TJJk0t43tpI/AAAAAAAABDg/uLFbUEwjs78/s320/userinterface.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5517583350316381842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Co cieszy zapowiedziano także mocną integrację z wcześniejszymi pluginami Google. Możliwe więc że za kilka miesięcy pojawi się naprawdę dopracowany zestaw narzędzi do pracy z GWT. Bez wątpienia zwiększy to jeszcze bardziej popularność tej technologii. Więcej informacji można znaleźć na blogu &lt;a href="http://googlewebtoolkit.blogspot.com/2010/09/google-relaunches-instantiations.html"&gt;Google GWT&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7922608975909226466?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7922608975909226466/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7922608975909226466' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7922608975909226466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7922608975909226466'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/09/narzedzia-z-instantiations-dostepne-za.html' title='Narzędzia z Instantiations dostępne za darmo'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/TJJYPtkJNKI/AAAAAAAABDY/TQHyp4qEzI0/s72-c/instatiations.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-76710084565821459</id><published>2010-08-31T14:10:00.011+02:00</published><updated>2010-08-31T20:18:07.483+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Prezentacja Eclipse Virgo (SpringSource dmServer)</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.eclipse.org/virgo/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 250px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/THzzN0JhqoI/AAAAAAAABC4/Ppy61UdLe68/s320/Virgo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5511547462657092226" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.eclipse.org/virgo/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/THzzN0JhqoI/AAAAAAAABC4/Ppy61UdLe68/s320/Virgo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5511547462657092226" /&gt;&lt;/a&gt;&lt;/span&gt;Dziś o godzinie 17.00 odbędzie się prezentacja projektu Eclipse Virgo (dawniej znanego jako SpringSource dmServer). Prezentację poprowadzą jego liderzy: Glyn Normington oraz Steve Powell. Prezentacja odbędzie się na platformie Eclipse Live więc każdy będzie mógł uzyskać odpowiedzi na własne pytania.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Rejestracja możliwa jest pod tym adresem:&lt;br /&gt;&lt;a href="http://live.eclipse.org/node/937"&gt;http://live.eclipse.org/node/937&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Więcej informacji o projekcie Eclipse Virgo możecie znaleźć na stronie projektu:&lt;br /&gt;&lt;a href="http://www.eclipse.org/virgo/"&gt;http://www.eclipse.org/virgo/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jako programista środowiska Eclipse od wielu lat mam możliwość pracy w środowisku OSGi. Nic tak nie porządkuje kodu jak przemyślana modularyzacja z wymuszonymi jednokierunkowymi zależnościami pomiędzy modułami + usługi/rozszerzenia. Bez wątpienia jestem wielkim fanem tej technologi :) Dlatego bardzo cieszy mnie jej ekspansja także na platformę JEE/J2EE. Mam nadzieję że znajdę trochę czasu by wrzucić na bloga jakiś dłuższy wpis o usługach, modularyzacji i tematach pokrewnych. Jak w każdej technologii także w OSGi jest kilka kruczków które dobrze znać (np. &lt;a href="http://deepdiveinto.blogspot.com/2010/06/jak-wamac-sie-do-obcego-bundla-w-osgi.html"&gt;upublicznić pakiet prywatny z zewnętrznej biblioteki&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Jeżeli ktoś z was jest zainteresowany powiadomieniami o kolejnych prezentacjach, wykładach, spotkaniach zapraszamy do oficjalnej grupy &lt;a href="http://www.facebook.com/eclipse.polska"&gt;'Eclipse Polska na Facebooku'&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.facebook.com/eclipse.polska"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/THz4JpirCHI/AAAAAAAABDA/WhJQPMl08gs/s320/EclipsePolska.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5511552888648435826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;---------------------------------&lt;br /&gt;&lt;span style="background-color: #D8FBC8;"&gt;Aktualizacja&lt;/span&gt;&lt;br /&gt;Link do nagranej prezentacji:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adobedev.adobe.acrobat.com/p22402290/"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TH1BldQ3OSI/AAAAAAAABDI/zS7GtOH8JWw/s320/Prezentacja.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5511633630737676578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-76710084565821459?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/76710084565821459/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=76710084565821459' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/76710084565821459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/76710084565821459'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/08/prezentacja-eclipse-virgo-springsource.html' title='Prezentacja Eclipse Virgo (SpringSource dmServer)'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/THzzN0JhqoI/AAAAAAAABC4/Ppy61UdLe68/s72-c/Virgo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2321664597877219692</id><published>2010-08-30T09:43:00.008+02:00</published><updated>2010-08-30T11:34:54.305+02:00</updated><title type='text'>Disqus czyli ciekawy system komentarzy</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://disqus.com/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 176px; height: 103px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/THtjwBhuH2I/AAAAAAAABCg/AKbZlj28mlc/s320/disqus.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5511108245712674658" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://disqus.com/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/THtjwBhuH2I/AAAAAAAABCg/AKbZlj28mlc/s320/disqus.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5511108245712674658" /&gt;&lt;/a&gt;&lt;/span&gt;Przez ostatnie 4 lata korzystałem z domyślnego mechanizmu komentarzy z serwisu Google Blogspot. Niestety całość wyglądała nienajlepiej. Przykładowo dodanie komentarza otwierało nową stronę która nie wykorzystywała układu strony bazowej i wyświetlała się w wąskiej kolumnie. O takich funkcjach jak odpowiedź na komentarz można było zapomnieć. Zauważyłem jednak że coraz więcej stron korzysta z kilku alternatywnych implementacji kontrolki komentarzy.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;W zasadzie najpopularniejsze są dwa silniki &lt;a href="http://disqus.com/"&gt;'Disqus'&lt;/a&gt; oraz &lt;a href="http://intensedebate.com/"&gt;'IntenseDebate'&lt;/a&gt;. To bardzo rozbudowane mechanizmy implementujące wszystkie opcje których domyślnie brakuje na Google Blogspot. Mamy do dyspozycji nie tylko możliwość wyświetlania odpowiedzi w wątkach ale także logowanie za pomocą profilów w serwisach społecznościowych. Tym samym logowanie powinno być prostsze (bez wpisywania kodów). Po przeczytaniu kilku opinii postanowiłem wypróbować system Disqus. Jest on zdecydowanie popularniejszy. Dodatkowo dostarcza takich mechanizmów jak importowanie istniejących komentarzy oraz ich synchronizację w tle z oryginalną bazą (co ma znaczenie jeżeli ktoś chciałby później z takiej kontrolki zrezygnować nie tracąc danych).  &lt;br /&gt;&lt;br /&gt;Instalacja polega na przejściu prostego kreatora w którym podaje się nazwę bloga oraz ustawia podstawowe opcje. Można wybrać elementy które mają być pokazywane, ustalić wygląd oraz włączyć mechanizm import/export. Mechanizm importu i synchronizacji z Blogspot dostępny jest w sekcji 'Tools'. Sama instalacja polega na automatycznym dodaniu do naszego szablonu odpowiedniej sekcji.&lt;br /&gt;&lt;br /&gt;Największą zaletą jest chyba bardziej rozbudowana możliwość logowania. Użytkownik nie musi już posiadać konta Google Blogspot jak do tej pory. Może się zalogować za pomocą profilu w serwisie &lt;span style="font-weight:bold;"&gt;Facebook&lt;/span&gt;, &lt;span style="font-weight:bold;"&gt;Twitter&lt;/span&gt; lub skorzystać z &lt;span style="font-weight:bold;"&gt;OpenID&lt;/span&gt;. W przypadku kont Google loginem OpenID jest &lt;a href="http://google.com/profiles/me"&gt;adres naszego publicznego profilu&lt;/a&gt; (zakładając &lt;span style="font-weight:bold;"&gt;publiczny profil Google&lt;/span&gt; warto zwrócić uwagę by nie ujawnić identyfikatora adresu email oraz listy znajomych - opcje te są domyślnie zaznaczone). Pozostałe serwisy dostarczające identyfikator OpenID znajdują się pod tym adresem &lt;a href="http://openid.net/get-an-openid"&gt;http://openid.net/get-an-openid&lt;/a&gt;. Można także komentować całkowicie bez autoryzacji jednak taką opcję wyłączyłem. &lt;br /&gt;&lt;br /&gt;Ogólnie całość wydaje się ciekawa. Zobaczę jak się będzie sprawdzała (choć za dużo komentarzy nigdy tu nie było). Jakby co to zawsze można za pomocą jednego kliknięcia wrócić do starego mechanizmu&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2321664597877219692?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2321664597877219692/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2321664597877219692' title='Komentarze (5)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2321664597877219692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2321664597877219692'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/08/disqus-czyli-ciekawy-system-komentarzy.html' title='Disqus czyli ciekawy system komentarzy'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/THtjwBhuH2I/AAAAAAAABCg/AKbZlj28mlc/s72-c/disqus.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5995445358156155148</id><published>2010-08-20T18:07:00.033+02:00</published><updated>2010-09-01T07:22:10.054+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google chrome'/><title type='text'>Akceleracja sprzętowa w Google Chrome 7 [GPU]</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TG6olyGmrcI/AAAAAAAABBo/s8XvW_LRKtM/s1600/psychodelic.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 230px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TG6olyGmrcI/AAAAAAAABBo/s8XvW_LRKtM/s320/psychodelic.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5507524761378794946" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TG6olyGmrcI/AAAAAAAABBo/s8XvW_LRKtM/s1600/psychodelic.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TG6olyGmrcI/AAAAAAAABBo/s8XvW_LRKtM/s320/psychodelic.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5507524761378794946" /&gt;&lt;/a&gt;&lt;/span&gt;Niecały rok temu podczas konferencji PDC &lt;span style="font-weight:bold;"&gt;Microsoft&lt;/span&gt; zaprezentował &lt;a href="http://ie.microsoft.com/testdrive/"&gt;stan prac nad silnikiem IE9&lt;/a&gt;. Jako główną zaletę zapowiedziano &lt;span style="font-weight:bold;"&gt;pełną akcelerację sprzętową&lt;/span&gt; dla grafiki 2D. &lt;br /&gt;&lt;br /&gt;Obietnica została spełniona. W ciągu ostatnich miesięcy pojawiały się kolejne wersje silnika implementujące poszczególne mechanizmy. Wsparcie to obejmuje grafikę rastrową na komponencie Canvas, wektorowe SVG a nawet zwykły tekst. Całość działa na bazie biblioteki Direct2D obecnej w Windows 7 oraz Vista (konieczny SP2 i dodatkowy pakiet poprawek). Z biblioteki tej skorzystała także Mozilla, dodając niedawno wsparcie dla akceleracji sprzętowej w &lt;span style="font-weight:bold;"&gt;Firefox 4.0&lt;/span&gt; (chwilowo jeszcze wymaga odblokowania w parametrach)&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Co to daje? Naprawdę sporo, różnica wydajności jest gigantyczna. To jak przesiadka 10 lat temu z 'S3 Virge DX' na kartę 'Diamond Monster 3D (3DFX)'. Microsoft przygotował spory &lt;a href="http://ie.microsoft.com/testdrive/"&gt;zestaw demonstracji&lt;/a&gt; prezentujący wydajność podstawowych operacji graficznych takich jak rysowanie bitmap, skalowanie, transformacje itp. Typowe operacje wymagane by zrobić &lt;span style="font-weight:bold;"&gt;dobrze wyglądającą grę 2D&lt;/span&gt;. Nie pozostawiają one złudzeń co do przyszłości grafiki w grach na WWW. W testach w których IE9 oraz Firefox4 z łatwością osiągają 60 fps, Chrome 6 z trudem renderuje 1-2 klatki na sekundę&lt;br /&gt;&lt;br /&gt;Jako użytkownik Google Chrome postanowiłem sprawdzić przyszłe plany projektu. Zamiast szukać odpowiedzi w newsach udałem się do źródła. Czyli do bugzilli projektu Chromium (w zasadzie nazywa się to 'Issues' jednak z przyzwyczajenia wszystkie tego typu aplikacje nazywam 'bugzilla'). Z bazy wynika że już w dniu pierwszej prezentacji silnika IE9 pojawiło się zadanie &lt;a href="http://code.google.com/p/chromium/issues/detail?id=28539"&gt;'Investigate Direct2D support'&lt;/a&gt;. Kluczowe zadania zostały dodane do bazy w ciągu ostatniego miesiąca i datowane na &lt;span style="font-weight:bold;"&gt;M7&lt;/span&gt; (&lt;a href="http://code.google.com/p/chromium/issues/list?can=1&amp;q=label:Feature-GPU-canvas2d&amp;colspec=ID+Stars+Pri+Area+Feature+Type+Status+Summary+Modified+Owner+Mstone+OS&amp;x=mstone&amp;y=area&amp;cells=tiles"&gt;GPU_canvas_2d&lt;/a&gt;). Ponieważ część została już zaimplementowana postanowiłem zrobić małe testy.&lt;br /&gt;&lt;br /&gt;Na pierwszy ogień poszedł &lt;a href="http://ie.microsoft.com/testdrive/Performance/FishIE%20tank/Default.html"&gt;słynny test z akwarium&lt;/a&gt;. W wersji softwarowej już przy 20 obiektach Google Chrome 6 nie daje rady wyświetlając 15 klatek na sekundę. Przy próbie zwiększenia ilości obiektów do 1000 przeglądarka umiera. A jak wygląda wersja z akceleracją? Google Chrome 7 radzi sobie równie dobrze jak IE9. Osiąga maksymalną liczbę klatek przy 20 obiektach, przy 1000 spada do 30fps. Test działa ponad &lt;span style="font-weight:bold;"&gt;100x szybciej&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/TG9d_9t45sI/AAAAAAAABB4/TIAjF35P71o/s1600/fishtank_chrome7.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/TG9d_9t45sI/AAAAAAAABB4/TIAjF35P71o/s320/fishtank_chrome7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5507724222777583298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kolejny test &lt;a href="http://ie.microsoft.com/testdrive/Performance/PsychedelicBrowsing/Default.html"&gt;'Psychedelic Browsing'&lt;/a&gt; także mnie nie zawiódł. Z zaledwie &lt;span style="font-weight:bold;"&gt;2 pkt&lt;/span&gt; w trybie softwarowym, wynik wzrasta do &lt;span style="font-weight:bold;"&gt;1618 pkt&lt;/span&gt;. Pojawiają się jednak jeszcze drobne śmieci a końcowy ekran z wynikiem jest zdecydowanie bardziej 'psychodeliczny' niż w oryginale -&gt; obrazek tytułowy ;)&lt;br /&gt;&lt;br /&gt;Jeżeli ktoś chciałby zrobić testy samemu wystarczy kilka kroków. Implementacja akceleracji dla Canvas &lt;a href="http://code.google.com/p/chromium/issues/list?can=1&amp;q=label:Feature-GPU-canvas2d&amp;colspec=ID+Stars+Pri+Area+Feature+Type+Status+Summary+Modified+Owner+Mstone+OS&amp;x=mstone&amp;y=area&amp;cells=tiles"&gt;zaimplementowana została dopiero dwa dni temu&lt;/a&gt; więc konieczne jest ściągnięcie odpowiedniej wersji. Najlepiej zainstalować wersję &lt;a href="http://tools.google.com/dlpage/chromesxs"&gt;'Canary Build'&lt;/a&gt;. Jej stabilność jest na poziomie wersji deweloperskiej 'DEV' jednak &lt;span style="font-weight:bold;"&gt;nie nadpisuje wersji 'Stable'&lt;/span&gt; co jest dużą zaletą. Jednocześnie jest zdecydowanie stabilniejsza niż losowy build Chromium i posiada mechanizm uaktualnień. Dodatkowo należy uruchomić aplikację z następującym zestawem parametrów startowych:&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #D8FBC8;"&gt;Update: Najnowszy build 'Canary' 7.0.511.1 ponownie odblokował akcelerację Canvas 2D. Poprawiono także problemy z wyświetlaniem z obrazka tytułowego&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#00bb33;"&gt;--enable-gpu-plugin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#00bb33;"&gt;--enable-gpu-rendering&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#00bb33;"&gt;--enable-accelerated-2d-canvas&lt;/span&gt; &lt;br /&gt;&lt;span style="font-weight:bold;color:#00bb33;"&gt;--enable-accelerated-compositing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lyQYFkvgL18&amp;hl=pl&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lyQYFkvgL18&amp;hl=pl&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Nie ukrywam że ten kierunek rozwoju przeglądarek &lt;span style="font-weight:bold;"&gt;bardzo mnie cieszy&lt;/span&gt;. Na studniach spędziłem niezliczone ilości godzin pisząc kolejne wersje edytorów do &lt;a href="http://deepdiveinto.blogspot.com/2007/09/duchy-przeszloci.html"&gt;modelowania grafiki 3D&lt;/a&gt;. W zasadzie to minęło już ponad 10 lat a wciąż piszę jakieś edytory i coś modeluję. Choć OpenGL'a wymieniłem na Eclipse/DSL a zamiast punktów i wektorów projektuję teraz &lt;a href="http://deepdiveinto.blogspot.com/search/label/dsl"&gt;języki modelowania procesów biznesowych&lt;/a&gt;... to wciąż jestem wielkim fanem grafiki :) &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Witamy w świecie zaawansowanej grafiki 2D :)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Jeżeli podobał ci się ten tekst naciśnij przycisk &lt;span style="font-weight:bold;"&gt;'Lubię to!&lt;/span&gt;', będę wiedział że warto było go pisać&lt;br /&gt;Jak zwykle zachęcam także do wypróbowania wtyczki dla Google Chrome - &lt;a href="http://www.facebook.com/pages/Facebook-Like-Plus/123673600982387"&gt;Facebook Like Plus&lt;/a&gt;&lt;/small&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5995445358156155148?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5995445358156155148/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5995445358156155148' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5995445358156155148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5995445358156155148'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/08/akceleracja-sprzetowa-w-google-chrome-7.html' title='Akceleracja sprzętowa w Google Chrome 7 [GPU]'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-Hz5kL7u4E4/TG6olyGmrcI/AAAAAAAABBo/s8XvW_LRKtM/s72-c/psychodelic.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2493495563028832437</id><published>2010-08-08T16:13:00.004+02:00</published><updated>2010-08-22T14:11:08.812+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><title type='text'>[OSLO] Quadrant idzie w odstawkę</title><content type='html'>Jakieś półtorej roku temu &lt;a href="http://deepdiveinto.blogspot.com/2009/01/tekstowe-jzyki-specjalizowane.html"&gt;pisałem na blogu o projekcie Oslo&lt;/a&gt;. Rewelacyjnie zapowiadających się narzędziach do tworzenia języków specyficznych dla problemu. Projekt składał się z kilku elementów. Narzędzi do definicji modelu języka i jego testów w czasie rzeczywistym, bazy danych przechowującej instancje modeli zgodne z gramatyką oraz edytor Quadrant.&lt;span class="fullpost"&gt; &lt;br /&gt;&lt;br /&gt;Pierwszy element w bezpośredni sposób odpowiadał funkcjonalności projektu &lt;a href="http://deepdiveinto.blogspot.com/2010/06/artext-prezentacja-mozliwosci-xtext.html"&gt;xText&lt;/a&gt; który mnie osobiście od dawna pasjonuje. Byłem pod wielkim wrażeniem faktu iż całość pracowała w czasie rzeczywistym. W jednym edytorze można było definiować/modyfikować model gramatyki i w tym samym czasie go testować na przykładowych danych. W przypadku projektu xText na dzień dzisiejszy wciąż konieczna jest generacja kodu i uruchomienie kolejnej instancji Eclipse. Oczywiście możliwe byłoby rozszerzenie środowiska xText w taki sposób by całość nie wymagała restartu poprzez wykorzystanie dynamiki mechanizmów OSGi/Equinox, jednak aktualnie nie jest to zaimplementowane (budowałem tego typu mechanizmy i nie jest to takie trudne jak się wydaje :)&lt;br /&gt;&lt;br /&gt;Drugim elementem była baza instancji. Mniej więcej odpowiadała ona środowisku Eclipse CDO. &lt;br /&gt;&lt;br /&gt;Trzeci element 'Quadrant' był dla mnie jednak niezrozumiały. Był to edytor który w sposób graficzny pozwalał budować i łączyć zapytania do bazy instancji. Przyznam że nie do końca potrafiłem sobie wyobrazić jego produkcyjne zastosowanie. Z doświadczenia wiem że jeżeli ktoś chce dostarczyć narzędzia dla osób o profilu 'nieinformatycznym' (jak np. analityk o profilu 'telekomunikacja' a nie 'informatyka') to narzędzia te MUSZĄ BYĆ PROSTE. Domena rozwiązywanego problemu musi zostać tak okrojona/dopasowana by możliwe było stworzenie naprawdę prostych narzędzi operujących w zadanej (zrozumiałej) przestrzeni. Po ci więc Microsoft tworzył uniwersalny edytor zapytań?&lt;br /&gt;&lt;br /&gt;Quadrant nie był prosty. Wyglądał na narzędzie do obsługi którego konieczne będzie specjalistyczne przeszkolenie, a nawet znajomość modelu gramatyki. Trudno mi sobie wyobrazić by klient operujący w narzędziach schodził na poziom modelu który często jest nie do końca zrozumiały nawet dla osób z IT o odmiennej specjalizacji. Sam model także nie ma wartości sam w sobie. To tylko zapis wiedzy którą dopiero później należy zinterpretować w coś wartościowego dla klienta (generacja lub silnik interpretujący)&lt;br /&gt;&lt;br /&gt;Dodatkowo całość kojarzyła mi się trochę z filmem 'Raport mniejszości'. Specyfika graficzna edytora powodowała że ewentualny zapytanie zbudowane w ten sposób musiałoby być wyświetlane na ekranie wielkości ściany lub przynajmniej 50 cali. Całkowicie niezrozumiały element.&lt;br /&gt;&lt;br /&gt;Parę miesięcy później pojawiła się informacja o zdefiniowaniu przeznaczenia projektu Oslo. Został on przypisany jako element oferty bazodanowej. To było spore zaskoczenie. Trochę szkoda ponieważ edytor oraz baza mogły mieć zdecydowanie szersze pole działania podobnie jak xText. Wyjaśniało jednak istnienie złożonego modułu do budowy zapytań. Przyznam że po tym ustaleniu kierunku dalszego rozwoju straciłem zainteresowanie tematyką OSLO. &lt;br /&gt;&lt;br /&gt;Dziś natrafiłem na informację o &lt;a href="http://www.infoq.com/news/2010/08/quadrant-drops"&gt;zakończeniu prac nad modułem 'Quadrant'&lt;/a&gt;. Pozostałe elementy pozostają bez zmian. Niestety dalej całość targetowana jest tylko na bazy danych. Szkoda. Gdyby Microsoft pracował bardziej na kształt Eclipse Community bez wątpienia projekt Oslo mógłby więcej zmienić w tematyce DSL. Ich zespół mógłby dalej pracować nad rozszerzeniem projektu dla baz danych jednak zakładam że sporo osób z zewnątrz wykorzystywałoby go inaczej. Jako podstawę rozwiązań DSL jak dziś się to robi z EMF/xText. &lt;br /&gt;&lt;br /&gt;Otwartość na deweloperów z zewnątrz to podstawa w tego typu projektach rozwojowych. Wystarczy sobie przypomnieć początki środowiska Eclipse. Przed wersją 3.0 sporo osób 'hakowało' SDK wycinając samego Equinoxa jako podstawę rozszerzalnych aplikacji serwerowych lub wczesne RCP. Dzięki temu ktoś zauważył że warto stworzyć koncepcję RCP, później RT itp. Otwartość na nowe 'niestandardowe' pomysły to moim zdaniem coś o czym zawsze powinno się pamiętać&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2493495563028832437?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2493495563028832437/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2493495563028832437' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2493495563028832437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2493495563028832437'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/08/oslo-quadrant-idzie-w-odstawke.html' title='[OSLO] Quadrant idzie w odstawkę'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7818656865002579438</id><published>2010-07-21T15:15:00.029+02:00</published><updated>2010-08-22T14:31:17.310+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open graph'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><title type='text'>Jak dodać znaczniki Open Graph na bloga [Blogspot]</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://opengraphprotocol.org/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/TERjSusGNrI/AAAAAAAAA_U/7DHavgzE-r4/s200/open_graph_protocol_logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5495626618720630450" /&gt;&lt;/a&gt;&lt;div style="background-color: #D8FBC8;"&gt;[Poprawione elementy zaznaczone na zielono]&lt;/div&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://opengraphprotocol.org/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/TERjSusGNrI/AAAAAAAAA_U/7DHavgzE-r4/s200/open_graph_protocol_logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5495626618720630450" /&gt;&lt;/a&gt;&lt;/span&gt;Od momentu &lt;a href="http://deepdiveinto.blogspot.com/2010/04/facebook-otwiera-swoje-api-dla-kazdego.html"&gt;premiery protokołu&lt;/a&gt; pod koniec kwietnia coraz więcej stron wzbogaca swoje strony o znaczniki &lt;a href="http://opengraphprotocol.org/"&gt;Open Graph&lt;/a&gt; oraz nowe kontrolki Facebooka. Szczególnie para kontrolek &lt;a href="http://developers.facebook.com/docs/reference/plugins/activity"&gt;'aktywność znajomych'&lt;/a&gt; i &lt;a href="http://developers.facebook.com/docs/reference/plugins/like"&gt;'lubię to'&lt;/a&gt; jest popularna. Pierwsza ułatwia poinformowanie znajomych że coś się lubi, druga pokazuje co warto przeczytać. Kluczowe są jednak nie same kontrolki a uniwersalne znaczniki Open Graph. Do tej pory ze znaczników tych korzystał tylko serwis Facebook jednak po niedawnym &lt;a href="http://deepdiveinto.blogspot.com/2010/07/open-graph-api-takze-w-google-metaweb.html"&gt;przejęciu MetaWeb przez Google&lt;/a&gt; także ten gigant zacznie "proces skanowania internetu" w poszukiwaniu znaczników. Myślę że także polskie serwisy wkrótce skorzystają z tego standardu.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;To właśnie te znaczniki informują inne serwisy/aplikacje co to za strona, co fizycznego ona reprezentuje, gdzie się znajduje dane miejsce etc. Jeżeli np. na stronie mamy przepis na 'Tequile sunrise' dodajemy znacznik 'drink' i system będzie wiedział jak taką stronę potraktować. Jeżeli ktoś polubi naszą stronę to polubi dany przepis nie zwykły URL (odpowiednia sekcja profilu, pozycja w grafie, możliwość wyszukiwania, agregacji...). Oczywiście znajomi tej osoby zainteresowani przepisem na Tequilę będą trafiali na naszą stronę. Jakaś inna aplikacja może pobrać wszystkie drinki lubiane przez naszych znajomych (o ile tą informację oni udostępnią) lub wszystkie drinki/strony znalezione w systemie.&lt;br /&gt;&lt;br /&gt;Jak jednak dodać znaczniki na bloga w serwisie Google Blogspot? To na szczęście jest bardzo proste. Poniżej przedstawię co należy zrobić by nasz blog mógł zostać poprawnie zinterpretowany.&lt;br /&gt;&lt;br /&gt;Serwis blogspot działa na zasadzie szablonu. Szablon ten opisuje jak ma wyglądać nasza strona główna oraz strony poszczególnych wpisów. To rozróżnienie jest podstawowym elementem na który należy zwrócić uwagę. Jeżeli przez pomyłkę strona artykułu zostanie oznaczona jako &lt;span style="font-weight:bold;"&gt;'blog'&lt;/span&gt; dla każdego wpisu zostanie w serwisie Facebook założona automatycznie osobna strona fanów. Tak więc ważne jest by tylko strona główna została oznaczona jako &lt;span style="font-weight:bold;"&gt;'blog'&lt;/span&gt; lub &lt;span style="font-weight:bold;"&gt;'website'&lt;/span&gt; a zwykłe strony wpisów jako &lt;span style="font-weight:bold;"&gt;'article'&lt;/span&gt;. Oczywiście jeżeli nasze wpisy są przepisami na drinki powinny zostać one oznaczone jako &lt;span style="font-weight:bold;"&gt;'drink'&lt;/span&gt; :)&lt;br /&gt;&lt;br /&gt;Konieczna jest więc modyfikacja naszego szablonu. By to zrobić wybieramy opcję 'Ustawienia' a następnie wybieramy zakładkę 'Projekt'. W zakładce tej znajduje się opcja 'Edytuj kod HTML'. By widzieć całość musimy dodatkowo wybrać opcję 'Rozszerz szablony widżetów'. Uzyskamy w ten sposób dostęp do pełnego kodu naszego szablonu. Oczywiście przed modyfikacjami warto zrobić sobie kopię zapasową. Panel prezentuje poniższy rzut ekranu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEb-w08ktxI/AAAAAAAAA_c/UswrEazAmjc/s1600/graph1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 253px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEb-w08ktxI/AAAAAAAAA_c/UswrEazAmjc/s320/graph1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496360510052153106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dodanie meta-informacji wymagać będzie zdefiniowania przestrzeni nazw XML dla standardu Open Graph oraz jego rozszerzeń specyficznych dla Facebooka. Z pewnością niedługo pojawią się także rozszerzenia specyficzne dla Google.&lt;br /&gt;&lt;br /&gt;xmlns:og='http://opengraphprotocol.org/schema/'&lt;br /&gt;xmlns:fb='http://www.facebook.com/2008/fbml'&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcAfr8AT-I/AAAAAAAAA_k/bkA24MNuKeQ/s1600/graph2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 102px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcAfr8AT-I/AAAAAAAAA_k/bkA24MNuKeQ/s400/graph2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496362414599327714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kolejnym krokiem jest modyfikacja znacznika HEAD. Znacznik ten w szablonie jest wspólny zarówno dla strony głównej jak i stron wpisów należy więc dodać w nim zawartość warunkowo. Warunek powinien wyglądać następująco&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcCzvUwh3I/AAAAAAAAA_s/1ZD5LhGohek/s1600/graph3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 90px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcCzvUwh3I/AAAAAAAAA_s/1ZD5LhGohek/s400/graph3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496364958129096562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Zacznijmy od pojedynczych wpisów. Open Graph wymaga zdefiniowania czterech podstawowych parametrów &lt;span style="font-weight:bold;"&gt;'og:title'&lt;/span&gt; &lt;span style="font-weight:bold;"&gt;'og:type'&lt;/span&gt; &lt;span style="font-weight:bold;"&gt;'og:url'&lt;/span&gt; oraz &lt;span style="font-weight:bold;"&gt;'og:image'&lt;/span&gt;. Pierwszym elementem jest typ który wybieramy z pośród listy typów wspieranych przez protokół. W naszym przypadku będzie to &lt;span style="font-weight:bold;"&gt;'article'&lt;/span&gt;. Drugim ważnym polem jest tytuł który ustawiamy na wartość &lt;span style="font-weight:bold;"&gt;'data:blog.pageTitle'&lt;/span&gt;. Wartość ta jest zmienną dostępną w szablonie w trakcie generowania znacznika HEAD. Ważne jest by atrybut 'content' w znaczniku 'meta' który wykorzystuje zmienne szablonu został oznaczony prefixem &lt;span style="font-weight:bold;"&gt;'expr:'&lt;/span&gt;. Tylko w takim przypadku silnik generujący będzie wiedział że ma podstawić w tym miejscu wartość zmiennej. Kolejnym polem jest adres naszej strony który ustawiamy na wartość zmiennej &lt;span style="font-weight:bold;"&gt;'data:blog.url'&lt;/span&gt;. Następnie należy zdefiniować obrazek.&lt;br /&gt;&lt;br /&gt;Kolejne atrybuty z jakim warto skorzystać to &lt;span style="font-weight:bold;"&gt;'og:site_name'&lt;/span&gt; pozwalający nam zdefiniować czytelną krótką nazwę dla naszego bloga oraz &lt;span style="font-weight:bold;"&gt;'og:description'&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;W przypadku strony głównej poszczególne wartości to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;'og:title'&lt;/span&gt; - stała nazwa naszego bloga/strony,&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;'og:type'&lt;/span&gt; - typ ustawiony na &lt;span style="font-weight:bold;"&gt;'blog'&lt;/span&gt; lub &lt;span style="font-weight:bold;"&gt;'website'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;'og:url'&lt;/span&gt; - adres naszej strony głównej&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;'og:image'&lt;/span&gt; - grafika&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;'og:site_name'&lt;/span&gt; - czytelna krótka nazwa&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;'og:description'&lt;/span&gt; - opis strony&lt;br /&gt;&lt;br /&gt;Jeżeli nasza strona reprezentuje fizyczne miejsce takie jak restauracja lub jest przykładowo wydarzeniem (koncert lub jakaś inna impreza) należy podać także adres najlepiej z dokładną pozycją GPS (z Google Maps). Poszczególne znaczniki można sprawdzić w &lt;a href="http://opengraphprotocol.org/"&gt;dokumentacji protokołu&lt;/a&gt;. To chyba jeden z fajniejszych elementów. Facebook aktualnie z tych danych jeszcze nie korzysta ale myślę że jest to tylko kwestią czasu. W końcu czy nie byłoby fajnie wybrać opcję 'lubię to' na stronie jakiegoś koncertu a serwis automatycznie by nas do tego zdarzenia przypisał w serwisie Facebook? W wyniku nasi znajomi mogliby zobaczyć na mapie co dzieje się ciekawego w okolicy. Wszystko całkowicie automatycznie. &lt;a href="http://groups.google.com/group/open-graph-protocol/browse_thread/thread/dc3002e8694e1a47?pli=1"&gt;Dyskusję na temat wydarzeń&lt;/a&gt; można znaleźć w Google Groups. &lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #D8FBC8;"&gt;Dodatkowo w przypadku strony głównej możemy także skorzystać z rozszerzonych znaczników przygotowanych przez serwis Facebook i zdefiniować administratorów strony. Jest to bardzo ciekawa funkcjonalność. W wyniku w serwisie Facebook automatycznie utworzy się &lt;span style="font-weight:bold;"&gt;wirtualna strona fanów&lt;/span&gt; naszego bloga/strony (dzięki danym które zdefiniowaliśmy w Open Graph). Dlaczego wirtualna? Ponieważ nie będzie widoczna dla użytkowników, ci będą kierowani bezpośrednio na naszego bloga. Strona ta będzie jedynie ułatwiała nam administrację i dostęp do statystyk. Dodatkowo nasz blog &lt;span style="font-weight:bold;"&gt;będzie dostępny w wyszukiwarce serwisu Facebook&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Znacznik ten to &lt;span style="font-weight:bold;"&gt;'fb:admins'&lt;/span&gt;. Administratorem może być także aplikacja co definiujemy za pomocą znacznika &lt;span style="font-weight:bold;"&gt;'fb:app_id'&lt;/span&gt;. Po zdefiniowaniu administratora na blogu &lt;span style="font-weight:bold;"&gt;musimy&lt;/span&gt; wykorzystać przycisk &lt;a href="http://developers.facebook.com/plugins"&gt;Like&lt;/a&gt; na stronie by administrator potwierdził przynależność do tej strony (można skorzystać z wtyczki &lt;a href="http://www.facebook.com/pages/Facebook-Like-Plus/123673600982387"&gt;Facebook Like Plus&lt;/a&gt; która udostępnia 'przenośny Like' dla każdej strony).  Więcej informacji można znaleźć na &lt;a href="http://developers.facebook.com/docs/opengraph"&gt;stronie dokumentującej&lt;/a&gt; rozszerzenia protokołu.&lt;br /&gt;&lt;br /&gt;Całość znacznika 'IF' dla mojego bloga wygląda następująco (nie ma w nim znacznika 'admins'):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcSKOECK3I/AAAAAAAAA_0/PmAMM2ON7Ks/s1600/graph4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 228px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcSKOECK3I/AAAAAAAAA_0/PmAMM2ON7Ks/s400/graph4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496381837011987314" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;W zasadzie jest to już koniec definiowania znaczników Open Graph. Warto jednak dodać jeszcze przycisk 'Lubię to!' pod naszymi wpisami. By to zrobić należy w kodzie odszukać 'stopkę' naszych wiadomości. Jest ona oznaczona jako: &lt;span style="font-weight:bold;"&gt;&amp;lt;div class='post-footer'&amp;gt;&lt;/span&gt;. Ramkę przycisku 'Lubię to' należy umieścić zaraz pod tym znacznikiem. Całość powinna wyglądać następująco. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcUb6uLmlI/AAAAAAAAA_8/eQMl5j0hqgE/s1600/graph5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 151px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TEcUb6uLmlI/AAAAAAAAA_8/eQMl5j0hqgE/s400/graph5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496384340080958034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oczywiście sam &lt;a href="http://developers.facebook.com/docs/reference/plugins/like"&gt;kod można wygenerować&lt;/a&gt; na stronie prezentującej przycisk Like. Wartość adresu strony powinna być ustawiona na wartość &lt;span style="font-weight:bold;"&gt;'data:post.url'&lt;/span&gt;. Znaczniki należy przekonwertować zgodnie z wzorem oraz pamiętać o prefixie &lt;span style="font-weight:bold;"&gt;'expr'&lt;/span&gt; w atrybucie &lt;span style="font-weight:bold;"&gt;'src'&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #D8FBC8;"&gt;W wyrażaniu należy dodać także spacje przy znakach '+' w otoczeniu zmiennej 'data:post.url' (nie ma tego na obrazku). W przeciwnym wypadku blog nie pokaże się poprawnie. Więcej informacji dodałem &lt;a href="http://deepdiveinto.blogspot.com/2010/07/nowa-wersja-przycisku-facebook-like.html"&gt;w kolejnym wpisie wyjaśniającym&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Zapisujemy nasz szablon i testujemy wynik. Najlepiej poprawność sprawdzić za pomocą narzędzia &lt;a href="http://developers.facebook.com/tools/lint/"&gt;Facebook URL Linter&lt;/a&gt;. Wpisujemy w nim zarówno adres strony głównej jak i przykładowego wpisu. Całość pokazuje jakie dokładnie informacje znajdą się w grafie gdy strona do niego dołączy. &lt;br /&gt;&lt;br /&gt;Jak widać całość zabiera kilka minut (w przeciwieństwie do napisania tak długiego opisu). Jeżeli się komuś wpis spodobał zachęcam do kliknięcia w 'Lubię to'. Będę wiedział że tak szczegółowe tutoriale ma sens umieszczać na blogu. Choć następny będzie raczej znów w tematyce Eclipse lub OSGi.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Jak zwykle zachęcam także do wypróbowania wtyczki dla Google Chrome - &lt;a href="http://www.facebook.com/pages/Facebook-Like-Plus/123673600982387"&gt;Facebook Like Plus&lt;/a&gt;.&lt;br /&gt;Zainstalowało ją już ponad 450 osób z czego 100 osób zostało fanami :)&lt;/small&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7818656865002579438?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7818656865002579438/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7818656865002579438' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7818656865002579438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7818656865002579438'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/07/jak-dodac-znaczniki-open-graph-na-bloga.html' title='Jak dodać znaczniki Open Graph na bloga [Blogspot]'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/TERjSusGNrI/AAAAAAAAA_U/7DHavgzE-r4/s72-c/open_graph_protocol_logo.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-802396968073233627</id><published>2010-06-29T12:27:00.016+02:00</published><updated>2010-08-22T14:39:40.256+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><title type='text'>'Eclipse w Polsce' w serwisie Facebook</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.facebook.com/eclipse.polska"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TCnLKGPgRiI/AAAAAAAAA9w/Te7SbZYqfQc/s400/facebook_logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5488140995262432802" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.facebook.com/eclipse.polska"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TCnLKGPgRiI/AAAAAAAAA9w/Te7SbZYqfQc/s400/facebook_logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5488140995262432802" /&gt;&lt;/a&gt;&lt;/span&gt;Właśnie wróciłem z Krakowa w którym odbyła się kolejna edycja spotkania &lt;a href="http://deepdiveinto.blogspot.com/2010/06/eclipse-demo-camp-2010-krakow.html"&gt;Eclipse Demo Camp&lt;/a&gt;. Podczas spotkania pojawiło się kilka fajnych tematów miałem także okazję po raz kolejny nakłaniać słuchaczy do wypróbowania środowiska XText. Samo spotkanie opisze jednak w kolejnym wpisie jak sobie wszystko poukładam w głowie. Teraz czas na Facebooka :)&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;W ciągu ostatnich 4 lat wspólnie z wami zorganizowaliśmy &lt;a href="http://wiki.eclipse.org/Regional_Communities/Poland"&gt;sporo spotkań z cyklu EDC&lt;/a&gt;. Celem tych spotkań było nie tylko nakłonienie ludzi by wypróbowali technologie z rodziny Eclipse ale przede wszystkim chęć zbudowania polskiej społeczności związanej z tym tematem. Coś jak &lt;a href="http://www.java.pl/"&gt;JUG’i&lt;/a&gt; które od wielu lat grupują pasjonatów języka Java. We Wrocławiu zorganizowaliśmy dwa takie spotkania i zauważyłem że nie do końca wszystko działa tak jak planowałem.&lt;br /&gt;&lt;br /&gt;Ludzie zapisywali się na spotkania, przychodzili, dyskutowali (często do nocy jak podczas &lt;a href="http://deepdiveinto.blogspot.com/2009/11/eclipse-demo-camp-we-wrocawiu-edycja.html"&gt;'EDC 2009 Wrocław'&lt;/a&gt; które trwało prawie 7h!)... Sukces? Nie do końca. Po pierwsze nie udało mi się kontaktów z EDC utrzymać na dłużej, po drugie na kolejnym spotkaniu nie kojarzyłem osób które były na poprzednim. Po prostu za bardzo byłem zajęty organizacją całości, przygotowywaniem kawy i herbaty by móc kogokolwiek zapamiętać (nie zawsze miałem czas by nawet spokojnie posłuchać prezentacji)&lt;br /&gt;    &lt;br /&gt;Postanowiliśmy to zmienić. Po dyskusji podczas EDC z &lt;a href="http://polishineclipse.blogspot.com/"&gt;Szymonem i Tomkiem&lt;/a&gt; zdecydowaliśmy się utworzyć 'społecznościową stronę' w serwisie Facebook: &lt;a href="http://www.facebook.com/eclipse.polska"&gt; http://www.facebook.com/eclipse.polska&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Chcemy by strona ta była miejscem w którym każdy będzie mógł się dowiedzieć co ciekawego dzieje się w polskiej społeczności Eclipse. Zapisać się na kolejne EDC oraz inne spotkania/wykłady na których będzie poruszana ta tematyka. Każdy kto dołączy do społeczności będzie mógł wrzucać na tablicę ważne informacje dotyczące platformy (zdjęcia, wideo, linki etc). Możliwa będzie także dyskusja na różne tematy za pomocą forum dysksyjnego Facebooka (choć fajnie byłoby także dodać jako zakładkę istniejące &lt;a href="http://www.eclipse.org/forums/index.php?t=thread&amp;frm_id=158&amp;"&gt;forum&lt;/a&gt; - wie może ktoś jak to zrobić?)&lt;br /&gt;&lt;br /&gt;No i na koniec najważniejsze czyli tagowanie zdjęć. Chcemy zachęcić wszystkich którzy uczestniczyli w spotkaniach EDC w ciągu ostatnich kilku lat by oznaczyli się na archiwalnych zdjęciach. Pozwoli nam to dowiedzieć się kto uczestniczył w spotkaniach i jakoś wspólnie stworzyć solidne podstawy społeczności Eclipse w Polsce. Nie znaleźliśmy zdjęć ze wszystkich spotkań (część galerii jest pusta) ale postaramy się to uzupełnić. Jeżeli ktoś ma takie zdjęcia prosiłbym o kontakt na 'deepdiveinto' na gmail. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Wszystkich zainteresowanych rozwojem środowiska Eclipse serdecznie zapraszamy :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.facebook.com/eclipse.polska"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 286px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/TCnMn2LY0YI/AAAAAAAAA94/P2i7mI4b3X8/s320/wall.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5488142605857902978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.facebook.com/eclipse.polska"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 183px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/TCnMu-eK5bI/AAAAAAAAA-A/Eb4cAmLl7jo/s320/zdjecia.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5488142728343250354" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-802396968073233627?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/802396968073233627/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=802396968073233627' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/802396968073233627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/802396968073233627'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/06/eclipse-w-polsce-w-serwisie-facebook.html' title='&apos;Eclipse w Polsce&apos; w serwisie Facebook'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/TCnLKGPgRiI/AAAAAAAAA9w/Te7SbZYqfQc/s72-c/facebook_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-6516961708192325712</id><published>2010-06-25T13:44:00.009+02:00</published><updated>2010-08-22T14:44:58.773+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><title type='text'>Eclipse Demo Camp 2010 - Kraków</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/THEbKA5sV0I/AAAAAAAABCA/RZhqsXbUtCM/s1600/eclipse-logo.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 117px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/THEbKA5sV0I/AAAAAAAABCA/RZhqsXbUtCM/s200/eclipse-logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5508213678105450306" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/THEbKA5sV0I/AAAAAAAABCA/RZhqsXbUtCM/s1600/eclipse-logo.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/THEbKA5sV0I/AAAAAAAABCA/RZhqsXbUtCM/s200/eclipse-logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5508213678105450306" /&gt;&lt;/a&gt;&lt;/span&gt;Już jutro odbędzie się kolejne spotkanie z cyklu Eclipse Demo Camp. W imieniu organizatorów zapraszam każdego zainteresowanego technologiami związanymi ze środowiskiem Eclipse.&lt;span class="fullpost"&gt; &lt;br /&gt;&lt;br /&gt;Prezentacje będą bardzo krótkie ponieważ główny nacisk położony będzie na dyskusje tematyczne. Każdy zainteresowany będzie miał więc możliwość uzyskania odpowiedzi na swoje pytania związane z technologiami Eclipse. Ja z mojej strony obiecuję odpowiadać na wszystkie pytania dotyczące technologii związanych z modelowaniem, językami specjalizowanymi (nie tylko na temat xText)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Krakow"&gt;http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Krakow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td width="130"&gt;11.00 - 11.30&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;New and Noteworthy in Eclipse Helios&lt;/span&gt;, Platform Workspace Team&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11.30 - 11.45&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;Eclipse 4.0 and e4&lt;/span&gt;, Tomasz Żarna, Platform Workspace Team&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12.15 - 12.30&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;OSGI in the cloud&lt;/span&gt;, Krzysztof Daniel, IBM Eclipse Support Center&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12.30 - 12.45&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;Cloud computing&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13.30 - 13.45&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;BIRT - Raporty w Eclipsie&lt;/span&gt;, Łukasz Pobereźnik, IBM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13.45 - 14.00&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;XText&lt;/span&gt;, Grzegorz Białek&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14.30 - 14.45&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;Eclipse Communication Framework&lt;/span&gt;, Paweł Pogorzelski, Platform Workspace Team&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14.45 - 15.00&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;GWT development using Eclipse&lt;/span&gt;, Szymon Brandys, Platform Workspace Team&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-6516961708192325712?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/6516961708192325712/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=6516961708192325712' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6516961708192325712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6516961708192325712'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/06/eclipse-demo-camp-2010-krakow.html' title='Eclipse Demo Camp 2010 - Kraków'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/THEbKA5sV0I/AAAAAAAABCA/RZhqsXbUtCM/s72-c/eclipse-logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5423775367908756511</id><published>2010-06-06T15:31:00.004+02:00</published><updated>2010-08-22T14:46:25.520+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>ARText - prezentacja możliwości xText</title><content type='html'>Na blogu &lt;a href="http://blog.efftinge.de/2010/05/screencast-xtext-in-automotive-industry.html"&gt;Svena Efftinge'a&lt;/a&gt; pojawiła się niedawno fajna prezentacja możliwości frameworku &lt;a href="http://www.eclipse.org/Xtext/"&gt;xText&lt;/a&gt; w wykonaniu BMW. Zaprezentowane jest środowisko ARText dla platformy &lt;a href="http://www.autosar.org/index.php?p=1&amp;up=0&amp;uup=0&amp;uuup=0"&gt;AUTOSAR&lt;/a&gt; która od kilku lat jest standardem w przemyśle motoryzacyjnym. Oprócz możliwości biblioteki pokazuje o ile prostsze jest konfigurowanie systemu z użyciem specjalizowanego języka zamiast złożonego XML'a.&lt;span class="fullpost"&gt; &lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12080038&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=12080038&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5423775367908756511?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5423775367908756511/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5423775367908756511' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5423775367908756511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5423775367908756511'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/06/artext-prezentacja-mozliwosci-xtext.html' title='ARText - prezentacja możliwości xText'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-901617240448623722</id><published>2010-06-02T12:35:00.027+02:00</published><updated>2010-08-22T14:55:11.026+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Jak "włamać się" do obcego bundla w OSGi</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.slideshare.net/caniszczyk/osgi-best-and-worst-practices"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 210px; height: 213px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/TAeDZ0p6A8I/AAAAAAAAA9A/064IsTfGbhc/s320/osgi.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478491951373878210" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.slideshare.net/caniszczyk/osgi-best-and-worst-practices"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/TAeDZ0p6A8I/AAAAAAAAA9A/064IsTfGbhc/s320/osgi.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478491951373878210" /&gt;&lt;/a&gt;&lt;/span&gt;Przeglądając swojego bloga zauważyłem że od dłuższego czasu nie pojawiały się na nim tematy stricte techniczne. Spowodowane to było między innymi małą ilością czasu. Dobrze byłoby to zmienić by blog zachował swój pierwotny charakter. Ponieważ ostatnie kilka lat spędziłem pracując nad rozwojem technologii Eclipse postanowiłem zacząć od tej tematyki.&lt;span class="fullpost"&gt; &lt;br /&gt;&lt;br /&gt;Temat dzisiejszy to integracja oprogramowania w modelu OSGi. Oczywiście nie będę tutaj opisywał mechanizmu ponieważ jest to bezcelowe. Istnieje setka tutoriali która wyjaśnia co i jak działa. Tutoriale te jednak zazwyczaj kończą się na prostych przykładach a z perspektywy pracy nad projektami modularnymi wiem że to zdecydowanie za mało. To co w 90% jest błogosławieństwem, to w 10% jest problemem. Jednym z takich tematów jest mechanizm ukrywania API.&lt;br /&gt;&lt;br /&gt;Ukrywanie klas jest kluczowym aspektem opracowania dobrego API które będzie współpracowało przez lata z produktami rozwijanymi przez inne firmy. Dostawcy bibliotek określają które elementy kodu są publiczne a które prywatne. Co jednak gdy tworzymy zaawansowaną integrację systemów wykraczającą poza publiczne API? To ryzykowna sprawa jednak w realnych projektach czasami nieunikniona. W OSGi klasy z pakietów prywatnych są dla nas niedostępne... do czasu :)&lt;br /&gt;&lt;br /&gt;Przykładowym scenariuszem może być próba integracji własnych narzędzi z edytorem JBoss Drools IDE którą robiłem kilka lat temu. Biblioteka ta praktycznie wszystkie pakiety miała prywatne. Między innymi pakiet w którym znajduje się klasa edytora którą byłem zainteresowany jako potencjalnym komponentem w multi-edytorze. Jak się do niej dostać? Istnieją dwie metody: "studencka" i poprawna. &lt;br /&gt;&lt;br /&gt;Studencka polega na modyfikacji biblioteki i jak się każdy domyśla nie jest to najlepsze rozwiązanie (nawet jeżeli pozwala na to licencja). Zmodyfikowana biblioteka trafia na nasze serwery więc na nas spoczywa odpowiedzialność za jej dalsze uaktualnienia, zgłoszenia błędów etc. Znacznie podnosi to koszty utrzymania takiego rozwiązania. Dodatkowo coraz więcej bibliotek jest podpisanych certyfikatami by wykluczyć nieautoryzowane modyfikacje. &lt;br /&gt;&lt;br /&gt;Jak więc poprawnie zaimplementować modyfikacje pliku Manifest.MF tak by nie modyfikować samego bundla? Odpowiedzią jest mechanizm 'fragments' platformy OSGi. Zazwyczaj służy on do dodawania plików z tłumaczeniami, bibliotek dla różnych systemów itp. Tym razem użyjemy go do naszego "włamania" i upublicznienia prywatnych pakietów. &lt;br /&gt;&lt;br /&gt;By całość zademonstrować przygotowałem &lt;a href="http://sites.google.com/site/deepdiveinto/Home/PrivatePackage.zip?attredirects=0&amp;d=1"&gt;następujący przykład&lt;/a&gt;. Firma 'Private Library Company' dostarczyła nam bundla w którym między innymi znajduje się klasa potrafiąca zwrócić nam cały świat :) Niestety klasa znajduje się w pakiecie wewnętrznym który nie jest udostępniony w manifeście.&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TAd1o1BFKkI/AAAAAAAAA8I/5sqAJFkFRYU/s1600/world.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 137px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TAd1o1BFKkI/AAAAAAAAA8I/5sqAJFkFRYU/s320/world.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478476816006326850" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/TAd2NWikEdI/AAAAAAAAA8Q/by_ZVvR6GmM/s1600/world_manifest.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 87px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/TAd2NWikEdI/AAAAAAAAA8Q/by_ZVvR6GmM/s320/world_manifest.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478477443480424914" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Nasza firma 'Client Plugin Company' przygotowuje aplikację dostaczającą usługę której zadaniem jest pozdrowienie całego świata. Musimy więc dostać się do klasy która potrafi zwrócić nam 'świat'. Posiadamy oczywiście zależność na bibliotekę jednak nie jest to wystarczające. Kod nie będzie działał ponieważ klasa 'World' nie jest widoczna. &lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TAd3inZO6zI/AAAAAAAAA8Y/06K7R2s5EOI/s1600/hello.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 241px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/TAd3inZO6zI/AAAAAAAAA8Y/06K7R2s5EOI/s320/hello.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478478908293573426" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TAd389-Lq3I/AAAAAAAAA8g/CjCtBMbbW9M/s1600/hello_manifest.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 102px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TAd389-Lq3I/AAAAAAAAA8g/CjCtBMbbW9M/s320/hello_manifest.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478479361030728562" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;By to zmienić musimy przygotować odpowiednie rozszerzenie dla posiadanej biblioteki. Wykorzystamy w tym przypadku mechanizm fragmentów bundli. Z założenia mechanizm ten nie może modyfikować elementów, dostarczać nowego API jednak do naszego "włamania" nadaje się jak najbardziej. Tworzymy projekt fragmentu rozszerzający bundle biblioteki, możemy go nazwać 'privatelibrary.customization'. Następnie tworzymy w nim ścieżkę identyczną z tą którą chcemy upublicznić i zakładamy w niej pustą klasę np. o nazwie 'PackagePublisher'. Po utworzeniu klasy pojawia nam się możliwość upublicznienia jej pakietu w manifeście fragmentu. Platforma OSGi by obsłużyć naszą publiczną klasę dodaje 'regułę publiczności' dla wybranego pakietu dla nadrzędnej biblioteki. &lt;br /&gt;&lt;br /&gt;Tym samym w projekcie klienckim uzyskujemy dostęp do interesującej nas klasy prywatnej 'World'. By całość działała nasz dodatek musi być dostępny dla platformy. Jeżeli go usuniemy całość ponownie przestanie się kompilować a jeżeli element będzie niedostępny w ramach runtime pojawi się wyjątek ClassNotFound przy próbie odwołania się do klasy świata. Oczywiście nasza klasa 'PackagePublisher' którą upubliczniliśmy w tym pakiecie nie jest publicznie dostępna. Nie zezwala na to kontrakt mechanizmu fragmentów. Poniżej zrzut z poprawnie zdefiniowanego manifestu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/TAd-TuiRSiI/AAAAAAAAA8o/y2Uwrt8DXx8/s1600/customization_manifest.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 86px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/TAd-TuiRSiI/AAAAAAAAA8o/y2Uwrt8DXx8/s320/customization_manifest.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478486349093882402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mam nadzieję że całość nie jest zbyt zagmatwana. Starałem się zrobić na tyle długi wstęp by całość wyjaśnić łącznie ze scenariuszem kiedy takie obejścia stosujemy. Oczywiście nie nakłaniam nikogo do odwoływania się do klas prywatnych w zewnętrznych bibliotekach. Takie sytuacje nigdy nie powinny być rutyną. Jeżeli jednak jest to koniczne z punktu widzenia biznesu warto wiedzieć jak to zrobić poprawnie. Gotowy projekt dostępny jest pod adresem: &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sites.google.com/site/deepdiveinto/Home/PrivatePackage.zip?attredirects=0&amp;d=1"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 32px; height: 32px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/TAeHMRXVqbI/AAAAAAAAA9I/qOpt7YngnwU/s320/disk.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5478496116608969138" /&gt;http://sites.google.com/site/deepdiveinto/Home/PrivatePackage.zip?attredirects=0&amp;d=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Obrazek z wróżką pochodzi z prezentacji: &lt;a href="http://www.slideshare.net/caniszczyk/osgi-best-and-worst-practices"&gt;OSGi Best and Worst Practices&lt;/a&gt;&lt;br /&gt;Jak zawsze zachęcam także każdego do wypróbowania dodatku &lt;a href="https://chrome.google.com/extensions/detail/jgjakgajhhmplimegbmiimpkbmmmjckh"&gt;Facebook Like Plus&lt;/a&gt;&lt;/small&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-901617240448623722?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/901617240448623722/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=901617240448623722' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/901617240448623722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/901617240448623722'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/06/jak-wamac-sie-do-obcego-bundla-w-osgi.html' title='Jak &quot;włamać się&quot; do obcego bundla w OSGi'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/TAeDZ0p6A8I/AAAAAAAAA9A/064IsTfGbhc/s72-c/osgi.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5998625909806744940</id><published>2010-05-25T19:07:00.012+02:00</published><updated>2010-08-22T14:56:59.922+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google chrome'/><title type='text'>Google Chrome 5.0 - diabelnie szybka przeglądarka :)</title><content type='html'>Przed chwilą pojawiła się nowa wersja przeglądarki &lt;a href="http://www.google.com/chrome/?hl=pl"&gt;Google Chrome&lt;/a&gt;. Co można o niej powiedzieć? Jest &lt;a href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S_wcjAmG_GI/AAAAAAAAA74/zL_MGnznrko/s1600/google+chrome+5.jpg"&gt;diabelnie szybka&lt;/a&gt; :) Pomimo że używam kolejnych wersji praktycznie od samego początku (zawsze była liderem) to przy tej wersji czuć spory skok wydajności. Czytnik Google Reader nagle przestał zamulać. GUI działa na tyle szybko że trudno się przyzwyczaić. Nie sądziłem że zmiana może być zauważalna :)&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://clients.futuremark.com/peacekeeper/index.action"&gt;Futuremark Peacekeeper&lt;/a&gt;:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S_wcjAmG_GI/AAAAAAAAA74/zL_MGnznrko/s1600/google+chrome+5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S_wcjAmG_GI/AAAAAAAAA74/zL_MGnznrko/s400/google+chrome+5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5475282634756521058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/S_wcckCRggI/AAAAAAAAA7w/_wXsJK7SVeo/s1600/chrome+table.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 69px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/S_wcckCRggI/AAAAAAAAA7w/_wXsJK7SVeo/s400/chrome+table.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5475282524010807810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jednak Google Chrome to nie tylko szybkość i &lt;a href="http://deepdiveinto.blogspot.com/2010/03/pwn2own-2010-google-chrome-ponownie.html"&gt;sandbox&lt;/a&gt;. To także kolejne dodatki w zakładce deweloperskiej np. podgląd LocalStorage z którego korzystam w &lt;a href="http://deepdiveinto.blogspot.com/2010/04/facebook-like-plus-czyli-moj-pierwszy.html"&gt;Facebook Like Plus&lt;/a&gt;. Pojawiło się także wsparcie dla kilku nowych mechanizmów z HTML5. Dziś zrobię testy mechanizmu Drag&amp;Drop by dodać je do menu. Ciekawie zapowiada się także &lt;a href="http://spektom.blogspot.com/2010/05/html5-geolocation-api-is-scaring-me.html"&gt;geolokalizacja&lt;/a&gt; jako jedna linijka w JavaScript. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/S_wfmOngmFI/AAAAAAAAA8A/9Jy0jpM-Izg/s1600/chrome+storage.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 195px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/S_wfmOngmFI/AAAAAAAAA8A/9Jy0jpM-Izg/s400/chrome+storage.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5475285988594980946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Listę ważniejszych zmian można znaleźć pod tym adresem:&lt;br /&gt;&lt;a href="http://chrome.blogspot.com/2010/05/new-chrome-stable-release-welcome-mac.html"&gt;http://chrome.blogspot.com/2010/05/new-chrome-stable-release-welcome-mac.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Przy okazji zachęcam każdego do wypróbowania dodatku Facebook Like Plus. Z dodatku korzysta już ponad 200 osób (50 fanów na fanpage :) )&lt;br /&gt;&lt;a href="https://chrome.google.com/extensions/detail/jgjakgajhhmplimegbmiimpkbmmmjckh"&gt;Galeria dodatków Google Chrome&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/pages/Facebook-Like-Plus/123673600982387"&gt;Strona aplikacji&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5998625909806744940?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5998625909806744940/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5998625909806744940' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5998625909806744940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5998625909806744940'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/05/google-chrome-50-diabelnie-szybka.html' title='Google Chrome 5.0 - diabelnie szybka przeglądarka :)'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-Hz5kL7u4E4/S_wcjAmG_GI/AAAAAAAAA74/zL_MGnznrko/s72-c/google+chrome+5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-9133874979776667228</id><published>2010-04-30T20:48:00.011+02:00</published><updated>2010-08-22T18:00:05.887+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open graph'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='google chrome'/><title type='text'>Facebook Like Plus, czyli mój pierwszy plugin dla Google Chrome</title><content type='html'>Kilka dni temu udostępniłem &lt;a href="https://chrome.google.com/extensions/detail/jgjakgajhhmplimegbmiimpkbmmmjckh"&gt;wersję  'beta' swojej pierwszej wtyczki&lt;/a&gt; dla przeglądarki Google Chrome. Za cel postawiłem sobie maksymalne uproszenie procesu rekomendacji dowolnej treści w Internecie oraz uporządkowanie coraz większej liczby powiadomień które przychodzą do nas z serwisu Facebook.&lt;span class="fullpost"&gt; &lt;br /&gt;&lt;br /&gt;Od ubiegłego tygodnia &lt;a href="http://deepdiveinto.blogspot.com/2010/04/facebook-otwiera-swoje-api-dla-kazdego.html"&gt;każdy z nas może rekomendować&lt;/a&gt; swoim znajomym dowolne strony w Internecie. Rekomendacja taka możliwa jest za pomocą specjalnej kontrolki 'Lubię to'. Jeżeli kontrolka taka znajdzie się na stronie umożliwia ona nie tylko dodanie linku do serwisu Facebook ale także pokaże kto z naszych znajomych tą stronę nam poleca. Twórcy serwisu Facebook co prawda poinformowali na &lt;a href="http://www.facebook.com/facebook"&gt;swoim blogu&lt;/a&gt; o tym że już 50.000 stron skorzystało z nowego API jednak stron w Internecie są miliony. Zanim wszystkie popularne serwisy zintegrują się z tym API (o ile to zrobią) minie jeszcze sporo czasu. &lt;br /&gt;&lt;br /&gt;Postanowiłem tą sytuację wykorzystać i zrobić wtyczki dla przeglądarek Google Chrome oraz Firefox które umożliwią rekomendowanie dowolnej strony. Strona taka może być przykładowo stroną jakiegoś filmu w serwisie Stopklatka lub ciekawym artykułem z serwisu Gazeta.pl. Rekomendacja taka trafi do serwisu Facebook oraz będzie wyświetlana naszym znajomym odwiedzającym tą stronę. Wtyczka dodatkowo jest odpowiedzialna za posegregowanie powiadomień jakie do nas trafiają na poszczególne serwisy które były ich źródłem. Ułatwia to znacznie wyszukanie powiadomień danego typu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S9vt9rx1WaI/AAAAAAAAA58/vuvfB55snb0/s1600/screen1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 257px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S9vt9rx1WaI/AAAAAAAAA58/vuvfB55snb0/s320/screen1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466224216723773858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Obsługa całości jest banalnie prosta. Gdy odwiedzimy dowolną stronę internetową którą chcielibyśmy polecić lub dla której chcielibyśmy sprawdzić czy ktoś nam ją polecił wystarczy otworzyć panel wtyczki. W nagłówku znajduje się przycisk 'Lubię to' związany z adresem strony w przeglądarce. Jeżeli ktoś z naszych znajomych polecił nam ten URL pokaże się odpowiednia informacja.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/S9vuKHtI70I/AAAAAAAAA6E/O9QMi4oK1BU/s1600/screen+2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 113px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/S9vuKHtI70I/AAAAAAAAA6E/O9QMi4oK1BU/s320/screen+2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466224430378708802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Poniżej znajduje się podsumowanie aktywności naszych znajomych dla całego serwisu na którym znajduje się dana strona. Możemy zobaczyć co nasi znajomi ostatnio nam polecali oraz co ostatnio było najczęściej polecane przez wszystkich. Jeżeli nasi znajomi nic nam nie polecali widok wyświetlał będzie ogólne rekomendacje. W liście znajdują się linki do poszczególnych pozycji jednak w aktualnej wersji &lt;span style="font-weight:bold;"&gt;są one jeszcze nieaktywne&lt;/span&gt;.  Mam nadzieję że w kolejnej wersji uda mi się poprawić ten błąd.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S9vuQ8Bs4wI/AAAAAAAAA6M/iW1Q99NVYqs/s1600/screen3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 266px; height: 320px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S9vuQ8Bs4wI/AAAAAAAAA6M/iW1Q99NVYqs/s320/screen3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466224547502809858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ostatnim elementem jest sekcja pokazująca powiadomienia udostępnione przez naszych znajomych z podziałem na serwisy źródłowe. Ułatwia to szybkie wyszukiwanie wpisów. Dzięki temu możemy zdecydowanie łatwiej odszukać ciekawe wpisy które utonęły w setkach bezwartościowych powiadomień generowanych przykładowo przez FarmVille. Lista serwisów w następnej wersji &lt;span style="font-weight:bold;"&gt;będzie w pełni edytowalna&lt;/span&gt; by każdy mógł ją sobie dostosować do własnych potrzeb.&lt;br /&gt;&lt;br /&gt;Zachęcam do testów, wtyczka znajduje się galerii dodatków przeglądarki Google Chrome. Do galerii można dostać się także poprzez pomocniczy adres "http://lubimyto.info"&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Facebook Like Plus&lt;/span&gt;&lt;br /&gt;&lt;a href="http://lubimyto.info/"&gt;http://lubimyto.info/&lt;/a&gt;&lt;br /&gt;&lt;a href="https://chrome.google.com/extensions/detail/jgjakgajhhmplimegbmiimpkbmmmjckh"&gt;https://chrome.google.com/extensions/detail/jgjakgajhhmplimegbmiimpkbmmmjckh&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-9133874979776667228?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/9133874979776667228/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=9133874979776667228' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/9133874979776667228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/9133874979776667228'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/04/facebook-like-plus-czyli-moj-pierwszy.html' title='Facebook Like Plus, czyli mój pierwszy plugin dla Google Chrome'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-Hz5kL7u4E4/S9vt9rx1WaI/AAAAAAAAA58/vuvfB55snb0/s72-c/screen1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-21760409351163831</id><published>2010-04-22T21:20:00.020+02:00</published><updated>2010-08-22T18:05:57.364+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open graph'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><title type='text'>Facebook otwiera swoje API, dla każdego!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.facebook.com/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/S9HOiCkxa9I/AAAAAAAAA5c/DMvVGhr074c/s200/facebook_logo+(1).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5463374907179101138" /&gt;&lt;/a&gt;Tego chyba nikt się nie spodziewał. &lt;a href="http://www.facebook.com/"&gt;Facebook&lt;/a&gt; który od kilku lat kojarzony był głównie z zasysaniem Internetu do środka zdecydował się na otwarcie swojego API &lt;a href="http://developers.facebook.com/docs/guides/web"&gt;dla każdego serwisu w internecie&lt;/a&gt;. Podczas konferencji &lt;a href="http://apps.facebook.com/feightlive/"&gt;Facebook F8&lt;/a&gt; został zaprezentowany zupełnie nowy mechanizm który może poważnie wpłynąć na przyszłość Internetu. Moim zdaniem zmiana ta jest równie znacząca jak powstanie wyszukiwarki Google która zakończyła erę ręcznego dodawania stron do katalogów.&lt;br /&gt;&lt;br /&gt;Rozwiązanie to nazywa się on &lt;a href="http://developers.facebook.com/docs/reference/api/"&gt;OpenGraph API&lt;/a&gt; i umożliwia powiązanie danych semantycznych takich jak lokalizacja, relacje między ludźmi czy opnie na dowolny temat z otwartą przestrzenią adresów URL całego Internetu. &lt;br /&gt;&lt;br /&gt;Do tej pory sieć powiązań pomiędzy ludźmi, stronami, produktami zamknięta była w swoistym 'słoiku' o nazwie 'facebook.com.' Jeżeli ktoś chciał by osoby z tej sieci weszły w interakcję z jego stronami musiał stworzyć w tym 'słoiku' własną mini stronę. Informowała ona osoby będące w środku o tym że twoja strona lub produkt istnieje gdzieś za zewnątrz. Interakcje takie jak komentarze, opinie, czy uniwersalne 'lubię to' dotyczyły jednak w dalszym ciągu tylko elementów w ramach 'słoika'. Dzięki mechanizmom OpenGraph 'słoik' ten został rozbity. &lt;br /&gt;&lt;br /&gt;Teraz każda strona w Internecie (a w zasadzie każdy URL) może stać się elementem sieci semantycznej której nadrzędnymi węzłami są użytkownicy. To spora zmiana w świecie w którym do tej pory istniały jedynie relacje &lt;span style="font-weight:bold;"&gt;'strona-strona'&lt;/span&gt; a użytkownicy byli poza ramami systemu. Nowe podejście to zmienia. W centrum jest użytkownik który samodzielnie decyduje o utworzeniu relacji &lt;span style="font-weight:bold;"&gt;'użytkownik-strona'&lt;/span&gt;. I to te relacje są kluczowe. Twórcy serwisów mogą jedynie zachęcić użytkowników by takie relacje tworzyli co przyciągnie do serwisu kolejne osoby. W tym celu system można odpytać o fragment sieci która jest z użytkownikiem związana. Np:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;czy jego znajomi coś komentowali w naszym serwisie?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;czy w pobliżu jego lokalizacji znajduje się jakiś pub który lubią jego znajomi?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;czy jego znajomi rekomendują mu jakieś produkty w naszym sklepie?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;itp...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To tylko najprostsze ze scenariuszy, realizowane za pomocą &lt;a href="http://developers.facebook.com/plugins"&gt;gotowych kontrolek&lt;/a&gt;. Deweloperzy mogą za pomocą otwartego &lt;a href="http://developers.facebook.com/docs/reference/api/"&gt;API&lt;/a&gt; (bazowanego na wzorcu &lt;a href="http://en.wikipedia.org/wiki/REST"&gt;REST&lt;/a&gt;) odpytać sieć o inne elementy grafu do których uzyskają autoryzację dzięki &lt;a href="http://oauth.net/"&gt;OAuth 2.0&lt;/a&gt;. Wywołanie zapytania do sieci Facebook jest równie łatwe jak zwykłe wywołanie zapytania do bazy danych. Niektóre zapytania wymagają autoryzacji, o inne (publiczne) można zapytać w kontekście globalnym. Zapytania bazujące na lokalizacji zostaną udostępnione w najbliższych tygodniach (podany został format meta-danych który należy umieścić w opisie węzła).&lt;br /&gt;&lt;br /&gt;Przykładowe zapytania mogą wyglądać następująco. Warto zwrócić tutaj na strukturę zapytania. Element określający użytkownika jest nadrzędny w stosunku do pozostałych elementów typu strona internetowa:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://graph.facebook.com/grzegorz.bialek"&gt;https://graph.facebook.com/grzegorz.bialek&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;https://graph.facebook.com/me/&lt;span style="font-weight:bold;"&gt;friends&lt;/span&gt;?access_token=...&lt;br /&gt;https://graph.facebook.com/me/&lt;span style="font-weight:bold;"&gt;home&lt;/span&gt;?access_token=...&lt;br /&gt;https://graph.facebook.com/me/&lt;span style="font-weight:bold;"&gt;feed&lt;/span&gt;?access_token=...&lt;br /&gt;https://graph.facebook.com/me/&lt;span style="font-weight:bold;"&gt;likes&lt;/span&gt;?access_token=...&lt;br /&gt;https://graph.facebook.com/me/&lt;span style="font-weight:bold;"&gt;movies&lt;/span&gt;?access_token=...&lt;br /&gt;https://graph.facebook.com/me/&lt;span style="font-weight:bold;"&gt;books&lt;/span&gt;?access_token=...&lt;br /&gt;https://graph.facebook.com/me/&lt;span style="font-weight:bold;"&gt;events&lt;/span&gt;?access_token=...&lt;br /&gt;&lt;br /&gt;Możliwe są też standardowe zapytania o informacje umieszczane przez użytkowników. Zapytanie o posty w których mowa jest o nurkowaniu wyglądać będzie następująco. Co ciekawe wygląda na to że jest to wyszukiwanie pełnotekstowe a nie oparte o indeksowane znaczniki tak jak to ma miejsce w Twitter oraz Blip.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://graph.facebook.com/search?q=nurkowanie&amp;type=post"&gt;https://graph.facebook.com/search?q=nurkowanie&amp;type=post&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Całość to wręcz nieograniczone możliwości budowania aplikacji zupełnie nowego typu. Można nawet zbudować zupełnie nowy wygląd całego serwisu co zademonstrowano podczas warsztatów Facebook Hackatron - &lt;a href="http://www.facebook-me.com/"&gt;Facebook-ME&lt;/a&gt;. &lt;br /&gt; &lt;br /&gt;Tak to wygląda z punktu widzenia dewelopera. Jak jednak wygląda to z punktu widzenia osoby prowadzącej serwis internetowy? Skoro zerwano tutaj z ideą połączeń &lt;span style="font-weight:bold;"&gt;'strona-strona'&lt;/span&gt; to w jaki sposób dodać naszą stronę do 'wirtualnego rejestru'? Całość przebiega w dwóch krokach.&lt;br /&gt;&lt;br /&gt;Żeby nasza strona mogła być traktowana jako węzeł w otwartej sieci &lt;a href="http://developers.facebook.com/docs/opengraph"&gt;powinna zostać do tego przygotowana&lt;/a&gt;. W tym celu należ umieścić informacje opisujące naszą stronę w jej nagłówku. Mogą tam znaleźć się różnorodne informacje które umożliwią odpowiednie potraktowanie strony przez system w momencie włączenia jej do grafu. informacje te opisują czy jest to strona filmu, książki, wydarzenia czy może wspomniana wcześniej restauracja zawierająca dodatkowo swoją lokalizację. Te meta-dane zostaną później wykorzystane do tego by nasza strona trafiła do &lt;a href="http://blog.facebook.com/blog.php?post=382978412130"&gt;odpowiedniej sekcji profilu użytkownika&lt;/a&gt; lub mogła być wyszukana przykładowo z wykorzystaniem lokalizacji. &lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;html xmlns:og="http://opengraphprotocol.org/schema/"&lt;br /&gt;      xmlns:fb="http://www.facebook.com/2008/fbml"&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;The Rock (1996)&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:title" content="The Rock"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:type" content="movie"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;html xmlns:og="http://opengraphprotocol.org/schema/"&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    &amp;lt;meta property="og:latitude" content="37.416343"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:longitude" content="-122.153013"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:street-address" content="1601 S California Ave"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:locality" content="Palo Alto"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:region" content="CA"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:postal-code" content="94304"/&amp;gt;&lt;br /&gt;    &amp;lt;meta property="og:country-name" content="USA"/&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;br /&gt;Jak jednak stronę dodać do grafu? Centralnym mechanizmem zarządzającym są tutaj użytkownicy. Nie ma automatu który skanuje całą sieć w poszukiwaniu nowych stron jak robi to Google. Strona zostanie dodana do grafu w momencie gdy zainteresuje jednego z użytkowników. Gdy zdecyduje się on wybrać opcję &lt;a href="http://developers.facebook.com/docs/reference/plugins/like"&gt;'Lubię to'&lt;/a&gt;. W tym samym momencie utworzy on połączenie pomiędzy adresem URL przekazanym do kontrolki, domeną w jakiej ten przycisk się znajduje oraz użytkownikiem któremu treść się spodobała.&lt;br /&gt;&lt;br /&gt;Całość jak widać jest doskonale przemyślana. Kontrolki dla twórców stron są proste w użyciu. Umieszczając je w serwisie uzyskują oni większe przywiązanie użytkowników. Ludzie wchodząc na główną stronę widzą co w danym serwisie robili jego znajomi. Co najważniejsze nie muszą się w tym serwisie logować, zakładać konta, odnajdywać znajomych etc. Po prostu wchodzą na główną stronę na której nigdy wcześniej nie byli  i widzą że ich znajomi skomentowali tam jakieś artykuły (z kontrolki przykładowo korzysta &lt;a href="http://edition.cnn.com/"&gt;CNN&lt;/a&gt; i &lt;a href="http://developers.facebook.com/showcase/"&gt;kilka innych serwisów&lt;/a&gt;). Każdy z ciekawości zdecyduje się by zostać. Gdy serwis mu się spodoba automatycznie poinformuje swoich znajomych i całość zmieni się w Perpetuum mobile.&lt;br /&gt;&lt;br /&gt;To także nieograniczone możliwości budowania aplikacji. Sporo ludzi ma ciekawe pomysły jednak trudno im przekonać do nich odpowiednią liczbę użytkowników. Ludzie nie logują się w zupełnie nieznanym serwisie. Jeżeli jednak widzą że ich znajomi już tam są, wykonują jakieś akcje to sytuacja wygląda odmiennie. W miejscu nieufności pojawia się ciekawość. Zalogowanie to naciśnięcie jednego przycisku. Przykład &lt;a href="http://www.farmville.com/"&gt;FarmVille&lt;/a&gt; pokazuje że poprzez odpowiednio dużą ilość powiadomień można w ciągu kilku miesięcy ściągnąć do gry lub serwisu 80 milionów osób. Tego nie daje żadna inna platforma programistyczna. Facebook to już &lt;span style="font-weight:bold;"&gt;500 milionów&lt;/span&gt; logowań w ciągu miesiąca (&lt;a href="http://techcrunch.com/2010/04/21/facebook-500-million-visitors-comscore/"&gt;ComScore&lt;/a&gt;) oraz blisko &lt;span style="font-weight:bold;"&gt;4.8 miliona&lt;/span&gt; unikalnych użytkowników z polski (&lt;a href="http://media2.pl/badania/63581-megapanel-luty-2010-kategorie-tematyczne.html"&gt;PBI Megapanel&lt;/a&gt;) a to dopiero początek...&lt;br /&gt;&lt;br /&gt;To naprawdę ciekawe czasy - &lt;span style="font-weight:bold;"&gt;Facebook staje się właśnie integralnym elementem internetu&lt;/span&gt; :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Jeżeli podoba się wam ten post kliknijcie na przycisk 'Lubię to'. Poinformujecie o nim waszych znajomych a ja będę wiedział że nie zmarnowałem czasu pisząc tak długi tekst :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-21760409351163831?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/21760409351163831/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=21760409351163831' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/21760409351163831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/21760409351163831'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/04/facebook-otwiera-swoje-api-dla-kazdego.html' title='Facebook otwiera swoje API, dla każdego!'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-Hz5kL7u4E4/S9HOiCkxa9I/AAAAAAAAA5c/DMvVGhr074c/s72-c/facebook_logo+(1).png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5149755250946536901</id><published>2010-04-11T17:51:00.011+02:00</published><updated>2010-08-22T18:07:40.110+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Krucjata Apple przeciwko językom specjalizowanym</title><content type='html'>&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/S8IY77ZbzsI/AAAAAAAAA4k/qINqwbrT4es/s1600/images.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 124px; height: 124px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/S8IY77ZbzsI/AAAAAAAAA4k/qINqwbrT4es/s320/images.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5458953116162182850" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="shortpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/S8IY77ZbzsI/AAAAAAAAA4k/qINqwbrT4es/s1600/images.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/S8IY77ZbzsI/AAAAAAAAA4k/qINqwbrT4es/s320/images.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5458953116162182850" /&gt;&lt;/a&gt;&lt;/span&gt;Przeglądając dziś sieć znalazłem zaskakującą informację. Firma Apple w swoim najnowszym systemie operacyjnym zabroniła uruchamiania aplikacji utworzonych w wyniku stosowania języków specjalizowanych DSL. Początkowo wszystko wskazywało na błędne sformułowanie zespołu prawników przygotowujących licencję do najnowszego SDK jednak coraz więcej wskazuje na to że nie jest to pomyłka.&lt;span class="fullpost"&gt; &lt;br /&gt;&lt;br /&gt;Zabronione zostało tworzenie aplikacji które nie zostały przez programistę napisane bezpośrednio w języku C, C++ lub Objective C. Nie wolno tworzyć języków wyższego poziomu które następnie generują poprawny kod wynikowy platformy. Aplikacja musi być napisana w języku niskopoziomowym. Nie brzmi to absurdalnie? To trochę jak próby zabronienia używania języka C i nakłaniania wszystkich by tworzyli aplikację w assemblerze lub kodzie maszynowym konkretnego procesora. &lt;br /&gt;&lt;br /&gt;Powodem tak absurdalnego wpisu jest walka z firmą Adobe specjalizującą się w tworzeniu narzędzi deweloperskich. W swoim najnowszym środowisku Flash CS5 zaimplementowała ona kompilator potrafiący przekształcać kod wysokopoziomowy aplikacji Flash na wynikowy kod niskopoziomowy dla platformy IPhone. Biorąc pod uwagę fakt iż Apple nie dostarcza własnych narzędzi deweloperskich walka z IDE firmy Adobe jest całkowicie niezrozumiała. Wygląda to tak jakby prawnicy firmy Apple walczyli ze wszystkimi produktami mającymi w nazwie słowo 'Flash'.&lt;br /&gt;&lt;br /&gt;Do tej kontrowersyjnej walki włączył się także szef firmy Apple Steve Jobs pisząc list wyjaśniający do jednego z developerów [&lt;a href="http://www.mobilecrunch.com/2010/04/11/gruber-a-voice-of-calm-in-a-mobile-world-gone-out-of-control/"&gt;techcrunch.com&lt;/a&gt;]. Twierdzi on że stosowanie warstw pośrednich pomiędzy programistą a API systemowym platformy prowadzi do powstawania aplikacji niskiej jakości: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"We’ve been there before, and intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Moim zdaniem całość jest jednak krokiem mającym przywiązać deweloperów do pojedynczej platformy. Programując aplikacje z wykorzystaniem niskopoziomowego API nie będą oni w stanie tworzyć aplikacji przenośnych między platformami np. na platformę Android rozwijaną przez firmę Google która powoli zdobywa popularność. &lt;br /&gt;&lt;br /&gt;To trochę jakby Oracle zabroniło używania języka specjalizowanego SQL by uniemożliwić wykorzystanie zapytań z inną bazą danych by w ten sposób walczyć z konkurencją. Początkowo natywne zapytania były szybsze jednak byłby to złudny efekt. Optymalizacje stosowane w kompilatorach takich jak SQL czy GWT są nieosiągalne dla przeciętnego dewelopera. JavaScript także jest kompilowany do postaci zoptymalizowanego kodu natywnego przed wykonaniem. Podobnie byłoby z czasem dla aplikacji Flash. Wcale nie zdziwiłoby mnie gdyby &lt;a href="http://www.facebook.com/FarmVille"&gt;Farmville&lt;/a&gt; przekompilowane do postaci natywnego API działało szybciej niż napisane w tym API ręcznie. Niektóre optymalizacje są zbyt pracochłonne dla dewelopera by je ręcznie stosować w dużych projektach a które szybko może wykonać optymalizator kompilatora. &lt;br /&gt;&lt;br /&gt;Mam nadzieję że cała sytuacja zostanie rozwiązana w jakiś inteligentny sposób. Marketing marketingiem... ale moim zdaniem gdzieś powinna być granica której nie powinno się przekraczać. Mam nadzieję że Adobe znajdzie sposób na obejście problemów prawnych i programowanie nie cofnie się do wczesnych lat 70-tych gdy pisało się każdy program bezpośrednio pod krzem.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5149755250946536901?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5149755250946536901/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5149755250946536901' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5149755250946536901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5149755250946536901'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/04/krucjata-apple-przeciwko-jezykom.html' title='Krucjata Apple przeciwko językom specjalizowanym'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/S8IY77ZbzsI/AAAAAAAAA4k/qINqwbrT4es/s72-c/images.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2078335178393071819</id><published>2010-03-25T07:08:00.009+01:00</published><updated>2010-08-22T18:08:56.501+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google chrome'/><title type='text'>Pwn2Own 2010: Google Chrome ponownie wygrywa!</title><content type='html'>Wczoraj odbył się konkurs hakerski Pwn2Own 2010 w ramach konferencji CanSecWest. Podczas konkursu specjaliści od zabezpieczeń próbują złamać zabezpieczenia popularnych przeglądarek oraz telefonów. &lt;br /&gt;&lt;br /&gt;W związku z konkursem producenci przeglądarek w ciągu ostatnich dni przygotowali dla swoich produktów serie poprawek. Pojawiły się najnowsze wersje Firefox 3.6.2, Google Chrome 4.1 oraz Safari 4.0.5. Pomimo tego uczestnicy przełamali zabezpieczenia wszystkich przeglądarek za wyjątkiem Google Chrome.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Kolejność ataków na poszczególne przeglądarki została ustalona na zasadzie losowania. Tak by w danym momencie tylko jeden z systemów był atakowany a organizatorzy mogli cały proces obserwować. &lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gHZaPec0_I8&amp;hl=pl_PL&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gHZaPec0_I8&amp;hl=pl_PL&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Lista zwycięzców pierwszego dnia:&lt;br /&gt;&lt;br /&gt;Firefox 3.6.2 (Windows 7) - Nils (MWRLabs)&lt;br /&gt;Safari 4.0.5 (MacOS X Snow Leopard) - Charlie Miller&lt;br /&gt;Internet Explorer 8 (Windows 7) - Peter Vreugdenhil&lt;br /&gt;Apple iPhone 3GS - Vincenzo Iozzo, Ralf Philipp Weinmann.&lt;br /&gt;&lt;br /&gt;Pierwszy dzień konkursu przetrwała przeglądarka Google Chrome oraz telefony Google Nexus One (Android), RIM Blackberry oraz Nokia E72&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------------------&lt;br /&gt;Uaktualnienie:&lt;br /&gt;&lt;br /&gt;Drugiego dnia przeglądarkę Google Chrome uruchomiono pod systemem Windows Vista. Nikt jednak nawet nie podjął próby przełamania zabezpieczeń określanych jako &lt;a href="http://dev.chromium.org/developers/design-documents/sandbox"&gt;'sandbox'&lt;/a&gt; (oddzielenie procesu renderowania do procesu głównego użytkownika). Sytuację skomentował jedynie trzykrotny zwycięzca Pwn2Own Charlie Miller:&lt;br /&gt;&lt;br /&gt;"There are bugs in Chrome but they're very hard to exploit. I have a Chrome vulnerability right now but I don't know how to exploit it. It's really hard. They've got that sandbox model that's hard to get out of. With Chrome, it's a combination of things - you can't execute on the heap, the OS protections in Windows and the Sandbox." &lt;br /&gt;&lt;br /&gt;Czy to oznacza że Google Chrome jako jedyna przetrwa całe zawody hakerskie pwn2own 2010?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2078335178393071819?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2078335178393071819/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2078335178393071819' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2078335178393071819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2078335178393071819'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/03/pwn2own-2010-google-chrome-ponownie.html' title='Pwn2Own 2010: Google Chrome ponownie wygrywa!'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-964546440733269788</id><published>2010-03-03T14:38:00.004+01:00</published><updated>2010-08-22T18:12:14.489+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>OSGI and Equinox</title><content type='html'>Właśnie dostałem długo oczekiwaną przesyłkę. Książka miała pojawić się jeszcze w ubiegłym roku ale w końcu jest :)&lt;br /&gt;&lt;br /&gt;Autorem książki jest lider projektu Eclipse Equinox. To chyba najlepsza reklama dla każdego zajmującego się tematyką OSGi/Eclipse. Pełną recenzję możecie znaleźć w tutaj:&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/S45no4Wmd1I/AAAAAAAAA3k/v5AI9KbLt1E/s1600-h/20100303344.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/S45no4Wmd1I/AAAAAAAAA3k/v5AI9KbLt1E/s320/20100303344.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5444402951557117778" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://java.dzone.com/reviews/osgi-and-equinox-creating"&gt;OSGi and Equinox: Creating Highly Modular Java Systems&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-964546440733269788?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/964546440733269788/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=964546440733269788' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/964546440733269788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/964546440733269788'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2010/03/osgi-and-equinox.html' title='OSGI and Equinox'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-Hz5kL7u4E4/S45no4Wmd1I/AAAAAAAAA3k/v5AI9KbLt1E/s72-c/20100303344.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-6611845030238808221</id><published>2009-11-17T11:59:00.008+01:00</published><updated>2009-11-17T12:17:04.816+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='wrocław'/><title type='text'>Eclipse Demo Camp we Wrocławiu (edycja druga)</title><content type='html'>Już za kilka dni odbędzie się druga wrocławska edycja Eclipse Demo Camp. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SwKDGUul3qI/AAAAAAAAAyc/EkQDw8JPWdA/s1600/eclipse-logo-white.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 309px; height: 180px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SwKDGUul3qI/AAAAAAAAAyc/EkQDw8JPWdA/s320/eclipse-logo-white.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5405026647464599202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interesujesz się środowiskiem Eclipse? Chciałbyś się dowiedzieć jak wykorzystać Eclipse nie tylko do programowania w Javie? Zapraszamy na spotkanie użytkowników i deweloperów środowiska Eclipse.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Eclipse DemoCamp Wrocław 2009!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Jacek Pospychała&lt;/span&gt;, JavaScript, AJAX w Eclipse&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Jacek Laskowsk&lt;/span&gt;i, Enterprise JavaBeans (EJB) na OSGi&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Krzysztof Kowalczyk&lt;/span&gt;, Transformacje Model-Model i Model-Text z wykorzystaniem technologii Eclipse&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Grzegorz Białek&lt;/span&gt;, Tworzenie narzędzi w środowisku Eclipse (podstawy i nie tylko)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Rejestracja możliwa jest pod adresem&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://oiola.com/e/496-druga-wroclawska-edycja-eclipse-demo-camp/"&gt;http://oiola.com/e/496-druga-wroclawska-edycja-eclipse-demo-camp/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Więcej informacji o prezentacjach oraz prowadzących można znaleźć pod adresem: &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Wroclaw"&gt;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Wroclaw&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spotkanie odbędzie się &lt;span style="font-weight:bold;"&gt;w sobotę 21 listopada 2009&lt;/span&gt; w budynku firmy Sygnity (ul. Strzegomska 140. Sponsorem głównym została forma PB Polsoft&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SwKDY20BU5I/AAAAAAAAAyk/iAiFoPsgVKI/s1600/200px-Polsoft_logo.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 128px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SwKDY20BU5I/AAAAAAAAAyk/iAiFoPsgVKI/s320/200px-Polsoft_logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5405026965851820946" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SwKDeE2djTI/AAAAAAAAAys/OUpkxfa5b7I/s1600/Sygnity_logo.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 133px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SwKDeE2djTI/AAAAAAAAAys/OUpkxfa5b7I/s320/Sygnity_logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5405027055519501618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Zdjęcia oraz podsumowanie pierwszej wrocławskiej edycji Eclipse Demo Camp można znaleźć tutaj tu: &lt;a href="http://deepdiveinto.blogspot.com/2008/11/pierwsza-edycja-eclipse-democamp-we.html"&gt;http://deepdiveinto.blogspot.com/2008/11/pierwsza-edycja-eclipse-democamp-we.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-6611845030238808221?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/6611845030238808221/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=6611845030238808221' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6611845030238808221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6611845030238808221'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/11/eclipse-demo-camp-we-wrocawiu-edycja.html' title='Eclipse Demo Camp we Wrocławiu (edycja druga)'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/SwKDGUul3qI/AAAAAAAAAyc/EkQDw8JPWdA/s72-c/eclipse-logo-white.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-221406592852906865</id><published>2009-07-15T21:17:00.005+02:00</published><updated>2009-07-15T22:58:05.568+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Tekstowe języki specjalizowane – prezentacja</title><content type='html'>Od pewnego czasu staram się promować na blogu idee &lt;a href="http://deepdiveinto.blogspot.com/2009/01/tekstowe-jzyki-specjalizowane.html"&gt;tekstowych języków specjalizowanych&lt;/a&gt; a dokładnie technologię &lt;a href="http://www.eclipse.org/Xtext/"&gt;xText&lt;/a&gt;. Nie mogę więc nie wspomnieć o bardzo ciekawej webowej prezentacji jaka zakończyła się dosłownie kilka minut temu. Polecam ją każdemu, niezależnie od tego czy zajmuje się technologiami modelowania czy dopiero planuje się nimi zainteresować. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://live.eclipse.org/node/705"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/Sl47RiJhleI/AAAAAAAAAl4/QvAOyopmtrE/s320/xtext.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5358785779028039138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Podczas prezentacji oprócz naprawdę fajnego demka z szachami wyjaśniona została także architektura samego projektu. Przyznam że bardzo podoba mi się zastosowanie &lt;a href="http://code.google.com/p/google-guice/"&gt;Google Guice&lt;/a&gt; jako sposobu na kastomizację generatów. Łączenie kodu generowanego z ręcznie pisanym zawsze stanowiło duży problem w projektach o większym stopniu złożoności niezależnie od zastosowanego podejścia. Zwykle kończyło się to albo dziesiątkami metod 'generated NOT' albo było skrajnie niewygodne jak modyfikacje w 'GMFGen' lub 'zastępowanie szablonów'. Szczególnie problem widoczny jest właśnie w przypadku biblioteki GMF która generuje naprawdę złożony kod który należy w dużej mierze zmodyfikować. Zastosowanie technologii Guice pozwala na znaczne rozluźnienie relacji pomiędzy poszczególnymi fragmentami budowanego edytora co znacznie upraszcza proces jego kastomizacji.&lt;br /&gt;&lt;br /&gt;Bardzo ciekawy jest także dalszy kierunek rozwoju. Tematem przewodnim jest budowanie złożonych projektów opartych o wiele współpracujących modeli czyli koncepcja budowy &lt;a href="http://www.eclipse.org/proposals/emf-index/"&gt;indeksu modeli&lt;/a&gt; (instancji) w ramach środowiska. Rejestr modeli to jedno z pierwszych zadań jakie musi wykonać każdy projektant tworzący IDE. Ponieważ użytkownicy będą tworzyli dziesiątki lub setki instancji modeli w ramach projektu indeksowanie jest konieczne by wzajemnie się one widziały i możliwe były akcje typu wyszukanie czy refaktoring. Ustandaryzowanie tego typu mechanizmów może być kamieniem milowym w kierunku uniwersalnych mechanizmów refaktoringu (połączenie koncepcji index + compare)&lt;br /&gt;&lt;br /&gt;Drugim tematem jest budowa tzw. języka bazowego dla reprezentacji wyrażeń. W każdym środowisku tworzymy lub wykorzystujemy jakiś istniejący język wyrażeń by wiązać poszczególne elementy modelu, reprezentować warunki etc. Czy jest to popularny XPATH, kolejna mutacja OCL czy cokolwiek innego mocno zależy to od wymagań tworzonego środowiska. Uproszczenie tego tematu wydaje się być atrakcyjne ale nie jestem pewien czy jest ono konieczne. Mamy już kilka modeli wyrażeń a pomimo tego każdy i tak tworzy własny by najlepiej odpowiadał potrzebom danego systemu. Nie do końca jestem przekonany czy powstanie kolejnego języka (bazowego?) cokolwiek wniesie do tematu. Przyznam że bardziej wolałbym gdyby połączono i dopracowano istniejące języki tak by powstała jedna składnia OCL’a, pojedyncza wersja XPAND’a etc. Możliwe jednak że źle rozumiem kierunek tego podprojektu. Czas więc poszukać dodatkowych informacji co i jak.&lt;br /&gt;&lt;br /&gt;XText bez wątpienia wprowadza do środowiska Eclipse co najmniej tak dużo nowych możliwości jak kilka lat temu zrobił to GMF. Gdy tylko skończę czytać kupioną niedawno &lt;a href="http://www.amazon.com/Eclipse-Modeling-Project-Domain-Specific-Language/dp/0321534077"&gt;książkę o GMF&lt;/a&gt; biorę się za naukę. Mam nadzieję że analiza tego projektu pozwoli mi rozwiązać także problemy w moim własnym projekcie (koncepcja zastosowania Guice etc.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-221406592852906865?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/221406592852906865/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=221406592852906865' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/221406592852906865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/221406592852906865'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/07/tekstowe-jezyki-specjalizowane.html' title='Tekstowe języki specjalizowane – prezentacja'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/Sl47RiJhleI/AAAAAAAAAl4/QvAOyopmtrE/s72-c/xtext.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-774079669829090773</id><published>2009-07-08T21:47:00.003+02:00</published><updated>2009-07-09T07:45:21.833+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='praca'/><category scheme='http://www.blogger.com/atom/ns#' term='nurkowanie'/><title type='text'>8 lat w Java, 5 lat z Eclipse, 2 lata blogowania…</title><content type='html'>To straszne jak ten czas szybko płynie. Osiem lat temu w lipcu rozpoczynałem swoją pierwszą pracę. Język Java wydawał mi się wtedy totalnym nieporozumieniem. Borland JBuilder 4 nie dość że nie potrafił poprawnie zatrzymywać się na wszystkich break pointach to dodatkowo działał nieprawdopodobnie wolno na procesorach 300MHz :)&lt;br /&gt;&lt;br /&gt;Z czasem bardzo polubiłem prostotę Javy jednak prawdziwym przełomem było pojawienie się środowiska Eclipse 2.1. Hierarchia wywołań metod, refaktoring, natywny wygląd i niewiarygodna szybkość porównywalna praktycznie z VisualStudio... to była rewolucja. Dzięki książkom '&lt;a href="http://www.manning.com/gallardo/"&gt;Eclipse In Action&lt;/a&gt;' oraz '&lt;a href="http://www.amazon.com/Contributing-Eclipse-Principles-Patterns-Plug-Ins/dp/0321205758"&gt;Contributing to Eclipse&lt;/a&gt;' dowiedziałem się ponadto że można łatwo samemu robić dodatki do tego środowiska. To było wielkie odkrycie. Możliwe stało się coś co wydawało się być wcześniej zarezerwowane dla programistów wielkich zachodnich firm. Trochę ponad rok później miałem gotowe pierwsze narzędzia do modelowanie procesów sterowania centralami cyfrowymi zbudowane z wykorzystaniem biblioteki &lt;a href="http://www.eclipse.org/gef/"&gt;GEF&lt;/a&gt; (Graphical Editing Framework). To był początek wielkiej przygody.&lt;br /&gt;&lt;br /&gt;Dwa lata temu postanowiłem założyć bloga. Celem jaki sobie postawiłem to zainteresować większą ilość osób tematyką Eclipse, a w szczególności ideą tworzeniu narzędzi specjalizowanych &lt;a href="http://deepdiveinto.blogspot.com/search/label/dsl"&gt;DSL&lt;/a&gt; (języków specyficznych dla rozwiązywanego problemu). Początki były naprawdę &lt;a href="http://deepdiveinto.blogspot.com/2008/07/7-4-1-start.html"&gt;trudne&lt;/a&gt;, jednak miniony rok okazał się zdecydowanie lepszy. Głównie dzięki pomocy wielu osób związanych z grupami użytkowników języka Java (JUG) oraz serii konferencji &lt;a href="http://wiki.eclipse.org/Regional_Communities/Poland"&gt;Eclipse DemoCamp&lt;/a&gt;  (między innymi organizacji &lt;a href="http://deepdiveinto.blogspot.com/2008/11/pierwsza-edycja-eclipse-democamp-we.html"&gt;pierwszej edycji wrocławskiej&lt;/a&gt;). Liczba odwiedzających ten adres zdecydowanie się zwiększyła co jest bardzo miłe.&lt;br /&gt;&lt;br /&gt;W tym roku udało mi się także zdobyć licencję &lt;a href="http://www.padi.com/"&gt;PADI Open Water Diver&lt;/a&gt; co w kontekście nazwy tego bloga ma kluczowe znaczenie. Sam egzamin przy zatoce znanej z filmu 'Niebiańska plaża' pozostanie jednym z najpiękniejszych wspomnień, podobnie jak cała &lt;a href="http://deepdiveinto.blogspot.com/search/label/wyprawa"&gt;wyprawa&lt;/a&gt; do Tajlandii. Mam nadzieję że kolejnym krokiem będzie nauka robienia zdjęć podwodnych. W tematyce programowania natomiast zabieram się za naukę technologii &lt;a href="http://www.eclipse.org/Xtext/"&gt;xText&lt;/a&gt;. Jest to bez wątpienia jeden z najbardziej innowacyjnych projektów na jaki trafiłem. We wrześniu planuję także zakup książki o &lt;a href="http://www.amazon.com/Equinox-OSGi-Power-Behind-Eclipse/dp/0321585712/"&gt;Equinox&lt;/a&gt; która bez wątpienia będzie hitem biorąc pod uwagę coraz większą popularyzację OSGi także po stronie oprogramowania serwerowego...&lt;br /&gt;&lt;br /&gt;To był wyjątkowo udany rok. Mam nadzieję że kolejny będzie jeszcze ciekawszy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-774079669829090773?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/774079669829090773/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=774079669829090773' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/774079669829090773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/774079669829090773'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/07/8-lat-w-java-5-lat-z-eclipse-2-lata.html' title='8 lat w Java, 5 lat z Eclipse, 2 lata blogowania…'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2780515181685576188</id><published>2009-06-25T23:40:00.001+02:00</published><updated>2009-06-25T23:47:46.091+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><title type='text'>Formatowanie plików JavaScript w generatorze XPAND</title><content type='html'>Mechanizm szablonów XPAND jest moim ulubionym generatorem kodu. Jest nieprawdopodobnie wygodny i posiada wiele unikalnych cech które naprawdę ułatwiają pracę. Tematem tego wpisu (tutoriala) będą tzw. upiększacze kodu. &lt;br /&gt;&lt;br /&gt;W generatorze XPAND domyślnie mamy dwa takie upiększacze: JavaBeautifier oraz XmlBeautifier. Jeżeli generujemy kod w jednej z obsługiwanych notacji dzięki dodaniu tych klas do procesu mamy pięknie sformatowany i czytelny kod wynikowy. Co jednak jeżeli generujemy kod JavaScript gdy budujemy aplikację webową? Cóż wynik nie jest najciekawszy. Praktycznie wygenerowanie czytelnego kodu graniczy z cudem i wymaga tworzenie naprawdę nieczytelnych szablonów które symulują częściowo formatowanie wynikowe co stanowi wyjątkowo brzydki anty-wzorzec. Koszmar którego nawet nie będę prezentował.&lt;br /&gt;&lt;br /&gt;Dlaczego nie ma domyślnie klasy formatującej JavaScript w pakiecie XPAND? Odpowiedzią jest oczywiście nieskończona ilość generowanych notacji. Spróbujmy więc czy napisanie  klasy pomocniczej dla JavaScript jest trudne.&lt;br /&gt;&lt;br /&gt;Od czego zacząć? Myślę że powinniśmy postępować zgodnie z metodologią "Monkey see/Monkey do" zaprezentowaną kilka lat temu przez &lt;a href="http://en.wikipedia.org/wiki/Erich_Gamma"&gt;Ericha Gammę&lt;/a&gt; w książce &lt;a href="http://www.amazon.com/Contributing-Eclipse-Principles-Patterns-Plug-Ins/dp/0321205758"&gt;"Contributing to Eclipse"&lt;/a&gt;. Co kryje się pod tym tajemniczym sformułowaniem? Prosta zasada "zobacz jak robią to inni, skopiuj i dostosuj rozwiązanie do swoich potrzeb".&lt;br /&gt; &lt;br /&gt;Zobaczmy więc jak działa klasa JavaBeautifier. Otwieramy sobie jej źródło i wszystko staje się jasne. Klasa ta implementuje interfejs &lt;span style="font-weight:bold;"&gt;PostProcessor&lt;/span&gt; z metodą: &lt;span style="font-weight:bold;"&gt;beforeWriteAndClose(FileHandle fileHandle)&lt;/span&gt; odpowiedzialną za formatowanie kodu. Sam proces formatowania przekazywany jest do mechanizmów JDT wykorzystując klasę: &lt;span style="font-weight:bold;"&gt;org.eclipse.jdt.core.formatter.CodeFormatter&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;Cały process wygląda mniej więcej następująco:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;beforeWriteAndClose(final FileHandle fileHandle){&lt;br /&gt;&amp;nbsp;&amp;nbsp;jeżeli rozszerzenie == 'java' to:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document doc = new Document(fileHandle.getBuffer().toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextEdit edit = getCodeFormatter().format(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CodeFormatter.K_COMPILATION_UNIT, doc.get(), 0, doc.get().length(), 0, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;edit.apply(doc);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileHandle.setBuffer(new StringBuffer(doc.get()));&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;CodeFormatter getCodeFormatter() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;inicjacja opcji na podstawie ustawień formatowania &lt;br /&gt;&amp;nbsp;&amp;nbsp;return ToolFactory.createCodeFormatter(options);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jak widać całość opiera się o gotowe mechanizmy formatujące. Ponieważ identyczne możliwości formatowania kodu zostały zaimplementowane także w WTP dla edytora JavaScript wykorzystanie tego podejścia nie wydaje się być problemem. Jak jednak znaleźć odpowiedni kod w środowisku złożonym z grubo ponad tysiąca projektów jeżeli nie wiemy gdzie mechanizmy te zostały zaimplementowane? Wykorzystamy mechanizm Plugin Spy pokazujący nam informacje o praktycznie dowolnym elemencie środowiska. Otwieramy edytor JavaScript dostarczany z pakietem WTP, &lt;span style="font-weight:bold;"&gt;ALT+SHIFT+F1&lt;/span&gt; i pojawia nam się następująca informacja:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SkPasmjDgEI/AAAAAAAAAjk/VTEpMiJR-iQ/s1600-h/javascript.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 136px; height: 200px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SkPasmjDgEI/AAAAAAAAAjk/VTEpMiJR-iQ/s200/javascript.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5351361242042957890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Skoro wiemy już że edytor ten został dostarczony przez plugin WST.JSDT wgrywamy go do naszego workspace. W tym celu wykorzystujemy kreator:&lt;br /&gt; &lt;br /&gt;Plug-in Development|Plug-ins and Fragments|Binary Project with linked content|filtr *wst.jstd i ściągamy podejrzane projekty:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;org.eclipse.wst.jsdt.core&lt;br /&gt;org.eclipse.wst.jsdt.core.ui&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Praktycznie od razu zauważamy pakiet &lt;span style="font-weight:bold;"&gt;formatter&lt;/span&gt; a w nim klasę w której znajduje się identyczny kod:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;org.eclipse.wst.jsdt.core.formatter.CodeFormatterApplication&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wywołanie mechanizmów formatujących JSDT wymagać będzie od nas zaledwie zmiany dwóch importów z JDT na JSDT oraz identyfikatora określającego formatowaną zawartość. Postępując z wzorcem małpki kopiujemy oryginalną zawartość klasy JavaBeautifer do nowej klasy o nazwie JavaScriptBeautifier. Następnie modyfikujemy importy:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;//import org.eclipse.jdt.core.ToolFactory;&lt;br /&gt;//import org.eclipse.jdt.core.formatter.CodeFormatter;&lt;br /&gt;import org.eclipse.wst.jsdt.core.ToolFactory;&lt;br /&gt;import org.eclipse.wst.jsdt.core.formatter.CodeFormatter;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sprawdzane rozszerzenie pliku oraz identyfikator:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;//getCodeFormatter().format(CodeFormatter.K_COMPILATION_UNIT,..&lt;br /&gt;getCodeFormatter().format(CodeFormatter.K_JAVASCRIPT_UNIT,...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Klasa upiększająca kod JavaScript jest gotowa. Ostatnim elementem jest ustalenie konfiguracji w jaki sposób kod powinien się formatować. W tym celu korzystając z kreatora tworzymy właściwy dla naszych projektów sposób formatowania (najlepiej zwiększyć długość linii z 80 do 140...160 co jest moim zdaniem optymalne dla kodu generowanego)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SkPiaAGveeI/AAAAAAAAAjs/E6SPdjuVSig/s1600-h/javascript_config.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 142px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SkPiaAGveeI/AAAAAAAAAjs/E6SPdjuVSig/s200/javascript_config.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5351369718579034594" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Ustawienia te zostaną zapisane w pliku:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;[workspace].metadata\.plugins\org.eclipse.core.runtime\.settings\ org.eclipse.wst.jsdt.core.prefs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Kopiujemy plik konfiguracyjny do naszego projektu w którym wykorzystujemy nasz formater i gotowe. Całość zabrała nam zaledwie kilka minut (napisanie tego tutoriala trochę więcej). &lt;br /&gt;&lt;br /&gt;Mam nadzieję że komuś taka klasa się przyda. W czasach absolutnej dominacji aplikacji webowych, technologii Ajax, przeglądarki Google Chrome etc. coraz częściej generujemy kod JavaScript a nic tak nie cieszy jak kod czytelny i dobrze sformatowany :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2780515181685576188?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2780515181685576188/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2780515181685576188' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2780515181685576188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2780515181685576188'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/06/formatowanie-plikow-javascript-w.html' title='Formatowanie plików JavaScript w generatorze XPAND'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/SkPasmjDgEI/AAAAAAAAAjk/VTEpMiJR-iQ/s72-c/javascript.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8606125293525061014</id><published>2009-06-25T21:31:00.003+02:00</published><updated>2009-06-25T23:40:21.490+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse 3.5 Galileo</title><content type='html'>Wczoraj pojawiła się kolejna wersja środowiska Eclipse - &lt;a href="http://www.eclipse.org/galileo/"&gt;Eclipse 3.5 Galileo&lt;/a&gt;. Co nowego? Jest tego naprawdę dużo. Włączenie do platformy modelowania środowiska OpenArchitectureWare, dalszy rozwój OSGi wraz z PDE, kolejna wersja środowiska BIRT, QVT, ATL, Compare... Jest tego za dużo by to wszystko wymienić. &lt;br /&gt;&lt;br /&gt;Bez wątpienia każdy znajdzie coś dla siebie, w końcu to już &lt;a href="http://www.eclipse.org/galileo/projects.php"&gt;33 projekty&lt;/a&gt; zsynchronizowane i dostarczone jednocześnie :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8606125293525061014?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8606125293525061014/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8606125293525061014' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8606125293525061014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8606125293525061014'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/06/eclipse-35-galileo.html' title='Eclipse 3.5 Galileo'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8902411757901498515</id><published>2009-05-27T20:24:00.009+02:00</published><updated>2009-05-27T20:47:43.274+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Nieudany wykład :(</title><content type='html'>Co tu dużo pisać, mój wczorajszy wykład to była tragedia. Całkowity chaos w którym sam się w pogubiłem i nie wiedziałem jak z tego wybrnąć. Szkoda bo miałem nadzieję że kogoś tematyką zainteresuję. Fragmenty wybrałem tak by stanowiły dopełniający się przykład, przygotowałem prościutkie demo plus jakieś slajdy. Tydzień wcześniej prowadziłem też identyczną prezentację na politechnice zakończoną powodzeniem. Nie mogło się nie udać... a jednak zakończyło się totalnym chaosem.&lt;br /&gt;&lt;br /&gt;Co było powodem? Elementów prawdopodobnie było wiele. Myślę jednak że kluczowym był mój pomysł by prezentację skrócić o połowę. Robiąc ją wcześniej na politechnice przedstawiłem teorię dotyczącą Eclipse, DSL’i, pokazałem jak zbudowany jest plugin, oraz jak skonfigurować środowisko i przeglądać istniejący kod. Na takiej bazie mogłem dokładnie pokazać sposób budowy modelu EMF który jest kluczowym elementem procesu tworzenia narzędzi. Pozostały czas poświęciłem by pobieżnie zaprezentować jak tworzone są edytory tekstowe i graficzne na bazie modeli. Miało to ręce i nogi i mam nadzieję że ktoś się tematem zainteresował. No ale trwało prawie 2h...&lt;br /&gt;&lt;br /&gt;Myślałem że za drugim razem będzie prościej. Skróciłem sobie czas do połowy wychodząc z założenia że nie będę ręcznie krok po kroku tworzyć modelu ale skorzystam z przygotowanego wcześniej pliku. Jednak nie przemyślałem planu skróconej prezentacji. Już w trakcie wiedziałem że nie mam czasu by dokładnie przedstawić teorię, później zbyt pobieżnie przedstawiłem rolę odwzorowania modelu do której pozostałe fragmenty się odwoływały. Całość wyglądała tak jakbym zaczął budować dom od pierwszego piętra i starał się go dokończyć zanim runie z powodu braku fundamentów i parteru. &lt;br /&gt;&lt;br /&gt;Cóż myślę że nie udało mi się wczoraj zainteresować zbyt wielu osób tematyką Eclipse.  Mam jednak nadzieję że przynajmniej udało mi się pokazać że tworzenie edytorów jest czynnością prostą. Szkoda tylko że nie zaprezentowałem wystarczająco dobrze jak się to robi i dlaczego.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8902411757901498515?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8902411757901498515/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8902411757901498515' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8902411757901498515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8902411757901498515'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/05/nieudany-wykad.html' title='Nieudany wykład :('/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5620058322436008345</id><published>2009-05-19T22:03:00.011+02:00</published><updated>2009-05-19T23:24:35.908+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='ast'/><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><title type='text'>Wykłady, wykłady, wykłady…</title><content type='html'>Korzystając z zaproszenia &lt;a href="http://www.e-informatyka.pl/sens/Wiki.jsp?page=LechMadeyski"&gt;dr inż. Lecha Madeyskiego&lt;/a&gt; miałem dziś okazję przeprowadzić wykład dla studentów politechniki Wrocławskiej. Tematem było tworzenie narzędzi na bazie platformy Eclipse. Ponieważ chciałem zaprezentować słuchaczom tematykę jak najszerzej zdecydowałem się na prawdziwy maraton. Postanowiłem przedstawić przekrój przez zagadnienie od konfiguracji środowiska i struktury prostego pluginu po zbudowanie zestawu współpracujących edytorów (strukturalny, graficzny i tekstowy). &lt;br /&gt;&lt;br /&gt;Jako problem postawiony przed tworzonymi narzędziami wykorzystałem koncepcje przedstawione na ostatnim spotkaniu &lt;a href="http://groups.google.com/group/wroclaw-jug"&gt;Wrocławskiej Grupy Użytkowników Java&lt;/a&gt;,  tzn.  &lt;a href="http://camel.apache.org/enterprise-integration-patterns.html"&gt;ServiceMix/Apache Camel&lt;/a&gt;. Środowisko Apache Camel wykorzystywane jest do zarządzania przepływem wiadomości. Przepływ taki składa się z wielu wzajemnie połączonych elementów realizujących poszczególne etapy zadania. Jednym z kluczowych elementów jest &lt;a href="http://camel.apache.org/message-router.html"&gt;router operujący na zawartości&lt;/a&gt;. Wynikowy plik konfiguracyjny silnika wymaga informacji o przepływie oraz podejmowanych decyzjach (z odwołaniem do struktury wiadomości). Tym samym jest to idealny przykład by zaprezentować koncepcje budowy zestawu narzędzi.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/ShMS9KnyvRI/AAAAAAAAAhk/fB5Fm9ztMlA/s1600-h/MessageRouter.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 94px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/ShMS9KnyvRI/AAAAAAAAAhk/fB5Fm9ztMlA/s320/MessageRouter.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5337630825396747538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Podczas prezentacji zbudowaliśmy uproszczony model logiczny takich przepływów. Na jego bazie utworzyliśmy edytor graficzny umożliwiający łączenie na diagramie abstrakcyjnych elementów.  Ponieważ notacja graficzna nie nadaje się do definiowania reguł podejmowania decyzji utworzyliśmy dodatkowo specjalizowany edytor tekstowy. Edytor ten umożliwił nam zdefiniowanie zestawu reguł wraz z warunkami. By warunki mogły operować na realnych polach zdefiniowanych w opisie struktury wiadomości (zamiast prostych łańcuchów tekstowych) zintegrowaliśmy całość z edytorem diagramów klas UML. Tym samym udało się poruszyć wszystkie ważne aspekty budowy narzędzi:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;dostosowanie narzędzi do problemu&lt;/li&gt;&lt;li&gt;notacje strukturalne, graficzne, tekstowe&lt;/li&gt;&lt;li&gt;walidacje poprawności, podpowiedzi etc.&lt;/li&gt;&lt;li&gt;integrację z istniejącymi narzędziami&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/ShMb3nGJ8nI/AAAAAAAAAhs/YdLXSTyGnDQ/s1600-h/flow.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 160px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/ShMb3nGJ8nI/AAAAAAAAAhs/YdLXSTyGnDQ/s200/flow.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5337640625565725298" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/ShMcC4XMPFI/AAAAAAAAAh0/fWXKzYTN0go/s1600-h/regula.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 160px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/ShMcC4XMPFI/AAAAAAAAAh0/fWXKzYTN0go/s200/regula.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5337640819179142226" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/ShMcKJTljnI/AAAAAAAAAh8/boILwbOA_Lc/s1600-h/model.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 160px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/ShMcKJTljnI/AAAAAAAAAh8/boILwbOA_Lc/s200/model.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5337640943986511474" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Całość wykładu zaplanowałem na 1h demo plus 30min teorii. Niestety wykonanie demonstracji krok po kroku okazało się w tak krótkim czasie bardzo trudne więc część elementów wytłumaczyłem na bazie przygotowanych wcześniej plików. Myślę że takie podejście jest bardziej realistyczne ponieważ czas tracony na pisanie kodu od podstaw można lepiej poświęcić na dokładniejsze wytłumaczenie co, jak i dlaczego. Myślę że doświadczenie to wykorzystam podczas kolejnej prezentacji która odbędzie się już za tydzień w ramach spotkań &lt;a href="http://groups.google.com/group/wroclaw-jug"&gt;Wrocław JUG&lt;/a&gt;. Mam nadzieję że uda się całość skrócić do 1h. &lt;br /&gt;&lt;br /&gt;Oczywiście zapraszam wszystkich zainteresowanych w imieniu swoim oraz całego Wrocław JUG:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Czwarte spotkanie Wrocławskiej Grupy Użytkowników Technologii Java:&lt;br /&gt;"Tworzenie własnych narzędzi na platformie Eclipse"&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;26 maja 2009 o godzinie 18:30.&lt;br /&gt;Instytut Informatyki Uniwersytetu Wrocławskiego,  &lt;br /&gt;Sala wykładowa Kameralna Wschodnia nr 119, I piętro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5620058322436008345?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5620058322436008345/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5620058322436008345' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5620058322436008345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5620058322436008345'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/05/wykady-wykady-wykady.html' title='Wykłady, wykłady, wykłady…'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/ShMS9KnyvRI/AAAAAAAAAhk/fB5Fm9ztMlA/s72-c/MessageRouter.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7504488393836676167</id><published>2009-04-30T22:24:00.007+02:00</published><updated>2009-05-01T09:42:21.850+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse SDK 3.5.1.I20090722_Shanghai</title><content type='html'>Już za kilka tygodni pojawi się nowa wersja środowiska &lt;a href="http://wiki.eclipse.org/Galileo"&gt;Eclipse 3.5 Galileo&lt;/a&gt;. W tym roku jednak większą uwagę przyciąga jeden z buildów integracyjnych. Chodzi oczywiście o build 'Shanghai' planowany na 22 lipca 2009. Już dziś potwierdzono że jeżeli nie pojawią się błędy krytyczne oraz przejdą wszystkie testy jednostkowe to odbędzie się z tej okazji wyjątkowa uroczystość. Planowana jest niezliczona ilość atrakcji takich jak sztuczne ognie, orientalny alkohol, zaćmienie słońca oraz całonocny grill. Swoją obecność potwierdziła już lokalna telewizja która zapowiedziała bezpośrednią relację z procesu budowania aplikacji. Od strony technicznej pieczę nad uroczystością sprawuje firma NASA. &lt;br /&gt;&lt;br /&gt;Szczegóły imprezy możecie znaleźć pod tym adresem: &lt;a href="http://eclipse.gsfc.nasa.gov/SEpubs/20090722/TP214169a.pdf"&gt;NASA/TP—2008–214169&lt;/a&gt; (6.5 MB)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://eclipse.gsfc.nasa.gov/SEpubs/20090722/TP214169a.pdf"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 228px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SfoLwkPAGkI/AAAAAAAAAhE/1jC4GS6R5BA/s320/eclipse.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5330586037934627394" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7504488393836676167?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7504488393836676167/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7504488393836676167' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7504488393836676167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7504488393836676167'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/04/eclipse-sdk-351i20090722shanghai.html' title='Eclipse SDK 3.5.1.I20090722_Shanghai'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/SfoLwkPAGkI/AAAAAAAAAhE/1jC4GS6R5BA/s72-c/eclipse.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2541878642012332847</id><published>2009-03-08T18:15:00.004+01:00</published><updated>2009-03-08T18:29:38.701+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='wrocław'/><title type='text'>Wrocławska Grupa Użytkowników Java</title><content type='html'>Skoro już znalazłem czas na aktualizację bloga nie mogę nie wspomnieć o pewnym ważnym wydarzeniu, które miało niedawno miejsce we Wrocławiu. Pod koniec lutego powstała Wrocławska Grupa Użytkowników Java, czyli w skrócie Wrocław JUG. Poniżej kilka ważnych linków:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/wroclaw-jug"&gt;Grupa dyskusyjna Wrocław JUG&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linkedin.com/groups?about=&amp;gid=1789506"&gt;Profil JUG'a na LinkedIn&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://groups.google.com/group/wroclaw-jug"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 111px; height: 200px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SbQATROLnXI/AAAAAAAAAeI/aY02JKeugbI/s200/wroclaw-jug-frame.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310870191617056114" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2541878642012332847?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2541878642012332847/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2541878642012332847' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2541878642012332847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2541878642012332847'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/03/wrocawska-grupa-uzytkownikow-java.html' title='Wrocławska Grupa Użytkowników Java'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-Hz5kL7u4E4/SbQATROLnXI/AAAAAAAAAeI/aY02JKeugbI/s72-c/wroclaw-jug-frame.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7444190749362654509</id><published>2009-03-08T17:00:00.006+01:00</published><updated>2009-03-08T17:47:56.793+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Eclipse w bankowości - podsumowanie</title><content type='html'>Trzy tygodnie temu odbyło się w Londynie spotkanie &lt;a href="http://wiki.eclipse.org/EclipseBankingDayLondon"&gt;Eclipse Banking Day&lt;/a&gt;. Miało ono na celu zebranie ludzi z firm deweloperskich, banków oraz innych instytucji finasowych tak by rozpocząć otwartą dyskusję na temat przyszłości rozwiązań budowanych na platformie Eclipse. Myślę że inicjatywa zakończyła się sukcesem.&lt;br /&gt; &lt;br /&gt;A jak to wyglądało? Spotkanie rozpoczęło się od prezentacji koncepcji &lt;a href="http://wiki.eclipse.org/E4"&gt;E4&lt;/a&gt; czyli stworzenia Eclipse IDE jako aplikacji WWW. Raczej jestem sceptycznie nastawiony do idei tworzenia aplikacji WWW z tak złożonym interfejsem użytkownika. Bardzo podoba mi się za to idea włączenia biblioteki EMF jako składnika bazowego na poziom platformy oraz utworzenie modeli dla każdego aspektu budowy aplikacji. Application.ecore, Workbench.ecore... to będzie coś naprawdę wielkiego :) &lt;br /&gt;&lt;br /&gt;Następnie &lt;a href="http://neilbartlett.name/blog/"&gt;Neil Bartlett&lt;/a&gt; przedstawił wykład na temat warstwy usług deklaratywnych z OSGi. Podczas wykładu Neil wyjaśnił szczegółowo zagadnienia podziału OSGi na warstwy oraz opowiedział o wadach, zaletach poszczególnych implementacji Equinox DS, Spring DM, iPojo etc. &lt;br /&gt;Technologia OSGi w ostatnich latach coraz bardziej się popularyzuje. I powinna! Choć od ponad pięciu lat tworzę rozwiązania bazowane na środowisku Eclipse przyznam że tylko w ostatnim projekcie (ostatnie trzy lata) staram się świadomie wykorzystywać możliwości modularyzacji. Wiem teraz że nic tak dobrze nie sprząta architektury aplikacji jak dobrze zaplanowana modularyzacja. Trzymam kciuki za sukces tematu także w świecie aplikacji JEE. Jeżeli ktoś jednak nie zetknął się jeszcze z tą tematyką koniecznie powinien przeczytać &lt;a href="http://neilbartlett.name/blog/osgi-articles/"&gt;tutorial&lt;/a&gt; przygotowany właśnie przez Neila lub &lt;a href="http://neilbartlett.name/blog/osgibook/"&gt;aktualny szkic&lt;/a&gt; jego książki. &lt;br /&gt;&lt;br /&gt;Kolejny wykład poprowadził &lt;a href="http://blog.efftinge.de/"&gt;Sven Efftinge&lt;/a&gt;, lider projektu &lt;a href="http://wiki.eclipse.org/TMF"&gt;Eclipse TMF&lt;/a&gt; (Textual Modeling Framework, xText) o którym wspominałem w poprzednim wpisie. To było to na co tak naprawdę czekałem. Możliwość zadania setki pytań na temat projektu, oraz innych zagadnień z dziedziny MDE to właśnie główny powód, dla którego warto uczestniczyć w tego typu spotkaniach nawet jeżeli odbywają się one na drugim końcu europy. &lt;br /&gt;&lt;br /&gt;Pozostałe wykłady dotyczyły specyficznych produktów dla sektora bankowego. Co dużo mówić królowały tutaj dwa tematy: raportowanie czyli &lt;a href="http://www.eclipse.org/birt/phoenix/"&gt;BIRT&lt;/a&gt; oraz modelowanie procesów bankowych na wszystkie możliwe sposoby. Przedstawiona została także koncepcja wspólnej platformy dla sektora bankowego, która to właśnie dyskutowana była do późnego wieczora. To bez wątpienia projekt, którym muszę się zainteresować. Spotkanie skończyło się późnym wieczorem przy winie :) To była doskonała okazja by poznać kilka ciekawych osób. &lt;br /&gt;&lt;br /&gt;A sam Londyn? Przepiękne miasto. Zrobiłem setkę zdjęć choć miałem na zwiedzanie zaledwie kilka godzin. Wybrałem kilka zdjęć i wrzuciłem na www.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseBankingDayLondon"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SbP0IScOi3I/AAAAAAAAAdQ/iXsryyAkSQQ/s200/Londyn1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5310856808826309490" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseBankingDayLondon"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/SbP0QpQwyvI/AAAAAAAAAdY/1CRLcYQQQ08/s200/Londyn2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5310856952391191282" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseBankingDayLondon"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SbP0VztgfFI/AAAAAAAAAdg/UjWmBEQ12cE/s200/Londyn3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5310857041095457874" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7444190749362654509?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7444190749362654509/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7444190749362654509' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7444190749362654509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7444190749362654509'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/03/eclipse-w-bankowosci-podsumowanie.html' title='Eclipse w bankowości - podsumowanie'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-Hz5kL7u4E4/SbP0IScOi3I/AAAAAAAAAdQ/iXsryyAkSQQ/s72-c/Londyn1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-1376480867186041990</id><published>2009-02-05T21:49:00.002+01:00</published><updated>2009-02-05T22:15:14.914+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse Modeling Framework - edycja druga</title><content type='html'>Tak więc udało mi się w końcu kupić książkę na którą od dawna czekałem. &lt;a href="http://www.amazon.com/EMF-Eclipse-Modeling-Framework-2nd/dp/0321331885/"&gt;EMF wydanie drugie&lt;/a&gt; w przeciwieństwie do pierwszego nie ma już postaci JavaDoca :) &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SYtRgMqsL_I/AAAAAAAAAaI/LhmctC5Z5Jo/s1600-h/IMG_0915.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SYtRgMqsL_I/AAAAAAAAAaI/LhmctC5Z5Jo/s320/IMG_0915.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5299419000129466354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Książka wylądowała na zaszczytnej czołowej pozycji w mojej domowej biblioteczce. Do kolekcji brakuje mi jeszcze książki &lt;a href="http://www.amazon.com/Eclipse-Modeling-Project-Domain-Specific-Language/dp/0321534077/"&gt;DSL\GMF&lt;/a&gt;, &lt;a href="http://www.amazon.com/Equinox-OSGi-Power-Behind-Eclipse/dp/0321585712/"&gt;Equinox/OSGI&lt;/a&gt; oraz &lt;a href="http://www.amazon.com/Contributing-Eclipse-Principles-Patterns-Plug-Ins/dp/0321205758/"&gt;legendarnej książki&lt;/a&gt; Ericha Gammy, od której zacząłem swoją przygodę z Eclipse kilka lat temu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-1376480867186041990?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/1376480867186041990/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=1376480867186041990' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1376480867186041990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1376480867186041990'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/02/eclipse-modeling-framework-edycja-druga.html' title='Eclipse Modeling Framework - edycja druga'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-Hz5kL7u4E4/SYtRgMqsL_I/AAAAAAAAAaI/LhmctC5Z5Jo/s72-c/IMG_0915.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-733211374141354903</id><published>2009-02-02T19:35:00.003+01:00</published><updated>2009-02-02T20:05:06.969+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><title type='text'>Eclipse w bankowości</title><content type='html'>Już za tydzień odbędzie się w Londynie kolejne spotkanie poświęcone wykorzystaniu środowiska Eclipse jako bazy dla nowoczesnego oprogramowania dla bankowości. Oj będzie się działo. Projektanci i architekci z blisko 40 banków/instytucji finansowych oraz firm tworzących rozwiązania dla tego sektora, w sumie ponad 80 osób. Tematem przewodnim klasycznie będzie BIRT, DSL oraz OSGI. Pełna agenda spotkania znajduje się pod tym adresem:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/EclipseBankingDayLondon"&gt;http://wiki.eclipse.org/EclipseBankingDayLondon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jeszcze nie zdecydowałem się do końca które prezentacje wybrać, to naprawdę trudna sprawa by z czegoś zrezygnować. Myślę jednak, że wybiorę tematy mi najbliższe czyli wszystkie mutacje modelowania czegokolwiek ze szczyptą BIRT’a jako przyprawą całości. Półtorej roku temu podczas ESE w Ludwigsburgu odkryłem oAW które naprawdę ułatwiło mi życie, mam nadzieję że i tym razem uda mi się wrócić z jakąś nową zdobyczą. Na pewno będą nią ciekawe znajomości :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-733211374141354903?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/733211374141354903/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=733211374141354903' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/733211374141354903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/733211374141354903'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/02/eclipse-w-bankowosci.html' title='Eclipse w bankowości'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-1940881179680783543</id><published>2009-01-25T18:34:00.017+01:00</published><updated>2009-01-25T22:50:34.973+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Tekstowe języki specjalizowane</title><content type='html'>Przez kilka ostatnich miesięcy nie miałem czasu by zaktualizować bloga. Ciągły brak czasu związany z pracą oraz planowaniem pewnej dalekiej wyprawy etc. (która niestety została odwołana). W tym czasie w świecie modelowania wydarzyło się naprawdę sporo. Gdyby to wszystko chcieć tutaj opisać to pewnie mój blog zmieniłby się w wielki spis treści z listą odnośników. Kilka jednak elementów zasługuje na wyróżnienie/przypomnienie. &lt;br /&gt;&lt;br /&gt;Bez wątpienia jednym z nich jest prezentacja &lt;a href="http://blog.jaoo.dk/2008/10/07/the-future-of-programming-languages/"&gt;'Przyszłość języków programowania'&lt;/a&gt; z konferencji &lt;a href="http://blog.jaoo.dk/"&gt;JAOO&lt;/a&gt; która odbyła się kilka miesięcy temu. Andres Hejlsberg, architekt z Microsoftu prezentuje jak języki zmieniały się w ostatnich latach oraz jakie stoją przed nimi kolejne wyzwania. Polecam prezentację ogląda się jak dobry film. Oczywiście szczególną uwagę warto zwrócić na zalety/cechy języków deklaratywnych/specjalizowanych :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.jaoo.dk/2008/10/07/the-future-of-programming-languages/"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 235px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/SXykBySma7I/AAAAAAAAAYs/r9FVjkslJUw/s320/cs.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5295287612467473330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Skoro już jestem w klimatach MS nie mogę pominąć &lt;a href="http://channel9.msdn.com/tags/pdc2008.oslo/"&gt;platformy Oslo&lt;/a&gt; zaprezentowanej na PDC2008. Poniższe linki prowadzą do poszczególnych fragmentów prezentacji. Na mnie największe wrażenie zrobiła interaktywność narzędzia do &lt;a href="http://channel9.msdn.com/pdc2008/TL31/"&gt;tworzenia gramatyk&lt;/a&gt;, taki xText na sterydach. Trzeba jednak pamiętać że to tylko prezentacja wersji alfa i sporo czasu upłynie zanim rozwiązanie ujrzy światło dzienne. Pewnie także niektóre elementy ulegną zmianie inne pewnie zostaną dodane (brak mechanizmu generacji kodu). &lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://channel9.msdn.com/tags/pdc2008.oslo/"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 187px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SXy6CHImZQI/AAAAAAAAAZE/P2EuuU5Kwlc/s200/oslo-wstep.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5295311807318484226" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://channel9.msdn.com/tags/pdc2008.oslo/"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 186px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SXy6G7kkn9I/AAAAAAAAAZM/1HK4k48R9xU/s200/oslo+31.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5295311890113929170" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://channel9.msdn.com/tags/pdc2008.oslo/"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 186px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SXy7D3-gx-I/AAAAAAAAAZU/nWnmS1pMzh8/s200/oslo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5295312937121007586" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Technologie te nie są oczywiście czymś zupełnie nowym. To raczej odpowiedź na dynamicznie rozwijający się rynek rozwiązań DSL bazowanych na platformie Eclipse Modeling. Większość elementów to wprost odpowiedniki technologii ze świata Eclipse: &lt;a href="http://www.eclipse.org/modeling/emf/"&gt;EMF Ecore&lt;/a&gt;, &lt;a href="http://wiki.eclipse.org/Xtext"&gt;xText&lt;/a&gt;  etc. Nie zmniejsza to jednak wartości jaką wnosi tutaj Microsoft zarówno w warstwie technicznej (narzędzia interpretujące gramatykę w locie) jak i czysto marketingowej (szansa na większą popularyzację tematu). &lt;br /&gt;&lt;br /&gt;Przykładowo bezpośrednim odpowiednikiem MGrammar jest xText. Technologia ta powstała jako składnik oAW jednak w grudniu ubiegłego roku dostała oficjalnie włączona do platformy Eclipse Modeling jako baza dla modułu &lt;a href="http://wiki.eclipse.org/TMF"&gt;TMF&lt;/a&gt; (razem z &lt;a href="http://wiki.eclipse.org/TCS"&gt;TCS&lt;/a&gt;). Poniżej link do prezentacji xText z ubiegłorocznej konferencji &lt;a href="http://qconlondon.com/london-2008/conference/"&gt;QCon2008&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.infoq.com/presentations/Textual-DSL-Markus-Voelter"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 243px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SXzVMW_R6yI/AAAAAAAAAZk/xt8s0as2y6w/s320/xtext.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5295341670187002658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No i na zakończenie w formie podsumowania wspólna dyskusja twórców obu rozwiązań. Czyli kolejny odcinek podcastu dla programistów SE-Radio&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.se-radio.net/podcast/2009-01/episode-123-microsoft-oslo-don-box-and-doug-purdy"&gt;Episode 123: Microsoft OSLO with Don Box and Doug Purdy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Rok 2009 zapowiada się naprawdę interesująco!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-1940881179680783543?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/1940881179680783543/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=1940881179680783543' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1940881179680783543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1940881179680783543'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2009/01/tekstowe-jzyki-specjalizowane.html' title='Tekstowe języki specjalizowane'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/SXykBySma7I/AAAAAAAAAYs/r9FVjkslJUw/s72-c/cs.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5779599602317027405</id><published>2008-11-30T16:41:00.037+01:00</published><updated>2008-12-02T08:37:47.884+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><category scheme='http://www.blogger.com/atom/ns#' term='wrocław'/><title type='text'>Pierwsza edycja Eclipse Demo Camp we Wrocławiu zakończona sukcesem!</title><content type='html'>Pierwsza wrocławska edycja Eclipse Demo Camp już za nami! &lt;br /&gt;&lt;br /&gt;Bez wątpienia udało nam się osiągnąć sukces. Zaplanowaną maksymalną liczbę 30 uczestników przekroczyliśmy już po pierwszym dniu od rozpoczęcia rejestracji w systemie Oiola. Strona rejestracyjna pojawiła się we wtorek nocą a w środę już musieliśmy ją zablokować z obawy o ilość miejsc :)&lt;br /&gt;&lt;br /&gt;Czas na podziękowania :) Myślę że całość nie byłaby możliwa bez wsparcia &lt;a href="http://www.eclipsesummerschool.com/"&gt;Jacka Pospychały&lt;/a&gt; oraz &lt;a href="http://grzegorzduda.blogspot.com/"&gt;Grześka Dudy&lt;/a&gt;. Pomogli mi oni między innymi zorganizować odpowiednią reklamę tej imprezy bez której prawdopodobnie nikt by się o niej nie dowiedział. &lt;a href="http://www.milewski.ws/"&gt;Łukasza Milewskiego&lt;/a&gt; oraz ponownie Jacka którzy zdecydowali się poświęcić czas wolny i przyjechać do Wrocławia by opowiedzieć wam o Eclipse. Oraz oczywiście wszystkim osobom z &lt;a href="http://www.sygnity.pl/"&gt;Sygnity&lt;/a&gt; które pomogły mi w sprawach logistycznych, oraz zorganizowały finansowanie całości. A jak wyglądało samo spotkanie? &lt;br /&gt;&lt;br /&gt;Wystartowaliśmy z małym opóźnieniem ok. godziny 11.20. Pierwszy był Łukasz który zaprezentował jak wykorzystać platformę &lt;a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform"&gt;Eclipse RCP&lt;/a&gt; jako podstawę dla własnej aplikacji desktopowej. Później przerwa na dyskusję (oraz oczywiście zjedzenie kanapek z... łososiem!). Po przerwie Jacek pokazał jak aplikację RCP przekształcić do postaci aplikacji webowej przy użyciu technologii &lt;a href="http://www.eclipse.org/rap/"&gt;Eclipse RAP&lt;/a&gt; (praktycznie bez zmian w kodzie - copy&amp;paste). Spotkanie zakończyło się moim wykładem o &lt;a href="http://www.eclipse.org/modeling/"&gt;Eclipse Modeling&lt;/a&gt; i &lt;a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language"&gt;DSL&lt;/a&gt;. Podobnie jak wcześniej w &lt;a href="http://deepdiveinto.blogspot.com/2008/07/eclipse-democamps-2008-podsumowanie.html"&gt;Krakowie&lt;/a&gt; postarałem się zrobić szybki przekrój przez całą rodzinę projektów na bazie której budujemy DSL'e (EMF/GMF/xTEXT/ANTLR etc). &lt;br /&gt;&lt;br /&gt;W trakcie prezentacji staraliśmy się robić demonstracje. Mam nadzieję że się one podobały (nawet jeżeli nie zawsze wszystko się udawało). Zdjęcia z imprezy można znaleźć pod tym adresem: &lt;a href="http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw"&gt;http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/STK5yehGpuI/AAAAAAAAAUw/O_tlQQXzEoY/s200/IMG_0450.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5274482390440781538" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/STK5sG6RYaI/AAAAAAAAAUo/IuuJl7Obubk/s200/IMG_0455.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5274482281024676258" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/STK5lxnJQmI/AAAAAAAAAUg/STdqb6iIobc/s200/IMG_0502.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5274482172228092514" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 144px; height: 200px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/STK5gIyuwfI/AAAAAAAAAUY/JGAqnaBo_-M/s200/IMG_0464-1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5274482075371487730" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 144px; height: 200px;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/STK5a83nkCI/AAAAAAAAAUQ/Oe9QP_rA5Hc/s200/IMG_0486.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5274481986271416354" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/STK5IkEmfDI/AAAAAAAAAUI/S2PZ-o75w5A/s200/IMG_0504.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5274481670377339954" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Myślę że nie będzie to ostatnia eclipsowa impreza we Wrocławiu. &lt;br /&gt;&lt;br /&gt;Osobiście mam także nadzieję że udało mi się przekonać część z was do idei tworzenia języków opisu problemu. To wcale nie tak odległa przyszłość jak by się mogło wydawać. Myślę że kolejna rewolucja jest tuż za rogiem a dowodem na to jest premiera języka 'M' (o którym napiszę następnym razem). Jak się do tych zmian przygotować? Myślę że najlepszym rozwiązaniem będzie wyjazd na CodeGeneration 2009 (mam nadzieję że w tym roku mi się uda :)  &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.codegeneration.net/cg2009/"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 104px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/STMh0j76PsI/AAAAAAAAAWA/1_G4vjrXvE0/s400/main-header.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5274596775464419010" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5779599602317027405?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5779599602317027405/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5779599602317027405' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5779599602317027405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5779599602317027405'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/11/pierwsza-edycja-eclipse-democamp-we.html' title='Pierwsza edycja Eclipse Demo Camp we Wrocławiu zakończona sukcesem!'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/STK5yehGpuI/AAAAAAAAAUw/O_tlQQXzEoY/s72-c/IMG_0450.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-1896162567688440366</id><published>2008-11-28T16:49:00.008+01:00</published><updated>2008-11-30T16:40:03.504+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><category scheme='http://www.blogger.com/atom/ns#' term='wrocław'/><title type='text'>Eclipse DemoCamp 2008 Wrocław - ZMIANA LOKALIZACJI</title><content type='html'>W ostatniej chwili zdecydowaliśmy się zmienić lokalizację imprezy. Zarejestrowało się blisko dwa razy więcej osób niż się wcześniej spodziewaliśmy! Tym samym wcześniejsza lokalizacja (Robotnicza 46) okazała się po prostu za mała. &lt;br /&gt;&lt;br /&gt;Na szczęście dzięki uprzejmości firmy &lt;span style="font-weight:bold;"&gt;Sygnity&lt;/span&gt; mamy nową lokalizację - dużą salę konferencyjną! &lt;br /&gt;&lt;br /&gt;NOWY ADRES: &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sygnity (budynek. West Forum, Business Center) &lt;/span&gt;&lt;br /&gt;Sala konferencyjna, pok 140 (pierwsze piętro) &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ul. Strzegomska 140 &lt;/span&gt;&lt;br /&gt;Wrocław &lt;br /&gt;&lt;br /&gt;Rozpoczynamy o &lt;span style="font-weight:bold;"&gt;godzinie 11.00&lt;/span&gt;&lt;br /&gt;dojazd autobusami: &lt;br /&gt;142, 149, 132, 139, 406, 409 (kierunek lotnisko)&lt;br /&gt;(przystanek na żądanie)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oiola.com/e/247-eclipse-democamp-2008-wroclaw/"&gt;http://oiola.com/e/247-eclipse-democamp-2008-wroclaw/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-Hz5kL7u4E4/STAVGqnvz2I/AAAAAAAAASo/UdhjLOJ4zTU/s1600-h/sygnity.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_-Hz5kL7u4E4/STAVGqnvz2I/AAAAAAAAASo/UdhjLOJ4zTU/s320/sygnity.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5273738367915249506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nie muszę chyba wspominać że całość imprezy sponsoruje firma Sygnity :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="www.sygnity.pl"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 133px;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/STAXdbJVdeI/AAAAAAAAAS4/FD00kh_4GX8/s320/sygnity_logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5273740957921408482" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-1896162567688440366?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/1896162567688440366/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=1896162567688440366' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1896162567688440366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1896162567688440366'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/11/eclipse-democamp-2008-wrocaw-zmiana.html' title='Eclipse DemoCamp 2008 Wrocław - ZMIANA LOKALIZACJI'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-Hz5kL7u4E4/STAVGqnvz2I/AAAAAAAAASo/UdhjLOJ4zTU/s72-c/sygnity.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7666964995536483939</id><published>2008-11-25T20:38:00.006+01:00</published><updated>2008-11-30T16:39:47.445+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><category scheme='http://www.blogger.com/atom/ns#' term='wrocław'/><title type='text'>Eclipse DemoCamp 2008 - Wrocław</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SSxVUtj1VVI/AAAAAAAAARw/oBgW_olTMfY/s1600-h/eclipse-logo-white.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 309px; height: 180px;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SSxVUtj1VVI/AAAAAAAAARw/oBgW_olTMfY/s320/eclipse-logo-white.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5272683078059644242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interesujesz się środowiskiem Eclipse? Chciałbyś się dowiedzieć jak wykorzystać Eclipse nie tylko do programowania w Javie? Zapraszamy na spotkanie użytkowników / deweloperów środowiska Eclipse - &lt;strong&gt;Eclipse DemoCamp 2008 Wrocław&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Wykłady, warsztaty, prezentacje...&lt;br /&gt;&lt;br /&gt;Eclipse RAP - Jacek Pospychała, IBM Eclipse Support Center&lt;br /&gt;Eclipse RCP - Łukasz Milewski, Sabre Polska&lt;br /&gt;Eclipse Modeling (DSL) - Grzegorz Białek, Sygnity&lt;br /&gt;&lt;br /&gt;Spotkanie planowane jest na 2.5 – 3h od godziny 11.00 w najbliższą sobotę tj. 29.11.2008. Jak całość będzie wyglądała? Mamy trzech prezenterów i trzy ciekawe tematy.&lt;br /&gt;&lt;br /&gt;Łuszasz Milewski z Sabre, nauczy nas jak wykorzystać platformę Eclipse jako podstawę dla własnej aplikacji desktopowej. Jeżeli ktoś programował w Swingu będzie miło zaskoczony o ile łatwiej można zbudować ładniejszą aplikację w RCP. &lt;br /&gt;&lt;br /&gt;Jacek Pospychała z IBM'a pokaże jak taką aplikację RCP przekształcić do postaci aplikacji webowej za pomocą technologii RAP (z zachowaniem identycznej bazy kodowej!) Wydaje się to niemożliwe? A jednak! Technologia ta leży u podstaw Eclipse 4.0 który planowany jest dopiero na 2010r - będzie więc to prezentacja prawdziwie wizjonerska :)&lt;br /&gt;&lt;br /&gt;Ostatnim tematem jest tworzenie tzw. języków i narzędzi specyficznych dla problemu. Postaram się was przekonać do teorii że wszystko da się opisać za pomocą modeli. Wyjaśnię także co się kryje za kilkoma trzyliterowymi skrótami takimi jak EMF, GMF, OAW oraz pięcioliterowym ANTLR.&lt;br /&gt;&lt;br /&gt;Ponieważ zgłosiło się stosunkowo mało osób jest szansa by spotkanie zorganizować w formie warsztatu połączonego z dyskusją. Myślę że warto więc zabrać ze sobą komputer.&lt;br /&gt;&lt;br /&gt;Miejsce? Na razie jest niestety jeszcze nie potwierdzone więc warto zaglądać na tą stronę:&lt;br /&gt;&lt;a href="http://oiola.com/e/247-eclipse-democamp-2008-wroclaw/"&gt;http://oiola.com/e/247-eclipse-democamp-2008-wroclaw/&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Wszystko zależy od ilości chętnych którzy się zarejestrują...&lt;br /&gt;&lt;br /&gt;&lt;iframe style="border: none" width="400" height="290" src="http://oiola.com/widgets/247/simple_form_alternative/?title=1&amp;date=1"&gt; &lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7666964995536483939?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7666964995536483939/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7666964995536483939' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7666964995536483939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7666964995536483939'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/11/eclipse-democamp-2008-wrocaw.html' title='Eclipse DemoCamp 2008 - Wrocław'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-Hz5kL7u4E4/SSxVUtj1VVI/AAAAAAAAARw/oBgW_olTMfY/s72-c/eclipse-logo-white.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8521274256933833420</id><published>2008-09-06T15:09:00.012+02:00</published><updated>2008-11-30T16:39:05.071+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><category scheme='http://www.blogger.com/atom/ns#' term='wrocław'/><title type='text'>Eclipse DemoCamp we Wrocławiu?</title><content type='html'>Kilka dni temu &lt;a href="http://www.eclipsesummerschool.com/eclipsesummerschool2008/Powitanie.html"&gt;Jacek Pospychała&lt;/a&gt; przesłał mi ciekawą informację. W listopadzie planowany jest kolejny cykl spotkań dla osób zainteresowanych środowiskiem Eclipse tzw. &lt;a href="http://www.eclipse.org/community/democamp/organizedemocamp.php"&gt;Eclipse DemoCamp&lt;/a&gt;. W czerwcu uczestniczyłem w spotkaniach zorganizowanych w &lt;a href="http://deepdiveinto.blogspot.com/2008/07/eclipse-democamps-2008-podsumowanie.html"&gt;Poznaniu oraz Krakowie&lt;/a&gt; i bardzo mi się ta inicjatywa spodobała (darmowe piwo, pizza etc.)&lt;br /&gt;&lt;br /&gt;W głowie pojawiła mi się myśl: 'A może spróbować zorganizować takie spotkanie także we Wrocławiu?'. Założyłem &lt;span style="font-weight:bold;"&gt;testowo&lt;/span&gt; taką stronę:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2008/Wroclaw"&gt;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2008/Wroclaw&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nie jest ona jeszcze połączona z &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2008"&gt;oficjalną listą&lt;/a&gt; ponieważ nie ma pewności czy spotkanie uda się zrealizować. Wszystko zależy od liczby zainteresowanych. Na razie mam potwierdzenie ewentualnego uczestnictwa kogoś ze &lt;a href="http://www.eclipsesummerschool.com/eclipsesummerschool2008/Powitanie.html"&gt;Szkoły letniej Eclipse&lt;/a&gt;, sam też mogę opowiedzieć coś o modelowaniu. Jeżeli ktoś byłby zainteresowany można się tam wpisać na listę lub podesłać mi informację. &lt;br /&gt;&lt;br /&gt;Ja wybieram się na urlop, po powrocie zobaczę czy coś takiego ma sens :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8521274256933833420?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8521274256933833420/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8521274256933833420' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8521274256933833420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8521274256933833420'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/09/eclipsecamp-we-wrocawiu.html' title='Eclipse DemoCamp we Wrocławiu?'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-901439836067992525</id><published>2008-09-06T15:01:00.004+02:00</published><updated>2008-09-06T15:40:18.721+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Modelowanie traktorów</title><content type='html'>Do tej pory myślałem że na temat zastosowania notacji UML jako języka modelowania powiedziano już wszystko. &lt;a href="http://www.blogger.com/profile/11751196715155150517"&gt;Sven Efftinge&lt;/a&gt; (&lt;a href="http://www.itemis.com/"&gt;Itemis&lt;/a&gt;) pokazał jednak że temat ten nie został jeszcze wyczerpany. &lt;br /&gt;&lt;br /&gt;Wykorzystał on swoje wieloletnie doświadczenie by w notacji tej zaprojektować uniwersalny system opisu ciągników rolniczych zwanych potocznie traktorami. Polecam, naprawdę warto!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://effi-blog.blogspot.com/2008/09/product-line-engineering-with-uml.html"&gt;Product-line engineering with UML&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-901439836067992525?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/901439836067992525/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=901439836067992525' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/901439836067992525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/901439836067992525'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/09/modelowanie-traktorw.html' title='Modelowanie traktorów'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5163078270314255109</id><published>2008-09-03T20:17:00.005+02:00</published><updated>2008-09-03T21:10:30.106+02:00</updated><title type='text'>Google Chrome... i RSS</title><content type='html'>Wczoraj zainstalowałem tą przeglądarkę dla testów. Na początku nie wiedziałem jak uruchomić czytnik RSS który od dłuższego czasu jest dla mnie najważniejszym elementem przeglądarki. Nie mogłem nic takiego znaleźć i już miałem się poddać gdy przeczytałem że należy po prostu wejść na stronę Google Reader i zrobić do niej skrót na pasku zadań. &lt;br /&gt;&lt;br /&gt;Dopiero wtedy zrozumiałem o co tak naprawdę tutaj chodzi. Zamiast dziesiątek opcji w przeglądarce, pluginów etc. każdy może stworzyć małą wyspecjalizowaną aplikację www. Użytkownik robi sobie do niej skrót na pulpicie i traktuje ją nie jak kolejny link do przeglądarki ale normalną aplikację (nie ma ona nawet paska adresu). Pomysł prosty i rewelacyjny.&lt;br /&gt;&lt;br /&gt;Zrobiłem już dziś 5 linków do odwiedzanych aplikacji (między innymi Blogger). Chyba powoli jestem "Web 2.0" :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.google.com/reader"&gt;Google RSS Reader&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5163078270314255109?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5163078270314255109/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5163078270314255109' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5163078270314255109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5163078270314255109'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/09/google-chrome-i-rss.html' title='Google Chrome... i RSS'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-1385320152313691166</id><published>2008-08-27T23:39:00.003+02:00</published><updated>2008-08-27T23:46:52.117+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>UPGRADE 04/2008 - Model Driven Software Development</title><content type='html'>Kilka dni temu na swoim blogu &lt;a href="http://cedric.brun.free.fr/wordpress/?p=127"&gt;Cédric Brun&lt;/a&gt; (lider projektu &lt;a href="http://www.eclipse.org/modeling/emft/?project=compare"&gt;EMF Compare&lt;/a&gt;) umieścił bardzo interesującego linka. Prowadzi on do kwietniowego numeru dwumiesięcznika &lt;a href="http://www.upgrade-cepis.org/issues/2008/2/upgrade-vol-IX-2.pdf" target="_blank"&gt;UPGRADE&lt;/a&gt; w całości poświęconego tematowi MDD (Model Driven Development). Nigdy wcześniej nie trafiłem na to czasopismo a szkoda ;D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.upgrade-cepis.org/issues/2008/2/upgrade-vol-IX-2.pdf" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SLXCCkyIuWI/AAAAAAAAAJo/jJ7vIqlcHNg/s200/upgrade.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5239307091004930402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Szczególnie polecam:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Domain-Specific IDE&lt;/strong&gt;  (Steve Cook, Stuart Kent - &lt;a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx"&gt;DSL Tools&lt;/a&gt;, Microsoft Visual Studio)&lt;br /&gt;Kilka słów na temat koncepcji określanej jako DSL IDE. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Model Differences in the Eclipse Modelling Framework&lt;/strong&gt; (Cédric Brun, Alfonso Pierantonio)&lt;br /&gt;Omówienie założeń projektu &lt;a href="http://www.eclipse.org/modeling/emft/?project=compare"&gt;EMF Compare&lt;/a&gt; czyli jak nie wystraszyć użytkownika XMI.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Model-Driven Architecture at Eclipse&lt;/strong&gt; (Richard C. Gronback [&lt;a href="http://www.eclipse.org/modeling/gmf/"&gt;GMF&lt;/a&gt;], Ed Merks [&lt;a href="http://www.eclipse.org/modeling/emf/"&gt;EMF&lt;/a&gt;])&lt;br /&gt;Trochę na temat projektów rodziny Eclipse Modeling Project oraz ich relacji z propozycjami OMG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-1385320152313691166?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/1385320152313691166/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=1385320152313691166' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1385320152313691166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1385320152313691166'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/08/upgrade-042008-model-driven-software.html' title='UPGRADE 04/2008 - Model Driven Software Development'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-Hz5kL7u4E4/SLXCCkyIuWI/AAAAAAAAAJo/jJ7vIqlcHNg/s72-c/upgrade.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-6620540757015900649</id><published>2008-08-19T22:59:00.012+02:00</published><updated>2008-08-20T08:13:12.578+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Wstęp do DSL</title><content type='html'>Po przeczytaniu komentarza &lt;a href="http://jlaskowski.blogspot.com/"&gt;Jacka Laskowskiego&lt;/a&gt; na temat sposobów popularyzacji zadadnień tworzenia narzędzi eclipsowych, koncepcji MDD (Model Driven Development) czy &lt;a href="http://en.wikipedia.org/wiki/Domain-Specific_Modeling"&gt;DSM/DSL&lt;/a&gt; (Domain Specific Modeling) postanowiłem coś zrobić w tym temacie. Myślę że dobrym początkiem może być prosty tutorial.&lt;br /&gt;&lt;br /&gt;Co jednak zaprezentować by jednocześnie wytłumaczyć podstawy zagadnienia a przy okazji wzbudzić zainteresowanie tematem? Jedno jest pewne - nie może to być generacja pustych interfejsów :) W internecie można znaleźć setki prostych kursów jak wygenerować schemat klas, bazy danych z modelu etc. Nuda. Postanowiłem pokazać coś innego, co moim zdaniem pozwoli lepiej reprezentować powyższe koncepcje. Zamiast modelować kod strukturalny stwórzmy kod logiki. Naszym zadaniem będzie utworzenie miniaturowego systemu który biznesowy opis (reguły rozsyłania wiadomości) przekształci w działający kod.&lt;br /&gt;&lt;br /&gt;Wymagania dla zadania wyglądają następująco. Musimy utworzyć narzędzie pracujące na poziomie problemu (biznesowy opis zachowania) które będzie potrafiło generować coś zrozumiałego dla maszyny (kod wykonywalny). Czy to możliwe? Zobaczymy... &lt;br /&gt;&lt;br /&gt;Jako platformę docelową wybrałem prosty silnik świadczący usługę rozsyłania wiadomości pomiędzy nazwanymi  kolekcjami (taki uproszczony &lt;a href="http://www.eaipatterns.com/ContentBasedRouter.html"&gt;wzorzec rozsyłania wiadomości z EAI&lt;/a&gt;). Nasz silnik oczekuje jako swojej konfiguracji klas reprezentujących zasady działania (interfejs IRule). Reguły te modelowane będą za pomocą edytora pracującego według zasad opisanych poprzez pewien model (meta-model). Żeby nie komplikować wykorzystamy dynamiczny edytor Ecore. Nie jest to oczywiście rozwiązanie produkcyjne jednak na potrzeby prostego tutoriala wystarczy. Osoby zainteresowane tematem budowy własnych edytorów DSL odsyłam do swojej &lt;a href="http://deepdiveinto.blogspot.com/2008/07/eclipse-democamps-2008-podsumowanie.html"&gt;prezentacji z EclipseCamp 2008&lt;/a&gt; (trzeba jakoś reklamować swojego bloga).&lt;br /&gt;&lt;br /&gt;Przykładowy meta-model naszego języka zawiera zaledwie dwie proste reguły:&lt;br /&gt;- skopiuj wszystko z kolekcji źródłowej do kolekcji docelowej&lt;br /&gt;- rozbij kolekcję źródłową na podzbiory na podstawie wartości parametru.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SKs048gsWpI/AAAAAAAAAIo/kYHwQTFodDE/s1600-h/metamodel.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SKs048gsWpI/AAAAAAAAAIo/kYHwQTFodDE/s400/metamodel.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5236337144668904082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jak widać model nie jest zbyt zaawansowany. Fragment opisujący wyrażenie można nazwać co najwyżej "edukacyjnym", całość pozbawiona jest też nadrzędnego kontekstu. Podział oraz integracja modeli to temat złożony, wykraczający poza ramy tego kursu. Myślę jednak że na nasze potrzeby prosty meta-model w zupełności wystarczy.&lt;br /&gt;&lt;br /&gt;Korzystając z edytora dynamicznego (opcja "Create Dynamic Instance") tworzymy dwie proste reguły:&lt;br /&gt;- pobierz listę z kolekcji 'src' do kolekcji 'dst'&lt;br /&gt;- pobierz listę klientów z kolekcji 'customers' i dorosłych umieść na 'adults', dzieci na 'children', nieprawidłowe elementy na 'unknown'&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SKunJzIEJkI/AAAAAAAAAJY/tqOYWysjJyg/s1600-h/edytor.GIF"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SKunJzIEJkI/AAAAAAAAAJY/tqOYWysjJyg/s400/edytor.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5236462778533029442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;W trybie tekstowym utworzona instancja modelu powinna wyglądać następująco:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SKs1LbMAKFI/AAAAAAAAAIw/ViURwAkpVBw/s1600-h/instancja.GIF"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_-Hz5kL7u4E4/SKs1LbMAKFI/AAAAAAAAAIw/ViURwAkpVBw/s400/instancja.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5236337462141266002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ostatni krok to utworzenie szablonu generacji kodu. Nie jest to trudne. Kod który zostanie wygenerowany musi wykonywać operacje opisane przez meta-model. Utworzona instancja zawiera przykładowe wartości parametrów których użyjemy podczas testów. W naszym przypadku musimy zaimplementować prosty interfejs reguły (IRule) naszego silnika.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SKs9iSI7o6I/AAAAAAAAAI4/PDDz762utNM/s1600-h/interfejs.GIF"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SKs9iSI7o6I/AAAAAAAAAI4/PDDz762utNM/s400/interfejs.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5236346650942481314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pisanie szablonu rozpoczynamy od utworzenia testów. Ważne jest by nie starały się one weryfikować formatowania generowanego kodu ale logikę jego wykonania. Kod ten wielokrotnie może ulegać zmianom (optymalizacja etc.) jednak kontrakt z pozostałymi elementami systemu powinien być zachowany. W związku z tym w testach opisujemy tylko zasady interakcji z otoczeniem (nie tworzymy implementacji silnika etc.) Przykładowy test wygląda następująco:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SKtE-kh1hlI/AAAAAAAAAJI/jvdxoRFiNlg/s1600-h/test.GIF"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_-Hz5kL7u4E4/SKtE-kh1hlI/AAAAAAAAAJI/jvdxoRFiNlg/s400/test.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5236354833496507986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tworzenie testów pomaga nam lepiej zrozumieć problem jaki staramy się rozwiązać. Są one także niezmiernie pomocne w tropieniu literówek etc. Mając testy oraz przykładową instancję modelu bez trudu tworzymy prosty szablon kodu.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SKtJjSwjxTI/AAAAAAAAAJQ/tZk9WNcJSo0/s1600-h/template.GIF"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_-Hz5kL7u4E4/SKtJjSwjxTI/AAAAAAAAAJQ/tZk9WNcJSo0/s400/template.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5236359862428091698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Testy zadziałały - zadanie zakończone ;D&lt;br /&gt;&lt;br /&gt;Bardziej szczegółowe informacje znaleźć można na stronach &lt;a href="http://www.eclipse.org/modeling/"&gt;www.eclipse.org/modeling&lt;/a&gt;. Jeżeli temat kogoś zainteresował fajnie byłoby gdyby dodał jakiś komentarz, będę wiedział czy warto go kontynuować (polecam także &lt;a href="http://deepdiveinto.blogspot.com/search/label/ast"&gt;tutorial z AST&lt;/a&gt;  jako wstęp do zagadnienie budowy notacji tekstowej dla modeli).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-6620540757015900649?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/6620540757015900649/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=6620540757015900649' title='Komentarze (8)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6620540757015900649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6620540757015900649'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/08/wstp-do-dsl-cz-pierwsza.html' title='Wstęp do DSL'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-Hz5kL7u4E4/SKs048gsWpI/AAAAAAAAAIo/kYHwQTFodDE/s72-c/metamodel.gif' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-397297235223706742</id><published>2008-08-12T22:44:00.009+02:00</published><updated>2008-08-12T23:31:04.405+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Zakupy...</title><content type='html'>Korzystając z niskiego kursu dolara postanowiłem udać się na zakupy. Właśnie dostałem przesyłkę... no to mam lekturę na następnych kilka tygodni (a może miesięcy biorąc pod uwagę moje lenistwo i brak czasu)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Addison-Wesley/dp/0131495054"&gt;xUnit Test Patterns - Refactoring Test Code (Gerard Meszaros)&lt;/a&gt;&lt;br /&gt;Od kilku miesięcy próbowałem się zabrać do wskrzeszenia praktyki pisania testów. Wiem że to konieczność, stosowałem je w przeszłości i ratowały mi niejednokrotnie skórę lub umożliwiały testy gdy sprzęt był niedostępny. Od dłuższego czasu czyny nie szły jednak w parze z obietnicami a moja wiedza o TDD jest już niestety trochę nieaktualna (zakończyłem na jMock 1.x) Pomyślałem że warto się trochę podkształcić w tym temacie i w formie tabletki (niemałej biorąc pod uwagę wielkość tej 'bibli') nadrobić stracony czas. Książka jest z serii sygnowanej przez Fowlera więc pewnie będzie dobrym nauczycielem. Mam nadzieję że jest równie fajna jak '&lt;a href="http://www.amazon.com/Test-Driven-Development-Addison-Wesley-Signature/dp/0321146530"&gt;Test Driven Development: By Example&lt;/a&gt;' od której kiedyś zaczynałem nauke ;D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Microguide-Process-Modeling-BPMN/dp/1419693107"&gt;The Microguide to Process Modeling in BPMN (Tom Deveboise, Rick Geneva)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Essential-Business-Process-Modeling-Michael/dp/0596008430"&gt;Essential Business Process Modeling (Michael Havey)&lt;/a&gt;&lt;br /&gt;Na opis notacji &lt;a href="http://www.bpmn.org/"&gt;BPMN&lt;/a&gt; trafiłem ponad dwa lata temu analizując rozwiązanie firmy Intalio. Temat mnie wtedy bardzo zainteresował. Co prawda jestem fanem podejścia DSL (najlepsze dopasowania języka do konkretnych wymagań) jednak czasami warto wykorzystać (rozbudować) gotową notację. Przeanalizowałem wtedy metamodel edytora jednak temat umarł po kilku tygodniach śmiercią naturalną. Może jak nauczę się jak poprawnie modelować procesy w tej notacji to wrócę do tematu... kto wie ;D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Domain-Specific-Modeling-Enabling-Full-Generation/dp/0470036664"&gt;Domain Specific Modeling (Steven Kelly, Juha-Pekka Tolvanen)&lt;/a&gt;&lt;br /&gt;Ostatnim zakupem jest kolejna książka o DSL. Kolejna? Chyba się uzależniłem... a tak serio nie mogłem przejść obojętnie obok książki napisanej przez ludzi z &lt;a href="http://www.metacase.com/"&gt;MetaCase&lt;/a&gt;. Opracowywali oni rozwiązania DSL gdy ja chodziłem do szkoły podstawowej :) Myślę że na pewno coś ciekawego tutaj znajdę.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oczywiście jak tylko książki przeczytam uzupełnię ranking gwiazdek ;D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-397297235223706742?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/397297235223706742/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=397297235223706742' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/397297235223706742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/397297235223706742'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/08/zakupy.html' title='Zakupy...'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8127725785495473494</id><published>2008-08-12T21:00:00.003+02:00</published><updated>2008-08-12T21:23:25.482+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Obsługa Apache ODE z poziomu Eclipse</title><content type='html'>Kilka minut temu na deweloperskiej grupie dyskusyjnej projektu &lt;a href="http://www.eclipse.org/bpel/"&gt;BPEL Designer&lt;/a&gt; pojawiła się ciekawa informacja. Zgłoszenie w bugzilli &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=243746"&gt;bug 243746&lt;/a&gt; zostało wykonane. Co to oznacza? Myślę że tytuł tego zgłoszenia wyjaśnia wszelkie wątpliwości: 'Runtime Integration with Apache ODE'. Co to &lt;a href="http://ode.apache.org/"&gt;Apache ODE&lt;/a&gt;? To silnik wykonawczy dla języka &lt;a href="http://en.wikipedia.org/wiki/Business_Process_Execution_Language"&gt;BPEL&lt;/a&gt; rozwijany od kilku lat przez fundację Apache (dawny kod z FiveSight PXE - aktualnie &lt;a href="http://www.intalio.com/"&gt;Intalio&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Jeżeli ktoś chce się pobawić Apache ODE zachęcam do testów. Wersja dostępna jest na razie tylko w CVS jednak poniższy PDF dokładnie wyjaśnia jak sobie skonfigurować środowisko testowe.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/deepdiveinto/Home/HelloWorld-BPELDesignerAndODE.pdf?attredirects=0"&gt;Hello World BPEL Process with the Eclipse BPEL Designer and ApacheODE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8127725785495473494?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8127725785495473494/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8127725785495473494' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8127725785495473494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8127725785495473494'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/08/obsuga-apache-ode-z-poziomu-eclipse.html' title='Obsługa Apache ODE z poziomu Eclipse'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-1437666909854660858</id><published>2008-07-18T22:32:00.010+02:00</published><updated>2008-08-02T19:31:18.110+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='praca'/><title type='text'>7, 4+, 1... start!</title><content type='html'>Mniej więcej rok temu założyłem tego bloga z okazji 6 rocznicy pracy zawodowej. Po roku czas na małe podsumowanie.&lt;br /&gt;&lt;br /&gt;Byłoby fajnie móc napisać że odwiedza go mnóstwo osób, jednak tak nie jest. Tematy eclipse, modelowania języków etc. sa i chyba pozostaną jeszcze ciągle tematem niszowym w Polsce. Trudno mi to czasami zrozumieć biorąc pod uwagę rosnące wymagania stawiane oprogramowaniu biznesowemu jak i coraz większą konkurencyjność na rynku IT. &lt;br /&gt;&lt;br /&gt;Moim zdaniem barierą jest ciągle początkowa złożoność problemu. Nie każdą firmę stać na miesiące szkoleń, projektów badawczych etc. wymaganych by móc wydajnie czerpać korzyści jakie kryją te technologie... Myślę jednak że będzie ona z czasem malała wraz z rozwojem narzędzi wspomagających proces modelowania języków, aż do momentu gdy każdy będzie mógł... no dobra chyba trochę się zagalopowałem ;)&lt;br /&gt;&lt;br /&gt;Czas na konkrety...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Na bloga średnio wchodziło 4 - 5 osób tygodniowo, w większości były to wizyty przypadkowe (trwające 0-10 sekund) jednak dziękuję każdemu kto poświęcił swój czas&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Najczęstsze miasta czytelników:&lt;br /&gt;Wrocław (to chyba ja i znajomi z pracy), Warszawa, Kraków oraz Poznań&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Najczęstsze słowa szukane:&lt;br /&gt;&lt;a href="http://deepdiveinto.blogspot.com/search/label/ast"&gt;'eclipse ast'&lt;/a&gt;, &lt;a href="http://deepdiveinto.blogspot.com/search/label/dsl"&gt;'dsl procesy biznesowe'&lt;/a&gt; oraz &lt;a href="http://deepdiveinto.blogspot.com/search/label/eclipse%20summit%202007"&gt;'eclipse summit'&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Najczęściej osoby trafiały z: &lt;br /&gt;&lt;a href="http://www.linkedin.com/in/gbialek"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://wiki.eclipse.org/Regional_Communities/Poland"&gt;Polskiego Eclipse Community&lt;/a&gt; oraz w ostatnich dniach z serwisu &lt;a href="http://www.java.pl/"&gt;Java.pl&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;i to tyle..&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;A tytuł?  Cóż... na początku lipca mineło 7 lat programowania w Javie, 4.5 roku na bazie Eclipse no a jedynka to moje walki z blogosferą. Liczby odwiedzin bloga nie podaję bo po odjęciu osób które spędziły tutaj 0-10 sekund nie jest zbyt imponująca ;D&lt;br /&gt;&lt;br /&gt;Kolejne podsumowanie za rok. Może jeżeli uda mi się zrobić więcej prezentacji o DSL'ach to zdobędę 1-2 nowych czytelników? To byłby sukces o którym nie wypada nawet myśleć ;D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-1437666909854660858?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/1437666909854660858/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=1437666909854660858' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1437666909854660858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/1437666909854660858'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/07/7-4-1-start.html' title='7, 4+, 1... start!'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-3711684959462552267</id><published>2008-07-17T22:34:00.017+02:00</published><updated>2008-07-18T06:19:20.579+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Eclipse DemoCamps 2008 - podsumowanie</title><content type='html'>Pod koniec czerwca odbyły się dwa spotkania fanów środowiska Eclipse z cyklu EclipseCamp 2008. Szczęśliwie udało mi się uczestniczyć w obu dzięki czemu miałem unikalną okazję zamienić kilka słów z innymi osobami zainteresowanymi rozwojem produktów bazowanych na Eclipse.&lt;br /&gt;&lt;br /&gt;Szczególne brawa należą się moim zdaniem organizatorom tych spotkań:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jackowi Pospychale (Poznań)&lt;/li&gt;&lt;li&gt;Kasi Bylec (Poznań)&lt;/li&gt;&lt;li&gt;Grzegorzowi Dudzie (Kraków)&lt;/li&gt;&lt;li&gt;Szymonowi Brandysowi (Kraków)&lt;/li&gt;&lt;/ul&gt;Mam nadzieję że następnym razem uda mi się zorganizować z ich pomocą edycję wrocławską. Wszystko jednak zależy od zainteresowania tematem. &lt;br /&gt;&lt;br /&gt;A tak to wszystko wyglądało (miniatury wskazują na galerie zdjęć):&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Poznan"&gt;Poznań:&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Krakow"&gt;Kraków:&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/jacek.pospychala/DemoCampGanymede"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_-Hz5kL7u4E4/SH-wbmkpobI/AAAAAAAAAHo/1O2CsotwBYY/s400/Poznan.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5224088081030291890" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/szymon.brandys/EclipseDemoCampKrakow28062008"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_-Hz5kL7u4E4/SH-v547SewI/AAAAAAAAAHg/_VLlpZ2uq4I/s400/Krak%C3%B3w.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5224087501841529602" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Kilka wybranych prezentacji:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Szymon Brandys&lt;/strong&gt;, &lt;strong&gt;Tomasz Żarna&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/images/7/75/Together_in_Eclipse_EclipseDemoCamp2008.zip"&gt;Razem w Eclipse (Together in Eclipse)&lt;/a&gt; - wszystko co powinien wiedzieć programista starający się zaangażować w prace nad środowiskiem Eclipse&lt;br&gt;&lt;br /&gt;&lt;a href="http://www.eclipsecon.org/2008/sub/attachments/ABC_of_Platform_Workspace.ppt"&gt;ABC of Platform Workspace&lt;/a&gt; - tej prezentacji niestety nie było jednak można było wypytać jej autorów o szczegóły zagadnień&lt;br&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/images/7/75/Together_in_Eclipse_EclipseDemoCamp2008.zip"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_-Hz5kL7u4E4/SH-3TcmG2PI/AAAAAAAAAIA/xLCjXHvdo8Y/s200/TogetherInEclipse.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5224095637494487282" /&gt;&lt;/a&gt;&lt;a href="http://www.eclipsecon.org/2008/sub/attachments/ABC_of_Platform_Workspace.ppt"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_-Hz5kL7u4E4/SH--tW2dgXI/AAAAAAAAAIQ/qAZAD8WkHos/s200/ABC.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5224103779210461554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Mateusz Matela&lt;/strong&gt;, &lt;strong&gt;Aleksandra Woźniak&lt;/strong&gt;, &lt;strong&gt;Marek Zawirski&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://rose.man.poznan.pl/~katis/gsoc.pdf"&gt;GSoC project&lt;/a&gt; - prezentacja projektów uczestniczących w tegorocznym Google Summer of Code&lt;br&gt;&lt;br /&gt;&lt;a href="http://rose.man.poznan.pl/~katis/gsoc.pdf"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-Hz5kL7u4E4/SH-3BNAYmzI/AAAAAAAAAH4/GbCT4XPNamM/s200/GSoC.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5224095324072090418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Grzegorz Białek&lt;/strong&gt; - uwaga kryptoreklama ;) &lt;br /&gt;&lt;a href="http://wiki.eclipse.org/images/2/2c/DSL_in_Eclipse.pdf"&gt;DSL w środowisku Eclipse (DSL in Eclipse)&lt;/a&gt; - modelowanie procesów biznesowych z wykorzystaniem języków wysokiego poziomu... cokolwiek to znaczy ;)&lt;br&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/images/2/2c/DSL_in_Eclipse.pdf"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_-Hz5kL7u4E4/SH-4s8R2VuI/AAAAAAAAAII/KoxSpunMS00/s200/DSLinEclipse.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5224097175007811298" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Pozostałe prezentacje znajdują się (lub zostaną z czasem uzupełnione) na stronach poszczególnych imprez. &lt;strong&gt;Zapraszam!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-3711684959462552267?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/3711684959462552267/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=3711684959462552267' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/3711684959462552267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/3711684959462552267'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/07/eclipse-democamps-2008-podsumowanie.html' title='Eclipse DemoCamps 2008 - podsumowanie'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-Hz5kL7u4E4/SH-wbmkpobI/AAAAAAAAAHo/1O2CsotwBYY/s72-c/Poznan.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-4360559678109062518</id><published>2008-06-23T22:56:00.004+02:00</published><updated>2008-06-23T23:38:54.175+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Eclipse DemoCamps 2008 - Kraków</title><content type='html'>W najbliższą sobotę tj. 28.06.2008 w Krakowie w &lt;a href="http://www.klubre.pl/"&gt;klubie RE&lt;/a&gt; odbędzie się &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Krakow"&gt;Eclipse DemoCamp 2008&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Jeżeli jesteś zainteresowany platformą Eclipse, chciałbyś poznać inne osoby związane z tym tematem to jest to wydarzenie którego nie możesz opuścić ;D&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;12.30 – 12.50 &lt;strong&gt;Wprowadzenie do Ganymede&lt;/strong&gt;&lt;br /&gt;Grzegorz Duda, Sabre Polska, Polish Java User Group leader&lt;/li&gt;&lt;br /&gt;&lt;li&gt;12.50 - 13.10 &lt;strong&gt;Mylyn - Eclipse zorientowany na zadania&lt;/strong&gt;&lt;br /&gt;Grzegorz Duda, Sabre Polska, Polish Java User Group leader&lt;/li&gt;&lt;br /&gt;&lt;li&gt;13.20 – 14.00 &lt;strong&gt;Wprowadzenie do BIRT&lt;/strong&gt;&lt;br /&gt;Krzysztof Daniel, Eclipse enthusiast, engineer in Eclipse Support Center at Politechnika Poznanska&lt;/li&gt;&lt;br /&gt;&lt;li&gt;14.10 – 14.50 &lt;strong&gt;DSL w srodowisku Eclipse&lt;/strong&gt;&lt;br /&gt;Grzegorz Bialek, Sygnity&lt;/li&gt;&lt;br /&gt;&lt;li&gt;15.00 – 15.40 &lt;strong&gt;Razem w Eclipse&lt;/strong&gt;&lt;br /&gt;Szymon Brandys, Eclipse Platform committer, engineer in IBM Poland&lt;/li&gt;&lt;br /&gt;&lt;li&gt;15.40 – 16.00 &lt;strong&gt;Q&amp;A&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Inne przydatne linki:&lt;br /&gt;&lt;a href="http://www.jugevents.org/jugevents/event/registration.form?event.id=5262&amp;language=pl"&gt;Rejestracja&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.java.pl/"&gt;Polish Java User Group&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Krakow"&gt;Eclipse DemoCamps 2008 - Kraków&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-4360559678109062518?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/4360559678109062518/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=4360559678109062518' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/4360559678109062518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/4360559678109062518'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/06/eclipse-democamps-2008-krakw.html' title='Eclipse DemoCamps 2008 - Kraków'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-128610673507751531</id><published>2008-06-17T23:57:00.003+02:00</published><updated>2008-06-18T00:08:54.524+02:00</updated><title type='text'>Eclipse DemoCamps 2008 - Poznań</title><content type='html'>Właśnie wróciłem z Poznania, naprawdę piękne miasto i bardzo dobre jedzenie.  Polecam!&lt;br /&gt;Myślę że dobrą okazją do odwiedzin może być pewna impreza która odbędzie się już za kilka dni... &lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Poznan"&gt;Eclipse DemoCamps 2008 - Poznań&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_-Hz5kL7u4E4/SFgzh_Gc51I/AAAAAAAAAHQ/RAVsnIptlnY/s1600-h/EclipseCampPoznan.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-Hz5kL7u4E4/SFgzh_Gc51I/AAAAAAAAAHQ/RAVsnIptlnY/s400/EclipseCampPoznan.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5212973227648542546" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-128610673507751531?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/128610673507751531/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=128610673507751531' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/128610673507751531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/128610673507751531'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/06/eclipse-democamps-2008-pozna.html' title='Eclipse DemoCamps 2008 - Poznań'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_-Hz5kL7u4E4/SFgzh_Gc51I/AAAAAAAAAHQ/RAVsnIptlnY/s72-c/EclipseCampPoznan.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-3214108383459989625</id><published>2008-06-14T15:31:00.009+02:00</published><updated>2008-06-14T16:16:12.436+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>DSLs: Martin Fowler, Marcus Völter</title><content type='html'>Przez ostatnie dwa miesiące nie miałem zbyt dużo czasu na prowadzenie bloga. Powinienem to jakoś naprawić... tym razem jednak znów pójdę na łatwiznę i wykorzystam "gotowca" ;)&lt;br /&gt;&lt;br /&gt;Wczoraj udało mi się odnaleźć kolejny wywiad na temat DSL'i. Tym razem oprócz Markusa współuczestniczy w nim żywa legenda jaką jest niewątpliwie Martin Fowler. Myślę że nie trzeba go nikomu przedstawiać, podobnie jak książek które napisał lub promował swoim nazwiskiem a które stały się fundamentem dla wielu rewelacyjnych projektów (&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321127420"&gt;PoEAA&lt;/a&gt; -&gt; &lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt;, &lt;a href="http://www.amazon.com/Enterprise-Integration-Patterns-Designing-Addison-Wesley/dp/0321200683"&gt;EIP Hoppe/Woolf&lt;/a&gt; -&gt; &lt;a href="http://activemq.apache.org/camel/"&gt;Apache Camel&lt;/a&gt; etc.)&lt;br /&gt;&lt;br /&gt;Wideo to może być dobrym uzupełnieniem poprzedniego które zamieściłem w jednym z &lt;a href="http://deepdiveinto.blogspot.com/2008/03/dsl-na-oopsla-2007.html"&gt;wcześniejszych postów&lt;/a&gt;. Pomimo że jest to dosyć krótka rozmowa poruszonych jest kilka ciekawych aspektów (integracja wielu języków w spójne IDE, xtext/antlr etc.). Polecam każdemu kto ma trochę wolnego czasu.&lt;br /&gt;&lt;br /&gt;Wywiad przeprowadzony został podczas &lt;a href="http://jaoo.dk/"&gt;JAOO Conference&lt;/a&gt; i udostępnia do servis &lt;a href="http://blip.tv/"&gt;Blip.TV&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jaoo.blip.tv/file/941921/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-Hz5kL7u4E4/SFPMbIaoapI/AAAAAAAAAHI/hmB8nLCmidg/s400/fowler.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5211733960285514386" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-3214108383459989625?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/3214108383459989625/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=3214108383459989625' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/3214108383459989625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/3214108383459989625'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/06/dsls-martin-fowler-marcus-vlter.html' title='DSLs: Martin Fowler, Marcus Völter'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_-Hz5kL7u4E4/SFPMbIaoapI/AAAAAAAAAHI/hmB8nLCmidg/s72-c/fowler.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2159460420486787346</id><published>2008-06-14T14:04:00.006+02:00</published><updated>2008-06-14T16:13:47.297+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse DemoCamps 2008</title><content type='html'>Za kilka dni w Poznaniu oraz w Krakowie odbędą się spotkania pasjonatów środowiska Eclipse. Myślę, że może być to unikalna okazja do poznania osób zainteresowanych tematem budowy narzędzi.&lt;br /&gt;&lt;br /&gt;Niestety spotkanie w Poznaniu jest w ciągu tygodnia więc raczej nie uda mi się wykorzystać okazji. Jednak nie wszystko stracone, kolega z zaprzyjaźnionego zespołu będzie tam jednym z prezenterów (Mariusz Paszkiewicz - Business Process Modeling Tool based on Eclipse Platform). Na spotkanie w Krakowie muszę się jednak wybrać. Wstyd się przyznać ale odkąd przeprowadziłem się do Wrocławia nie miałem zbyt wielu okazji by odwiedzić Kraków. Myślę że Eclipse DemoCamp jest dobrym pretekstem by to zmienić. Mam nadzieję że uda mi się wyskoczyć na browara ze starymi znajomymi a może też poznać nowych ;D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Poznan"&gt;Eclipse DemoCamps 2008 - Poznań&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Krakow"&gt;Eclipse DemoCamps 2008 - Kraków&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/Regional_Communities/Poland"&gt;Eclipse Regional Communities - Poland&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2159460420486787346?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2159460420486787346/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2159460420486787346' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2159460420486787346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2159460420486787346'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/06/eclipse-democamps-2008.html' title='Eclipse DemoCamps 2008'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-2158284032575118832</id><published>2008-03-27T22:12:00.005+01:00</published><updated>2008-03-27T22:35:14.437+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Eclipse Modeling jako DSL Toolkit</title><content type='html'>Kilkanaście minut temu zakończyła się wirtualna konferencja (Webinar) prezentująca projekt &lt;a href="http://www.eclipse.org/modeling/"&gt;Eclipse Modeling&lt;/a&gt; jako środowisko do tworzenia DSL'i - &lt;a href="http://adobedev.adobe.acrobat.com/p90148608/"&gt;Eclipse Modeling Project as a DSL Toolkit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;W pierwszej części prezentacji Richard Gronback (prowadzący projekt GMF) opisuje w kilku słowach większość projektów składowych, druga jest jednak sporym zaskoczeniem. Zamiast klasycznej demonstracji EMF/GMF jest ona praktycznie w całości poświęcona koncepcji transformacji modeli z naciskiem na QVT. Do tej pory myślałem że biblioteki M2M są dopiero we wczesnych testach, wygląda jednak że się myliłem. &lt;br /&gt;&lt;br /&gt;Czas chyba bliżej zainteresować się tematem no i w końcu nauczyć OCL'a ;D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://adobedev.adobe.acrobat.com/p90148608/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_-Hz5kL7u4E4/R-wQfxjHEjI/AAAAAAAAAGU/K4nexHxsKCw/s400/modeling.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5182535409259188786" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-2158284032575118832?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/2158284032575118832/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=2158284032575118832' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2158284032575118832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/2158284032575118832'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/03/eclipse-modeling-jako-dsl-toolkit.html' title='Eclipse Modeling jako DSL Toolkit'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-Hz5kL7u4E4/R-wQfxjHEjI/AAAAAAAAAGU/K4nexHxsKCw/s72-c/modeling.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8905888272289396080</id><published>2008-03-17T22:48:00.006+01:00</published><updated>2008-03-17T23:12:23.624+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='swordfish'/><title type='text'>Equinox Portal</title><content type='html'>Na stronach serwisu Eclipse.org wystartował dziś oficjalnie portal poświęcony wykorzystaniu technologii OSGi po stronie serwera - &lt;a href="http://www.eclipse.org/equinox-portal/"&gt;Equinox Portal&lt;/a&gt;. W jednym miejscu gromadzi on wszystkie informacje wymagane do rozpoczęcia przygody z tą technologią. Polecam!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8905888272289396080?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8905888272289396080/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8905888272289396080' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8905888272289396080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8905888272289396080'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/03/equinox-portal.html' title='Equinox Portal'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-140098667653005980</id><published>2008-03-16T17:54:00.010+01:00</published><updated>2008-03-16T18:32:59.694+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>DSL na OOPSLA 2007</title><content type='html'>W ostatnim poście wspomniałem o jednym z liderów podejścia MDSD którym niewątpliwie jest &lt;a href="http://www.voelter.de/index.html"&gt;Markus Völter&lt;/a&gt;. Pomyślałem że warto bliżej przedstawić jego osobę, idee etc. przeszukałem więc internet i znalazłem w miarę nowy wywiad na temat DSL'i przeprowadzony podczas tegorocznej edycji konferencji &lt;a href="http://www.oopsla.org/oopsla2007/"&gt;OOPSLA (2007)&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Markus w kilka minut przedstawia czym jest DSL oraz zarysowuje zalety oraz trudności związane z tym podejściem, wspomina także o różnicach w wymaganiach stawianych językowi w zależności od docelowego klienta (developer, analityk). Co bardzo mnie ucieszyło w wywiadzie znaleźć można także potwierdzenie moich odczuć na temat zastosowania UML'a jako nośnika opisu procesu biznesowego o którym wspominałem w jednym z &lt;a href="http://deepdiveinto.blogspot.com/2008/02/dsl-ide-czyli-mdd-w-rodowisku-eclipse.html"&gt;wcześniejszych postów&lt;/a&gt; (złożoność etc.)&lt;br /&gt;&lt;br /&gt;Wywiad zamieścił serwis &lt;a href="http://www.domaindrivendesign.org"&gt;DomainDrivenDesign.org&lt;/a&gt;, poniżej link do prezentacji:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://domaindrivendesign.org/events/oopsla2007/interview_markus_voelter/Markus_Voelter.swf"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-Hz5kL7u4E4/R91SgWop5WI/AAAAAAAAAGM/bEEjKjbjSwE/s400/markus.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5178385862331327842" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-140098667653005980?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/140098667653005980/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=140098667653005980' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/140098667653005980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/140098667653005980'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/03/dsl-na-oopsla-2007.html' title='DSL na OOPSLA 2007'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_-Hz5kL7u4E4/R91SgWop5WI/AAAAAAAAAGM/bEEjKjbjSwE/s72-c/markus.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8065129057513723274</id><published>2008-03-12T22:35:00.004+01:00</published><updated>2008-03-12T22:50:59.550+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Architektura jako język...</title><content type='html'>W poprzednim poście zrobiłem taki "mały" wstęp do DSL w kontekście MDD (Model Driven Development). Jak pisałem temat w ciągu ostatnich 2-3 lat rozwija się naprawdę wyjątkowo dynamicznie na co dowód odnalazłem już następnego dnia (choć zapomniałem napisać). &lt;br /&gt;&lt;br /&gt;Na łamach serwisu InfoQ pojawił się bardzo ciekawy artykuł autorstwa &lt;a href="http://www.voelter.de/index.html"&gt;Markusa Völtera&lt;/a&gt; pod tytułem 'Architektura jako język'. Markus przedstawia w prosty i opisowy sposób zastosowanie DSL'a w podejściu AC-MDSD. Biorąc pod uwagę nazwisko autora myślę że nie muszę nikomu lektury dłużej reklamować ;D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/articles/architecture-as-language-a-story"&gt;Architecture as Language: A story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8065129057513723274?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8065129057513723274/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8065129057513723274' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8065129057513723274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8065129057513723274'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/03/architektura-jako-jzyk.html' title='Architektura jako język...'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8478155005124791553</id><published>2008-02-26T08:02:00.004+01:00</published><updated>2008-02-26T09:56:15.536+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>DSL IDE czyli MDD w środowisku Eclipse</title><content type='html'>Postanowiłem napisać kilka słów o czymś czemu poświęciłem ostatnich kilka lat mojego życia czyli o językach DSL (Domain Specific Language - języki ukierunkowane na biznes). Ponieważ temat jest dosyć rozległy ograniczę się tylko do wprowadzenia mam jednak nadzieję że to wystarczy by kogoś nim zainteresować.&lt;br /&gt;&lt;br /&gt;Głównym celem inżynierii oprogramowania jest przeniesienie pewnych wymagań stawianych przez biznes do postaci zrozumiałej przez maszyny. Nie jest to zadanie proste ponieważ język opisu problemów biznesowych jest zupełnie odmienny od języka używanego przez procesory, infrastrukturę sieciową etc. Zlecenia typu 'w tym momencie powinien pojawić się formularz A' lub 'podłącz Jana Kowalskiego do sieci' są zupełnie niezrozumiałe. Od wielu lat wprowadzone są więc kolejne etapy podniesienia poziomu abstrakcji języka rozumianego przez system uruchomieniowy. Powszechnym dzisiaj rozwiązaniem jest wielostopniowa kompilacja języków ogólnego zastosowania (Java, C# czy C++) a każdego dnia pojawiają się kolejne języki, warstwy kompilacji, interpretatory etc. Praktycznie każdą interakcję z systemem operacyjnym, infrastrukturą sieciową, serwerem aplikacyjnym, frameworkiem czy biblioteką użytkową możemy opisać serią reguł na bazie których możemy utworzyć kolejny język. Patrząc w ten sposób zauważamy że pisząc najprostsze pliki konfiguracyjne w rzeczywistości posługujemy się językiem zdefiniowanym przez daną bibliotekę.&lt;br /&gt;&lt;br /&gt;Bardzo szybko zauważono możliwość dalszej abstrakcji algorytmów, potrzebny był jednak język wysokiego poziomu. W 2001 roku organizacja OMG zaproponowała podejście projektowe nazwane MDA. Zakładało ono użycie UML jako języka definicji problemu biznesowego a następnie przekształcenie tak powstałego modelu do postaci definiowanej przez platformę docelową. Użycie UML'a okazało się jednak wyjątkowo trudne w praktyce ponieważ notacja ta projektowana była w latach 90-tych z myślą o statycznej dokumentacji nie jako fragment kodu źródłowego. Narzędzia dostępne w tamtym okresie nie wyglądały wcale lepiej (profile zaimplementowano znacznie później).&lt;br /&gt;&lt;br /&gt;Sam najlepiej przekonałem się o tym budując swój pierwszy system modelowania procesów biznesowych w którym zdecydowałem się użyć koncepcję wykonywalnego UML'a (xUML). Pomimo niewątpliwego uproszenia tworzenia/modyfikacji procesów podejście to praktycznie od razu ujawniło wszystkie swoje wady. Brak wsparcia w trakcie modelowania logiki wyższego poziomu niż dostarczana przez język UML, brak możliwości odwzorowania dodatkowych walidacji bezpośrednio w edytorze etc. Może nie wygląda to na poważne problemy jednak daje porządnie w kość już przy kilkudziesięciu złożonych procesach a przy kilkuset staje się prawdziwym piekłem.&lt;br /&gt;&lt;br /&gt;Na szczęście w tym samym czasie (początek 2004r) IBM opublikował rewelacyjna książka &lt;a href="http://www.redbooks.ibm.com/redbooks/pdfs/sg246302.pdf"&gt;'Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework'&lt;/a&gt; prezentująca  technikę budowania specjalizowanych edytorów graficznych w środowisku Eclipse. Przyznam że koncepcja ta całkowicie mnie pochłonęła i w kolejnej wersji systemu mogłem zrezygnować całkowicie z UML'a pozbywając się związanych z tym podejściem problemów. Dzięki budowie własnych narzędzi (DSL IDE) mogłem zapewnić nie tylko walidację w tle ale także wsparcie w tworzeniu wyrażeń a nawet dosyć zaawansowane opcje analityczne. Umożliwiło to wystarczające uproszczenie obsługi by pomoc programisty nie była już konieczna w trakcie składania nowych procesów.&lt;br /&gt;&lt;br /&gt;Wspomniana książka okazała się jednak znacznie większym sukcesem niż mogłem to sobie wtedy wyobrazić. Nie tylko wyjaśniła każdemu jak poprawnie i szybko budować edytory graficzne ale także stała się podstawą do dalszej standaryzacji i rozwoju MDD w środowisku Eclipse. Na bazie jej wytycznych powstał wkrótce projekt &lt;a href="http://sourceforge.net/projects/merlingenerator/"&gt;Merlin Generator&lt;/a&gt; który stał się podstawą biblioteki &lt;a href="http://www.eclipse.org/gmf/"&gt;GMF&lt;/a&gt; debiutującej w release Callisto (2006r). Tworzenie prostych diagramów zamiast tygodni skróciło się do kilku godzin/dni co oczywiście spowodowało dalszą popularyzację tematu MDD. W ubiegłym roku wydzielona została specjalna kategoria poświęcona zagadnieniu modelowania &lt;a href="http://www.eclipse.org/modeling/"&gt;'Eclipse modeling'&lt;/a&gt;. W jej ramach znajdują sie projekty odpowiedzialne za budowę struktury (&lt;a href="http://www.eclipse.org/modeling/emf/"&gt;EMF&lt;/a&gt;, &lt;a href="http://www.eclipse.org/modeling/emft/"&gt;EMFT&lt;/a&gt;), tworzenie notacji graficznych (&lt;a href="http://www.eclipse.org/gef/"&gt;GEF&lt;/a&gt;, &lt;a href="http://www.eclipse.org/gmf/"&gt;GMF&lt;/a&gt;), notacji tekstowych &lt;a href="http://www.eclipse.org/proposals/tmf/"&gt;TMF&lt;/a&gt; (&lt;a href="http://www.eclipse.org/gmt/oaw/"&gt;xText&lt;/a&gt;, &lt;a href="http://www.eclipse.org/proposals/imp/"&gt;IMP&lt;/a&gt;), transformacji modeli &lt;a href="http://www.eclipse.org/m2m/"&gt;M2M&lt;/a&gt; (&lt;a href="http://www.eclipse.org/m2m/atl/"&gt;ATL&lt;/a&gt;, &lt;a href="http://download.eclipse.org/modeling/m2m/qvto/downloads/index.php"&gt;QTV&lt;/a&gt;) oraz generatorów &lt;a href="http://www.eclipse.org/modeling/m2t/"&gt;M2T&lt;/a&gt; (&lt;a href="http://www.eclipse.org/gmt/oaw/"&gt;Xpand/Xtend&lt;/a&gt;, stary &lt;a href="http://www.eclipse.org/modeling/m2t/?project=jet"&gt;JET&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Jest tego naprawdę dużo i pomimo że poświeciłem tematowi DSL blisko pięć lat a powyższych bibliotek używam na co dzień od czterech przyznam że wciąż trudno mi to wszystko opanować. Praktycznie co kilka dni pojawiają się ciekawe prace lub projekty. O części z nich postaram się tutaj czasami wspomnieć...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8478155005124791553?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8478155005124791553/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8478155005124791553' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8478155005124791553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8478155005124791553'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/02/dsl-ide-czyli-mdd-w-rodowisku-eclipse.html' title='DSL IDE czyli MDD w środowisku Eclipse'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7074673631934088226</id><published>2008-02-10T10:48:00.000+01:00</published><updated>2008-02-10T18:18:33.376+01:00</updated><title type='text'>Kilka słów od siebie...</title><content type='html'>Zadałem sobie dziś pytanie 'Co chcę osiągnąć pisząc tego bloga?'. Odpowiedź jest prosta 'Spróbować odnaleźć ludzi zainteresowanych tematem tworzenia narzędzi, pasjonatów... kogoś do kogo będzie można napisać maila w stylu - zaczynamy zaje..isty projekt czy nie chciałbyś w nim wziąć udziału?'. Może to trochę dziwne, jednak zajmuję się tym tematem od dosyć dawna i w tym czasie spotkałem tak mało osób podzielających tą pasję że czasami zastanawiam się czy nie wyjechali oni już wszyscy do Irlandii.. ;D&lt;br /&gt;&lt;br /&gt;Podoba mi się idea JUG-ów skupiająca pasjonatów Javy w różnych miejscach polski, organizujących konferencje szkolenia etc. Są one jednak głównie poświęcone tematowi JEE który jest zdecydowanie bardziej popularny niż niszowy temat jakim jest tworzenie narzędzi. Ponadto Wrocław chyba nie ma aktywnej grupy JUG. Stąd wydaje mi się że bardziej realny pomysł to grupa wirtualna, jakaś agregacja (lub linkowanie) blogów tematycznych. &lt;br /&gt;&lt;br /&gt;Niestety nie mam pewności czy cokolwiek uda się osiągnąć. Sukces lub porażka zależeć będą od ilości osób które dołączą do tej inicjatywy. Myślę jednak że warto spróbować ;D&lt;br /&gt;&lt;br /&gt;Oczywiście jeżeli ktoś z was miałby jakieś sugestie, pomysły niech podeśle info na maila (deepdiveinto na googlach) lub zostawi komentarz pod postem ;D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7074673631934088226?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7074673631934088226/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7074673631934088226' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7074673631934088226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7074673631934088226'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/02/kilka-sw-od-siebie.html' title='Kilka słów od siebie...'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-5226706944400027526</id><published>2008-01-20T20:11:00.000+01:00</published><updated>2008-01-20T21:13:53.375+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='expression'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='xpath'/><category scheme='http://www.blogger.com/atom/ns#' term='ast'/><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><title type='text'>AST - Faza druga (sytuacje błędne)</title><content type='html'>Znalazłem dziś chwilę czasu którą postanowiłem poświęcić na wznowienie budowy mojego pierwszego edytora tekstowego.&lt;br /&gt;&lt;br /&gt;Do utworzenia wstępnego szkicu gramatyki posłużyłem się specyfikacją pierwszej wersji języka xpath którą możesz znaleźć &lt;a href="http://www.w3.org/TR/xpath"&gt;tutaj&lt;/a&gt;. Jednak gramatyka utworzona w ten sposób nie jest wystarczająca by zastosować ją jako serce edytora tekstowego. Dlaczego? Ponieważ buduje ona poprawne AST tylko dla poprawnego źródła, te jednak w naszym przypadku przez większość czasu zawiera błędy. W trakcie edycji niejednokrotnie następowałaby utrata struktury AST wymaganej do synchronizacji modelu wewnętrznego. Bez modelu natomiast nie bylibyśmy w stanie oznaczyć powstałych błędów, utworzyć listy podpowiedzi etc. Poniżej postaram się zaprezentować opisaną sytuację wraz z przykładową korektą gramatyki.&lt;br /&gt;&lt;br /&gt;Do testu posłuży nam proste wyrażenie:&lt;br /&gt;&lt;br /&gt;doc("Elementy")//elementA/elementB/elementC&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_-Hz5kL7u4E4/R5OeYVZgQUI/AAAAAAAAAFE/GTygA9D-8OU/s1600-h/step1.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_-Hz5kL7u4E4/R5OeYVZgQUI/AAAAAAAAAFE/GTygA9D-8OU/s400/step1.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5157640139167514946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jak widać drzewo AST jest łatwe do dalszej analizy. Co wydarzy się jednak gdy użytkownik postanowi dodać predykat wybierający instancje 'elementA' spełniające określony warunek? Sprawdźmy jak wygląda sytuacja po dodaniu pierwszego znaku '[' (modyfikacja zaznaczona kolorem).&lt;br /&gt;&lt;br /&gt;doc("Elementy")//elementA&lt;font color='blue'&gt;[&lt;/font&gt;/elementB/elementC&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_-Hz5kL7u4E4/R5OmalZgQaI/AAAAAAAAAF0/rrRTFra4nVY/s1600-h/step2.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_-Hz5kL7u4E4/R5OmalZgQaI/AAAAAAAAAF0/rrRTFra4nVY/s200/step2.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5157648973915242914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jak widać parser całkowicie się pogubił, całość utrudniła możliwość wystąpienia podwyrażenia absolutnego w ramach predykatu. W wyniku tego w poszukiwaniu nawiasu zamykającego parser zjada nam resztę wyrażenia. W tym momencie zmuszeni bylibyśmy zaznaczyć połowę tekstu jako błędną co nie wyglądałoby zbyt estetycznie nie wspominając o braku podpowiedzi etc. Spróbujmy wybrnąć z tej sytuacji inaczej.&lt;br /&gt;&lt;br /&gt;Ponieważ w samej gramatyce nie bardzo jesteśmy w stanie ocenić w jakim miejscu powinien znaleźć się nawias zamykający, zastosujemy mechanizm auto edycji (IAutoEditStrategy) który dołoży go zaraz za wstawianym przez użytkownika nawiasem otwierającym. Podobne działanie można zobaczyć w wielu edytorach w środowisku Eclipse. Poniżej możemy zobaczyć wynikowe wyrażenie wraz z odpowiadającym AST (modyfikacja zaznaczona kolorem).&lt;br /&gt;&lt;br /&gt;doc("Elementy")//elementA&lt;font color='blue'&gt;[]&lt;/font&gt;/elementB/elementC&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_-Hz5kL7u4E4/R5OgB1ZgQWI/AAAAAAAAAFU/-EkZyBiE18Y/s1600-h/step3.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_-Hz5kL7u4E4/R5OgB1ZgQWI/AAAAAAAAAFU/-EkZyBiE18Y/s400/step3.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5157641951643713890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na drzewie ponownie możemy zobaczyć utracone wcześniej elementy jednak całość jest nadal bezużyteczna. Powodem jest brak obsługi pustych predykatów w naszej gramatyce które nie są poprawnymi elementami wyrażenia. Ponieważ jednocześnie chcemy by nasz parser potrafił sytuację obsłużyć poprawnie oraz oznaczyć miejsce błędu zastosujemy wirtualny token 'ERR_EMPTY_PREDICATE_TOKEN' (modyfikacja zaznaczona kolorem).&lt;br /&gt;&lt;br /&gt;predicate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    :    '[' expr ']' -&gt; ^(PREDICATE_TOKEN expr)&lt;font color='blue'&gt;//;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    |    '[' ']'      -&gt; ^(PREDICATE_TOKEN ERR_EMPTY_PREDICATE_TOKEN);&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Poniżej zobaczyć możemy wynikowe drzewo AST:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_-Hz5kL7u4E4/R5OgtFZgQXI/AAAAAAAAAFc/2n93pJWnr3M/s1600-h/step4.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-Hz5kL7u4E4/R5OgtFZgQXI/AAAAAAAAAFc/2n93pJWnr3M/s400/step4.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5157642694673056114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jak widać pierwsza sytuacja błędna została opanowana. Pozostało 99 kolejnych którymi będę musiał się zająć gdy znów znajdę czas wolny. Pozdrowienia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-5226706944400027526?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/5226706944400027526/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=5226706944400027526' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5226706944400027526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/5226706944400027526'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/01/ast-faza-druga-sytuacje-bdne.html' title='AST - Faza druga (sytuacje błędne)'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_-Hz5kL7u4E4/R5OeYVZgQUI/AAAAAAAAAFE/GTygA9D-8OU/s72-c/step1.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-7731926867689462279</id><published>2008-01-12T23:29:00.000+01:00</published><updated>2008-01-13T00:33:57.085+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='sopera'/><category scheme='http://www.blogger.com/atom/ns#' term='PDE'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='swordfish'/><title type='text'>Platforma Swordfish - Analiza część 1</title><content type='html'>Postanowiłem sobie zrobić przerwę w nauce budowy edytorów tekstowych i zapoznać się z platforma Swordfish o której pisałem tydzień temu.&lt;br /&gt;&lt;br /&gt;Aktualnie trwają prace nad przeniesieniem projektu na serwery Eclipse jednak od kilku tygodni kod przekazany przez firmę SOPERA dostępny jest w Bugzilli - 'Bug 211984'. Udostępniony pakiet zawiera definicję serwera zbudowaną na standardowym WST Server. &lt;br /&gt;&lt;br /&gt;Jako projektów modułów platforma używa ciekawego połączenia standardowego projektu pluginu (Equinox) z projektem aspektowym. O zaletach takiego podejścia nie muszę chyba przekonywać nikogo kto choć raz rozbudowywał WTP o nowe definicje serwerów na bazie serwerów istniejących. Tym samym w projekcie nie znajdziemy natury PDE ale aspekty: 'java' (1.4,5.0) oraz 'osgi.swordfish' (1.0)..&lt;br /&gt;&lt;br /&gt;Ponieważ platforma nie zawiera jeszcze kreatora takich projektów poniżej przedstawiam operacje jakie należy wykonać na standardowym projekcie pluginu (Equinox) by zadziałał na platformie Swordfish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;usuń naturę PDE wraz z odpowiadającymi jej kompilatorami&lt;/li&gt;&lt;/br&gt;&lt;br /&gt;&amp;lt;nature&amp;gt;org.eclipse.pde.PluginNature&amp;lt;/nature&amp;gt;&lt;/br&gt;&amp;lt;buildCommand&amp;gt;&amp;lt;name&amp;gt;org.eclipse.pde.ManifestBuilder&amp;lt;/name&amp;gt;&amp;lt;/buildCommand&amp;gt;&lt;/br&gt;&amp;lt;buildCommand&amp;gt;&amp;lt;name&amp;gt;org.eclipse.pde.SchemaBuilder&amp;lt;/name&amp;gt;&amp;lt;/buildCommand&amp;gt;&lt;/br&gt;&lt;br /&gt;&lt;li&gt;dodaj naturę projektu aspektowego&lt;/li&gt;&lt;/br&gt;&lt;br /&gt;&amp;lt;nature&amp;gt;org.eclipse.wst.common.project.facet.core.nature&amp;lt;/nature&amp;gt;&lt;/br&gt;&amp;lt;nature&amp;gt;org.eclipse.wst.common.modulecore.ModuleCoreNature&amp;lt;/nature&amp;gt;&lt;/br&gt;&amp;lt;nature&amp;gt;org.eclipse.jem.workbench.JavaEMFNature&amp;lt;/nature&amp;gt;&lt;/br&gt;&lt;br /&gt;&lt;li&gt;Ustaw odpowiednie aspekty&lt;/li&gt;&lt;/br&gt;&lt;br /&gt;Do ustawienia aspektu 'java' możesz użyć kreatora jednak próba ustawienia aspektu 'swordfish' zakończy się niestety aktualnie błędem delegata instalacji. Kreator utworzy jednak standardowy plik konfiguracji z aspektem 'java' do którego wystarczy dodać drugi aspekt (możesz oczywiście skopiować od razu gotowy plik):&lt;/br&gt;&lt;br /&gt;&amp;lt;installed facet="osgi.swordfish" version="1.0"/&amp;gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Po takiej modyfikacji twój plugin napisany dla platformy Equinox powinien bez najmniejszego problemu zainstalować się także na platformie Swordfish.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-7731926867689462279?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/7731926867689462279/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=7731926867689462279' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7731926867689462279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/7731926867689462279'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/01/platforma-swordfish-analiza-cz-1.html' title='Platforma Swordfish - Analiza część 1'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-3934695422843521639</id><published>2008-01-05T23:33:00.000+01:00</published><updated>2008-01-06T00:31:14.828+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='expression'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='xpath'/><category scheme='http://www.blogger.com/atom/ns#' term='ast'/><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><title type='text'>AST - Faza pierwsza</title><content type='html'>Jako egzemplarz testowy wybrałem sobie dość złożone zapytanie zawierające przekrój przez mechanizmy wyrażenia selekcji języka xpath:&lt;br /&gt;&lt;br /&gt;doc("customers")[@name = 'g.bialek']//account[parent::type = 'personal']/@id&lt;br /&gt;&lt;br /&gt;Zawiera ono następujące elementy:&lt;br /&gt;- oczywiście ścieżkę z kilkoma krokami&lt;br /&gt;- wywołanie funkcji dostępu do danych&lt;br /&gt;- predykaty (prosty i z wyrażeniem relatywnym)&lt;br /&gt;- osie (dziecko, dziecko zagnieżdżone,  ojciec, parametr)&lt;br /&gt;&lt;br /&gt;Poniżej widok na AST:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_-Hz5kL7u4E4/R4ASh1ZgQSI/AAAAAAAAAE0/QCIprvWHEDw/s1600-h/xpath_ast1.GIF"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-Hz5kL7u4E4/R4ASh1ZgQSI/AAAAAAAAAE0/QCIprvWHEDw/s400/xpath_ast1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5152138346190881058" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-3934695422843521639?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/3934695422843521639/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=3934695422843521639' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/3934695422843521639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/3934695422843521639'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/01/ast-faza-pierwsza.html' title='AST - Faza pierwsza'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_-Hz5kL7u4E4/R4ASh1ZgQSI/AAAAAAAAAE0/QCIprvWHEDw/s72-c/xpath_ast1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-4634251878787693704</id><published>2008-01-03T21:47:00.000+01:00</published><updated>2008-01-13T00:26:33.791+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sopera'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse summit 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='swordfish'/><title type='text'>Platforma Swordfish</title><content type='html'>Dziś na wielu serwisach informacyjnych pojawiła się zapowiedź technologii która może stać sie krokiem milowym w rozpowszechnieniu OSGi jako platformy dla aplikacji biznesowych.&lt;br /&gt;&lt;br /&gt;Mowa o platformie Swordfish która właśnie rozpoczyna swój żywot jako produkt open-source kontrolowany przez firmę SOPERA. Co to za projekt? Jest to platforma uruchomieniowa budowana zgodnie z modelem OSGi na bazie Equinoxa której zadaniem jest połączenie cech JBI oraz SCA. Nie wgłębiałem się na razie zbytnio w temat jednak po rozmowie z jednym z ich architektów podczas Eclipse Summit Europe - głosuję obiema rękami na 'TAK'. I to wcale nie z powodu jaskrawo zielonego plecaka który dostałem, po prostu moim zdaniem to krok do przodu i to w wyjątkowo dobrym kierunku ;D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-4634251878787693704?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/4634251878787693704/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=4634251878787693704' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/4634251878787693704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/4634251878787693704'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/01/platforma-swordfish.html' title='Platforma Swordfish'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8042215140197376404</id><published>2008-01-02T21:42:00.000+01:00</published><updated>2008-01-20T21:08:36.602+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='stp'/><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><title type='text'>Nowe wyzwanie</title><content type='html'>Kilka miesięcy temu przeczytałem ciekawą książkę o tworzeniu gramatyk. Uświadomiła mi ona że w ciągu ostatnich czterech lat pracy nad rozwiązaniami bazowanymi na platformie Eclipse nigdy nie pisałem edytora tekstowego. Brzmi to nieprawdopodobnie ale to prawda. Pracuję od kilku lat nad narzędziami używanymi głównie przez analityków biznesowych a co za tym idzie projektuję rozwiązania graficzne, strukturalne etc. Głównym ich założeniem jest łatwość obsługi która z oczywistych względów wyklucza stosowanie edytorów tekstowych. Postanowiłem jednak spróbować swoich sił i uzupełnić brakujący klocek w moim wielkim puzzle.&lt;br /&gt;&lt;br /&gt;Za cel wybrałem sobie stworzenie komponentu umożliwiającego budowanie wyrażeń selekcji. Zadanie "klasyczne" które robiłem już kilkukrotnie w ramach rożnych projektów komercyjnych, Tym razem jednak nacisk postanowiłem położyć nie na cel biznesowy i czas ale na kompletność i łatwość integracji z rożnymi platformami. Trochę bardziej akademicko niż zazwyczaj ;D &lt;br /&gt;&lt;br /&gt;Jako systemy docelowe wybrałem projekty: BPELDesigner, edytor integracji ESB oraz własne rozwiązanie komercyjne. Komponent w zamierzeniu powinien potrafić zbudować wyrażenie z pełną asystą dla użytkownika korzystając z każdego dostępnego źródła metadanych jakie wybrane projekty posiadają.&lt;br /&gt;&lt;br /&gt;Na razie jestem w fazie projektu. Mam nadzieję że uda mi się przezwyciężyć własne lenistwo, brak czasu, bariery korporacyjne etc. Szkoda że nie pracuję w Google bo mógłbym zająć się takim projektem każdego piątego dnia tygodnia zamiast po godzinach ;D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8042215140197376404?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8042215140197376404/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8042215140197376404' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8042215140197376404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8042215140197376404'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2008/01/nowe-wyzwanie.html' title='Nowe wyzwanie'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-6938549348159939476</id><published>2007-10-12T20:14:00.000+02:00</published><updated>2007-10-15T07:35:50.587+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Finalne zwycięsto OSGi ?</title><content type='html'>Przeglądając sobie dzisiaj &lt;a href="http://ianskerrett.wordpress.com/2007/10/12/sun-joins-osgi-alliance/"&gt;blogi&lt;/a&gt; ludzi związanymi z IT trafiłem na zaskakującą informację. Sun Microsystems dołączył do OSGi Alliance. Czy świat nie jest dziwny? Czyżby po ponad roku "wymyślania koła" Sun wreszcie zdał sobie sprawę że nie on jedyny na świecie został naznaczony boską mocą tworzenia standardów i czasami trzeba zaakceptować brutalne fakty.&lt;br /&gt;&lt;br /&gt;Jaki będzie dalszy los 'statycznego mini OSGi' zwanego JSR277 nie wiem... ale na pewno w ciągu następnych dni poszukam czegoś więcej na ten temat. W każdym razie myślę ze to doskonały prezent z okazji zakończenia ESE2007 ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-6938549348159939476?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/6938549348159939476/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=6938549348159939476' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6938549348159939476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/6938549348159939476'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2007/10/finalne-zwycisto-osgi.html' title='Finalne zwycięsto OSGi ?'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-646867976370100735</id><published>2007-10-12T05:00:00.000+02:00</published><updated>2007-10-15T07:31:34.548+02:00</updated><title type='text'>Eclipse STP - pierwsze spotkanie</title><content type='html'>Od dłuższego czasu przyglądałem się projektowi Eclipse STP z myślą by coś w tym kierunku zrobić. Przeczytałem specyfikacje, poznałem źródła podprojektu BPMN, śledziłem też w miarę możliwości czasowych zmiany w projektach zależnych. Niestety jakoś nie mogłem się zabrać do tematu na poważnie. Podczas ESE 2007 pojawiła się okazja której nie mogłem zmarnować. Postanowiłem porozmawiać bezpośrednio z osobami odpowiedzialnymi za ten projekt. Tak poznałem Adriana Skehilla jednego z commiterów projektu STP. Powiedziałem mu że jestem bardzo zainteresowany udziałem w tym projekcie etc.&lt;br /&gt;&lt;br /&gt;Dwie godziny później uczestniczyłem w BoF projektu STP (spotkanie projektantów odpowiedzialnych za poszczególne podzespoły systemu). Chociaż było to tylko 8 lub 9 osób z ledwością mieściliśmy się w malutkim pokoju przeznaczonym na seminaria. Spotkanie prowadził Oisin Hurley (IONA) i miało formę podsumowania aktualnych prac, oraz sugerowanych dalszych kierunków rozwoju projektu. Przyznam że początkowo nie do końca czułem się pewnie w tej sytuacji i zastanawiałem się czy im nie przeszkadzam ;D. Tematem który jednak to zmienił była propozycja utworzenia edytora do mediacji danych na bazie klasyki jaką niewątpliwie jest książka Enterprise Integration Patterns (Hoohpe,Woolf). Co tu dużo mówić każdy kto ją czytał pewnie chciał kiedyś samemu zaimplementować opisany silnik. Myślę że to idealny temat by zacząć przygodę z STP.&lt;br /&gt;&lt;br /&gt;Na spotkaniu omawiane były także pozostałe zmiany w projekcie. Nowy wspólny model danych dla STP minimalizujący potrzebę transformacji (INRIA), framework do budowania edytorów tekstowych (OBEO), czy zupełnie nowy runtime 'Swordfish' bazowany na OSGi (SOPERA). Tak profesjonalnie zorganizowanego spotkania nigdy wcześniej nie widziałem, to nieprawdopodobne jak dużo tematów udało się przedyskutować przy piwie o godzinie 20.00 wieczorem. &lt;br /&gt;&lt;br /&gt;A po spotkaniu impreza z darmowym alkoholem utrwalająca nowe znajomości. To był naprawdę udany dzień ;D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-646867976370100735?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/646867976370100735/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=646867976370100735' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/646867976370100735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/646867976370100735'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2007/10/eclipse-stp-pierwsze-spotkanie.html' title='Eclipse STP - pierwsze spotkanie'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-373167366070568414</id><published>2007-10-10T08:00:00.000+02:00</published><updated>2007-10-14T23:40:02.980+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse summit 2007'/><title type='text'>Eclipse Summit Europe 2007</title><content type='html'>Pozdrowienia z Ludwigsburga!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_-Hz5kL7u4E4/RxJxIXOHRwI/AAAAAAAAAEE/i0Ag9CPwNt4/s1600-h/IMG_2959.jpg"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_-Hz5kL7u4E4/RxJxIXOHRwI/AAAAAAAAAEE/i0Ag9CPwNt4/s200/IMG_2959.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5121280114759780098" /&gt;&lt;/a&gt;&lt;a href="http://bp0.blogger.com/_-Hz5kL7u4E4/RxJw6XOHRvI/AAAAAAAAAD8/1-k71ef7uQ8/s1600-h/IMG_2942.jpg"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_-Hz5kL7u4E4/RxJw6XOHRvI/AAAAAAAAAD8/1-k71ef7uQ8/s200/IMG_2942.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5121279874241611506" /&gt;&lt;/a&gt;&lt;a href="http://bp2.blogger.com/_-Hz5kL7u4E4/RxJwz3OHRuI/AAAAAAAAAD0/4ZVe2YLQwwM/s1600-h/IMG_2930.jpg"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_-Hz5kL7u4E4/RxJwz3OHRuI/AAAAAAAAAD0/4ZVe2YLQwwM/s200/IMG_2930.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5121279762572461794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="float:left; margin:0 10px 10px 0;" src="http://www.eclipsecon.org/summiteurope2007/image/photos/erichkeynote.JPG" border="0" /&gt;&lt;img style="float:left; margin:0 10px 10px 0;" src="http://www.eclipsecon.org/summiteurope2007/image/photos/serverside.JPG" border="0" /&gt;&lt;img style="float:left; margin:0 10px 10px 0;" src="http://www.eclipsecon.org/summiteurope2007/image/photos/forum2.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="float:left; margin:0 10px 10px 0;" src="http://www.eclipsecon.org/summiteurope2007/image/photos/ofmp2.jpg" border="0" /&gt;&lt;img style="float:left; margin:0 10px 10px 0;" src="http://www.eclipsecon.org/summiteurope2007/image/photos/class3.jpg" border="0" /&gt;&lt;img style="float:left; margin:0 10px 10px 0;" src="http://www.eclipsecon.org/summiteurope2007/image/photos/raprelease.JPG" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-373167366070568414?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/373167366070568414/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=373167366070568414' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/373167366070568414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/373167366070568414'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2007/10/eclipse-summit-europe-2007.html' title='Eclipse Summit Europe 2007'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-Hz5kL7u4E4/RxJxIXOHRwI/AAAAAAAAAEE/i0Ag9CPwNt4/s72-c/IMG_2959.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8865258294956665824</id><published>2007-09-25T21:03:00.000+02:00</published><updated>2007-10-14T23:11:37.852+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='stp'/><category scheme='http://www.blogger.com/atom/ns#' term='sca'/><category scheme='http://www.blogger.com/atom/ns#' term='tuscany'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Apache Tuscany 1.0</title><content type='html'>Już jest!&lt;br /&gt;&lt;br /&gt;Pojawiła sie wersja 1.0 serwera Tuscany (implementacja specyfikacji SCA). Niedługo zostanie tez zakończona migracja STP (obsluga SOA z punktu widzenia Eclipse) na wersje 1.0 specyfikacji.&lt;br /&gt;&lt;br /&gt;Myślę ze najbliższe miesiące beda naprawdę pracowite dla firm starających sie przygotować stosowne narzędzia na czas. Za dwa tygodnie będę zresztą miał okazje sie o tym przekonać na Eclipse Summit Europe 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8865258294956665824?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8865258294956665824/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8865258294956665824' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8865258294956665824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8865258294956665824'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2007/09/apache-tuscany-10.html' title='Apache Tuscany 1.0'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-8780265962115058850</id><published>2007-09-23T20:02:00.000+02:00</published><updated>2008-01-20T21:34:00.117+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='opengl'/><title type='text'>Duchy przeszlości...</title><content type='html'>Dzisiejsze porządki na dysku przyniosły zaskakujące odkrycie. Gdzieś w zakurzonym i zapomnianym przez boga i ludzi folderze starego dysku znalazłem fragment prezentacji ze swojej pracy licencjackiej (2001).  &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/coo-5brz0hY"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/coo-5brz0hY" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;To był mój pierwszy złożony program jaki napisałem, myślę tez ze w pewien sposób wyznaczył on kierunek w jakim poszedłem później (tworzenie narzędzi). Edytor służył do tworzenia tzw. animacji szkieletowych. Użytkownik wczytywał model w formacie programu 3DStudio, następnie już w narzędziu budował jego wewnętrzny szkielet. Po jego utworzeniu należało związać z nim poszczególne fragmenty siatki modelu. Każdy element mógł być połączony z dowolna liczba tzw. 'kości' oraz posiadać indywidualne ustalenia dotyczące jego sprężystości. Po zakończeniu inicjalizacji użytkownik mógł przy pomocy ruchów kośćmi tworzyć dowolne animacje bazowego modelu.&lt;br /&gt;&lt;br /&gt;Program pisałem w MFC (C++) + OpenGL. Poza obrona pracy licencjackiej udało mi sie go opublikować w Software Developers Journal (dawny Software 2.0) a tym samym zarobić po raz pierwszy kilka złotych na programowaniu ;D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-8780265962115058850?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/8780265962115058850/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=8780265962115058850' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8780265962115058850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/8780265962115058850'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2007/09/duchy-przeszloci.html' title='Duchy przeszlości...'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260523444214626147.post-4559415801145865266</id><published>2007-07-04T21:02:00.000+02:00</published><updated>2007-09-23T18:56:02.201+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='praca'/><title type='text'>To już 6 lat...</title><content type='html'>Dokładnie sześć lat temu rozpoczynał się mój pierwszy dzień w pracy. &lt;br /&gt;&lt;br /&gt;Pamiętam jak dziwny wydawał mi się wybór języka Java w czasach całkowitej dominacji C++. Mój domowy komputer z procesorem Intela 300Mhz nie potrafił w trybie DEBUG odświeżać zwykłej selekcji na formularzach. Na studiach pisałem głownie w WINAPI / MFC więc wydajność języka Java była do mnie nie do zaakceptowania. Kilka lat później dziękowałem jednak za doświadczenie które udało mi się wtedy zdobyć dzięki wizjonerstwie swojego pierwszego szefa.&lt;br /&gt;&lt;br /&gt;Jaki będzie ten siódmy rok? Z pewnością jak ostatnie cztery poświęcony rozbudowie platformy Eclipse (mam nadzieję że uda mi się w tym roku znaleźć wreszcie czas by dołączyć do projektu Eclipse STP). A prywatnie wypadałoby w październiku polecieć znów do Egiptu lub w inne miejsce gdzie nurkując można zapomnieć o tym całym szalonym świecie...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260523444214626147-4559415801145865266?l=deepdiveinto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://deepdiveinto.blogspot.com/feeds/4559415801145865266/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7260523444214626147&amp;postID=4559415801145865266' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/4559415801145865266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260523444214626147/posts/default/4559415801145865266'/><link rel='alternate' type='text/html' href='http://deepdiveinto.blogspot.com/2007/07/to-ju-6-lat.html' title='To już 6 lat...'/><author><name>Grzegorz Bialek</name><uri>http://www.blogger.com/profile/14791618001989899083</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-JmjRpMpq_2w/TmflgUp1gfI/AAAAAAAABQU/i9rR1YTFsIE/s220/twarz.jpg'/></author><thr:total>0</thr:total></entry></feed>
