sobota, 14 lutego 2009

Linux Live USB

Bardzo dużo dystrybucji Linuxa dostępnych jest w wersji Live CD, aby można było sobie przetestować możliwości dystrybucji bez instalacji na dysku. Dzięki narzędziu takiemu jak

UNetbootin

(Universal Netboot Installer), możemy zainstalować różne dystrybucje na nośnikach USB, na przykład Pendrive'ach. Oczywiście na podobnej zasadzie jak Live CD. Jak jest plus takiego rozwiązania?
System ładuje się nieco szybciej niż CD/DVD i nie musimy słuchać kręcącej się płytki ( dotyczy to głównie głośnych napędów).

Ponieważ startujący system 'rozpakowuje się' w RAMie zazwyczaj nie ma możliwości dokonania zmian na lokalnej kopii plików systemowych znajdujących sie na dysku USB( Oczywiście wyniki naszej pracy możemy zapisać na pendrivie.). Co jest jednocześnie wadą(1) i zaletą(2):

-ad 1: nie możemy zapisać zmian dokonych w systemie( na przykład zainstalowanych programów).
-ad 2: zazwyczaj nie możemy 'zepsuć systemu' :)

Ciekawe według mnie rozwiązanie zaproponował twórca dystrybucji Slax
Po pierwsze na stronie możemy powybierać moduły, które nas interesują i dołączyć do naszego systemu Live. Po drugie możemy zadecydować, które moduły mają być startowane w momencie bootowania systemu( katalog 'modules') lub które mają być uruchamiane na życzenie( katalog 'optional').

Zastosowania? na pewno jest wiele:
- Router
- Przenośny bezpieczny system na przykład do odtwarzania multimediów i dostępu do internetu.
- Ratunkowy
- itp.

Aby wystartować z dysku USB, nasz BIOS musi mieć taką opcje ( zazwyczaj nie ma z tym problemu w większości Laptopów), gorzej ze starszymi PC-tami. Należy w Boot sequence zaznaczyć jako pierwszy 'USB Drive' ( nazwa może być nie co inna, ale na pewno z 'USB' :) )

Gdy zaczynałem zabawe z Live USB w ręce wpadł mi MySlax Creator
bardzo fajna zabawka umożliwiająca w łatwy sposób wyklikać własnego Slaxa( a nawet wybrać tapetę na pulpit i ustalić hasło dla root'a :) )

Niestety programik nie działa z najnowszą wersją Slaxa 6.x, ( ja bawiłem się wtedy wersją Slaxa 5.1.8)

czwartek, 5 lutego 2009

Dlaczego Python? - czyli "programowanie z klocków" :)

Dlaczego w Pythonie pisze się tak łatwo szybko i przyjemnie?

Jedną z zalet Pythona jest super prosta składnia, która pozwala pisać bardzo zwięzły kod. Pamiętam taki argument: dlaczego znaki {, } w C są lepsze niż begin i end Pascala? - bo pozawalają każdorazowo zaoszczędzić 6 znaków :) Idąc tą drogą można napisać, że Python jest lepszy na przykład od Javy, bo oszczędza jeszcze te 2 znaki :)

Wymuszanie wcięć w kodzie skutkuje dobrymi nawykami - dotyczy to przede wszystkim początkujących programistów. Ale ma też swoje wady: trudniej jest przenieść fragment kodu na przykład do innej klasy, a zmiana głębokości wcięcia zazwyczaj zmienia działanie fragmentu kodu.
Python jest w pełni obiektowy, ale nic nie stoi na przeszkodzie, żeby pisać w nim strukturalnie - co kto lubi. A znam takie języki w których można pisać tylko i wyłącznie obiektowo ( żeby wypisać 'Hello World' na ekran trzeba napisać klasę, lol).

Spotkałem się z argumentem, że Python jest wolny. Jak na język skryptowy nie jest wcale taki wolny, choć porównywanie jego szybkości z C++ nie ma raczej sensu.

Przede wszystkim pisanie programów w Pythonie przypomina budowanie go z klocków - gotowych komponentów. Biblioteki tego języka w większości napisane są w czystym C dzięki czemu musi on być szybki.
Jak wiadomo, jest to język skryptowy tak jak Perl, PHP, Ruby czy wiele innych, wirtualna maszyna potrafi skonwertować sobie skrypcik do bytecode'u, a wszysto po to żeby działał czybciej.

Jednym z argumentów przemawiających za tym żeby uczyć/nauczyć się pythona jest fakt, że używa go Google( tylko mi nie mówcie: " ja używam Yahoo albo wyszukiwarki onetu" :) ) i NASA.

Każdy język programowania ma swoje zastosowanie, jednakże pole potencjalnego wykorzystania Pythona jest ogromne: począwszy od aplikacji webowych, a skończywszy na obliczeniach( w Pythonie nie ma zakresu liczb!!!, jedynym ograniczeniem jest fizyczna wielkość zasobów Twojego komputera). No może z wyjątkiem gier..., chociaż jest w końcu Pygame, VPython czy Ogre... :)

Ponadto łatwa konwersja typów, listy i kroki, a wszystko po to by ułatwić życie programiści.

Zresztą w sieci pojawia się wiele porównać typu C++ vs Java vs Python, w których nie wiedzieć czemu ;) Python zawsze wygrywa.

wtorek, 3 lutego 2009

Python i PicasaAPI: czyli znowu zdjęcia:)

Treści tutaj zawarte mają na celu pokazanie możliwości języka Python

Problem:


Jan Kowalski ( zbieżność nazwisk przypadkowa) ma konto Google, korzysta też z Picasy, ma kilka albumów, a w nich swoje zdjęcia.

