RPSy w OVH.pl

Kategorie: Inne Internet Techblog 19 października 2008 o 14:53:18 | trackback

W ostatni czwartek zdarzyło mi się wynająć w ovh.pl prywatny serwer RPS I. Miał on służyć testom nowego startupa. Docelowa grupa testerów (około 80 osób), Celeron 1,2 GHz, 512 RAM, Łącze 100 Mbps bez limitu transferu, dysk 10 GB i 50 zł miesięcznie. Dobry serwer do testów można by rzec. Można by… ale:

Prywatne RPSy to rozwiązanie „ekologiczne” i tanie. Aby takim było żadna z maszyn nie posiada fizycznego dysku. Dane przechowywane są na wielkiej, wspólnej macierzy dyskowej dostępnej przez sieć za pomocą NFSa lub iSCSI.

Z grubsza powinno to działać tak:

Ale działa niestety tak:

Mały dowód:

$ time ls /sbin/
real   0m41.424s
user   0m0.008s
sys   0m0.004s

dla porównania mój laptop

$ time ls /sbin/
real   0m0.071s
user   0m0.000s
sys0   m0.003s

Dysk praktycznie nie istnieje a serwer staje się przez to zupełnie nieużyteczny. Nie żeby był to odosobniony przypadek. Wystarczy poczytać ten wątek na forum aby się o tym przekonać.

Na RPSa zdecydowałem się, bo słyszałem, że problemy z dyskami już ustały. Otóż nic podobnego! Od następnego miesiąca przesiadam się na serwer dedykowany z własnym dyskiem. Pewnie skończy się na Kimsufi w opcji L. Chyba, że polecacie coś lepszego w podobnej cenie.

Podsumowując:

RPS w OVH.pl – nie polecam!

Ostatnio rozglądałem się za tutorialem do budowy prostego gadżetu w Pythonie, który siedział by sobie na przezroczystym tle na moim pulpicie. Gadżety Screenlets czy gDesklets działają różnie, zazwyczaj niestabilnie albo, któryś (akurat przydatny) całkowicie się nie odpala. Poza tym potrzebowałem coś maksymalnie prostego a nie całej platformy dla gadżetów.

Wpadłem więc dziś na pomysł wykorzystania Tildy jako ładnego kontenera. W zasadzie to do pełni szczęścia potrzebne były dwie paczki: tilda i python-feedparser. Znajdziecie je w każdej dystrybucji. Dla archowców:

# pacman -S tilda python-feedparser

Tildę najlepiej skonfigurować następująco:

W sekcji Command w polu Custom Command umieszczamy adres skryptu, ale o tym za chwilę.

Teraz czas na Pythona. Wystarczy sworzyć malutki skrypt o takiej treści:

#! /usr/bin/env python

import feedparser
import time
import os, sys

# nieskonczona petla
while 1:
	# pobierz RSS
	feed = feedparser.parse("http://jogger.pl/rss/")
	# wyczysc ekran
	sys.stdout.write(os.popen('clear').read())
	# dla kazdego wpisu
	for note in feed['entries']:
		# wypisz tytul
		print "- %s" % note['title']
	print "\nhttp://jogger.pl/"
	# odczekaj 60 sekund
	time.sleep(60)

Skrypt wystarczy zapisać np. jako jogger.py i wpisać ścieżkę do niego w polu Custom Command. W moim przypadku jest to:

python /home/tomek/go/python/jogger.py

I to by było na tyle. Po ponownym uruchomieniu Tildy powinniśmy mieć ładny przegląd wydarzeń na joggerze odświeżany co 60 sekund. Gdy coś nas zainteresuje wystarczy przytrzymać ctrl i kliknąć link do joggera.

Oczywiście może to być dowolny kanał RSS/Atom czy coś zupełnie innego np. statystyki obciążenia naszego serwera. Żadnych tam Googlowych gadżetów z tysiącem funkcji. Prosto łatwo i przyjemnie.

Już dawno miałem o nim napisać notkę jednak zawsze gdzieś mi to uciekało. Ale nie tym razem.

Język dot służy do opisywania schematów za pomocą tekstu. Pewnie brzmi to niewyraźnie, dlatego od razu przejdźmy do konkretów. Aby skorzystać z dobrodziejstw języka dot instalujemy pakiet graphviz.

# pacman -S graphviz

Następnie otwieramy nasz ulubiony edytor tekstu i zaczynamy pisać:

digraph linux {
    Linux -> Debian;
    Linux -> "Red Hat";

    Debian -> Ubuntu;
    Debian -> Knoppix;

    Ubuntu -> Kubuntu;
    Ubuntu -> Edubuntu;
    Ubuntu -> Xubuntu;

    "Red Hat" -> Mandrake;
    "Red Hat" -> Fedora;

    Mandrake -> Mandriva;
}

Tak przygotowany plik zapisujemy jako test.dot A teraz najlepsza część, czyli budujemy schemat

$ dot -Tpng test.dot -o test.png

TIP: Pliki możemy eksportować również do innych formatów

W efekcie powinniśmy otrzymać plik test.png, który wygląda tak:

Narysowanie czegoś takiego w Inkscape pewnie zajęło by Wam kilka minut więcej. Najlepszą według mnie zaletą języka dot jest to, składa on się ze zwykłego tekstu, dzięki czemu w łatwy sposób możemy generować te pliki przez różne mechanizmy. Np. jeżeli mamy bazę danych firmy gdzie jakaś tabela obrazuje zależności pomiędzy przełożonymi a podwładnymi wówczas możemy szybko napisać skrypt w PHP czy Pythonie, który z pomocą tej tabeli wygeneruje nam plik dot a następnie utworzy z niego ładny schemat.

