20 grudnia 2008

Poznaj trasę mojej podróży dzięki KML i Google Maps

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 ścieżki podróży, 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 ;-)

Oto przykładowa interpretacja pliku KML przez Google Maps:




Dodatkowe linki:
Co to jest KML?
KML na wikipedii
Przykłady kodu KML

17 grudnia 2008

Blender - zaczarowany ołówek 3D

W pierwszych krokach przedstawiłem Blendera. 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.
Artykuł ten ma na celu prezentację moich modeli, którymi chciałbym się z Wami podzielić oraz omówić ich powstanie.
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:



Kolejnym pomyslem i modelem, ktory kazdemu poczatkujcemu tworcy 3D nasuwa się na deskę kreślarską jest jakiś dwuślad.



Następnym odkryciem jest oczywiście domek moich marzeń :-) Co prawda nie jest idealny, brakuje mu jeszcze wiele, lecz zarys to podstawa do wyobrażenia złożoności ;) Dodaje wyrenderowany na szybko rozkład ścian ...



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:


Kurs wideo programu Blender w języku polskim
Skategoryzowane tekstury oraz obrysy różnych obiektów
Baza tekstur
Modele samochodów
Polska strona społeczności blenderowania (forum, artykuły, modele)

Open Source Architecture
Tutorial: Blender Ambient Occlusion
Tutorial: building a house in Blender 3d software - part 1
Tutorial: building a house in Blender 3d software - part 2
Tutorial: building a house in Blender 3d software - part 3
Garden house demo
Virtuality vs. Reality
Using a Lattice to Redisign your model

Wizualizacja butelki Coca-coli

Użycie Blendera do tworzenia i analizy profili nośnych skrzydeł

http://en.wikibooks.org/wiki/Blender_3D:_Tutorial_Links_List#2D_Texture_Painting_Techniques

http://forum.blender3d.pl/viewtopic.php?p=29974&sid=fb546cf1f356e77c05a4f1e74e75a519

http://pg12.bialystok.pl/php/body/edukacja/technologia-informacyjna/budowa_kompa/artykuly/Projektowanie%20grafiki%203D%20w%20Blenderze%20(cz.3)/pf--10s052_54.pdf

http://wiki.blender.org/index.php/Manual.pl/Pierwsza_Animacja_w_30_i_30_Minut_Czesc_I

http://www.pixel2life.com/tutorials/blender_3d/

http://wiki.blender.org/index.php/Doc:Tutorials/Modelling/Curves/B%C3%A9zier

http://blenderunderground.com/forums/viewforum.php?f=19

12 grudnia 2008

CouchDB - odkrycie kolejnego wymiaru noSQL

Jak zwykle szukając w wielkim sieciowym worku różnych rozwiązań natkąłem się na dość interesujący temat składowania dokumentów w systemie bazodanowym wspierającym map reduce o nazwie CouchDB. Postaram się nieco przybliżyć zagadnienie oraz podać linki do procesu instalacji CouchDB, wraz z zaprezentowaniem przykładowych rozwiązań klienckich w działaniu na dostępych materiałach w sieci.
CouchDB posiada interfejs REST dostępu do danych. Jest on prosty, gdy wystarczy nam pobranie prostych danych. Jeśli chcemy jednak wykonać skomplikowane zapytanie, musimy naszą bazę odpowiedni przygotować i utworzyć widok, przy pomocy którego wywołujemy zapytanie. Dla lubiących SQLe - to jest przesiadka do innego wymiaru, takiego bez SQLi :-) Porządnie opanowane widoki mogą przyspieszayć odczytu danych wielokrotnie. I tutaj nie oszczędzamy, tzn. potrzebujemy widoku z przekrojem danych z kilkoma opcjami, zróbmy sobie te N-opcji i baza zadba o odpowiednie serwowanie nam gotowych wyników.
Polecam świetny wstępniak do CouchDB, który na pewno przybliży zabawe z tą bazką.




Materiały wideo:








Cloud Computing in Plain English





Linki:
Into to REST
Mars: A MapReduce Framework on Graphics Processors
Grid Gain
Disco is an open-source implementation of the Map-Reduce framework for distributed computing
Linux Journal chats with GoGrid about Cloud Computing
Cloud Computing in Plain English

4 grudnia 2008

Linux framebuffer server - jak uruchomić aplikacje graficzną na serwerze bez trybu graficznego

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 framebuffer możliwego do użycia w graficznym systemie X11 windows system. Poniżej przedstawie jak najprościej uruchomić i podglądać nasz wirtualny system graficzny.



Na początek uzupełniamy system o pakiet serwera ramki Xvfb:

sudo apt-get install xvfb


Następnie startujemy wirtualny serwer graficzny w tle poleceniem:

sudo startx -- `which Xvfb` :2 -screen 0 1024x768x24 2>&1 >/dev/null &


W następnej kolejności uruchamiamy naszą aplikacje graficzną na serwerze np: gimp poleceniem:

sudo DISPLAY=:2 gimp