Załóżmy, że chcemy je wszystkie sobie pobrać odtwarzając strukturę katalogów czyli na przykład:

jas.kowalski@gmail.com
|
| ---->wakacje2008 -> [zdjęcia]
|
|---->impreza urodzinowa -> [zdjęcia]
|
|---->wakacje2009 -> [zdjęcia]

itd.

Rozwiązanie:

Z pomocą jak zwykle przychodzi Python i w tym przypadku PicasaApi.

Oto przykład rozwiązania:

skrypt

skrypt.py

Będziemy też potrzebowali biblioteki gdata-python-client:

http://code.google.com/p/gdata-python-client/downloads/list

w sumie nie potrzebujemy wszystkich bibliotek, wystarczą 3:
gdata.photos.service.py
gdata.media.py
gdata.geo.py

a najprościej spkopiować cały katalog gdata do katalogu głównego skryptu.

enjoy

Ściąganie wszystkich zdjęć wybranego użytkownika z portalu Nasza-Klasa - wersja 3

UWAGA: Sktypt ma wyłącznie na celu pokazanie możliwości języka Python i jego bibliotek. Autor nie ponosi żadnej odpowiedzialności za działania skryptu oraz ewentualne straty nim spowodowane, pamiętaj korzystasz z niego na własną odpowiedzialność. Przed skorzystaniem upewnij się, że jego działanie jest zgodne z regulaminem serwisu Nasza-Klasa.

Udostępniam najnowszą i najbardziej dopracowaną wersję skryptu, w której nie trzeba podawać parametru max, ponieważ sprawdzam id ostatniego zdjęcia. To praktycznie wystarcza, bo jeśli użytkownik usunie jakieś zdjęcie pomiędzy to po prostu nie zostanie ono poprane( 404).

skrypt.py

potrzebna biblioteka httplib2:

httplib2


A więc ostateczna lista parametrów:
naszLogin naszeHasło Id

PS.
Proszę nie męczcie mnie już pytaniami jak zainstalować pythona czy jakieś biblioteki, albo dlaczego skrypt nie działa.

niedziela, 1 lutego 2009

Nasza-Klasa: pobieranie zdjęć - poprawiona wersja

UWAGA: Sktypt ma wyłącznie na celu pokazanie możliwości języka Python i jego bibliotek. Autor nie ponosi żadnej odpowiedzialności za działania skryptu oraz straty nim spowodowane, pamiętaj korzystasz z niego na własną odpowiedzialność. Przed skorzystaniem upewnij się, że jego działanie jest zgodne z regulaminem serwisu Nasza-Klasa.

Nawiązując do mojego wcześniejszego posta , po drobnym researchu wyciągnełem kilka wniosków, które zaowocowały drugą wersją sktyptu.

Po pierwsze nie musimy się już przejmować ciastkami( cookies) za to lista parametrów programu wydłużyła się o 2 i teraz wygląda tak:

nasza-klasa.py TwójLoginDoNK TwojeHasło IdOsobyKtórejZdjeciaChcemyPobrać MaxZdjeć

przy czym czwarty parametr jest opcjonalny i jeżeli nie wpiszemy nic - to przyjmie domyślną wartość - 50.

Po Drugie: jak zauważyłem RSS zwraca tylko 10 ostatnich zdjęć ( da sie pobrać RSSa dla wszystkich zdjęć?) , wiec ten pomysł na razie odpada.

zobacz kod: kod
pobierz: nasza-klasa.py

enjoy.

Ściąganie wszystkich zdjęć wybranego użytkownika z portalu Nasza-Klasa

UWAGA: Sktypt ma wyłącznie na celu pokazanie możliwości języka Python i jego bibliotek. Autor nie ponosi żadnej odpowiedzialności za działania skryptu oraz straty nim spowodowane, pamiętaj korzystasz z niego na własną odpowiedzialność. Przed skorzystaniem upewnij się, że jego działanie jest zgodne z regulaminem serwisu Nasza-Klasa.

Napisałem prosty skrypcik do sciągania n pierwszych zdjęć użytkownika o znanym Id na Naszej-Kasie. Już tłumaczę jak on działa i co porzebujemy:

1) musimy mieć konto w serwisie Nasza-Klasa
2) musimy znać id użytkownika, którego zdjęcia chcemy pobrać: można je łatwo znaleść na przykład w pasku adresu url( http://nasza-klasa.pl/profile/xxxxxxx, gdzie xxxxxxx to właśnie to Id)
3) ponieważ mój sktypt jest troche prymitywny:) i nie sprawdza ilośći zdjęć naszego użytkownika musimy podać ile zdjęć chcemy ściągnąć - ale tu można podać spokojnue większą liczbe, bo skrypt jest odporny na błędny
4) i wreszcie najważniejsze: musimy mieć zainstalowanego pythona i parę bibliotek( przypuszczam że wszyskie są w katalogu lib Pythona)
5) WAŻNE: musimy pobrać cookie zalogowanego użytkowika, bo jak na razie skrypt tego nie robi, i wpisać je do zmiennej:

cookies = 'remember_me=...; __utma=...; cookies += ' nk_session=...'

polecam Live HTTP Header do tego celu, można je znaleść też w przeglądarce( Firefox2: Narzędzia->Opcje->Wyświetl Ciasteczka->'wpisujemy w filtrze: nasza-klasa'->i odczytujemy poszczególne ciastka)

jak uruchamiać?:

Linux:
$ python nasza-klasa.py Id max (np. $ python nasza-klasa.py 1234567 50)
Windows:
start->cmd i wpisujemy: nasza-klasa.py Id max

no i źródła:

nasza-klasa.py

miłej zabawy, pozdro

TO DO:
* ułatwić podawanie cookies
* oprzeć silnik na RSS/XML