Na tym jednak nie koniec. Język dot to prawdziwe bogactwo kształtów grotów i kolorów. Za pomocą kombinacji różnych tych elementów możemy dokładnie zamodelować to co chcemy.

Więcej przykładów znajdziecie w galerii.

Od dawna chciałem już zrobić coś związanego z kamerą. W tym semestrze nadarzyła się okazja i zaproponowaliśmy prowadzącemu własny temat projektu z przedmiotu o nazwie „struktury systemów informatycznych”. Naszym zamierzeniem było stworzenie programu, który działałby podobnie jak gesty wykonywane myszą w Firefoksie tyle, że rolę myszki odegrać miała kamera. Założenia wstępne: platforma – Linux, język – Python.

Najwięcej problemów sprawiła nam sama kamera, a dokładniej to zbieranie i przetwarzanie jej obrazu.

Na początku zabraliśmy się za testowanie reacTIVision, które w zasadzie jest oprogramowaniem dla ekranów wielodotykowych. ReacTIVision ma swoją bibliotekę 89 symboli, które potrafi rozpoznać określając ich numer id, pozycję x-y, kąt nachylenia a nawet przyśpieszenie.

Symbole wyglądają tak:

Kamera widziała to tak:

A reacTIVision tak:

Działo to całkiem sprawnie. Jeżeli wykonaliśmy szybszy ruch markerem, a dokładniej przyśpieszenie markera przekroczyło pewną granicę, wówczas rozpoczynał się rysować gest. Wadą jednak tego rozwiązania były markery. Jeżeli nie miało się markera to program był bezużyteczny. Trzeba było więc go zastąpić czymś co ma każdy, np. ręką :-)

Do łapania obrazu z kamery tym razem wykorzystaliśmy moduł Pythona pyvideograb. Znaleźliśmy nawet bardzo przydatny skrypt, który wykrywał punkty ruchu w obrazie poprzez porównywanie dwóch sąsiednich klatek. Co prawda autorzy zaznaczyli, że działa tylko pod Windowsem z uwagi na moduł do przychwytywania obrazu z kamery, ale ten łatwo można było podmienić.

Teraz wystarczyło wrzucić wszystko do Pygame’a i już pierwsze efekty były widoczne.

Program wykrywał ruch i potrafił określić współrzędne punktu ruchu, co w przypadku poruszającej się większej powierzchni oznaczało jej środek.

Po naciśnięciu spacji możemy już wykonywać gest.

Następny etap to sieć neuronowa a dokładniej sieć Hopfielda. Dzięki niej jesteśmy w stanie rozpoznać, czy wykonany gest zgadza się z jednym z 4 wzorców. Jeżeli tak, wykonywane jest przypisane do niego polecenie.

W konsoli wygląda to tak:

W tej chwili program ma wprowadzone 4 wzorce (plik: patterns.txt)

Przypisane do nich działania można łatwo edytować (interfejs.py)

Jeżeli ktoś miał by ochotę się tym pobawić lub zrobić z tym coś więcej to proszę bardzo.

Gesty v0.001 na licencji GNU GPL

Projekt – 4.5, radość ze zrealizowanego pomysłu – bezcenna ;-)

Współautorzy:
– Marek Knaga
Jarosław Miazga

UPDATE: ponieważ strona projektu pyvideograb od jakiegoś czasu jest martwa zamieszczam spakowany moduł pyvideograb.tar.gz

Odkąd zagościł u mnie dżin używam tylko jego. Jest szybki i ma wszystko czego mi trzeba. No może prawie wszystko. Brakowało mi tylko snippetów czyli po polsku wstawek. To ostatnia rzecz jakiej brakowało mi do szybkiej i efektywnej pracy. Bo co klepać linie kodu, kiedy można klepnąć tabulator :-)

Co jakiś czas sprawdzałem czy pojawiła się już odpowiednia wtyczka zapewniająca taką funkcjonalność, ale póki co nadal jest to tylko pozycja na liście życzeń. Dopiero wczoraj znalazłem w dokumentacji, że większość jest już zrobiona !

W katalogu w którym zainstalował się Geany znajdziecie plik snippets.conf. U mnie pełna ścieżka to:

/usr/share/geany/snippets.conf

Teraz wystarczy skopiować go do naszego katalogu domowego:

$ cp /usr/share/geany/snippets.conf ~/.geany/

I już możemy dodawać do niego dowolne wstawki. W bloku [Special] możemy zadeklarować słowa kluczowe, których będziemy używać przy tworzeniu naszych wstawek. Np. żeby nie powtarzać często ładnego otwarcia bloku kodu {} deklarujemy to raz:

klamry=\n{\n\t\n}\n

a następnie możemy używać tego słowa kluczowego przy deklaracji naszych wstawek:

[PHP]
for=for ($i = 0; $i < %cursor%; $i++)%klamry%

Na początek zadeklarowałem sobie kilka wstawek z HTML-a. Jeżeli ktoś chce to niech się częstuje:

wget http://citizen.ovh.org/stuff/snippets.conf -O ~/.geany/snippets.conf

Efekt działania

Google Sites w GAFYD

Kategorie: Internet Techblog 29 lutego 2008 o 13:40:58 | trackback

Niedawno Google wypuściło bardzo fajną rzecz. Usługa nazywa się Google Sites i jest częścią aplikacji przeznaczonych dla własnej domeny (Google Apps for Your Domain). Nie będę tutaj opisywał całości funkcjonalności, bo pewnie do wieczora bym nie skończył. Trzeba zobaczyć to na własne oczy i samemu poklikać.