W tym czasie możemy zrobić zrzut ekranu naszego wirtualnego serwera graficznego poleceniem:

xwd -display :2 -root | convert xwd:- /tmp/framebuffer_server_autput.png

lub możemy po zainstalowaniu aplikacji byzanz nagrać obraz z serwera graficznego do animowanego plku GIF:

sudo apt-get install byzanz
sudo DISPLAY=:2 byzanz-record -l --display=:2 /tmp/rec.gif


Uzyskany ze zrzutu ekranu obrazek możmy wyświetlić np: w ten sposób:

sudo DISPLAY=:0 gthumb /tmp/framebuffer_server_autput.png

a wówczas naszym oczom może ukazać sie następujący widok:



Zadajecie sobie pewnie pytanie "po cóż mi taki bezużyteczny framebuffer, skoro nie mam dostępu do pulpitu" i odpowiedzią jest poniższe rozwiązanie używające serwera X11vnc do przechwytycenia widoku framebuffera.

Na początek instalujemy pakiet X11vnc:

sudo apt-get install x11vnc


Po starcie w następujący sposób:

x11vnc -display :2

zauważymy komunikaty typu:

04/12/2008 20:50:11 Autoprobing TCP port
04/12/2008 20:50:11 Autoprobing selected port 5900
04/12/2008 20:50:11 fb read rate: 480 MB/sec
04/12/2008 20:50:11 screen setup finished.
04/12/2008 20:50:11
04/12/2008 20:50:11 WARNING: You are running x11vnc WITHOUT a password. See
04/12/2008 20:50:11 WARNING: the warning message printed above for more info.
04/12/2008 20:50:11

The VNC desktop is: localhost:0
PORT=5900

Informacje wymagane do połączenia z framebuffer serwerem to localhost:0. Połączenia możemy dokonać używając klienta w ten sposób:

vncviewer localhost:0

Powinien pojawić się nam w nowym oknie przechwycony pulpit naszego wirtualnego serwera graficznego.

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 automatycznego testowania stron internetowych przy pomocy takich narzędzi jak Selenium oraz Hudson, których moc postaram się przybliżyć w kolejnej wypowiedzi.

Linki:
http://en.wikipedia.org/wiki/Xvfb
http://www.hackinglinuxexposed.com/articles/20040608.html
http://www.xfree86.org/4.2.0/Xnest.1.html
http://wiki.x.org/X11R6.8.2/doc/Xvfb.1.html
http://wiki.seleniumhq.org/display/SRC/Selenium-RC+and+Continuous+Integration

27 listopada 2008

Open Hardware - nie kupuj szajsu, skoro sprzęt jest za darmo

Powalające jest to, jak daleko Open Source podąża :-)



Dziś natchnąłem się na kilka stronek opisujących zagadnienie Free Hardware. W wolnym tłumaczeniu otwarty sprzęt 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 robotów. Również istnieją projekty otwartych systemów wbudowanych.
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 Jabber z wyświetlaczem LCD podpinany do dostępnego gniazda sieciowego lub wyszukującego sieci WiFi lub Bluetooth wystarczy wyszukać dostępny open hardware, który oferuje obsługę protokołów bazowych oraz interfejsów dla peryferiów i zaimplementować protokół klienta sieci Jabber :-)
Okazuje się, że nie wspominam o abstrakcjach, bo istnieje już kilka możliwych rozwiązań, np:

  • Free Arduino - prosty system wbudowany + Free Hardware (oparty o mikrokontroler ATMega 16)

  • Nut/OS - średniej klasy system operacyjny + Free Hardware (oparty o mikrokontroler AVR ATMega 132)

  • OpenCore - Free Hardware jako układy FDGA, w które w języku VHDL wpisuje się implementacje rdzeni mikroprocesora zyskując spore jednostki obliczeniowe

  • Java tiny - Free Hardware z procesorami z zaimplementowaną wbudowaną wirtualną maszyną JVM, które wykonują przenośne programy napisane w języku JAVA





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ę.
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 Free Hardware, 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 :)
Inny dość pokaźny zestaw tematyczny w nawiązaniu do Open Hardware to otwarte sieci czujników Wireless Sensor Network.



Zestawienie projektów opencore potwierdza dodatkowo zainteresowanie tematyką Free Hardware.
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. OpenMoko


A tak kształtuje się zarys architektury Open Moko:



Pozostawiam Wam tymczasem kilka linków, które doprowadzą Was do ciekawych tematycznych stron:
SquidBee bezprzewodowy czujnik - Open Hardware and Source
Wiki na temat otwartego sprzętu
OpenServo - otwarty sterownik serwomechanzmu
Ethernut 1.3 Hardware
Opencores - otwarte architektury
SUN OpenSPARC CMT (Chip Multithreading) technology

Nut/OS Development on Debian Sarge
Ethernut Unix Emulation Installation

Wireless Sensor Network

How to Build an Open Source MIDI Keyboard

21 listopada 2008

Ewolucja robotów trwa

Dziś zapraszam do obejrzenia materiału wideo o ewolucji robotów i oczywiście dyskusję na ten obszerny temat :)



