<?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-278045038080545046</id><updated>2011-11-07T11:55:00.857+01:00</updated><category term='Gvr'/><category term='programator'/><category term='KML'/><category term='kreacja'/><category term='kreowanie'/><category term='testowanie'/><category term='Open Hardware'/><category term='3d'/><category term='gadgets'/><category term='robotyka'/><category term='modelowanie'/><category term='bazy danych'/><category term='robot'/><category term='wizualizacja'/><category term='programowanie'/><category term='automatyka'/><category term='sterowaniki'/><category term='www'/><category term='praca'/><category term='wirtualizacja'/><category term='administracja'/><category term='Google API'/><category term='morphing'/><category term='przeładowania strony'/><category term='multiscreen'/><category term='konferencja'/><category term='modele'/><category term='narzędzia'/><category term='emigracja'/><category term='optymalizacja'/><category term='Cloud computing'/><category term='przeglądarka'/><category term='Guido von Robot'/><category term='elektronika'/><category term='lego'/><category term='grafika'/><category term='x11'/><category term='elePHPant'/><category term='błogosfera'/><category term='przetwarzanie wsadowe'/><category term='dual monitors'/><category term='słoń'/><category term='gry'/><category term='xrandr'/><category term='przystawki do PC'/><category term='Firefox'/><category term='sh skrypt'/><category term='tutorials'/><category term='kult węża'/><category term='xorg.conf'/><category term='wstepniak'/><category term='html'/><category term='statystyka'/><category term='AVR'/><category term='dodatki'/><category term='książki'/><category term='konsekwentne kodowanie'/><category term='systemy wbudowane'/><category term='podróże po mapie'/><category term='xinerama'/><category term='Google Maps'/><category term='javascript'/><category term='pierwszy wpis'/><category term='mikrokontrolery'/><category term='SimpleDB'/><category term='lego maindstorms'/><category term='blender'/><category term='web development'/><category term='FirePHP'/><category term='GUI'/><category term='symulator'/><category term='technologie'/><category term='targi'/><category term='systemy operacyjne'/><category term='shell'/><category term='framebuffer'/><category term='python'/><category term='amazon'/><category term='klasyka'/><category term='komiks'/><category term='konferencje'/><category term='projektowanie'/><category term='maskotki'/><category term='noSQL'/><category term='konfiguracja'/><category term='arduino'/><category term='linux'/><category term='zenity'/><category term='debug'/><category term='mootools'/><category term='rendering'/><category term='animacje'/><category term='PyCOn 2008'/><category term='usb'/><category term='php'/><category term='ajax'/><category term='informatyka'/><category term='indie'/><category term='błogo sfera'/><category term='vnc'/><category term='odplusiwanie'/><category term='OpenSource'/><category term='pomiary'/><category term='Google Chrome'/><category term='Firebug'/><category term='X windows'/><category term='sql'/><category term='unix'/><category term='termometr'/><category term='podstawy'/><category term='1-wire'/><category term='proste skrypty'/><category term='java script'/><category term='wyznawcy węża'/><category term='nowość'/><category term='grandr'/><category term='Erlang'/><category term='problem'/><title type='text'>Marcin Bielak, bieli - pasje i obsesje programistyczne</title><subtitle type='html'>Blog, Marcin Bielak, bieli, informatyka, programowanie, PC, Linux, Ubuntu, GPL, FreeBSD, command line, terminal, development, programista, architekt, PHP, Python, ANSI C, AVR, robot, roboty</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-484476606813613772</id><published>2010-08-05T21:22:00.000+02:00</published><updated>2011-09-26T21:21:29.736+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='technologie'/><category scheme='http://www.blogger.com/atom/ns#' term='bazy danych'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='noSQL'/><title type='text'>"Idziemy na zachód" z NoSQL</title><content type='html'>Definiując &lt;span style="font-weight:bold;"&gt;noSQL&lt;/span&gt; warto zaznaczyć, że nie chodzi tutaj o niniejszy jakiś żart. O ile specjaliści od T-SQL i posiadacze stu certyfikatów ORACLE myślą inaczej, są rekomendacje płynące chociażby z digg.com, facebook.com, yahoo,com ale od zawsze z google.com potwierdzające, że &lt;span style="font-weight:bold;"&gt;trend noSQL&lt;/span&gt; ma sens w przetwarzaniu i składowaniu dużej ilości danych. Mając na myśli dużej mam na myśli setki Gigabahjtów, Terabajty i Petabajty ... i nie jest to wcale SF :-) Problem jak zwykle dotyczy skali i oczywiście dotyczy grupowania i złączania danych z różnych źródeł i baz. Tutaj składnia ... JOIN ... może okazać się nieco zasobożerna i nie na miejscu ;-) W miejsce, gdzie nie można robić SELECT i LIMIT + OFFSET + JOIN lub zwyczajne zapytania wykonują się zbyt długo, a CRON + memcached nie wystarczy potrzebne są bazy danych noSQL do składowania i mechanizmy Map Reduce do agregacji i łączenia danych dla osiągnięcia pożądanych wyników. Oczywiście że nie istnieje jedna baza do wszystkich zastosowań ... oto &lt;a href="http://blog.nahurst.com/visual-guide-to-nosql-systems"&gt;pomocnik w wyborze bazy noSQL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-wYOWGDisVTk/ToDP2aljDCI/AAAAAAAAFdU/ryt_1D6a7Sg/s1600/nierelacyjne-bazy-danych-nosql--visual-guide-to-nosql-systems.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-wYOWGDisVTk/ToDP2aljDCI/AAAAAAAAFdU/ryt_1D6a7Sg/s320/nierelacyjne-bazy-danych-nosql--visual-guide-to-nosql-systems.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5656749665734036514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Od 2001 roku, od kiedy to przyszło mi korzystać produkcyjne z bazy danych mySQL nie miałem pojęcia, że używam idei &lt;span style="font-weight:bold;"&gt;noSQL&lt;/span&gt;. Moja baza danych to było składowisko danych pomiarowych z różnej maści mierników elektronicznych oraz różnego typu alarmów, przy przekraczaniu zakresów. Napisałem wspólnie z kolegą z zespołu sterownik do składowania danych binarnie, ale z ideą podobną jak &lt;span style="font-weight:bold;"&gt;DBASE IV&lt;/span&gt;. Okazało się, że silnik i sterownik naszej bazy świetnie się sprawdzał i działał zgodnie z założeniami w wielowątkowym środowisku. Jednak potrzeba przetwarzania danych zmusiła mnie do przechowywania danych w bazie SQL, aby wykonywać prościej rankingi na danych. Wówczas ideę złączeń należało po prostu odrzućić ... nie będę tłumaczył powodów, dla których mySQL 3.28.x się wtedy zamulał przy złożonych JOINach ;-) Ważne, że założenie to było słuszne jak na rok 2001 i &lt;span style="font-weight:bold;"&gt;PHP&lt;/span&gt; 3.x.&lt;br /&gt;&lt;br /&gt;Patrząc z perspektywy czasu uświadomiłem sobie, że utworzyłem w mySQL coś takiego jak mój własny &lt;span style="font-weight:bold;"&gt;noSQL&lt;/span&gt;. Składowałem dane w kolumnach, ale również utworzyłem superkolumny z pól tekstowych, w które wpisywałem oddzielone identyfikatorami wartości powiązanych danych. Dane były wiązane we wręcz prostacki sposób, ale taka metoda pozwalała - zamiast stosowania JOINów - przetwarzanie źródłowych danych z pomiarów do postaci pośredniej przez 6h a nie 11h. Jak na tamte czasy i koszty hostingu/dedykowanych serwerów było to znacząco optymalne podejście.&lt;br /&gt;&lt;br /&gt;Współcześnie widzę trend dość podobny (z ang. &lt;span style="font-weight:bold;"&gt;structured storage&lt;/span&gt;) i równie banalny w zastosowaniu tzn. używanie "superkolumn" w składowaniu danych w ramach tej samej kolumny. Dodawanie zamiast relacji niejako "nadmiarowych" i zarazem powiązanych danych w wierszu, które podlegają wydajniejszemu wyszukiwaniu niżeli tradycyjne metody z baz SQL. Nie zawsze mogą konkurować z zewnętrznym indeksem opartym na rozwiązaniu t.j. &lt;span style="font-weight:bold;"&gt;&lt;a href="http://lucene.apache.org/"&gt;Apache Lucene&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Rozwiązań serwujących ideę &lt;span style="font-weight:bold;"&gt;noSQL&lt;/span&gt; jest sporo i po pełną listę zapraszam do odpowiedniego źródła, któro porównuje i próbuje skatalogować &lt;a href="http://nosql-databases.org/"&gt;bazy danych noSQL&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-484476606813613772?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/484476606813613772/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=484476606813613772' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/484476606813613772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/484476606813613772'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2010/08/idziemy-na-zachod-z-nosql.html' title='&quot;Idziemy na zachód&quot; z NoSQL'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-wYOWGDisVTk/ToDP2aljDCI/AAAAAAAAFdU/ryt_1D6a7Sg/s72-c/nierelacyjne-bazy-danych-nosql--visual-guide-to-nosql-systems.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3634657220857232543</id><published>2010-04-23T21:57:00.001+02:00</published><updated>2011-09-10T00:23:36.221+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modelowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='kult węża'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><title type='text'>KISS Python and KISS rules</title><content type='html'>Często musimy przypominać sobie i wracam dosc czesto do &lt;a href="http://www.python.org/dev/peps/pep-0020/"&gt;przykazań węża&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    * Beautiful is better than ugly.&lt;br /&gt;    * Explicit is better than implicit.&lt;br /&gt;    * Simple is better than complex.&lt;br /&gt;    * Complex is better than complicated.&lt;br /&gt;    * Flat is better than nested.&lt;br /&gt;    * Sparse is better than dense.&lt;br /&gt;    * Readability counts.&lt;br /&gt;    * Special cases aren’t special enough to break the rules.&lt;br /&gt;    * Although practicality beats purity.&lt;br /&gt;    * Errors should never pass silently.&lt;br /&gt;    * Unless explicitly silenced.&lt;br /&gt;    * In the face of ambiguity, refuse the temptation to guess.&lt;br /&gt;    * There should be one— and preferably only one —obvious way to do it.&lt;br /&gt;    * Although that way may not be obvious at first unless you’re DutchCanadian/Swedish.&lt;br /&gt;    * Now is better than never.&lt;br /&gt;    * Although never is often better than right now.&lt;br /&gt;    * If the implementation is hard to explain, it’s a bad idea.&lt;br /&gt;    * If the implementation is easy to explain, it may be a good idea.&lt;br /&gt;    * Namespaces are one honking great idea — let’s do more of those!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3634657220857232543?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3634657220857232543/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3634657220857232543' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3634657220857232543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3634657220857232543'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2010/04/kiss-python-and-kiss-rules.html' title='KISS Python and KISS rules'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-1122925412068566283</id><published>2010-03-16T00:49:00.007+01:00</published><updated>2010-03-16T01:17:39.325+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modelowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='framebuffer'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='animacje'/><category scheme='http://www.blogger.com/atom/ns#' term='wizualizacja'/><category scheme='http://www.blogger.com/atom/ns#' term='symulator'/><title type='text'>gource &amp; logstalgia - wizualizacja życia repozytorium kodu oraz aktywności na serwerze www</title><content type='html'>Pomyślałem sobie, żę warto opublikować ten bajerancki przykład bezgranicznej wyobraźni programistów zwany &lt;span style="font-weight:bold;"&gt;gource&lt;/span&gt;. Z założenia jest to aplikacja napisana w C++ z wykorzystaniem korzyści płynących z poniższych bibliotek:&lt;br /&gt;&lt;br /&gt;    SDL 1.2 (libsdl1.2-dev)&lt;br /&gt;    SDL Image 1.2 (libsdl-image1.2-dev)&lt;br /&gt;    PCRE3 (libpcre3-dev)&lt;br /&gt;    FTGL 2.1.3~rc5-2 (libftgl-dev)&lt;br /&gt;    PNG library (libpng12-dev)&lt;br /&gt;    JPEG library (libjpeg62-dev)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/S57IIN3uH9I/AAAAAAAAFDM/83wFDfO7Eq0/s1600-h/gource-logo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 420px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/S57IIN3uH9I/AAAAAAAAFDM/83wFDfO7Eq0/s320/gource-logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5449012642652757970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mając dowolne repozytorium GITa pobrane np: z serwisu &lt;a href="http://github"&gt;github&lt;/a&gt; możemy obejrzeć niesamowitą animację renderowaną w czasie rzeczywistym z cyklu życia projektu. Osoby zatwierdzające / skłądujące kod w repozytorium uwidocznione są jako ludki strzelające z laserów do dynamicznego drzewa kodu. Bajerancko ukazuje się nam w lini czasu życia naszego kodu jego rzeczywisty rozwój i spojrzenie na kod nabiera zupełnie innego wirtualnego wymiaru. Z resztą sami spójrzcie:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NjUuAuBcoqs&amp;hl=pl_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/NjUuAuBcoqs&amp;hl=pl_PL&amp;fs=1" type="application/x-shockwave-flash" width="480" height="295" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Sposób kompilacji na Ubuntu 9.10:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ git clone git://github.com/acaudwell/Gource.git&lt;br /&gt;$ cd Gource&lt;br /&gt;$ sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev&lt;br /&gt;$ ./configure&lt;br /&gt;$ make&lt;br /&gt;$ make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Uruchomienie na repozytorium Gource:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ./gource&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Innym pomysłem na wizualizacje wirtualnego życia jest projekt &lt;span style="font-weight:bold;"&gt;logstalgia&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/S57NoSy2_BI/AAAAAAAAFDU/2ljJZxnESgI/s1600-h/logstalgia-logo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 94px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/S57NoSy2_BI/AAAAAAAAFDU/2ljJZxnESgI/s320/logstalgia-logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5449018691288497170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Efekt wizualizacji przedstawia pinponga z logów dostępu serwera www (access.log). Obserwacja odbijania &lt;span style="font-style:italic;"&gt;a la&lt;/span&gt; gra typu ping-pong umożliwia uzmysłowienie natężenia ruchu na serwerze www. Oto przykładowy filmik z działania:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HeWfkPeDQbY&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&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/HeWfkPeDQbY&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt;&lt;a href="http://code.google.com/p/gource/"&gt;Oficjalna strona projektu Gource&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/logstalgia/"&gt;Oficjalna strona projektu Logstalgia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-1122925412068566283?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/1122925412068566283/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=1122925412068566283' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1122925412068566283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1122925412068566283'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2010/03/gource-logstalgia-wizualizacja-zycia.html' title='gource &amp; logstalgia - wizualizacja życia repozytorium kodu oraz aktywności na serwerze www'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/S57IIN3uH9I/AAAAAAAAFDM/83wFDfO7Eq0/s72-c/gource-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3238277306231573279</id><published>2010-02-18T20:04:00.001+01:00</published><updated>2010-03-17T21:37:56.376+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='automatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Fritzing - elektronika i informatyka w jednym miejscu</title><content type='html'>Od jakiegoś czasu zastanawiałem się, czy ktoś czasem nie połączył &lt;span style="font-weight:bold;"&gt;Open Hardware&lt;/span&gt; z &lt;span style="font-weight:bold;"&gt;Open Source&lt;/span&gt; w jakiś &lt;span style="font-style:italic;"&gt;zwinny&lt;/span&gt; sposób ... długo myślałem nad swoim rozwiązaniem coś a la PADS do projektowania obwodow drukowanych + autotouterek do tworzenia PCB + interfejsy do PC w jednym miejscu :-) Myśli nie zdążyłem przelałem na papier i tym razem także zasięgnąłem do &lt;span style="font-weight:bold;"&gt;Open Souce&lt;/span&gt; ;-) Znalazłem tak długo wyczekiwany produkt nie tylko mojej wyobraźni pod hasłem &lt;span style="font-weight:bold;"&gt;Fritzing&lt;/span&gt;. Zapewniam was, że teraz &lt;span style="font-weight:bold;"&gt;od prototypu do produktu&lt;/span&gt; jest zdecydowanie sprawniej z &lt;a href="http://fritzing.org/"&gt;Fritzing&lt;/a&gt;.&lt;br /&gt;  &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/S6EpYYaffQI/AAAAAAAAFDc/Mg-8PgUnGKM/s1600-h/fritzing_org_logo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 420px; height: 105px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/S6EpYYaffQI/AAAAAAAAFDc/Mg-8PgUnGKM/s320/fritzing_org_logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5449682522942176514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Polecam filmowe wprowadzenie do środowiska, które znajduje się tutaj:&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Hxhd4HKrWpg&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/Hxhd4HKrWpg&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;/center&gt;&lt;br /&gt;&lt;br /&gt;Okazuje się, że projekt &lt;span style="font-weight:bold;"&gt;Fritzing&lt;/span&gt; to nie tyle różne narzędzia desktopowe do projektowania i prototypowania układów elektronicznych, ale również budowanie społeczności, wokół &lt;span style="font-weight:bold;"&gt;Open Source &amp; Open Hardware&lt;/span&gt;. Strona projektu posiada dział, w którym mamy dostęp do banalnie prostej opcji wymiany projektów pomiędzy użytkownikami. Już z poziomu aplikacji mamy możliwość klikając na wyodrębniony i widoczny przycisk &lt;span style="font-style:italic;"&gt;share&lt;/span&gt; przekazać nasz schemat, kody źródowe oraz płytkę drukowaną do repozytorium społeczności &lt;span style="font-weight:bold;"&gt;Fritzing&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Zaskakuje również wbudowany autorouter do projektowania płytek drukowanych PCB. O ile ten w projekcie &lt;a href="http://www.cadsoft.de/"&gt;Eagle&lt;/a&gt; jest dość sprawny i wystarczający do większości drobnych projektow wykluczając wysokie częstotliwości, to ten we Fritzing nadaje się jak wynika z opinii użytkowników również do w.cz. Osobiście śmie wątpić, bo nie znalazłem żadnych symulatorów zjawisk w.cz. propagacji fal, wykresow sygnałowych oraz propozycji prowadzenia ścieżek z uwzględnieniem zjawisk w.cz. Cóż, byćmoże to są plany i całkiem realne patrząc na to dość praktyczne dzieło wykonane zupełnie nieodpłatnie w ramach otwartego oprogramwowania &lt;span style="font-style:italic;"&gt;z pasją&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Kiedy przyjrzymy się bliżej źródłom widać przewagę języka programowania &lt;span style="font-weight:bold;"&gt;C++&lt;/span&gt; oraz biblioteki &lt;span style="font-weight:bold;"&gt;Qt-4.6.1&lt;/span&gt; firmy Trolltech. Warto spojrzeć na kod autoroutera z &lt;a href="http://pl.wikipedia.org/wiki/Algorytm_Dijkstry"&gt;algorytmem optymalizacji wyszukiwania ścieżek&lt;/a&gt; &lt;span style="font-weight:bold;"&gt;Dijkstry&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materialy dodatkowe:&lt;br /&gt;http://code.google.com/p/fritzing/&lt;br /&gt;http://code.google.com/p/fritzing/w/list&lt;br /&gt;http://hackaday.com/2009/08/25/fritzing/&lt;br /&gt;http://www.piksel.no/tag/fritzing&lt;br /&gt;http://geekswithblogs.net/kobush/archive/2010/01/04/137328.aspx&lt;br /&gt;http://unknowndomain.co.uk/blog/2010/01/03/i-heart-fritzing/&lt;br /&gt;http://www.golem.de/0902/65340.html&lt;br /&gt;http://portal.acm.org/citation.cfm?id=1517735&lt;br /&gt;http://robot-overlord.blogspot.com/2009/04/robot-overlord-recommends-fritzing.html&lt;br /&gt;http://www.pixelsumo.com/post/fritzing&lt;br /&gt;http://starter-kit.nettigo.pl/2009/09/arduino-gramy/&lt;br /&gt;http://starter-kit.nettigo.pl/&lt;br /&gt;http://fritzing.org/projects/blow-up-shield/&lt;br /&gt;http://www.gosh2009.ca/wiki/index.php/About_Gosh!&lt;br /&gt;http://www.gosh2009.ca/wiki/index.php/Workshop_Schedule&lt;br /&gt;http://sebastiansobotka.blogspot.com/search/label/led%207-segmentowy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3238277306231573279?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3238277306231573279/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3238277306231573279' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3238277306231573279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3238277306231573279'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2010/02/fritzing-elektronika-i-informatyka-w.html' title='Fritzing - elektronika i informatyka w jednym miejscu'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/S6EpYYaffQI/AAAAAAAAFDc/Mg-8PgUnGKM/s72-c/fritzing_org_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-6494902301014884120</id><published>2010-02-03T22:16:00.001+01:00</published><updated>2010-02-10T02:37:50.995+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='proste skrypty'/><category scheme='http://www.blogger.com/atom/ns#' term='przeglądarka'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='konsekwentne kodowanie'/><title type='text'>PHP + HipHop ... i nigdy stop :)</title><content type='html'>Tytuł sam odkrywa szczegóły tej wypowiedzi. Chciałbym opisać swoimi słowami co myślę o rozwiązaniach sieciowych, które są wysoko skalowalne i produkcyjnie pozwalają na obsłużenie stron o ruchu ~400 mln odsłon miesięcznie. Temat do tyczy znanego wszystkim języka &lt;span style="font-weight:bold;"&gt;&lt;a href="http://php.net"&gt;PHP&lt;/a&gt;&lt;/span&gt; oraz narzędzia poprawiającego niemalże o połowe wydajność tego języka tzn. prj. &lt;span style="font-weight:bold;"&gt;HipHop&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/S3INA3Xe5HI/AAAAAAAAEzQ/Hob3GLZSciA/s1600-h/HipHop_logo_white.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 278px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/S3INA3Xe5HI/AAAAAAAAEzQ/Hob3GLZSciA/s320/HipHop_logo_white.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436422008703214706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;  Wiele projektów udowodniło, że język PHP daje się osadzać na innych platformach (t.j. Java, .NET, Erlang VM)i konwertować do innych formatów wykonawczych. Niewiele miało tak wyjątkową rekomentację jak &lt;span style="font-weight:bold;"&gt;HipHop&lt;/span&gt;. Pierwotnie projekt zrodził się na potrzeby optymalizacji wydajności skryptów w serwisie społecznościowym &lt;a href="http://facebook.com"&gt;Facebook&lt;/a&gt;. Od kilku dni źródła zostały uwolnione i umieszczono je na GitHub. &lt;br /&gt;&lt;br /&gt;  Wracając do alternatywnych prób kompilacji w PHP oraz osadzania warto przytoczyć następujące projekty:&lt;br /&gt;&lt;a href="http://www.phpcompiler.org/doc/latest/devintro.html"&gt;phpcompiler&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roadsend.com/home/index.php"&gt;roadsend&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.php-compiler.net/doku.php"&gt;Phalanger php compiler&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.caucho.com/resin-3.0/quercus/"&gt;Quercus - PHP in Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Kwintesencja &lt;span style="font-weight:bold;"&gt;HipHop&lt;/span&gt; jest zarazem założeniem tego tworu. Jest to coś ala kompilator skrośny z języka PHP do języka C++. Dzięki takiej ścieżce ANSI C (Zend API), w którym napisany jest PHP, dalej PHP i na końcu skrypty CGI skompilowane kompilatorem G++ daje zysk ponoć dwukrotny w wydajności !!! &lt;br /&gt;Co dla świata PHP jak i dla samego Facebooka jest REWOLUCYJNE :-) Pierwotnie produkt komenrcyjny &lt;span style="font-weight:bold;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Zend_Server"&gt;ZendServer&lt;/a&gt;&lt;/span&gt; próbował optymalizować czas działania skryptów, poprzez pakowanie OPCODES (coś ala bytecode w PHP), lecz możliwości tego rozwiązania skończyły się bardzo szybko. Aktualnie zamiast np: dokupować kolejny rdzeń lub stawiać kolejną maszynę w farmie wystarczy użyć HipHop - nieprawdaż że proste ;) Poniższy schemat pokazuje ogólnie ten proces:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/S3INROdpr4I/AAAAAAAAEzY/ZbexSQOAtjg/s1600-h/HipHop_transformation_process.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/S3INROdpr4I/AAAAAAAAEzY/ZbexSQOAtjg/s320/HipHop_transformation_process.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436422289781010306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; http://developers.facebook.com/news.php?story=358&amp;blog=1&lt;br /&gt; http://www.ustream.tv/recorded/4409735&lt;br /&gt; http://www.facebook.com/video/video.php?v=124728580468&amp;ref=mf&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-6494902301014884120?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/6494902301014884120/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=6494902301014884120' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6494902301014884120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6494902301014884120'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2003/02/php-hiphop-i-nigdy-stop.html' title='PHP + HipHop ... i nigdy stop :)'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FKArYkQGfrY/S3INA3Xe5HI/AAAAAAAAEzQ/Hob3GLZSciA/s72-c/HipHop_logo_white.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-6962808348473330315</id><published>2010-01-07T23:55:00.002+01:00</published><updated>2010-02-10T03:04:28.372+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><title type='text'>Przodują Java + C a PHP w górę się pnie ;)</title><content type='html'>Na stronie &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;Tiobe&lt;/a&gt; podejrzymy interesujące statystyki sporządzane wymyślnym algorytmem dot. populrności języków programowania. Oto raport w postaci wykresu udostępniany w ramach serwisu Tiobe:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/S3ITA5w6_aI/AAAAAAAAEzo/g4xST1GreNc/s1600-h/tpci_trends.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;height: 310px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/S3ITA5w6_aI/AAAAAAAAEzo/g4xST1GreNc/s320/tpci_trends.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436428606416551330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;W postaci uproszczonej widać ciekawe wyniki w tabeli:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Position&lt;br /&gt;Feb 2010 Position&lt;br /&gt;Feb 2009 Delta in Position Programming Language Ratings&lt;br /&gt;Feb 2010 Delta &lt;br /&gt;Feb 2009 Status&lt;br /&gt;1 1  Java 17.348% -2.05%   A&lt;br /&gt;2 2  C 16.602% +0.76%   A&lt;br /&gt;3 5  PHP 10.001% +1.22%   A&lt;br /&gt;4 3  C++ 9.447% -0.19%   A&lt;br /&gt;5 4  (Visual) Basic 7.051% -1.79%   A&lt;br /&gt;6 6  C# 5.015% -0.05%   A&lt;br /&gt;7 7  Python 4.314% -0.25%   A&lt;br /&gt;8 8  Perl 3.600% -0.52%   A&lt;br /&gt;9 9  Delphi 2.656% -0.97%   A&lt;br /&gt;10 10  JavaScript 2.636% -0.90%   A&lt;br /&gt;11 11  Ruby 2.439% -0.84%   A&lt;br /&gt;12 32  Objective-C 1.779% +1.60%   A&lt;br /&gt;13 -  Go 1.778% +1.78%   A-&lt;br /&gt;14 14  SAS 0.771% -0.06%   A&lt;br /&gt;15 13  PL/SQL 0.738% -0.25%   A&lt;br /&gt;16 17  ABAP 0.661% +0.09%   B&lt;br /&gt;17 16  Pascal 0.606% -0.08%   B&lt;br /&gt;18 18  ActionScript 0.579% +0.04%   B&lt;br /&gt;19 23  Lisp/Scheme 0.563% +0.13%   B&lt;br /&gt;20 24  MATLAB 0.536% +0.12%   B&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Warto podkreślić, że serwis agreguje dane z różnych przeglądarek oraz przetwarza je po czym wyznacza na podstawie sporządzonego przez siebie - i opublikowanego - wzoru rankingi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-6962808348473330315?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/6962808348473330315/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=6962808348473330315' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6962808348473330315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6962808348473330315'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2007/01/przoduja-java-c-php-w-gore-sie-pnie.html' title='Przodują Java + C a PHP w górę się pnie ;)'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FKArYkQGfrY/S3ITA5w6_aI/AAAAAAAAEzo/g4xST1GreNc/s72-c/tpci_trends.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3538208463151506323</id><published>2009-12-17T19:35:00.006+01:00</published><updated>2010-02-23T19:27:49.148+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='robotyka'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Roomba - tańczący robot - odkurzacz</title><content type='html'>&lt;a href="http://search.barnesandnoble.com/Hacking-Roomba/Tod-E-Kurt/e/9780470072714"&gt; Dziś moją uwagę przykuwa pewien wynalazek, który od wielu lat jest sławiony na świecie w robotycznych klimatach, u nas jednak nadal dość dziki. Mam na myśli odkurzacz, który jest robotem i potrafi &lt;span style="font-style:italic;"&gt;odkurzać w tańcu&lt;/span&gt; - oto &lt;a href="http://www.irobot.com/"&gt;Roomba&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SynuQ0Ay4HI/AAAAAAAAESw/pAbsIVuPGa8/s1600-h/roomba.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SynuQ0Ay4HI/AAAAAAAAESw/pAbsIVuPGa8/s320/roomba.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5416121999497027698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Zacnym krokiem w kierunku rozwoju tego robo&lt;/a&gt;ta jest &lt;a href="www.usna.edu/Users/weapsys/esposito/roomba.matlab/Roomba_SCI.pdf"&gt;otwarty protokoł komunikacyjny&lt;/a&gt; oraz &lt;span style="font-weight:bold;"&gt;książka &lt;a href="http://search.barnesandnoble.com/Hacking-Roomba/Tod-E-Kurt/e/9780470072714"&gt;Hacking-Roomba&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ciekawostką jest, że otwarte API pozwala na programowanie przy pomocy języka Python - ciekawe czemu autorzy wybrali węża ... byćmoże na prostotę kodowania ;)&lt;br /&gt;&lt;br /&gt;Przeraża cena jak na polskie realia :-) ok. 4500 PLN to dla wprawnego jednoosobowego elekronika / programisty / robotyka brzmi jak miesięczna pensja po 8 h dziennie w celu zbudowania kopii urządzenia ... pytanie, czy jest&lt;br /&gt; to możliwe pozostawiam czytelnikowi :-)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/D0DEPpFL9OY&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/D0DEPpFL9OY&amp;hl=pl_PL&amp;fs=1&amp;" 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;&lt;object width="400" height="302"&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=3413227&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffffff&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3413227&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffffff&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/3413227"&gt;POVDE Roomba Spec Spot&lt;/a&gt; from &lt;a href="http://vimeo.com/user972915"&gt;POV Previs&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Pozwolę sobie zacytować tutaj informacje handlowe, które ogólnie charakteryzują robota:&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sztuczna inteligencja&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Zasłońmy sobie oczy i spróbujmy odkurzyć nieznane sobie mieszkanie. W takiej właśnie sytuacji znajduje się Roomba podczas pracy.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Algorytm sprzątania jest jedną z najbardziej strzeżonych tajemnic naukowców z firmy iRobot. Jest to wiedza zdobyta w czasie wypraw kosmicznych, w których uczestniczyły roboty skonstruowane przez twórców Roomby. Sygnał na Marsa biegnie kilka minut, więc ręczne sterowanie urządzeniem z Ziemi jest praktycznie niemożliwe. Robot w kosmosie musi radzić sobie sam. Nasze mieszkanie to dla Roomby nic innego jak nieznana przestrzeń Marsa dla wysłanych tam robotów. A jednak Roomba sprząta podłogi z dokładnością pokrycia powierzchni do 99,97%. Dla porównania człowiek tradycyjnym odkurzaczem w tym samym czasie sprząta niecałe 80% (badania Intertec). Roomba ma w sobie prawdziwy komputer pokładowy. To najinteligentniejsze urządzenie w naszych domach. Roomba zaczyna sprzątanie ruchem spiralnym, następnie jedzie wzdłuż ścian i wokół mebli. Sprząta pod łóżkami i meblami wyższymi niż 10 cm.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Czujniki&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Roomba orientuje się w przestrzeni przy pomocy czujników dotykowych, podczerwieni oraz radiowych. Dzięki nim nie spada ze schodów, podąża wzdłuż ścian, objeżdża nogi od krzeseł, stołów i łóżek dokładnie wokół nich sprzątając. Roomba przy pomocy podczerwieni komunikuje się ze stacją dokującą i wirtualnymi latarniami, które prowadzą ją po domu. Roombę można programować na każdy dzień.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Zasilanie&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pomimo posiadania wielu niezależnych silników, Roomba zużywa podczas pracy jedynie 30 Wat, czyli kilkadziesiąt razy mniej energii niż tradycyjny odkurzacz. Zawdzięcza to oszczędnemu akumulatorowi, który po około 3 godzinnym ładowaniu potrafi pracować od 1 do 3 godzin, zależnie od rodzaju sprzątanej powierzchni oraz liczby mebli w pokoju. Roomba jest tak oszczędna i zarazem cicha, ponieważ posiada specjalnie dla niej zaprojektowany, niesłychanie wydajny 3-stopniowy system czyszczenia.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3-stopniowy system czyszczenia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/S4QAzcVNUzI/AAAAAAAAE0s/ODOW8mar5Pg/s1600-h/roomba_profil_dzialania.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 93px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/S4QAzcVNUzI/AAAAAAAAE0s/ODOW8mar5Pg/s320/roomba_profil_dzialania.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5441475133548876594" /&gt;&lt;/a&gt;&lt;br /&gt;Wirująca szczotka boczna wymiata brud wzdłuż ścian i z narożników. Dwie przeciwbieżnie obracające się szczotki główne (gumowa i z włosia) zbierają brud z podłogi i wykładzin. Najdrobniejszy kurzu zasysa podciśnieniem gumowa ssawa, która zużywa dużo mniej prądu niż tradycyjny odkurzacz. Roomba nie potrzebuje tak dużej siły ssania, ponieważ nie przepycha brudu przez długą rurę, tak jak zwykłe workowe odkurzacze. Posiadacze tradycyjnych odkurzaczy workowych doskonale znają nieprzyjemny zapach wydobywający się z urządzenia w czasie sprzątania. Temu zapachowi towarzyszy najdrobniejszy kurz, który wydostaje się poprzez otwory w workach i filtrach. W worku jest ciepło, ciemno i mnóstwo pożywienia dla roztoczy, bakterii i grzybów. Podczas sprzątania takim odkurzaczem zatruwamy powietrze w naszych domach najgroźniejszymi znanymi medycynie alergenami: odchodami roztoczy, zarodnikami grzybów i toksynami produkowanymi przez bakterie. Alergeny te są źródłem alergii, astmy i obniżenia odporności organizmu na inne choroby.&lt;br /&gt;&lt;br /&gt;Szczotkowanie jest najlepszą metodą sprzątania, o czym przekonać się możemy obserwując maszyny czyszczące lotniska, supermarkety, czy ulice. Gdyby używały do sprzątania przepływu powietrza, to ludzi zasypywałaby grad drobnego piasku i kamieni w odległości kilkudziesięciu metrów za taką maszyną.&lt;br /&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3538208463151506323?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3538208463151506323/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3538208463151506323' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3538208463151506323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3538208463151506323'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/12/roomba-tanczacy-robot-odkurzacz.html' title='Roomba - tańczący robot - odkurzacz'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/SynuQ0Ay4HI/AAAAAAAAESw/pAbsIVuPGa8/s72-c/roomba.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-1887780967388834426</id><published>2009-11-07T00:36:00.007+01:00</published><updated>2010-07-03T02:43:16.995+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><title type='text'>Pobujaj w chmurach z Python lub PHP przy pomocy libcloud</title><content type='html'>&lt;b&gt;Cloud computing&lt;/b&gt; (&lt;a href="http://pl.wikipedia.org/wiki/Cloud_computing"&gt;przetwarzanie sieciowe w chmurze&lt;/a&gt;) odnosi się do wielu dziedzin informatyki i przez ostatnie kilka lat stał się elementem ofert wielu poważnych firm hostingowych. Efekt to wiele różnych znaczeń &lt;b&gt;przetwarzania w chmurach&lt;/b&gt; i wiele różnych interfejsów programistycznych API. Jedno jest pewne są takie zastosowania, w których chmury obliczeniowe ratują przedsiębiorców.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/TC6GyV1fTII/AAAAAAAAFJU/D-jZH9N048w/s1600/cloud-computing-simple-diagram.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 229px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/TC6GyV1fTII/AAAAAAAAFJU/D-jZH9N048w/s320/cloud-computing-simple-diagram.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5489473195224288386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Faktem jest, że takie korporacje jak &lt;a href="www.amazon.com" title="Amazon"&gt;Amazon&lt;/a&gt;,&lt;br /&gt;&lt;a href="www.google.com" title="Google"&gt;Google&lt;/a&gt;, &lt;a href="www.microsoft.com" title="Microsoft"&gt;Microsoft&lt;/a&gt; od wielu lat przed pojawianiem się tematu wykorzystywały chmury lub tzw. &lt;i&gt;gridy&lt;/i&gt; w swoich infrastrukturach sieciowych, lecz dziś mogą mocami obliczeniowymi cieszyć również klienci indywidualni. &lt;br /&gt;&lt;br /&gt; Jako przykład praktyczny wykorzystam zlecenie jakie miałem okazję wykonać ostatnio. Klient potrzebował zaindeksować i otagować kilka gigabajtów danych dostarczonych w postaci plików tekstowych na DVD-ROM. Algorytm indeksacji nie jest tajny, więc wspomnę tylko, że danych źródłowych docelowy miał kilka tytułów, kilka opisów w różnych językach oraz powiązane atrybuty.  Po krótkim reserchu okazało się, że na maszynie lokalnej oraz na dostępnym wirtualnym hostingu skrypty muszą działać dokładnie ok. tygodnia, aby przetworzyć wszystkie dane i utworzyć tabelę wyników. Uwzględniłem tutaj tabele wyników pośrednich dla optymalizacji oraz cachowanie często powtarzających się atrybutów w pamięci RAM. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/TC6G9Cv6tlI/AAAAAAAAFJc/bbPKqce1TE4/s1600/cloud_computing__chmury_obliczeniowe___libcloud.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 222px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/TC6G9Cv6tlI/AAAAAAAAFJc/bbPKqce1TE4/s320/cloud_computing__chmury_obliczeniowe___libcloud.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5489473379079206482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Jak na złość zlecenie zostało zaplanowane na 5 dni i klient był nieugięty w terminie. Postanowiłem dać zarobić właścicielom chur obliczeniowych i skorzystałem z usługi &lt;b&gt;Amazon&lt;/b&gt;. Jedyne co zrobiłem, to wypożyczyłem moc obliczeniową z bazą danych mysql i cachowaniem na 3 dni. Koszt był wystarczająco niski i udało się wykorzystując chmury uzyskać bardzo zadowalające wyniki. Co ciekawe rozliczałem się za megabajt transferu oraz czas procesowa w używaniu bazy danych mysql ;-) Polecam - na pewno nie stracicie, ale będzie to pozytywne zauroczenie mocami, jakimi dysponuje taka &lt;i&gt;chmurka&lt;/i&gt;.&lt;br /&gt;&lt;blockquote&gt;Aby móc efektywnie korzystać z serwerów wirtualizacji i zrobić pierwszy krok do korzystania z przetwarzania sieciowego, należy zoptymalizować sprzęt oraz oprogramowanie pod kątem zbalansowania poboru mocy oraz wydajności. Uzyskanie odpowiedniej równowagi eliminuje problem przeciążenia serwerów, a zasoby dla aplikacji i oprogramowania mogą być przydzielane w zależności od potrzeby, by zapewnić ich optymalne działanie.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/TC6HTYV6hcI/AAAAAAAAFJs/UBhb0RDBObA/s1600/cloud-computing-server-farms.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 180px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/TC6HTYV6hcI/AAAAAAAAFJs/UBhb0RDBObA/s320/cloud-computing-server-farms.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5489473762832844226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Niniejszą wypowiedzią chciałbym skierować uwagę i odnotować istniejące, &lt;br /&gt;zarazem promowane na rynku usługi i API upraszczające używanie chmur do minimum.&lt;br /&gt; Skupić się warto na tym, że niektóre API obsługują wielu providerół chmur.&lt;br /&gt;Oto lista providerów chmur, z którymi warto się zapoznać:&lt;br /&gt;&lt;br /&gt;http://incubator.apache.org/libcloud/  - zestawienie wspieranych chur przez API&lt;br /&gt;&lt;br /&gt;http://www.simplecloudapi.org/ http://www.simplecloudapi.org/api PHP class API http://www.simplecloudapi.org/api/simple-queue&lt;br /&gt;&lt;br /&gt;http://deltacloud.org/ http://deltacloud.org/api.html&lt;br /&gt;&lt;br /&gt;http://webhosting.pl/print/Zend.oferuje.deweloperom.PHP.interoperacyjnosc.dla.chmur&lt;br /&gt;&lt;br /&gt;http://incubator.apache.org/libcloud/getting-started.html Python example &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/TC6He5j1PlI/AAAAAAAAFJ0/WELbgtSuQmk/s1600/cloud-computing-diagram.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 174px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/TC6He5j1PlI/AAAAAAAAFJ0/WELbgtSuQmk/s320/cloud-computing-diagram.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5489473960728149586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webhosting.pl/Matt.Mullenweg.o.roli.Open.Source.w.technologii.chmur"&gt;Matt Mullenweg o roli Open Source w technologii chmur&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://go2.wordpress.com/?id=725X1342&amp;site=ambuj.wordpress.com&amp;url=http%3A%2F%2Fsites.computer.org%2Fdebull%2FA09mar%2Fcuibin.pdf&amp;sref=http%3A%2F%2Fambuj.wordpress.com%2F2009%2F06%2F15%2Fmy-introduction-with-cloud-computing%2F"&gt;Dokument PDF na temat konstruowania chmur obliczeniowych&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.in4.pl/recenzje.htm?rec_id=546"&gt;Cloud computing - MultiCore klucz do wirtualizowanych systemow&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-1887780967388834426?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/1887780967388834426/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=1887780967388834426' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1887780967388834426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1887780967388834426'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/11/pobujaj-w-chmurach-z-python-lub-php.html' title='Pobujaj w chmurach z Python lub PHP przy pomocy libcloud'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/TC6GyV1fTII/AAAAAAAAFJU/D-jZH9N048w/s72-c/cloud-computing-simple-diagram.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-2710766536368085021</id><published>2009-11-05T00:15:00.007+01:00</published><updated>2010-07-03T13:08:58.387+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='proste skrypty'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><title type='text'>CSSPrism - edycja arkusza styli CSS na stronie www</title><content type='html'>Wszystkim lubiącym praktyczne aplikacje sieciowe polecić chciałbym &lt;strong&gt;&lt;a href="http://cssprism.com/"&gt;CSSPrism&lt;/a&gt;&lt;/strong&gt;. Sprytna aplikacja naspiana w języku &lt;strong&gt;&lt;a href="http://python.org"&gt;Python&lt;/a&gt;&lt;/strong&gt; i przy pomocy &lt;strong&gt;framework&lt;/strong&gt; a &lt;strong&gt;&lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;&lt;/strong&gt; oraz &lt;strong&gt;&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/TC8X1sgd6GI/AAAAAAAAFJ8/Nt5HZhnnELk/s1600/CSSPrism__edycja_arkuszy_styli_css__aplikacja_python_django_jquery.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/TC8X1sgd6GI/AAAAAAAAFJ8/Nt5HZhnnELk/s320/CSSPrism__edycja_arkuszy_styli_css__aplikacja_python_django_jquery.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5489632682035767394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Prezentowany powyżej obrazek przedstawia stronę startową projektu &lt;strong&gt;CSSPrism&lt;/strong&gt; - inspektora spektrum kolorów ;) Wprowadzamy adres URL do naszych styli, które chcemy edytować. Poniżej prezentuje pozostałę zrzuty ekranów ukazujące prostotę oraz czytelny interfejs użytkownika  &lt;strong&gt;GUI&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/TC8Z1SoBbAI/AAAAAAAAFKE/tTkJTxX_shs/s1600/CSSPrism_przegladanie_kolorow_w_arkuszu_styli_css.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 180px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/TC8Z1SoBbAI/AAAAAAAAFKE/tTkJTxX_shs/s320/CSSPrism_przegladanie_kolorow_w_arkuszu_styli_css.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5489634874111388674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/TC8Z9cLiddI/AAAAAAAAFKM/61hP6J45u80/s1600/CSSPrism__edycja_koloru_w_css.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/TC8Z9cLiddI/AAAAAAAAFKM/61hP6J45u80/s320/CSSPrism__edycja_koloru_w_css.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5489635014115227090" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-2710766536368085021?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/2710766536368085021/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=2710766536368085021' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2710766536368085021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2710766536368085021'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/11/cssprism-edycja-arkusza-styli-css-na.html' title='CSSPrism - edycja arkusza styli CSS na stronie www'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/TC8X1sgd6GI/AAAAAAAAFJ8/Nt5HZhnnELk/s72-c/CSSPrism__edycja_arkuszy_styli_css__aplikacja_python_django_jquery.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-2370640372426845634</id><published>2009-09-12T20:38:00.002+02:00</published><updated>2010-02-10T02:54:03.559+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technologie'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='administracja'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Puppet - zarządzanie farmami serwerów w centralnym miejscu</title><content type='html'>Kiedy poczujecie potrzebę zarządzania np: 17-toma, 40-toma, 150-cioma backendowymi serwerami lub podobną farmą to z wielką dozą radości przyjmiecie na swój &lt;span style="font-style:italic;"&gt;host nr.1&lt;/span&gt; takie narzędzia jak &lt;a href="http://www.capify.org/index.php/Capistrano"&gt;Capistrano&lt;/a&gt; oraz &lt;a href="http://docs.reductivelabs.com/projects/puppet/"&gt;Puppet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/S3IRpYIiM4I/AAAAAAAAEzg/gmBdkuIaEjM/s1600-h/puppet-short.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 151px; height: 44px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/S3IRpYIiM4I/AAAAAAAAEzg/gmBdkuIaEjM/s320/puppet-short.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436427102740165506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Oczywiście jak każdy administrator nie lubimy powtarzania wielokrotnego tych samych czynności :-) Jak Puppet coś tam robi na całej farmie w tym czasie można obejrzeć np: kolejny odcinek &lt;span style="font-weight:bold;"&gt;Big Bang Theory&lt;/span&gt; i spokojnie później przejrzeć logi :-) To oczywiście baaardzoooo pozytywny plan, bo przy kilkudziesięciu i więcej serwerów należy uwzględnić indywidualności w maszynach, które lubią się zdarzać np: w Piątek o 16-tej ;-) A niekiedy jedna maszyna mniej to znacznie większe obciążenie, któremu w weekend może nie podołać farma np: przy sprzedaży świątecznej w większym sklepie, w systemie aukcyjnym, wrzucania wielu fotek przez użytkowników na portalu społecznościowym etc.&lt;br /&gt;&lt;br /&gt; Moim zdaniem warto poznać &lt;a href="http://docs.reductivelabs.com/projects/puppet/"&gt;Puppet&lt;/a&gt;'a i się z nim zaprzyjaźnić ;)&lt;br /&gt;&lt;br /&gt;Materiały:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; http://docs.reductivelabs.com/guides/installation.html&lt;br /&gt; http://reductivelabs.com/trac/puppet/wiki/BigPicture&lt;br /&gt; http://zimowisko.macuk.pl/2010/puppet.pdf&lt;br /&gt; http://www.ploug.org.pl/konf_08/materialy/pdf/02_Masewicz.pdf&lt;br /&gt; http://reductivelabs.com/products/puppet/&lt;br /&gt; http://changelog.complete.org/archives/519-thoughs-on-cfengine-bcfg2-and-puppet&lt;br /&gt; http://dozzie.jogger.pl/2009/06/25/centralizacja-zarzadzania-serwerami-linuksowymi/&lt;br /&gt; http://augeas.net/&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-2370640372426845634?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/2370640372426845634/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=2370640372426845634' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2370640372426845634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2370640372426845634'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/09/puppet-zarzadzanie-farmami-serwerow-w.html' title='Puppet - zarządzanie farmami serwerów w centralnym miejscu'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/S3IRpYIiM4I/AAAAAAAAEzg/gmBdkuIaEjM/s72-c/puppet-short.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-840004425715130859</id><published>2009-07-04T20:27:00.001+02:00</published><updated>2009-08-27T10:37:28.675+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='animacje'/><category scheme='http://www.blogger.com/atom/ns#' term='przystawki do PC'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>interakcja + dzwięk + visual framework = reactable</title><content type='html'>W świecie geeków oraz szeroko rozumianym świece akademickim istnieją różne &lt;span style="font-style:italic;"&gt;zabawki dla dużych dzieci&lt;/span&gt;. Dla jednych włąściwie tylko zabawki, dla innych prace naukowe oraz jedyna pasja. Jedną z nich jest fantastyczne przedsięwzięć są festiwale muzyki elektronicznej z niestandarowymi instrumentami o nazwie &lt;span style="font-weight:bold;"&gt;Reactable&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SpY_ODo-unI/AAAAAAAADhc/lHymiW9aoNc/s1600-h/reactable.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 216px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SpY_ODo-unI/AAAAAAAADhc/lHymiW9aoNc/s320/reactable.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5374552716041173618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; W mniemaniu umuzykalnionej i wykształconej osoby grającej na klasycznym instrumencie może istnieć bariera do dźwięków, które nie wywodzą się z czystej klasyki. Na szczęście takiego problemu nie mają ludzie tworzący projekt &lt;a href="http://www.reactable.com"&gt;Reactable&lt;/a&gt;. Postanowili oni stworzyć technologie wsprartą dedykowanym &lt;span style="font-style:italic;"&gt;frameworkiem&lt;/span&gt; do &lt;span style="font-weight:bold;"&gt;zabawy z dźwiękiem&lt;/span&gt;. &lt;br /&gt;Wymyślili do teogo celu następujące rozwiązanie. Wymagany jest do tego celu projektor graficzny + kamera + stół z szybą. Pod stołem umieszczony jest projektor rzutujący od dołu na stół obrazy oraz zwierciadło półprzeźroczyste z odpowiednio ustawioną kamerą, która &lt;span style="font-style:italic;"&gt;widzi blat stołu&lt;/span&gt;. Umieszczając na blacie krążki z naklejonymi od dołu kształtami dołączamy do brzmień kolejne tony, instrumenty, efekty. Wówczas kamera przekazuje obraz do dedykowanego oprogramowania i steruje projekcją wideo. Stąd niesamowite efekty wizualizacji. Dźwięk wytwarzany jest na podstawie algorytmów, które pozwalają miksować i synchronizować brzmienia jakie posiadają zaprogramowane krążki. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SpZD_x3Sr-I/AAAAAAAADh8/wunRlFfWDtU/s1600-h/reactivision_description.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SpZD_x3Sr-I/AAAAAAAADh8/wunRlFfWDtU/s400/reactivision_description.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5374557968309333986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Całość daje niesamowicie gwiezdny efekt :-) Popatrzcie sami:&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lA29AE6O69k&amp;hl=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/lA29AE6O69k&amp;hl=pl&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WEDia3CFdfg&amp;hl=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/WEDia3CFdfg&amp;hl=pl&amp;fs=1&amp;" 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;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SpZCq71rE1I/AAAAAAAADhk/pwTy9C1WVy0/s1600-h/reactable_14_big.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SpZCq71rE1I/AAAAAAAADhk/pwTy9C1WVy0/s320/reactable_14_big.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5374556510698017618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SpZC3ixVTmI/AAAAAAAADhs/_vZpQuHoueo/s1600-h/reactable_05_big.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SpZC3ixVTmI/AAAAAAAADhs/_vZpQuHoueo/s320/reactable_05_big.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5374556727307226722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SpZDCLCcezI/AAAAAAAADh0/GS8yksnlZ3I/s1600-h/reactable_04_big.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SpZDCLCcezI/AAAAAAAADh0/GS8yksnlZ3I/s320/reactable_04_big.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5374556909915110194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt; &lt;a href="http://mtg.upf.edu/reactable/?media"&gt;Reactable - media&lt;/a&gt;&lt;br /&gt; &lt;a href="http://reactivision.sourceforge.net/"&gt;ReactiVision framework&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-840004425715130859?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/840004425715130859/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=840004425715130859' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/840004425715130859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/840004425715130859'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/07/interakcja-dzwiek-visual-framework.html' title='interakcja + dzwięk + visual framework = reactable'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SpY_ODo-unI/AAAAAAAADhc/lHymiW9aoNc/s72-c/reactable.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-8589148536302408485</id><published>2009-07-02T21:05:00.008+02:00</published><updated>2009-12-20T17:39:55.728+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proste skrypty'/><category scheme='http://www.blogger.com/atom/ns#' term='kult węża'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><title type='text'>newt - konsolwe UI może być lżejsze od ncurses</title><content type='html'>W trosce o banalne wykorzystania konsoli do celów wybrania kilku parametrów z listy dostępnych, autorzy biblioteki programistycznej &lt;a href="http://en.wikipedia.org/wiki/Python-newt"&gt;newt&lt;/a&gt; udowodnili, że wcale nie musimy pisać niesamowicie złożonego kodu. Okazuje się, że biblioteka &lt;span style="font-weight:bold;"&gt;newt&lt;/span&gt; jest tym, czego potrzebuje czasmi każdy programista i ułątwia znacząco życie w pisaniu dedykowanych narzędzi z czytelnym interfejsem tekstowym zawierającym formularze.&lt;br /&gt;&lt;br /&gt; Dla przykładu, gdy będziemy posiadali potrzebę napisania kilku formularzy dla konsoli - o skali trudności jak w  poniższych przykładach - zachęcam do użycia biblioteki &lt;span style="font-weight:bold;"&gt;newt&lt;/span&gt; w wersji dla języka &lt;span style="font-weight:bold;"&gt;Python&lt;/span&gt; - &lt;span style="font-style:italic;"&gt;python-newt&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;W prostocie siła - zapraszam do przeglądu możliwości na kilku poniższych fotkach.&lt;br /&gt; &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/Sy5OMYpC2sI/AAAAAAAAES4/YomyiWes-Cg/s1600-h/newt_1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 191px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/Sy5OMYpC2sI/AAAAAAAAES4/YomyiWes-Cg/s320/newt_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5417353376453286594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/Sy5OVDAn9tI/AAAAAAAAETA/1WrcxuuRjAM/s1600-h/newt_2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 191px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/Sy5OVDAn9tI/AAAAAAAAETA/1WrcxuuRjAM/s320/newt_2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5417353525265430226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/Sy5Oa9MfG6I/AAAAAAAAETI/7TRLV0g92bk/s1600-h/newt_3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 191px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/Sy5Oa9MfG6I/AAAAAAAAETI/7TRLV0g92bk/s320/newt_3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5417353626783783842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/Sy5Ohbw_FaI/AAAAAAAAETQ/ddTx1NbDox4/s1600-h/newt_4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 191px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/Sy5Ohbw_FaI/AAAAAAAAETQ/ddTx1NbDox4/s320/newt_4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5417353738069153186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Poniżej kod  wjęzyku Python umożliwiający utworzenie prezentowaych na obrazkach formularzy:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;from snack import *&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;def help(screen, text):&lt;br /&gt;    raise ValueError, "foo"&lt;br /&gt;    ButtonChoiceWindow(screen, "Help", text, help = "Help on help")&lt;br /&gt;&lt;br /&gt;t = TextboxReflowed(25, "Some text which needs to be wrapped at a good place.")&lt;br /&gt;li = Listbox(5, width = 20, returnExit = 1)&lt;br /&gt;li.append("First", "f")&lt;br /&gt;li.append("Second", "s")&lt;br /&gt;li.insert("Another", "a", "f")&lt;br /&gt;li.delete("a")&lt;br /&gt;ct = CheckboxTree(5, scroll = 1)&lt;br /&gt;ct.append("Colors")&lt;br /&gt;ct.addItem("Red", (0, snackArgs['append']), "red item key")&lt;br /&gt;ct.addItem("Yellow", (0, snackArgs['append']))&lt;br /&gt;ct.addItem("Blue", (0, snackArgs['append']))&lt;br /&gt;ct.append("Flavors")&lt;br /&gt;ct.addItem("Vanilla", (1, snackArgs['append']))&lt;br /&gt;ct.addItem("Chocolate", (1, snackArgs['append']))&lt;br /&gt;ct.addItem("Stawberry", (1, snackArgs['append']))&lt;br /&gt;ct.append("Numbers")&lt;br /&gt;ct.addItem("1", (2, snackArgs['append']))&lt;br /&gt;ct.addItem("2", (2, snackArgs['append']))&lt;br /&gt;ct.addItem("3", (2, snackArgs['append']))&lt;br /&gt;ct.append("Names")&lt;br /&gt;ct.addItem("Matt", (3, snackArgs['append']))&lt;br /&gt;ct.addItem("Shawn", (3, snackArgs['append']))&lt;br /&gt;ct.addItem("Wilson", (3, snackArgs['append']))&lt;br /&gt;ct.append("Months")&lt;br /&gt;ct.addItem("February", (4, snackArgs['append']))&lt;br /&gt;ct.addItem("August", (4, snackArgs['append']))&lt;br /&gt;ct.addItem("September", (4, snackArgs['append']))&lt;br /&gt;ct.append("Events")&lt;br /&gt;ct.addItem("Christmas", (5, snackArgs['append']))&lt;br /&gt;ct.addItem("Labor Day", (5, snackArgs['append']))&lt;br /&gt;ct.addItem("My Vacation", (5, snackArgs['append']))&lt;br /&gt;b = Button("Button")&lt;br /&gt;e = Entry(15, "Entry")&lt;br /&gt;l = Label("label")&lt;br /&gt;cb = Checkbox("checkbox")&lt;br /&gt;r1 = SingleRadioButton("Radio 1", None, 1)&lt;br /&gt;r2 = SingleRadioButton("Radio 2", r1)&lt;br /&gt;&lt;br /&gt;def something():&lt;br /&gt;    print hello&lt;br /&gt;&lt;br /&gt;screen = SnackScreen()&lt;br /&gt;&lt;br /&gt;screen.helpCallback(help)&lt;br /&gt;&lt;br /&gt;foo = EntryWindow(screen, 'Title', 'This is some text for the entry window',&lt;br /&gt;     ['prompt', 'more', 'info'])&lt;br /&gt;&lt;br /&gt;lbcw = ListboxChoiceWindow(screen, 'Title 2', &lt;br /&gt;      'Choose one item from the list below:', &lt;br /&gt;      ('One', 'Two', 'Three', 'Four', 'Five'), default = 2,&lt;br /&gt;      help = "Help for a listbox")&lt;br /&gt;&lt;br /&gt;sg = Grid(2, 3)&lt;br /&gt;sg.setField(b, 0, 0, anchorLeft = 1)&lt;br /&gt;sg.setField(e, 1, 0, (1, 0, 0, 0), anchorLeft = 1, anchorTop = 1)&lt;br /&gt;sg.setField(l, 0, 1, (0, 1, 0, 0), anchorLeft = 1)&lt;br /&gt;sg.setField(cb, 1, 1, (1, 1, 0, 0), anchorLeft = 1)&lt;br /&gt;sg.setField(r1, 0, 2, (0, 0, 0, 0), anchorLeft = 1)&lt;br /&gt;sg.setField(r2, 1, 2, (1, 0, 0, 0), anchorLeft = 1)&lt;br /&gt;&lt;br /&gt;g = Grid(1, 3)&lt;br /&gt;&lt;br /&gt;g.setField(t, 0, 0)&lt;br /&gt;g.setField(li, 0, 1, (0, 1, 0, 1))&lt;br /&gt;g.setField(sg, 0, 2)&lt;br /&gt;&lt;br /&gt;g.place(1, 1)&lt;br /&gt;&lt;br /&gt;screen.gridWrappedWindow(g, "title")&lt;br /&gt;&lt;br /&gt;f = Form("This is some help")&lt;br /&gt;f.add(li)&lt;br /&gt;f.add(b)&lt;br /&gt;f.add(e)&lt;br /&gt;f.add(l)&lt;br /&gt;f.add(cb)&lt;br /&gt;f.add(r1)&lt;br /&gt;f.add(r2)&lt;br /&gt;f.add(t)&lt;br /&gt;&lt;br /&gt;res = f.run()&lt;br /&gt;&lt;br /&gt;screen.popWindow()&lt;br /&gt;&lt;br /&gt;g = GridForm(screen, "Tree", 1, 2)&lt;br /&gt;g.add(ct, 0, 0, (0, 0, 0, 1))&lt;br /&gt;g.add(Button("Ok"), 0, 1)&lt;br /&gt;g.runOnce()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;screen.finish()&lt;br /&gt;&lt;br /&gt;print "val", e.value()&lt;br /&gt;print "check", cb.value()&lt;br /&gt;print "r1", r1.selected()&lt;br /&gt;print "listbox", li.current()&lt;br /&gt;# returns a tuple of the wrapped text, the actual width, and the actual height&lt;br /&gt;print res&lt;br /&gt;&lt;br /&gt;print foo&lt;br /&gt;print 'lbcw', lbcw&lt;br /&gt;print "ct selected", ct.getSelection()&lt;br /&gt;print "ct current", ct.getCurrent()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ponadto dla wymagających istnieje też port formularzy do konsoli graficznej GTK - &lt;a href="http://www.whoow.org/people/Jean-Marc.Lienher/gnewt/README"&gt;gnewt&lt;/a&gt;&lt;br /&gt;Dostępny jest też &lt;a href="http://www.whoow.org/people/Jean-Marc.Lienher/gnewt/tutorial.html"&gt;tutorial&lt;/a&gt; do &lt;span style="font-weight:bold;"&gt;newt&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/Sy5S2iDU_OI/AAAAAAAAETY/3IHeZ4TV69Q/s1600-h/nt_test.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 216px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/Sy5S2iDU_OI/AAAAAAAAETY/3IHeZ4TV69Q/s320/nt_test.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5417358498580462818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/Sy5TLbJgnmI/AAAAAAAAETg/rOG68iYzw8o/s1600-h/nt_test_gnewt.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 203px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/Sy5TLbJgnmI/AAAAAAAAETg/rOG68iYzw8o/s320/nt_test_gnewt.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5417358857504595554" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-8589148536302408485?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/8589148536302408485/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=8589148536302408485' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/8589148536302408485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/8589148536302408485'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/07/newt-konsolew-ui-moze-byc-lzejsze-od.html' title='newt - konsolwe UI może być lżejsze od ncurses'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/Sy5OMYpC2sI/AAAAAAAAES4/YomyiWes-Cg/s72-c/newt_1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-943675648088580216</id><published>2009-06-17T23:23:00.001+02:00</published><updated>2009-08-21T00:20:36.540+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='technologie'/><category scheme='http://www.blogger.com/atom/ns#' term='informatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='praca'/><title type='text'>Przyspieszenie aplikacji z Google Perftools</title><content type='html'>Wielu ludzikom, którzy nie biorą na poważnie &lt;span style="font-style:italic;"&gt;optymalizacji&lt;/span&gt; lub nie mają z nią potencjalnych problemów na codzień takie pojęcie jak &lt;span style="font-style:italic;"&gt;profilowanie&lt;/span&gt; bywa długo obce. Mogą tylko się z tego cieszyć, bo w rękach ich bardziej doświadczonych kolegów od &lt;span style="font-style:italic;"&gt;profilowania aplikacji&lt;/span&gt; spoczywa pewna &lt;span style="font-style:italic;"&gt;magiczna moc&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;  Czasami bywamy pytani o to, jak można coś zrobić szybciej lub napisać tak, aby działało szybciej na tej samej maszynie. W sytuacji w której tematem optymalizacji jest jakiś nieskomplikowany język skryptowy typu &lt;a href="http://python.org"&gt;Python&lt;/a&gt;, &lt;a href="http://php.net"&gt;PHP&lt;/a&gt;, czy &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; mamy do dyspozycji napisanie modułu w języku &lt;a href="http://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania)"&gt;C&lt;/a&gt;. Zasadniczo te języki są napisane w C (C++) i zakładamy, że moduł napisany w języku źródłowym, w którym napisano dany  język będzie szybszy. Sprawa się nieco komplikuje, gdy nie mamy takiego pomostu jak możliwość napisania kodu modułu w kodzie źródłowym języka. Jeszcze częściej nie mamy wpływu na sposób &lt;span style="font-weight:bold;"&gt;zarządzania pamięcią&lt;/span&gt; oraz &lt;span style="font-weight:bold;"&gt;wielowątkowością&lt;/span&gt; w danym języku skryptowym. Posłużę się dla przykładu językiem &lt;span style="font-style:italic;"&gt;PHP&lt;/span&gt;, który posiada źródłową konwencję nazwaną &lt;span style="font-style:italic;"&gt;Zend Engine&lt;/span&gt;. Jest to narzucony silnik stworzony poprzez firmę Zend i rozwijany przez deweloperów woluntariuszy na całym świecie. Niestety naleciałości, które ciągną się za nim od wielu lat ograniczają znacząco działanie tak istotnych mechanizmów języka jak &lt;span style="font-style:italic;"&gt;wielowątkowość&lt;/span&gt; i &lt;span style="font-style:italic;"&gt;odśmiecanie pamięci&lt;/span&gt;. Język ten w samych swoich źródłach jest pod tym kątem niedojrzały. Inna sytuacja jest w przypadku języka Python i Ruby. Słynna translacja języka Python w samym RPython (Restricted Python) - statycznym podzbiorze Pythona, który można skompilować do kodu bajtowgo Javy, CLR czy C, czyli projekt &lt;a href="http://codespeak.net/pypy/dist/pypy/doc/index.html"&gt;PyPy&lt;/a&gt;. Pozwala na bardzo rozwinięte horyzonty działania, które dla niewiedzących prowadzić mogą do definowania np: własnych zasad odśmiecania pamięci, sposobu działania wielowątkowości i całej gamy innych drobiazgów, które stawiają dość wysoko język Python na podeście :-) Nie znam dokładnie źródeł języka Ruby, ale widziałem, że są czytelne i można po nich wywnioskować, że doruwnuą projektowi takiemu jak Python, ale też zostawiają  w tyle &lt;span style="font-style:italic;"&gt;PHP Zend Engine&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt; Rozpisałem się o ogólnym spojrzeniu na źródła powszechnych języków skryptowych, aby naświetlić tylko, że dla niektórych języków temat optymalizacji, czyli profilowania na poziomie źródeł języka jest dość ograniczony. Lecz z kolei są takie języki skryptowe, które można profilować na poziomie wątków oraz zarządzania pamięcią. Projekty w ramach których dość czytelnie to zaprezentowano zawierają materiały dodatkowe. Wspomnę jeszcze, że &lt;span style="font-style:italic;"&gt;nasz ulubiony&lt;/span&gt; googiel też się podpisuje do takich praktyk i posiada dość spore doświadczenie w tej materii. W soich serwerowniach dobierają procesory oraz z tego co mi wiadomo na farmach maszyn odbywa się również profilowane kompilowanego oprogramowania, aby jak najwięcej wycisnąć. Jest to jedna z nielicznych firm, która używa selekcjonowanych i wygrzewanych partii procesorów Pentium III oraz serwerownie stanowią klastry słabszych maszyn o przewidywalnej mocy obliczeniowej oraz przewidywalnym zużyciu energii. Skoro google udowodniło, że można nie kupować drogich serwerów IBM, czy Suna, czy tez HP jestem zgodny z nimi, że wówczas bez profilowania oraz optymalizacji zarówno hardware a przede wszystkim software nie wiele zdziałamy. &lt;br /&gt;&lt;br /&gt; Przechodząc do części praktycznej chciałbym uchylić fragment tajemnicy przyspieszania aplikacji z &lt;span style="font-weight:bold;"&gt;Google Perftools&lt;/span&gt;. Materiał na temat przykładu profilowania znajdziecie &lt;a href="http://www.performancewiki.com/google-perftools.html"&gt;tutaj&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Życzę pomyślnej lektury i zapraszam do podzielenia się refleksjami na ten temat.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mysqlconf.com/mysql2009/public/schedule/detail/6661"&gt;Mastering the Art of Indexing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mysqlconf.com/mysql2009/public/schedule/detail/6903"&gt;High Availability and Scalability Patches from Google&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mysqlha.blogspot.com/2009/03/more-on-using-google-perftools-with.html"&gt;More on using Google Perftools with MySQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dotdeb.org/tag/google-perftools/"&gt;&lt;br /&gt;Using the Google Perftools to speed up your MySQL server&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dotdeb.org/2008/08/25/using-the-google-perftools-to-speed-up-your-mysql-server/"&gt;Using the Google Perftools to speed up your MySQL server - example&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/google-perftools/wiki/GooglePerformanceTools"&gt;Fast, multi-threaded malloc() and nifty performance analysis tools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/gperftools-httpd/"&gt;Simple HTTP server for use with google-perftools pprof&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://google-perftools.googlecode.com/svn/trunk/doc/tcmalloc.html"&gt;TCMalloc : Thread-Caching Malloc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://minos.phy.bnl.gov/~bviren/minos/software/prof/PerfTools/"&gt;&lt;br /&gt;prof/PerfTools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://minos.phy.bnl.gov/~bviren/minos/software/prof/PerfTools/doc/"&gt;This page describes how to setup and use PerfTools.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://goog-perftools.sourceforge.net/doc/cpu_profiler.html"&gt;This CPU profiler used at Google&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Spinlock"&gt;Spinlock&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/sasha/archive/2008/08/10/practical-concurrency-patterns-spinlock.aspx"&gt;&lt;br /&gt;Practical Concurrency Patterns: Spinlock&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/sasha/archive/2008/07/30/practical-concurrency-patterns-lock-free-operations.aspx"&gt;Practical Concurrency Patterns: Lock-Free Operations&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/threads/spinlock.aspx"&gt;Spinlock example code&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.washington.edu/homes/tom/pubs/spinlock.pdf"&gt;The performance of spin lock alternatives for shared-memory multiprocessors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.hp.com/en/TKP-90203/ch09s01.html"&gt;HP - Spinlock Pool Parameter Summary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.spinlock(VS.100).aspx"&gt;.NET Framework Class Library - SpinLock Structure&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hoard.org/"&gt;The Hoard Memory Allocator and Memory Management Studies&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rubyinside.com/ruby-profiling-charts-with-perftools-1841.html"&gt;Generate Ruby Profiling Charts With Perftools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=" http://www.igvita.com/2009/06/13/profiling-ruby-with-googles-perftools/"&gt;Profiling Ruby With Google’s Perftools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mysqlconf.com/mysql2009/public/schedule/detail/7031"&gt;Distributed Innodb Caching with memcached&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mysqlconf.com/mysql2009/public/schedule/detail/8877"&gt;InnoDB: Innovative Technologies for Performance and Data Protection&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-943675648088580216?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/943675648088580216/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=943675648088580216' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/943675648088580216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/943675648088580216'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/06/przyspieszenie-aplikacji-z-google.html' title='Przyspieszenie aplikacji z Google Perftools'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-6717343084071019595</id><published>2009-06-09T22:35:00.007+02:00</published><updated>2009-08-21T00:15:26.532+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='kult węża'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='wyznawcy węża'/><title type='text'>Stackless Python - jak zrobić mikrowątki na localhost</title><content type='html'>Dziś zapraszam do kilku prób zrobienia z naszego lokalhosta maszyny z działającymi w tle mikrowątkami &lt;a href="www.stackless.com"&gt;Stackless Python&lt;/a&gt;, które potrafią dość wiele zdziałać.  Aby dowiedzieć się jak wiele polecam przeczytanie artykułu o grze &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.tentonhammer.com/node/10044"&gt;EVE&lt;/a&gt; on-line&lt;/span&gt;, która bazuje na tym rozwiązaniu.&lt;br /&gt;&lt;br /&gt;Ważnym wprowadzeniem będzie teoria na wikipedii dotycząca &lt;a href="http://en.wikipedia.org/wiki/Distributed_computing"&gt;Distributed computing&lt;/a&gt;. Są różne podejścia do reazlizacji wielowątkowości i jej synchronizajci. Zasadniczo doceniam w tym artykule specyficzne, bo posiadające w API dosłownie kilka funkcji. Zaimplementowanych w taki sposób, że aż się miło testuje i wdraża takie rozwiązanie. Oczywiście porównuję tutaj API systemowe np: WINAPI i POSIX THREADS. Jest z tym nieco zabawy w projektowaniu i kodowaniu, dlatego przedstawiam &lt;a href="www.stackless.com"&gt;Stackless Python&lt;/a&gt;, który może rowiązać więcej problemów niż tylko wymienione niewygody wielowątkowości w naszym systemie operacyjnym.&lt;br /&gt;&lt;br /&gt; Okazuje się, że programowanie wielowątkowe na większą skalę wcale nie musi posiadać skomplikowanego API. Projektanci &lt;span style="font-weight:bold;"&gt;Stackless Python&lt;/span&gt; doskonale o tym wiedzieli i uprościli bazowe elementy API do następujących pojęć:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Tasklets&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;The Scheduler&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Channels&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt; Zacznę od bazowego przykładu, który pokazuje, jak rozpocząć zabawę z tą technologią. Do wykonania poniższego kodu będzie potrzebna obecność w naszym systemie &lt;span style="font-weight:bold;"&gt;pypy-stackless&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Tasklets&lt;/span&gt; są podstawowym budulcem dla stackless. Możesz utworzyć zadania tasklet przez dodanie zwykle funkcji lub metody klasy. Stworzony w ten sposób  tasklet zostaje dodany do harmonogramu zadań. Zauważ, że kolejka taskletów i nie działaja, dopóki nie nastąpi wywołanie metody &lt;span style="font-style:italic;"&gt;stackless.run()&lt;/span&gt;.&lt;br /&gt;Oto prosta demonstracja:&lt;br /&gt;&lt;blockquote&gt;# example1.py &lt;br /&gt;&lt;br /&gt;import stackless&lt;br /&gt;&lt;br /&gt;def print_x(x):&lt;br /&gt;    print x&lt;br /&gt;&lt;br /&gt;stackless.tasklet(print_x)('one')&lt;br /&gt;stackless.tasklet(print_x)('two')&lt;br /&gt;stackless.tasklet(print_x)('three')&lt;br /&gt;&lt;br /&gt;stackless.run()&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Uruchamianie przykładu oraz rezultaty działania:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ pypy-stackless example1.py&lt;br /&gt;one&lt;br /&gt;two&lt;br /&gt;three&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Scheduler&lt;/span&gt; kontroluje kolejność, w jakiej tasklets są uruchamiane. Jeśli po prostu stworzysz kilka taskletów, będą uruchamiane w kolejności, w jakiej zostały utworzone. W ogólnej praktyce będzie to związane ze stworzeniem i wywołaniem dodanych taskletów za każdą iteracją ogólnego mechnizmu obiegu danych. &lt;br /&gt;Zauważ, że gdy wywołujemy stackless.schedule(), aktywnym tasklet zatrzymuje się i ponownie wstrzykuje się do końca schedulera w kolejce, pozwalając następnemu taskletowi uruchomić się. Gdy wszystkie z aktywnych taskletów zostaną uruchomione, następuje przywoływanie pozostałych. To trwa do zakończenia wszystkich aktywnych taskletów. W ten sposób osiągamy wielowątkowość we współpracy z stackless.&lt;br /&gt;Szybka demonstracja:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# example2.py&lt;br /&gt;&lt;br /&gt;import stackless&lt;br /&gt;&lt;br /&gt;def print_three_times(x):&lt;br /&gt;    print "1:", x&lt;br /&gt;    stackless.schedule()&lt;br /&gt;    print "2:", x&lt;br /&gt;    stackless.schedule()&lt;br /&gt;    print "3:", x&lt;br /&gt;    stackless.schedule()&lt;br /&gt;&lt;br /&gt;stackless.tasklet(print_three_times)('first')&lt;br /&gt;&lt;br /&gt;stackless.tasklet(print_three_times)('second')&lt;br /&gt;&lt;br /&gt;stackless.tasklet(print_three_times)('third')&lt;br /&gt;&lt;br /&gt;stackless.run()&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Uruchamianie przykładu oraz rezultaty działania:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ pypy-stackless example2.py&lt;br /&gt;1: first&lt;br /&gt;1: second&lt;br /&gt;1: third&lt;br /&gt;2: first&lt;br /&gt;2: second&lt;br /&gt;2: third&lt;br /&gt;3: first&lt;br /&gt;3: second&lt;br /&gt;3: third&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Channels&lt;/span&gt; czyli kanały umożliwiają wysyłanie informacji między tasklets. To realizuje dwie rzeczy: &lt;br /&gt;&lt;br /&gt;Pozwala to na wymianę informacji między tasklets. &lt;br /&gt;Pozwala to na kontrolę przepływu egzekucji. &lt;br /&gt;&lt;br /&gt;Kolejna szybka demonstracja:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# example3.py&lt;br /&gt;&lt;br /&gt;channel = stackless.channel()&lt;br /&gt;&lt;br /&gt;def receiving_tasklet():&lt;br /&gt;     print "Recieving tasklet started"&lt;br /&gt;     print channel.receive()&lt;br /&gt;     print "Receiving tasklet finished"&lt;br /&gt;&lt;br /&gt;def sending_tasklet():&lt;br /&gt;     print "Sending tasklet started"&lt;br /&gt;     channel.send("send from sending_tasklet")&lt;br /&gt;     print "sending tasklet finished"&lt;br /&gt;&lt;br /&gt;def another_tasklet():&lt;br /&gt;     print "Just another tasklet in the scheduler"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Uruchamianie przykładu oraz rezultaty działania:&lt;br /&gt;&lt;blockquote&gt;$ pypy-stackless example3.py&lt;br /&gt;&lt;tasklet[, 1]&gt;&lt;br /&gt;&lt;tasklet[, 2]&gt;&lt;br /&gt;&lt;tasklet[, 3]&gt;&lt;br /&gt;Recieving tasklet started&lt;br /&gt;Sending tasklet started&lt;br /&gt;send from sending_tasklet&lt;br /&gt;Receiving tasklet finished&lt;br /&gt;Just another tasklet in the scheduler&lt;br /&gt;sending tasklet finished&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Kilkoma słowami chciałbym podsumować opisane rozwiązanie w &lt;span style="font-weight:bold;"&gt;Stackless Python&lt;/span&gt;. Po pierwsze ilość dostępnych funkcji w API oraz sposób ich użycia szczególnie zachęca do zgłębiania i używania (4 - 6 funkcji). Zarazem niesamowitym osiągnięciem jest fakt, że tak wielki projekt gry on-line jak &lt;span style="font-weight:bold;"&gt;EVE&lt;/span&gt; bazuje na tak prostym i wydajnym rozwiązaniu.&lt;br /&gt;&lt;br /&gt;Zachęcam do opisania swoich doświadczeń ze &lt;span style="font-style:italic;"&gt;Stackless Python &lt;/span&gt; w komentarzach, chętnie podyskutuję.&lt;br /&gt;&lt;br /&gt;Mariały dodatkowe:&lt;br /&gt;&lt;br /&gt;&lt;a href="www.stackless.com"&gt;Stackless Python Homepage&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://members.verizon.net/olsongt/stackless/why_stackless.html"&gt;why stackless&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.developer.com/lang/other/article.php/630761"&gt;Is Stackless Python for You?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://members.verizon.net/olsongt/stackless/why_stackless.html"&gt;Introduction to Concurrent Programming with Stackless Python&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rwdev.eu/articles/threads"&gt;Wątki&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.archivum.info/pl.comp.lang.python/2008-03/msg00119.html&lt;br /&gt;&lt;br /&gt;http://forum.gamedev.pl/index.php?action=printpage%3Btopic=6678.0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bs.binboy.org/index.php?show=43"&gt;Kurs Pisania OS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://night.jogger.pl/startid/328584"&gt;Debug pamięci w Linuksie (pamięć od strony technicznej)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rgawron.megiteam.pl/2009/01/04/zarzadzanie_pamiecia_w_c/"&gt;Dynamiczne zarządzanie pamięcią w C bez wycieków&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://komputery.w.polsce.biz/python-4-s-2272.html"&gt;Stackless Python - artykuly&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/interviews/vinoski-qcon-interview;jsessionid=5789FBE3FFDA9BA736E4C99009ED4996"&gt;CORBA Guru Steve Vinoski on REST, Web Services, and Erlang&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-6717343084071019595?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/6717343084071019595/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=6717343084071019595' title='Komentarze (5)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6717343084071019595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6717343084071019595'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/06/stackless-python-jak-zrobic-mikrowatki.html' title='Stackless Python - jak zrobić mikrowątki na localhost'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-296945580995844082</id><published>2009-06-06T21:00:00.003+02:00</published><updated>2009-08-20T23:10:54.370+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='robotyka'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Max/MSP + Arduino - udźwiękowienie głuchej maszyny</title><content type='html'>W wielu wymiarach mikroprocesorowych odkryć jest też taki, który powoduje, że głucha, cicha i stara zabawka leżąca w szuflkadzie jaką może być system mikroprocesorowy nagle ożywa i wydaje przeróżne - w tym niesamowite - dźwięki. Mam na myśli adaptacje Adruino w wersji &lt;a href="http://www.arduino.cc/playground/Interfacing/MaxMSP"&gt;MaxMSP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;  Z materiału &lt;a href="http://file-error.net/1o1o1o1o1/?Physical_Computing_and_Interaction:Arduino:Arduino_VS_Max%2FMSP"&gt;Arduino VS Max/MSP&lt;/a&gt; wynika, że najlepszym softem do zabawy będzie &lt;a href="http://digitalcoleman.blogspot.com/2009/03/maxuino-005-released-arduino-firmata-v2.html"&gt;Maxduino&lt;/a&gt;. Zabawa może polegać na tym, że rozrysowujemy w aplikacji &lt;span style="font-style:italic;"&gt;Max&lt;/span&gt; wykres działania / połączenia z systmem generatorem/syntezatorem dźwięku i uploadujemy program do naszej zabawki. Dodatkowe interfejsy mile widziane. Diody RGB, klawisze, czujniki natężenia światła i całą resztę można powiązać z syntezowaniem bitów, które sprawią, że na pozór cichy i bezduszny sprzęt nabierze niesamowitego wydźwięku i będzie w stanie nas zaskoczyć brzmieniem np: z gatunku &lt;a href="http://pl.wikipedia.org/wiki/Ambient"&gt;ambient&lt;/a&gt; :-)&lt;br /&gt;&lt;br /&gt; Oto kilka przykładów zrealizowanych pomysłów:&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JKlqlG3ev70&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/JKlqlG3ev70&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;/center&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gzXoKBqFlZQ&amp;hl=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/gzXoKBqFlZQ&amp;hl=pl&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9QmdCxIXs0Y&amp;hl=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/9QmdCxIXs0Y&amp;hl=pl&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="flvplayer" align="middle" width="498" height="346"&gt;&lt;br /&gt;&lt;param name="allowScriptAccess" value="sameDomain"&gt;&lt;br /&gt;&lt;param name="movie" value="http://mediamill.cla.umn.edu/mediamill/flvplayer.swf"&gt;&lt;br /&gt;&lt;param name="quality" value="high"&gt;&lt;br /&gt;&lt;param name="bgcolor" value="#ffffff"&gt;&lt;br /&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;br /&gt;&lt;param name="FlashVars" value="file=http://mediamill.cla.umn.edu/mediamill/download.php?file=10775.flv&amp;amp;width=498&amp;amp;height=346&amp;amp;autostart=false&amp;amp;image=http://mediamill.cla.umn.edu/mediamill/thumb.php?id=7430%26big=true"&gt;&lt;br /&gt;&lt;embed src="http://mediamill.cla.umn.edu/mediamill/flvplayer.swf" flashvars="file=http://mediamill.cla.umn.edu/mediamill/download.php?file=10775.flv&amp;amp;width=498&amp;amp;height=346&amp;amp;autostart=false&amp;amp;image=http://mediamill.cla.umn.edu/mediamill/thumb.php?id=7430%26big=true" quality="high" bgcolor="#ffffff" name="flvplayer" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" allowfullscreen="true" align="middle" width="498" height="346"&gt;&lt;br /&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt;&lt;br /&gt;http://www.music.mcgill.ca/~gary/306/week5/serial.html&lt;br /&gt;&lt;br /&gt;http://www.tigoe.net/pcomp/code/category/category/MaxMSP&lt;br /&gt;&lt;br /&gt;http://www.flickr.com/photos/gudmundsson/3234647715/&lt;br /&gt;&lt;br /&gt;http://www.soundplusdesign.com/?p=1305&lt;br /&gt;&lt;br /&gt;http://www.soundplusdesign.com/?cat=116&lt;br /&gt;&lt;br /&gt;http://www.alimomeni.net/node/204&lt;br /&gt;&lt;br /&gt;http://blog.soundsorange.net/2006/08/29/arduino-getting-the-usb-version-up-and-running-on-osx-using-pd/&lt;br /&gt;&lt;br /&gt;http://ultranoise.es/blog/?p=213&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-296945580995844082?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/296945580995844082/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=296945580995844082' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/296945580995844082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/296945580995844082'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/06/maxmsp-arduino-udzwiekowienie-guchej.html' title='Max/MSP + Arduino - udźwiękowienie głuchej maszyny'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-5048149216639670915</id><published>2009-05-26T21:58:00.003+02:00</published><updated>2009-07-03T12:36:44.956+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technologie'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang + PHP - nastała era miksowanych rozwiązań</title><content type='html'>Jak sami wiecie najlepsze kanapki to takie, które mają wiele smakowitych składników :-) &lt;br /&gt;Takie kanapki można porównać do połączenia technologii &lt;a href="http://php.net"&gt;PHP&lt;/a&gt; oraz &lt;a href="http://erlang.org"&gt;Erlang&lt;/a&gt;. Kontrast języka skryptowego &lt;span style="font-weight:bold;"&gt;PHP&lt;/span&gt; przeznaczonego do przetwarzania i tworzenia hipertekstu, prostych zadań po stronie serwera oraz &lt;span style="font-style:italic;"&gt;ponadczasowego&lt;/span&gt; języka funkcyjnego z własnymi mikrowątkami do przetwarzania danych w chmurach obliczeniowych &lt;span style="font-weight:bold;"&gt;Erlang&lt;/span&gt;. Kontrast dość spory, więc postanowiłem sprawdzić, co wynika z zestawienia takich odrębnych tematów.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/Sk3ehqIW8YI/AAAAAAAADgM/qgdwP2COLzQ/s1600-h/PHP_Erlang__elephpant.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/Sk3ehqIW8YI/AAAAAAAADgM/qgdwP2COLzQ/s320/PHP_Erlang__elephpant.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5354180201839784322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;src: http://www.flickr.com/photos/tobiasschlitt/2644905363/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Niewątpliwie zaletą języka &lt;span style="font-style:italic;"&gt;PHP&lt;/span&gt; jest jego popularność na sporej liczbie produkcyjnych serwerów serwujących dynamiczny kontekst, możliwość zestawienia połączeń z powszechnymi bazami danych, stały rozwój języka oraz prostota programowania w nim. Do tego spora społeczność znawców oraz zadających stale te same &lt;span style="font-style:italic;"&gt;FAQ&lt;/span&gt; na forach powoduje mega  popularyzację tematyki programowania stron oraz aplikacji internetowych. Przyglądając się rozwojowi języka z perespektywy kilku lat znajdziemy w jednym dość specyficznym temacie dość spory niedosyt. Dokładnie mam na myśli w &lt;span style="font-weight:bold;"&gt;brak wielowątkowości w języku PHP&lt;/span&gt;. Jest to może i śmieszne, ale bywa zgrozą na codzień dla poważniejszej kady developerów PHP. Nie będę rozpisywał się o tym, że takie języki skryptowe jak Python, Ruby, Lua mają wbudowaną obsługę wieloeątkowości ... i to je stawia zupełnie na innym podium ;)&lt;br /&gt;&lt;br /&gt; Spoglądając z kolei na język &lt;span style="font-style:italic;"&gt;Erlang&lt;/span&gt; i jego możliwości tworzenia nieograniczonej ilości wbudowanych mikrowątków, które są niezależne od platformy i wątków systemowych, można wymyślić wart świeczki &lt;span style="font-style:italic;"&gt;pomost&lt;/span&gt; dla tych technologii. Warto też przytoczyć jakieś dwa przykłady, w których ten język osiągnął popularność i sukces tzn. serwer metakomunikatora &lt;span style="font-weight:bold;"&gt;ejabberd&lt;/span&gt; oraz baza danych &lt;span style="font-weight:bold;"&gt;Amazon SimpleDB&lt;/span&gt;. Chcących poznać pozostałe przykłady polecam &lt;span style="font-style:italic;"&gt;wikipedia&lt;/span&gt; oraz &lt;span style="font-style:italic;"&gt;google&lt;/span&gt; :)&lt;br /&gt;&lt;br /&gt; Dla chcących wtajemniczyć się w dość ciekawy temat łączenia technologii polecam materiały dodatkowe, w których znajdują się opisy oraz objaśnienia jak takiego powiązania dokonać. &lt;br /&gt;&lt;br /&gt;Zapraszam serdecznie chcących podyskutować o wydajności i szczegółach technicznych. Czy używacie w soich projektach takiego rozwiązania ? Czy wiecie może jakie są postępy &lt;span style="font-style:italic;"&gt;nasza-klasa.pl&lt;/span&gt; we wbudowaniu &lt;span style="font-style:italic;"&gt;ejabberd&lt;/span&gt; w ich portal ?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://andy.wordpress.com/2009/02/06/persistent-php-processes-in-erlang-otp/"&gt;Persistent PHP processes in Erlang/OTP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.math-hat.com/~zukerman/projects/php-erlang/"&gt;PHP/Erlang aims to be a PHP extension with a simple set of functions for turning a PHP thread into an Erlang C-node&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://github.com/skeltoac/php_app/tree/master"&gt;A PHP eval server for Erlang/OTP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/mypeb/"&gt;peb (Php-Erlang Bridge) is an open-source php extension to run php as an Erlang cnode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.metabrew.com/article/reading-serialized-php-objects-from-erlang/"&gt;Reading Serialized PHP Objects from Erlang&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-5048149216639670915?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/5048149216639670915/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=5048149216639670915' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5048149216639670915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5048149216639670915'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/05/erlang-php-nastaa-era-miksowanych.html' title='Erlang + PHP - nastała era miksowanych rozwiązań'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/Sk3ehqIW8YI/AAAAAAAADgM/qgdwP2COLzQ/s72-c/PHP_Erlang__elephpant.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-9074100768808545683</id><published>2009-05-07T21:32:00.001+02:00</published><updated>2009-06-18T20:32:09.729+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statystyka'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='wizualizacja'/><title type='text'>R - język statystyczny do wizualizacji danych eksperymentalnych</title><content type='html'>Pomimo brzmiącego wzniośle tytułu i wielkiej litery &lt;span style="font-weight:bold;"&gt;R&lt;/span&gt; na czątku artykuł nadal dotyczy on dziedziny programowania. Tym razem &lt;span style="font-style:italic;"&gt;dotykam&lt;/span&gt; nieco odmiennego aspektu - narzędzia do statystycznej analizy danych &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.r-project.org/"&gt;R&lt;/a&gt;&lt;/span&gt;, które cieszy się dość sporą popularnością w kręgach naukowych, gdyż cytując wikipedię: &lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;a href="http://pl.wikipedia.org/wiki/R_(j%C4%99zyk_programowania)"&gt;GNU R to język programowania i środowisko do obliczeń statystycznych i wizualizacji wyników.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt; Każdy czytelnik w tym miejscu może zadawać sobie zasadnicze pytanie: &lt;br /&gt;&lt;span style="font-style:italic;"&gt;co można w tym zrobić i dlaczego lepej niżeli w moim języku programowania ?&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/ZwYQPtU2Pa0&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/ZwYQPtU2Pa0&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;  Oto kilka cech, które pozostawiają w tyle moje ulubiony języki programowania i skłaniają mnie do użycia języka &lt;span style="font-weight:bold;"&gt;R&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;dostarcza szeroką gamę technik statystycznych (liniowe i nieliniowe modelowanie, klasyczne testy statystyczne, analiza szeregów czasowych, klasyfikacja, grupowanie, etc)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;łatwość z jaką można tworzyć dobrze zaprojektowane wykresy z jakością nadającą się do publikacji. Dotyczy to także symboli i formuł matematycznych&lt;/li&gt;&lt;br /&gt; &lt;li&gt;repozytorium pakietów &lt;a href="http://www.cran.r-project.org/"&gt;CRAN&lt;/a&gt;, które zawiera ponad 1500 gotowych bibliotek do użytku w naszych statystykach - zaimplementowana jest spora liczba metod oraz przekształceń statystycznych&lt;/li&gt;&lt;br /&gt; &lt;li&gt;tekstowa i graficzna konsola obsługi, jak również możliwość uruchamiania przygotowanych skryptów&lt;/li&gt;&lt;br /&gt; &lt;li&gt;stworzenie wykresu często polega na wczytaniu w jednej linii danych ze źródła siecowego, plikowego, w tym popularne formaty CSV oraz Excel !  przypisaniu do zmiennej oraz w kolejnej linii wywołana funkcji &lt;span style="font-style:italic;"&gt;plot()&lt;/span&gt; ze zminną(zmiennymi) przechowującą(przechowującymi) dane w argumencie. Efekt jest widoczny natychmiast w specjalnym oknie graficzym wykresów&lt;/li&gt;&lt;br /&gt; &lt;li&gt;powalająca na kolana &lt;a href="http://addictedtor.free.fr/graphiques"&gt;baza rodzajów wykresów&lt;/a&gt; w postaci galerii z przykładami kodu w języku &lt;span style="font-weight:bold;"&gt;R&lt;/span&gt;&lt;br /&gt; &lt;li&gt;polecenia języka są intuicyjne i uproszczone do niezbędnego minimum:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;span style="font-style:italic;"&gt;package.install("nazwaPakietu", depedencies=TRUE)&lt;/span&gt; - dodawania pakietu, w efekcie czego pakiet jest pobierany z wskazanego repozytorum CRAN oraz kompilowany wraz z dokumentacją i przykładami użycia&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;span style="font-style:italic;"&gt;library("NazwaBiblioteki")&lt;/span&gt; - użycie zainstalowanej biblioteki&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;span style="font-style:italic;"&gt;nazwaBibliotek.funcka(argumenty)&lt;/span&gt; - użycie funckcji z biblioteki&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;tworzenie interaktywnych wykresów oraz możliwość używania akceleratorów grafiki 3D w wykresach&lt;/li&gt;&lt;br /&gt;&lt;li&gt;wbudowane przestrzenie nazw, profiler, debuger, garbage collector :-), których niekiedy może pozazdrościć język &lt;span style="font-weight:bold;"&gt;PHP&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;programowanie objaśniającego (pakiet Sweave)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;funkcje statystyczne do przeprowadzania analizy regresji i analizy wariancji&lt;/li&gt;&lt;br /&gt;&lt;li&gt;funkcje do przeprowadzania klasyfikacji oraz analizy klastrowania&lt;/li&gt;&lt;br /&gt;&lt;li&gt;generatory liczb losowych oraz generatory liczb losowych z określonych rodzin rozkładów prawdopodobieństwa&lt;/li&gt;&lt;br /&gt;&lt;li&gt;funkcje do radzenia sobie z brakującymi obserwacjami oraz wstępną analizą danych&lt;/li&gt;&lt;br /&gt;&lt;li&gt;funkcje do korzystania z metody bootstrap i analizy przeżycia&lt;/li&gt;&lt;br /&gt;&lt;li&gt;prognozowanie na podstawie posiadanych danych !&lt;/li&gt;&lt;br /&gt;&lt;li&gt;możliwa edukacja w zakresie testów statystycznych dotyczących testowania hipotez o równości parametrów położenia, o równości parametrów skali, dotyczących prawdopodobieństwa sukcesu, procedury testowania istotności dla wybranych współczynników zależności pomiędzy dwoma zmiennymi oraz testy zgodności&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oginet.pl/~rasp/r/"&gt;Przegląd możliwości systemu R&lt;/a&gt; w wygodny sposób zarysowuje możliwości tego specyficznego języka programowania. Liczne prezentacje oraz artykuły umacnają mnie w przekonaniu, że warto wykreślać w tym języku wykresy z danych pomiarowych, szczególnie jeśli zależy mi na dokładności oraz pewności, że dany wykres reprezentuje wskazaną porcję danych. &lt;br /&gt;&lt;br /&gt;&lt;embed src="http://v.wordpress.com/Qy0dg2qC" type="application/x-shockwave-flash" width="400" height="224" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Niesamowite jest to, że w języku R możemy osadzać np: język Python i odrotnie w &lt;a href="http://www2.warwick.ac.uk/fac/sci/moac/currentstudents/peter_cock/python/heatmap/"&gt;języku Python możemy osadzać język R&lt;/a&gt;, co widać na poniższych stronach:&lt;br /&gt;&lt;br /&gt;http://rpy.sourceforge.net/rpy_demo.html&lt;br /&gt;&lt;br /&gt;http://rpy.sourceforge.net/&lt;br /&gt;&lt;br /&gt;Oczywiście to kolejny plus na korzyść Pythona :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały wideo do nauki języka R:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Familiar_wmv_final.wmv"&gt;Get Familiar with R&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Vid_1_1_Download_R.wmv"&gt;Download &amp;amp; Install R&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Vid_1_2_Start_in.wmv"&gt;Configure Working Directory – Set Start-in Folder&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Vid_1_3_R_Session.wmv"&gt;Example R Session&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Vid_1_4_R_help.wmv"&gt;Getting R Help&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Vid_1_5_R_Packages.wmv"&gt;R Packages&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Vid_2_1_Excel_R_worlds.wmv"&gt;Compare R and Excel Worlds&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://processtrends.com/R_Videos/Vid_2_2_Missing_data_excel_r.wmv"&gt;Missing Data – R and Excel&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oto linki pomocnicze:&lt;br /&gt;&lt;br /&gt;http://processtrends.com/Learn_R_Toolkit.htm&lt;br /&gt;&lt;br /&gt;http://processtrends.com/&lt;br /&gt;&lt;br /&gt;http://www.r-ekonomia.pl/?ksiazki,11&lt;br /&gt;&lt;br /&gt;http://www.personality-project.org/r/r.plottingdates.html&lt;br /&gt;&lt;br /&gt;http://orgmode.org/worg/org-tutorials/org-R/org-R.php&lt;br /&gt;&lt;br /&gt;http://www.nceas.ucsb.edu/scicomp/Dloads/RCourse/RShortCourseMeetThreeNotes.pdf&lt;br /&gt;&lt;br /&gt;http://www.nytimes.com/imagepages/2007/01/22/science/20070123_SCI_ILLO.html&lt;br /&gt;&lt;br /&gt;http://learnr.wordpress.com/2009/05/10/import-a-text-file-with-repeating-titles/&lt;br /&gt;&lt;br /&gt;http://learnr.wordpress.com/2009/05/05/ggplot2-two-time-series-with-different-dates/&lt;br /&gt;&lt;br /&gt;http://chartsgraphs.wordpress.com/&lt;br /&gt;&lt;br /&gt;http://www.scribd.com/doc/2171544/R-Programming&lt;br /&gt;&lt;br /&gt;http://www.scribd.com/doc/288555/dataR&lt;br /&gt;&lt;br /&gt;http://www.scribd.com/doc/6187359/R-Matrix-Tutor&lt;br /&gt;&lt;br /&gt;http://www.math.ncu.edu.tw/~chenwc/R_note/index.php?item=plot&lt;br /&gt;&lt;br /&gt;http://commons.wikimedia.org/wiki/File:R-US_state_areas-1D_log.svg&lt;br /&gt;&lt;br /&gt;http://commons.wikimedia.org/wiki/File:R_sin(theta)_Surface_Plot.png&lt;br /&gt;&lt;br /&gt;http://commons.wikimedia.org/wiki/File:R-horsekick_totals-quantileplot%2Bquartiles.svg&lt;br /&gt;&lt;br /&gt;http://www.r-project.org/other-docs.html&lt;br /&gt;&lt;br /&gt;http://processtrends.com/toc_trend_analysis_with_Excel.htm&lt;br /&gt;&lt;br /&gt;http://skiadas.dcostanet.net/uploads/RandSweaveInTextMate.mov&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alternatywa dla wykresów - wykresy kołowe:&lt;br /&gt;&lt;br /&gt;http://mkweb.bcgsc.ca/circos/tableviewer/&lt;br /&gt;&lt;br /&gt;http://mkweb.bcgsc.ca/talks/circos/&lt;br /&gt;&lt;br /&gt;http://mkweb.bcgsc.ca/circos/?gallery&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-9074100768808545683?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/9074100768808545683/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=9074100768808545683' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/9074100768808545683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/9074100768808545683'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/05/r-jezyk-statystyczny-do-wizualizacji.html' title='R - język statystyczny do wizualizacji danych eksperymentalnych'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-4229855398001214778</id><published>2009-05-07T19:04:00.006+02:00</published><updated>2009-07-02T20:42:11.954+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='robotyka'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>RepRap - samoreplikujący się robot Open Hardware + Open Source</title><content type='html'>W jednym z klasycznych dzieł fantastyki i dodatkowo "fantastycznym", którego nazwa wymknęła mi się z pamięci jest wątek o tym, jak roboty budują roboty. Do tego stopnia potrafią się replikować, że tworzą całe stada różnych wielkości oraz rodzajów robotów. Ludzie na stacji kosmicznej znikają, bo roboty potrzebują "podzespołów" t.j. ludzkie oczy ... i wszystko byłoby fikcją, gdyby nie fakt, że jest sobie XXI wiek i możemy śmiało powiedzieć, że jest to początek historii, która może zakończyć się niebawem mało "fantastycznie". &lt;br /&gt;&lt;br /&gt; Przedstawiam dziś bardzo kreatywny projekt. &lt;span style="font-weight:bold;"&gt;Robot, który w kilkudziesięciu procentach potrafi się zreplikować&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/Skz7IEl2qyI/AAAAAAAADf4/dQZul-gimrg/s1600-h/3661622753_8d93f19a34_b.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/Skz7IEl2qyI/AAAAAAAADf4/dQZul-gimrg/s320/3661622753_8d93f19a34_b.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5353930173126716194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Jest to projekt &lt;span style="font-style:italic;"&gt;Open Source&lt;/span&gt; i &lt;span style="font-style:italic;"&gt;Open Hardware&lt;/span&gt;. Znajdziecie pod nazwą &lt;span style="font-weight:bold;"&gt;RepRap&lt;/span&gt;. Jest on jednym z zastosowań dla opisywanego na łamach wielu blogów modułu &lt;span style="font-weight:bold;"&gt;Arduino&lt;/span&gt; i w pełni wykorzystuje go jako swój bazowy podzespół. &lt;br /&gt;&lt;br /&gt; Robota tego nazwać można też &lt;span style="font-weight:bold;"&gt;drukarką 3D&lt;/span&gt;, gdyż jego rola polega na tym, że potrafi drukować z dość dużą precyzją z topionego plastyku dowolne wymyślne trójwymiarowe twory. Otwiera nam wyobrażnię, bo jak dotąd żyliśmy wyłącznie w świecie kolorowych reklam i druków oraz form seryjnie produkowanych w fabrykach. Prototypowanie odbywało się na urządzeniach frezujących/skrawających CNC. Od teraz prototyp możesz zrobić sam w domu i to przy użyciu ogólnie dosŧępnego sprzętu t.j. PC + Linux + kilka silników krokowych + nieco łączników metalowych + oczywiście odpowiedni software :-)&lt;br /&gt;&lt;br /&gt; Wracając pamięcią do zagadnienia z tematu tzn. &lt;span style="font-style:italic;"&gt;reprodukcji&lt;/span&gt; chciałbym zauważyć, że o ile istnieją standardy do różnych zastosowań, w weilu dziedzinach, wiele norm opisuje techniczne aspekty konstrukcji, o tyle niekt jeszcze nie stworzył standardu do robotów a o samoreplikujących się robotach już nie wspomnę. Polecam ważny dla robotyki artykuł &lt;a href="http://www.computerworld.pl/artykuly/druk/58896/Robot.wciaz.bez.standardu.html"&gt;Robot wciaz bez standardu&lt;/a&gt; i zachęcam do dyskusji na ten zapomniany temat. Kręgi akademickie możliwe, że zarzucą mi, iż &lt;span style="font-style:italic;"&gt;mało w życiu robotów widziałem&lt;/span&gt; ... cóż, widziałem ich nie wiele, ale wiele nieudanych prób napisania standardu do takich maszyn jak roboty widziałem dość wiele. Każda kończyła się prywatyzacją standardu i okrzykiwaniem, żę to jest właśnie ten. Chyba potrzeba silnej firmy - może Google - która narzuci przemyślany standard - może z KML - do definiowania robota oraz jego możliwości i zadań. Może powstanie jakiś nowy &lt;span style="font-style:italic;"&gt;superobiektowy&lt;/span&gt; język opisu i programowania robotów z interfejsami do sztucznej inteligencji. Do tego rozproszone agenty, które podpisany jako pluginy naszego robota, które potrafią współdzielić w sieci neuronowej doświadczenie i mamy roboty samoreplikujące się, które będą w stanie upiec nam np: ciastko, że &lt;span style="font-style:italic;"&gt;aż palce lizać&lt;/span&gt;, hahhaaa :-)&lt;br /&gt; &lt;br /&gt; Oto robot samoreplikujący się w akcji:&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="400" height="320"&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=5202148&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=5202148&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="320"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/5202148"&gt;RepRap&lt;/a&gt; from &lt;a href="http://vimeo.com/user403878"&gt;Adrian Bowyer&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Oto co robot taki lubi jeść najbardziej:&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/Skz9L0gpnYI/AAAAAAAADgA/TE6yCuGk2v4/s1600-h/3456100303_7ca1bd3102_b.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/Skz9L0gpnYI/AAAAAAAADgA/TE6yCuGk2v4/s320/3456100303_7ca1bd3102_b.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5353932436552654210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Na dość radosny koniec przedstawam robota, którego zrobił RepRap, aby &lt;span style="font-style:italic;"&gt;pingwiny miały się czym bawić&lt;/span&gt; :-)&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GUuVUEFfbEg&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/GUuVUEFfbEg&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;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;http://www.flickr.com/photos/batistleman/&lt;br /&gt;&lt;br /&gt;http://www.flickr.com/photos/batistleman/sets/72157612625523823/&lt;br /&gt;&lt;br /&gt;http://www.flickr.com/photos/batistleman/sets/72157616965045763/&lt;br /&gt;&lt;br /&gt;http://www.flickr.com/photos/batistleman/sets/72157617452928999/&lt;br /&gt;&lt;br /&gt;http://www.coded.be/en/reprap&lt;br /&gt;&lt;br /&gt;http://www.thingiverse.com/thing:688&lt;br /&gt;&lt;br /&gt;http://itp.nyu.edu/physcomp/Tutorials/ArduinoBreadboard&lt;br /&gt;&lt;br /&gt;http://objects.reprap.org/mediawiki/images/9/90/Laser-reprap.jpg&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Software Open Source do RepRap:&lt;br /&gt;&lt;br /&gt;http://sourceforge.net/project/showfiles.php?group_id=159590&lt;br /&gt;&lt;br /&gt;http://reprap.org/bin/view/Main/Generation2Electronics#Arduino_Arduino_Clones_and_Sangu&lt;br /&gt;&lt;br /&gt;http://sanguino.cc/&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/sanguino/downloads/list&lt;br /&gt;&lt;br /&gt;Hardware do RepRap:&lt;br /&gt;&lt;br /&gt;http://www.atmel.com/dyn/Products/Product_card.asp?part_id=3896&lt;br /&gt;&lt;br /&gt;http://www.iearobotics.com/personal/juan/doctorado/Modulos-Y1/modulos-y1.html&lt;br /&gt;&lt;br /&gt;http://fotos.iearobotics.com/index.php?album=modulos-repy-1&lt;br /&gt;&lt;br /&gt;http://www.youtube.com/watch?v=x7OYkaXNGrY&lt;br /&gt;&lt;br /&gt;http://www.youtube.com/watch?v=QmFV8lIZhB8&lt;br /&gt;&lt;br /&gt;http://www2.parc.com/spl/projects/modrobots/chain/polybot/index.html&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-4229855398001214778?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/4229855398001214778/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=4229855398001214778' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/4229855398001214778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/4229855398001214778'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/05/reprap-samoreplikujacy-sie-robot-open.html' title='RepRap - samoreplikujący się robot Open Hardware + Open Source'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/Skz7IEl2qyI/AAAAAAAADf4/dQZul-gimrg/s72-c/3661622753_8d93f19a34_b.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-6576787211279745282</id><published>2009-04-23T21:18:00.007+02:00</published><updated>2009-07-03T11:49:37.892+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang, OTP, współbieżność, funkcyjność i rozproszenie aplikacji</title><content type='html'>O języku &lt;a href="http://pl.wikipedia.org/wiki/Erlang_(j%C4%99zyk_programowania)"&gt;Erlang&lt;/a&gt; słyszymy przeróżne &lt;a href="http://www.youtube.com/watch?v=lrp57IAlh84&amp;feature=related"&gt;żarty&lt;/a&gt;, czytamy posty i co ciekawe znajdujemy nawet nieliczne w kraju &lt;a href="http://nasza-klasa.pl/career#34"&gt;oferty pracy&lt;/a&gt;. A tak na prawdę to słowa &lt;span style="font-weight:bold;"&gt;&lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt;&lt;/span&gt; się boimy :-) Bo byćmoże posiada germańską naleciałość fonetyczną. Całkiem możliwe, że zapis kodu jest magiczny i przyzwyczajeni jesteśmy od &lt;span style="font-style:italic;"&gt;szkoły średniej&lt;/span&gt; do zapisów typu:&lt;br /&gt;&lt;blockquote&gt;"function ...()  ... if {...} elseif {...} else {...}  ... return ..."&lt;/blockquote&gt;&lt;br /&gt;Dodatkowo jeśli coś jest skomplikowane na pierwszy rzut oka i &lt;a href="http://www.google.pl/search?hl=pl&amp;site=&amp;q=Erlang&amp;btnG=Szukaj&amp;lr="&gt;wyszukiwarka&lt;/a&gt; nie pisze słodkich ciekawostek o tym, że warto też to czasami zlewamy. Cóż, wiem to po sobie i znajomych, którzy brną coraz dalej w różne takie powszechne (czytaj komercyjne) trendy. Pochwalam zarazem wszystkich wytrwałych łowców historycznych i zagadkowych języków programowania tudzież udziwnionych rozwiązań t.j. LISP, Prolog oraz &lt;span style="font-style:italic;"&gt;święty&lt;/span&gt; Erlang :-)&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OpYPKBQhSZ4&amp;hl=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/OpYPKBQhSZ4&amp;hl=pl&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt; Na dzień dzisiejszy wydajność aplikacji (wykluczając rozwiązania google, ibm, oracle, amazon, częściowo facebook i pewnie kilka innych posiadających chmury obliczeniowe + gridy) jest uzyskiwana dzięki &lt;a href="http://pl.wikipedia.org/wiki/Serwer_WWW"&gt;serwerom www&lt;/a&gt;, które dzięki interpretowaniu skryptów w profilowanych wątkach &lt;a href="http://pl.wikipedia.org/wiki/FastCGI"&gt;Fastcgi&lt;/a&gt; generują kod XML, HTML lub inny strumień informacji przy pomocy &lt;a href="http://en.wikipedia.org/wiki/Pipeline_(Unix)"&gt;pipeline&lt;/a&gt; (lecz nie tylko) do przeglądarki klienta. Dość powszechny, uniwersalny i wydajny sposób, który posiada bardzo namacalne granice skalowalności. &lt;br /&gt; Oczywiście ilość dostępnych  maszyn (coraz częściej wirtualnych) oraz procesorów w tym wszelkich pamięci RAM zawsze będzie znacząca. Dodatkowo serwery cachujące typu &lt;span style="font-weight:bold;"&gt;memcache&lt;/span&gt;, moduły typu &lt;span style="font-weight:bold;"&gt;apc&lt;/span&gt;, etc zawsze się przydają. No tak baza danych master i slavy, których synchronizacji lub jeszcze lepiej replikacji pilnować, bo najlepsze jajca będą, jak kopie rekordów będą miały inne identyfikatory lub jak nagle slavy się oburzą i całe obciążenie spadnie na mastera. Może się też okazać, że lubimy NFS, sieciowe systemy plików lub nietypowe systemy plików w naszej aplikacji, które obciążają nasz serwerek i load w granicach 66.6 nas nieco dziwi. Praca administratora przy skalowaniu, profilowaniu też jest kosztowna i należy ją wrzucić do całkowitego rachunku ... to takie typowe założenia. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A co będzie jeśli to wszystko olejemy i użyjemy języka Erlang ?!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Wiadomo musimy nabyć odpowiednią wprawę, zrezygnować z typowych rozwiązań, nauczyć się kilku poleceń &lt;a href="http://www.erlang.pl/doku.php?id=shell"&gt;Eshell&lt;/a&gt; i &lt;span style="font-style:italic;"&gt;posiadać marzenia :-) bo tylko One nas uratują, hahahahaaaa&lt;/span&gt; :-)&lt;br /&gt; Weźmy pod uwagę, że w Erlangu każdy funkcjonalny kawałek kodu działa jako specjalny atomowy proces Erlanga, do tego dodam, że takich procesów można stworzyć nawet na bardzo słabym procesorze setki tysięcy. Ponadto dodam, że każdy proces z każdym może wymieniać komunikaty, co daje rozproszone podejmowanie decyzji i prawdziwie wielowątkową obsługę zdarzeń. Nie skłamię, jeśli napiszę, że język został ochrzczony w zastosowaniach dość wymagających i krytycznych czasowo tzn. w telekomunikacji. Służy(ł) do obsługi central oraz przełączników telekomunikacyjnych, gdzie raz uruchomiona aplikacja nie była wyłączana przez wiele lat i procesy w niej działające stale wykonywały swoje zadania. Mało tego, to może napiszę coś zabawniejszego, bo języku Erlang nie przejmujesz się błędami. Nie jest to bynajmniej parodia znanych nam powszechnie języków programowania, lecz ucieczka w stronę pisania bardzo wymagających aplikacji. Zarówno skupienie się na tym co się dzieje w procesach aplikacji, jak i odciążenie programisty stałym poprawianiem &lt;span style="font-style:italic;"&gt;błędów swoich i cuchych&lt;/span&gt;. Jasne, że nie da się tego uniknąć, ale co powiecie na to, że jeśli kawałek kodu pada z powodu błędu to w tym czasie powołuje do życia instancje (swój klon), który zajmuje się dalej zadaniem. Dopieprzyć warto czymś, o czym wiele rozwiązań może tylko pomarzyć, czyli podmiana kodu w locie :-) Oczywiście administratorzy nie odniosą kolejnej klęski podczas klastrowania aplikacji, bo procesy Erlanga widzą się na maszynch, które posiadają połączenie sieciowe (rozpoznają się po nazwach). Dodajemy kolejny serwer uruchamiamy środowisko Erlanga i aplikacje, które widzą działające procesy na pozostałych połączonych maszynach.&lt;br /&gt;&lt;br /&gt; Dodam, że firma Ericsson stosuje rozwiązania bazujące na tym języku od ponad 20-tu lat. Firma  Google natomiast oparła swój meta komunikator GoogleTalk w oparciu o &lt;a href="http://pl.wikipedia.org/wiki/Ejabberd"&gt;ejabberd&lt;/a&gt;, &lt;a href="http://www.jabber.org/"&gt;jabber&lt;/a&gt; (&lt;a href="http://pl.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol"&gt;XMPP&lt;/a&gt;)serwer oraz klient do budowy dowolnych komunikatorów internetowych napisany i działający całkowicie w Erlangu.  Tyle tytułem wstępu, resztę pozostawiam sprawnym obserwatorom i odkrywcom, którzy zechcą przejrzeć &lt;a href="http://www.slideshare.net/search/slideshow?q=+erlang&amp;submit=post&amp;searchfrom=header&amp;x=0&amp;y=0"&gt;kilka prezentacji na temat języka Erlang&lt;/a&gt; i wyciągnąć pożyteczne wnioski.&lt;br /&gt;&lt;br /&gt; By nie nawijać tylko o teorii pewnego dnia usiadłem sobie do kilku przykładów i zechciałem się nimi z Wami podzielić. Oto one:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pl.wikipedia.org/wiki/J%C4%99zyk_funkcyjny"&gt;Język funkcyjny&lt;/a&gt; - podejście jak &lt;span style="font-style:italic;"&gt;coś&lt;/span&gt; rozwiązać, a nie jak to &lt;span style="font-style:italic;"&gt;coś&lt;/span&gt; ma działać (podobnie d &lt;a href="http://wazniak.mimuw.edu.pl/index.php?title=Programowanie_funkcyjne"&gt;Ocalm&lt;/a&gt;, &lt;a href="http://pl.wikipedia.org/wiki/Haskell"&gt;Haskell&lt;/a&gt;, &lt;a href="http://pl.wikipedia.org/wiki/Lisp"&gt;Lisp&lt;/a&gt;, &lt;a href="http://pl.wikipedia.org/wiki/Scheme"&gt;Scheme&lt;/a&gt;, &lt;a href="http://pl.wikipedia.org/wiki/Clojure"&gt;Clojure&lt;/a&gt; )&lt;/li&gt;&lt;br /&gt;http://pl.wikipedia.org/wiki/Erlang_(j%C4%99zyk_programowania)&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.erlang.pl/doku.php?id=otp"&gt;OTP&lt;/a&gt; (Open Telecom Platform) - szereg gotowych do użycia komponentów tworzących środowisko Erlang&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Przykład aplikacji &lt;span style="font-weight:bold;"&gt;&lt;a href="http://beebole.com/en/blog/erlang/tutorial-web-application-erlang/"&gt;SticyNotes&lt;/a&gt;&lt;/span&gt; internetowej napisanej przy użyciu języka Erlang oraz działającej w oparciu o &lt;a href="http://beebole.com/en/blog/erlang/erlang-tutorials-web-applications/"&gt;serwer www napisany także w języku Erlang&lt;/a&gt;, wszystko oparte o bazę danych też napisaną w języku Erlang o nazwie &lt;a href="http://en.wikipedia.org/wiki/Mnesia"&gt;Mnesia&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://aws.amazon.com/simpledb/"&gt;Amazon SimpleDb&lt;/a&gt; - przykład powalający na kolana, czyli chmura bazodanowo-obliczeniowa ze stajni firmy &lt;a href="http://amazon.com"&gt;Amazon&lt;/a&gt;, z ktore to korzystaja takie firmy jak Alexa.com. Na wikipedii czytamy &lt;a href="http://en.wikipedia.org/wiki/SimpleDB"&gt;Amazon SimpleDB is a distributed database written in Erlang[1] by Amazon.com&lt;/a&gt;. Dostęp do bazy SimpleDb jest możliwy dzięki webserwisom udostępnianym w ramach Amazon S3.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Wings_3D"&gt;Wings 3D&lt;/a&gt; - modeler do krewoania wirtualnej rzeczywistości oraz do renderowania graficznych krajobrazów oraz scen - taki Erlangowy blender :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pl.wikipedia.org/wiki/YAWS_(program)"&gt;YAWS&lt;/a&gt; - serwer www napisany w Erlangu i w niektórych zastosowaniach przerażający wydajnością&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Tsung"&gt;Tsung&lt;/a&gt; - narzędzie do rozproszonego testowania wydajności aplikacji oraz &lt;a href="http://web-dev.pl/tsung-przyklad-rozproszonego-testowania-serwera-nginx"&gt;serwerów&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/CouchDB"&gt;CouchDB&lt;/a&gt; - dedykowany system przechowywania danych z opcją &lt;a href="http://en.wikipedia.org/wiki/MapReduce"&gt;MapReduce&lt;/a&gt; o ogromnych &lt;a href="http://www.databasecolumn.com/2008/01/mapreduce-a-major-step-back.html"&gt;możliwościach&lt;/a&gt; skalowalności i pracy w architektórach multi-core (posiada sterowniki do wielu popularnych języków programowania t.j. Python, Java, PHP, etc...)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://nitrogen-erlang.tumblr.com/ "&gt;Nitrogen&lt;/a&gt; - framework do budowania aplikacji oraz stron intra/internetowych&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/mochiweb/"&gt;Mochiweb&lt;/a&gt; - lekki serwer www napisany w Erlangu &lt;a href="http://www.bestechvideos.com/2008/08/04/erlang-by-example-episode-6-adding-rest-support-with-mochiweb"&gt;Erlang in Practice Episode 6: Adding REST Support with MochiWeb&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Dodatkowe linki:&lt;br /&gt;&lt;a href="smp.if.uj.edu.pl/~baryluk/erl/referat_erl.pdf"&gt;Referat - Erlang&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://eriz.pcinside.pl/weblog/jabber-we-wlasnej-domenie-uruchamiamy-serwer-133.html"&gt;Jabber we własnej domenie - uruchamiamy serwer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://eriz.pcinside.pl/weblog/ejabberd-we-freebsd-157.html"&gt;ejabberd we FreeBSD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://user.it.uu.se/~kostis/Papers/erlang03.pdf"&gt;All you wanted to know about the Erlang HiPE compile (but might have been afraid to ask)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shootout.alioth.debian.org/debian/erlang.php"&gt;Porównanie Erlang HiPE do Java 6 server&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bestechvideos.com/2008/07/08/erlang-by-example-episode-1-sending-and-receiving-chat-messages"&gt;Erlang in Practice Episode 1: Sending and Receiving Chat Messages&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bestechvideos.com/2008/07/08/erlang-by-example-episode-3-distributing-clients-in-a-multi-node-environment"&gt;Erlang in Practice Episode 3: Distributing Clients In A Multi-node Environment&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bestechvideos.com/2008/07/17/erlang-by-example-episode-5-unit-testing-with-eunit"&gt;Erlang in Practice Episode 5: Unit Testing with EUnit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.planeterlang.org/"&gt;Erlang community site Planet Erlang&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.erlang.pl/doku.php?id=eclipse"&gt;Wtyczka do Eclipse dla programistów Erlanga&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spawnlink.com/articles/introduction-to-the-open-telecom-platform/"&gt;Introduction to the Open Telecom Platform&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fadylog.blogspot.com/search/label/Open%20Telecom%20Platform"&gt;Erlang: Open Telecom Platform (Parts)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="www.mrtc.mdh.se/SoftRT/pres/Erlang-Open-Telecom-Platform.ppt"&gt;Erlang-Open-Telecom-Platform.ppt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://www.slideshare.net/dennisbyrne/the-erlang-programming-language-presentation&lt;br /&gt;&lt;br /&gt;http://www.slideshare.net/btedev/erlang-concurrency-presentation&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Prezentacja oraz projekt łamania haseł na podstawie MD5 wykonany w Erlangu&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://www.slideshare.net/btedev/erlang-concurrency-presentation&lt;br /&gt;&lt;br /&gt;http://github.com/btedev/erlang_md5crack/tree/master&lt;br /&gt;&lt;br /&gt;http://github.com/btedev&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-6576787211279745282?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/6576787211279745282/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=6576787211279745282' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6576787211279745282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6576787211279745282'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/04/erlang-otp-wspobieznosc-funkcyjnosc-i.html' title='Erlang, OTP, współbieżność, funkcyjność i rozproszenie aplikacji'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3398930594813153063</id><published>2009-04-19T20:58:00.003+02:00</published><updated>2009-06-05T21:49:15.620+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><title type='text'>Newsqueak - programuj z przyjemnością swoje kanały danych działające w procesach</title><content type='html'>Dziś obejrzałem kolejny odcinek cotygodniowego zawodowego serialu na video.google.pl z serii &lt;span style="font-style:italic;"&gt;Advanced Topics in Programming Languages&lt;/span&gt; p.t.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak&lt;/span&gt;. Dotyczył on języka &lt;span style="font-weight:bold;"&gt;Newsqueak&lt;/span&gt;, który podobnie jak &lt;a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)"&gt;Haskell&lt;/a&gt; oraz &lt;a href="http://en.wikipedia.org/wiki/Erlang_(programming_language)"&gt;Erlang&lt;/a&gt; stanowią dla mnie wielką zagadkę poznawczą :) &lt;br /&gt;&lt;br /&gt; Oto omawiany filmik, gdyby ktoś się skusił:&lt;br /&gt;&lt;br /&gt;&lt;embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=810232012617965344&amp;hl=pl&amp;fs=true" style="width:400px;height:326px" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;br /&gt;&lt;br /&gt; Ogólnie wiadomo, że założenia konstrukcyjne mogą szokować. Tak też jest w przypadku języka &lt;span style="font-weight:bold;"&gt;Newsqueak&lt;/span&gt;, który dość jasno określa zasady:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;odrzuć koncepcje programowania wielowątkowego bazującej na &lt;a href="http://gatekeeper.research.compaq.com/pub/DEC/SRC/research-reports/SRC-035.pdf"&gt;Andrew Birrell's ''An Introduction to Programming with Threads.''&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;odrzuć typowe podejście w programowaniu z maszyną stanów&lt;/li&gt;&lt;br /&gt;&lt;li&gt;zastanów się nad swoimi interfejsami i potraktuj je jako struktura danych zawierająca kanały komunikacyjne&lt;/li&gt;&lt;br /&gt;&lt;li&gt;pozwól swoim interfejsom działać jako procesy&lt;/li&gt;&lt;br /&gt;&lt;li&gt;spróbuj utworzyć kanały komunikacyjne (bazując na interfejsach), które w dedykowanych (odrębnych) procesach enkapsulują kanały informacyjne (transmisje Twoich danych) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;stwórz oprogramowanie bez myślenia, że popełniasz błędy - nie tracąc czasu na debugowanie&lt;/li&gt;&lt;br /&gt;&lt;li&gt;nie zamartwiaj się zbytnio obciążeniem stworzonego systemu - to kwestia balancingu działających procesów&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Materiały dodatkowe:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://192.220.96.201/montage/montage-usenix-s90.html"&gt;Montage: Breaking Windows into Small Pieces&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://plan9.bell-labs.com/who/rsc/thread/index.html"&gt;Video example&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Rob_Pike"&gt;Rob Pike wikipedia page&lt;/a&gt; &lt;a href="http://herpolhode.com/rob/"&gt;Rob Pike&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a href="http://plan9.bell-labs.com/who/rsc/thread/cws.pdf"&gt;A Concurrent Window System&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://herpolhode.com/rob/ugly.pdf"&gt;The Good, the Bad, and the Ugly: The Unix Legacy - Slides of his presentation at the commemoration of 1000000000 seconds of the Unix clock.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://swtch.com/~rsc/thread/newsqueak.pdf"&gt;Newsqueak: A Language for Communicating with Mice&lt;/a&gt; &lt;a href="http://tdanecker.blogspot.com/2008/01/newsqueak-language-for-communicating.html"&gt;article 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://swtch.com/~rsc/thread/"&gt;Resources about threaded programming in the Bell Labs CSP style&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Wikipedia:WikiProject_Plan_9"&gt;WikiProject Plan 9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://haskell.cs.yale.edu/yale/papers/haskellworkshop01/genuinely-functional-guis.pdf"&gt;Genuinely Functional User Interfaces - Theories of Programming Languages, Cambridge University&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.lycos.com/info/limbo-language--limbo-programming-language.html"&gt;Limbo programming language&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.princeton.edu/courses/archive/fall05/cos318/precepts/mcilroy89squinting.pdf"&gt;Squinting at Power Series&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Acme_(Plan_9)"&gt;Acme is a text editor and graphical shell from the Plan 9 from Bell Labs operating system, designed and implemented by Rob Pike.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_Plan_9_applications"&gt;List of Plan 9 applications&lt;/a&gt; &lt;a href="http://plan9.bell-labs.com/wiki/plan9/papers/"&gt;plan9 papers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://brainwagon.org/2007/09/11/rob-pike-on-newsqueak/"&gt;Rob Pike on newsqueak&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://portal.acm.org/citation.cfm?id=351268.351276"&gt;Declarative event-oriented programming&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://herpolhode.com/rob/lec5.pdf"&gt;The lecture notes about the Plan 9 window system&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="View Inferno Programming With Limbo on Scribd" href="http://www.scribd.com/doc/4482982/Inferno-Programming-With-Limbo" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Inferno Programming With Limbo&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_846892754986481" name="doc_846892754986481" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%" rel="media:document" resource="http://d.scribd.com/ScribdViewer.swf?document_id=4482982&amp;access_key=key-1an9p1m0r1wnpjaytwkp&amp;page=1&amp;version=1&amp;viewMode=" xmlns:media="http://search.yahoo.com/searchmonkey/media/" xmlns:dc="http://purl.org/dc/terms/" &gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=4482982&amp;access_key=key-1an9p1m0r1wnpjaytwkp&amp;page=1&amp;version=1&amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=4482982&amp;access_key=key-1an9p1m0r1wnpjaytwkp&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_846892754986481_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"&gt;&lt;/embed&gt;             &lt;span rel="media:thumbnail" href="http://i.scribd.com/profiles/images/ncs6dwqsazbw-thumb.jpg"&gt;       &lt;span property="media:title"&gt;Inferno Programming With Limbo&lt;/span&gt;   &lt;span property="dc:creator"&gt;rapidfx&lt;/span&gt;       &lt;span property="dc:type" content="Text"&gt;    &lt;/object&gt; &lt;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/explore/Creative-Writing/Other" style="text-decoration: underline;"&gt;Other&lt;/a&gt;                  &lt;a href="http://www.scribd.com/tag/InfernoOS" style="text-decoration: underline;"&gt;InfernoOS&lt;/a&gt;       &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3398930594813153063?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3398930594813153063/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3398930594813153063' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3398930594813153063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3398930594813153063'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/04/newsqueak-programuj-z-przyjemnoscia.html' title='Newsqueak - programuj z przyjemnością swoje kanały danych działające w procesach'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-8967657236936752442</id><published>2009-04-08T18:39:00.002+02:00</published><updated>2009-04-28T19:03:07.661+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='grafika'/><category scheme='http://www.blogger.com/atom/ns#' term='X windows'/><title type='text'>Jak wektorki to tylko z Inkscape !</title><content type='html'>Od kilku lat używam do wszelakich grafik, rysunków, szkiców, schematów poglądowych oraz różnych ulotek, reklam i publikacji (w tym również www) aplikacji niezastąpionej o nazwie &lt;span style="font-weight:bold;"&gt;&lt;a href="http://inkscape.org/"&gt;Inkscape&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/Sfc2AmU0g-I/AAAAAAAACuA/t0FFlg5NJC0/s1600-h/about_Inkscape.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 314px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/Sfc2AmU0g-I/AAAAAAAACuA/t0FFlg5NJC0/s320/about_Inkscape.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5329788067932046306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;  Dziś odkryłem, że istnieje podręcznik do jakże praktycznego dzieła OpenSource. Praktycznego, to mało powiedziane. Powstają w nim na prawdę zalewające użytkowników Corela pomysły. Poniższy link dedykuję tym, którzy lubią w ojczystym języku posiadać książkę tego do ulubionego programu graficznego:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.scribd.com/doc/12307421/Inkscape-Pl"&gt;Instrukcja w języku polskim do programu do edycji grafiki wektorowej Inkscape&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oto znane linki do przykładowych prac wykonanych przy pomocy tej aplikacji oraz tutoriali:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://inkscapetutorials.wordpress.com/"&gt;The Inkscape tutorials weblog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.inkscape.org/wiki/index.php/Galleries"&gt;Inkscape galleries&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://inkscape.org/showcase/"&gt;Inkscape showcase&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openclipart.org/"&gt;Open Clipart Library&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-8967657236936752442?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/8967657236936752442/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=8967657236936752442' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/8967657236936752442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/8967657236936752442'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/04/jak-wektorki-to-tylko-z-inkscape.html' title='Jak wektorki to tylko z Inkscape !'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/Sfc2AmU0g-I/AAAAAAAACuA/t0FFlg5NJC0/s72-c/about_Inkscape.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-2536831987287085456</id><published>2009-04-01T05:39:00.001+02:00</published><updated>2009-04-01T12:36:08.249+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='podstawy'/><title type='text'>Zbuduj robota na Prima Aprilis - konstrukcje papierowe kształcą</title><content type='html'>W dniu tak specyficznym postanowiłem dodać wzmiankę dla tych konstruktorów, dla których edukacja poprzez zabawę nie zna granic ;) Konstruowanie nie zawsze wiąże się z użyciem młotka, desek, silników, mikroprocesorów. Często do tego celu wystarczy najpowszechniejszy współczesny materiał jakim jest &lt;span style="font-style:italic;"&gt;papier&lt;/span&gt;. Papierowe modele co prawda mogą być delikatne, ale zależnie od formy, grubości papieru i rodzaju zastosowanego kleju nie musi to stanowić reguły. I w tym cała magia ... kilka dostępnych w każdym kiosku na rogu potrzebnych rzeczy oraz jak zwykle niezastąpione źródło wiedzy &lt;span style="font-style:italic;"&gt;internet&lt;/span&gt; i możemy budować roboty.  Ojciec z synem znajdą na pewno wiele atrakcyjnych wynalazków, które posiadają rekonstrukcję modelarską z papieru. A w dobie zalewających &lt;span style="font-style:italic;"&gt;iPodów&lt;/span&gt; powrót do korzeni - jakim jest zabawa w konstruowanie z papieru - czasami jest jedynym ratunkiem przed slęczeniem dziecka przed monitorem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SdNDdSIvnaI/AAAAAAAACtA/tnY8pyHQntM/s1600-h/retro_robot_papercraft.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 222px; height: 320px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SdNDdSIvnaI/AAAAAAAACtA/tnY8pyHQntM/s320/retro_robot_papercraft.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5319669755218468258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;W ramach komentarzy podzielcie się proszę swoimi konstrukcjami. Powodzenia i miłej zabawy.&lt;br /&gt;&lt;br /&gt;  Jako dodatek zamieszczam stosik linków oraz kilka tutoriali dot. użycia &lt;span style="font-weight:bold;"&gt;&lt;a href="http://sketchup.google.com/"&gt;Google SketchUp&lt;/a&gt;&lt;/span&gt; (okazuje się, że jest to alternatywa dla &lt;a href="http://blender.org"&gt;Blendera&lt;/a&gt;, aczkowiek Blendera również polecam).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Budowa modelu robota w programie Google SketchUp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Mu1gFv6Bp38&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/Mu1gFv6Bp38&amp;hl=pl&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SketchUp-Making a quick model&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/bwj8Bd4GPYc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bwj8Bd4GPYc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sketchup - Modeling a tractor&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/P0Daz4N-WLA&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/P0Daz4N-WLA&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How To Use Google SketchUp -- Modeling (Part 1)&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/x5SCi2azycA&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/x5SCi2azycA&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How To Use Google SketchUp -- Modeling (Part 2)&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/F4kLe4POvaI&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/F4kLe4POvaI&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sketchup-Model a Lantern&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/6S2CRbIjqlM&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6S2CRbIjqlM&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://go-2-school.com/media"&gt;Wirtualna szkoła z filmami do nauki programu Google SketchUp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Podstawy konstruowania modeli z papieru&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/22zrSOI3WIw&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/22zrSOI3WIw&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;&lt;br /&gt;Linki do stron z gotowymi do pobrania modelami robotów z papieru:&lt;br /&gt;&lt;br /&gt;http://gundamandrobotanime.blogspot.com/search/label/papercraft?updated-max=2007-07-24T13%3A23%3A00-07%3A00&amp;max-results=20&lt;br /&gt;&lt;br /&gt;http://www.ss42.com/pt-scifiction.html&lt;br /&gt;&lt;br /&gt;http://www.blogcatalog.com/topic/robot+paper+model/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/gallery_models_scifi.html&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/gallery_models_real.html&lt;br /&gt;&lt;br /&gt;http://www.marscenter.it/veicol.asp?pa=605&lt;br /&gt;&lt;br /&gt;http://win1999.web.fc2.com/Oshiire/EXTRA/025/25.htm&lt;br /&gt;&lt;br /&gt;http://www7a.biglobe.ne.jp/~sf-papercraft/Original/LensHeadB_tuned/LensHeadB_tuned.html&lt;br /&gt;&lt;br /&gt;http://www.marshallalexander.net/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Temat pokrewny - modele papierowe rakiet i pojazdów kosmicznych:&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/ariane5ton/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/deltavheavy/divh.html&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/cevton02/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/tonmercury/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/stbb/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/lunarsurveyor/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/energialeo/cs.html&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/leo0612/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/leo_vulcan/&lt;br /&gt;&lt;br /&gt;http://jleslie48.com/ton_acts0811/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-2536831987287085456?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/2536831987287085456/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=2536831987287085456' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2536831987287085456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2536831987287085456'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/04/zbuduj-robota-na-prima-aprilis.html' title='Zbuduj robota na Prima Aprilis - konstrukcje papierowe kształcą'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FKArYkQGfrY/SdNDdSIvnaI/AAAAAAAACtA/tnY8pyHQntM/s72-c/retro_robot_papercraft.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-1486653927083788666</id><published>2009-03-31T07:03:00.003+02:00</published><updated>2009-03-31T14:04:57.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pomiary'/><category scheme='http://www.blogger.com/atom/ns#' term='targi'/><category scheme='http://www.blogger.com/atom/ns#' term='automatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='robotyka'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Targi Automaticon® 2009 - warto tam zawitać ...</title><content type='html'>Oficjalnie dzisiaj nastąpiło otwarcie targów automatyki przemysłowej i pomiarów &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.automaticon.pl/"&gt;Automaticon® 2009&lt;/a&gt;&lt;/span&gt;. Od ponad kilkunastu lat przez pryzmat asortymentu oraz licznych technologii prezentowanych na targach możemy obserwować &lt;span style="font-style:italic;"&gt;rozwój automatyzacji w polskim przemyśle&lt;/span&gt;. Z jednej strony producenci i ich przedstawiciele z drugiej strony konstruktorzy i ich dzieła. Jest to dość poważne zestawienie w branży &lt;a href="http://automatyka.pl"&gt;automatyki&lt;/a&gt;, gdyż konkurencja, która czycha wszędzie może stanąc &lt;span style="font-style:italic;"&gt;twarz w twarz&lt;/span&gt; ze swoimi autentycznymi rywalami i używając sztuczek marketingowych oraz swojej marki wypromować indywidualny bądź też powielony pomysł na biznes. &lt;br /&gt;&lt;br /&gt;  A w automatyce dzieje się wiele na codzień, jak łatwo się domyślić podobnie jak w elektronice - wszak &lt;span style="font-weight:bold;"&gt;automatyka&lt;/span&gt; jest w trwałym związku z elektroniką :) Automatyzacja procesów przemysłowych, ich monitoring, badania nad wytwarzaniem dóbr w sposób wydajniejszy jest to dość prężnie rozwijająca się dziedzina. Sam fakt obecności rokrocznie kilkuset wystawców na targach AUTOMATICON tego dowodzi, jak również zainteresowanie ze strony osób bezpośrednio związanych oraz z dziedzin postronnych (robotyki, informatyki, ekektroniki, miernictwa, etc...). &lt;br /&gt;&lt;br /&gt;  Niniejszym artykułem chciałbym zachęcić wszystkich zaintereowanych do dyskusji n.t. automatyki oraz nowych technologii, protokołów komunikacyjnych oraz wszelkich wynalazków, które zainspirowały ich podczas tegorocznych targów. Jednocześnie pozwolę sobie zamieścić fragmenty relacji z targów &lt;a href="http://www.youtube.com/results?gl=PL&amp;hl=pl&amp;search_query=automaticon"&gt;AUTOMATICON® 2008&lt;/a&gt; oraz do &lt;a href="http://www.automaticon.pl/galeria_2008.php"&gt;galerii tagrów&lt;/a&gt;. Więcej znajdziecie w artykule &lt;a href="http://www.automatykab2b.pl/component/option,com_content/Itemid,55/id,2366/task,view/"&gt;Automaticon 2009&lt;/a&gt;. &lt;a href="http://www.automaticon.pl/zakres_tematyczny.php"&gt;Zakres tematyczny&lt;/a&gt; oraz &lt;a href="http://www.automaticon.pl/sarea/web/frontend.php/firmy/list/litera/A/jezyk/pl"&gt;katalog wystawców&lt;/a&gt; znacząco ułatwią zapoznanie się z ofertą targową.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yXzs3rEhLzw&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yXzs3rEhLzw&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/f7VXWY_0orE&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/f7VXWY_0orE&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;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-y8CV1dh3GI&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/-y8CV1dh3GI&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-1486653927083788666?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/1486653927083788666/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=1486653927083788666' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1486653927083788666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1486653927083788666'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/03/targi-automaticon-2009-warto-tam.html' title='Targi Automaticon® 2009 - warto tam zawitać ...'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-7776759090691162953</id><published>2009-03-20T22:42:00.001+01:00</published><updated>2009-03-29T23:17:49.693+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Arduino dodaje współczesnym wynalazcom skrzydeł</title><content type='html'>Podczas przeglądania materiałów n.t. &lt;span style="font-weight:bold;"&gt;Arduino&lt;/span&gt; natknąłem się na kilka dokumentów z linkami do stron autorów. Zamieszaczam je poniżej i życzę przyjemnej lektury. NIektóre &lt;span style="font-weight:bold;"&gt;wynalzki&lt;/span&gt; wykorzystujące współczene możliwości &lt;span style="font-weight:bold;"&gt;mikrokontrolerów&lt;/span&gt; są na prawdę niebanalne. Dla przykładu taka oto latająca platforma - kto by uwierzył, że kilka deseczek, dwa serwa, jakiś tani mikrokontroler zasilanie i &lt;span style="font-style:italic;"&gt;możemy latać&lt;/span&gt; :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/Sc-xgN574_I/AAAAAAAACsY/kQ7eRquM1OY/s1600-h/zero_g_eye_flying_multistation_mod_medium.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 239px; height: 320px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/Sc-xgN574_I/AAAAAAAACsY/kQ7eRquM1OY/s320/zero_g_eye_flying_multistation_mod_medium.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5318664851994436594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kolejny przykładowy wynalazek, który może Was zainteresować dotyczy nietypowego lustra - złożonego ze sporej ilości silników i oczywiście kamery, która przetwarza obraz i steruje tym widowiskowym falującym lustrem:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/Sc_IlKMuWmI/AAAAAAAACsg/28QpsWGypoQ/s1600-h/wave_mirror.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 225px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/Sc_IlKMuWmI/AAAAAAAACsg/28QpsWGypoQ/s320/wave_mirror.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318690225666284130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Szczytem chyba jest &lt;span style="font-weight:bold;"&gt;BIOTICALS&lt;/span&gt;. Projekt, w którym roślina w doniczce podlega stałemu monitoringowi warunków i mikrokontroler, który ją monitoruje wysyła na telefon komórkowy oraz dedykowanego &lt;span style="font-style:italic;"&gt;microbloga tej roślinki&lt;/span&gt; - nie żartuję sobie, hahaha - widomości w stylu &lt;span style="font-style:italic;"&gt;Podlej mnie wreszcie&lt;/span&gt; :) W tym przykładzie do mikroblogowania wykorzystany jest &lt;span style="font-weight:bold;"&gt;twitter API &lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/Sc_h5R3uI6I/AAAAAAAACso/p_0YrcnTOtg/s1600-h/Boticalls_1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 225px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/Sc_h5R3uI6I/AAAAAAAACso/p_0YrcnTOtg/s320/Boticalls_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318718059113751458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/Sc_jgF7CZ5I/AAAAAAAACsw/pN5L9YI0oKw/s1600-h/botanicalls_and_arduino.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 222px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/Sc_jgF7CZ5I/AAAAAAAACsw/pN5L9YI0oKw/s320/botanicalls_and_arduino.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318719825432962962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/Sc_k9AR6WFI/AAAAAAAACs4/HHdnNnhC3K4/s1600-h/botanicalls_flow_and_micro_blog.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 232px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/Sc_k9AR6WFI/AAAAAAAACs4/HHdnNnhC3K4/s320/botanicalls_flow_and_micro_blog.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318721421646125138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Poniższe wartościowe materiały, które zawierają całą masę szalonych pomysłów:&lt;br /&gt;&lt;br /&gt;&lt;a title="View Life Hacks Winner Arduino Security on Scribd" href="http://www.scribd.com/doc/13070370/Life-Hacks-Winner-Arduino-Security" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Life Hacks Winner Arduino Security&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_155576498861752" name="doc_155576498861752" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%" rel="media:document" resource="http://d.scribd.com/ScribdViewer.swf?document_id=13070370&amp;access_key=key-2hgks2kzokn9ilqvaql0&amp;page=1&amp;version=1&amp;viewMode=" xmlns:media="http://search.yahoo.com/searchmonkey/media/" xmlns:dc="http://purl.org/dc/terms/" &gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=13070370&amp;access_key=key-2hgks2kzokn9ilqvaql0&amp;page=1&amp;version=1&amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=13070370&amp;access_key=key-2hgks2kzokn9ilqvaql0&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_155576498861752_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"&gt;&lt;/embed&gt;             &lt;span rel="media:thumbnail" href="http://i.scribd.com/public/images/uploaded/9865104/wq52RlcX3CwhPu_thumbnail.jpeg"&gt;       &lt;span property="media:title"&gt;Life Hacks Winner Arduino Security&lt;/span&gt;   &lt;span property="dc:creator"&gt;Mc. Rene Solis&lt;/span&gt;        &lt;span property="dc:description"&gt;arduino security keypad/sound&lt;/span&gt;       &lt;span property="dc:type" content="Text"&gt;    &lt;/object&gt; &lt;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/browse/HowTo-Guides-DIY/Science-Engineering" style="text-decoration: underline;"&gt;Science &amp; Engineerin&lt;/a&gt;              &lt;a href="http://www.scribd.com/browse/HowTo-Guides-DIY/" style="text-decoration: underline;"&gt;How-To Guides &amp; DIY&lt;/a&gt;                  &lt;a href="http://www.scribd.com/tag/arduino%20security%20keypad%2Fsound" style="text-decoration: underline;"&gt;arduino security key&lt;/a&gt;       &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="View IOTC08 The Arduino Platform on Scribd" href="http://www.scribd.com/doc/3480632/IOTC08-The-Arduino-Platform" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;IOTC08 The Arduino Platform&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_565425968562610" name="doc_565425968562610" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%" rel="media:document" resource="http://d.scribd.com/ScribdViewer.swf?document_id=3480632&amp;access_key=key-1uhaevgfn6w5d1e8dz48&amp;page=1&amp;version=1&amp;viewMode=" xmlns:media="http://search.yahoo.com/searchmonkey/media/" xmlns:dc="http://purl.org/dc/terms/" &gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=3480632&amp;access_key=key-1uhaevgfn6w5d1e8dz48&amp;page=1&amp;version=1&amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=3480632&amp;access_key=key-1uhaevgfn6w5d1e8dz48&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_565425968562610_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"&gt;&lt;/embed&gt;             &lt;span rel="media:thumbnail" href="http://i.scribd.com/profiles/images/8ctdlasco2bx9-thumb.jpg"&gt;       &lt;span property="media:title"&gt;IOTC08 The Arduino Platform&lt;/span&gt;   &lt;span property="dc:creator"&gt;eoinbrazil&lt;/span&gt;        &lt;span property="dc:description"&gt;Introduction to the Arduino Platform talk given at the Irish Open Technology Conference, Friday June 20th, 2008, Dublin, Ireland&lt;/span&gt;       &lt;span property="dc:type" content="Text"&gt;    &lt;/object&gt; &lt;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/browse/Presentations-Slideshows/Internet-Technology" style="text-decoration: underline;"&gt;Internet &amp; Technolog&lt;/a&gt;              &lt;a href="http://www.scribd.com/browse/Presentations-Slideshows/" style="text-decoration: underline;"&gt;Presentations &amp; Slid&lt;/a&gt;                  &lt;a href="http://www.scribd.com/tag/source" style="text-decoration: underline;"&gt;source&lt;/a&gt;              &lt;a href="http://www.scribd.com/tag/introduction" style="text-decoration: underline;"&gt;introduction&lt;/a&gt;       &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="View Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009 on Scribd" href="http://www.scribd.com/doc/13051644/Arduino-Lecture-2-Interactive-Media-CS4062-Semester-2-2009" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_22978901822858" name="doc_22978901822858" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%" rel="media:document" resource="http://d.scribd.com/ScribdViewer.swf?document_id=13051644&amp;access_key=key-1nhgqfmz0ma3ylk2rala&amp;page=1&amp;version=1&amp;viewMode=" xmlns:media="http://search.yahoo.com/searchmonkey/media/" xmlns:dc="http://purl.org/dc/terms/" &gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=13051644&amp;access_key=key-1nhgqfmz0ma3ylk2rala&amp;page=1&amp;version=1&amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=13051644&amp;access_key=key-1nhgqfmz0ma3ylk2rala&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_22978901822858_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"&gt;&lt;/embed&gt;             &lt;span rel="media:thumbnail" href="http://i.scribd.com/public/images/uploaded/9680550/Y99ef5W5EIcODXUHhU_thumbnail.jpeg"&gt;       &lt;span property="media:title"&gt;Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009&lt;/span&gt;   &lt;span property="dc:creator"&gt;eoinbrazil&lt;/span&gt;        &lt;span property="dc:description"&gt;CS4062 Masters in Interactive Media - Second Arduino Lecture - March 6th 2009 - University of Limerick. This lecture presents an introduction to communications and the Arduino with examples. This was aimed at a digital media / music technology masters student audience.&lt;/span&gt;       &lt;span property="dc:type" content="Text"&gt;    &lt;/object&gt; &lt;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/browse/Academic-Work/Presentations" style="text-decoration: underline;"&gt;Presentations&lt;/a&gt;              &lt;a href="http://www.scribd.com/browse/Academic-Work/" style="text-decoration: underline;"&gt;Academic Work&lt;/a&gt;                  &lt;a href="http://www.scribd.com/tag/interactive%20media" style="text-decoration: underline;"&gt;interactive media&lt;/a&gt;              &lt;a href="http://www.scribd.com/tag/digital%20media" style="text-decoration: underline;"&gt;digital media&lt;/a&gt;       &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="View Tutorial Arduino 01 - presentaci%f3n on Scribd" href="http://www.scribd.com/doc/13069905/Tutorial-Arduino-01-presentacif3n" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Tutorial Arduino 01 - presentaci%f3n&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_332963703552222" name="doc_332963703552222" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%" rel="media:document" resource="http://d.scribd.com/ScribdViewer.swf?document_id=13069905&amp;access_key=key-2f9ndn4kyz02t32bfk1l&amp;page=1&amp;version=1&amp;viewMode=" xmlns:media="http://search.yahoo.com/searchmonkey/media/" xmlns:dc="http://purl.org/dc/terms/" &gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=13069905&amp;access_key=key-2f9ndn4kyz02t32bfk1l&amp;page=1&amp;version=1&amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=13069905&amp;access_key=key-2f9ndn4kyz02t32bfk1l&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_332963703552222_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"&gt;&lt;/embed&gt;             &lt;span rel="media:thumbnail" href="http://i.scribd.com/public/images/uploaded/9861074/NfI7RoM5Frg2thDu9Dcq_thumbnail.jpeg"&gt;       &lt;span property="media:title"&gt;Tutorial Arduino 01 - presentaci%f3n&lt;/span&gt;   &lt;span property="dc:creator"&gt;Mc. Rene Solis&lt;/span&gt;        &lt;span property="dc:description"&gt;Ejercicios de Arduino en español&lt;/span&gt;       &lt;span property="dc:type" content="Text"&gt;    &lt;/object&gt; &lt;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/browse/Academic-Work/" style="text-decoration: underline;"&gt;Academic Work&lt;/a&gt;                  &lt;a href="http://www.scribd.com/tag/arduino%20espa%C3%B1ol" style="text-decoration: underline;"&gt;arduino español&lt;/a&gt;       &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  Godne przytoczenia są również projekty człowieka o nazwisku &lt;a htrf="http://web.media.mit.edu/~stefanm/research.html#AII"&gt;Stefan Marti&lt;/a&gt; z MIT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-7776759090691162953?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/7776759090691162953/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=7776759090691162953' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7776759090691162953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7776759090691162953'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/03/arduino-dodaje-wspoczesnym-wynalazcom.html' title='Arduino dodaje współczesnym wynalazcom skrzydeł'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/Sc-xgN574_I/AAAAAAAACsY/kQ7eRquM1OY/s72-c/zero_g_eye_flying_multistation_mod_medium.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-4558311295717525262</id><published>2009-03-03T19:15:00.010+01:00</published><updated>2009-03-17T19:22:42.340+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Robocode, Colobot - zbuduj robota bez włączania lutrownicy</title><content type='html'>Jak każde hobby, majsterkowanie, wynajdywanie rozwiązań na spędzenie wolnego czasu także konstruowanie robotów ma również swoje fundamenty. Od czegoś rozpoczyna się przygoda z robotami ;-) i jeżeli już się rozpocznie to zapewne &lt;span style="font-style:italic;"&gt;otrze się&lt;/span&gt; o konieczność zaprogramowania toru, zachowania bądź też reakcji robota. Takie oczywiste dla tych, którzy stworzyli swojego pierwszego robota i nieoczywiste dla totalnych nowicjuszy założenie otwiera dzisiejszą wypowiedź o robieniu robotów &lt;span style="font-style:italic;"&gt;bez lutowania kabelków&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;  Rozszerzając myśl warto rozważyć, czy zabawę w konstruowanie, tworzene robotów rozpoczniemy od mechaniki, elektroniki, czy informatyki. Dla entuzjastów ostatniej dziedziny chciałbym polecić takie alternatywy:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://testwiki.roborumble.org/w/index.php?title=Robocode/My_First_Robot"&gt;zaprogramuj swojego robota&lt;/a&gt; zgodnie z &lt;a href="http://robocode.sourceforge.net/docs/robocode/"&gt;Robocode API&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pl.wikipedia.org/wiki/Colobot"&gt;Colobot&lt;/a&gt; - &lt;a href="http://www.ceebot.com"&gt;zagraj swoim robotem&lt;/a&gt; w języku &lt;a href="http://pl.wikipedia.org/wiki/C-BOT"&gt;C-BOT&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt; Jeśli &lt;span style="font-weight:bold;"&gt;przygoda z robotami&lt;/span&gt; rozpoczyna się na całego to zachęcam do zapoznania się z wymienionym oprogramowaniem, bo jego przystępność zwróciła moją uwagę, jak również przyciągająca możliwość nauki przez edukację z licznymi przykładami działania robotów. Ponadto oczywistości typu google i youtube ... zawsze niezawodni ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Robocode&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/ZcMLRwu0i-k&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&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/ZcMLRwu0i-k&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" 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;&lt;span style="font-weight:bold;"&gt;Colobot&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/RlyKxjKXQcY&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&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/RlyKxjKXQcY&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" 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;  Może jakieś ciekawe algorytmy udało się Wam już zaprogramować w Waszych robocikach, czy zechcecie się podzielić wiedzą, doświadczeniem, opiniami ? &lt;br /&gt;  Zachęcam do dyskusji na temat informatycznej &lt;span style="font-style:italic;"&gt;jasnej i ciemnej strony&lt;/span&gt; programowania robotów.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-4558311295717525262?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/4558311295717525262/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=4558311295717525262' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/4558311295717525262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/4558311295717525262'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/03/robocode-colobot-zrob-robota-bez.html' title='Robocode, Colobot - zbuduj robota bez włączania lutrownicy'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-6875070421057132355</id><published>2009-02-27T23:28:00.001+01:00</published><updated>2009-03-17T19:01:16.034+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optymalizacja'/><category scheme='http://www.blogger.com/atom/ns#' term='kreowanie'/><title type='text'>Zarządzanie czasem to niewątpliwie klucz do sukcesu</title><content type='html'>Podzielę się z Wami dość powszechnym materiałem na temat praktycznego zarządzania swoimi zasobami :-) Co tu dużo opowiadać, zapraszam do oglądania ... dla niektórych wnioski są dość oczywiste a dla innych tak trudne do adaptacji w życiu ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;David Allen: Getting Things Done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Qo7vUdKTlhk&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&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/Qo7vUdKTlhk&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Jeśli ktoś z Was wprowadził chociaż jedną zasadę z obejrzanego materiału w swoje życie to jest to wielki krok do zmian ... a jak wiadomo &lt;span style="font-style:italic;"&gt;warto zmieniać zawsze na lepsze&lt;/span&gt; ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-6875070421057132355?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/6875070421057132355/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=6875070421057132355' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6875070421057132355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6875070421057132355'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/02/zarzadzanie-czasem-to-niewatpliwie.html' title='Zarządzanie czasem to niewątpliwie klucz do sukcesu'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-2991718466081721741</id><published>2009-02-21T23:55:00.001+01:00</published><updated>2009-03-16T22:16:48.188+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='automatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Nie każdy może być elektronikiem/automatykiem, ale każdy może być wynalazcą</title><content type='html'>W ramach czytanki jaką były wypowiedzi ludzi na wykop.pl na temat &lt;a href="http://www.wykop.pl/link/133230/arduino-kazdy-moze-zostac-elektronikiem-robotykiem"&gt;Arduino - każdy może zostać elektronikiem/robotykiem!&lt;/a&gt; zrodziła mi się myśl zupełnie odmienna i przeciwstawna do tak zabarwionego pozytywnie nagłówkowego frazesu.&lt;br /&gt; Najbardziej rozbawła mnie nieświadomość wrzucającego, cytuję &lt;span style="font-style:italic;"&gt;"Cała europa i stany szaleją na jej punkcie, a w naszym rodzimym internecie cisza. Patrzcie jakie to proste!"&lt;/span&gt;. Tak, &lt;span style="font-style:italic;"&gt;czas na prostotę nastał już wiele lat temu&lt;/span&gt;, gdy pojawiły się pierwsze mikrokontrolery jednoukładowe :-). Cóż, w mniemanu wielu handlarzy arduino z polskich aukcji internetowych - wnioskując po cenie - niesamowicie skomplikowanym sprzętem jest ten &lt;span style="font-weight:bold;"&gt;Open Hardware Arduino&lt;/span&gt;!&lt;br /&gt; Najpewnej cena ta może wynikać z założonego tytułu tego posta oraz ze świeżego tematu w naszym kraju. W sumie pisałem już w listopadzie na łamach tego bloga o &lt;a href="http://marcinbielak.blogspot.com/2008/11/arduino-freeduino-pyduino-szybki-start.html"&gt;Arduino i Freeduino&lt;/a&gt; oraz o &lt;a href="http://marcinbielak.blogspot.com/2008/11/open-hardware-nie-kupuj-szajsu-skoro.html"&gt;Open Hardware&lt;/a&gt; tzn. kilka miesięcy temu, lecz obserwuję zarazem, jak działają mechanizmy rynkowe  chciałbym się z Wami tym podzielić.&lt;br /&gt;&lt;br /&gt; Na początek dobrze to mieć jako gotowiec na lokalnych aukcjach, nasi znajomi blogerzy powinni coś już w tym czasie zacząć pisać (ponad migającą diodę), na aukcjach musi pojawić się naturalnie konkurencja, powstają pierwsze kopie oraz interpretacje pomysłów już zrealizowanych poza granicami kraju, kilku poważniejszych projektantów systemów mikroprocesorowych uśmiechnie się i pokaże, że takie moduły otaczają nas od zawsze, ktoś pokaże i opowie w ojczystym języku na youtube, że zrobienie wielu gadżetów się upraszcza do minimum lutowana i wymaga wyłącznie weny przegrzebywana forumów w poszukiwanu nowych interfejsów, mój robiony na kolanie ;) moduł arduino powinen się nieco zakurzyć na biurku od braku nowego pomysłu na robota lub inną nie&lt;span style="font-style:italic;"&gt;banalną&lt;/span&gt; zabawkę, ktoś zakupi lutownicę i zacznie powielać tanie moduły do arduino, bo niestać nas na LegoMndstorms ... &lt;br /&gt;&lt;br /&gt; ... i tak oto powolnie Panowie rozkręca się świat &lt;span style="font-weight:bold;"&gt;Open Hardware&lt;/span&gt; i &lt;span style="font-weight:bold;"&gt;Open Source&lt;/span&gt;. Uważam, że właśnie taka czeka nas przyszłość :-) bez wielokrotnego powielania zbędnie traconego czasu na uzyskane większej modularności w sferze konstrukci elektronicznych. To na czym nasi starsi koledzy i ojcowie budowali tzw. mikroprocesorówkę automatyki przemysłowej nie staje coraz bardziej zagrożone, przez to, że ludzie w wolnym czasie zaczną &lt;span style="font-style:italic;"&gt;lutować jakiś open hardware&lt;/span&gt;. To właśnie jest podwalina do wielkich wynalazków w tej dziedzinie i otwartych rozwiązań elektroniczno-programistycznych. Czeka nas współdzielenie się kodem dla naszych modułów, aby były sprawniejsze, użyteczniejsze, wydajniejsze, niezawodne ...&lt;br /&gt; Zaznaczę tylko, że w tej sytuacji elektronikiem lub automatykiem nie każdy może siebie ot tak nazywać, o ile nie widnieje w tej nazwie przydomek &lt;span style="font-style:italic;"&gt;wynalazca amator&lt;/span&gt;. Jednakże każdego dnia, kiedy jakiś amator wynalazca publikuje kolejne rozwiązanie uwieńczone tygodniami &lt;span style="font-style:italic;"&gt;prób i błędów&lt;/span&gt; mam cichą nadzieję, że niebawem wielkie korporacje zauważą, że tak na prawdę sprzedają zwyczajny szajs :-) Wznoszę węc  &lt;span style="font-style:italic;"&gt;wiwat&lt;/span&gt; dla epoki urządzeń wbudowanych - oby każdy potencjalny majsterkowicz mógł bawić się do woli!&lt;br /&gt;&lt;br /&gt;Polecam również poniższe lektury zaczerpnięte z dyskusji zrodzonej na wykopie:&lt;br /&gt;http://www.arduino.cc/playground/Projects/ArduinoUsers&lt;br /&gt;http://www.phidgets.com/&lt;br /&gt;http://www.roborealm.com/&lt;br /&gt;http://hardware.processing.org/&lt;br /&gt;http://processing.org/&lt;br /&gt;https://www.silabs.com/products/mcu/Pages/ToolStick.aspx&lt;br /&gt;http://www.sunspotworld.com/&lt;br /&gt;http://pl.wikipedia.org/wiki/Colobot&lt;br /&gt;http://www.colobot.yoyo.pl/&lt;br /&gt;http://www.srodki-dydaktyczne.men.gov.pl/www/main-5.php?distributor=201&amp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Firma SUN zaprojektowałą i sprzedaje "alternatywny" do Arduino moduł, lecz o innej skali zastosowań, oto przykład filmu z realizacją ramienia robota ze sterowaniem rękawiczką zakładaną na dłoń operatora :-)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9P6Jn0iuYA0&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/9P6Jn0iuYA0&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;... przytoczę także porównanie, bo SunSpot steruje też rakietą !&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cOPwMq89MNY&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&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/cOPwMq89MNY&amp;hl=pl&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-2991718466081721741?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/2991718466081721741/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=2991718466081721741' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2991718466081721741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2991718466081721741'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/02/nie-kazdy-moze-byc-elektronikiemautomat.html' title='Nie każdy może być elektronikiem/automatykiem, ale każdy może być wynalazcą'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-5290577646231791526</id><published>2009-02-16T21:15:00.003+01:00</published><updated>2009-02-16T21:15:00.884+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='informatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Microkontrolery AVR i Arduino - prostota i fenomen otwartego sprzętu</title><content type='html'>Nagła potrzeba poznania kilku prezentacji spowodowała wystąpienie owego artykułu w szeregi moich dodatkowych zajęć i odświeżenie tematyki mikrokontrolerów jednoukładowych AVR. Ostatnio moim celem jest zbudowanie sobie własnego modułu &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt; i przetestowanie go we współpracy z Linuxem. Cel szczytny, czasu mało, do tego w kraju nabyć gotowca lub chociaż PCB nie da się :) więc lutownica + laminat + wytrawianie obwodów drukowanych moim przyjacielem ... po walkach postaram się zaprezentować coś w rodzaju wrażeń z budowy mojego Arduino na początek z mikrokontrolerem AVR ATmega8 + port szeregowy (ot takie wspomnienie - wiem, że USB jest dziś standardem). Argumentem jest najpewniej chęć używania rozwiązań OpenHardware i OpenSource ze wsparciem społeczności ludzi zainteresowanych rozwojem w kierunku tworzenia robotów i innych coraz popularniejszych tworów współczesności. Jednym słowem mam dość tworzenia od zera API do kolejnego systemu uP, testowanie, kodowanie swojego systemu osadzonego, obsługi IO, etc ... koniec z odkrywaniem już odkrytego ;-)&lt;br /&gt;&lt;br /&gt;  Aha, może nie każdy sobie zdaje sprawę, ale w takim telefonie komórkowym temat systemów wbudowanych oraz mikrokontrolerów przewija się w każdym calu. Android, Symbian i wiele innych systemów osadzonych to przykłady pokrewnych tematów. Same hasła powinny wyjaśnić rangę budowy jakże prostego i taniego systemu dydaktycznego, od którego te szczytne hasła wyrosły. Niebawem zaprezentuję efekry prac, tymczasem zmykam do lutowania :-)&lt;br /&gt;&lt;br /&gt; Oto prezentacje, które warto zobaczyć:&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_309975"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/tristanr/introduction-to-programming-avr-microcontrollers?type=powerpoint" title="Introduction to programming AVR microcontrollers"&gt;Introduction to programming AVR microcontrollers&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=introduction-to-programming-avr-microcontrollers-1205746301767000-2&amp;stripped_title=introduction-to-programming-avr-microcontrollers" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=introduction-to-programming-avr-microcontrollers-1205746301767000-2&amp;stripped_title=introduction-to-programming-avr-microcontrollers" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/tristanr"&gt;tristanr&lt;/a&gt;. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/physicalcomputing"&gt;physicalcomputing&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/evilmadscientist"&gt;evilmadscientist&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_681825"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/Annie05/avr-microcontrollers-presentation?type=powerpoint" title="Avr Microcontrollers"&gt;Avr Microcontrollers&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=avr-microcontrollers-1224673099514407-8&amp;stripped_title=avr-microcontrollers-presentation" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=avr-microcontrollers-1224673099514407-8&amp;stripped_title=avr-microcontrollers-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/Annie05"&gt;Nirmala Last&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_324223"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/eoinbrazil/imediaarduino08?type=powerpoint" title="Arduino Lecture 1 - Introducing the Arduino"&gt;Arduino Lecture 1 - Introducing the Arduino&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=imediaarduino08-1206641278880936-5&amp;stripped_title=imediaarduino08" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=imediaarduino08-1206641278880936-5&amp;stripped_title=imediaarduino08" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/eoinbrazil"&gt;eoinbrazil&lt;/a&gt;. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/arduino"&gt;arduino&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/interactive-media"&gt;interactive media&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_324230"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/eoinbrazil/arduino-lecture-2-electronic-leds-communications-and-datasheets?type=powerpoint" title="Arduino Lecture 2 - Electronic, LEDs, Communications and Datasheets"&gt;Arduino Lecture 2 - Electronic, LEDs, Communications and Datasheets&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=arduino-lecture-2-electronic-leds-communications-and-datasheets-1206641537960167-4&amp;stripped_title=arduino-lecture-2-electronic-leds-communications-and-datasheets" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=arduino-lecture-2-electronic-leds-communications-and-datasheets-1206641537960167-4&amp;stripped_title=arduino-lecture-2-electronic-leds-communications-and-datasheets" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/eoinbrazil"&gt;eoinbrazil&lt;/a&gt;. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/arduino"&gt;arduino&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/electronics"&gt;electronics&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_324237"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/eoinbrazil/arduino-lecture-3-making-things-move-and-avr-programming?type=presentation" title="Arduino Lecture 3 - Making Things Move and AVR programming"&gt;Arduino Lecture 3 - Making Things Move and AVR programming&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=arduino-lecture-3-making-things-move-and-avr-programming-1206641955698649-3&amp;stripped_title=arduino-lecture-3-making-things-move-and-avr-programming" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=arduino-lecture-3-making-things-move-and-avr-programming-1206641955698649-3&amp;stripped_title=arduino-lecture-3-making-things-move-and-avr-programming" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/eoinbrazil"&gt;eoinbrazil&lt;/a&gt;. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/electronics"&gt;electronics&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/arduino"&gt;arduino&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_410922"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/ionela13/embedded-os-linux-co?type=powerpoint" title="Embedded Os [Linux &amp;amp; Co.]"&gt;Embedded Os [Linux &amp;amp; Co.]&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=embedded-os-linux-co-1210967191310913-8&amp;stripped_title=embedded-os-linux-co" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=embedded-os-linux-co-1210967191310913-8&amp;stripped_title=embedded-os-linux-co" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/ionela13"&gt;Ionela &lt;/a&gt;. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/electronics"&gt;electronics&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/linux"&gt;linux&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-5290577646231791526?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/5290577646231791526/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=5290577646231791526' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5290577646231791526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5290577646231791526'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/02/microkontrolery-avr-i-arduino-prostota.html' title='Microkontrolery AVR i Arduino - prostota i fenomen otwartego sprzętu'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-1812326506535196830</id><published>2009-02-04T21:41:00.008+01:00</published><updated>2009-03-17T21:22:10.635+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='informatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='java script'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='kreowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Materiały pomocne dla lubujących się w szablonach i typografii</title><content type='html'>Polecam następujące strony, które kształcą na przykładach w zakresie prostych (darmowych) layoutów stron www oraz zasad typografii. Ponadto pod poniższymi linkami znajdziecie generatory różnych elementów stron internetowych t.j. zakładki, web 2.0 badgets, wypełnień tła, kolorów, opakowań z produktem i wiele innych ciekawych gadżetów:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://desizntech.info/2009/02/25-web-20-generators-to-rescue-be-lazy/"&gt;&lt;span style="font-weight:bold;"&gt;25+ Web 2.0 Generators to rescue ( Be Lazy)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.freepsd.com/category/freetemplates/"&gt;&lt;span style="font-weight:bold;"&gt;freepsd, freetemplates&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.typechart.com/"&gt;&lt;span style="font-weight:bold;"&gt;typechart, typography, font typography example&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://hiddenpixels.com/designer-and-developer-resources/free-zen-cart-templates/"&gt;&lt;span style="font-weight:bold;"&gt;free zen cart templates, free webpages templates&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://hiddenpixels.com/photoshop-resources/free-psd-web-designers/"&gt;&lt;span style="font-&lt;br /&gt;weight:bold;"&gt;free psd web designers, free psd links&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://hiddenpixels.com/technology-updates/psd-to-html-xhtml-wordpress-any/"&gt;&lt;span style="font-&lt;br /&gt;weight:bold;"&gt;PSDtoANY - PSD to HTML / XHTML, Wordpress, Joomla, osCommerce etc&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.psdtoany.com/psd-to-html-xhtml.html"&gt;&lt;span style="font-weight:bold;"&gt;psd to html xhtml&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.cssgirl.com/resources/2008/08/03/typography-essentials-free-fonts-tools-and-tutorials/"&gt;&lt;span style="font-&lt;br /&gt;weight:bold;"&gt;typography essentials free fonts tools and tutorials&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.psdtoany.com/psd-to-html-xhtml.html"&gt;&lt;span style="font-&lt;br /&gt;weight:bold;"&gt;psd to html xhtml&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.cssgirl.com/resources/2008/08/03/typography-essentials-free-fonts-tools-and-tutorials/"&gt;&lt;span style="font-&lt;br /&gt;weight:bold;"&gt;typography essentials free fonts tools and tutorials&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.fuelyourcreativity.com/my-top-20-free-fonts-typography-roundup-resources/"&gt;&lt;span style="font-&lt;br /&gt;weight:bold;"&gt;My Top 20 Free Fonts + Typography Roundup + Resources&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="-"&gt;&lt;span style="font-weight:bold;"&gt;WhatTheFont&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.dafont.com/"&gt;&lt;span style="font-weight:bold;"&gt;Dafont - font catalog&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://simplythebest.net/fonts/index.html"&gt;&lt;span style="font-weight:bold;"&gt;SimplytheBest Fonts&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://fontleech.com/"&gt;&lt;span style="font-weight:bold;"&gt;fontleech&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.smashingmagazine.com/2007/11/08/40-excellent-freefonts-for-professional-design/"&gt;&lt;span style="font-weight:bold;"&gt;40+ Excellent Freefonts For Professional Design&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.smashingmagazine.com/category/fonts/"&gt;&lt;span style="font-weight:bold;"&gt;smashingmagazine - category - fonts&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.smashingmagazine.com/2007/11/19/monday-inspiration-typography-in-motion/"&gt;&lt;span style="font-weight:bold;"&gt;monday inspiration - typography in motion&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://ilovetypography.com/"&gt;&lt;span style="font-weight:bold;"&gt;i love typography&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://abduzeedo.com/super-cool-frilly-bits-typography"&gt;&lt;span style="font-weight:bold;"&gt;super cool frilly bits typography&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://new.myfonts.com/fonts/exljbris/anivers/"&gt;&lt;span style="font-weight:bold;"&gt;myfonts - exljbris - anivers&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.smashingmagazine.com/2007/08/08/80-beautiful-fonts-typefaces-for-professional-design/"&gt;&lt;span style="font-weight:bold;"&gt;80 beautiful fonts typefaces for professional design&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.dafont.com/theme.php?cat=718"&gt;&lt;span style="font-weight:bold;"&gt;Sexi fonts&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.dafont.com/theme.php?cat=704"&gt;&lt;span style="font-weight:bold;"&gt;Ancient fonts&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://praegnanz.de/essays/"&gt;&lt;span style="font-weight:bold;"&gt;fonts - essays&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.1001freefonts.com/"&gt;&lt;span style="font-weight:bold;"&gt;1001 free fonts&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.nerfect.com/typefree.html"&gt;&lt;span style="font-weight:bold;"&gt;type free&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.fontcatalog.com/webapp/links/index.php"&gt;&lt;span style="font-weight:bold;"&gt;font catalog&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.microsoft.com/typography/default.mspx"&gt;&lt;span style="font-weight:bold;"&gt;Microsoft's Typography&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.smashingmagazine.com/2008/03/20/60-brilliant-typefaces-for-corporate-design/"&gt;&lt;span style="font-weight:bold;"&gt;60 Brilliant Typefaces For Corporate Design&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://justcreativedesign.com/2009/01/07/logo-design-trends-2009/"&gt;&lt;span style="font-weight:bold;"&gt;logo design trends 2009&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.blueprintcss.org/"&gt;&lt;span style="font-weight:bold;"&gt;blueprint CSS framework&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://www.heinmaas.com/2009/02/logo-design-processes-and-logo-inspiration/"&gt;&lt;span style="font-weight:bold;"&gt;Logo design processes and logo inspiration&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-1812326506535196830?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/1812326506535196830/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=1812326506535196830' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1812326506535196830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1812326506535196830'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/02/materiay-pomocne-dla-lubujacych-sie-w.html' title='Materiały pomocne dla lubujących się w szablonach i typografii'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3445150155876315930</id><published>2009-01-28T18:39:00.009+01:00</published><updated>2009-02-16T20:22:33.051+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technologie'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='wyznawcy węża'/><title type='text'>Stackless Python z microwątkami steruje kosmicznymi pojazdami ;-)</title><content type='html'>Zdrowo czasem spojrzeć na &lt;a href="http://python.org"&gt;ulubione&lt;/a&gt; strony a nie tylko ich kanały RSSowe, istnieje duża szansa na natchnienie, odnalezienie ciekawego zagadnienia ... ot tak właśnie klikając :) Poczytałem zatem sobie o sukcesie kilku popularnych i ogromnych przedsięwzięć t.j.:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Eve_online"&gt;EVE Online&lt;/a&gt; - gry massive multiplayer i portalu społecznościowego&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://secondlife.com/"&gt;Second Life&lt;/a&gt; - czegoś w rodzaju wirtualizacji sfer prywatnych w sieci&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;... a to wszystko ściśle &lt;a href="http://www.stackless.com/wiki/Applications"&gt;powiązane&lt;/a&gt; z tym oto wężem z klubu wyznawców węży ;)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SZmzPiWRIuI/AAAAAAAACiM/C4yR2ouudw8/s1600-h/Stacklesssss_Python.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 216px; height: 216px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SZmzPiWRIuI/AAAAAAAACiM/C4yR2ouudw8/s320/Stacklesssss_Python.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5303467115705082594" /&gt;&lt;/a&gt;&lt;br /&gt;  Większość wtajemniczonych ludzi zna temat od podszewki, byćmoże niektórzy posiadają tam prywatne konta. Ja chciałbym spojrzeć z punktu widzenia programistycznego na zagadnienie, jakim jest wykorzystanie szczególnej implementacji języka programowania Python o nazwie &lt;a href="http://python.org"&gt;Stackless Python&lt;/a&gt;. Całkowicie podzielam zdanie osób, które myślą sobie "kolejne gorące i słodnie ciastko w tematyce Pythona ... czemu by go trozeczkę nie nadgryźć" ;-) &lt;br /&gt;  Prezentuję garstkę linków z materiałami, które przeczytałem i już biorę się za wykonanie przykładów oraz ich analizę. Chciałbym zachęcić do lektury oraz dyskusji na ten nowy dla mnie i intrygujący temat. Ciekawe dlaczego akurat firma &lt;a href="http://ccpgames.com/"&gt;ccpgames&lt;/a&gt; wykorzystała ten język programowania w tym konkretnym wydaniu do &lt;a href="http://www.eve-online.com/faq/faq_07.asp"&gt;realizacji&lt;/a&gt; &lt;a href="http://www.eve-online.com/"&gt;gry&lt;/a&gt; sieciowej czasu rzeczywistego z całkiem sporą listą możliwości i efektów. Ciekawi mnie również, czemu w takim &lt;a href="http://secondlife.com/"&gt;drugim świecie&lt;/a&gt; zdecydowano się na użycie szczególnie pielęgnowanych &lt;a href="http://svn.secondlife.com/trac/eventlet/browser/branches/eventlet-libevent-2"&gt;kodów&lt;/a&gt; napisanych w języku &lt;a href="http://wiki.secondlife.com/w/index.php?title=Eventlet&amp;oldid=51543"&gt;Stackless Python&lt;/a&gt; ... kto może mi to rozjaśnić, ale tak na chłopski rozum ;) ?&lt;br /&gt;&lt;br /&gt;Oczywiście próbuję sobie odpowiedzieć czytając &lt;a href="http://highscalability.com/eve-online-architecture"&gt;literaturę&lt;/a&gt; temetyczną oraz &lt;a href="http://www.slideshare.net/Arbow/stackless-python-in-eve"&gt;prezentację&lt;/a&gt; i nadal mnie ten fenomen węża intryguje ...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SZm8NeaDr3I/AAAAAAAACiU/hKKXYUIk7sE/s1600-h/eve-server-architecture-blog.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 319px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SZm8NeaDr3I/AAAAAAAACiU/hKKXYUIk7sE/s320/eve-server-architecture-blog.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5303476975892148082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Linki tematyczne:&lt;br /&gt;&lt;a href="http://www.stackless.com/spcpaper.htm"&gt;Continuations and Stackless Python Or "How to change a Paradigm of an existing Program"&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.secondlife.com/w/index.php?title=Eventlet&amp;oldid=51543"&gt;Eventlet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://terranova.blogs.com/terra_nova/2005/10/nested_worlds.html"&gt;Nested Worlds&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/stacklessexamples/wiki/StacklessWSGI"&gt;The project hosts multiple examples of stackless usage combined with other libraries.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://harkal.sylphis3d.com/2005/08/10/multithreaded-game-scripting-with-stackless-python/"&gt;Multithreaded Game Scripting with Stackless Python&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Coroutine#Implementations_for_Python"&gt;Implementations for Python - Coroutine&lt;/a&gt;&lt;br /&gt;&lt;a href="http://svn.secondlife.com/trac/eventlet/browser/branches/eventlet-libevent-2"&gt;eventlet-libevent-2 secondlife trac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Comet_(programming)"&gt;Comet (programming)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.kamaelia.ohttp://www.blogger.com/img/blank.gifrg/Home"&gt;In Kamaelia you build systems from simple components that talk to each other.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.async.com.br/projects/kiwi/api/kiwi.tasklet.html"&gt;Module k.tasklet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://o2s.csail.mit.edu/o2s-wiki/multitask"&gt;multitask&lt;/a&gt;&lt;br /&gt;&lt;a href="http://chiral.j4cbo.com/trac"&gt;Chiral is a lightweight coroutine-based networking framework for high-performance internet and Web services.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://codespeak.net/py/dist/greenlet.html"&gt;py.magic.greenlet: Lightweight concurrent programming&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.python.org/dev/peps/pep-0342/"&gt;Coroutines via Enhanced Generators&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/cogen/"&gt;cogen - crossplatform asynchronous network oriented python framework based on python 2.5 enhanced generators&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Umbrella_term"&gt;Umbrella term&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Meebo"&gt;Meebo is an Ajax-based in-browser instant messaging&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/JotSpot"&gt;JotSpot&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stackless.com/"&gt;stackless python - official website&lt;/a&gt;&lt;br /&gt;&lt;a href="http://myeve.eve-online.com/devblog.asp?a=blog&amp;bid=488"&gt;Stackless python 2.5 article in eve-online devblog&lt;/a&gt;&lt;br /&gt;&lt;a href="http://highscalability.com/eve-online-architecture"&gt;eve online architecture&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.python.org/moin/PyPy"&gt;PyPy&lt;/a&gt;&lt;br /&gt;&lt;a href="EVE Evolved: EVE Online's server model"&gt;http://www.massively.com/2008/09/28/eve-evolved-eve-onlines-server-model/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Infiniband"&gt;Infiniband&lt;/a&gt;&lt;br /&gt;&lt;a href="http://myeve.eve-online.com/devblog.asp?a=blog&amp;bid=286"&gt;optimizations, optimizations, optimizations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hostiletacticsgaming.com/stackless-python-used-for/"&gt;stackless python used for&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3445150155876315930?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3445150155876315930/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3445150155876315930' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3445150155876315930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3445150155876315930'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/01/stackless-python-z-microwatkami-steruje.html' title='Stackless Python z microwątkami steruje kosmicznymi pojazdami ;-)'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SZmzPiWRIuI/AAAAAAAACiM/C4yR2ouudw8/s72-c/Stacklesssss_Python.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3290336827067576260</id><published>2009-01-27T15:29:00.013+01:00</published><updated>2009-02-11T14:22:44.513+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='słoń'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='maskotki'/><category scheme='http://www.blogger.com/atom/ns#' term='elePHPant'/><title type='text'>elePHPant - obsesja na temat PHP słonia</title><content type='html'>Jakiś czas temu zachciałem wraz z grupą znajomych "zapolować" na słonia :) Wszystko byłoby pięknie, gdyby słonie były &lt;span style="font-style:italic;"&gt;dostępne w sprzedaży&lt;/span&gt; - bo jak się domyślacie chodzi mi o zakup niniejszego słoniątka o wdzięcznym imieniu &lt;span style="font-weight:bold;"&gt;elePHPant&lt;/span&gt; :-)&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_FKArYkQGfrY/SX8hRR1dCjI/AAAAAAAACfM/tYDX7gyUnKk/s320/elePHPant_poster.jpg" alt="elePHPant poster" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt; Niektórzy znający zakamarki języka programowania &lt;span style="font-weight:bold;"&gt;PHP&lt;/span&gt;, chcąc ukazać jego cechy zmutowali elePHPanta i można go podziwiać na poniższych wizerunkach:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SZLNgwgnP5I/AAAAAAAAChE/YQQXU-Bhvb4/s1600-h/elephpant1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SZLNgwgnP5I/AAAAAAAAChE/YQQXU-Bhvb4/s320/elephpant1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301525674029694866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLNr7TI0DI/AAAAAAAAChM/u173cTu869c/s1600-h/elePHPant_14_juillet.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 302px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLNr7TI0DI/AAAAAAAAChM/u173cTu869c/s320/elePHPant_14_juillet.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301525865904525362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLN4aGC5CI/AAAAAAAAChU/NblhBOG8YzE/s1600-h/2163523170_fb8b0f3991.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLN4aGC5CI/AAAAAAAAChU/NblhBOG8YzE/s320/2163523170_fb8b0f3991.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301526080329540642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLOWqOpS4I/AAAAAAAAChc/Rf8CICBG1bc/s1600-h/2207776375_37a030c835.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLOWqOpS4I/AAAAAAAAChc/Rf8CICBG1bc/s320/2207776375_37a030c835.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301526600056654722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SZLPKamDI1I/AAAAAAAAChk/ZaHi63UP8iE/s1600-h/elephpant1web.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SZLPKamDI1I/AAAAAAAAChk/ZaHi63UP8iE/s320/elephpant1web.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301527489213047634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLQURW6TBI/AAAAAAAAChs/muRYkDZc-zA/s1600-h/php_2008_8.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLQURW6TBI/AAAAAAAAChs/muRYkDZc-zA/s320/php_2008_8.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301528758043954194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SZLQziHvm2I/AAAAAAAACh0/SMRMtGIRag8/s1600-h/modeleelephpantv105qv.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SZLQziHvm2I/AAAAAAAACh0/SMRMtGIRag8/s320/modeleelephpantv105qv.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5301529295119686498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SZLQ-T64mNI/AAAAAAAACh8/8rbHGP9WhbE/s1600-h/php_2008_1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SZLQ-T64mNI/AAAAAAAACh8/8rbHGP9WhbE/s320/php_2008_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301529480286214354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kilka linków:&lt;br /&gt;&lt;a href="http://pl.wikipedia.org/wiki/S%C5%82o%C5%84_afryka%C5%84ski"&gt;Słóń afrykański (wikipedia)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.php.net"&gt;PHP - portal społeczności zrzeszonej wokół języka programowania PHP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3290336827067576260?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3290336827067576260/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3290336827067576260' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3290336827067576260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3290336827067576260'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/01/elephpant-obsesja-na-temat-php-sonia.html' title='elePHPant - obsesja na temat PHP słonia'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/SX8hRR1dCjI/AAAAAAAACfM/tYDX7gyUnKk/s72-c/elePHPant_poster.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3578958563770352447</id><published>2009-01-05T21:12:00.001+01:00</published><updated>2009-02-16T20:29:50.469+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='informatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Ewolucja robotów - przegląd</title><content type='html'>Po zapoznaniu się z pewnym artykułem p.t. &lt;a href="http://facet.interia.pl/news/bunt-maszyn-poczatek-juz-byl,1092812"&gt;Bunt maszyn - początek już był!&lt;/a&gt; stwierdzam, że bardzo niewiele brakuje, aby technologie, które w bazach wojskowych przechodzą testy wymknęły się spod kontroli i zaszkodziły populacji. Być może to jest nieco tragiczny początek .... bynajmniej prawdopodobny ;-)&lt;br /&gt;  W patykiem po wodzie pisanym kodeksie robota nie jest przecież istotne co ten robot robi, ale ważne jest do czego zaprogramował go człowiek. I będzie to robił z precyzją na jaką pozwalają podzespoły, z jakością napisanych dla robota algorytmów oraz w ramach dostępnych zasobów sprzętowych/peryferiów.&lt;br /&gt;Istnieje wiele pomysłów na roboty. Ba istnieje spora liczba zaprogramowanych robotów, które na dzień dzisiejszy są dość skomplikowanymi maszynami mechaniczno-elektronicznymi, lecz za kilkadziesiąt lat będą to maszyny podstawowego wyposażenia naszych gospodarstw domowych. Te oparte o jednostki centralne sporej mocy obliczeniowej urządzenia czeka w dobie rozproszonych sieci komputerowych niebanalny rozkwit. Pytanie tylko, jak długo jeszcze będą odbywały się próby naśladowania istoty żyjących i podstaw mechaniki podczas konstruowania robotów...&lt;br /&gt;Moim zdaniem prawdziwa era robotów nadejdzie, gdy człowiek wyzbędzie się podczas ich tworzenia zasad, których wyuczył się i zna z życia codziennego a zacznie szukać robotów, które żyją w dniu dzisiejszym jako wirtualne twory przeszukujące i przemierzające ogólnodostępną sieć internet. Nie mam tutaj na myśli wirusów komputerowych, lecz można je spokojnie wykorzystać jako wagon transportowy dla takiego tworu :-)&lt;br /&gt;  Nie byłbym sobą, gdybym nie wspomniał o roli &lt;a href="http://facet.interia.pl/news/bunt-maszyn-poczatek-juz-byl/komentarze,1092812,,15326083"&gt;programistów&lt;/a&gt; w tym procesie. &lt;br /&gt;Już dziś można otwarcie napisać &lt;span style="font-style:italic;"&gt;Panowie i Panie to do nas świat należy&lt;/span&gt;. Programista zaczyna od wielu na całym świecie być ceniony za swoją abstrakcyjną pracę, lecz jak dotąd nic nie przebija - od początków cywilizacji - zwykłych i niezwykłych handlarzy (bez urazy oczywiście)  Pozwolę sobie ich nazwać współczesną gwarą &lt;span style="font-style:italic;"&gt;biznesmenami&lt;/span&gt;, bo właśnie potencjalni handlowcy napędzają sprzedaż tworów programistycznych :-) Jak najbardziej nie mam zamiaru wywyższać zawodów, pisać, że tym jest być lepiej lub gorzej. Nie osądzam - tak tylko fantazjuję ;)&lt;br /&gt;  O ile mogę polecić literaturę fantastyczną zasygnalizowany dziś temat Pana &lt;a href="http://pl.wikipedia.org/wiki/Stanis%C5%82aw_Lem"&gt;Stanisława Lema&lt;/a&gt;, o tyle też zachęcam do spojrzenia na dzisiejsze osiągnięcia w dziedzinie robotyki chociażby okiem youtube. Odkrywając dziś i przyzwyczajając się do egzystencji robotów w naszym życiu tworzymy dalej technologicznie sprawniejszą cywilizację. Ci których interesuje od strony kinematografii również znajdą coś dla siebie.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linki:&lt;br /&gt;&lt;a href="http://esensja.pl/tworczosc/powiesci/tekst.html?id=4142"&gt;Gwiezdne wojny: Prawo robotyki – część 1&lt;/a&gt;&lt;br /&gt;Asimo - robotyka&lt;br /&gt;Robo Sapiens. Ewolucja nowego gatunku&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3578958563770352447?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3578958563770352447/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3578958563770352447' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3578958563770352447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3578958563770352447'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/01/ewolucja-robotow-przeglad.html' title='Ewolucja robotów - przegląd'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-1346570465122100414</id><published>2008-12-20T16:08:00.007+01:00</published><updated>2009-02-13T01:31:55.948+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KML'/><category scheme='http://www.blogger.com/atom/ns#' term='technologie'/><category scheme='http://www.blogger.com/atom/ns#' term='podróże po mapie'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Maps'/><title type='text'>Poznaj trasę mojej podróży dzięki KML i Google Maps</title><content type='html'>Ostatnio przyciągnął moją uwagę pewien projekt połączenia nawigacji z fotografowaniem, który umożliwia powiązanie zdjęć z danymi z GPS i opublikowaniem własnej mapy podróży na Google Maps. Projekt ten nosi nazwę. Warto zauważyć, że przykładowe &lt;a href="http://local.google.com/maps?f=q&amp;hl=en&amp;q=http%3A%2F%2Ffrancois.schnell.free.fr%2Fgeo%2F19mai07%2Fdoc-web.kml&amp;ie=UTF8&amp;ll=48.43649,8.051605&amp;spn=0.089061,0.233459&amp;t=h&amp;z=12&amp;om=1"&gt;ścieżki podróży&lt;/a&gt;, wraz z opublikowanymi zdjęciami w formacie KML, które opublikował autor są dość pokaźnym kawałkiem technologii w rękach człowieka-programisty ;-)&lt;br /&gt;&lt;br /&gt;Oto przykładowa interpretacja pliku KML przez Google Maps:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SZOFbz-YYaI/AAAAAAAACiE/i4jwifKMegY/s1600-h/sciezka_pordozy___google_maps_kml.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SZOFbz-YYaI/AAAAAAAACiE/i4jwifKMegY/s320/sciezka_pordozy___google_maps_kml.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5301727899200020898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dodatkowe linki:&lt;br /&gt;&lt;a href="http://earth.google.com/intl/pl/kml/whatiskml.html"&gt;Co to jest KML?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pl.wikipedia.org/wiki/Keyhole_Markup_Language"&gt;KML na wikipedii&lt;/a&gt;&lt;br /&gt;&lt;a href="http://earth.google.com/intl/pl/kml/kml_tut.html"&gt;Przykłady kodu KML&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-1346570465122100414?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/1346570465122100414/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=1346570465122100414' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1346570465122100414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1346570465122100414'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/12/poznaj-trase-mojej-podrozy-google-maps.html' title='Poznaj trasę mojej podróży dzięki KML i Google Maps'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/SZOFbz-YYaI/AAAAAAAACiE/i4jwifKMegY/s72-c/sciezka_pordozy___google_maps_kml.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-4222456050327058000</id><published>2008-12-17T22:46:00.005+01:00</published><updated>2009-02-13T10:22:31.797+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='modele'/><category scheme='http://www.blogger.com/atom/ns#' term='wizualizacja'/><category scheme='http://www.blogger.com/atom/ns#' term='kreowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'>Blender - zaczarowany ołówek 3D</title><content type='html'>W &lt;a href="http://marcinbielak.blogspot.com/2008/06/blender-pierwse-kroki-w-modelowaniu-3d.html"&gt;pierwszych krokach&lt;/a&gt; przedstawiłem &lt;a href="http://blender.org"&gt;Blendera&lt;/a&gt;. Używam go skutecznie od jakiegoś czasu do kreowania różnych wizualizacji projektów, maszyn, wynalazków i chciałbym docenić ten program za spore jak na Open Source możliwości kreowania swojego świata w kilku wymiarach, intuicyjny interfejs użytkownika, wbudowany silnik gier, niesamowite narzędzie animatorskie, niezwykłą deskę kreślarską oraz niebanalne efekty renderingu.&lt;br /&gt; Artykuł ten ma na celu prezentację moich modeli, którymi chciałbym się z Wami podzielić oraz omówić ich powstanie. &lt;br /&gt; Jako pierszy model stworzyłem rakietę, byćmoże niezbyt ambitny projekt, ale zawsze "ten pierwszy raz" ;) w Blenderze. Oto widok konstrukcji z perspektywy deski roboczej:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SZK9ywxvK3I/AAAAAAAACgk/tvxx8NneKow/s1600-h/Blender_Render_internal_and_yafray_rocket01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 187px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SZK9ywxvK3I/AAAAAAAACgk/tvxx8NneKow/s320/Blender_Render_internal_and_yafray_rocket01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5301508391153118066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kolejnym pomyslem i modelem, ktory kazdemu poczatkujcemu tworcy 3D nasuwa się na deskę kreślarską jest jakiś dwuślad.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SZK_lDL77dI/AAAAAAAACgs/YYIr18AxRMk/s1600-h/Blener_Render_car_model01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 186px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SZK_lDL77dI/AAAAAAAACgs/YYIr18AxRMk/s320/Blener_Render_car_model01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5301510354599931346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Następnym odkryciem jest oczywiście domek moich marzeń :-) Co prawda nie jest idealny, brakuje mu jeszcze wiele, lecz &lt;span style="font-weight:bold;"&gt;zarys to podstawa do wyobrażenia złożoności&lt;/span&gt; ;) Dodaje wyrenderowany na szybko rozkład ścian ...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLEXN9LEVI/AAAAAAAACg8/1CPIp0c-UGQ/s1600-h/Blender_Render_my_house_walls01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 188px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SZLEXN9LEVI/AAAAAAAACg8/1CPIp0c-UGQ/s320/Blender_Render_my_house_walls01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5301515614530769234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Oczywiście chciałbym się z Wami podzielić praktycznymi lekturami w postaci wideo, które są niemal  obowiązkowe i pobudzają kreatywnośc w świecie 3D. Oto one:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.max3d.pl/tutorial.php?id=93"&gt;Kurs wideo programu Blender w języku polskim&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.the-blueprints.com/"&gt;Skategoryzowane tekstury oraz obrysy różnych obiektów&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cgtextures.com/"&gt;Baza tekstur&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.smcars.net/"&gt;Modele samochodów&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blender.pl/"&gt;Polska strona społeczności blenderowania (forum, artykuły, modele)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/osarch"&gt;Open Source Architecture&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/groups/9075/videos/1132029"&gt;Tutorial: Blender Ambient Occlusion&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/785249"&gt;Tutorial: building a house in Blender 3d software - part 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/812311"&gt;Tutorial: building a house in Blender 3d software - part 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/833701"&gt;Tutorial: building a house in Blender 3d software - part 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/1178051"&gt;Garden house demo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/1242000"&gt;Virtuality vs. Reality&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blendernewbies.com/timelapse/lattice_demo/lattice_demo.html"&gt;Using a Lattice to Redisign your model&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flow7.com/index.php?section=blender3d&amp;tutorial=coke1"&gt;Wizualizacja butelki Coca-coli&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gfs.sourceforge.net/wiki/index.php/Using_Blender_to_create_solids_for_Gerris"&gt;Użycie Blendera do tworzenia i analizy profili nośnych skrzydeł&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://en.wikibooks.org/wiki/Blender_3D:_Tutorial_Links_List#2D_Texture_Painting_Techniques&lt;br /&gt;&lt;br /&gt;http://forum.blender3d.pl/viewtopic.php?p=29974&amp;sid=fb546cf1f356e77c05a4f1e74e75a519&lt;br /&gt;&lt;br /&gt;http://pg12.bialystok.pl/php/body/edukacja/technologia-informacyjna/budowa_kompa/artykuly/Projektowanie%20grafiki%203D%20w%20Blenderze%20(cz.3)/pf--10s052_54.pdf&lt;br /&gt;&lt;br /&gt;http://wiki.blender.org/index.php/Manual.pl/Pierwsza_Animacja_w_30_i_30_Minut_Czesc_I&lt;br /&gt;&lt;br /&gt;http://www.pixel2life.com/tutorials/blender_3d/&lt;br /&gt;&lt;br /&gt;http://wiki.blender.org/index.php/Doc:Tutorials/Modelling/Curves/B%C3%A9zier&lt;br /&gt;&lt;br /&gt;http://blenderunderground.com/forums/viewforum.php?f=19&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-4222456050327058000?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/4222456050327058000/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=4222456050327058000' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/4222456050327058000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/4222456050327058000'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2009/01/blender-zaczarowany-oowek-3d.html' title='Blender - zaczarowany ołówek 3D'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SZK9ywxvK3I/AAAAAAAACgk/tvxx8NneKow/s72-c/Blender_Render_internal_and_yafray_rocket01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3356760067843377575</id><published>2008-12-04T21:47:00.000+01:00</published><updated>2008-12-05T03:02:36.106+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x11'/><category scheme='http://www.blogger.com/atom/ns#' term='vnc'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='framebuffer'/><category scheme='http://www.blogger.com/atom/ns#' term='X windows'/><title type='text'>Linux framebuffer server - jak uruchomić aplikacje graficzną na serwerze bez trybu graficznego</title><content type='html'>Często zdarza mi się używać niesamowitych rozwiązań technologicznych :-) Opisane poniżej rozwiązanie nie tyle stwarza warunki do rozwoju, ale również do testowania rozwijanych projektów. Mowa tutaj o trybie &lt;a href="http://pl.wikipedia.org/wiki/Linuksowy_bufor_ramki"&gt;framebuffer&lt;/a&gt; możliwego do użycia w graficznym systemie &lt;a href="http://pl.wikipedia.org/wiki/X_Window_System"&gt;X11 windows system&lt;/a&gt;. Poniżej przedstawie jak najprościej uruchomić i podglądać nasz wirtualny system graficzny.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/STh6ALzybgI/AAAAAAAACdk/IEKJjSavn5M/s1600-h/X11.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 100px; height: 100px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/STh6ALzybgI/AAAAAAAACdk/IEKJjSavn5M/s400/X11.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5276101107053129218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na początek uzupełniamy system o pakiet serwera ramki &lt;span style="font-weight:bold;"&gt;Xvfb&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo apt-get install xvfb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Następnie startujemy wirtualny serwer graficzny w tle poleceniem:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo startx -- `which Xvfb` :2 -screen 0 1024x768x24 2&gt;&amp;1 &gt;/dev/null &amp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;W następnej kolejności uruchamiamy naszą aplikacje graficzną na serwerze np: &lt;span style="font-weight:bold;"&gt;gimp&lt;/span&gt; poleceniem:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo DISPLAY=:2 gimp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;W tym czasie możemy zrobić zrzut ekranu naszego wirtualnego serwera graficznego poleceniem:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;xwd -display :2 -root | convert xwd:- /tmp/framebuffer_server_autput.png&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;lub możemy po zainstalowaniu aplikacji &lt;a href="http://www.gnomefiles.org/app.php?soft_id=1261"&gt;byzanz&lt;/a&gt; nagrać obraz z serwera graficznego do animowanego plku GIF:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo apt-get install byzanz&lt;br /&gt;sudo DISPLAY=:2 byzanz-record -l --display=:2 /tmp/rec.gif&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Uzyskany ze zrzutu ekranu obrazek możmy wyświetlić np: w ten sposób:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo DISPLAY=:0 gthumb /tmp/framebuffer_server_autput.png&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;a wówczas naszym oczom może ukazać sie następujący widok:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/STiEbFsxhJI/AAAAAAAACds/wv0lLIjea0E/s1600-h/framebuffer_server_autput.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 256px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/STiEbFsxhJI/AAAAAAAACds/wv0lLIjea0E/s320/framebuffer_server_autput.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5276112564385842322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Zadajecie sobie pewnie pytanie &lt;span style="font-style:italic;"&gt;"po cóż mi taki bezużyteczny framebuffer, skoro nie mam dostępu do pulpitu"&lt;/span&gt; i odpowiedzią jest poniższe rozwiązanie używające serwera &lt;span style="font-weight:bold;"&gt;X11vnc&lt;/span&gt; do przechwytycenia widoku framebuffera.&lt;br /&gt;&lt;br /&gt;Na początek instalujemy pakiet &lt;span style="font-weight:bold;"&gt;X11vnc&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo apt-get install x11vnc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Po starcie w następujący sposób:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;x11vnc -display :2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;zauważymy komunikaty typu:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;04/12/2008 20:50:11 Autoprobing TCP port &lt;br /&gt;04/12/2008 20:50:11 Autoprobing selected port 5900&lt;br /&gt;04/12/2008 20:50:11 fb read rate: 480 MB/sec&lt;br /&gt;04/12/2008 20:50:11 screen setup finished.&lt;br /&gt;04/12/2008 20:50:11 &lt;br /&gt;04/12/2008 20:50:11 WARNING: You are running x11vnc WITHOUT a password.  See&lt;br /&gt;04/12/2008 20:50:11 WARNING: the warning message printed above for more info.&lt;br /&gt;04/12/2008 20:50:11 &lt;br /&gt;&lt;br /&gt;The VNC desktop is:      localhost:0&lt;br /&gt;PORT=5900&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Informacje wymagane do połączenia z framebuffer serwerem to &lt;span style="font-weight:bold;"&gt;localhost:0&lt;/span&gt;. Połączenia możemy dokonać używając klienta w ten sposób:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;vncviewer localhost:0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Powinien pojawić się nam w nowym oknie przechwycony pulpit naszego wirtualnego serwera graficznego.&lt;br /&gt;&lt;br /&gt; Dopiero po wykonaniu powyższych przykładów widać wyraźniej, jakie otwierają się przed nami możliwości. Możemy dla przykładu używać wirtualnego pulpitu do uruchamiania procesów &lt;span style="font-style:italic;"&gt;automatycznego testowania stron internetowych&lt;/span&gt; przy pomocy takich narzędzi jak &lt;span style="font-weight:bold;"&gt;&lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt;&lt;/span&gt; oraz &lt;a href="http://wiki.seleniumhq.org/label/SRC/hudson"&gt;&lt;span style="font-weight:bold;"&gt;Hudson&lt;/span&gt;&lt;/a&gt;, których moc postaram się przybliżyć w kolejnej wypowiedzi.&lt;br /&gt;&lt;br /&gt;Linki:&lt;br /&gt;http://en.wikipedia.org/wiki/Xvfb&lt;br /&gt;http://www.hackinglinuxexposed.com/articles/20040608.html&lt;br /&gt;http://www.xfree86.org/4.2.0/Xnest.1.html&lt;br /&gt;http://wiki.x.org/X11R6.8.2/doc/Xvfb.1.html&lt;br /&gt;http://wiki.seleniumhq.org/display/SRC/Selenium-RC+and+Continuous+Integration&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3356760067843377575?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3356760067843377575/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3356760067843377575' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3356760067843377575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3356760067843377575'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/12/linux-framebuffer-server-jak-uruchomi.html' title='Linux framebuffer server - jak uruchomić aplikacje graficzną na serwerze bez trybu graficznego'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/STh6ALzybgI/AAAAAAAACdk/IEKJjSavn5M/s72-c/X11.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-2843783743510086537</id><published>2008-11-27T20:16:00.001+01:00</published><updated>2008-11-27T20:20:30.483+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Hardware'/><title type='text'>Open Hardware - nie kupuj szajsu, skoro sprzęt jest za darmo</title><content type='html'>Powalające jest to, jak daleko &lt;span style="font-weight:bold;"&gt;Open Source&lt;/span&gt; podąża :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SS7u_yBbuQI/AAAAAAAACdE/g7WuyWV0yx8/s1600-h/MenuControl.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 118px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SS7u_yBbuQI/AAAAAAAACdE/g7WuyWV0yx8/s320/MenuControl.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5273414993224382722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dziś natchnąłem się na kilka stronek opisujących zagadnienie &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.linuxtoday.com/news_story.php3?ltsn=1999-06-22-005-05-NW-LF"&gt;Free Hardware&lt;/a&gt;&lt;/span&gt;. W wolnym tłumaczeniu &lt;span style="font-weight:bold;"&gt;otwarty sprzęt&lt;/span&gt; jak wiadomo jest tworzony od wielu lat. Jest słynący projekt otwartej karty graficznej. Sporo jest w sieci projektów sprzętowych do realizacji &lt;a href="http://www.headfuzz.co.uk/minirob"&gt;robotów&lt;/a&gt;. Również istnieją projekty otwartych systemów wbudowanych.&lt;br /&gt; Spoglądając z punktu widzenia programisty, który potrafi czytać dokumentację i API danej implementacji programowej jest to genialne rozwiązanie. Chcąc na przykład zrobić sobie przenośny i niezależny klient sieci &lt;span style="font-style:italic;"&gt;Jabber&lt;/span&gt; z wyświetlaczem LCD podpinany do dostępnego gniazda sieciowego lub wyszukującego sieci WiFi lub Bluetooth wystarczy wyszukać dostępny &lt;span style="font-weight:bold;"&gt;open hardware&lt;/span&gt;, który oferuje obsługę protokołów bazowych oraz interfejsów dla peryferiów i zaimplementować protokół klienta sieci &lt;span style="font-style:italic;"&gt;Jabber&lt;/span&gt; :-)&lt;br /&gt;Okazuje się, że nie wspominam o abstrakcjach, bo istnieje już kilka możliwych rozwiązań, np:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Free Arduino - prosty system wbudowany + Free Hardware (oparty o mikrokontroler ATMega 16)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nut/OS  - średniej klasy system operacyjny + Free Hardware (oparty o mikrokontroler AVR ATMega 132)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;OpenCore - Free Hardware jako układy FDGA, w które w języku VHDL wpisuje się implementacje rdzeni mikroprocesora zyskując spore jednostki obliczeniowe &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Java tiny - Free Hardware z procesorami z zaimplementowaną wbudowaną wirtualną maszyną JVM, które wykonują przenośne programy napisane w języku JAVA &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SS7vTaltuaI/AAAAAAAACdM/eIA7edK05m0/s1600-h/MenuBootloader.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 119px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SS7vTaltuaI/AAAAAAAACdM/eIA7edK05m0/s320/MenuBootloader.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5273415330531490210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kilka przykładów a widać rozmaitość rozwiązań i dowolność w implementacji. Jedynym warunkiem jest znajomość jakiegoś języka programowania ANSI C, C++, Python Java, ew. VHDL. oraz czas na zapoznanie się z dokumentacją do wymaganego stopnia podstawowego kodowania na wybraną platformę.&lt;br /&gt; Temat niby niewiele znaczący, lecz okazuje się, że już w sektorze tunerów satelitarnych DVB od kilku lat istnieją architektury, które oferują z punktu widzenia użytkownika oglądanie telewizji cyfrowej, słuchanie radia, przeglądanie stron internetowych a z punktu widzenia systemu wbudowanego są to kolejne przykłady sprzętu, który może stać się otwarty :-) Ten przykład nie dotyczy na dzień dzisiejszy &lt;a href="http://www.raiden.net/?aid=315"&gt;Free Hardware&lt;/a&gt;, chociaż wiele osób chciałoby sobie zrobić własny uniwersalny tuner DVB. Przeszkód żadnych nie ma, bo jak pamiętam ostatnio zapis prawny dotyczący dekodowania strumieni satelitarnych na własny użytek - wyłączając cele komercyjne - zezwala nam na zabawę, o ile nie kończy się targiem i handlowaniem takimi rozwiązaniami. Powracając do wątku o DVB wspomnę tylko, że tuner cyfrowy posiada całkiem spory procesor bazowy, dość ciekawy numeryczny kilka kodeków do strumieni MPEG oraz dźwięku, kontroler tunera satelitarnego, czytnik kart chipowych, dość sporo pamięci RAM i Flash oraz wiele innych peryferiów, które pozwalają podczas programowania takiego urządzenia dobrze poszaleć :-) i zrobić sobie jakiś prosty skaner częstotliwości z prezentacją radaru na ekranie ... a co tam, jak szaleć to konkretnie :)&lt;br /&gt; Inny dość pokaźny zestaw tematyczny w nawiązaniu do &lt;span style="font-weight:bold;"&gt;Open Hardware&lt;/span&gt; to otwarte sieci czujników &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.libelium.com/index.php?option=com_content&amp;task=view&amp;id=45&amp;Itemid=72"&gt;Wireless Sensor Network&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SS7uwg4t-FI/AAAAAAAACc8/0cgHI7VInOU/s1600-h/sensorial01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SS7uwg4t-FI/AAAAAAAACc8/0cgHI7VInOU/s320/sensorial01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5273414730926389330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.opencores.org/browse.cgi/by_category"&gt;Zestawienie projektów opencore&lt;/a&gt; potwierdza dodatkowo zainteresowanie tematyką Free Hardware. &lt;br /&gt; Kolejnym przykładem będą zabawki, jakie możemy stworzyć w oparciu o otwarty sprzęt oraz bardzo popularny temat otwartego sprzętu dla telefonów komórkowych t.j. &lt;a href="http://media2.pl/rss/telekomunikacja/38035-otwarty-telefon-komorkowy-na-rynku.html"&gt;OpenMoko&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SS7wcb6wOXI/AAAAAAAACdU/ltlQ0OTy8Ng/s1600-h/openmoko.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 293px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SS7wcb6wOXI/AAAAAAAACdU/ltlQ0OTy8Ng/s320/openmoko.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5273416585018620274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A tak kształtuje się zarys architektury Open Moko:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SS7wnl_XbVI/AAAAAAAACdc/CwyPZoUJeZQ/s1600-h/open_moko_arch_diag.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SS7wnl_XbVI/AAAAAAAACdc/CwyPZoUJeZQ/s320/open_moko_arch_diag.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5273416776700882258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Pozostawiam Wam tymczasem kilka linków, które doprowadzą Was do ciekawych tematycznych stron:&lt;br /&gt;&lt;a href="http://www.libelium.com/squidbee/index.php?title=Main_Page"&gt;SquidBee bezprzewodowy czujnik - Open Hardware and Source&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.libelium.com/squidbee/index.php?title=Hardware"&gt;Wiki na temat otwartego sprzętu&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.openservo.com/StepByStep"&gt;OpenServo - otwarty sterownik serwomechanzmu&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ethernut.de/en/hardware/enut1/index.html"&gt;Ethernut 1.3 Hardware&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opencores.org/"&gt;Opencores - otwarte architektury&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opensparc.net/"&gt;SUN OpenSPARC CMT (Chip Multithreading) technology&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ethernut.de/en/documents/debiansage.html"&gt;Nut/OS Development on Debian Sarge&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ethernut.de/nutwiki/UnixEmulationInstallation"&gt;Ethernut Unix Emulation Installation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sensor-networks.org/"&gt;Wireless Sensor Network&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.headfuzz.co.uk/?q=midihack"&gt;How to Build an Open Source MIDI Keyboard&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-2843783743510086537?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/2843783743510086537/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=2843783743510086537' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2843783743510086537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2843783743510086537'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/11/open-hardware-nie-kupuj-szajsu-skoro.html' title='Open Hardware - nie kupuj szajsu, skoro sprzęt jest za darmo'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SS7u_yBbuQI/AAAAAAAACdE/g7WuyWV0yx8/s72-c/MenuControl.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-854208008273868426</id><published>2008-11-21T19:55:00.001+01:00</published><updated>2008-11-21T19:55:00.959+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><title type='text'>Ewolucja robotów trwa</title><content type='html'>Dziś zapraszam do obejrzenia materiału wideo o ewolucji robotów i oczywiście dyskusję na ten obszerny temat :)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;embed src="http://www.metacafe.com/fplayer/1206622/robot_evolution.swf" width="400" height="345" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;br&gt;&lt;font size = 1&gt;&lt;a href="http://www.metacafe.com/watch/1206622/robot_evolution/"&gt;Robot Evolution&lt;/a&gt; - &lt;a href="http://www.metacafe.com/"&gt;The most popular videos are here&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;  Po zapoznaniu się z pewnym artykułem p.t. &lt;a href="http://facet.interia.pl/news/bunt-maszyn-poczatek-juz-byl,1092812"&gt;Bunt maszyn - początek już był!&lt;/a&gt; stwierdzam, że bardzo niewiele brakuje, aby technologie, które w bazach wojskowych przechodzą testy wymknęły się spod kontroli i zaszkodziły populacji. Być może to jest nieco tragiczny początek .... bynajmniej prawdopodobny ;-)&lt;br /&gt;  W patykiem po wodzie pisanym kodeksie robota nie jest przecież istotne co ten robot robi, ale ważne jest do czego zaprogramował go człowiek. I będzie to robił z precyzją na jaką pozwalają podzespoły, z jakością napisanych dla robota algorytmów oraz w ramach dostępnych zasobów sprzętowych/peryferiów.&lt;br /&gt;Istnieje wiele pomysłów na roboty. Ba istnieje spora liczba zaprogramowanych robotów, które na dzień dzisiejszy są dość skomplikowanymi maszynami mechaniczno-elektronicznymi, lecz za kilkadziesiąt lat będą to maszyny podstawowego wyposażenia naszych gospodarstw domowych. Te oparte o jednostki centralne sporej mocy obliczeniowej urządzenia czeka w dobie rozproszonych sieci komputerowych niebanalny rozkwit. Pytanie tylko, jak długo jeszcze będą odbywały się próby naśladowania istoty żyjących i podstaw mechaniki podczas konstruowania robotów...&lt;br /&gt;Moim zdaniem prawdziwa era robotów nadejdzie, gdy człowiek wyzbędzie się podczas ich tworzenia zasad, których wyuczył się i zna z życia codziennego a zacznie szukać robotów, które żyją w dniu dzisiejszym jako wirtualne twory przeszukujące i przemierzające ogólnodostępną sieć internet. Nie mam tutaj na myśli wirusów komputerowych, lecz można je spokojnie wykorzystać jako wagon transportowy dla takiego tworu :-)&lt;br /&gt;  Nie byłbym sobą, gdybym nie wspomniał o roli &lt;a href="http://facet.interia.pl/news/bunt-maszyn-poczatek-juz-byl/komentarze,1092812,,15326083"&gt;programistów&lt;/a&gt; w tym procesie. &lt;br /&gt;Już dziś można otwarcie napisać &lt;span style="font-style:italic;"&gt;Panowie i Panie to do nas świat należy&lt;/span&gt;. Programista zaczyna od wielu na całym świecie być ceniony za swoją abstrakcyjną pracę, lecz jak dotąd nic nie przebija - od początków cywilizacji - zwykłych i niezwykłych handlarzy (bez urazy oczywiście)  Pozwolę sobie ich nazwać współczesną gwarą &lt;span style="font-style:italic;"&gt;biznesmenami&lt;/span&gt;, bo właśnie potencjalni handlowcy napędzają sprzedaż tworów programistycznych :-) Jak najbardziej nie mam zamiaru wywyższać zawodów, pisać, że tym jest być lepiej lub gorzej. Nie osądzam - tak tylko fantazjuję ;)&lt;br /&gt;  O ile mogę polecić &lt;a href="http://pl.wikipedia.org/wiki/Bajki_robot%C3%B3w"&gt;literaturę&lt;/a&gt; fantastyczną zasygnalizowany dziś temat Pana &lt;a href="http://pl.wikipedia.org/wiki/Stanis%C5%82aw_Lem"&gt;Stanisława Lema&lt;/a&gt;, o tyle też zachęcam do spojrzenia na dzisiejsze osiągnięcia w dziedzinie robotyki chociażby okiem youtube. Odkrywając dziś i przyzwyczajając się do egzystencji robotów w naszym życiu tworzymy dalej technologicznie sprawniejszą cywilizację. Ci których interesuje od strony kinematografii również znajdą coś dla siebie.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linki:&lt;br /&gt;&lt;a href="http://www.mareno.pl/prod/MIDN/83-89221-99-3"&gt;Robo Sapiens. Ewolucja nowego gatunku&lt;/a&gt;&lt;br /&gt;&lt;a href="http://media.pg.gda.pl/PressOffice/PressRelease.91231.po?print_version=false"&gt;Od blaszanej puszki do kobiety idealnej&lt;/a&gt;&lt;br /&gt;&lt;a href="http://esensja.pl/tworczosc/powiesci/tekst.html?id=4142"&gt;Gwiezdne wojny: Prawo robotyki – część 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.asimo.pl/"&gt;Asimo - robotyka&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-854208008273868426?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/854208008273868426/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=854208008273868426' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/854208008273868426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/854208008273868426'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/11/ewolucja-robotw-trwa.html' title='Ewolucja robotów trwa'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-548646748070762550</id><published>2008-11-20T23:10:00.001+01:00</published><updated>2008-11-20T23:19:02.808+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mikrokontrolery'/><category scheme='http://www.blogger.com/atom/ns#' term='systemy wbudowane'/><category scheme='http://www.blogger.com/atom/ns#' term='sterowaniki'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Arduino, Freeduino, Pyduino - szybki start z mikrokontrolerami AVR</title><content type='html'> &lt;span style="font-weight:bold;"&gt;Filozofia OpenSource&lt;/span&gt; dociera zarówno do twórców software, jak również hardware. W ukryte zakamarki elektroniki, do jednostek arytmetyczno-logicznych, pamięci Flash, do mikrosystemów, do wszystkich zakątków, które możemy sobie wyobrazić. Skoro telefon może być na otwartym oprogramowaniu, to dlaczego nie pralka, lodówka, odkurzacz, roboty przemysłowe :-) Dla ułatwienia zabawy z mikrokontrolerami dziś polecam gotowy, do nabycia lub samodzielnego montażu zestaw &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.arduino.cc"&gt;Arduino&lt;/a&gt;&lt;/span&gt; z interfejsami USB lub RS-232&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SSXauikRgwI/AAAAAAAACcs/RrJ8rg6sHys/s1600-h/Arduino_avr_starter_kit.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SSXauikRgwI/AAAAAAAACcs/RrJ8rg6sHys/s320/Arduino_avr_starter_kit.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5270859431994819330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SSXa3l5LpFI/AAAAAAAACc0/l-NEVMqN0T8/s1600-h/Arduino_avr_serial_starter_kt.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 223px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SSXa3l5LpFI/AAAAAAAACc0/l-NEVMqN0T8/s320/Arduino_avr_serial_starter_kt.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5270859587506644050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt; oraz jego otwarty pierwowzór &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.freeduino.org/freeduino_open_designs.html"&gt;Freeduino&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SSXW-7QYu4I/AAAAAAAACck/YgRvBpM3o10/s1600-h/freeduino_avr_starter_kit.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 198px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SSXW-7QYu4I/AAAAAAAACck/YgRvBpM3o10/s320/freeduino_avr_starter_kit.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5270855315453688706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Dla lubiących własne przygody z lutownicą &lt;span style="font-weight:bold;"&gt;Arduino&lt;/span&gt; w działaniu - wesołe wprowadzenie do tematu:&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PeScmRwzQho&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/PeScmRwzQho&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;/center&gt;&lt;br /&gt;&lt;br /&gt;Przykładowe zabawki ;)&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;embed height="300" width="380" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://blip.tv/play/wkew8g0A" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;embed height="300" width="380" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://blip.tv/play/wkegzGEA" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;embed height="300" width="380" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://blip.tv/play/wkeilE8A" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;a href="http://blog.datasingularity.com/?p=50"&gt;Kontrolowanie Arduino zdalnie z formularza HTML&lt;/a&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;br /&gt;&lt;param value="http://www.youtube.com/v/Lv26TEB98_E&amp;rel=1" name="movie"/&gt;&lt;br /&gt;&lt;param value="transparent" name="wmode"/&gt;&lt;br /&gt;&lt;embed height="355" width="425" wmode="transparent" type="application/x-shockwave-flash" src="http://www.youtube.com/v/Lv26TEB98_E&amp;rel=1"/&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt; Temat zainteresował mnie otwartym podejściem do nauki programowania urządzeń wbudowanych. Wszystkie schematy oraz informacje konstrukcyjne są dostępne za darmo :-). &lt;a href="http://cgi.ebay.co.uk/m168-USB-Board-ARDUINO-Diecimila_W0QQitemZ130269016255QQcmdZViewItemQQptZLH_DefaultDomain_3?hash=item130269016255&amp;_trksid=p3286.c0.m14&amp;_trkparms=72%3A1300|66%3A2|65%3A12|39%3A1|240%3A1318"&gt;Tani&lt;/a&gt; hardware oraz rozbudowane &lt;a href="http://arduino.cc/en/Tutorial/HomePage"&gt;podręcznik&lt;/a&gt; i &lt;a href="http://www.arduino.cc/playground/Main/GeneralCodeLibrary"&gt;biblioteki&lt;/a&gt; w językach C, Java i &lt;a href="http://www.arduino.cc/playground/Interfacing/Python"&gt;Python&lt;/a&gt; do pobrania z sieci. Bogactwem otwartych rozwiązań jest także prostota użycia. Atutem jednakże są niezliczone &lt;a href="http://www.youtube.com/results?search_query=freeduino&amp;search_type="&gt;przykłady&lt;/a&gt; potwierdzające możliwości modułu. A dla chcących połączyć swój &lt;a href="http://www.3d-disco.com/arduino_blender.htm"&gt;system mikroprocesorowy z interfejsem 3D systemu animacyjnego Blender&lt;/a&gt; również się coś znajdzie :)&lt;br /&gt;&lt;br /&gt; Polecam poniższe materiały edukacyjne:&lt;br /&gt;&lt;a href="http://arduino.cc/en/Main/ArduinoBoardDuemilanove"&gt;The Arduino Duemilanove ("2009") is a microcontroller board based on the ATmega168&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arduino.cc/en/Main/ArduinoBoardSerial"&gt;Arduino Board - Serial Interface&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Main/DevelopmentTools"&gt;Development Tools&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Learning/Linux"&gt;Installing Arduino on Linux&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Linux/Ubuntu"&gt;Install Arduino on Ubuntu Linux&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Code/SimpleMessageSystem"&gt;SimpleMessageSystem - library for Arduino 0004 and up&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Interfacing/LinuxTTY"&gt;Arduino and Linux TTY&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://principialabs.com/arduino-pulse-width-modulation/"&gt;Arduino Pulse Width Modulation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://principialabs.com/arduino-python-4-axis-servo-control/"&gt;Arduino-Python 4-Axis Servo Control&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.laptop.org/go/PyDuino"&gt;Pyduino&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1199237936/0"&gt;Arduino-Python bridge&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1198961581 "&gt;Python with Arduino&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Main/ArduinoCoreHardware"&gt;Board Setup and Configuration&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://principialabs.com/joystick-control-of-a-servo/"&gt;Joystick Control of a Servo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=UKxdTvKqIRc&amp;NR=1"&gt;Arduino Noise Maker&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tigoe.net/pcomp/code/serial-communication"&gt;Serial communication&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://www.solarbotics.com/products/28920/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linki dla ciekawskich :-)&lt;br /&gt;&lt;a href="http://www.crystalfontz.com/forum/showthread.php?p=19562"&gt;PHP Library for controlling a 633(serial) LCD &amp; Keypad&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://www.varesano.net/blog/fabio/serial+rs232+connections+python&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blenderartists.org/forum/showthread.php?t=91324"&gt;Python serial tty console application&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pyvisa.sourceforge.net/"&gt;Controlling GPIB, RS232, and USB instruments - Python GPIB etc. support with PyVISA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://pyvisa.sourceforge.net/pyvisa.pdf&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pyvlab.sourceforge.net/"&gt;If you need to control gpib/visa-instruments, pyvLab could be the right thing for you.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://principialabs.com/articles/"&gt;Blog z niebanalnymi projektami elektronicznymi&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-548646748070762550?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/548646748070762550/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=548646748070762550' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/548646748070762550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/548646748070762550'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/11/arduino-freeduino-pyduino-szybki-start.html' title='Arduino, Freeduino, Pyduino - szybki start z mikrokontrolerami AVR'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SSXauikRgwI/AAAAAAAACcs/RrJ8rg6sHys/s72-c/Arduino_avr_starter_kit.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-6207625733548285296</id><published>2008-11-08T17:42:00.000+01:00</published><updated>2008-11-08T17:42:00.092+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java script'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='optymalizacja'/><title type='text'>Razor Optimizer - nowatorski projekt analizatora kodu Ajax w celu optymalizacji</title><content type='html'>Znalazłem dziś ciekawego newsa na temat projektu &lt;span style="font-weight:bold;"&gt;Razor Optimizer&lt;/span&gt;. Oto nowatorska idea optymalizacji kodu Ajax przy użyciu dedykowanego mechanizmu oraz serwera działającego na platformie &lt;span style="font-style:italic;"&gt;Java&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SRXAGwX3DKI/AAAAAAAACbQ/aqNsWvfbVBM/s1600-h/razor-optimizer-architecture.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 106px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SRXAGwX3DKI/AAAAAAAACbQ/aqNsWvfbVBM/s320/razor-optimizer-architecture.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5266326561576389794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Linki:&lt;br /&gt;&lt;a href="http://www.razorspeed.com/download/GettingStartedWithRazor.html"&gt;Getting Started with Razor&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.razorspeed.com/index.php/what-is-it/what-is-razor-optimizer"&gt;Razor Optimizer - a New Approach to Light Up the Web&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.razorspeed.com/customfiles/images/Razor-optimization-report.html"&gt;Razor Optimization Report Example&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.razorspeed.com/index.php/demo"&gt;Demos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ajaxian.com/archives/razor-optimizer-runtime-analysis-of-your-ajax-code-for-optimization"&gt;źródło&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-6207625733548285296?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/6207625733548285296/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=6207625733548285296' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6207625733548285296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6207625733548285296'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/11/razor-optimizer-nowatorski-projekt.html' title='Razor Optimizer - nowatorski projekt analizatora kodu Ajax w celu optymalizacji'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FKArYkQGfrY/SRXAGwX3DKI/AAAAAAAACbQ/aqNsWvfbVBM/s72-c/razor-optimizer-architecture.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3936345438147345126</id><published>2008-11-08T09:58:00.018+01:00</published><updated>2011-07-06T00:38:58.901+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lego'/><category scheme='http://www.blogger.com/atom/ns#' term='kreacja'/><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='projektowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='lego maindstorms'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='robotyka'/><title type='text'>LEGO Mindstorms - zbuduj robocika klepiąc kod Pythonica ;)</title><content type='html'>W tym tygodniu - 05.11.2008r - w auli wykładowej &lt;span style="font-style:italic;"&gt;UAM&lt;/span&gt; w &lt;span style="font-style:italic;"&gt;Poznaniu&lt;/span&gt; odbyła się prezentacja &lt;span style="font-weight:bold;"&gt;LEGO Maindstorms&lt;/span&gt;. Wykład był otwarty, więc aula gościła zainteresowanych wykładem dot. tematyki budowania robotów z klocków &lt;span style="font-weight:bold;"&gt;LEGO&lt;/span&gt;. &lt;br /&gt;Oto &lt;a href="http://www.poznan.linux.org.pl/wiki/index.php/Strona_g%C5%82%C3%B3wna"&gt;PLUG&lt;/a&gt;owa &lt;a href="http://www.poznan.linux.org.pl/wiki/index.php/Spotkania"&gt;strona wykładu&lt;/a&gt; oraz udostępnione &lt;a href="http://poznan.linux.org.pl/wyklad/materialy/20081105/pplug_lego.pdf"&gt;materiały&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pozwolę sobie na przedstawienie w postaci materiałów wideo zastosowań LEGO Mindstorms, po czym wrócę do opisywanej prezentacji.&lt;br /&gt;&lt;br /&gt;Sterowanie fabryką klocków samochodów z klocków LEGO&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GQ3AcPEPbH0&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/GQ3AcPEPbH0&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;/p&gt;&lt;br /&gt;Pojazd typu Segway (z efektem odwróconego wahadła)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/b3vDnwwBmgQ&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/b3vDnwwBmgQ&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;/p&gt;&lt;br /&gt;Układanie kostki rubika&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3QOvEG27Gt4&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/3QOvEG27Gt4&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;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-mZ0CXcTozY&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/-mZ0CXcTozY&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;/p&gt;&lt;br /&gt;Kusza z LEGO strzelająca piłkami&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4rXeO2rPgmY&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/4rXeO2rPgmY&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;/p&gt;&lt;br /&gt;Kreatywne rozwiązania z LEGO Mindstorms&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gXiql8Fm64A&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/gXiql8Fm64A&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;/p&gt;&lt;br /&gt;I najbardziej pocieszny przykład użcyia w prototypie podajnika papieru toaletowego&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QTsXlTKaFq0&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/QTsXlTKaFq0&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;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;Wstęp zacznę tym razem od filmu na temat ewolucji robotów.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;embed src="http://www.metacafe.com/fplayer/1206622/robot_evolution.swf" width="400" height="345" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;br&gt;&lt;font size = 1&gt;&lt;a href="http://www.metacafe.com/watch/1206622/robot_evolution/"&gt;Robot Evolution&lt;/a&gt; - &lt;a href="http://www.metacafe.com/"&gt;The most popular videos are here&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;--&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linki:&lt;br /&gt;&lt;a href="http://www.marioferrari.org/lego_mindstorm.html"&gt;Przykładowe projekty wraz ze zdjęciami realizacji oraz kodem źródłowym&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ai.pjwstk.edu.pl/wiki/index.php/Robot_szukaj%C4%85cy_%C5%9Bwiat%C5%82a_z_czujnikiem_odleg%C5%82o%C5%9Bci"&gt;Robot szukający światła z czujnikiem odległości&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mindstorms.pl/linki.html"&gt;Nieoficjalna strona legofana z wieloma linki&lt;/a&gt;&lt;br /&gt;&lt;a href="http://turbocnc.com/"&gt;TurboCNC - program do programowania maszyn i robotów z PC&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.rai.put.poznan.pl/index.php?option=com_content&amp;task=view&amp;id=26&amp;Itemid=31"&gt;Materiały poznańskiego kółka zainteresowań robotyką&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://news.lugnet.com/robotics/"&gt;&lt;br /&gt;Building, creating, and developing with added technologies: the LEGO MINDSTORMS™ RIS, other programmable bricks, vision systems, bar-code readers, radio controlled units, research sites, microcode / embedded programming, etc.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3936345438147345126?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3936345438147345126/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3936345438147345126' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3936345438147345126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3936345438147345126'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/11/lego-mindstorms-zbuduj-robocika-klepiac.html' title='LEGO Mindstorms - zbuduj robocika klepiąc kod Pythonica ;)'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-2454188213119681845</id><published>2008-11-07T19:17:00.002+01:00</published><updated>2008-11-07T21:26:17.740+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pomiary'/><category scheme='http://www.blogger.com/atom/ns#' term='1-wire'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='termometr'/><category scheme='http://www.blogger.com/atom/ns#' term='przystawki do PC'/><category scheme='http://www.blogger.com/atom/ns#' term='elektronika'/><title type='text'>Skutecznie proste pomiary temperatury w lodówce z iButton</title><content type='html'>Odgrzebałem kilka starych gratów z mojej elektronicznej walizki, gdyż jak z tematu wynika podejrzewam, że moja lodówka nie działa poprawnie :-) Swoje odkrycia zacznę od wzmianki o układach &lt;span style="font-style:italic;"&gt;iButton&lt;/span&gt;, o których tutaj będzie mowa. Istnieje wiele różnych układów od czujników temperatury po przełączniki, rejestratory temperatury, czujniki wilgotności, przetworniki analogowo-cyfrowe ADC i wiele innych praktycznych układów. Posiadają one unikalny - wypalany w fazie produkcji - identyfikator. Tą własność wykorzystuje każdy program obsługujący &lt;span style="font-style:italic;"&gt;1-wire&lt;/span&gt; oraz &lt;span style="font-style:italic;"&gt;iButton&lt;/span&gt;. Są to poniekąd gotowce, więc ważniejsze tutaj są interfejsy do magistrali 1-wire łączącej iButton ze światem zewnętrznym oraz rzecz jasna oprogramowanie :-) Podstawowymi cechami dobrego oprogramowania są niewątpliwie możliwość wyszukiwania urządzeń oraz bindowania rejestrów urządzeń na odpowiednie obiekty ze zmapowanymi obszarami pamięci dostępnej do odczytu/zapisu. Z takiej abstrakcji wyrasta kilka powszechnie znanych i lubianych projektów obsługujących tą technologię t.j. &lt;span style="font-weight:bold;"&gt;digitemp&lt;/span&gt;. Poniżej zawarte są przykłady wywołań z linii poleceń i stosowne komentarze.&lt;br /&gt;&lt;br /&gt;  Oto zdjęcie zabawki pierwszej, którą &lt;a href="http://owfs.org/index.php?page=com-ds9097-passive"&gt;jest&lt;/a&gt; &lt;a href="http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2820"&gt;zestaw startowy iButton kit&lt;/a&gt;. Jeden z &lt;a href="http://owfs.sourceforge.net/adapters.html"&gt;adapterów&lt;/a&gt; dla technologii &lt;a href="http://www.maxim-ic.com/products/ibutton/solutions/search.cfm"&gt;iButton&lt;/a&gt; tzw. pastylka &lt;br /&gt;&lt;a href="http://www.maxim-ic.com/appnotes.cfm/an_pk/1097"&gt;Using the 1-Wire® Public Domain Kit&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/1-Wire"&gt;protokół 1-wire wg wikipedii&lt;/a&gt;&lt;br /&gt;, czyli w zasadniczym mniemaniu elektronicznym miernikiem/rejestratorem temperatury. Ten starter Kit zawiera są są to następujące układy:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;DS2502/DS1982 1Kbit Add only memory&lt;/span&gt; - interfejs łączący port RS-232 z 1-wire dla iButton z dostępnym 1kB pamięci do wykorzystania&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://datasheets.maxim-ic.com/en/ds/DS1921H-DS1921Z.pdf"&gt;DS1921/H/Z Thermochron iButton&lt;/a&gt; - cyfrowy rejestrator temperatury z programowanymi alarmami w zakresie 0 do +45 stopni C (+/- 1 stopien C)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SRSCRpQaaTI/AAAAAAAACaA/iknGQWkxL2M/s1600-h/img_2717.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SRSCRpQaaTI/AAAAAAAACaA/iknGQWkxL2M/s320/img_2717.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265977103947032882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SRSIuCKtUUI/AAAAAAAACaY/u-4dUpYaBUo/s1600-h/img_2721.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SRSIuCKtUUI/AAAAAAAACaY/u-4dUpYaBUo/s320/img_2721.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265984188740096322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SRSkT_ZVriI/AAAAAAAACbI/XAuFtEgZUl8/s1600-h/ibutton.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 258px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SRSkT_ZVriI/AAAAAAAACbI/XAuFtEgZUl8/s320/ibutton.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5266014527645134370" /&gt;&lt;/a&gt;&lt;br /&gt;Przykład wywołania digitemp:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo digitemp_DS9097U -w -s /dev/ttyS0&lt;br /&gt;DigiTemp v3.3.2 Copyright 1996-2004 by Brian C. Lane&lt;br /&gt;GNU Public License v2.0 - http://www.brianlane.com&lt;br /&gt;Turning off all DS2409 Couplers&lt;br /&gt;..&lt;br /&gt;Devices on the Main LAN&lt;br /&gt;2103410000C034C4 : DS1921/H/Z Thermochron iButton&lt;br /&gt;091AAD62010000BB : DS2502/DS1982 1Kbit Add only memory&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Nieco skromniejszy - zrobiony w ok. 15 minut - czujnik temperatury oparty na kostce &lt;a href="http://datasheets.maxim-ic.com/en/ds/DS18S20.pdf"&gt;DS18S20&lt;/a&gt; - umożliwiającej pomiar temperatury w zakresie od -55 do + 125 stopni C. Realizacja ogólnie znana &lt;br /&gt;&lt;a style="display:inline;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSEfXzpBkI/AAAAAAAACaI/sCsj02H_WuQ/s1600-h/img_2719.jpg"&gt;&lt;img style="display:inline; margin:0px auto 10px; text-align:center; cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSEfXzpBkI/AAAAAAAACaI/sCsj02H_WuQ/s200/img_2719.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265979538804377154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="display:inline;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSGSDKmkvI/AAAAAAAACaQ/_3_V1BvaNHU/s1600-h/img_2720.jpg"&gt;&lt;img style="display:inline; margin:0px auto 10px; cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSGSDKmkvI/AAAAAAAACaQ/_3_V1BvaNHU/s200/img_2720.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265981508948497138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Przykład wywołania &lt;span style="font-style:italic;"&gt;digitemp&lt;/span&gt; z banalnym "na kolanie" robionym interfejsem:  &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ digitemp_DS9097 -w -s /dev/ttyS0&lt;br /&gt;DigiTemp v3.3.2 Copyright 1996-2004 by Brian C. Lane&lt;br /&gt;GNU Public License v2.0 - http://www.brianlane.com&lt;br /&gt;Turning off all DS2409 Couplers&lt;br /&gt;.&lt;br /&gt;Devices on the Main LAN&lt;br /&gt;28579B3C00000028 : DS18B20 Temperature Sensor&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Linki do API oraz oprogramowanie do komunikacji z czujnikami 1-wire (iButton)&lt;/span&gt; &lt;br /&gt;http://www.maxim-ic.com/products/ibutton/solutions/search.cfm?Action=DD&amp;id=207&lt;br /&gt;http://www.maxim-ic.com/products/ibutton/solutions/product.cfm?id=428&lt;br /&gt;http://www.maxim-ic.com/products/ibutton/solutions/company.cfm?id=181&lt;br /&gt;http://www.maxim-ic.com/products/ibutton/solutions/product.cfm?id=373&lt;br /&gt;http://www.maxim-ic.com/products/ibutton/solutions/product.cfm?id=389&lt;br /&gt;&lt;br /&gt;w tym &lt;span style="font-style:italic;"&gt;powalające&lt;/span&gt; projekty &lt;a href="http://sourceforge.net/search/?type_of_search=soft&amp;words=1-wire%20ibutton%201wire"&gt;OpenSource&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="OWFS -- 1-Wire file system (bohater niniejszego opisu)"&gt;http://sourceforge.net/projects/owfs/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/owtf/wiki/OWTF_Proposal_1"&gt;One Wire Temperature Finder (bohaterski kod od googla używany w opisie)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://sourceforge.net/dbimage.php?id=71236&lt;br /&gt;http://owfs.sourceforge.net/faq.html&lt;br /&gt;http://owfs.sourceforge.net/owpython.html&lt;br /&gt;http://www.pyzine.com/Issue007/Section_Articles/article_MobileDataCollection.html&lt;br /&gt;http://owfs.sourceforge.net/install.html&lt;br /&gt;http://www.jjoseph.org/misc_projects/1-wire_sensors.html&lt;br /&gt;http://www.kaboodle.com/jon_p/1-wire-electricity-consumption-measuerment.html&lt;br /&gt;http://stackoverflow.com/questions/113185/how-do-i-use-owfs-to-read-an-ibutton-temperature-logger&lt;br /&gt;http://www.jjoseph.org/index.php?option=com_staticxt&amp;staticfile=/machine24.html&lt;br /&gt;http://www.ourcoolhouse.com/monitor/monitor.htm&lt;br /&gt;http://stackoverflow.com/questions/113185/how-do-i-use-owfs-to-read-an-ibutton-temperature-logger&lt;br /&gt;http://www.jjoseph.org/index.php?option=com_staticxt&amp;staticfile=/machine24.html&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/pyonewire/"&gt;Python bindings and wrappers for accessing iButton devices on a 1-wire net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/umn-ds1923/"&gt;Java client for DS1923 iButton with server written in PHP for storage and visualization of data&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://sourceforge.net/dbimage.php?id=60310&lt;br /&gt;www.capgo.com/Resources/SoftwareDev/omap-owire.pdf&lt;br /&gt;http://oww.sourceforge.net/hardware.html&lt;br /&gt;http://www.codeproject.com/KB/cpp/ibuttoninterface.aspx&lt;br /&gt;http://www.audon.co.uk/1wire_humidity.html&lt;br /&gt;http://www.maxim-ic.com/products/1-wire/software/&lt;br /&gt;http://www.mrsoft.fi/ohj01en.htm&lt;br /&gt;http://www.digitemp.com/&lt;br /&gt;http://www.digitemp.com/images/screenshots/walk1wire.png&lt;br /&gt;http://www.digitemp.com/images/screenshots/init1wire.png&lt;br /&gt;http://elektroniikka.org/thermometer/?page=adapter&lt;br /&gt;http://www.maxim-ic.com/products/ibutton/software/1wire/images/screenshot.gif&lt;br /&gt;http://www.maxim-ic.com/quick_view2.cfm?go=part_number_search&amp;ss=DS1921&lt;br /&gt;&lt;a href="http://www.biral.com/met/wind/meteocomp.htm"&gt;Stacja pogodowa&lt;/a&gt;&lt;br /&gt;&lt;a href="http://owfs.org/index.php?page=remote-cache"&gt;Objaśnienie działania OWFS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jest tego na prawdę sporo jak na okres ok. 10-letniego istnienia technologii iButton.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OWFS - najpopularniejsze rozwiązanie obsługi magistrali 1-wire&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://owfs.org/uploads/images/bobeck.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 225px; height: 99px;" src="http://owfs.org/uploads/images/bobeck.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Uruchomienie serwera w trybie DEBUG:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo /opt/owfs/bin/owserver -d /dev/ttyS0 --8bit -p 127.0.0.1:40141 --Celsius  --foreground --error_print 2 --error_level 9&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Uruchomienie serwera w trybie normalnym z logowaniem błędów:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo /opt/owfs/bin/owserver -d /dev/ttyS0 --8bit -p 127.0.0.1:40141 --Celsius  --foreground --error_print 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Uruchomienie prostego klienta w języku Python, który wyświetli temperaturę z czujnika w stopniach Celsjusza:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#! /usr/bin/env python&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import ownet&lt;br /&gt;&lt;br /&gt;if len(sys.argv) != 3:&lt;br /&gt;    print 'temperatures.py server port'&lt;br /&gt;    sys.exit(1)&lt;br /&gt;&lt;br /&gt;r = ownet.Sensor('/', server=sys.argv[1], port=int(sys.argv[2]))&lt;br /&gt;e = r.entryList()&lt;br /&gt;s = r.sensorList()&lt;br /&gt;print 'r:', r&lt;br /&gt;print 'r.entryList():', e&lt;br /&gt;print 'r.sensorList():', s&lt;br /&gt;&lt;br /&gt;for x in r.sensors():&lt;br /&gt;    if hasattr(x, 'temperature'):&lt;br /&gt;        print x, x.temperature&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;$ python temperatures.py 127.0.0.1 40141&lt;br /&gt;&lt;br /&gt;Dla tych, którzy wolą www istnieje możliwość postawienia serwera www komendą:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/opt/owfs/bin/owhttpd -d /dev/ttyS0 --8bit -p 127.0.0.1:40141 --Celsius  --foreground --error_print 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Wówczas w przeglądarce wpisujemy http://127.0.0.1:40141/ i widzimy:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SRSZMYqH1jI/AAAAAAAACao/--In6XjDXgQ/s1600-h/settings.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 283px; height: 320px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SRSZMYqH1jI/AAAAAAAACao/--In6XjDXgQ/s320/settings.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5266002302359557682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSgk9yT3VI/AAAAAAAACa4/0pnp3_ZN66c/s1600-h/owhttpd__strona_glowna.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSgk9yT3VI/AAAAAAAACa4/0pnp3_ZN66c/s320/owhttpd__strona_glowna.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5266010421224267090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSgc2D75VI/AAAAAAAACaw/pGSj-iZbQ1A/s1600-h/owhttpd__podglad_informacji_o_podlaczonym_urzadzeniu.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSgc2D75VI/AAAAAAAACaw/pGSj-iZbQ1A/s320/owhttpd__podglad_informacji_o_podlaczonym_urzadzeniu.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5266010281711756626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSgqQhR_YI/AAAAAAAACbA/15OzWlmgx4s/s1600-h/owhttpd__widok_wlasciwosci_urzadzenia.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/SRSgqQhR_YI/AAAAAAAACbA/15OzWlmgx4s/s320/owhttpd__widok_wlasciwosci_urzadzenia.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5266010512152460674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://users.elis.ugent.be/~wheirman/php/temperature/screenshot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 364px; height: 213px;" src="http://users.elis.ugent.be/~wheirman/php/temperature/screenshot.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SRSW-aPi8eI/AAAAAAAACag/eOoHwI7q-Gg/s1600-h/wxStationGraphAll.png.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 298px; height: 320px;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SRSW-aPi8eI/AAAAAAAACag/eOoHwI7q-Gg/s320/wxStationGraphAll.png.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5265999863243534818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dla chcących rozszerzyć wiedzę polecam ten projekt &lt;a href="http://www.klein.com/thermd/thermd.cgi"&gt;thermd&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-2454188213119681845?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/2454188213119681845/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=2454188213119681845' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2454188213119681845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2454188213119681845'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/11/skutecznie-proste-pomiary-temperatury-w.html' title='Skutecznie proste pomiary temperatury w lodówce z iButton'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SRSCRpQaaTI/AAAAAAAACaA/iknGQWkxL2M/s72-c/img_2717.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-5233326790448188415</id><published>2008-10-29T23:35:00.008+01:00</published><updated>2011-07-06T00:36:41.360+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gry'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='klasyka'/><title type='text'>Tetris - jak niewiele kodu potrzeba do szczęścia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-41c_8uBh-sE/ThOR5u40k9I/AAAAAAAAFcs/4o0X0EjjKnM/s1600/tetris.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 225px; height: 224px;" src="http://4.bp.blogspot.com/-41c_8uBh-sE/ThOR5u40k9I/AAAAAAAAFcs/4o0X0EjjKnM/s320/tetris.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5626000780540810194" /&gt;&lt;/a&gt;&lt;br /&gt;  Przyglądając się różnym kodom źródłowym wielu dziwacznych czasem aplikacji czy tez serwerów nie zdajemy sobie sprawy, że tak niewiele kodu potrzeba, aby zapomnieć na chwilę, że komputer to nie tylko maszyna licząca, ale też zabawka :-) Dzisiejszym tematem jest gra &lt;span style="font-weight:bold;"&gt;tetris&lt;/span&gt;, która towarzyszy historii komputerów od dawien dawna. Chciałbym zobrazować jaki &lt;span style="font-style:italic;"&gt;prosty&lt;/span&gt; algorytm przyczynił się do popularyzacji gierek typu &lt;span style="font-style:italic;"&gt;tetris&lt;/span&gt; jako edukacyjny element dla programistów oraz zabawka dla nas wszystkich.&lt;br /&gt;&lt;br /&gt; Jak nie trudno się domyślić gra &lt;span style="font-style:italic;"&gt;tetris&lt;/span&gt; została napisana w różnych językach programowania od asemblera, poprzez BASIC, FORTRAN, Pascal, C, C+, Python, PHP, Java, Erlang oraz wiele egzotycznych.&lt;br /&gt;&lt;br /&gt;Oto klasyczna gra tetris w różnych językach programowania:&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/4bricks/&lt;br /&gt;&lt;br /&gt;http://www.katalog.pogodzinach.net/link/23479,ciapek_pl/tetris_php.html&lt;br /&gt;&lt;br /&gt;http://survex.com/~olly/dsm_rheolism/explanation.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.ciapek.pl/index.php?go=g_tetris&amp;ka=gry&lt;br /&gt;&lt;br /&gt;http://www.johnymas.info/index.php?stran=tetris&lt;br /&gt;&lt;br /&gt;http://www.javascripter.net/games/tetris/game.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-5233326790448188415?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/5233326790448188415/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=5233326790448188415' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5233326790448188415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5233326790448188415'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/10/tetris-jak-niewiele-kodu-potrzeba-do.html' title='Tetris - jak niewiele kodu potrzeba do szczęścia'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-41c_8uBh-sE/ThOR5u40k9I/AAAAAAAAFcs/4o0X0EjjKnM/s72-c/tetris.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3095461478608574944</id><published>2008-10-29T00:39:00.008+01:00</published><updated>2011-07-06T00:30:03.803+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='narzędzia'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='Google API'/><title type='text'>Google API - sprawny kod, który rozdają za nic</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-GInxA0Vf3Ho/ThOQNP83A6I/AAAAAAAAFck/UmmoF7kNn-I/s1600/google-api.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 250px; height: 252px;" src="http://1.bp.blogspot.com/-GInxA0Vf3Ho/ThOQNP83A6I/AAAAAAAAFck/UmmoF7kNn-I/s320/google-api.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5625998916810376098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;  Na stronie &lt;a href="http://code.google.com/apis/ajax/"&gt;google API&lt;/a&gt; znajdziemy kilka istotnych linków do konkretnych serwisów sieciowych promowanych w ostatnim czasie przez giganta.&lt;br /&gt;&lt;br /&gt;  Skoro masa firm trzecich potrafi utrzymywać się z tego, że używają Google Translation API lub Google Adwords API, do tego dodając MUSUPy bazujące na Google Maps API, wychodzi nam bardzo złożona kanapka, którą tylko wystarczy mądrze wykorzystać :)&lt;br /&gt;&lt;br /&gt; Czekam z niecierpliwością na Open Office pracujący on-line w przeglądarce z wymarzonym API do arkusza kalkulacyjnego, aby opierać swoje DLSe na takich rozwiązaniach bazujących na np: Google Spreadsheets API :)&lt;br /&gt;&lt;br /&gt;Oto kilka z nich:&lt;br /&gt;http://code.google.com/apis/ajaxlibs/documentation/#AjaxLibraries&lt;br /&gt;http://code.google.com/apis/ajax/&lt;br /&gt;http://code.google.com/apis/ajaxlibs/documentation/#mootools&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3095461478608574944?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3095461478608574944/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3095461478608574944' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3095461478608574944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3095461478608574944'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/10/google-api-sprawny-kod-ktory-rozdaja-za.html' title='Google API - sprawny kod, który rozdają za nic'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-GInxA0Vf3Ho/ThOQNP83A6I/AAAAAAAAFck/UmmoF7kNn-I/s72-c/google-api.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-5324837280192918947</id><published>2008-10-26T23:43:00.000+01:00</published><updated>2008-11-07T18:15:33.172+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='Guido von Robot'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='symulator'/><category scheme='http://www.blogger.com/atom/ns#' term='Gvr'/><title type='text'>Guido von Robot - prosty symulator robota w Pythonie</title><content type='html'>&lt;span style="font-weight:bold;"&gt;GvR&lt;/span&gt; (Guido von Robot) to niewątpliwie kolejna alternatywa programowania przy pomocy żółwia analogicznie jak w języku &lt;span style="font-style:italic;"&gt;LOGO&lt;/span&gt;. Istnieje jednak banalna różnica, która polega na zawężeniu zastosowania &lt;span style="font-style:italic;"&gt;GvR&lt;/span&gt; do pisania algorytmu dla prostego robota wykorzystując składnie języka &lt;a href="http://python.org"&gt;Python&lt;/a&gt;. Autor zminimalizował ilość zdefiniowanych funkcji, instrukcji oraz logikę do programowania robota. W założeniach programu jest edukacja dzieci i młodzieży - jako wstęp do podstaw programowania banalnych robotów.&lt;br /&gt; O ile chcecie pobawić się w projektowanie algorytmu działania prostego robota oraz podejrzeć działanie algorytmu na własnym torze przeszkód to jest &lt;span style="font-style:italic;"&gt;zabawka&lt;/span&gt; dla was. &lt;br /&gt;&lt;br /&gt;Do dyspozycji jest pięć prymitywnych instrukcji:&lt;br /&gt;&lt;blockquote&gt;1. move&lt;br /&gt;   2. turnleft&lt;br /&gt;   3. pickbeeper&lt;br /&gt;   4. putbeeper&lt;br /&gt;   5. turnoff&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dodatkowo możliwe jest używanie osiemnastu przygotowanych poniższych instrukcji specjalnych:&lt;br /&gt;&lt;blockquote&gt;1. front_is_clear&lt;br /&gt;   2. front_is_blocked&lt;br /&gt;   3. left_is_clear&lt;br /&gt;   4. left_is_blocked&lt;br /&gt;   5. right_is_clear&lt;br /&gt;   6. right_is_blocked&lt;br /&gt;   7. next_to_a_beeper&lt;br /&gt;   8. not_next_to_a_beeper&lt;br /&gt;   9. any_beepers_in_beeper_bag&lt;br /&gt;  10. no_beepers_in_beeper_bag&lt;br /&gt;  11. facing_north&lt;br /&gt;  12. not_facing_north&lt;br /&gt;  13. facing_south&lt;br /&gt;  14. not_facing_south&lt;br /&gt;  15. facing_east&lt;br /&gt;  16. not_facing_east&lt;br /&gt;  17. facing_west&lt;br /&gt;  18. not_facing_west&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Powyższe instrukcje podzielić można na kilka grup:&lt;br /&gt;&lt;blockquote&gt;1. testujące obecność ściany &lt;span style="font-style:italic;"&gt;wall&lt;/span&gt;&lt;br /&gt;  2. testujące obecność znacznika &lt;span style="font-style:italic;"&gt;beeper&lt;/span&gt;, &lt;br /&gt;  3. testujące kierunk położenia (funkcje kompasu)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Możliwe jest wykorzystanie następujących instrukcji warunkowych:&lt;br /&gt;&lt;pre&gt;if test:&lt;br /&gt;    instrukcje&lt;br /&gt;&lt;br /&gt;if test:&lt;br /&gt;    instrukcje&lt;br /&gt;else:&lt;br /&gt;    instrukcje&lt;br /&gt;&lt;br /&gt;if test:&lt;br /&gt;    instrukcje&lt;br /&gt;elif test:&lt;br /&gt;    instrukcje&lt;br /&gt;...&lt;br /&gt;elif test:&lt;br /&gt;    instrukcje&lt;br /&gt;else:&lt;br /&gt;    instrukcje&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;oraz poniższych pętli:&lt;br /&gt;&lt;pre&gt;do dodatnia_liczba:&lt;br /&gt;    instrukcje&lt;br /&gt;&lt;br /&gt;while test:&lt;br /&gt;    instrukcje&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Co najważniejsze możliwe jest tworzenie własnych funkcji, których nazwy zawerają wyłącznie ltery i podkreślnik:&lt;br /&gt;&lt;pre&gt;define nowa_nazwa_funkcji:&lt;br /&gt;    instrukcje&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Całość oparta jest o dwa edytory tekstowe, w których definiujemy świat dla robota oraz piszemy algorytm jego działania. Interfejs graficzny jest maksymalnie uproszczony i pozwala na podglądanie w pracy krokowej oraz ciągłej działania stworzonego robota w uprzednio zdefiniowanym świecie. Dla wygody istnieje możliwość narysowania swojego świata w trybie graficznym. Chcąc zacząć zabawę musimy zainstalować sobie aplikację GvR np:&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install gvr&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Oto przykładowy kod mojego świata oraz algorytm działania prymitywnego robota:&lt;br /&gt;&lt;br /&gt;Kod świata:&lt;br /&gt;&lt;pre&gt;Robot 4 3 N 0&lt;br /&gt;&lt;br /&gt;Beepers 4 7 1&lt;br /&gt;Beepers 4 2 2&lt;br /&gt;Beepers 4 4 3&lt;br /&gt;Beepers 7 2 4&lt;br /&gt;Beepers 2 2 5&lt;br /&gt;Beepers 7 2 6&lt;br /&gt;&lt;br /&gt;Wall 2 6 N&lt;br /&gt;Wall 2 4 N&lt;br /&gt;Wall 5 4 N&lt;br /&gt;Wall 5 4 W&lt;br /&gt;Wall 10 4 W&lt;br /&gt;Wall 4 10 W&lt;br /&gt;Wall 4 10 S&lt;br /&gt;Wall 5 10 S&lt;br /&gt;Wall 7 9 S&lt;br /&gt;Wall 7 9 W&lt;br /&gt;Wall 8 8 W&lt;br /&gt;Wall 6 10 S&lt;br /&gt;Wall 5 8 S&lt;br /&gt;Wall 8 1 W&lt;br /&gt;Wall 9 2 W&lt;br /&gt;Wall 8 3 W&lt;br /&gt;Wall 6 4 N&lt;br /&gt;Wall 6 3 N&lt;br /&gt;Wall 8 2 N&lt;br /&gt;Wall 8 4 N&lt;br /&gt;Wall 8 4 S&lt;br /&gt;Wall 8 5 S&lt;br /&gt;Wall 8 2 S&lt;br /&gt;Wall 9 4 S&lt;br /&gt;Wall 1 2  S&lt;br /&gt;Wall 4 2  S&lt;br /&gt;wall 3 10 N&lt;br /&gt;wall 2 10 N&lt;br /&gt;wall 1 10 N&lt;br /&gt;wall 8 6 N&lt;br /&gt;wall 8 7 N&lt;br /&gt;wall 9 7 E&lt;br /&gt;wall 9 8 N&lt;br /&gt;wall 8 9 E&lt;br /&gt;wall 8 9 N&lt;br /&gt;wall 7 10 E&lt;br /&gt;wall 6 10 E&lt;br /&gt;wall 7 10 N&lt;br /&gt;wall 9 8 E&lt;br /&gt;wall 10 6 N&lt;br /&gt;wall 11 6 N&lt;br /&gt;wall 11 6 E&lt;br /&gt;wall 11 5 N&lt;br /&gt;wall 10 5 E&lt;br /&gt;wall 10 5 N&lt;br /&gt;wall 11 5 E&lt;br /&gt;wall 11 4 E&lt;br /&gt;wall 11 3 E&lt;br /&gt;wall 11 2 N&lt;br /&gt;wall 10 3 N&lt;br /&gt;wall 10 1 N&lt;br /&gt;wall 10 1 E&lt;br /&gt;wall 11 2 E&lt;br /&gt;wall 11 1 E&lt;br /&gt;wall 5 6 E&lt;br /&gt;wall 6 5 N&lt;br /&gt;wall 2 8 E&lt;br /&gt;wall 2 7 N&lt;br /&gt;wall 1 10 E&lt;br /&gt;wall 2 10 E&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Kod działania robota:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;define turn_unblocked:&lt;br /&gt;    if front_is_blocked:&lt;br /&gt;        while front_is_blocked:&lt;br /&gt;            turnleft&lt;br /&gt;&lt;br /&gt;define turn_from_while:&lt;br /&gt;    if front_is_clear:&lt;br /&gt;        if next_to_a_beeper:&lt;br /&gt;            turnleft&lt;br /&gt;&lt;br /&gt;do 1000:&lt;br /&gt;    turn_from_while&lt;br /&gt;&lt;br /&gt;    if next_to_a_beeper:&lt;br /&gt;        pickbeeper&lt;br /&gt;        if front_is_blocked:&lt;br /&gt;            turn_unblocked&lt;br /&gt;        else:&lt;br /&gt;            move&lt;br /&gt;&lt;br /&gt;    if front_is_blocked:&lt;br /&gt;        turn_unblocked&lt;br /&gt;    else:&lt;br /&gt;        if any_beepers_in_beeper_bag:&lt;br /&gt;                putbeeper&lt;br /&gt;        move&lt;br /&gt;&lt;br /&gt;move&lt;br /&gt;&lt;br /&gt;turnoff&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Tak wygląda zainstalowana i działająca aplikacja &lt;span style="font-style:italic;"&gt;GvR&lt;/span&gt;:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SQ3o0tthazI/AAAAAAAACZ0/zVQ-zI3X0yY/s1600-h/Guido_von_Robot__screenshot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SQ3o0tthazI/AAAAAAAACZ0/zVQ-zI3X0yY/s320/Guido_von_Robot__screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5264119531787348786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Linki:&lt;br /&gt; http://gvr.sourceforge.net/about.php&lt;br /&gt; http://rur-ple.sourceforge.net/en/rur.htm&lt;br /&gt; http://gvr.sourceforge.net/lessons/rfrank/&lt;br /&gt; http://pyrorobotics.org/?page=Robot_20Simulators&lt;br /&gt; http://en.wikipedia.org/wiki/Karel_the_robot&lt;br /&gt; http://en.wikipedia.org/wiki/Robotics&lt;br /&gt; http://www.nebomusic.net/computerhelp.html&lt;br /&gt; http://bricxcc.sourceforge.net/nbc/&lt;br /&gt; http://mindstorms.lego.com/Overview/NXTreme.aspx&lt;br /&gt; http://www.youtube.com/watch?v=uLomAePdPII&amp;NR=1&lt;br /&gt; http://www.eres.alpha.pl/elektronika/articles.php?cat_id=12&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-5324837280192918947?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/5324837280192918947/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=5324837280192918947' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5324837280192918947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5324837280192918947'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/11/guido-von-robot-prosty-symulator-robota.html' title='Guido von Robot - prosty symulator robota w Pythonie'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SQ3o0tthazI/AAAAAAAACZ0/zVQ-zI3X0yY/s72-c/Guido_von_Robot__screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-2909290563269188531</id><published>2008-10-23T19:27:00.013+02:00</published><updated>2008-10-24T00:33:05.674+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='testowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='konsekwentne kodowanie'/><title type='text'>Konsekwentne kodowanie i testowanie aplikacji internetowych</title><content type='html'>&lt;span style="font-style:italic;"&gt;Wymiatający jest kod, który działa, ale taki, który działa w IE6 potrafi wymiatać podwójnie ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Rozpoczynający dzisiejszą wypowiedź &lt;span style="font-style:italic;"&gt;cytat/frazes&lt;/span&gt; nie jest przechwalaniem się jakiej to przeglądarki używam, ale raczej powieloną na mój sposób przestrogą, że w określonych okolicznościach warto pomyśleć o archaizmach. Ponoć każdy wytwór ludzkiej wyobraźni ma swój kres, gdyż rodzi się kolejny. Każda kolejna imaginacja może być jakościowo inna. Każdy produkt powinien pasować do marki i ją reprezentować. Moim zdaniem IE6 pasuje idealnie do marki M$ i ją także świetne reprezentuje.&lt;br /&gt; Tak sobie spojrzałem i nawet specjaliści od testowania posiadają ratujący ich przed IE6 komentarz, który pozwolę sobie przytoczyć:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&lt;a href="http://www.testerzy.pl/porownanie-przegladarek-ie-firefox-opera"&gt;Testerzy kontra przeglądarki&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Starając się dotrzeć do jak największej ilości odbiorców, dostarczając najlepszą jakość Testerzy.pl wyświetlają się poprawnie w:&lt;br /&gt;&lt;br /&gt;    * IE 7.0 i 8.0&lt;br /&gt;    * FireFox 2.0 i 3.0&lt;br /&gt;    * Opera 9.5 i wcześniejsze&lt;br /&gt;&lt;br /&gt; Robimy wiele aby wyświetlać się poprawnie również w IE 6.0 jednak wymaga to od nas anielskiej cierpliwości i testów po każdej aktualizacji strony. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Oczywiście jest to przykłądowy i zupełnie przypadkowo odnaleziony komunikat informujący o tym, że nawet profesjonaliści od kontroli jakości mogą mieć IE6 w d.... bo powodów jest cała masa i rozmawiać można o nich wypijając przy tym skrzynkę ciemnego miodowego trunku. Oczywiście są tacy, którzy stają w obronie i &lt;span style="font-style:italic;"&gt;udają, że im się udaje&lt;/span&gt; sprostać wymaganiom IE6. Ludzie, nie tędy droga :) Gdzie są wasze wymagania, założenia projektowe, konsekwencja w trzymaniu się założeń, hahahaaa ... niektórzy skomentują to śmiechem, ale wiele wielkich firm kupuje produkty działające tylko pod jedną przeglądarką. Pytanie, czy tylko nie są aplikacje intranetowe, w których problem jest z góry załatwiony.&lt;br /&gt;&lt;br /&gt;  W dobie ogólnej GPL, GPL2, *BSD  i wszelkichj OpenSourcowych dowolności niekiedy zapominamy o tym, że pisząc coś dla publikacji w internecie warto się liczyć ze statystykami. Na co dzień pojawiają się wielce znaczące artykuły, które podają udział przeglądarek w rynku, lecz to często poszlaki. Nie jest tajemnicą, że tylko giganci internetowi mogą takie realne statystyki posidać, kiedy na ich portalach i stronach są treści różne i przyciągają użytkowników w różnym wieku oraz wszelakich zainteresowaniach. Ta wiedza tajemna jest też na sprzedaż i nie oszukujmy się, że z koleji inni giganci ją po prostu kupują i artykuły jakie na jej podstawie się rodzą będą bardziej na tą a mniej na tą psioczące i nie koniecznie obiektywne. Chciałbym pominąć artykuły zlecane przez M$, bo to są sztuczki marketingowe, ale nie pomijam bo to są działania skutecznie utrudniające życie teserom i deweloperom aplikacji internetowych. O tych właśnie grupach zawodowych będzie poniżej mowa :) &lt;br /&gt;&lt;br /&gt; Z deweloperką aplikacji internetowych spotykam się na co dzień i z testerami także. Każdy ma swój zakres obowiązków oraz zakreśla fragment koła wokół którego obraca się &lt;span style="font-style:italic;"&gt;internet&lt;/span&gt;. Patrząc z punktu widzenia praktycznego jeden i drugi boryka się często z problemem zakresów, w ramach których jest coś realizowane. Tak też można egzystować, ale pytanie jak długo ... pewnie do pierwszego &lt;span style="font-style:italic;"&gt;grubego&lt;/span&gt; klienta, który ewidentnie powie &lt;span style="font-style:italic;"&gt;dość&lt;/span&gt; i straty spowodują koniec &lt;span style="font-style:italic;"&gt;zabawy&lt;/span&gt;. Dokładniej, czy czasem robienie aplikacji bez określonych wytycznych nie jest &lt;span style="font-style:italic;"&gt;zabawą&lt;/span&gt; ? Na to pytanie spróbujmy sobie sami odpowiedzieć ...&lt;br /&gt;&lt;br /&gt; Osobiście zachęcam do kartki papieru, ołówka i trzeźwego myślenia w kwestiach zasadniczych, które dotyczą przyszłego projektu. Wiele spraw, które założymy na wstępie pojawi się w trakcie, a te których nie założyliśmy zależnie od naszej konsekwencji pewnie też się pojawią. Trzymanie się ram jest o tyle ciężkim zajęciem, że zarówno indywidualnie jak i w grupie projektowej jest mnóstwo zajęć rozpraszających. Także pośrednio jesteśmy skazani na robienie &lt;span style="font-style:italic;"&gt;wszystkiego i niczego&lt;/span&gt; pod warunkiem, że wiemy co znaczy &lt;span style="font-weight:bold;"&gt;&lt;a href="http://pl.wikipedia.org/wiki/Konsekwencje_nadmiernego_wysi%C5%82ku"&gt;konsekwencja&lt;/a&gt;&lt;/span&gt;. Dzięki niej wiele projektów jest kończonych na czas i ich jakość jest na wysokim poziomie. &lt;br /&gt;Pomyślałem, że umieszczę link do wikipedii, bo nam wszystkim się przyda. Przypominanie sobie o niej uratowało niejeden projekt, więc zachęcam do &lt;span style="font-style:italic;"&gt;kodowania konsekwentnego&lt;/span&gt;, któro po &lt;span style="font-style:italic;"&gt;kodowaniu zwinnym&lt;/span&gt; ma tą zaletę, że nikt nam nie zarzuci, że coś mu nie działa w IE6 :-)&lt;br /&gt;&lt;br /&gt;Kilka linków:&lt;br /&gt;&lt;a href="http://www.testerzy.pl/testowanie-w-agile-2"&gt;Testowanie w agile 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.testerzy.pl/porownanie-przegladarek-ie-firefox-opera"&gt;Wojna przeglądarek&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ranking.pl/index.php?page=Ranks:RanksPage&amp;stat=22|OW"&gt;Przeglądarki używane przez internautów łączących się z polskimi witrynami z obszaru Polski. Ranking jest tworzony na podstawie liczby odsłon. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://agiletesting.blogspot.com/2005/11/exciting-times-in-python-testing-world.html"&gt;Exciting times in python testing world&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pycheesecake.org/wiki/PythonTestingToolsTaxonomy"&gt;Python Testing Tools Taxonomy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vallista.idyll.org/~grig/articles/"&gt;Agile Testing Articles and Tutorials&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-2909290563269188531?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/2909290563269188531/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=2909290563269188531' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2909290563269188531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/2909290563269188531'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/10/konsekwentne-kodowanie-i-testowanie.html' title='Konsekwentne kodowanie i testowanie aplikacji internetowych'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3914960798429367739</id><published>2008-10-22T01:48:00.009+02:00</published><updated>2008-10-22T01:58:38.536+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='konferencje'/><category scheme='http://www.blogger.com/atom/ns#' term='PyCOn 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>PyCon 2008 Rybnik - wśród przeróżnych Pythonów</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/SP5inX0NVsI/AAAAAAAACQ8/YjGJJgCnBhY/s1600-h/pycon_2008_konferencja_rybnik.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SP5inX0NVsI/AAAAAAAACQ8/YjGJJgCnBhY/s320/pycon_2008_konferencja_rybnik.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259749843362731714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://marcinbielak.blogspot.com/2008/09/pyc.html"&gt;Zapowiadana podróż do Rybnika&lt;/a&gt;, gdzie odbyła się konferencja PyCon2008 uwieńczona została sukcesem w postaci świeżego spojrzenia na kilka bieżących technologii skojarzonych z językiem programowania &lt;a href="http://python.org"&gt;Python&lt;/a&gt;. Oto moje trofea :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SP5W5iRTc1I/AAAAAAAACQs/6onc7AN3TVg/s1600-h/img_2013.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SP5W5iRTc1I/AAAAAAAACQs/6onc7AN3TVg/s320/img_2013.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5259736961267233618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Być może nieco szczupłe będą moje notatki w porównaniu do wielkości tematów poruszanych na konferencji. Tak się złożyło, że uczestniczyłem we wszystkich &lt;a href="http://liwo.polsl.pl/pycon-pl/agenda"&gt;wykładach&lt;/a&gt; i udawało mi się zadawać konstruktywne pytania prelegentom, z których snuję sobie wnioski. Jest ich kilka i chcę się nimi podzielić:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;nie jest prawdą, że Python to niszowy język programowania - wręcz przeciwne w porównaniu do znanego wszystkim gimnazjalistom (i nie tylko) PHP - jest tylko słabo wypromowany (nie pomijam oczywiście rekomendacji firmy &lt;a href="http://google.com"&gt;google.com&lt;/a&gt; ) i dający duże możliwości prezentacji naszych pomysłów pod konsolą, na stronie www, w postaci aplikacji desktopowej, w urządzeniach wbudowanych, telefonach komórkowych i okazuje się, że również w laboratoriach badawczych/naukowych.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;jest prawdą, że Python ma słabą społeczność w Polsce bo nie ważne wg. jakiej metryki byśmy to  mierzyli ponad 100 osób chętnych na spotkanie w jednym miejscu i łaknący wymiany doświadczeń to skromnie ... ale to jest pierwsza impreza w Polsce pod dumnym hasłem &lt;a href="http://liwo.polsl.pl/pycon-pl"&gt;PyCon&lt;/a&gt;, natomiast jest to druga tej skali obok poznańskiego &lt;a href="http://rupy.wmid.amu.edu.pl/"&gt;RuPy&lt;/a&gt; i jest to dla mnie istotne, że temat jest godny konferencji. Są też takie języki programowania, w których programiści zabijają się o zlecenia i niechybnie zapominają o higienie pracy, konsekwencji w kodowaniu - bo tłumaczą się czasem, że np. język narzuca im niechlujstwo, zbyt wiele rozwiązań, brakuje dobrze napisanych bibliotek, etc ...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;jest sprawą oczywistą, że skoro mowa o Python, to też mowa o sporych możliwościach, czyli przetestowanych zbiorach modułów, które wspiera społeczność na całym świecie, kilku liczących się &lt;span style="font-style:italic;"&gt;frameworkach&lt;/span&gt; i sukcesywnych wdrożeniach różnych aplikacji, między innymi webowych. Mam na myśli &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;, o którym wspomniał na tej konferencji &lt;a href="http://www.slideshare.net/zenzire/wstep-do-django-10-2008oct18-presentation/"&gt;Marcin Mierzejewski&lt;/a&gt; (polecam też podstawy Django, które przygotował Marcin Kaszyński na &lt;a href="http://www.slideshare.net/guest18915c/an-app-in-a-week?src=embed"&gt;Django - EuroPython 2008&lt;/a&gt;) i do tego CMS z możliwością rozbudowy &lt;a href="http://plone.org/"&gt;Plone&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;bo Python też trochę wyznaje filozofię &lt;a href="http://ubuntu.pl"&gt;Ubuntu&lt;/a&gt;, tzn. tej słynącej dystrybucji Linux jest niejako elementarną częścią, bo przejmuje rolę w Desktopach dość dopracowanej obsługi notyfikacji, obsługi komunikatów systemowych i uruchamiania jakże istotnych apletów ;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;traktuje obiektowość minimalistycznie - w kilku linijkach napiszemy dość konkretne funkcjonalności (np: serwer, który nasłuchuje, udostępnia usługi w sieci i wykonuje odpowiednie polecenia w wątkach, wyzwala procesy cykliczne, generuje raporty w PDF i wysyła na e-mail, ftp, ssh), ale specjalnie dla zaniepokojonych programistów &lt;span style="font-style:italic;"&gt;Java&lt;/span&gt; będą niebawem typowe interfejsy, które już dziś można tworzyć w określony sposób. Dodatkowo Python 3000 to nie będzie akcja typu piszę w PHP4 a teraz w PHP5 - a za rok się przesiadam na PHP6, bo providerzy też już go mają :) - społeczność poszła krok dalej i przeprowadzona będzie formalna migracja pozwalająca przetestować, czy aplikacje w Python 2.4 i 2.5 będą działały w Python 3000 ... a to już mnie przekonuje do zabawy więcej w węże a mniej w słonie :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;okazuje się, że &lt;a href="http://docs.python.org/library/"&gt;spora jest liczba dopracowanych bibliotek standardowych&lt;/a&gt; do pisania skryptów oraz niezależnych projektów OpenSource  t.j. &lt;a href="http://sourceforge.net/search/?type_of_search=soft&amp;words=python"&gt;Sourceforge.net&lt;/a&gt;, &lt;a href="http://koders.com/info.aspx?page=LanguageReport&amp;la=python"&gt;koders.com&lt;/a&gt;, &lt;/li&gt;&lt;br /&gt;&lt;li&gt;szybki start programowania i sprzyjająca kodowaniu w &lt;span style="font-style:italic;"&gt;konwencjonalnym stylu napisana dokumentacja&lt;/span&gt; np: Python Docs &lt;a href="http://pythonpaste.org/webob/"&gt;WebOb&lt;/a&gt;. Wybór języka Python przez &lt;a href="http://www.python.org/about/success/usa/"&gt;NASA&lt;/a&gt; też nie był przypadkowy.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;możliwość pisana wirtualnych interpretatorów przy pomocy samego języka i osadzania go w innych to taki kosmos, jaki już oferuje Python. Chcąc dla przykładu napisać sobie dedykowaną funkcjonalność &lt;a href="http://pl.wikipedia.org/wiki/Garbage_collection"&gt;garbage collection&lt;/a&gt; nie będziemy osamotnieni, bo projekt omawiany na konferencji &lt;a href="http://en.wikipedia.org/wiki/PyPy"&gt;PyPy&lt;/a&gt; nam to z miejsca umożliwia&lt;/li&gt;&lt;br /&gt;&lt;li&gt;moje ulubione &lt;span style="font-style:italic;"&gt;testy rozmyte&lt;/span&gt; i wszelakie inne pisze się w Pythonie po prostu konsekwentne i z dużym naciskiem na stosowanie framworków tzn. znajdziemy swój ulubiony sposób testowania jednostkowego, funkcyjnego, regresyjnego, jak również przeprowadzimy bardzo ważne &lt;a href="http://en.wikipedia.org/wiki/Fuzz_testing"&gt;fuzz testing&lt;/a&gt;, o których był dość konkretny i obiecujący wykład na konferencji&lt;/li&gt;&lt;br /&gt;&lt;li&gt;wyczytałem kiedyś, że &lt;a href="http://room-303.com/blog/category/code/"&gt;PHP5 wygląda na zaprojektowany na kolanie&lt;/a&gt; i chciałbym od razu zaznaczyć, że Python nie posiada tej wady, bo autor języka bardzo restrykcyjnie dobiera moduły biblioteczne, nie dopuszczając doń szajsowatych, niewnoszących nic rozwiązań&lt;/li&gt;&lt;br /&gt;&lt;li&gt;pozwala mi na używanie gotowych i przetestowanych rozwiązań do obsługi &lt;a href="http://code.google.com/p/django-google/"&gt;GDATA&lt;/a&gt; w ramach aplikacji googla. Rozjaśniając mój telefon + kalendarz googla to jedna i ta sama baza danych, którą synchronizuje też z innym, egzotycznym systemem korporacyjnym ... do tego stopnia bezboleśnie, bo na telefonie i komputerze PC mam kod napisany w Python&lt;/li&gt;&lt;br /&gt;&lt;li&gt;okazuje się, że można napisać program bez użycia instrukcji i zmiennych, bo w Pythonie jest możliwe &lt;a href="http://docs.python.org/dev/howto/functional.html"&gt;programowanie funkcyjne&lt;/a&gt;. Do tego jesteśmy formalnie w stanie dowieść, że program jest bezbłędny. Może Python to nie Ocaml, ale zawsze można inny język na nim osadzić :-) Podstawy języka funkcyjnego w Pythonie to: &lt;span style="font-style:italic;"&gt;lambda, map, reduce, filter&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;w ramach metodyki TDD i BDD, przy założeniach, że chcemy mieć pełne pokrycie testowe jest też wiele frameworków do testowania np: &lt;a href="http://pyunit.sourceforge.net/"&gt;PyUnit&lt;/a&gt;, &lt;a href="http://www.python.org/doc/2.5.2/lib/module-unittest.html"&gt;unittest&lt;/a&gt;, &lt;a href="http://www.python.org/doc/2.5.2/lib/module-doctest.html"&gt;doctest&lt;/a&gt;, &lt;a href="http://somethingaboutorange.com/mrl/projects/nose/"&gt;nosetest&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;jest wiele powodów, dla których w &lt;a href="http://www.nac.gov.pl/cms/main.php?locale=pl"&gt;Narodowym Archiwum Cyfrowym&lt;/a&gt; aplikacje są tworzone właśnie w Pythonie ... ponoć jeden z nich to problem obsłużenia 2.5 milionów rekordów w bazie danych archiwum. Na szczęście jest Python + niskopoziomowa obsługa zapytań z pominięciem wszelkiej maści ORMy oraz partycjonowanie tabel poprzez mechanizmy dziedziczenia w PostgreSQL i do tego język wbudowany PL/Python zamiast PL/SQL)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://python.org"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/SP5YAJ3uN_I/AAAAAAAACQ0/XNGJC7guzX0/s200/python-logo-master-v3-TM.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259738174488197106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Zachęcam do zapoznania się z językiem programowania Python, bo warto wiedzieć więcej&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt; Oto kilka uzupełniających słów ze zdjęciami z konferencji &lt;a href="http://hack.pl/aktualnosci/relacja_z_pycon_2008_1075"&gt;PyCon 2008&lt;/a&gt; ... ja nie zrobiłem żadnego, bo za bardzo byłem skupiony na treściach przekazu :-)&lt;br /&gt;&lt;br /&gt;Ciekawe linki:&lt;br /&gt;&lt;a href="http://www.python.org/community/workshops/"&gt;Zarejestrowane konferencje PyCon&lt;/a&gt;&lt;br /&gt;http://www.gapminder.org/&lt;br /&gt;http://video.google.com/videoplay?docid=7996617766640098677&lt;br /&gt;http://www.ted.com/index.php/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-3914960798429367739?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/3914960798429367739/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=3914960798429367739' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3914960798429367739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/3914960798429367739'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/10/pycon-2008-rybnik-wrd-przernych-pythonw.html' title='PyCon 2008 Rybnik - wśród przeróżnych Pythonów'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FKArYkQGfrY/SP5inX0NVsI/AAAAAAAACQ8/YjGJJgCnBhY/s72-c/pycon_2008_konferencja_rybnik.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-7839960376361729807</id><published>2008-09-05T07:06:00.007+02:00</published><updated>2008-10-22T01:20:10.761+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PyCOn 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='kult węża'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='konferencja'/><category scheme='http://www.blogger.com/atom/ns#' term='wyznawcy węża'/><title type='text'>Kult węża - PyCon PL 2008</title><content type='html'>Od dziś poszukuje transportu na PyCon PL 2008 :-) Zapisałem się &lt;a href="http://liwo.polsl.pl/pycon-pl_rej/"&gt;tutaj&lt;/a&gt; i mam nadzieję spędzić w dniach 18-19 października weekend w miejscowości &lt;a href="http://liwo.polsl.pl/pycon-pl/dojazd"&gt;Rybnik&lt;/a&gt; (na terenie Centrum Kształcenia Inżynierów Politechniki Śląskiej) wśród lubiących oraz wyznających &lt;span style="font-style:italic;"&gt;kult węża&lt;/span&gt; ;) Zapowiada się kilka interesujących prelekcji i oczywiście jak na pamiętnych RuPy2008 kuluarowe dyskusje o kulcie wszelakich gatunków węży (Python, Zope, Grok, Django)i kolekcjach kamieni szlachetnych (Ruby, Ruby On Rails, metaframework, metalanguage). Tymczasem przygotowuje listę pytań dla bardziej doświadczonych ode mnie ...&lt;br /&gt;&lt;br /&gt; Swoją drogą bardzo interesujące jest to, jak wielu jest ludzi o podobnych zainteresowaniach w naszym kraju w tematyce &lt;span style="font-style:italic;"&gt;wirtualnych węzy&lt;/span&gt; :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-7839960376361729807?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/7839960376361729807/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=7839960376361729807' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7839960376361729807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7839960376361729807'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/09/pyc.html' title='Kult węża - PyCon PL 2008'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-7438480483164493217</id><published>2008-09-04T21:59:00.006+02:00</published><updated>2011-07-06T00:22:34.815+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='narzędzia'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='systemy operacyjne'/><category scheme='http://www.blogger.com/atom/ns#' term='wirtualizacja'/><title type='text'>Modna zabawa w wirtualizację OSów</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;Nie tylko GIKoWskA moda, ale i wygoda sprawiają, że stajesz się adminem ;-) i masz swoją wymarzoną wirtualizację w wirtualnym świecie marzeń admina, haahahaaa ...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Ulepszona &lt;a href="http://ubuntutweak.blogspot.com/2008/02/wirtualizacja-maszyn-w-linuksie.html"&gt;wirtualizacja&lt;/a&gt; KVM w jądrze Linux ma swoich fanów. Najciekawsze, że nie tylko amatorów, ale również &lt;a href="http://wirtualizacja.com/"&gt;komercyjne&lt;/a&gt; wielkie firmy, które budują rozwiąznai klastrowe i skalujące się dzięki wirtualizacji w każdym wymiarze. W razie awarii szybka kopia działającej instancji i magiczny skrypt admina, co powoduje, że w 15  minut mamy brakującego noda ;) na produkcji, w którym napełniają się cache.&lt;br /&gt;&lt;br /&gt;Ja potrzebowałem wykonać &lt;a href="http://www.nextmag.pl/index.php/artykul/aid/371/page_num/1"&gt;konwersje dysku fizycznego na wirtualny&lt;/a&gt;, aby się dobrze bawić wirtualizacją i do tego 2 rdzeniowego laptopa, aby zabawa w &lt;a href="http://pl.wikipedia.org/wiki/Wirtualizacja"&gt;wirtualizację systemów operacyjnych&lt;/a&gt; była przyjemniejsza. Kiedy okazało się, że w wirualnych obrazach można mieć Win NT oraz Win XP, co tego &lt;a href="http://pl.wikipedia.org/wiki/OpenSolaris"&gt;OpenSolaris&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/QNX"&gt;QNX&lt;/a&gt; + Neutrino i jeszcze &lt;a href="http://freebsd.org"&gt;FreeBSD&lt;/a&gt;, byłem wniebowzięty ;-)&lt;br /&gt;&lt;br /&gt;Dzięki np: wirtualizacji DOSa w określonej przez mojego klienta wersji mogłem zasiąść do starego &lt;a href="http://pl.wikipedia.org/wiki/Turbo_Pascal"&gt;Turbo Pascala 7.0&lt;/a&gt; i napisać pod określoną werjsę wirtualizując w DOSEMU środowisko docelowe. Ba nawet typowe dla danej wersji DOSa błędy można włączać w takiej wirtualizacji - miodzio :)&lt;br /&gt;&lt;br /&gt;Temat wirtualizacji i parawirtualizacji rozkręcił się na dobre ... od kiedy zacząłemm używać aplikacji &lt;strong&gt;Virtual BOX&lt;/strong&gt;. Wszystko takie intuicyjne i takie skalowalne, że wypada załączyć tylko orazek i wrócić do zabawy wirtualnkami :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-O0bi7VSG18w/ThOObjbBcXI/AAAAAAAAFcc/8LVw5qI0YcQ/s1600/800px-VirtualBox2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-O0bi7VSG18w/ThOObjbBcXI/AAAAAAAAFcc/8LVw5qI0YcQ/s320/800px-VirtualBox2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5625996963532075378" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-7438480483164493217?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/7438480483164493217/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=7438480483164493217' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7438480483164493217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7438480483164493217'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/09/modna-zabawa-w-wirtualizacje-osow.html' title='Modna zabawa w wirtualizację OSów'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-O0bi7VSG18w/ThOObjbBcXI/AAAAAAAAFcc/8LVw5qI0YcQ/s72-c/800px-VirtualBox2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-8951569466860456938</id><published>2008-09-03T18:09:00.006+02:00</published><updated>2008-09-19T00:27:30.858+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='dodatki'/><category scheme='http://www.blogger.com/atom/ns#' term='odplusiwanie'/><category scheme='http://www.blogger.com/atom/ns#' term='FirePHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebug'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>FirePHP - nowy płomień PHP w przeglądarkach</title><content type='html'>Jakiś czas temu natchnąłem się na projekt &lt;a href="http://www.firephp.org/Wiki/Main/QuickStart"&gt;FirePHP&lt;/a&gt; podczas przeglądania bazy ognistych rozszerzeń dla &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt; służącego do odpluskiwania aplikacji &lt;a href="http://pl.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt; pod &lt;a href="https://addons.mozilla.org/en-US/firefox/search?q=firebug"&gt;Firefoxa&lt;/a&gt;. Funkcjonalnośc, której wielu programistów porząda :) - wyświetlanie logów w konsoli FireBug. Kilka kliknięć i na stronach Zend frameworka znalazłem &lt;a href="http://framework.zend.com/manual/en/zend.log.writers.html#zend.log.writers.firebug"&gt;przykład użycia FirePHP w praktyce&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Każdy kto pozostaje wierny poniższym standardom debugowania t.j.:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;die(var_dump('slonik'));&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;echo 'dupa';&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;die('123');&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;może zaznać pozytywnego odkrycia wdrażając w trybie dev na localhost rozszerzenie do przeglądarki internetowej FirePHP :-) Dotyczy to szczególnie aplikacji, w których sporo używamy technologii &lt;a href="http://pl.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt;. Atut podstawowy to centralizacja logów w jednym miejscu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/SMDSDH-By4I/AAAAAAAAABs/WlacMBupU88/s1600-h/Firebug_FirePHP_Firefox_SimpleConsole.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/SMDSDH-By4I/AAAAAAAAABs/WlacMBupU88/s320/Firebug_FirePHP_Firefox_SimpleConsole.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5242420917379910530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pozytywnym wydźwiękiem obiło się również &lt;a href="http://www.firephp.org/Wiki/Libraries/Symfony"&gt;użycie&lt;/a&gt; w wielu popularnych frameworkach dla PHP t.j. symfony :-)&lt;br /&gt;Oczywiście, dla lubiących &lt;a href="http://framework.zend.com/"&gt;Zend Famework&lt;/a&gt; tez znajdzie się &lt;a href="http://framework.zend.com/wiki/display/ZFPROP/Zend_Log_Writer_Firebug+-+Christoph+Dorn"&gt;coś ciekawego&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-8951569466860456938?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/8951569466860456938/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=8951569466860456938' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/8951569466860456938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/8951569466860456938'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/09/php-ogniem-w-naszych-przegldarkach-goci.html' title='FirePHP - nowy płomień PHP w przeglądarkach'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/SMDSDH-By4I/AAAAAAAAABs/WlacMBupU88/s72-c/Firebug_FirePHP_Firefox_SimpleConsole.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-90966389689848998</id><published>2008-09-01T22:17:00.003+02:00</published><updated>2008-09-07T18:22:24.277+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='przeglądarka'/><category scheme='http://www.blogger.com/atom/ns#' term='komiks'/><category scheme='http://www.blogger.com/atom/ns#' term='nowość'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome'/><title type='text'>Huurraaaaa ... mamy nową wieloplatformową przeglądarkę Google Chrome</title><content type='html'>Jak z zaplecza webdeveloperki wiadomo praca tzw. &lt;span style="font-style:italic;"&gt;webdevelopera&lt;/span&gt; skupia się głównie na przekliwaniu różnych standardów sieciowych i M$owych :-) w różnych przeglądarkach. Odkąd pamiętam odwieczna walka o najlepszą przeglądarkę trwa. Lynx, Links, Netscape Navigator, IE ... 4  5 5.5 6 7 8, Safari, Mozilla, &lt;a href="http://www.mozilla-europe.org/pl/firefox/"&gt;Firefox&lt;/a&gt;, Iceape, Opera, ProxyBrowsers i obecna świeżynka ;-) &lt;a href="http://www.google.com/googlebooks/chrome/index.html"&gt;Google Chrome&lt;/a&gt; :)&lt;br /&gt;&lt;br /&gt; Pierwszy &lt;a href="http://www.google.com/googlebooks/chrome/index.html"&gt;komiks&lt;/a&gt; na ten temat poprawia nastrój. Google wie, jak się przyciąga społeczności internetowe, więc komiks polubi zapewne środowisko &lt;a href="http://pl.wikipedia.org/wiki/Geek"&gt;GEEK&lt;/a&gt;ów ;) Co za tym idzie niebawem na wielu desktopach porządnie zagości przeglądarka, co ułatwi producentowi na wszelkie nieograniczone i niczym nieskrępowane śledzenie zachowań i upodobań użytkowników. Nie mam tutaj bynajmniej wizji tragicznych, aczkolwiek taka "rakieta" jak Chrome w wykonaniu tak ważnej korporacji jest w stanie celnie trafiać :-) Niewątpliwie zachęcam do zabawy nie tylko GEEKów.&lt;br /&gt;&lt;br /&gt;Zebrałem kilka linków w tej sprawie zupełnie przypadkiem :-) &lt;br /&gt;http://arstechnica.com/news.ars/post/20080902-hands-on-with-chrome-googles-browser-shines-mostly.html&lt;br /&gt;http://gizmodo.com/5044032/chrome-googles-open-source-browser&lt;br /&gt;http://blogs.pcworld.com/staffblog/archives/007644.html&lt;br /&gt;http://www.heise-online.pl/news/Chrome-Google-rzuca-wyzwanie-Microsoftowi--/5586&lt;br /&gt;http://kottke.org/08/09/google-chrome-google-browser&lt;br /&gt;http://blogoscoped.com/archive/2008-09-01-n47.html&lt;br /&gt;http://www.wirtualnemedia.pl/article/2434787_Chrome_-_Google_uruchamia_nowa_przegladarke.htm&lt;br /&gt;http://www.techcrunch.com/2008/09/01/meet-chrome-googles-windows-killer/&lt;br /&gt;http://blogs.pcworld.com/staffblog/archives/007644.html&lt;br /&gt;http://blog.searchenginewatch.com/blog/080901-163034&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-90966389689848998?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/90966389689848998/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=90966389689848998' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/90966389689848998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/90966389689848998'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/09/huurraaaaa-mamy-now-wieloplatformow.html' title='Huurraaaaa ... mamy nową wieloplatformową przeglądarkę Google Chrome'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-7310179866025731272</id><published>2008-08-10T18:18:00.002+02:00</published><updated>2008-09-18T19:17:52.488+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>htmlSQL - klasa PHP do zapytań typu SQL dla HTML</title><content type='html'>&lt;span style="font-style:italic;"&gt;"Poprawne zadawanie pytań powoduje mniejszy stres"&lt;/span&gt; ... jakiś materiał w dziedzinie ułatwiania życia kiedyś nadmieniał. &lt;span style="font-style:italic;"&gt;Zapytania&lt;/span&gt; to podstawa współczesnego świata ... a przede wszystkim baz danych. Dzięki specyficznemu językowi SQL i jemu podobnym mamy kolejną filozofię &lt;a href="http://pl.wikipedia.org/wiki/SQL"&gt;SQL&lt;/a&gt; zen dla języka HTML :) &lt;br /&gt;&lt;br /&gt;Być może jest to mylące, że znalazł się ktoś, kto napisał w PHP klasę do zadawania zapytaćń na drzewie XHtML, ale poniższy obrazek rozwieje wątpliwości co do składni&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FKArYkQGfrY/SNKKi766BbI/AAAAAAAABAE/TigO3AxG0CU/s1600-h/htmlsql_example.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_FKArYkQGfrY/SNKKi766BbI/AAAAAAAABAE/TigO3AxG0CU/s320/htmlsql_example.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5247408848644998578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;natomiast &lt;a href="http://www.jonasjohn.de/download/htmlsql-v0.5.zip"&gt;źródła klasy oraz przykłady&lt;/a&gt; wraz z artykułem na temat &lt;a href="http://www.jonasjohn.de/lab/htmlsql.htm"&gt;htmlSQL&lt;/a&gt; przybliżą logikę działania.&lt;br /&gt;&lt;br /&gt; Poproszę o wasze opinie z zapoznania się z tak odkrywczą i zabawną klasą.&lt;br /&gt;&lt;br /&gt;Podobne projekty: &lt;a href="http://www.cs.toronto.edu/~websql/"&gt;webSQL&lt;/a&gt;, &lt;a href="http://www.ql2.com/unstructured_data_tool.php"&gt;webQL&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-7310179866025731272?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/7310179866025731272/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=7310179866025731272' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7310179866025731272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7310179866025731272'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/08/htmlsql-klasa-php-do-zapyta-typu-sql.html' title='htmlSQL - klasa PHP do zapytań typu SQL dla HTML'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FKArYkQGfrY/SNKKi766BbI/AAAAAAAABAE/TigO3AxG0CU/s72-c/htmlsql_example.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-5715413749412269742</id><published>2008-08-01T22:39:00.000+02:00</published><updated>2008-09-18T19:33:13.730+02:00</updated><title type='text'>Kolorowanki dla webdeveloperów - dobieranie kolorów dla www</title><content type='html'>Czasami bardzo nieentyuzjastyczne kolory towarzyszą nam w tworzeniu serwisów lub aplikacji www. Czasami lepiej jak solidny warsztat grafika się tym zajmie, bo jak programista zrobi szablon strony www, to czasami kod, który jest cenny i na piątkę zostanie oceniony jako szajs przez oglądających. Na szczęście ludzie dawno temu wymyślili wsparcie dla braku weny w tematyce kolorów. Bynajmniej nie mam tutaj na myśli CDROM typu 100 000 szablonów www na każdą okazję ... chodzi mi o strony ułatwiające tworzenie ikonek, wypełnień, kontrastujących zestawień barwnych itp.&lt;br /&gt;&lt;br /&gt; Oto kilka linków, którymi chciałbym się podzielić:&lt;br /&gt;&lt;br /&gt;http://www.snook.ca/technical/colour_contrast/colour.html&lt;br /&gt;&lt;br /&gt;http://www.colourlovers.com/&lt;br /&gt;&lt;br /&gt;http://www.colorcombos.com/&lt;br /&gt;&lt;br /&gt;http://www.telecable.es/personales/alberto9/color/index.htm&lt;br /&gt;&lt;br /&gt;http://www.colr.org/&lt;br /&gt;&lt;br /&gt;http://redalt.com/Tools/I+Like+Your+Colors&lt;br /&gt;&lt;br /&gt;http://colorfilter.wickline.org/&lt;br /&gt;&lt;br /&gt;http://www.mezzoblue.com/archives/2005/02/11/cmyk_for_tho/&lt;br /&gt;&lt;br /&gt;http://wellstyled.com/tools/colorscheme2/index-en.html&lt;br /&gt;&lt;br /&gt;http://adampolselli.com/colorschemes/&lt;br /&gt;&lt;br /&gt;http://www.degraeve.com/color-palette/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.colorcombos.com/color-scheme-266.html&lt;br /&gt;&lt;br /&gt;http://www.colorcombos.com/color-scheme-219.html&lt;br /&gt;&lt;br /&gt;http://www.colourlovers.com/patterns/add?c=C4C4C4/F0EAE4/CFB499/CCA585/C49464&amp;pID=541939&lt;br /&gt;&lt;br /&gt;http://www.colourlovers.com/pattern/112564/By_the_sea_shore&lt;br /&gt;&lt;br /&gt;http://www.colourlovers.com/patterns/add?c=FFF1F0/FFE8E6/FFE5E2/FFDBD8/4B2B28&amp;pID=191203&lt;br /&gt;&lt;br /&gt;http://www.colourlovers.com/patterns/add?c=C4C4C4/F0EAE4/CFB499/CCA585/C49464&amp;pID=541939&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I coś z zupełnie po bliskiej beczki&lt;br /&gt;&lt;br /&gt;http://flumpcakes.co.uk/css/optimiser/ - CSS Optimiser&lt;br /&gt;&lt;br /&gt;http://salavon.com/GUT/GUT_StarWars.shtml&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-5715413749412269742?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/5715413749412269742/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=5715413749412269742' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5715413749412269742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5715413749412269742'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/08/kolorowanki-dla-webdeveloperw.html' title='Kolorowanki dla webdeveloperów - dobieranie kolorów dla www'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-1758621659592794709</id><published>2008-06-28T21:14:00.000+02:00</published><updated>2008-09-02T21:54:16.471+02:00</updated><title type='text'>IIS - zaskakujący serwer www (na przykładzie klienta poczty OWA)</title><content type='html'>&lt;span style="font-family: verdana;font-size:85%;" &gt;Chciałbym sie z Wami podzielić informacją o NIEstandardowości serwera IIS, który jest zainstalowany na &lt;a href="https://exchange.ktr.pl/owa/redir.aspx?URL=https%3a%2f%2fintranet" target="_blank"&gt;wielu serwerach w sieci&lt;/a&gt;. Mianowicie nowy standard błędow, jaki nie po raz pierwszy widze to np: po zaginieciu sesji wygląda mniej więcej tak - dla klienta poczty OWA (a może nie tylko):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;h2&gt;Błąd HTTP 401.2 &amp;mdash; Bez autoryzacji: Dostęp jest zabroniony. Nie pozwala na to konfiguracja serwera.&lt;br /&gt; Internetowe usługi informacyjne (IIS)&lt;/h2&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Poniżej cytuje kod strony:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "&lt;/span&gt;&lt;a style="font-style: italic;" href="https://exchange.ktr.pl/owa/redir.aspx?URL=http%3a%2f%2fwww.w3.org%2fTR%2fhtml4%2fstrict.dtd" target="_blank"&gt;http://www.w3.org/TR/html4/strict.dtd&lt;/a&gt;&lt;span style="font-style: italic;"&gt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;html&gt;&lt;head&gt;&lt;title&gt;Nie masz uprawnień do oglądania tej strony&lt;/title&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;meta equiv="Content-Type" content="text/html; charset=windows-1250"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;style type="text/css"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   BODY { font: 8pt/12pt verdana }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   H1 { font: 13pt/15pt verdana }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   H2 { font: 8pt/12pt verdana }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   A:link { color: red }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   A:visited { color: maroon }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;/style&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;/head&gt;&lt;body&gt;&lt;table width="500" border="0" cellspacing="10"&gt;&lt;tr&gt;&lt;td&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;h1&gt;Nie masz uprawnień do oglądania tej strony&lt;/h1&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; Nie masz uprawnień do oglądania tego katalogu lub strony przy użyciu podanych poświadczeń, ponieważ używana przeglądarka sieci Web wysyła pole nagłówka WWW-Authenticate, którego nie może zaakceptować serwer sieci Web, gdyż nie pozwala na to jego konfiguracja.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;hr /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;p&gt;Spróbuj następujących sposobów:&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;li&gt;Skontaktuj się z administratorem witryny sieci Web, jeżeli uważasz, że wyświetlenie tego katalogu lub strony powinno być możliwe.&lt;/li&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;li&gt;Kliknij przycisk &lt;a href="javascript:location.reload()"&gt;Odśwież&lt;/a&gt;, aby spróbować ponownie z innymi poświadczeniami.&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;h2&gt;Błąd HTTP 401.2 &amp;mdash; Bez autoryzacji: Dostęp jest zabroniony. Nie pozwala na to konfiguracja serwera.&lt;br /&gt; Internetowe usługi informacyjne (IIS)&lt;/h2&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;hr /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;p&gt;Informacje techniczne (dla działu Pomocy technicznej)&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;li&gt;Przejdź do witryny &lt;a href="http://go.microsoft.com/fwlink/?linkid=8180"&gt;Pomocy technicznej firmy Microsoft&lt;/a&gt; i przeszukaj tytuły, używając słów kluczowych &lt;b&gt;HTTP&lt;/b&gt; i &lt;b&gt;401&lt;/b&gt;.&lt;/li&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;li&gt;Otwórz &lt;b&gt;Pomoc usług IIS&lt;/b&gt;, która jest dostępna w Menedżerze usług IIS (inetmgr), i wyszukaj tematy &lt;b&gt;Zabezpieczenia &amp;mdash; informacje&lt;/b&gt;, &lt;b&gt;Uwierzytelnianie&lt;/b&gt; i &lt;b&gt;Niestandardowe komunikaty o błędach &amp;mdash; informacje&lt;/b&gt;.&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;/ul&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-style: italic;"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Zaznaczam, że większość popularnych bibliotek dla PHP, które pełnia rolę tzw. klienta HTTP może sobie nieporadzić z takim kodem "HTTP 401.2".&lt;br /&gt;Wiele programistów PHPa połamalo sobie niemalże palce uzywając go z serwerem IIS :-) i byc moze zbyt wiele wymagamy &lt;a href="https://exchange.ktr.pl/owa/redir.aspx?URL=http%3a%2f%2fen.wikipedia.org%2fwiki%2fList_of_HTTP_status_codes" target="_blank"&gt;http://en.wikipedia.org/wiki/List_of_HTTP_status_codes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Gdybyście pisali klienta HTTP, przestrzegam tylko, ze jak stoi po drugiej stronie IIS, to oprucz w/w myków lubi rozdzielać linie w odpowiedzi czymś takim "\r\n"&lt;br /&gt;i co ciekawe przed poczatkiem strumienia HTML też lubi dodawać "\r\n" (razy jeden lub dwa) ...&lt;br /&gt;... a to juz jest niesamowite ;) bo nikt nie wie w jakim celu ...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-1758621659592794709?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/1758621659592794709/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=1758621659592794709' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1758621659592794709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1758621659592794709'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2006/08/iis-zaskakujcy-serwer-www-na-przykadzie.html' title='IIS - zaskakujący serwer www (na przykładzie klienta poczty OWA)'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-6644086042933257710</id><published>2008-06-12T00:29:00.008+02:00</published><updated>2011-07-06T00:03:38.948+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><category scheme='http://www.blogger.com/atom/ns#' term='wizualizacja'/><category scheme='http://www.blogger.com/atom/ns#' term='przeładowania strony'/><title type='text'>Jak AJAX to JavaScript - znaczące możliwości wizualizacji</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FKArYkQGfrY/TC-zgQsBO3I/AAAAAAAAFKk/iHrHwCReW9E/s1600/ajax-classic-comparision.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 306px;" src="http://4.bp.blogspot.com/_FKArYkQGfrY/TC-zgQsBO3I/AAAAAAAAFKk/iHrHwCReW9E/s320/ajax-classic-comparision.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5489803837604707186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Zgodnie z nurtem, który spostrzegamy od lat kilku na stronach &lt;strong&gt;www&lt;/strong&gt; będących pochodną nurtu &lt;strong&gt;Web 2.0&lt;/strong&gt; jako brak przeładowania strony, niemalże natychmiastowe wyniki po kliknięciu na link lub tzw. &lt;a href="http://pl.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt; wspaniale ewolouuje w zbiór dość efektywnych rozszerzeń dla języka JavaScript :)&lt;br /&gt;&lt;br /&gt;Jest coś, co muszę Wam &lt;span style="font-style:italic;"&gt;podrzucić&lt;/span&gt; do rozważenia. Jest to zbiór bibliotek zwany &lt;a href="http://mootools.net"&gt;Mootools&lt;/a&gt;, który służy szeroką gamą &lt;a href="http://speckyboy.com/2008/04/09/41-of-the-best-mootools-ajax-example-downloads/"&gt;gotowych&lt;/a&gt; rozwiązań problemów prezentacyjnych.&lt;br /&gt;&lt;br /&gt;Używam i cieszy mnie fakt, że JavaScript znajduje w końcu coraz więcej praktycznych zastosowań na &lt;strong&gt;fronend&lt;/strong&gt;. Najbardziej mnie cieszy, że silniki interpretujące/wykonujące dynamicznie &lt;strong&gt;&lt;a href="http://pl.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt;&lt;/strong&gt; stają się coraz szybsze i mniej pamięciożzerne. A jeszcze większą pociechą dla nas wszystkich jest fakt, że niebawem zapomnimy o IE6, bo ludziska z firmy M$ znają konsekwencje rynkowe, jakie niesie niespełniająca standardów sieciowych przeglądarka.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-6644086042933257710?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/6644086042933257710/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=6644086042933257710' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6644086042933257710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/6644086042933257710'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/06/jak-ajax-to-javascript-znaczace.html' title='Jak AJAX to JavaScript - znaczące możliwości wizualizacji'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FKArYkQGfrY/TC-zgQsBO3I/AAAAAAAAFKk/iHrHwCReW9E/s72-c/ajax-classic-comparision.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-7591648208113519542</id><published>2008-06-07T20:27:00.006+02:00</published><updated>2008-09-07T19:33:25.370+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proste skrypty'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='zenity'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='przetwarzanie wsadowe'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><category scheme='http://www.blogger.com/atom/ns#' term='sh skrypt'/><title type='text'>Zenity - banalne skryptowanie z GUI i bez GUI</title><content type='html'>Potrzeba zrobienia &lt;em&gt;czegośtam&lt;/em&gt; co nazywa się prostym skryptem i wykonuje kilka podstawowych funkcjonalności to właśnie podstawa radzenia sobie w otwartych systemach operacyjnych t.j. FreeBSD, Linux, etc :-) Zwłaszcza, że możliwości rozwiązań jest sporo i można dostosować takie, które nam pasuje do danego zagadnienia. Oczywiście nie wiąże się to od razu z odpalaniem środowiska developerskiego, którego użycia musimy się uczyć kilka tygodni. Nadal - na szczęście - zupełnie sprawny okazuje się dowolny notatnik (vi, vim, joe, mcedit, gedit, kate, kwrite, tomboy, etc ...). Sposób działania niezbytskomplikowany pomysł przelewamy do notatnika w kodzie &lt;a href="http://pl.wikipedia.org/wiki/Bash"&gt;BASH&lt;/a&gt;, po czym używając tytułowego &lt;strong&gt;zenity&lt;/strong&gt; w tempie natychmiastowym dodajemy wstawki graficzne tj.:&lt;br /&gt;menu wyboru, paski postępu, okna modalne, okna wyboru, okna notatek, okna wyboru aopcji. A to wszystko w  dość banalny sposób.&lt;br /&gt;&lt;br /&gt;Kilka linków na temat:&lt;br /&gt;&lt;br /&gt;http://www.howtoforge.com/useful_linux_commands - Useful Commands For The Linux Command Line &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linux.com/feature/114156"&gt;Create GUI dialogs for GNOME and KDE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxjournal.com/content/make-your-scripts-user-friendly-zenity"&gt;Make Your Scripts User Friendly with Zenity&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.builderau.com.au/program/linux/soa/GUI-scripting-with-Zenity/0,339028299,339291187,00.htm"&gt;Create GUI dialogs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://linux.byexamples.com/archives/259/a-complete-zenity-dialog-examples-1/"&gt;a-complete-zenity-dialog-examples-1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://linux.byexamples.com/archives/265/a-complete-zenity-dialog-examples-2/"&gt;a-complete-zenity-dialog-examples-2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://prakashspot.blogspot.com/2008/03/about-zenity-linux-command.html"&gt;about-zenity-linux-command&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://it.imasters.pl/?q=przechowywanie-zdjec-optymalizacja"&gt;przechowywanie-zdjec-optymalizacja&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-7591648208113519542?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/7591648208113519542/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=7591648208113519542' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7591648208113519542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7591648208113519542'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/06/zenity-banalne-skryptowanie-z-gui-i-bez.html' title='Zenity - banalne skryptowanie z GUI i bez GUI'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-5844087632100509995</id><published>2008-06-02T18:14:00.008+02:00</published><updated>2008-08-26T01:52:47.377+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modelowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='morphing'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='animacje'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><category scheme='http://www.blogger.com/atom/ns#' term='podstawy'/><title type='text'>Blender - pierwsze kroki w modelowaniu 3D</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; Od dawna chciałem sobie stworzyć własną wirtualną krainę 3D. Dziś zrealizowałem bazowy problem z tym marzeniem - poznałem podstawy modelowania grafiki komputerowej 3D. Oczywiście wybór padł na &lt;a href="http://wiki.blender.org/index.php/Main_Page.pl"&gt;aplikację&lt;/a&gt; do modelowania, renderingu oraz kreowania animacji &lt;a href="http://pl.wikipedia.org/wiki/Blender_%28program%29"&gt;Blender&lt;/a&gt;. Jest to program &lt;a href="http://www.blender.org/download/get-blender/"&gt;wieloplatformowy&lt;/a&gt;, &lt;a href="http://www.blender.org/education-help/faq/gpl-for-artists/"&gt;darmowy&lt;/a&gt;, &lt;a href="http://peach.blender.org/"&gt;interesujący&lt;/a&gt; oraz w &lt;a href="http://images.google.com/images?q=blender&amp;amp;hl=pl&amp;amp;pwst=1&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;sa=X&amp;amp;oi=images&amp;amp;ct=title"&gt;założeniach&lt;/a&gt; &lt;a href="http://www.blender.org/features-gallery/features/"&gt;niebanalny&lt;/a&gt; ;-)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blendernewbies.blogspot.com/"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.blendernewbies.com/Images/Logos/BlenderNewbies_logo_med.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;Zapoznałem się z &lt;a href="http://dobreprogramy.pl/index.php?dz=8&amp;amp;a=14"&gt;podstawowymi&lt;/a&gt; &lt;a href="http://www.youtube.com/results?search_query=blender+lesson&amp;amp;search_type="&gt;lekcjami blendera&lt;/a&gt; &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;i jestem już w &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;stanie robić &lt;a href="http://www.blender3d.pl/www/str/blhs.php?blh=help"&gt;niebanalne modele&lt;/a&gt; i przerysowywać do świata 3D różne podstawowe kształty. Zabawa na początek z animacją przysporzyła mi kilka splotów synaps w głowie, bo jest to zupełnie &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;niecodzienna&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; porcja wiedzy o funkcjonowaniu aplikacji o otwartym kodzie.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Skoro już jesteśmy przy tematyce &lt;span style="font-style: italic;"&gt;otwartego kodu&lt;/span&gt; i &lt;span style="font-style: italic;"&gt;programowania&lt;/span&gt;, to szacunek oczywiście dla społeczności, która tworzy ten projekt i dokumentuje, gdyż jest on stworzony w całości ponoć w językach programowania C++ i Python :-) Co ciekawe, Ponadto wbudowano &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Edytor tekstowy do pisania informacji o scenie oraz skryptów &lt;a href="http://pl.wikipedia.org/wiki/Python" title="Python"&gt;Pythona&lt;/a&gt;. &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Przyznam, że dość &lt;span style="font-style: italic;"&gt;dojrzałe&lt;/span&gt; są efekty działania programu i aplikacja zachowuje się pod Linux Ubuntu dość stabilnie w wersji 2.44.&lt;br /&gt;&lt;br /&gt;Zachęcam do &lt;a href="http://images.google.com/images?q=blender&amp;amp;hl=pl&amp;amp;pwst=1&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;sa=X&amp;amp;oi=images&amp;amp;ct=title"&gt;zabawy&lt;/a&gt; w tym programie, bo o ile mamy pomysły i nie potrafimy ich niekiedy przelać na papier w postaci szkiców 3D, to Blender jest w stanie nas w tym wspomóc. Dodatkowym atutem, który warto poruszyć to wbudowany silnik do tworzenia gier i prezentacji, który co prawda nie jest z kategorii &lt;a href="http://www.havok.com/"&gt;HAVOK&lt;/a&gt;, ale ma bardzo ważną zaletę - nie musisz być programistą, aby napisać nieszablonową prezentację lub grę :-)&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/278045038080545046-5844087632100509995?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/5844087632100509995/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=5844087632100509995' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5844087632100509995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/5844087632100509995'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/06/blender-pierwse-kroki-w-modelowaniu-3d.html' title='Blender - pierwsze kroki w modelowaniu 3D'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-80542464712489928</id><published>2008-05-27T20:52:00.006+02:00</published><updated>2008-11-08T18:47:53.480+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programator'/><category scheme='http://www.blogger.com/atom/ns#' term='konfiguracja'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Programowanie mikrokontrolerow AVR + AVR-Doper + USB + Linux + UBUNTU</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Sesja z konfigurowana programatora AVR pod Lnuxem &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ sudo dmesg&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;[   56.193165] NET: Registered protocol family 10&lt;br /&gt;[   56.193313] lo: Disabled Privacy Extensions&lt;br /&gt;[   56.193520] ADDRCONF(NETDEV_UP): eth0: link is not ready&lt;br /&gt;[   66.331696] nas0: no IPv6 routers present&lt;br /&gt;[  851.674370] usb 2-1: new low speed USB device using ohci_hcd and address 2&lt;br /&gt;[  851.912107] usb 2-1: configuration #1 chosen from 1 choice&lt;br /&gt;[  852.180868] cdc_acm 2-1:1.0: ttyACM0: USB ACM device&lt;br /&gt;[  852.189322] usbcore: registered new interface driver cdc_acm&lt;br /&gt;[  852.189896] /build/buildd/linux-source-2.6.22-2.6.22/drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters&lt;br /&gt;[  863.085900] usb 2-1: USB disconnect, address 2&lt;br /&gt;[  910.664830] usb 2-1: new low speed USB device using ohci_hcd and address 3&lt;br /&gt;[  910.902548] usb 2-1: configuration #1 chosen from 1 choice&lt;br /&gt;[  910.906498] cdc_acm 2-1:1.0: ttyACM0: USB ACM device&lt;br /&gt;$ avrdude -?&lt;br /&gt;$ sudo ls /dev/ttyACM0 &lt;br /&gt;/dev/ttyACM0&lt;br /&gt;$ sudo less /dev/ttyACM0 &lt;br /&gt;/dev/ttyACM0 is not a regular file (use -f to see it)&lt;br /&gt;$ sudo less -f /dev/ttyACM0 &lt;br /&gt;$ avrdude -m t2313 -p /dev/ttyACM0 &lt;br /&gt;avrdude: invalid option -- m&lt;br /&gt;Usage: avrdude [options]&lt;br /&gt;Options:&lt;br /&gt;  -p &lt;partno&gt;                Required. Specify AVR device.&lt;br /&gt;  -b &lt;baudrate&gt;              Override RS-232 baud rate.&lt;br /&gt;  -B &lt;bitclock&gt;              Specify JTAG/STK500v2 bit clock period (us).&lt;br /&gt;  -C &lt;config-file&gt;           Specify location of configuration file.&lt;br /&gt;  -c &lt;programmer&gt;            Specify programmer type.&lt;br /&gt;  -D                         Disable auto erase for flash memory&lt;br /&gt;  -i &lt;delay&gt;                 ISP Clock Delay [in microseconds]&lt;br /&gt;  -P &lt;port&gt;                  Specify connection port.&lt;br /&gt;  -F                         Override invalid signature check.&lt;br /&gt;  -e                         Perform a chip erase.&lt;br /&gt;  -O                         Perform RC oscillator calibration (see AVR053). &lt;br /&gt;  -U &lt;memtype&gt;:r|w|v:&lt;filename&gt;[:format]&lt;br /&gt;                             Memory operation specification.&lt;br /&gt;                             Multiple -U options are allowed, each request&lt;br /&gt;                             is performed in the order specified.&lt;br /&gt;  -n                         Do not write anything to the device.&lt;br /&gt;  -V                         Do not verify.&lt;br /&gt;  -u                         Disable safemode, default when running from a script.&lt;br /&gt;  -s                         Silent safemode operation, will not ask you if&lt;br /&gt;                             fuses should be changed back.&lt;br /&gt;  -t                         Enter terminal mode.&lt;br /&gt;  -E &lt;exitspec&gt;[,&lt;exitspec&gt;] List programmer exit specifications.&lt;br /&gt;  -y                         Count # erase cycles in EEPROM.&lt;br /&gt;  -Y &lt;number&gt;                Initialize erase cycle # in EEPROM.&lt;br /&gt;  -v                         Verbose output. -v -v for more.&lt;br /&gt;  -q                         Quell progress output. -q -q for less.&lt;br /&gt;  -?                         Display this usage.&lt;br /&gt;&lt;br /&gt;avrdude project: &lt;URL:http://savannah.nongnu.org/projects/avrdude&gt;&lt;br /&gt;$ avrdude -m t2313 -p /dev/ttyACM0 -c usbasp&lt;br /&gt;avrdude: invalid option -- m&lt;br /&gt;Usage: avrdude [options]&lt;br /&gt;Options:&lt;br /&gt;  -p &lt;partno&gt;                Required. Specify AVR device.&lt;br /&gt;  -b &lt;baudrate&gt;              Override RS-232 baud rate.&lt;br /&gt;  -B &lt;bitclock&gt;              Specify JTAG/STK500v2 bit clock period (us).&lt;br /&gt;  -C &lt;config-file&gt;           Specify location of configuration file.&lt;br /&gt;  -c &lt;programmer&gt;            Specify programmer type.&lt;br /&gt;  -D                         Disable auto erase for flash memory&lt;br /&gt;  -i &lt;delay&gt;                 ISP Clock Delay [in microseconds]&lt;br /&gt;  -P &lt;port&gt;                  Specify connection port.&lt;br /&gt;  -F                         Override invalid signature check.&lt;br /&gt;  -e                         Perform a chip erase.&lt;br /&gt;  -O                         Perform RC oscillator calibration (see AVR053). &lt;br /&gt;  -U &lt;memtype&gt;:r|w|v:&lt;filename&gt;[:format]&lt;br /&gt;                             Memory operation specification.&lt;br /&gt;                             Multiple -U options are allowed, each request&lt;br /&gt;                             is performed in the order specified.&lt;br /&gt;  -n                         Do not write anything to the device.&lt;br /&gt;  -V                         Do not verify.&lt;br /&gt;  -u                         Disable safemode, default when running from a script.&lt;br /&gt;  -s                         Silent safemode operation, will not ask you if&lt;br /&gt;                             fuses should be changed back.&lt;br /&gt;  -t                         Enter terminal mode.&lt;br /&gt;  -E &lt;exitspec&gt;[,&lt;exitspec&gt;] List programmer exit specifications.&lt;br /&gt;  -y                         Count # erase cycles in EEPROM.&lt;br /&gt;  -Y &lt;number&gt;                Initialize erase cycle # in EEPROM.&lt;br /&gt;  -v                         Verbose output. -v -v for more.&lt;br /&gt;  -q                         Quell progress output. -q -q for less.&lt;br /&gt;  -?                         Display this usage.&lt;br /&gt;&lt;br /&gt;avrdude project: &lt;URL:http://savannah.nongnu.org/projects/avrdude&gt;&lt;br /&gt;$ avrdude -m t2313 -P /dev/ttyACM0 -c usbasp&lt;br /&gt;avrdude: invalid option -- m&lt;br /&gt;Usage: avrdude [options]&lt;br /&gt;Options:&lt;br /&gt;  -p &lt;partno&gt;                Required. Specify AVR device.&lt;br /&gt;  -b &lt;baudrate&gt;              Override RS-232 baud rate.&lt;br /&gt;  -B &lt;bitclock&gt;              Specify JTAG/STK500v2 bit clock period (us).&lt;br /&gt;  -C &lt;config-file&gt;           Specify location of configuration file.&lt;br /&gt;  -c &lt;programmer&gt;            Specify programmer type.&lt;br /&gt;  -D                         Disable auto erase for flash memory&lt;br /&gt;  -i &lt;delay&gt;                 ISP Clock Delay [in microseconds]&lt;br /&gt;  -P &lt;port&gt;                  Specify connection port.&lt;br /&gt;  -F                         Override invalid signature check.&lt;br /&gt;  -e                         Perform a chip erase.&lt;br /&gt;  -O                         Perform RC oscillator calibration (see AVR053). &lt;br /&gt;  -U &lt;memtype&gt;:r|w|v:&lt;filename&gt;[:format]&lt;br /&gt;                             Memory operation specification.&lt;br /&gt;                             Multiple -U options are allowed, each request&lt;br /&gt;                             is performed in the order specified.&lt;br /&gt;  -n                         Do not write anything to the device.&lt;br /&gt;  -V                         Do not verify.&lt;br /&gt;  -u                         Disable safemode, default when running from a script.&lt;br /&gt;  -s                         Silent safemode operation, will not ask you if&lt;br /&gt;                             fuses should be changed back.&lt;br /&gt;  -t                         Enter terminal mode.&lt;br /&gt;  -E &lt;exitspec&gt;[,&lt;exitspec&gt;] List programmer exit specifications.&lt;br /&gt;  -y                         Count # erase cycles in EEPROM.&lt;br /&gt;  -Y &lt;number&gt;                Initialize erase cycle # in EEPROM.&lt;br /&gt;  -v                         Verbose output. -v -v for more.&lt;br /&gt;  -q                         Quell progress output. -q -q for less.&lt;br /&gt;  -?                         Display this usage.&lt;br /&gt;&lt;br /&gt;avrdude project: &lt;URL:http://savannah.nongnu.org/projects/avrdude&gt;&lt;br /&gt;$ qavrdude -m t2313 -P /dev/ttyACM0 -c usbasp&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/&lt;br /&gt;&lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/65-programator.rules&lt;br /&gt;&lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/&lt;br /&gt;00-init.rules                      70-persistent-cd.rules&lt;br /&gt;05-options.rules                   70-persistent-net.rules&lt;br /&gt;20-names.rules                     75-cd-aliases-generator.rules&lt;br /&gt;30-cdrom_id.rules                  75-persistent-net-generator.rules&lt;br /&gt;40-permissions.rules               80-programs.rules&lt;br /&gt;45-fuse.rules                      85-alsa.rules&lt;br /&gt;45-hplip.rules                     85-hdparm.rules&lt;br /&gt;45-libgphoto2.rules                85-hplj10xx.rules&lt;br /&gt;45-libsane.rules                   85-hwclock.rules&lt;br /&gt;50-xserver-xorg-input-wacom.rules  85-ifupdown.rules&lt;br /&gt;55-hpmud.rules                     85-pcmcia.rules&lt;br /&gt;60-libpisock.rules                 90-modprobe.rules&lt;br /&gt;60-symlinks.rules                  95-hal.rules&lt;br /&gt;65-dmsetup.rules                   99-udevmonitor.rules&lt;br /&gt;65-persistent-input.rules          libmtp.rules&lt;br /&gt;65-persistent-storage.rules        README&lt;br /&gt;65-programator.rules               &lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/6&lt;br /&gt;60-libpisock.rules           65-dmsetup.rules             65-persistent-storage.rules&lt;br /&gt;60-symlinks.rules            65-persistent-input.rules    65-programator.rules&lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/65-persistent-storage.rules &lt;br /&gt;&lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/65-programator.rules&lt;br /&gt;&lt;br /&gt;$ avrdude -p m8 -c stk500v2 -P /dev/bus/usb/001/014&lt;br /&gt;avrdude: ser_open(): can't open device "/dev/bus/usb/001/014": No such file or directory&lt;br /&gt;$ avrdude -p m8 -c stk500v2 -P /dev/AVR&lt;br /&gt;avrdude: ser_open(): can't open device "/dev/AVR": No such file or directory&lt;br /&gt;$ avrdude -p m8 -c stk500v2 -P /dev/ttyACM0&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;         Double check connections and try again, or use -F to override&lt;br /&gt;         this check.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ avrdude -p m8 -c stk500v2 -P /dev/ttyACM0&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;         Double check connections and try again, or use -F to override&lt;br /&gt;         this check.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;         Double check connections and try again, or use -F to override&lt;br /&gt;         this check.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0 -F&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.03s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0 -F&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.03s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;         Double check connections and try again, or use -F to override&lt;br /&gt;         this check.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ modprobe usbserial&lt;br /&gt;FATAL: Error inserting usbserial (/lib/modules/2.6.22-15-generic/kernel/drivers/usb/serial/usbserial.ko): Operation not permitted&lt;br /&gt;$ sudo modprobe usbserial&lt;br /&gt;$ udevinfo /dev/ttyACM0&lt;br /&gt;missing option&lt;br /&gt;$ sudo udevinfo /dev/ttyACM0&lt;br /&gt;missing option&lt;br /&gt;$ sudo udevinfo /dev/ttyACM0&lt;br /&gt;missing option&lt;br /&gt;$ udevinfo -a -p $(udevinfo -q path -n udevinfo -a -p $(udevinfo -q path -n /dev/sdb1))&lt;br /&gt;$ dprobe usbserial&lt;br /&gt;bash: dprobe: polecenie nieodnalezione&lt;br /&gt;$ &lt;br /&gt;$ dprobe usbserial&lt;br /&gt;bash: dprobe: polecenie nieodnalezione&lt;br /&gt;$ FATAL: Error inserting us&lt;br /&gt;$ udevinfo -a -p $(udevinfo -q path -n /dev/ttyACM0)&lt;br /&gt;&lt;br /&gt;Udevinfo starts with the device specified by the devpath and then&lt;br /&gt;walks up the chain of parent devices. It prints for every device&lt;br /&gt;found, all possible attributes in the udev rules key format.&lt;br /&gt;A rule to match, can be composed by the attributes of the device&lt;br /&gt;and the attributes from one single parent device.&lt;br /&gt;&lt;br /&gt;  looking at device '/class/tty/ttyACM0':&lt;br /&gt;    KERNEL=="ttyACM0"&lt;br /&gt;    SUBSYSTEM=="tty"&lt;br /&gt;    DRIVER==""&lt;br /&gt;    ATTR{dev}=="166:0"&lt;br /&gt;&lt;br /&gt;  looking at parent device '/devices/pci0000:00/0000:00:03.1/usb2/2-1/2-1:1.0':&lt;br /&gt;    KERNELS=="2-1:1.0"&lt;br /&gt;    SUBSYSTEMS=="usb"&lt;br /&gt;    DRIVERS=="cdc_acm"&lt;br /&gt;    ATTRS{modalias}=="usb:v16C0p05E1d0100dc02dsc00dp00ic02isc02ip01"&lt;br /&gt;    ATTRS{bInterfaceProtocol}=="01"&lt;br /&gt;    ATTRS{bInterfaceSubClass}=="02"&lt;br /&gt;    ATTRS{bInterfaceClass}=="02"&lt;br /&gt;    ATTRS{bNumEndpoints}=="01"&lt;br /&gt;    ATTRS{bAlternateSetting}==" 0"&lt;br /&gt;    ATTRS{bInterfaceNumber}=="00"&lt;br /&gt;    ATTRS{bmCapabilities}=="2"&lt;br /&gt;&lt;br /&gt;  looking at parent device '/devices/pci0000:00/0000:00:03.1/usb2/2-1':&lt;br /&gt;    KERNELS=="2-1"&lt;br /&gt;    SUBSYSTEMS=="usb"&lt;br /&gt;    DRIVERS=="usb"&lt;br /&gt;    ATTRS{product}=="AVR-Doper"&lt;br /&gt;    ATTRS{manufacturer}=="obdev.at"&lt;br /&gt;    ATTRS{quirks}=="0x0"&lt;br /&gt;    ATTRS{maxchild}=="0"&lt;br /&gt;    ATTRS{version}==" 1.01"&lt;br /&gt;    ATTRS{devnum}=="3"&lt;br /&gt;    ATTRS{busnum}=="2"&lt;br /&gt;    ATTRS{speed}=="1.5"&lt;br /&gt;    ATTRS{bMaxPacketSize0}=="8"&lt;br /&gt;    ATTRS{bNumConfigurations}=="1"&lt;br /&gt;    ATTRS{bDeviceProtocol}=="00"&lt;br /&gt;    ATTRS{bDeviceSubClass}=="00"&lt;br /&gt;    ATTRS{bDeviceClass}=="02"&lt;br /&gt;    ATTRS{bcdDevice}=="0100"&lt;br /&gt;    ATTRS{idProduct}=="05e1"&lt;br /&gt;    ATTRS{idVendor}=="16c0"&lt;br /&gt;    ATTRS{bMaxPower}=="200mA"&lt;br /&gt;    ATTRS{bmAttributes}=="80"&lt;br /&gt;    ATTRS{bConfigurationValue}=="1"&lt;br /&gt;    ATTRS{bNumInterfaces}==" 2"&lt;br /&gt;    ATTRS{configuration}==""&lt;br /&gt;    ATTRS{dev}=="189:130"&lt;br /&gt;&lt;br /&gt;  looking at parent device '/devices/pci0000:00/0000:00:03.1/usb2':&lt;br /&gt;    KERNELS=="usb2"&lt;br /&gt;    SUBSYSTEMS=="usb"&lt;br /&gt;    DRIVERS=="usb"&lt;br /&gt;    ATTRS{serial}=="0000:00:03.1"&lt;br /&gt;    ATTRS{product}=="OHCI Host Controller"&lt;br /&gt;    ATTRS{manufacturer}=="Linux 2.6.22-15-generic ohci_hcd"&lt;br /&gt;    ATTRS{quirks}=="0x0"&lt;br /&gt;    ATTRS{maxchild}=="3"&lt;br /&gt;    ATTRS{version}==" 1.10"&lt;br /&gt;    ATTRS{devnum}=="1"&lt;br /&gt;    ATTRS{busnum}=="2"&lt;br /&gt;    ATTRS{speed}=="12"&lt;br /&gt;    ATTRS{bMaxPacketSize0}=="64"&lt;br /&gt;    ATTRS{bNumConfigurations}=="1"&lt;br /&gt;    ATTRS{bDeviceProtocol}=="00"&lt;br /&gt;    ATTRS{bDeviceSubClass}=="00"&lt;br /&gt;    ATTRS{bDeviceClass}=="09"&lt;br /&gt;    ATTRS{bcdDevice}=="0206"&lt;br /&gt;    ATTRS{idProduct}=="0000"&lt;br /&gt;    ATTRS{idVendor}=="0000"&lt;br /&gt;    ATTRS{bMaxPower}=="  0mA"&lt;br /&gt;    ATTRS{bmAttributes}=="e0"&lt;br /&gt;    ATTRS{bConfigurationValue}=="1"&lt;br /&gt;    ATTRS{bNumInterfaces}==" 1"&lt;br /&gt;    ATTRS{configuration}==""&lt;br /&gt;    ATTRS{dev}=="189:128"&lt;br /&gt;&lt;br /&gt;  looking at parent device '/devices/pci0000:00/0000:00:03.1':&lt;br /&gt;    KERNELS=="0000:00:03.1"&lt;br /&gt;    SUBSYSTEMS=="pci"&lt;br /&gt;    DRIVERS=="ohci_hcd"&lt;br /&gt;    ATTRS{msi_bus}==""&lt;br /&gt;    ATTRS{broken_parity_status}=="0"&lt;br /&gt;    ATTRS{modalias}=="pci:v00001039d00007001sv00001849sd00007001bc0Csc03i10"&lt;br /&gt;    ATTRS{local_cpus}=="ff"&lt;br /&gt;    ATTRS{irq}=="17"&lt;br /&gt;    ATTRS{class}=="0x0c0310"&lt;br /&gt;    ATTRS{subsystem_device}=="0x7001"&lt;br /&gt;    ATTRS{subsystem_vendor}=="0x1849"&lt;br /&gt;    ATTRS{device}=="0x7001"&lt;br /&gt;    ATTRS{vendor}=="0x1039"&lt;br /&gt;&lt;br /&gt;  looking at parent device '/devices/pci0000:00':&lt;br /&gt;    KERNELS=="pci0000:00"&lt;br /&gt;    SUBSYSTEMS==""&lt;br /&gt;    DRIVERS==""&lt;br /&gt;    ATTRS{uevent}==""&lt;br /&gt;&lt;br /&gt;$ udevinfo -a -p $(udevinfo -q path -n /dev/ttyACM0)&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ avrdude -p t2313 -c avr_doper -P /dev/ttyACM0 -F -u -t | grep doper&lt;br /&gt;&lt;br /&gt;avrdude: Can't find programmer id "avr_doper"&lt;br /&gt;&lt;br /&gt;Valid programmers are:&lt;br /&gt;  dasa3    = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts [/etc/avrdude.conf:770]&lt;br /&gt;  dasa     = serial port banging, reset=rts sck=dtr mosi=txd miso=cts [/etc/avrdude.conf:757]&lt;br /&gt;  siprog   = Lancos SI-Prog &lt;http://www.lancos.com/siprogsch.html&gt; [/etc/avrdude.conf:744]&lt;br /&gt;  ponyser  = design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts [/etc/avrdude.conf:731]&lt;br /&gt;  frank-stk200 = Frank STK200                   [/etc/avrdude.conf:696]&lt;br /&gt;  blaster  = Altera ByteBlaster             [/etc/avrdude.conf:683]&lt;br /&gt;  ere-isp-avr = ERE ISP-AVR &lt;http://www.ere.co.th/download/sch050713.pdf&gt; [/etc/avrdude.conf:673]&lt;br /&gt;  atisp    = AT-ISP V1.1 programming cable for AVR-SDK1 from &lt;http://micro-research.co.th/&gt;  [/etc/avrdude.conf:663]&lt;br /&gt;  dapa     = Direct AVR Parallel Access cable [/etc/avrdude.conf:652]&lt;br /&gt;  xil      = Xilinx JTAG cable              [/etc/avrdude.conf:639]&lt;br /&gt;  futurlec = Futurlec.com programming cable. [/etc/avrdude.conf:622]&lt;br /&gt;  abcmini  = ABCmini Board, aka Dick Smith HOTCHIP [/etc/avrdude.conf:612]&lt;br /&gt;  picoweb  = Picoweb Programming Cable, http://www.picoweb.net/ [/etc/avrdude.conf:602]&lt;br /&gt;  sp12     = Steve Bolt's Programmer        [/etc/avrdude.conf:591]&lt;br /&gt;  alf      = Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ [/etc/avrdude.conf:575]&lt;br /&gt;  bascom   = Bascom SAMPLE programming cable [/etc/avrdude.conf:565]&lt;br /&gt;  dt006    = Dontronics DT006               [/etc/avrdude.conf:555]&lt;br /&gt;  pony-stk200 = Pony Prog STK200               [/etc/avrdude.conf:543]&lt;br /&gt;  stk200   = STK200                         [/etc/avrdude.conf:527]&lt;br /&gt;  bsd      = Brian Dean's Programmer, http://www.bsdhome.com/avrdude/ [/etc/avrdude.conf:516]&lt;br /&gt;  pavr     = Jason Kyle's pAVR Serial Programmer [/etc/avrdude.conf:508]&lt;br /&gt;  dragon_dw = Atmel AVR Dragon in debugWire mode [/etc/avrdude.conf:501]&lt;br /&gt;  dragon_hvsp = Atmel AVR Dragon in HVSP mode  [/etc/avrdude.conf:493]&lt;br /&gt;  dragon_pp = Atmel AVR Dragon in PP mode    [/etc/avrdude.conf:485]&lt;br /&gt;  dragon_isp = Atmel AVR Dragon in ISP mode   [/etc/avrdude.conf:477]&lt;br /&gt;  dragon_jtag = Atmel AVR Dragon in JTAG mode  [/etc/avrdude.conf:469]&lt;br /&gt;  jtag2dw  = Atmel JTAG ICE mkII in debugWire mode [/etc/avrdude.conf:461]&lt;br /&gt;  jtag2isp = Atmel JTAG ICE mkII in ISP mode [/etc/avrdude.conf:453]&lt;br /&gt;  jtag2    = Atmel JTAG ICE mkII            [/etc/avrdude.conf:445]&lt;br /&gt;  jtag2fast = Atmel JTAG ICE mkII            [/etc/avrdude.conf:437]&lt;br /&gt;  jtag2slow = Atmel JTAG ICE mkII            [/etc/avrdude.conf:429]&lt;br /&gt;  jtagmkII = Atmel JTAG ICE mkII            [/etc/avrdude.conf:421]&lt;br /&gt;  jtag1slow = Atmel JTAG ICE (mkI)           [/etc/avrdude.conf:414]&lt;br /&gt;  jtag1    = Atmel JTAG ICE (mkI)           [/etc/avrdude.conf:406]&lt;br /&gt;  jtagmkI  = Atmel JTAG ICE (mkI)           [/etc/avrdude.conf:398]&lt;br /&gt;  avr911   = Atmel AppNote AVR911 AVROSP    [/etc/avrdude.conf:392]&lt;br /&gt;  avr109   = Atmel AppNote AVR109 Boot Loader [/etc/avrdude.conf:386]&lt;br /&gt;  butterfly = Atmel Butterfly Development Board [/etc/avrdude.conf:380]&lt;br /&gt;  usbasp   = USBasp, http://www.fischl.de/usbasp/ [/etc/avrdude.conf:374]&lt;br /&gt;  avr910   = Atmel Low Cost Serial Programmer [/etc/avrdude.conf:368]&lt;br /&gt;  stk500hvsp = Atmel STK500 V2 in high-voltage serial programming mode [/etc/avrdude.conf:362]&lt;br /&gt;  stk500pp = Atmel STK500 V2 in parallel programming mode [/etc/avrdude.conf:356]&lt;br /&gt;  stk500v2 = Atmel STK500 Version 2.x firmware [/etc/avrdude.conf:350]&lt;br /&gt;  stk500v1 = Atmel STK500 Version 1.x firmware [/etc/avrdude.conf:344]&lt;br /&gt;  stk500   = Atmel STK500                   [/etc/avrdude.conf:338]&lt;br /&gt;  avrisp2  = Atmel AVR ISP mkII             [/etc/avrdude.conf:328]&lt;br /&gt;  avrispmkII = Atmel AVR ISP mkII             [/etc/avrdude.conf:322]&lt;br /&gt;  avrispv2 = Atmel AVR ISP V2               [/etc/avrdude.conf:316]&lt;br /&gt;  avrisp   = Atmel AVR ISP                  [/etc/avrdude.conf:310]&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR  -F&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.04s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR  -F&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.04s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0xffffff&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/40-permissions.rules&lt;br /&gt;&lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/65-&lt;br /&gt;65-dmsetup.rules             65-persistent-storage.rules  &lt;br /&gt;65-persistent-input.rules    65-programator.rules         &lt;br /&gt;$ sudo mcedit /etc/udev/rules.d/65-programator.rules &lt;br /&gt;&lt;br /&gt;$ sudo cat /etc/udev/rules.d/65-programator.rules &lt;br /&gt;KERNEL=="ttyACM0", NAME="AVR"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ 4003.035799] usb 2-1: USB disconnect, address 5&lt;br /&gt;[ 5253.262662] usb 2-1: new low speed USB device using ohci_hcd and address 6&lt;br /&gt;[ 5253.500452] usb 2-1: configuration #1 chosen from 1 choice&lt;br /&gt;[ 5253.504384] cdc_acm 2-1:1.0: ttyACM0: USB ACM device&lt;br /&gt;[ 6125.721804] usb 2-1: USB disconnect, address 6&lt;br /&gt;[ 6130.036372] usb 2-1: new low speed USB device using ohci_hcd and address 7&lt;br /&gt;[ 6130.274132] usb 2-1: configuration #1 chosen from 1 choice&lt;br /&gt;[ 6130.278060] cdc_acm 2-1:1.0: ttyACM0: USB ACM device&lt;br /&gt;[ 6399.501693] usb 2-1: USB disconnect, address 7&lt;br /&gt;[ 6404.684821] usb 2-1: new low speed USB device using ohci_hcd and address 8&lt;br /&gt;[ 6404.922588] usb 2-1: configuration #1 chosen from 1 choice&lt;br /&gt;[ 6404.926555] cdc_acm 2-1:1.0: ttyACM0: USB ACM device&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.04s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F -t -u&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.03s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;avrdude&gt; stk 4&lt;br /&gt;&gt;&gt;&gt; stk 4 &lt;br /&gt;avrdude: invalid command "stk"&lt;br /&gt;avrdude&gt; stv 4&lt;br /&gt;&gt;&gt;&gt; stv 4 &lt;br /&gt;avrdude: invalid command "stv"&lt;br /&gt;avrdude&gt; help&lt;br /&gt;&gt;&gt;&gt; help &lt;br /&gt;Valid commands:&lt;br /&gt;&lt;br /&gt;  dump   : dump memory  : dump &lt;memtype&gt; &lt;addr&gt; &lt;N-Bytes&gt;&lt;br /&gt;  read   : alias for dump&lt;br /&gt;  write  : write memory : write &lt;memtype&gt; &lt;addr&gt; &lt;b1&gt; &lt;b2&gt; ... &lt;bN&gt;&lt;br /&gt;  erase  : perform a chip erase&lt;br /&gt;  sig    : display device signature bytes&lt;br /&gt;  part   : display the current part information&lt;br /&gt;  send   : send a raw command : send &lt;b1&gt; &lt;b2&gt; &lt;b3&gt; &lt;b4&gt;&lt;br /&gt;  parms  : display adjustable parameters (STK500 only)&lt;br /&gt;  vtarg  : set &lt;V[target]&gt; (STK500 only)&lt;br /&gt;  varef  : set &lt;V[aref]&gt; (STK500 only)&lt;br /&gt;  fosc   : set &lt;oscillator frequency&gt; (STK500 only)&lt;br /&gt;  sck    : set &lt;SCK period&gt; (STK500 only)&lt;br /&gt;  help   : help&lt;br /&gt;  ?      : help&lt;br /&gt;  quit   : quit&lt;br /&gt;&lt;br /&gt;Use the 'part' command to display valid memory types for use with the&lt;br /&gt;'dump' and 'write' commands.&lt;br /&gt;&lt;br /&gt;avrdude&gt; read&lt;br /&gt;&gt;&gt;&gt; read &lt;br /&gt;Usage: dump &lt;memtype&gt; [&lt;addr&gt; &lt;len&gt;]&lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.229 MHz&lt;br /&gt;SCK period      : 2.2 us&lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.229 MHz&lt;br /&gt;SCK period      : 2.2 us&lt;br /&gt;avrdude&gt; sck 1&lt;br /&gt;&gt;&gt;&gt; sck 1 &lt;br /&gt;avrdude: stk500v2_set_sck_period(): p = 1.0 us too small, using 1.1 us&lt;br /&gt;avrdude&gt; sck 2&lt;br /&gt;&gt;&gt;&gt; sck 2 &lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.229 MHz&lt;br /&gt;SCK period      : 2.2 us&lt;br /&gt;avrdude&gt; sck 3&lt;br /&gt;&gt;&gt;&gt; sck 3 &lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.229 MHz&lt;br /&gt;SCK period      : 3.3 us&lt;br /&gt;avrdude&gt; sck 4&lt;br /&gt;&gt;&gt;&gt; sck 4 &lt;br /&gt;avrdude&gt; help&lt;br /&gt;&gt;&gt;&gt; help &lt;br /&gt;Valid commands:&lt;br /&gt;&lt;br /&gt;  dump   : dump memory  : dump &lt;memtype&gt; &lt;addr&gt; &lt;N-Bytes&gt;&lt;br /&gt;  read   : alias for dump&lt;br /&gt;  write  : write memory : write &lt;memtype&gt; &lt;addr&gt; &lt;b1&gt; &lt;b2&gt; ... &lt;bN&gt;&lt;br /&gt;  erase  : perform a chip erase&lt;br /&gt;  sig    : display device signature bytes&lt;br /&gt;  part   : display the current part information&lt;br /&gt;  send   : send a raw command : send &lt;b1&gt; &lt;b2&gt; &lt;b3&gt; &lt;b4&gt;&lt;br /&gt;  parms  : display adjustable parameters (STK500 only)&lt;br /&gt;  vtarg  : set &lt;V[target]&gt; (STK500 only)&lt;br /&gt;  varef  : set &lt;V[aref]&gt; (STK500 only)&lt;br /&gt;  fosc   : set &lt;oscillator frequency&gt; (STK500 only)&lt;br /&gt;  sck    : set &lt;SCK period&gt; (STK500 only)&lt;br /&gt;  help   : help&lt;br /&gt;  ?      : help&lt;br /&gt;  quit   : quit&lt;br /&gt;&lt;br /&gt;Use the 'part' command to display valid memory types for use with the&lt;br /&gt;'dump' and 'write' commands.&lt;br /&gt;&lt;br /&gt;avrdude&gt; quit&lt;br /&gt;&gt;&gt;&gt; quit &lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;         Double check connections and try again, or use -F to override&lt;br /&gt;         this check.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.04s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F -t -u&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.04s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.229 MHz&lt;br /&gt;SCK period      : 4.4 us&lt;br /&gt;avrdude&gt; help&lt;br /&gt;&gt;&gt;&gt; help &lt;br /&gt;Valid commands:&lt;br /&gt;&lt;br /&gt;  dump   : dump memory  : dump &lt;memtype&gt; &lt;addr&gt; &lt;N-Bytes&gt;&lt;br /&gt;  read   : alias for dump&lt;br /&gt;  write  : write memory : write &lt;memtype&gt; &lt;addr&gt; &lt;b1&gt; &lt;b2&gt; ... &lt;bN&gt;&lt;br /&gt;  erase  : perform a chip erase&lt;br /&gt;  sig    : display device signature bytes&lt;br /&gt;  part   : display the current part information&lt;br /&gt;  send   : send a raw command : send &lt;b1&gt; &lt;b2&gt; &lt;b3&gt; &lt;b4&gt;&lt;br /&gt;  parms  : display adjustable parameters (STK500 only)&lt;br /&gt;  vtarg  : set &lt;V[target]&gt; (STK500 only)&lt;br /&gt;  varef  : set &lt;V[aref]&gt; (STK500 only)&lt;br /&gt;  fosc   : set &lt;oscillator frequency&gt; (STK500 only)&lt;br /&gt;  sck    : set &lt;SCK period&gt; (STK500 only)&lt;br /&gt;  help   : help&lt;br /&gt;  ?      : help&lt;br /&gt;  quit   : quit&lt;br /&gt;&lt;br /&gt;Use the 'part' command to display valid memory types for use with the&lt;br /&gt;'dump' and 'write' commands.&lt;br /&gt;&lt;br /&gt;avrdude&gt; fosc 12.0000&lt;br /&gt;&gt;&gt;&gt; fosc 12.0000 &lt;br /&gt;avrdude: stk500v2_set_fosc(): f = 12 Hz too low, 14 Hz min&lt;br /&gt;avrdude (fosc): failed to set oscillator_frequency (rc = -1)&lt;br /&gt;avrdude&gt; fosc 12000000&lt;br /&gt;&gt;&gt;&gt; fosc 12000000 &lt;br /&gt;avrdude: stk500v2_set_fosc(): f = 12.000 MHz too high, using 3.686 MHz&lt;br /&gt;avrdude&gt; fosc 12000&lt;br /&gt;&gt;&gt;&gt; fosc 12000 &lt;br /&gt;avrdude&gt; quit&lt;br /&gt;&gt;&gt;&gt; quit &lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.03s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F -t -u&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: stk500v2_command(): command failed&lt;br /&gt;avrdude: initialization failed, rc=-1&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.03s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x000000&lt;br /&gt;avrdude: Yikes!  Invalid device signature.&lt;br /&gt;avrdude: Expected signature for ATtiny2313 is 1E 91 0A&lt;br /&gt;avrdude&gt; &lt;br /&gt;avrdude&gt; fosc 1.229 MHz&lt;br /&gt;&gt;&gt;&gt; fosc 1.229 MHz &lt;br /&gt;Usage: fosc &lt;value&gt;[M|k] | off&lt;br /&gt;avrdude&gt; fosc 1.229M&lt;br /&gt;&gt;&gt;&gt; fosc 1.229M &lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.843 MHz&lt;br /&gt;SCK period      : 4.4 us&lt;br /&gt;avrdude&gt; fosc 12.00M&lt;br /&gt;&gt;&gt;&gt; fosc 12.00M &lt;br /&gt;avrdude: stk500v2_set_fosc(): f = 12.000 MHz too high, using 3.686 MHz&lt;br /&gt;avrdude&gt; fosc 12M&lt;br /&gt;&gt;&gt;&gt; fosc 12M &lt;br /&gt;avrdude: stk500v2_set_fosc(): f = 12.000 MHz too high, using 3.686 MHz&lt;br /&gt;avrdude&gt; fosc 1.229M&lt;br /&gt;&gt;&gt;&gt; fosc 1.229M &lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.843 MHz&lt;br /&gt;SCK period      : 4.4 us&lt;br /&gt;avrdude&gt; help&lt;br /&gt;&gt;&gt;&gt; help &lt;br /&gt;Valid commands:&lt;br /&gt;&lt;br /&gt;  dump   : dump memory  : dump &lt;memtype&gt; &lt;addr&gt; &lt;N-Bytes&gt;&lt;br /&gt;  read   : alias for dump&lt;br /&gt;  write  : write memory : write &lt;memtype&gt; &lt;addr&gt; &lt;b1&gt; &lt;b2&gt; ... &lt;bN&gt;&lt;br /&gt;  erase  : perform a chip erase&lt;br /&gt;  sig    : display device signature bytes&lt;br /&gt;  part   : display the current part information&lt;br /&gt;  send   : send a raw command : send &lt;b1&gt; &lt;b2&gt; &lt;b3&gt; &lt;b4&gt;&lt;br /&gt;  parms  : display adjustable parameters (STK500 only)&lt;br /&gt;  vtarg  : set &lt;V[target]&gt; (STK500 only)&lt;br /&gt;  varef  : set &lt;V[aref]&gt; (STK500 only)&lt;br /&gt;  fosc   : set &lt;oscillator frequency&gt; (STK500 only)&lt;br /&gt;  sck    : set &lt;SCK period&gt; (STK500 only)&lt;br /&gt;  help   : help&lt;br /&gt;  ?      : help&lt;br /&gt;  quit   : quit&lt;br /&gt;&lt;br /&gt;Use the 'part' command to display valid memory types for use with the&lt;br /&gt;'dump' and 'write' commands.&lt;br /&gt;&lt;br /&gt;avrdude&gt; part&lt;br /&gt;&gt;&gt;&gt; part &lt;br /&gt;&lt;br /&gt;AVR Part              : ATtiny2313&lt;br /&gt;Chip Erase delay      : 9000 us&lt;br /&gt;PAGEL                 : PD4&lt;br /&gt;BS2                   : PD6&lt;br /&gt;RESET disposition     : possible i/o&lt;br /&gt;RETRY pulse           : SCK&lt;br /&gt;serial program mode   : yes&lt;br /&gt;parallel program mode : yes&lt;br /&gt;Timeout               : 200&lt;br /&gt;StabDelay             : 100&lt;br /&gt;CmdexeDelay           : 25&lt;br /&gt;SyncLoops             : 32&lt;br /&gt;ByteDelay             : 0&lt;br /&gt;PollIndex             : 3&lt;br /&gt;PollValue             : 0x53&lt;br /&gt;Memory Detail         :&lt;br /&gt;&lt;br /&gt;                         Block Poll               Page                       Polled&lt;br /&gt;  Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack&lt;br /&gt;  ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------&lt;br /&gt;  eeprom        65     6     4    0 no        128    4      0  4000  4500 0xff 0xff&lt;br /&gt;  flash         65     6    32    0 yes      2048   32     64  4500  4500 0xff 0xff&lt;br /&gt;  signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00&lt;br /&gt;  lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00&lt;br /&gt;  lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00&lt;br /&gt;  hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00&lt;br /&gt;  efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00&lt;br /&gt;  calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00&lt;br /&gt;&lt;br /&gt;avrdude&gt; help&lt;br /&gt;&gt;&gt;&gt; help &lt;br /&gt;Valid commands:&lt;br /&gt;&lt;br /&gt;  dump   : dump memory  : dump &lt;memtype&gt; &lt;addr&gt; &lt;N-Bytes&gt;&lt;br /&gt;  read   : alias for dump&lt;br /&gt;  write  : write memory : write &lt;memtype&gt; &lt;addr&gt; &lt;b1&gt; &lt;b2&gt; ... &lt;bN&gt;&lt;br /&gt;  erase  : perform a chip erase&lt;br /&gt;  sig    : display device signature bytes&lt;br /&gt;  part   : display the current part information&lt;br /&gt;  send   : send a raw command : send &lt;b1&gt; &lt;b2&gt; &lt;b3&gt; &lt;b4&gt;&lt;br /&gt;  parms  : display adjustable parameters (STK500 only)&lt;br /&gt;  vtarg  : set &lt;V[target]&gt; (STK500 only)&lt;br /&gt;  varef  : set &lt;V[aref]&gt; (STK500 only)&lt;br /&gt;  fosc   : set &lt;oscillator frequency&gt; (STK500 only)&lt;br /&gt;  sck    : set &lt;SCK period&gt; (STK500 only)&lt;br /&gt;  help   : help&lt;br /&gt;  ?      : help&lt;br /&gt;  quit   : quit&lt;br /&gt;&lt;br /&gt;Use the 'part' command to display valid memory types for use with the&lt;br /&gt;'dump' and 'write' commands.&lt;br /&gt;&lt;br /&gt;avrdude&gt; sck&lt;br /&gt;&gt;&gt;&gt; sck &lt;br /&gt;Usage: sck &lt;value&gt;&lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.843 MHz&lt;br /&gt;SCK period      : 4.4 us&lt;br /&gt;avrdude&gt; sck 1&lt;br /&gt;&gt;&gt;&gt; sck 1 &lt;br /&gt;avrdude: stk500v2_set_sck_period(): p = 1.0 us too small, using 1.1 us&lt;br /&gt;avrdude&gt; sck 1&lt;br /&gt;&gt;&gt;&gt; sck 1 &lt;br /&gt;avrdude: stk500v2_set_sck_period(): p = 1.0 us too small, using 1.1 us&lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 4.9 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.843 MHz&lt;br /&gt;SCK period      : 1.1 us&lt;br /&gt;avrdude&gt; sck 2&lt;br /&gt;&gt;&gt;&gt; sck 2 &lt;br /&gt;avrdude&gt; parms&lt;br /&gt;&gt;&gt;&gt; parms &lt;br /&gt;Vtarget         : 5.0 V&lt;br /&gt;Varef           : 0.0 V&lt;br /&gt;Oscillator      : 1.843 MHz&lt;br /&gt;SCK period      : 2.2 us&lt;br /&gt;avrdude&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ whereis avrdude&lt;br /&gt;avrdude: /usr/bin/avrdude /etc/avrdude.conf /usr/share/man/man1/avrdude.1.gz&lt;br /&gt;$ touch /tmp/123.hex&lt;br /&gt;$ chmod a+wrx /tmp/123.hex&lt;br /&gt;$ less /tmp/123.hexqqqq&lt;br /&gt;/tmp/123.hexqqqq: No such file or directory&lt;br /&gt;$ less /tmp/123.hex&lt;br /&gt;$ cat /tmp/123.hex&lt;br /&gt;:2000000012C02AC029C028C027C026C025C024C023C022C021C020C01FC01EC01DC01CC0C1&lt;br /&gt;:200020001BC01AC019C011241FBECFEDCDBF10E0A0E6B0E0ECE9F0E002C005900D92A03661&lt;br /&gt;:20004000B107D9F710E0A0E6B0E001C01D92A036B107E1F710D021C0D3CF08958FEF87BB7C&lt;br /&gt;:2000600081BB18BA12BA08958FEF88BB82BB089518BA12BA08958FEF87BB80BB849B04C055&lt;br /&gt;:1C00800088B3847088BB01C0C29A859B04C088B3827088BBF3CFC19AF1CFFFCFD6&lt;br /&gt;:00000001FF&lt;br /&gt;$ &lt;br /&gt;&lt;br /&gt;user@desktop:~/Desktop/Dokumenty/AVR8_Burn-O-Mat$ avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.03s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e910a&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;br /&gt;user@desktop:~/Desktop/Dokumenty/AVR8_Burn-O-Mat$ sh start.sh &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;ODCZYT FUSEBYTES&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/usr/bin/avrdude -q -u -C /etc/avrdude.conf -p t2313 -P /dev/AVR-Doper-USB-Programmer -c stk500v2 -E noreset,novcc -F -U efuse:r:/tmp/efuse41068.hex:r -U hfuse:r:/tmp/hfuse41067.hex:r -U lfuse:r:/tmp/lfuse41066.hex:r &lt;br /&gt;avrdude: WARNING: -E option not supported by this programmer type&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;avrdude: Device signature = 0x1e910a&lt;br /&gt;avrdude: reading efuse memory:&lt;br /&gt;avrdude: writing output file "/tmp/efuse41068.hex"&lt;br /&gt;avrdude: reading hfuse memory:&lt;br /&gt;avrdude: writing output file "/tmp/hfuse41067.hex"&lt;br /&gt;avrdude: reading lfuse memory:&lt;br /&gt;avrdude: writing output file "/tmp/lfuse41066.hex"&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;ZAPIS FUSEBITES&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/usr/bin/avrdude -q -u -C /etc/avrdude.conf -p t2313 -P /dev/AVR-Doper-USB-Programmer -c stk500v2 -E noreset,novcc -F -U efuse:w:0xFF:m -U hfuse:w:0xDF:m -U lfuse:w:0xFD:m &lt;br /&gt;avrdude: WARNING: -E option not supported by this programmer type&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;avrdude: Device signature = 0x1e910a&lt;br /&gt;avrdude: reading input file "0xFF"&lt;br /&gt;avrdude: writing efuse (1 bytes):&lt;br /&gt;avrdude: 1 bytes of efuse written&lt;br /&gt;avrdude: verifying efuse memory against 0xFF:&lt;br /&gt;avrdude: load data efuse data from input file 0xFF:&lt;br /&gt;avrdude: input file 0xFF contains 1 bytes&lt;br /&gt;avrdude: reading on-chip efuse data:&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of efuse verified&lt;br /&gt;avrdude: reading input file "0xDF"&lt;br /&gt;avrdude: writing hfuse (1 bytes):&lt;br /&gt;avrdude: 1 bytes of hfuse written&lt;br /&gt;avrdude: verifying hfuse memory against 0xDF:&lt;br /&gt;avrdude: load data hfuse data from input file 0xDF:&lt;br /&gt;avrdude: input file 0xDF contains 1 bytes&lt;br /&gt;avrdude: reading on-chip hfuse data:&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of hfuse verified&lt;br /&gt;avrdude: reading input file "0xFD"&lt;br /&gt;avrdude: writing lfuse (1 bytes):&lt;br /&gt;avrdude: 1 bytes of lfuse written&lt;br /&gt;avrdude: verifying lfuse memory against 0xFD:&lt;br /&gt;avrdude: load data lfuse data from input file 0xFD:&lt;br /&gt;avrdude: input file 0xFD contains 1 bytes&lt;br /&gt;avrdude: reading on-chip lfuse data:&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of lfuse verified&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;ODCZYTANIE ZAWARTOSCI PROGRAMU Z MIKROKONTROLERA DO PLIKU&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/usr/bin/avrdude -q -u -C /etc/avrdude.conf -p t2313 -P /dev/AVR-Doper-USB-Programmer -c stk500v2 -E noreset,novcc -F -U flash:r:/tmp/123.hex:i &lt;br /&gt;avrdude: WARNING: -E option not supported by this programmer type&lt;br /&gt;avrdude: stk500_2_ReceiveMessage(): timeout&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;avrdude: Device signature = 0x1e910a&lt;br /&gt;avrdude: reading flash memory:&lt;br /&gt;avrdude: writing output file "/tmp/123.hex"&lt;br /&gt;&lt;br /&gt;avrdude done.  Thank you.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;SKRYPT KONFUGURACJI FUSEBYTES &lt;/span&gt;&lt;br /&gt;&lt;br /&gt; http://palmavr.sourceforge.net/cgi-bin/fc.cgi&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Dodatkowe informacje n.T. fusebytes i programowania mikrokontrolerów AVR&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://www.tkdami.net/~voytek/programy/programy.html&lt;br /&gt;http://www.elektroda.pl/rtvforum/topic854656.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Oprogramownie do programowania mikrokontrolerów AVR&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://sourceforge.net/projects/kontrollerlab/&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bioinspired.com/users/ajg112/electronics/avr.shtml"&gt;Atmel AVR toolchain&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openwince.sourceforge.net/jtag/"&gt;JTAG Tools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hri.sourceforge.net/tools/jtag_faq_org.html"&gt;JTAG FAQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.atmel.com/dyn/products/datasheets.asp?family_id=607"&gt;AVR® 8-Bit RISC - Datasheets&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tuxgraphics.org/electronics/"&gt;Projekty elektroniczne open source na Linuxa z wykorzystaniem AVR&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-80542464712489928?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/80542464712489928/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=80542464712489928' title='Komentarze (8)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/80542464712489928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/80542464712489928'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/05/programowanie-mikrokontrolerw-avr-avr.html' title='Programowanie mikrokontrolerow AVR + AVR-Doper + USB + Linux + UBUNTU'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-7989879947727700697</id><published>2008-05-25T19:07:00.004+02:00</published><updated>2010-07-03T21:04:06.284+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='programowanie'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Symfony PHP framework - interesujące narzędzie</title><content type='html'>Niezrównany w bojach i podbojach szkieletów do kodowania w PHP zechciałem zmierzyć się z &lt;strong&gt;&lt;a href="http://www.symfony-project.org/doc/1_0/"&gt;symfony PHP frameworks&lt;/a&gt;&lt;/strong&gt;. Minęło już kilka lat jak tworzę własny &lt;strong&gt;miniFramework&lt;/strong&gt; w &lt;strong&gt;PHP4&lt;/strong&gt; z moim autorskim &lt;strong&gt;miniORM&lt;/strong&gt;. Jednym słowem wiele nocek spędzonych nad wywodami, jak przechowywać struktury bazodanowe w XML. Do tego XMLowe opakowania na formularze i walidacje. Ponadto używam między innymi takiego dodatku jako &lt;a href="http://sourceforge.net/projects/nusoap/"&gt;NuSOAP&lt;/a&gt;, który wprowadził do mojego kodu nie jeden sprawnie wykonany &lt;strong&gt;webserwis&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FKArYkQGfrY/TC-I2cW6hLI/AAAAAAAAFKU/6lmqq9ynlQc/s1600/symfony_php_framework.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 176px; height: 37px;" src="http://1.bp.blogspot.com/_FKArYkQGfrY/TC-I2cW6hLI/AAAAAAAAFKU/6lmqq9ynlQc/s320/symfony_php_framework.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5489756939694539954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kleje sobie własny frameworki i kleje ... a tu nagle widzę po ruchu społeczności &lt;strong&gt;&lt;a href="http://www.symfony-project.org/"&gt;symfony&lt;/a&gt;&lt;/strong&gt;, że wzorując się na &lt;strong&gt;&lt;a href="http://rubyonrails.org/"&gt;Ruby On Rails&lt;/a&gt;&lt;/strong&gt; tworzą całkiem sprawny kawałek kodu, co najważniejsze ze wsparciem społeczności w promowaniu dodatków tzw. &lt;a href="http://www.symfony-project.org/plugins/"&gt;symfony plugins&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FKArYkQGfrY/TC-I_CPN1kI/AAAAAAAAFKc/xMn7KD7XVRM/s1600/php_symfony_framework__podrecznik.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://3.bp.blogspot.com/_FKArYkQGfrY/TC-I_CPN1kI/AAAAAAAAFKc/xMn7KD7XVRM/s320/php_symfony_framework__podrecznik.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5489757087301752386" /&gt;&lt;/a&gt;&lt;br /&gt;Pierwsze kroki zupełnie mnie osłupiły, bo generatory jakich się nie spodziewałem biorą górę, przynajmniej można tak jak w moim skromnym projekcie miniframework wygenerować szablonowo formularze backendowe, powiązane z generowanymi modelami w PHP oraz relacjami w danych. Nieco się tego napisałem i stwierdzam, że pokrycie testami jednostkowymi w symfony nie powala, ale ważne, że temat został opakowany w obiektowe podejście do kodowania w PHP. Cóż, czas zamrozić wersję mojego  miniFramework'a i przyłączyć się do &lt;strong&gt;społeczności symfony&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Z początku próbowałem sam odkrywać co w plikach piszczy, ale oczywiście dokumentacja z krokami, która została opublikowana rozjaśnia wszystkie zasadnicze elementy pracy z tym narzędziem. Po kilku godzinach prób i testów, stwierdzam, że jest to kierunek w PHP, w jakim warto kontynuować rozwój ... z jakim skutkiem zobaczymy ;-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pozytywy wykorzystywania frameworka symfony&lt;/strong&gt;, o których warto wspomnieć to:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;konsekwencja nazewnictwa i budowy drzewa projektu&lt;/li&gt;&lt;br /&gt;&lt;li&gt;konsekwencja w utrzymaniu konfiguracji projektu&lt;/li&gt;&lt;br /&gt;&lt;li&gt;prostota pisania bibliotek, komponentów, pluginów a nawet partiali i slotów wymienialnych pomiędzy projektami&lt;/li&gt;&lt;br /&gt;&lt;li&gt;wbufdowany trub debugowania i logowanie zdarzeń o ustawialnym poziomie (filtrowaniu)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;prostota budowania aplikacji z kategorii &lt;a href="http://pl.wikipedia.org/wiki/Web_2.0"&gt;Web 2.0&lt;/a&gt; z silnym nastawieniem na &lt;a href="pl.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;społeczność oraz forumy i grupy dyskusyjne na tematy błędów występujących w CORE i pluginach&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Od dziś polecam każdemu programiście PHP poznanie &lt;span style="font-weight:bold;"&gt;symfony&lt;/span&gt; -  po co utrudniać sobie życie, przecież PHP jest i tak zakręcony ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-7989879947727700697?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/7989879947727700697/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=7989879947727700697' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7989879947727700697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/7989879947727700697'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/05/symfony-php-framework-interesujace.html' title='Symfony PHP framework - interesujące narzędzie'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FKArYkQGfrY/TC-I2cW6hLI/AAAAAAAAFKU/6lmqq9ynlQc/s72-c/symfony_php_framework.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-1329780718918534866</id><published>2008-05-25T17:41:00.004+02:00</published><updated>2008-08-25T18:12:58.867+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informatyka'/><category scheme='http://www.blogger.com/atom/ns#' term='praca'/><category scheme='http://www.blogger.com/atom/ns#' term='emigracja'/><category scheme='http://www.blogger.com/atom/ns#' term='książki'/><category scheme='http://www.blogger.com/atom/ns#' term='indie'/><title type='text'>Lektura branżowa: Moja Praca Emigruje do Indii</title><content type='html'>&lt;span style=";font-family:verdana;font-size:85%;"  &gt; Każdego ranka budzimy się po "lekturze snów" lub na lekturze interesującej książki, którą czytaliśmy wczoraj wieczorem :)  Już dawno nie czytałem dzieła branżowego, które nie pozwoliłoby mi zasnąć na nim :) Zakup nastąpił natychmiast, kiedy w poszukiwaniu książek n. t.  &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt; natknąłem się na książkę p.t.&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt; &lt;a href="http://www.powernet.pl/ksiazka.php?id=2"&gt;Moja Praca Emigruje do Indii&lt;/a&gt;  &lt;/span&gt;autorstwa &lt;span style="font-style: italic;"&gt;Chad Fowler&lt;/span&gt; (z lubelskiego wydawnictwa &lt;span style="font-style: italic;"&gt;powernet). Sprawna transakcja, bezproblemowa wysyłka - gratis. &lt;/span&gt;Dosłownie chwilę po tym, jak ją otrzymałem zasięgnąłem kilku mądrych rad n.t. "&lt;span style="font-style: italic;"&gt;52 sposobów na zdobycie i zachowanie pracy&lt;/span&gt;". Jestem w trakcie lektury i zarazem pod wrażeniem przekazu ... niebawem spróbuję dodać kilka wypowiedzi po jej przeczytaniu.&lt;br /&gt;&lt;br /&gt;Oto wygląd okładki dla ciekawskich:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.powernet.pl/dane/okladki/MJWTI.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 197px; height: 296px;" src="http://www.powernet.pl/dane/okladki/MJWTI.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/278045038080545046-1329780718918534866?l=marcinbielak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcinbielak.blogspot.com/feeds/1329780718918534866/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=278045038080545046&amp;postID=1329780718918534866' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1329780718918534866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/278045038080545046/posts/default/1329780718918534866'/><link rel='alternate' type='text/html' href='http://marcinbielak.blogspot.com/2008/05/httpwwwpowernetplksiazkaphpid2.html' title='Lektura branżowa: Moja Praca Emigruje do Indii'/><author><name>Marcin Bielak | bieli</name><uri>http://www.blogger.com/profile/01452610446618748989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-278045038080545046.post-3448249409704366344</id><published>2008-05-22T21:35:00.016+02:00</published><updated>2008-10-11T22:43:09.757+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xinerama'/><category scheme='http://www.blogger.com/atom/ns#' term='xrandr'/><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg.conf'/><category scheme='http://www.blogger.com/atom/ns#' term='multiscreen'/><category scheme='http://www.blogger.com/atom/ns#' term='dual monitors'/><category scheme='http://www.blogger.com/atom/ns#' term='grandr'/><title type='text'>Dual desktop + Ubuntu + praca na dwóch monitorach</title><content type='html'>&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Po kilku dniach walki z dodatkiem &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;xorg.con&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;f oraz dodatkiem &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;xinerama&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; nie poddaję się :-)&lt;br /&gt;Przeglądam i rozpoznaję nadal ważne wątki:&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;http://www.systhread.net/texts/200506extendedX.php&lt;br /&gt;http://lists.freedesktop.org/archives/xorg/2004-February/000015.html&lt;br /&gt;http://digital-domain.net/lug/multi-monitor/&lt;br /&gt;http://ubuntuforums.org/showthread.php?t=238518&lt;br /&gt;http://digital-domain.net/lug/multi-monitor/xorg.conf&lt;br /&gt;http://gentoo-wiki.com/HOWTO_Dual_Monitors&lt;br /&gt;http://lists.freebsd.org/pipermail/freebsd-questions/2005-May/087929.html&lt;br /&gt;http://p4a.dk/conf/xorg.conf&lt;br /&gt;ftp://download.nvidia.com/XFree86/Linux-x86/1.0-8178/README/appendix-g.html&lt;br /&gt;http://mkaz.com/ref/gentoo_dual.html&lt;br /&gt;http://wiki.osuosl.org/display/howto/Set+Up+Dual+Monitors+-+xorg.conf&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Pomyślałem sobie, że jednak wciąż nie dorównuje toto sterownikom w konkurencyjnych OSach ... i już zamierzałem wyłączyć kompa ... kiedy ujrzałem magiczne&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt; xrandr  &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;/ &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;grandr&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;http://packages.ubuntu.com/gutsy/xrandr&lt;br /&gt;http://www.newlinuxuser.com/a-better-xrandr-tool-for-the-next-ubuntu-release/&lt;br /&gt;http://ubuntuforums.org/tags.php?tag=xrandr&lt;br /&gt;http://douglasfils.blogspot.com/2008/04/xrandr-with-ubuntu-804-and-external.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Zachciało mi się pracy na kilku monitorach i udało się coś wycedzić:&lt;br /&gt;Wystarczyło do xorg.conf dopisać:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:85%;"  &gt;                &lt;span style="font-weight: bold;"&gt;Virtual         3000 2000&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;w poniższej sekcji:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "Screen"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;        Identifier      "Default Screen"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;        Device          "Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;        Monitor         "PLE1900WS"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;        DefaultDepth    24&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;        SubSection "Display"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;                Modes           "1440x900" "1400x1050" "1280x1024" "1280x960" "1280x800" "1152x864" "1024x768" "800x600" "640x480"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;                Virtual         3000 2000&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;        EndSubSection&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;EndSection&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Następnie z konsoli na zwykłym koncie:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;xrandr -q&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Efekt działania:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Screen 0: minimum 320 x 200, current 2720 x 900, maximum 3000 x 2000&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;VGA connected 1440x900+1280+0 (normal left inverted right) 410mm x 257mm&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1440x900       59.9*+   75.0     59.9  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1280x1024      75.0     59.9  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1280x960       59.9  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1152x864       75.0     74.8  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1024x768       75.1     70.1     60.0  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   832x624        74.6  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   800x600        72.2     75.0     60.3     56.2  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   640x480        75.0     72.8     66.7     60.0  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   720x400        70.1  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;LVDS connected 1280x800+0+0 (normal left inverted right) 0mm x 0mm&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1280x800       60.0*+   60.0  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1280x768       60.0  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1152x768       54.8  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   1024x768       85.0     75.0     70.1     60.0  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   832x624        74.6  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   800x600        85.1     72.2     75.0     60.3     56.2  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   640x480        85.0     72.8     75.0     59.9  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   720x400        85.0  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   640x400        85.1  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;   640x350        85.1  &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;TV disconnected (normal left inverted right)&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Generowanie optymalnego trybu &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;modline&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; dla monitora:&lt;br /&gt;$ &lt;span style="font-weight: bold;"&gt;gtf 1440 900 60 -v&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;1: [H PIXELS RND]             :     1440.000000&lt;br /&gt;2: [V LINES RND]              :      900.000000&lt;br /&gt;3: [V FIELD RATE RQD]         :       60.000000&lt;br /&gt;4: [TOP MARGIN (LINES)]       :        0.000000&lt;br /&gt;5: [BOT MARGIN (LINES)]       :        0.000000&lt;br /&gt;6: [INTERLACE]                :        0.000000&lt;br /&gt;7: [H PERIOD EST]             :       17.887533&lt;br /&gt;8: [V SYNC+BP]                :       31.000000&lt;br /&gt;9: [V BACK PORCH]             :       28.000000&lt;br /&gt;10: [TOTAL V LINES]            :      932.000000&lt;br /&gt;11: [V FIELD RATE EST]         :       59.983753&lt;br /&gt;12: [H PERIOD]                 :       17.882690&lt;br /&gt;13: [V FIELD RATE]             :       59.999996&lt;br /&gt;14: [V FRAME RATE]             :       59.999996&lt;br /&gt;15: [LEFT MARGIN (PIXELS)]     :        0.000000&lt;br /&gt;16: [RIGHT MARGIN (PIXELS)]    :        0.000000&lt;br /&gt;17: [TOTAL ACTIVE PIXELS]      :     1440.000000&lt;br /&gt;18: [IDEAL DUTY CYCLE]         :       24.635193&lt;br /&gt;19: [H BLANK (PIXELS)]         :      464.000000&lt;br /&gt;20: [TOTAL PIXELS]             :     1904.000000&lt;br /&gt;21: [PIXEL FREQ]               :      106.471672&lt;br /&gt;22: [H FREQ]                   :       55.919998&lt;br /&gt;17: [H SYNC (PIXELS)]          :      152.000000&lt;br /&gt;18: [H FRONT PORCH (PIXELS)]   :       80.000000&lt;br /&gt;36: [V ODD FRONT PORCH(LINES)] :        1.000000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;# 1440x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 106.47 MHz&lt;br /&gt;Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Po czym wydałem kilka nieskomplikowanych poleceń i mogę pracowac na dwa monitorki ;)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Ustawianie dwóch monitorów jedną linijką:&lt;br /&gt;&lt;br /&gt;$ &lt;span style="font-weight: bold;"&gt;xrandr --output LVDS --mode 1280x800 --output VGA  --mode 1440x900_60  --right-of LVDS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dla lubiących klikać jest też &lt;a href="http://packages.ubuntu.com/gutsy/x11/grandr"&gt;&lt;span style="font-weight: bold;"&gt;grandr&lt;/span&gt;&lt;/a&gt;, który w moich testach nie wypadł &lt;a href="https://bugs.launchpad.net/ubuntu/+source/grandr/+bug/127829"&gt;zbyt wspaniale&lt;/a&gt; ... cóż kiedyś polubiłem terminale ;)&lt;br /&gt;&lt;br /&gt;Oto moja konfiguracja xorg.conf dla Ubuntu 7.10, dla sprzętu:&lt;br /&gt;laptop:    TOSHIBA A-120&lt;br /&gt;monitor: ProLite E1900WS&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# xorg.conf (xorg X Window System server configuration file)&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;#&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# This file was generated by dexconf, the Debian X Configuration tool, using&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# values from the debconf database.&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;#&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# Edit this file with caution, and see the xorg.conf manual page.&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# (Type "man xorg.conf" at the shell prompt.)&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;#&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# This file is automatically updated on xserver-xorg package upgrades *only*&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# if it has not been modified since the last upgrade of the xserver-xorg&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# package.&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;#&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# If you have edited this file but would like it to be automatically updated&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;# again, run the following command:&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;#   sudo dpkg-reconfigure -phigh xserver-xorg&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "Files"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;EndSection&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "InputDevice"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Identifier    "Generic Keyboard"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Driver        "kbd"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "CoreKeyboard"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "XkbRules"    "xorg"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "XkbModel"    "pc105"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "XkbLayout"    "pl"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;EndSection&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "InputDevice"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Identifier    "Configured Mouse"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Driver        "mouse"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "CorePointer"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Device"        "/dev/input/mice"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Protocol"        "ImPS/2"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "ZAxisMapping"        "4 5"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Emulate3Buttons"    "true"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;EndSection&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "InputDevice"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Identifier    "Synaptics Touchpad"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Driver        "synaptics"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "SendCoreEvents"    "true"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Device"        "/dev/psaux"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Protocol"        "auto-dev"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "HorizEdgeScroll"    "0"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;EndSection&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "InputDevice"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Driver        "wacom"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Identifier    "stylus"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Device"    "/dev/input/wacom"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Type"        "stylus"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "ForceDevice"    "ISDV4"        # Tablet PC ONLY&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;EndSection&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "InputDevice"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Driver        "wacom"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Identifier    "eraser"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Device"    "/dev/input/wacom"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Type"        "eraser"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "ForceDevice"    "ISDV4"        # Tablet PC ONLY&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;EndSection&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;Section "InputDevice"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Driver        "wacom"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Identifier    "cursor"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Device"    "/dev/input/wacom"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "Type"        "cursor"&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;    Option        "ForceDevice"    "ISDV4"        # Tablet PC ONLY&lt;/span&gt;&lt;span style="font-style