Na początek filmik

Teraz należy udać się na kilka przykładowych stron: Company intranet, Team project, Employee profile, Classroom.

Myślę, że jest to świetna usługa dla wszelkiego rodzaju projektów. Szkoda że Google Code nie ma takiej funkcjonalności. Z minusów jakie zauważyłem to niewątpliwym jest brak możliwości komentowania przez odwiedzających. Taką możliwość mają tylko osoby kolaborujące. Mam nadzieję, że wkrótce jakoś to naprawią bo wpływa to w znacznym stopniu na feedback ze strony użytkowników.

Kolejna cześć sagi „zaktualizowałem jądro i sieciówka się posypała”. Próba skompilowania mojego ostatniego wydania sterowników kończy się błędem

scripts/Makefile.build:46: *** CFLAGS was changed in „src/Makefile”. Fix it to use EXTRA_CFLAGS. Stop.

Natomiast próba zbudowania paczki z AUR kończy się dla odmiany innym ;-)

atl2_main.c:1451: error: implicit declaration of function ‘SET_MODULE_OWNER’

Sterowniki z AUR naprawić jednak łatwo. Wystarczy wyedytować plik atl2_main.c i posłać linię 1451 w krzaki

...
netdev = alloc_etherdev(sizeof(struct atl2_adapter));
if(!netdev) goto err_alloc_etherdev;

//SET_MODULE_OWNER(netdev);
SET_NETDEV_DEV(netdev, &pdev->dev);

pci_set_drvdata(pdev, netdev);
adapter = netdev_priv(netdev);
...

Wersja dla leniwych: atl2-2.0.3.tar

Po rozpakowaniu wchodzimy do katalogu i czarujemy

# make
# cp atl2.ko /lib/modules/2.6.24-ARCH/kernel/drivers/net/
# modprobe atl2

i powinno działać

Pacnet jest próbą kategoryzacji pakietów z repozytoriów Arch Linuksa zgodnie z kategoriami używanymi przez Gentoo Portage. Na chwilę obecną znajduje się tutaj 4138 pakietów z repozytoriów core, extra i community.

Jeżeli zauważycie, że jakiś pakiet znajduje się w niewłaściwej kategorii, nie czujcie się skrępowani żeby ją zmienić. Pakiety mogą być niewłaściwie przypisane do kategorii, ze względu na rozbieżności w nazewnictwie pomiędzy obiema dystrybucjami.

Liczę na to, że z Waszą pomocą doprowadzimy szybko to repozytorium do porządku i co najważniejsze – przydatności.

pacnet.karbownicki.com

Ostatnio wiele serwisów donosiło o nowym wydaniu (v1.0) programu do obsługi kamer – wxCam. Żaden nie wspomniał jednak że w nowej wersji dodano bardzo interesującą funkcję – nagrywanie przy wykryciu ruchu. Ale po kolei.

Instalacja

W repozytorium Archa paczki nie ma, nie ma też nic w AUR. Trzeba radzić sobie samemu. Główne wymagania to:

  • libwxgtk2.8 (jest w repozytorium)
  • libxvidcore4 i libxvidcore4-dev (chodzi o xvidcore – jest w repozytorium)
  • Revel – pobieramy źródła
  • CImg – pobieramy źródła

Revel kompilujemy standardowo:

# ./configure
# make
# make install

CImg kompilujemy tak:

cd examples
make olinux

w wyniku tego katalog wyżej powstanie nam pliczek CImg.h, który należy skopiować do katalogu ze źródłami wxCam.

wxCam kompilujemy standardowo:

# ./configure
# make
# make install

Gotowe. Teraz polecenie wxcam powinno odpalić nam program.

Wykrywanie ruchu

Klikamy Capture > Show movement detection areas i zaznaczamy interesujący nas obszar

Następnie klikamy Capture > Movement detection i możemy już rozpocząć nagrywanie. W przypadku braku ruchu nagrywanie powinno się automatycznie zatrzymać.

Przykład:

Możliwe jest też zaznaczenie kilku obszarów

Chociaż wxCam nie ma żadnego API do którego można by podpiąć jakiś „alarm” to jednak łatwo to zrobić. Wystarczy tylko napisać skrypt monitorujący wielkość pliku do którego nagrywany jest obraz. Jeżeli plik zacznie się zwiększać oznaczać to będzie, że wykryto ruch i można wykonać jakieś działanie.

Dodatkowo wxCam oferuje kilka filtrów obrazu np.:

  • Odbicie lustrzane
  • Odwrócenie obrazu
  • Odcienie szarości
  • Rozmycie
  • Negatyw
  • Szum
  • Wykrywanie krawędzi
  • Nakładanie daty

i kilka innych

W związku z ostatnimi zmianami loga Archa postanowiłem dopracować mój laptopowy system i dogonić Ubuntu w estetyce startu systemu. W tym celu zainstalowałem wynalazek o nazwie Splashy który ładnie maskuje kilobajty tekstu generowanego przy starcie przykrywając je ładnym obrazkiem. W tym miejscu opisałbym instalację, ale dobrzy ludzi już to zrobili więc tylko zlinkuję

Uwaga! Przy instalacji podmienianych jest kilka plików konfiguracyjnych w /etc/ np. rc.conf zostaje zastąpiony nowym a stary zapisywany jest jako rc.conf.pacsave więc nie zapomnijcie przywrócić starych plików przed ponownym uruchomieniem.