Robot Evolution - The most popular videos are here


Po zapoznaniu się z pewnym artykułem p.t. Bunt maszyn - początek już był! 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 ;-)
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.
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...
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 :-)
Nie byłbym sobą, gdybym nie wspomniał o roli programistów w tym procesie.
Już dziś można otwarcie napisać Panowie i Panie to do nas świat należy. 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ą biznesmenami, 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ę ;)
O ile mogę polecić literaturę fantastyczną zasygnalizowany dziś temat Pana Stanisława Lema, 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.



Linki:
Robo Sapiens. Ewolucja nowego gatunku
Od blaszanej puszki do kobiety idealnej
Gwiezdne wojny: Prawo robotyki – część 1
Asimo - robotyka

20 listopada 2008

Arduino, Freeduino, Pyduino - szybki start z mikrokontrolerami AVR

Filozofia OpenSource 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 Arduino z interfejsami USB lub RS-232







oraz jego otwarty pierwowzór Freeduino






Dla lubiących własne przygody z lutownicą Arduino w działaniu - wesołe wprowadzenie do tematu:




Przykładowe zabawki ;)









Kontrolowanie Arduino zdalnie z formularza HTML






Temat zainteresował mnie otwartym podejściem do nauki programowania urządzeń wbudowanych. Wszystkie schematy oraz informacje konstrukcyjne są dostępne za darmo :-). Tani hardware oraz rozbudowane podręcznik i biblioteki w językach C, Java i Python do pobrania z sieci. Bogactwem otwartych rozwiązań jest także prostota użycia. Atutem jednakże są niezliczone przykłady potwierdzające możliwości modułu. A dla chcących połączyć swój system mikroprocesorowy z interfejsem 3D systemu animacyjnego Blender również się coś znajdzie :)

Polecam poniższe materiały edukacyjne:
The Arduino Duemilanove ("2009") is a microcontroller board based on the ATmega168
Arduino Board - Serial Interface
Development Tools
Installing Arduino on Linux
Install Arduino on Ubuntu Linux
SimpleMessageSystem - library for Arduino 0004 and up
Arduino and Linux TTY

Arduino Pulse Width Modulation

Arduino-Python 4-Axis Servo Control

Pyduino

Arduino-Python bridge

Python with Arduino

Board Setup and Configuration

Joystick Control of a Servo

Arduino Noise Maker

Serial communication

http://www.solarbotics.com/products/28920/


Linki dla ciekawskich :-)
PHP Library for controlling a 633(serial) LCD & Keypad

http://www.varesano.net/blog/fabio/serial+rs232+connections+python

Python serial tty console application

Controlling GPIB, RS232, and USB instruments - Python GPIB etc. support with PyVISA

http://pyvisa.sourceforge.net/pyvisa.pdf

If you need to control gpib/visa-instruments, pyvLab could be the right thing for you.

Blog z niebanalnymi projektami elektronicznymi

8 listopada 2008

Razor Optimizer - nowatorski projekt analizatora kodu Ajax w celu optymalizacji

Znalazłem dziś ciekawego newsa na temat projektu Razor Optimizer. Oto nowatorska idea optymalizacji kodu Ajax przy użyciu dedykowanego mechanizmu oraz serwera działającego na platformie Java.



Linki:
Getting Started with Razor
Razor Optimizer - a New Approach to Light Up the Web
Razor Optimization Report Example
Demos

źródło

LEGO Mindstorms - zbuduj robocika klepiąc kod Pythonica ;)

W tym tygodniu - 05.11.2008r - w auli wykładowej UAM w Poznaniu odbyła się prezentacja LEGO Maindstorms. Wykład był otwarty, więc aula gościła zainteresowanych wykładem dot. tematyki budowania robotów z klocków LEGO.
Oto PLUGowa strona wykładu oraz udostępnione materiały.

Pozwolę sobie na przedstawienie w postaci materiałów wideo zastosowań LEGO Mindstorms, po czym wrócę do opisywanej prezentacji.

Sterowanie fabryką klocków samochodów z klocków LEGO




Pojazd typu Segway (z efektem odwróconego wahadła)




Układanie kostki rubika






Kusza z LEGO strzelająca piłkami




Kreatywne rozwiązania z LEGO Mindstorms




I najbardziej pocieszny przykład użcyia w prototypie podajnika papieru toaletowego










Linki:
Przykładowe projekty wraz ze zdjęciami realizacji oraz kodem źródłowym
Robot szukający światła z czujnikiem odległości
Nieoficjalna strona legofana z wieloma linki
TurboCNC - program do programowania maszyn i robotów z PC
Materiały poznańskiego kółka zainteresowań robotyką


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.

7 listopada 2008

Skutecznie proste pomiary temperatury w lodówce z iButton

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 iButton, 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 1-wire oraz iButton. 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. digitemp. Poniżej zawarte są przykłady wywołań z linii poleceń i stosowne komentarze.

