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

Moje ostatnie narzekania na organizację repozytorium w Archu nie dawały mi spokoju. Dzisiaj z pomocą fixxxera (właściwie to tylko przerobiłem jego skrypt ;) powstał skrypt, który po otrzymaniu nazwy pakietu pokazuje nam do jakiej kategorii jest on przypisany w repozytoriach Gentoo.

Składania jest prosta:

$ python portage.py gajim
net-im

Oczywiście bez dwóch zdań będą jakieś niezgodności

$ python portage.py pacman
games-arcade

Ale na ogół skrypt powinien działać dobrze. Czyli pierwszy krok do kategoryzacji Archa zrobiony. Teraz tylko powkładać pakiety w kategorie, zrobić GUI i można podbijać świat ;-)

Przydaje się jako edytor do commitów w Subversion. Zaraz po odpaleniu możemy wpisać poczynione zmiany.

vim -c :start

a dokładniej

export SVN_EDITOR="vim -c :start"

To samo działa też z vi.

Przeglądając wczoraj AUR wpadła mi w oko pewna nazwa – Paintown – jak się okazało nie na darmo :-)

Po angielsku nazywa się to open source, classic style fighting game, po polsku chodzone mordobicie. Paintown to klasyczna gra z czasów, kiedy gry były jeszcze towarzyskie, czyli grało się w nie z kumplem na tej samej klawiaturze :-) Ehh.. Amiga 500, automaty i setki „roboczogodzin” – to były czasy. Na szczęście powróciły! W Paintown znajdziemy takie tryby gry jak klasyczna planszówka (chodzone mordobicie) i tryb „Vs mode” czyli walka z pojedynczym przeciwnikiem. Grać możemy samemu, w dwie osoby na jednym komputerze czy też przez sieć.

Główni bohaterzy to składanka herosów z różnych gier. Na pierwszym planie Ryu z niezapomnianego Streen Fightera. Brakuje mi tylko Franko ;-)

Wszystko przyprawione klasyczną Amigową muzyką czyli pełen oldschool.

Dla Archowców:

$ yaourt -S paintown

Jakiś czas temu nawiedziła mnie myśl, która nie daje mi spokoju. Zwłaszcza przypomina mi się kiedy odpalam gtkPacman-a i moim oczom ukazuje się taki widok

Wtedy myślami wracam do czasów Gentoo i bardzo dobrze przemyślanej struktury Portage. Pewnie nie jedna dystrybucja chciałaby mieć tak dobrze skatalogowane oprogramowanie jak Gentoo.

(tutaj pojawia się animacja zapalającej się nad głową żarówki)

A co by było gdyby stworzyć globalną bazę informacji o pakietach? Wystarczy prosta strona www udostępniająca podstawowe API dla wszelkiego rodzaju dystrybucyjnych menadżerów. Taki API mogło by zwracać tekst, HTML lub XML na podstawie wywołanego adresu np.:

http://bazwa.org/package/342432/text
http://bazwa.org/package/342432/html
http://bazwa.org/package/342432/xml

ewentualnie opcja z wersją pakietu (wiadomo, inna wersja inne funkcje inne zależności)

http://bazwa.org/package/342432/0.11.4.2/xml

Wystarczyłoby aby każda dystrybucja stworzyła sobie słownik łączący ichniejszą nazwę pakietu z id pakietu w bazie i voila! Mamy międzydystrybucyjną bazę najświeższych informacji o pakietach, z opisem większym niż jedna linijka, aktualnymi informacjami na temat autora/autorów, strony domowej i (czego najczęściej mi brakuje) zrzutów ekranu. A wszystko ładnie zaszufladkowane i gotowe do przeglądania przez www czy jakiegoś menadżera pakietów.

Oczywiście żeby nie przeciążać serwerów można by codziennie wypuszczać zrzut bazy, który dystrybucje by ssały i hostowały na swoich mirrorach. Hmm.. tylko dlaczego jeszcze nikt tego nie zrobił? Czyżby były jakieś poważne przeszkody o których nie pomyślałem ?

Skoro już rozpocząłem temat kamer to jeszcze mała notka. Całkiem fajną sprawą jest technika animacji poklatkowej, którą bardzo prosto jest osiągnąć domowym sposobem. Wystarczy kamera i Linux :-)

Programy do obsługi kamer takie jak wxCam potrafią automatycznie numerować kolejne zrzuty obrazu z kamery. W przypadku wxCam powstające pliki noszą nazwę costam-001.jpg, costam-002.jpg … (o ile wybraliśmy format JPG). Tak ułożone pliki wystarczy potraktować odpowiednim zaklęciem

ffmpeg -r 2 -i costam-%03d.jpg -y -an filmik.avi

TIP: parametr -r określa ilość klatek na sekundę

Jako plik wynikowy możemy też wpisać filmik.flv i mamy gotową animację w formacie Flash.

Przykład – jak się zarabia na otwartym oprogramowaniu ;-)

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

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