Po instalacji możemy zabrać się za zmianę motywu. Ja używam takiego

# splashy_config -i archer-black-splashy.tar.gz

Ponieważ zmiana motywu jest zmianą w konfiguracji musimy przebudować jądro

# mkinitcpio -p kernel26

Teraz wystarczy jeszcze zadbać o menadżer logowania. W moim przypadku jest to taki motyw dla Slima. Kopiujemy zawartość archiwum do /usr/share/slim/themes/, edytujemy plik /etc/slim.conf i zmieniamy current_theme

current_theme archer-black

I tapetka

Całość prezentuje się tak:
(wiem trochę słabo widać, ale lepiej się nie udało)

Na koniec żeby nie było za słodko, mały błąd. Po instalacji Splashy w górnym menu pojawiły mi się dziwnie skupiska małych kreseczek

Temat jest znany i prawdopodobnie jest to bug. Jednak w moim przypadku nie jest on zbyt uciążliwy.

Ostatnio zaczynam mieć dość webowych aplikacji. Oglądanie wszystkiego w przeglądarce nie zawsze jest wygodne, no i nie zawsze szybkie zważywszy na ilość rozszerzeń jakie wcieliłem do Firefox-a. Czasami też wyłączam okno przeglądarki zapominając, że w któreś z zakładek siedzi coś co np. odtwarza muzykę z Jamendo. Do webaplikacji Googla używam już od jakiegoś czasu Prisma. Działa to lepiej ale nadal nie jest to /to coś/ czego szukam. Jeżeli mogę staram się używać aplikacji natywnych np. Gmail via Thunderbird (przez IMAP) czy Google Calendar via Lightning (rozszerzenie do Trunderbird-a). Aplikacje webowe mają jednak bardzo dobrą cechę – są mobilne. Nie mając naszych ulubionych aplikacji pod ręką i tak zawsze się do nich dostaniemy choćby przez tfu IE tfu.

Dzisiaj trochę bawiłem się PyGTK wynikiem czego wykombinowałem mały skrypt. Sam się zdziwiłem jak można łatwo ubierać strony w jakieś natywne GUI. Poniższy skrypt jest zwykłym oknem przeglądarki opartej na gtkmozembed tyle, że potrafi schować się do ikonki w zasobniku systemowym dzięki czemu świetnie sprawuje się już jako odtwarzacz moich ulubionych utworów z Jamendo.

Przy pierwszym uruchomieniu należy się zalogować w serwisie (nowej wersji serwisu), a przy następnych od razu ładowany będzie ichniejszy player.

Skrypt: jtip.py

Odpalamy standardowo jak na pythona przystało:

$ python jtip.py

Oczywiście skrypt łatwo wykorzystać do obsługi innej strony.

BTW: Kiedy ktoś zrobi wtyczkę do QuodLibet obsługującą Jamendo ?

BTW2: Jak spowodować aby klikanie na krzyżyk chowało aplikację do ikonki w zasobniku? W moich próbach okno niby udało mi się ukryć nie wyłączając aplikacji, ale dźwięk się urywał a po kliknięciu na ikonkę w zasobniku przywracało się gołe okno.

Jakiś czas temu pojawił się u mnie router WiFi, a ponieważ chciałem uchronić moje łączę przed wiszącą na nim połową osiedla musiałem transmisję poddać szyfrowaniu.

Router D-link 524, całkiem fajny

O ile otwarte sterowniki bcm43xx dobrze radziły sobie z transmisją otwartą to jednak o szyfrowaniu można było pomarzyć. Musiałem więc poszukać czegoś innego i tutaj z pomocą przyszedł NDISwrapper Ogólnie rzecz ujmując potrafi on emulować sterowniki kart sieciowych napisane dla Windowsa tak, aby działał pod Linuksem.

Instalacja NDISwrapper-a jest dość prosta. Na początek musimy się pozbyć dotychczasowego sterownika bcm43xx jeżeli go używamy. Można zrobić to usuwając pakiet lub dodając go do czarnej listy modułów, tak aby nie był ładowany przy starcie systemu. W Archu czarna lista znajduje się w pliku /etc/rc.conf i dodanie do listy wyglądało by np. tak:

MOD_BLACKLIST=(asus_acpii bcm43xx)

Następnie instalujemy NDISwrapper-a. Każda szanująca się dystrybucja powinna mieć odpowiednie paczki w swoim repozytorium. Zazwyczaj są to dwie paczki: ndiswrapper i ndiswrapper-utils. W Archu wygląda to tak:

# pacman -S ndiswrapper ndiswrapper-utils

Po instalacji sięgamy po płytkę ze sterownikami do naszej karty sieciowej i ładujemy odpowiedni plik do NDISwrapper-a.

# ndiswrapper -i bcmwl5.inf
# ndiswrapper -l
# modprobe ndiswrapper
# ndiswrapper -m

Jeżeli jednak nie mamy sterowników możemy je pobrać z sieci. Trzeba tylko dokładnie wiedzieć jaki numerek ma nasza karta sieciowa. Dowiedzieć można się tego wydając takie magiczne zaklęcie:

# lspci -n | egrep '14e4:43(06|07|11|12|18|19|21|24|25|28)'

Następnie mając numerek karty możemy pobrać odpowiedni plik. Dokładna listę które numerki pasują do których strowników znajdziecie w helpie Ubuntu