Oto zdjęcie zabawki pierwszej, którą jest zestaw startowy iButton kit. Jeden z adapterów dla technologii iButton tzw. pastylka
Using the 1-Wire® Public Domain Kit
protokół 1-wire wg wikipedii
, czyli w zasadniczym mniemaniu elektronicznym miernikiem/rejestratorem temperatury. Ten starter Kit zawiera są są to następujące układy:

  • DS2502/DS1982 1Kbit Add only memory - interfejs łączący port RS-232 z 1-wire dla iButton z dostępnym 1kB pamięci do wykorzystania

  • DS1921/H/Z Thermochron iButton - cyfrowy rejestrator temperatury z programowanymi alarmami w zakresie 0 do +45 stopni C (+/- 1 stopien C)





Przykład wywołania digitemp:

$ sudo digitemp_DS9097U -w -s /dev/ttyS0
DigiTemp v3.3.2 Copyright 1996-2004 by Brian C. Lane
GNU Public License v2.0 - http://www.brianlane.com
Turning off all DS2409 Couplers
..
Devices on the Main LAN
2103410000C034C4 : DS1921/H/Z Thermochron iButton
091AAD62010000BB : DS2502/DS1982 1Kbit Add only memory


Nieco skromniejszy - zrobiony w ok. 15 minut - czujnik temperatury oparty na kostce DS18S20 - umożliwiającej pomiar temperatury w zakresie od -55 do + 125 stopni C. Realizacja ogólnie znana




Przykład wywołania digitemp z banalnym "na kolanie" robionym interfejsem:

$ digitemp_DS9097 -w -s /dev/ttyS0
DigiTemp v3.3.2 Copyright 1996-2004 by Brian C. Lane
GNU Public License v2.0 - http://www.brianlane.com
Turning off all DS2409 Couplers
.
Devices on the Main LAN
28579B3C00000028 : DS18B20 Temperature Sensor


Linki do API oraz oprogramowanie do komunikacji z czujnikami 1-wire (iButton)
http://www.maxim-ic.com/products/ibutton/solutions/search.cfm?Action=DD&id=207
http://www.maxim-ic.com/products/ibutton/solutions/product.cfm?id=428
http://www.maxim-ic.com/products/ibutton/solutions/company.cfm?id=181
http://www.maxim-ic.com/products/ibutton/solutions/product.cfm?id=373
http://www.maxim-ic.com/products/ibutton/solutions/product.cfm?id=389

w tym powalające projekty OpenSource:

http://sourceforge.net/projects/owfs/
One Wire Temperature Finder (bohaterski kod od googla używany w opisie)

http://sourceforge.net/dbimage.php?id=71236
http://owfs.sourceforge.net/faq.html
http://owfs.sourceforge.net/owpython.html
http://www.pyzine.com/Issue007/Section_Articles/article_MobileDataCollection.html
http://owfs.sourceforge.net/install.html
http://www.jjoseph.org/misc_projects/1-wire_sensors.html
http://www.kaboodle.com/jon_p/1-wire-electricity-consumption-measuerment.html
http://stackoverflow.com/questions/113185/how-do-i-use-owfs-to-read-an-ibutton-temperature-logger
http://www.jjoseph.org/index.php?option=com_staticxt&staticfile=/machine24.html
http://www.ourcoolhouse.com/monitor/monitor.htm
http://stackoverflow.com/questions/113185/how-do-i-use-owfs-to-read-an-ibutton-temperature-logger
http://www.jjoseph.org/index.php?option=com_staticxt&staticfile=/machine24.html

Python bindings and wrappers for accessing iButton devices on a 1-wire net

Java client for DS1923 iButton with server written in PHP for storage and visualization of data

http://sourceforge.net/dbimage.php?id=60310
www.capgo.com/Resources/SoftwareDev/omap-owire.pdf
http://oww.sourceforge.net/hardware.html
http://www.codeproject.com/KB/cpp/ibuttoninterface.aspx
http://www.audon.co.uk/1wire_humidity.html
http://www.maxim-ic.com/products/1-wire/software/
http://www.mrsoft.fi/ohj01en.htm
http://www.digitemp.com/
http://www.digitemp.com/images/screenshots/walk1wire.png
http://www.digitemp.com/images/screenshots/init1wire.png
http://elektroniikka.org/thermometer/?page=adapter
http://www.maxim-ic.com/products/ibutton/software/1wire/images/screenshot.gif
http://www.maxim-ic.com/quick_view2.cfm?go=part_number_search&ss=DS1921
Stacja pogodowa
Objaśnienie działania OWFS

Jest tego na prawdę sporo jak na okres ok. 10-letniego istnienia technologii iButton.

OWFS - najpopularniejsze rozwiązanie obsługi magistrali 1-wire


Uruchomienie serwera w trybie DEBUG:

sudo /opt/owfs/bin/owserver -d /dev/ttyS0 --8bit -p 127.0.0.1:40141 --Celsius --foreground --error_print 2 --error_level 9


Uruchomienie serwera w trybie normalnym z logowaniem błędów:

sudo /opt/owfs/bin/owserver -d /dev/ttyS0 --8bit -p 127.0.0.1:40141 --Celsius --foreground --error_print 2



