18 lutego 2010

Fritzing - elektronika i informatyka w jednym miejscu

Od jakiegoś czasu zastanawiałem się, czy ktoś czasem nie połączył Open Hardware z Open Source w jakiś zwinny 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 Open Souce ;-) Znalazłem tak długo wyczekiwany produkt nie tylko mojej wyobraźni pod hasłem Fritzing. Zapewniam was, że teraz od prototypu do produktu jest zdecydowanie sprawniej z Fritzing.



Polecam filmowe wprowadzenie do środowiska, które znajduje się tutaj:




Okazuje się, że projekt Fritzing to nie tyle różne narzędzia desktopowe do projektowania i prototypowania układów elektronicznych, ale również budowanie społeczności, wokół Open Source & Open Hardware. 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 share przekazać nasz schemat, kody źródowe oraz płytkę drukowaną do repozytorium społeczności Fritzing.


Zaskakuje również wbudowany autorouter do projektowania płytek drukowanych PCB. O ile ten w projekcie Eagle 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 z pasją.

Kiedy przyjrzymy się bliżej źródłom widać przewagę języka programowania C++ oraz biblioteki Qt-4.6.1 firmy Trolltech. Warto spojrzeć na kod autoroutera z algorytmem optymalizacji wyszukiwania ścieżek Dijkstry



Materialy dodatkowe:
http://code.google.com/p/fritzing/
http://code.google.com/p/fritzing/w/list
http://hackaday.com/2009/08/25/fritzing/
http://www.piksel.no/tag/fritzing
http://geekswithblogs.net/kobush/archive/2010/01/04/137328.aspx
http://unknowndomain.co.uk/blog/2010/01/03/i-heart-fritzing/
http://www.golem.de/0902/65340.html
http://portal.acm.org/citation.cfm?id=1517735
http://robot-overlord.blogspot.com/2009/04/robot-overlord-recommends-fritzing.html
http://www.pixelsumo.com/post/fritzing
http://starter-kit.nettigo.pl/2009/09/arduino-gramy/
http://starter-kit.nettigo.pl/
http://fritzing.org/projects/blow-up-shield/
http://www.gosh2009.ca/wiki/index.php/About_Gosh!
http://www.gosh2009.ca/wiki/index.php/Workshop_Schedule
http://sebastiansobotka.blogspot.com/search/label/led%207-segmentowy

3 lutego 2010

PHP + HipHop ... i nigdy stop :)

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 PHP oraz narzędzia poprawiającego niemalże o połowe wydajność tego języka tzn. prj. HipHop.



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 HipHop. Pierwotnie projekt zrodził się na potrzeby optymalizacji wydajności skryptów w serwisie społecznościowym Facebook. Od kilku dni źródła zostały uwolnione i umieszczono je na GitHub.

Wracając do alternatywnych prób kompilacji w PHP oraz osadzania warto przytoczyć następujące projekty:
phpcompiler
roadsend
Phalanger php compiler
Quercus - PHP in Java



Kwintesencja HipHop 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 !!!
Co dla świata PHP jak i dla samego Facebooka jest REWOLUCYJNE :-) Pierwotnie produkt komenrcyjny ZendServer 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:





Materiały dodatkowe:

http://developers.facebook.com/news.php?story=358&blog=1
http://www.ustream.tv/recorded/4409735
http://www.facebook.com/video/video.php?v=124728580468&ref=mf