Jak już pisałem ostatnio po aktualizacji jądra do wersji 2.6.23 całkowicie wysypała mi się karta sieciowa Attansic L2. Kompilacja sterowników zatrzymywała się na błędzie informującym o nieznanej funkcji eth_copy_and_sum. Z pomocą przyszedł jednak rlblaster i chociaż trafił na notkę pewnie przypadkiem i zupełnie nie miał pojęcia o języku polskim to jednak podpowiedział jak rozwiązać błąd. Wyżej wymieniona funkcja została pewnie usunięta z nowej wersji jądra, dlatego musimy napisać ją sami. A wygląda to mniej więcej tak:

Około linii 243 w pliku at_main.c dopisujemy taką oto funkcję:
void eth_copy_and_sum(struct sk_buff *dest, unsigned char *src, int length, int base)
{ memcpy(dest->data, src, length);
}

Dzięki temu zabiegowi błąd z nieznaną funkcją zostaje zażegnany. Pozostaje co prawda problem z dwiema innymi funkcjami ale jak przeczytałem na jednym z blogów wystarczy zakomentować wnętrze tych funkcji pozostawiając tylko komendę return.

Tak załatany sterownik zaczął działać, ale szybko zauważyłem, że zamiast przepustowości rzędu 2000 kbps wyciąga około 50 kbps. Wróciłem więc do kodu sterownika i zacząłem grzebać dalej. Okazało się, że w nowym jądrze zmianie uległa też nazwa innej funkcji. Rozwiązaniem było zastąpienie odwołań do:

vlgrp->vlan_devices[vid]

na:

vlgrp->vlan_devices_arrays[vid]

zamiast komentować ciała funkcji które zawierają te linie.

Teraz sieciówka działa już pełną parą.

Wersja dla leniwych: atl2.tar

Po rozpakowaniu wchodzimy do /src/ i wydajemy komendy

# make && make install

A później ładujemy sterownik

# modprobe atl2

Zaczęło się od tego, że wtrąciłem mały offtopic w temacie o uploaderze dla Picasa Web, kiedy tu znienacka zjawił się Marek Wiewórski z gotowym rozwiązaniem

Wymagania

Ale od początku. Do skryptu potrzebna będzie nam biblioteka flickyou Wystarczy że pobierzemy ją z na dysk, rozpakujemy, wejdziemy do katalogu i wpiszemy:

# python setup.py install

Flickyou do działania potrzebuje też innego modułu pythona — simplejson. Jeżeli więc go jeszcze nie posiadamy to:

# emerge -av dev-python/simplejson

Zdobywamy klucz API

Aby połączyć się z API serwisu Flickr należy zdobyć dwa klucze – key i secret, czego możemy dokonać na tej stronie

Kiedy mamy już klucze tworzymy w katalogu domowym plik .flikr.cfg o następującej strukturze:

[Auth]
api_key: KLUCZ_KEY
secret_key: KLUCZ_SECRET

Oczywiście zamiast KLUCZ_KEY i KLUCZ_SECRET wstawiamy odpowiednie numerki.

Odpalamy skrypt

Teraz zabierzmy się za skrypt właściwy Nadajmy mu prawa do wykonania:

# chmod +x flickr.py

I przenieśmy do /usr/bin/ aby był widziany jako polecenie

# mv flickr.py /usr/bin/flickr

Od tej chwili mamy prawie działający skrypt. Prawie bo czeka nas jeszcze pierwsze uruchomienie. A wygląda to najprościej jak można.

$ flickr jakis_plik.png

Teraz jeżeli wszystko zrobiliśmy dobrze pozostaje nam potwierdzenie autentyczności programu posługującego się naszym kluczem API. Powinna otworzyć nam się przeglądarka tekstowa a naszym zadaniem jest zalogowanie się do serwisu Flickr i kliknięcie na link zezwalający naszemu skryptowi na korzystanie z API. Dokładniej wygląda to tak, że po zalogowaniu klikamy w jeden redirect a na następnej stronie znajdziemy już na środku link zezwalający. Po całej operacji można już zamknąć przeglądarkę i gotowe! Nasz skrypt powinien już działać jak należy.

Jak widać skrypt do razu podaje nam linki do miniaturki oraz pełnego rozmiaru. Po prostu idealne do zastosowania blogowego lub gdy chcemy szybko komuś pokazać jakiś screen.

Integracja z Thunarem

Jako że przeniosłem się na gibkie Xfce wypadałoby skorzystać z jego zalet. Sprawa jest banalnie prosta. Odpalamy Thunara i klikamy Edycja > Konfiguruj akcje… Tutaj znajdziemy małe okienko gdzie dodamy upload grafiki na Flickr. Klikamy w plusik i wpisujemy co następuje:

nazwa: Flickr
Opis: Upload grafiki na Flickr
Polecenie: flickr.py %F > /tmp/flickr && geany /tmp/flickr
Ikonka: Ściągamy z http://yourkee.com/icon/flickr.png

Tutaj małe objaśnienie samego polecenia. Symbol %F wstawia nam ścieżki do wszystkich plików, które zaznaczymy w Thunarze. Jednak, jeżeli nie odpalimy całego polecenia w terminalu, to nie będziemy mieli podglądu na wyświetlane linki do miniaturki i pełnej grafiki, co nam się nie podoba ;-) Przekierujemy więc wyjście całego polecania do pliku /tmp/flickr a następnie, po zakończeniu uploadu otwieramy go naszym ulubionym edytorem. W moim przypadku jest to Geany ale równie dobrze możecie zrobić to Geditem czy czymkolwiek innym.

Teraz przechodzimy do zakładki Warunki pokazywania i zaznaczamy tam Pliki graficzne