Uruchomienie prostego klienta w języku Python, który wyświetli temperaturę z czujnika w stopniach Celsjusza:

#! /usr/bin/env python

import sys
import ownet

if len(sys.argv) != 3:
print 'temperatures.py server port'
sys.exit(1)

r = ownet.Sensor('/', server=sys.argv[1], port=int(sys.argv[2]))
e = r.entryList()
s = r.sensorList()
print 'r:', r
print 'r.entryList():', e
print 'r.sensorList():', s

for x in r.sensors():
if hasattr(x, 'temperature'):
print x, x.temperature


$ python temperatures.py 127.0.0.1 40141

Dla tych, którzy wolą www istnieje możliwość postawienia serwera www komendą:

/opt/owfs/bin/owhttpd -d /dev/ttyS0 --8bit -p 127.0.0.1:40141 --Celsius --foreground --error_print 2

Wówczas w przeglądarce wpisujemy http://127.0.0.1:40141/ i widzimy:















Dla chcących rozszerzyć wiedzę polecam ten projekt thermd

29 października 2008

Tetris - jak niewiele kodu potrzeba do szczęścia


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 tetris, która towarzyszy historii komputerów od dawien dawna. Chciałbym zobrazować jaki prosty algorytm przyczynił się do popularyzacji gierek typu tetris jako edukacyjny element dla programistów oraz zabawka dla nas wszystkich.

Jak nie trudno się domyślić gra tetris została napisana w różnych językach programowania od asemblera, poprzez BASIC, FORTRAN, Pascal, C, C+, Python, PHP, Java, Erlang oraz wiele egzotycznych.

Oto klasyczna gra tetris w różnych językach programowania:

http://code.google.com/p/4bricks/

http://www.katalog.pogodzinach.net/link/23479,ciapek_pl/tetris_php.html

http://survex.com/~olly/dsm_rheolism/explanation.html


http://www.ciapek.pl/index.php?go=g_tetris&ka=gry

http://www.johnymas.info/index.php?stran=tetris

http://www.javascripter.net/games/tetris/game.htm

Google API - sprawny kod, który rozdają za nic



Na stronie google API znajdziemy kilka istotnych linków do konkretnych serwisów sieciowych promowanych w ostatnim czasie przez giganta.

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ć :)

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 :)

Oto kilka z nich:
http://code.google.com/apis/ajaxlibs/documentation/#AjaxLibraries
http://code.google.com/apis/ajax/
http://code.google.com/apis/ajaxlibs/documentation/#mootools

26 października 2008

Guido von Robot - prosty symulator robota w Pythonie

GvR (Guido von Robot) to niewątpliwie kolejna alternatywa programowania przy pomocy żółwia analogicznie jak w języku LOGO. Istnieje jednak banalna różnica, która polega na zawężeniu zastosowania GvR do pisania algorytmu dla prostego robota wykorzystując składnie języka Python. 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.
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 zabawka dla was.

Do dyspozycji jest pięć prymitywnych instrukcji:
1. move
2. turnleft
3. pickbeeper
4. putbeeper
5. turnoff



Dodatkowo możliwe jest używanie osiemnastu przygotowanych poniższych instrukcji specjalnych:
1. front_is_clear
2. front_is_blocked
3. left_is_clear
4. left_is_blocked
5. right_is_clear
6. right_is_blocked
7. next_to_a_beeper
8. not_next_to_a_beeper
9. any_beepers_in_beeper_bag
10. no_beepers_in_beeper_bag
11. facing_north
12. not_facing_north
13. facing_south
14. not_facing_south
15. facing_east
16. not_facing_east
17. facing_west
18. not_facing_west


Powyższe instrukcje podzielić można na kilka grup:
1. testujące obecność ściany wall
2. testujące obecność znacznika beeper,
3. testujące kierunk położenia (funkcje kompasu)


Możliwe jest wykorzystanie następujących instrukcji warunkowych:
if test:
instrukcje

if test:
instrukcje
else:
instrukcje

if test:
instrukcje
elif test:
instrukcje
...
elif test:
instrukcje
else:
instrukcje


oraz poniższych pętli:
do dodatnia_liczba:
instrukcje

while test:
instrukcje


Co najważniejsze możliwe jest tworzenie własnych funkcji, których nazwy zawerają wyłącznie ltery i podkreślnik:
define nowa_nazwa_funkcji:
instrukcje


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:
sudo apt-get install gvr


Oto przykładowy kod mojego świata oraz algorytm działania prymitywnego robota:

Kod świata:
Robot 4 3 N 0

Beepers 4 7 1
Beepers 4 2 2
Beepers 4 4 3
Beepers 7 2 4
Beepers 2 2 5
Beepers 7 2 6

Wall 2 6 N
Wall 2 4 N
Wall 5 4 N
Wall 5 4 W
Wall 10 4 W
Wall 4 10 W
Wall 4 10 S
Wall 5 10 S
Wall 7 9 S
Wall 7 9 W
Wall 8 8 W
Wall 6 10 S
Wall 5 8 S
Wall 8 1 W
Wall 9 2 W
Wall 8 3 W
Wall 6 4 N
Wall 6 3 N
Wall 8 2 N
Wall 8 4 N
Wall 8 4 S
Wall 8 5 S
Wall 8 2 S
Wall 9 4 S
Wall 1 2 S
Wall 4 2 S
wall 3 10 N
wall 2 10 N
wall 1 10 N
wall 8 6 N
wall 8 7 N
wall 9 7 E
wall 9 8 N
wall 8 9 E
wall 8 9 N
wall 7 10 E
wall 6 10 E
wall 7 10 N
wall 9 8 E
wall 10 6 N
wall 11 6 N
wall 11 6 E
wall 11 5 N
wall 10 5 E
wall 10 5 N
wall 11 5 E
wall 11 4 E
wall 11 3 E
wall 11 2 N
wall 10 3 N
wall 10 1 N
wall 10 1 E
wall 11 2 E
wall 11 1 E
wall 5 6 E
wall 6 5 N
wall 2 8 E
wall 2 7 N
wall 1 10 E
wall 2 10 E

Kod działania robota:

define turn_unblocked:
if front_is_blocked:
while front_is_blocked:
turnleft

define turn_from_while:
if front_is_clear:
if next_to_a_beeper:
turnleft

do 1000:
turn_from_while

if next_to_a_beeper:
pickbeeper
if front_is_blocked:
turn_unblocked
else:
move

if front_is_blocked:
turn_unblocked
else:
if any_beepers_in_beeper_bag:
putbeeper
move

move

turnoff


Tak wygląda zainstalowana i działająca aplikacja GvR:


Linki:
http://gvr.sourceforge.net/about.php
http://rur-ple.sourceforge.net/en/rur.htm
http://gvr.sourceforge.net/lessons/rfrank/
http://pyrorobotics.org/?page=Robot_20Simulators
http://en.wikipedia.org/wiki/Karel_the_robot
http://en.wikipedia.org/wiki/Robotics
http://www.nebomusic.net/computerhelp.html
http://bricxcc.sourceforge.net/nbc/
http://mindstorms.lego.com/Overview/NXTreme.aspx
http://www.youtube.com/watch?v=uLomAePdPII&NR=1
http://www.eres.alpha.pl/elektronika/articles.php?cat_id=12

23 października 2008

Konsekwentne kodowanie i testowanie aplikacji internetowych

Wymiatający jest kod, który działa, ale taki, który działa w IE6 potrafi wymiatać podwójnie ...

Rozpoczynający dzisiejszą wypowiedź cytat/frazes 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.
Tak sobie spojrzałem i nawet specjaliści od testowania posiadają ratujący ich przed IE6 komentarz, który pozwolę sobie przytoczyć:


Testerzy kontra przeglądarki


Starając się dotrzeć do jak największej ilości odbiorców, dostarczając najlepszą jakość Testerzy.pl wyświetlają się poprawnie w:

* IE 7.0 i 8.0
* FireFox 2.0 i 3.0
* Opera 9.5 i wcześniejsze

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.



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 udają, że im się udaje 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.

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 :)

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ę internet. 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 grubego klienta, który ewidentnie powie dość i straty spowodują koniec zabawy. Dokładniej, czy czasem robienie aplikacji bez określonych wytycznych nie jest zabawą ? Na to pytanie spróbujmy sobie sami odpowiedzieć ...

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 wszystkiego i niczego pod warunkiem, że wiemy co znaczy konsekwencja. Dzięki niej wiele projektów jest kończonych na czas i ich jakość jest na wysokim poziomie.
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 kodowania konsekwentnego, któro po kodowaniu zwinnym ma tą zaletę, że nikt nam nie zarzuci, że coś mu nie działa w IE6 :-)

Kilka linków:
Testowanie w agile 2
Wojna przeglądarek
Przeglądarki używane przez internautów łączących się z polskimi witrynami z obszaru Polski. Ranking jest tworzony na podstawie liczby odsłon.

Exciting times in python testing world

Python Testing Tools Taxonomy

Agile Testing Articles and Tutorials

22 października 2008

PyCon 2008 Rybnik - wśród przeróżnych Pythonów