Integracja zakończona! Teraz w Thunarze po kliknięciu prawym przyciskiem myszy na jakiś plik graficzny w menu kontekstowym powinniśmy widzieć opcję Flickr. Możemy też zaznaczyć w ten sposób kilka plików graficznych i wrzucić je jednocześnie.

Integracja z Mirage

Mirage czyli przeglądarka grafiki, o której wspomniałem ostatnio ma podobnie jak Thunar możliwość definiowania własnych czynności. Wystarczy kliknąć Modyfikuj > Własne czynności > Konfiguruj. Na tej samej zasadzie możemy więc dorobić tutaj upload na Flickr. Mamy możliwość, a nawet musimy przypisać każdej nowej akcji odpowiedni skrót klawiszowy. Ot taka dbałość o wygodę użytkownika ;-). Ja sobie przypisałem Ctrl+Shift+F

To by było na tyle. Miłego użytkowania i podziękujcie Markowi

PS. O konsolowym uploaderze do Picasa Web pisałem wcześniej

Dwa dni temu postanowiłem zrealizować wreszcie mój pierwotny pomysł na linuksa czyli Gentoo+Xfce4. Pokrótce więc opowiem jak to przebiegło.

Usuwamy Gnoma

Żeby usunąć Gnoma najpierw należy pozbyć flagi gnome z wszelkiego oprogramowania jakie jej używa. W moim przypadku wystarczyło z make.conf wywalić globalną flagę gnome.

# vim /etc/make.conf

Należy się też upewnić czy flaga gnome nie występuje przypadkiem w pliku package.use

# vim /etc/portage/package.use

Robimy tak dlatego, aby po usunięciu oprogramowania, wywołanie revdep-rebuild nie przywróciło nam wszystkiego, o co prosić będą programy posiadające ową flagę. Po usunięciu flagi musimy przekompilować world.

# emerge -avuDN world

Teraz zabieramy się za właściwe usuwanie. Potrzebny będzie nam tutaj programik eix służący do szybkiego przeszukiwania pakietów. Jeżeli jeszcze go nie mamy to

# emerge -av eix

A następnie tworzymy bazę informacji o pakietach

# update-eix

Sprawdzamy teraz jakie pakiety mają zostać usunięte

# eix -C -I gnome | grep "\[I\]" | awk '{print $2}' |xargs emerge -pC

No i wreszcie usuwamy Gnoma

# eix -C -I gnome | grep "\[I\]" | awk '{print $2}' | xargs emerge -C

Po wszystkim sprawdzamy czy nie uszkodziliśmy jakiś zależności

# revdep-rebuild

Więcej: gentoo-wiki

Instalacja Xfce4

Teraz instalujemy główne środowisko Xfce4

# emerge -av xfce4

Oraz kilka dodatków

# emerge -av xfce4-extras

Więcej: gentoo-wiki

Menadżer logowania

Jako że moim założeniem była maksymalna szybkość, lekkość i zwiewność to pozbyłem się również GDM-a i zamieniłem go na lekkiego SLiMa No bo po co mi np. możliwość zdalnego logowania i inne bajery skoro i tak ich nie używam.

# emerge -av slim

Dodamy też klika motywów

# emerge slim-themes

Plik konfiguracyjny znajdziemy tutaj

# vim /etc/slim.conf

Sprawdźmy w nim czy nasza sesja xfce znajduje się na liście sesji

sessions xfce4,icewm,wmaker,blackbox

Jest, czyli wszystko gra. Domyślnie będziemy logowani do xfce a w razie potrzeby możemy zmienić sesję naciskając F1 podczas logowania.

Listę dostępnych motywów znajdziemy tutaj:

# ls /usr/share/slim/themes/

Jeżeli chcemy zmienić motyw wystarczy w pliku konfiguracyjnym Slima podać właściwą nazwę katalogu z motywem w linijce:

current_theme rainbow

Można też wypisać kilka po przecinku, wtedy za każdym razem włączy się losowy. Sam motyw jest bardzo prosty do zrobienia samemu, bo składa się zaledwie z trzech plików (grafika tła, grafika „formularza” logowania i prosty plik konfiguracyjny).

Po instalacji każemy systemowi ładować SLiMa zamiast GDMa

# vim /etc/rc.conf

Zmieniamy linijkę

DISPLAYMANAGER="gdm"

na

DISPLAYMANAGER="slim"

oraz linijkę

XSESSION="gnome"

na

XSESSION="startxfce4"

Więcej: gentoo-wiki

Amen

No i gotowe! Po restarcie powinniśmy zobaczyć coś takiego

A później gładko i szybko zalogować się do Xfce.

Zamienniki programów

Jako że środowisko jest bardzo lekkie i szybkie, oraz zrobiliśmy już pierwszy krok w postaci zamiany GDMa na Slima to czas pójść za ciosem.

Squeeze – program do pakowania

Oczywiście integruje się z Thunarem dzięki czemu naciskając prawym na katalog mamy w menu pakuj/rozpakuj.

ePDFView - czytnik PDF-ów

Mirage – przeglądarka grafiki

Geany – bardzo szybkie IDE

Geany to w zasadzie hit sezonu. Zainstalowałem dżina na krótko przed usunięciem Gnoma i uruchamiał się o wiele szybciej niż Gedit Praktycznie to uruchamia się natychmiast po kliknięciu na ikonkę. Przy czym ma wszystko czego potrzebuję: kolorowanie wielu składni kodu, podpowiadanie poleceń i zwijanie kodu. Nie wysypuje mi się też na zastępowaniu wyrazów w przeciwieństwie do gPHPEdita