Zapowiadana podróż do Rybnika, 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 Python. Oto moje trofea :-)



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 wykładach i udawało mi się zadawać konstruktywne pytania prelegentom, z których snuję sobie wnioski. Jest ich kilka i chcę się nimi podzielić:


  • 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 google.com ) 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.

  • 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 PyCon, natomiast jest to druga tej skali obok poznańskiego RuPy 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 ...

  • 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ę frameworkach i sukcesywnych wdrożeniach różnych aplikacji, między innymi webowych. Mam na myśli Django, o którym wspomniał na tej konferencji Marcin Mierzejewski (polecam też podstawy Django, które przygotował Marcin Kaszyński na Django - EuroPython 2008) i do tego CMS z możliwością rozbudowy Plone

  • bo Python też trochę wyznaje filozofię Ubuntu, 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 ;)

  • 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 Java 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 :-)

  • okazuje się, że spora jest liczba dopracowanych bibliotek standardowych do pisania skryptów oraz niezależnych projektów OpenSource t.j. Sourceforge.net, koders.com,

  • szybki start programowania i sprzyjająca kodowaniu w konwencjonalnym stylu napisana dokumentacja np: Python Docs WebOb. Wybór języka Python przez NASA też nie był przypadkowy.

  • 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ść garbage collection nie będziemy osamotnieni, bo projekt omawiany na konferencji PyPy nam to z miejsca umożliwia

  • moje ulubione testy rozmyte 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 fuzz testing, o których był dość konkretny i obiecujący wykład na konferencji

  • wyczytałem kiedyś, że PHP5 wygląda na zaprojektowany na kolanie 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ń

  • pozwala mi na używanie gotowych i przetestowanych rozwiązań do obsługi GDATA 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

  • okazuje się, że można napisać program bez użycia instrukcji i zmiennych, bo w Pythonie jest możliwe programowanie funkcyjne. 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: lambda, map, reduce, filter

  • 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: PyUnit, unittest, doctest, nosetest

  • jest wiele powodów, dla których w Narodowym Archiwum Cyfrowym 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)






Zachęcam do zapoznania się z językiem programowania Python, bo warto wiedzieć więcej.

Oto kilka uzupełniających słów ze zdjęciami z konferencji PyCon 2008 ... ja nie zrobiłem żadnego, bo za bardzo byłem skupiony na treściach przekazu :-)

Ciekawe linki:
Zarejestrowane konferencje PyCon
http://www.gapminder.org/
http://video.google.com/videoplay?docid=7996617766640098677
http://www.ted.com/index.php/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html

5 września 2008

Kult węża - PyCon PL 2008

Od dziś poszukuje transportu na PyCon PL 2008 :-) Zapisałem się tutaj i mam nadzieję spędzić w dniach 18-19 października weekend w miejscowości Rybnik (na terenie Centrum Kształcenia Inżynierów Politechniki Śląskiej) wśród lubiących oraz wyznających kult węża ;) 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 ...

Swoją drogą bardzo interesujące jest to, jak wielu jest ludzi o podobnych zainteresowaniach w naszym kraju w tematyce wirtualnych węzy :-)

4 września 2008

Modna zabawa w wirtualizację OSów


Nie tylko GIKoWskA moda, ale i wygoda sprawiają, że stajesz się adminem ;-) i masz swoją wymarzoną wirtualizację w wirtualnym świecie marzeń admina, haahahaaa ...


Ulepszona wirtualizacja KVM w jądrze Linux ma swoich fanów. Najciekawsze, że nie tylko amatorów, ale również komercyjne 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.

Ja potrzebowałem wykonać konwersje dysku fizycznego na wirtualny, aby się dobrze bawić wirtualizacją i do tego 2 rdzeniowego laptopa, aby zabawa w wirtualizację systemów operacyjnych była przyjemniejsza. Kiedy okazało się, że w wirualnych obrazach można mieć Win NT oraz Win XP, co tego OpenSolaris, QNX + Neutrino i jeszcze FreeBSD, byłem wniebowzięty ;-)

Dzięki np: wirtualizacji DOSa w określonej przez mojego klienta wersji mogłem zasiąść do starego Turbo Pascala 7.0 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 :)

Temat wirtualizacji i parawirtualizacji rozkręcił się na dobre ... od kiedy zacząłemm używać aplikacji Virtual BOX. Wszystko takie intuicyjne i takie skalowalne, że wypada załączyć tylko orazek i wrócić do zabawy wirtualnkami :)

3 września 2008

FirePHP - nowy płomień PHP w przeglądarkach

Jakiś czas temu natchnąłem się na projekt FirePHP podczas przeglądania bazy ognistych rozszerzeń dla Firebug służącego do odpluskiwania aplikacji JavaScript pod Firefoxa. 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 przykład użycia FirePHP w praktyce

Każdy kto pozostaje wierny poniższym standardom debugowania t.j.:

die(var_dump('slonik'));

echo 'dupa';

die('123');


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 AJAX. Atut podstawowy to centralizacja logów w jednym miejscu.



Pozytywnym wydźwiękiem obiło się również użycie w wielu popularnych frameworkach dla PHP t.j. symfony :-)
Oczywiście, dla lubiących Zend Famework tez znajdzie się coś ciekawego.

1 września 2008

Huurraaaaa ... mamy nową wieloplatformową przeglądarkę Google Chrome

Jak z zaplecza webdeveloperki wiadomo praca tzw. webdevelopera 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, Firefox, Iceape, Opera, ProxyBrowsers i obecna świeżynka ;-) Google Chrome :)

Pierwszy komiks na ten temat poprawia nastrój. Google wie, jak się przyciąga społeczności internetowe, więc komiks polubi zapewne środowisko GEEKó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.

Zebrałem kilka linków w tej sprawie zupełnie przypadkiem :-)
http://arstechnica.com/news.ars/post/20080902-hands-on-with-chrome-googles-browser-shines-mostly.html
http://gizmodo.com/5044032/chrome-googles-open-source-browser
http://blogs.pcworld.com/staffblog/archives/007644.html
http://www.heise-online.pl/news/Chrome-Google-rzuca-wyzwanie-Microsoftowi--/5586
http://kottke.org/08/09/google-chrome-google-browser
http://blogoscoped.com/archive/2008-09-01-n47.html
http://www.wirtualnemedia.pl/article/2434787_Chrome_-_Google_uruchamia_nowa_przegladarke.htm
http://www.techcrunch.com/2008/09/01/meet-chrome-googles-windows-killer/
http://blogs.pcworld.com/staffblog/archives/007644.html
http://blog.searchenginewatch.com/blog/080901-163034

10 sierpnia 2008

htmlSQL - klasa PHP do zapytań typu SQL dla HTML

"Poprawne zadawanie pytań powoduje mniejszy stres" ... jakiś materiał w dziedzinie ułatwiania życia kiedyś nadmieniał. Zapytania to podstawa współczesnego świata ... a przede wszystkim baz danych. Dzięki specyficznemu językowi SQL i jemu podobnym mamy kolejną filozofię SQL zen dla języka HTML :)

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



natomiast źródła klasy oraz przykłady wraz z artykułem na temat htmlSQL przybliżą logikę działania.

Poproszę o wasze opinie z zapoznania się z tak odkrywczą i zabawną klasą.

Podobne projekty: webSQL, webQL

1 sierpnia 2008

Kolorowanki dla webdeveloperów - dobieranie kolorów dla www

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.

Oto kilka linków, którymi chciałbym się podzielić:

http://www.snook.ca/technical/colour_contrast/colour.html

http://www.colourlovers.com/

http://www.colorcombos.com/

http://www.telecable.es/personales/alberto9/color/index.htm

http://www.colr.org/

http://redalt.com/Tools/I+Like+Your+Colors

http://colorfilter.wickline.org/

http://www.mezzoblue.com/archives/2005/02/11/cmyk_for_tho/

http://wellstyled.com/tools/colorscheme2/index-en.html

http://adampolselli.com/colorschemes/

http://www.degraeve.com/color-palette/



http://www.colorcombos.com/color-scheme-266.html

http://www.colorcombos.com/color-scheme-219.html

http://www.colourlovers.com/patterns/add?c=C4C4C4/F0EAE4/CFB499/CCA585/C49464&pID=541939

http://www.colourlovers.com/pattern/112564/By_the_sea_shore

http://www.colourlovers.com/patterns/add?c=FFF1F0/FFE8E6/FFE5E2/FFDBD8/4B2B28&pID=191203

http://www.colourlovers.com/patterns/add?c=C4C4C4/F0EAE4/CFB499/CCA585/C49464&pID=541939


I coś z zupełnie po bliskiej beczki

http://flumpcakes.co.uk/css/optimiser/ - CSS Optimiser

http://salavon.com/GUT/GUT_StarWars.shtml

28 czerwca 2008

IIS - zaskakujący serwer www (na przykładzie klienta poczty OWA)

Chciałbym sie z Wami podzielić informacją o NIEstandardowości serwera IIS, który jest zainstalowany na wielu serwerach w sieci. 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):

Błąd HTTP 401.2 — Bez autoryzacji: Dostęp jest zabroniony. Nie pozwala na to konfiguracja serwera.
Internetowe usługi informacyjne (IIS)



Poniżej cytuje kod strony:

http://www.w3.org/TR/html4/strict.dtd">
Nie masz uprawnień do oglądania tej strony




Nie masz uprawnień do oglądania tej strony


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.


Spróbuj następujących sposobów:



  • Skontaktuj się z administratorem witryny sieci Web, jeżeli uważasz, że wyświetlenie tego katalogu lub strony powinno być możliwe.


  • Kliknij przycisk Odśwież, aby spróbować ponownie z innymi poświadczeniami.


Błąd HTTP 401.2 — Bez autoryzacji: Dostęp jest zabroniony. Nie pozwala na to konfiguracja serwera.
Internetowe usługi informacyjne (IIS)




Informacje techniczne (dla działu Pomocy technicznej)



  • Przejdź do witryny Pomocy technicznej firmy Microsoft i przeszukaj tytuły, używając słów kluczowych HTTP i 401.


  • Otwórz Pomoc usług IIS, która jest dostępna w Menedżerze usług IIS (inetmgr), i wyszukaj tematy Zabezpieczenia — informacje, Uwierzytelnianie i Niestandardowe komunikaty o błędach — informacje.





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".
Wiele programistów PHPa połamalo sobie niemalże palce uzywając go z serwerem IIS :-) i byc moze zbyt wiele wymagamy http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

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"
i co ciekawe przed poczatkiem strumienia HTML też lubi dodawać "\r\n" (razy jeden lub dwa) ...
... a to juz jest niesamowite ;) bo nikt nie wie w jakim celu ...