Programy którym pozostałem wierny:

No i oczywiście: Firefox, Mplayer, OpenOffice, Gimp, Inkscape oraz kilka innych.

Więcej: Xfce-wiki

Podsumowanie

Sam się zastanawiam dlaczego wcześniej tego nie zrobiłem, teraz wszystko działa ile fabryka dała. Xfce jest bardzo elastyczne i szybko przystosowałem je do przyzwyczajeń jakie wyniosłem z Gnoma. Po prostu pięknie!

Niedawno jeszcze użerałem się z F-spotem który jak na złość nie potrafił przejść autoryzacji Picasa. W dodatku biblioteka libgphoto2 z której korzysta F-spot gryzła się z gnomowym automount’erem sprzętu przez co pingwin nie wykrywał mi aparatu. Zmuszony więc byłem odesłać F-spota na /dev/drzewo i poszukać alternatywy.

Z pomocą przyszedł Marcin Sochacki (Wanted) ze swoim bardzo wygodnym w użyciu skryptem opartym o Pythonowe API dla Googla

Skrypt wystarczy zapisać na dysku, następnie wyedytować plik i wpisać swój login oraz hasło

username = 'UZYTKOWNIK'
password = 'HASLO'

Teraz nadajemy skryptowi prawa do wykonywania

$ chmod +x picasa_upload.py

I dla wygody przerzucamy go rootem do /usr/bin aby stał się poleceniem:

# mv picasa_upload.py /usr/bin/picasa

Gotowe. Do dyspozycji mamy teraz polecenie picasa którego składania jest bardzo prosta. Jeżeli chcemy np. wrzucić na Picasa zdjęcia znajdujące w katalogu abc wystarczy że wejdziemy do niego i wklepiemy:

$ cd abc/
$ picasa Zdjecia-z-pikniku *.jpg

Skrypt założy nowy album o nazwie Zdjecia-z-pikniku i wrzuci do niego wszystkie pliki o rozszerzeniu .jpg które znajdują się w katalogu. Pice of cake!

My own YouTube

Kategorie: Linux Techblog 19 marca 2007 o 17:36:01 | trackback

Jako, że wczoraj zotałem napadnięty i zarzucono mi nie bycie dość pr0 więc dzisiaj nadrabiam straty ;)

Kilka razy już chciałem nagrać jakiś filmik z ekranu i wrzucić go na Google Video, ale za każdym razem wynik był marny – za duża kompresja i za mała rozdzielczość. Dotyczy to również klasycznych nagrań z kamery, które chcilibyśmy pokazać w nieco większej rozdzielczości.

Do tego celu potrzebne będą nam 3 rzeczy:

  • coś do nagrywania ekranu, ja używam xvidcap
  • ffmpeg – narzędzie do czarowania plików video
  • darmowy flash video player – ja użyję FlowPlayer

Krok 1.

Nagrywany filmik. Produktem wyjściowym jest film.avi.

Krok 2.

Przy pomocy magicznego zaklęcia konwertujemy film do postaci flashowej.

ffmpeg -i film.avi film.flv

Jeżeli chcemy skompresować do danego wymiaru to:

ffmpeg -i film.avi -s 320x240 -ar 44100 -r 12 film.flv

Krok 3.

Podpinamy plik film.flv pod nasz flashowy odtwarzacz:

<object type="application/x-shockwave-flash" data="FlowPlayer.swf" width="924" height="690" id="FlowPlayer">
<param name=„allowScriptAccess” value=„sameDomain” />
<param name=„movie” value=„FlowPlayer.swf” />
<param name=„quality” value=„high” />
<param name=„scale” value=„noScale” />
<param name=„wmode” value=„transparent” />
<param name=„allowNetworking” value=„all” />
<param name=„flashvars” value=„config={
   autoPlay: false,
   loop: false,
   initialScale: ‘scale’,
   showLoopButton: false,
   showPlayListButtons: false,
   playList: [
      { url: ‘http://karbownicki.com/files/baner.jpg’ }, 
      { url: ‘film.flv’ },
      { url: ‘http://karbownicki.com/files/baner.jpg’ } ]
   }” />
</object>

FlowPlayer obsługuję playlisty, więc możemy przed i po właściwym filmiku wstawić jakiś obrazek czy inny filmik. W ten sposób można np. założyć własną telewizję internetową i utrzymywać się z reklam wstawianych przed właściwymi filmikami ;)

Gotowe. Zobacz przykład

Google Up

Kategorie: Internet Techblog 15 marca 2007 o 20:46:12 | trackback

Wczoraj moim oczom ukazała się dobra nowina. Gajim po włączeniu i połączeniu się z kontem googlowym ładnie wyświetlił transporty i równie ładnie się do nich zalogował. Tym samy dziwny problem, znikających od jakiegoś czasu transporów, o którym pisałem w poprzedniej notce odszedł w zapomnienie.

Dodatkowo Googlowcy zwiększyli powierzchnię kont webowych albumów Picasa z 250 MB do 1GB. Wprowadzona została też wyszukiwarka zdjęć przeszukująca tagi wszystkich udostępnionych albumów Picasa w obrębie serwisu.

Co prawda w porównaniu z Flickr’em Google pozostaje w tyle i nadal brakuje tak oczywistych funkcji jak ostatnio dodane do albumu komentarze, ale… Małymi kroczkami, byle do przodu.

Kilka tygodni temu pomyślałem sobie, że do kontaktów biznesowych potrzebna mi będzie jakaś własna domena. Korzystając więc z okazji, że w domu mieli karnawałową promocję, rozbiłem mBankową świnkę skarbonkę i wydałem okrągłe 24,28 PLN. Całość operacji, łącznie z oznaczeniem domeny jako zapłacona, zamknęła się w 10 minutach.

Domena

Podpięcie joggera pod domenę również nie sprawiło żadnych kłopotów. Oddelegowałem rekord A pod odpowiedniego (217.110.127.251) IP’ka i rano (6h później) wszystko już ładnie działało.

karbownicki.com  A  3600  217.110.127.251

Jakieś dwa tygodnie później postanowiłem zabrać się z usługę Google Apps for Your Domain czyli podpięcie usług Googla pod własną domenę. Jako, że korzystam z wieli G-usług taka możliwość wydała mi się bardzo przydatna. Rejestracja nie jest trudna, chociaż nie ma (jeszcze) wersji polskiej. Po wypełnieniu formularza zostajemy poinformowani, jakie wpisy musimy dodać do DNS’a obsługującego naszą domenę. Jednym z nich jest wygenerowany dla nas specjalny adres, który ustawieni udowodni Googlowi, że to rzeczywiście my jesteśmy właścicielami tej domeny. Ustawiamy go jako jako rekord typu CNAME odsyłający do google.com

Po weryfikacji własności domeny zakładamy sobie użytkownika (w wersji FREE możemy ich założyć nawet 100) z prawami admina i logujemy się na niego. Po zalogowaniu mamy do dyspozycji taki oto panel

Początkowo nie usługi nie mają jednak adresów typu coś.naszadomena.com tylko takie brzydkie googlowe. Wystarczy jednak wejść do każdej z usług, kliknąć Change URL i wybrać odpowiadający nam adres. Zostaniemy wówczas poproszeni o dodanie do DNS’a odpowiedniego rekordu CNAME odwołującego się do ghs.google.com. W przypadku wysyłania i odbierania poczty musimy dodać rekord MX odwołujący się do 10 ASPMX.L.GOOGLE.COM

karbownicki.com  MX  3600  10 ASPMX.L.GOOGLE.COM

Jabber

Moje problemy pojawiły się dopiero przy uruchomienia jabbera pod własną domeną. Niby wszystko działało, ale mogłem pogadać jedynie z googlowymi kontaktami. Po dłuższym czasie googlowania i przeglądania różnych zakamarków pomocy trafiłem na rozwiązanie. Magicznymi zaklęciami okazały się brakujące rekordy SRV

_jabber._tcp.karbownicki.com  SRV  3600  5 0 5269 xmpp-server.l.google.com
_xmpp-server._tcp.karbownicki.com  SRV  3600  5 0 5269 xmpp-server.l.google.com

Hura, działa. No prawie.. A właściwie nie bardzo. Tzn. sam jabber działa świetnie, łączy się z innymi serwerami itd. Nie mogę jednak dodać transportów. Po rejestracji w transporcie nie dodaje się one do listy, no ale nic, zawsze można dodać ręcznie. Po rozłączeniu i ponownym połączeniu również działa. No prawie.. A właściwie nie bardzo. Transport jest bo jest, ale już sam nas nie zaloguje do innej sieci. Trzeba go popychać ręcznie. Najdziwniejsze jest jednak to, że po wyłączeniu komunikatora i ponownym uruchomieniu po transportach już nie ma śladu (sprawdzone na Gajim-ie i Psi). A najlepsze jest to, po wywaleniu transportów na starym googlowym koncie i próbie ponownego dodania dzieje się to samo, chociaż wszystko działało do tej pory dobrze.

Ktoś ma jakiś pomysł ?

Plusy i minusy

Na początku byłem święcie przekonany, że zastanę możliwość podpięcia dotychczasowych usług pod moją domenę. Niestety byłem w błędzie. Nowo założony użytkownik dostaje „nowe” usługi. Nie ma nawet możliwości importowania wiadomości ze starego konta gmailowego, bo jak wiadomo ta opcja jest dopiero w fazie testów i dostępna jest dla losowo wybranych użytkowników. Np. na starym gmailu mam opcję pobierania wiadomości z innych kont, ale pod domeną już nie :) Jedyne więc co mi pozostaje to włączyć forwardowanie i czekać na możliwość importu. Kolejna ciekawostka jest taka, że pojemność konta pocztowego jest stała i wynosi 2GB. Nie zwiększa się codziennie o kilka MB jak to ma miejsce w przypadku zwyczajnych skrzynek gmaila.

Ilość usług dostępnych w domenie jest mocno okrojona. Dokładniej to jest to tylko:

  • Strona startowa
  • Jabber
  • Kreator stron
  • Poczta
  • Kalendarz
  • Dokumenty i arkusze

Przy czym np. strona startowa też jest mocno okrojona. Co prawda mamy do dyspozycji prosty edytorek to stworzenia i pokolorowania strony głównej…


...ale np ilość gadżetów do wstawienia z listy:

  • My Stuff
  • News
  • Business
  • Technology
  • Sports
  • Lifestyle
  • Fun

to 5-6 elementów w każdej kategorii z czego jedyne używalne to kalendarz, podgląd poczty i lista TODO.

Skromność usług wynagrodzić może nam jednak wstawienie własnego logo ;)

Podsumowanie

Google Apps for Your Domain – no cóż, nie ma rzeczy idealnych. Trzeba się po prostu cieszyć, że jest za darmo i podstawową funkcjonalność oferuje.

Stronę napędza Jogger. Pewne prawa zastrzeżone.