Jak wiadomo Linux znany jest z tego, że można tutaj zautomatyzować niemalże wszystko. Zazwyczaj robimy to za pomocą skryptów Basha, Perla czy innego Pythona. Są jednak przypadki, kiedy nie bardzo mamy dojście do API czy komend aby zautomatyzować jakiś proces. Bo jak zautomatyzować np. ruch myszy w środowisku graficznym czy zasymulować wciskanie klawiszy?

Drugą rzeczą, z której znany jest Linux jest to, że zawsze znajdzie się rozwiązanie ;-) Podobnie w tym przypadku rozwiązaniem naszym problemów jest pakiet xautomation (spaczkowany w większości dystrybucji). Dostarcza on bardzo pomocnej komendy jaką jest xte. Podstawowymi parametrami tej komendy są:

key k          Wciśnięcie klawisza k
keydown k      Przytrzymanie klawisza k
keyup k        Zwolnienie klawisza k
str string     Wpisanie ciągu znaków
mouseclick i   Wciśniecie lewego klawisza myszy
mousedown i    Wciśniecie lewego klawisza myszy
mouseup i      Zwolnienie lewego klawisza myszy
mousemove x y  Przemieszczenie kursora na pozycję (x,y)
mousermove x y Względne przemieszczenie kursora na pozycję (x,y)
sleep x        Odczekanie x sekund

Dzięki zastosowaniu tych komend możemy już zautomatyzować wyklikiwanie pewnych czynności, np. głupiej ankiety internetowej lub pajacyka. Swojego czasu używałem tego do łączenia się z ukrytą siecią Wifi, której Gnomowy Network Manager za nic nie umiał mi zapamiętać. Zamiast wyklikiwać codziennie szereg opcji i po raz setny wpisywać długie wygenerowane hasło klikałem tylko w skrypt, który robił wszystko za mnie.

Przykładowy skrypt powtarzający pewną czynność w nieskończoność może wglądać tak:

#!/bin/bash
while [ 1 ]
do
    sleep 1
    xte 'mouseclick 1'

    # otwórz Chrome w trybie porno
    xte 'keydown Control_L' 'keydown Shift_L' 'key n' 'keyup Shift_L' 'keyup Control_L'
    sleep 1

    # wybierz adres
    xte 'str http://...wybierz_polskiego_polityka_roku_2009...'
    xte 'key Return'

    # czekamy na wczytanie strony
    sleep 7

    #wybierz kandydata
    xte 'mousemove 44 490'
    xte 'mouseclick 1' 

    # głosuj
    xte 'mousemove 253 710'
    xte 'mouseclick 1' 
    sleep 1

    # zamknij Chrome
    xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'
done

Dla ułatwienie sobie życia możemy skorzystać z komendy xmousepos, dzięki której nie będziemy musieli zgadywać pozycji kursora. Wystarczy ustawić kursor w odpowiednie miejsce a następnie uruchomić podaną komendę aby uzyskać pozycję kursora, np:

tomek@Arch:~$ xmousepos
1125 136 1125 110
^^ dwie pozycje, bo każdy kij ma dwa końce

W każdym razie miło wiedzieć, że mamy możliwość zautomatyzowania kolejnej czynności ;-)

I <3 Linux

Przerzuciłem właśnie stare API na Django. Nie obyło się bez małych zmian. Zrezygnowałem z wyboru formatów text/json/xml i zostawiłem wyłącznie JSON-a. Z formatami jednak za dużo jest zabawy, bo co prawda Django samo potrafi przerzucić QuerySet do XML-a czy JSON-a jednak robi to strasznie dziwnie, ponieważ do wyjściowego formatu dokłada takie rzeczy jak klucz obiektu czy nazwę modelu z jakiego pochodzi. Nie bardzo wiem komu takie coś jest potrzebne no a wywalić nie ma jak. O czym mówię? Weźmy np. listę kategorii.

def api_categories(request):
data = Category.objects.all().order_by('name')
json = serializers.serialize("json", data)
return HttpResponse(json, mimetype="text/javascript")

Logiczne wydawałoby się, że na wyjściu zobaczymy:

[
{"name": "No"}, 
{"name": "app-accessibility"},
...
]

Ale pojawia się:

[
{"pk": 107, "model": "packages.category", "fields": {"name": "No"}}, 
{"pk": 1, "model": "packages.category", "fields": {"name": "app-accessibility"}},
...
]

I po co to komu?

Wracając do Pacnetu… Przy okazji wdrożenia API odgrzebałem moje nieudolne próby napisania menadżera pakietów (Python+PyGTK) operującego na API Pacnetu.

code.google.com/p/gpacnet/

Podstawowa funkcjonalność, czyli przeglądanie i instalowanie pakietów podzielonych wg. kategorii działa. Więcej na chwilę obecną (np. wyświetlenia screenów) nie potrafię :-P Jednak systemowe GUI pozostają daleko w tyle za łatwością elastycznością HTML-a. Instalacja pakietów odbywa się przez wywołanie Terminala z odpowiednią komendą, więc jeżeli nie macie Terminala trzeba zastąpić go jakimś innym emulatorem konsoli.

Gdyby ktoś chciał napisać coś takiego pod QT lub cokolwiek lepszego dla GTK to serdecznie zapraszam. API stoi otworem.

pacnet.karbownicki.com/api/

Wreszcie wczoraj znalazłem trochę czasu aby ruszyć Pacnet. Po tym jak ostatnio szukałem hostingu napisała do mnie pani Magda Zarych i zaoferowała darmowy hosting w MegiTeam. Jakość oferty bardzo pozytywnie mnie zaskoczyła, wystarczy spojrzeć tutaj, żeby się przekonać co dobrego siedzi na serwerach.

Tak więc od kilku dni Pacnet działa sprawnie pod kontrolą duetu Django & PostgreSQL. Zalet Django chyba przedstawiać nie trzeba więc powiem tylko, że brama do dalszego rozwoju została szeroko otwarta. Co nowego oprócz zmiany PHP na Pythona?

  • System komentarzy
  • Internacjonalizacja (obecnie polski i angielski)
  • Nowa wyszukiwarka z podświetlaniem znalezionych fraz
  • Log zmian kategorii pakietów
  • Link do zmiany kategorii pakietu z poziomu listy pakietów
  • Poprawiony skrypt aktualizacyjny wyszukujący screeny oraz changelog

pacnet.karbownicki.com

Na koniec chciałem bardzo serdecznie podziękować Arturowi Bednarkowi (unix.net.pl) oraz Krzysztofowi Rygwelskiemu, którzy również zaproponowali hosting na swoich serwerach.

PS. Chętnie przyjmę subdomenę pacnet.archlinux.pl

Poniższy tekst jest tłumaczeniem oficjalnego przewodnika po nowej wersji Xfce 4.6:

Wizualny przewodnik po Xfce 4.6.0

Długo wyczekiwana wersja 4.6.0 środowiska graficznego Xfce wreszcie została wydana. Postaramy się wyszczególnić niektóre z nowych funkcji, które zostały dodane od czasu ostatniego stabilnego wydania.

Ulepszone użytkowanie pulpitu z Xfdesktop

Od czasu kiedy w wersji Xfce 4.4 pojawiły się ikony na pulpicie, ludzie chcieli mieć możliwość jednoczesnego zaznaczania wielu ikon. W Xfce 4.6 Xfdesktop wreszcie posiada tą funkcję: można zaznaczać wiele ikon, przesuwać je, usuwać itp.

Xfce 4.6 wprowadza całkiem nowe menu pulpitu, które pozwala zarówno na manipulowanie plikami tak samo jak menu kontekstowe Thunara, jak również na otwieranie aplikacji, zakończenie sesji czy dostęp do dokumentacji.

Panel

Wiele znanych od dawna błędów zostało naprawionych w panelu Xfce4, zwłaszcza wsparcie dla wielu monitorów. Nowe wydanie przynosi też wiele ulepszeń panelowych wtyczek.

Wtyczka zegara została całkowicie przepisana, aby zużywać jak najmniej zasobów systemowych oraz pozbycia się kilku błędów wyświetlania. Wprowadzony został również nowy tryb zegara dla geeków: zegar binarny! Nowa wtyczka obszaru powiadomień pozwala na ukrywanie wybranych ikon, aby zachować porządek i przejrzystość.

Nowy mikser dźwięku

Mikser Xfce4 został przepisany od zera aby używał Gstreamer-a. Umożliwia to łatwiejsze wsparcie dla wielu systemów dźwięku, interfejs użytkownika jest bardziej dopracowany oraz można zarządzać kilkoma różnymi kartami dźwiękowymi. Dodatkowo wtyczka panelu pozwana na szybką zmianę poziomu dźwięku przy użyciu rolki myszy.

Udoskonalony menadżer sesji

Xfce 4.6 posiada udoskonalony menadżer sesji: sesje powinny startować szybciej a okno dialogowe ustawień sesji zostało przerobione aby umożliwić łatwiejsze zarządzanie uruchamianymi aplikacjami. Dodatkowo menadżer sesji automatycznie zrestartuje sesyjne aplikacje, które się „wysypały”, tak aby w przypadku wystąpienia błędu nie pozostawić użytkownika bez pulpitu, paneli czy menadżera okien.

Nowy menadżer sesji zawiera również długo wyczekiwane funkcje: wsparcie dla uśpienia i hibernacji „out of the box”. Dialog zamykania sesji posiada teraz dwa dodatkowe przyciski umożliwiające uśpienie i hibernację komputera.

Menadżer okien

Jak zwykle Xfwm4 dojrzał nieco podczas tego cyklu dystrybucyjnego: wiele błędów zostało poprawionych, dodano wsparcie dla wielu monitorów oraz ogólne osiągi zostały poprawione.

W nawiązaniu do kilku innych nowych funkcji, Xfwm4 potrafi teraz wykryć okna, które nie odpowiadają i zaoferować zabicie ich.

Pojawiło się również nowe menu, które pozawala na szybkie przesuwanie i zmianę rozmiaru okien, przemieszczenia ich na wierzch czy pod spód względem innych okien oraz przełączenie ich w tryb pełnoekranowy.

Zaimplementowana została nowa funkcja wypełniania: powiększa ona wybrane okno tak, aby zajmowało jak największą przestrzeń lecz bez przysłaniania sąsiednich okien.

Kompozytor został zoptymalizowany tak, aby zredukować miganie okien podczas zmiany ich rozmiaru.

Rozszerzono również niektóre opcje: np. można wyłączyć miganie okien gdy te otrzymują jakieś zdarzenie.

Menadżer plików

Naprawiono wiele błędów oraz poprawiono osiągi Thunar-a. Można teraz używać przycisków „naprzód” i „wstecz” na myszce (o ile są włączone) aby nawigować. Dołączono też nową wtyczkę, która pozwala na ustawienie tapety pulpitu z menu kontekstowego obrazka.

Thunar korzysta teraz ze słownika specyfikacji użytkowników – XDG. Pozwala to na wskazanie i oznaczenie folderów użytkownika tj. muzyka, dokumenty, wideo, szablony itd.

Thunar potrafi teraz wyświetlać półprzezroczyste ikony dla dysków i woluminów, które nie są zamontowane, więc można je teraz łatwo odróżnić od pozostałych.

Thunar obsługuje teraz szyfrowane urządzenia!

Nowe okno konfiguracji

Xfce 4.6 wprowadza nowe okno konfiguracji interfejsu – Xfce Settings Manager – które umożliwia konfigurację środowiska graficznego dużo łatwiej niż poprzednio. Nowe okno konfiguracji dostępne jest poprzez pojedyncze kliknięcie na ikonkę ustawień i zaprojektowane zostało jako bardziej jednolite, pozwalające szybciej oraz bardziej intuicyjnie konfigurować środowisko.

Ustawienia dostępności

Okno ustawień dostępności pozwala na konfigurację opcji związanych z klawiaturą i myszą tj. modyfikacja zachowania klawiszy funkcyjnych, czas powtarzania klawiszy, minimalny czas przytrzymania klawiszy, odstęp pomiędzy kolejnymi powtórzeniami czy emulacja myszy.

Ustawienia wyglądu

Okno ustawień wyglądu pozwala na dobór styli elementów sterujących, wyglądu ikon i czcionek, pasków narzędzi oraz wyglądu menu.

Okno ustawień wyświetlania pozwala na dobór rozdzielczości ekranu, częstotliwości odświeżania oraz rotacji każdego podłączonego ekranu.

Ustawienia klawiatury

Ustawienia klawiatury pozwalają na dorób opcji związanych z powtarzalnością klawiszy, skrótami klawiaturowymi oraz układem klawiatury.

Konfiguracja skrótów klawiszowych odbywa się teraz o wiele łatwiej a wszelkie konflikty skrótów są natychmiast wykrywane.

Ustawienia myszy

Okno ustawień myszy pozwala na konfigurację myszy podłączonej do komputera: kolejność klawiszy, akcelerację, prędkość podwójnego kliknięcia, wygląd kursora itp.

Ustawienia pulpitu

Okno ustawień pulpitu jest obecnie znacznie bardziej ujednolicone. Pozwala ono na konfigurację dla każdego ekranu: tapety, jasności, menu pulpitu, wyświetlanych ikon itp.

Nowy wyszukiwacz aplikacji

Xfce 4.6 posiada również całkiem nowy wyszukiwacz aplikacji odznaczający się przejrzystym interfejsem. Posiada również ulepszenie wyszukiwania aplikacji przy użyciu klawiatury oraz na bieżąco monitoruje zainstalowane aplikacje, dzięki czemu potrafi „w locie” uaktualnić listę aplikacji. Pozwala również na łatwiejsze tworzenie aktywatorów w panelu poprzez przeciągnięcie ikony aplikacji do okna kreatora aktywatorów.

Linki

Zasługi

  • tekst: Jérôme Guelfucci (luty 2009),
  • zrzuty ekranu: Jannis Pohlmann,
  • tłumaczenie metodą chałupniczą: – trójkąt.

Geany 0.16

Kategorie: Linux Software Techblog 26 lutego 2009 o 14:20:58 | trackback

Kronikarskim obowiązkiem melduję pojawienie się nowej wersji mojego ulubionego edytora Geany.

Ważniejsze zmiany:

  • cała konfiguracja została przeniesiona do ~/.config/geany. Pliki zostaną przeniesione automatycznie przy pierwszym uruchomieniu nowej wersji,
  • boczna lista symboli jest teraz drzewem,
  • minimalne wymagania zostały podwyższone do GTK w wersji 2.8
  • nowy pasek narzędzi jest teraz bardziej elastyczny i spersonalizowany. (Narzędzia > Configuration Files > ui_toolbar.xml),
  • dodano opcję automatycznego zamykania nawiasów i cydzysłowów (Guillaume de Rorthais),
  • wsparcie dla kilkukrotnego występowania znaku %cursor% w snippetach, dzięki czemu przy wstawianiu snippeta możemy tabulatorem przechodzić w kolejne miejsca przeznaczone do wypełnienia tekstem (Thomas Martitz),
  • wsparcie dla nowych typów plików Ada, CMake, Matlab, NSIS, Vala and YAML,
  • możliwość dzielenia okna również w poziomie (thanks to Moritz Barsnick),
  • udoskonalony instalator dla Windowsów
  • aktualizacje tłumaczeń: bg, ca, cs, de, en_GB, fr, hu, it, ja, pt_BR, sv, ru, tr, vi, zh_CN

Pełną listę zmian znajdziecie w Release Notes (nie mam pomysłu jak to przetłumaczyć :-P)

Zachęcam również do zaglądnięcia w sekcję Extras na stronie projektu, gdzie znajdziecie między innymi snippety PHP, HTML oraz Pythona. Jest tam również mój ulubiony schemat ciemnych kolorów…

...czy inne ciekawe wynalazki typu edytor schematów kolorowania składni on-line.

Ostatnio w ramach projektu z zarządzania informacją w internecie napisałem nową wersję Pacnetu. Nowa wersja napisana jest w Django, co bez wątpienia zapewni dobrą platformę dla przyszłego rozwoju. Niestety w związku z pozbyciem się PHP pojawiły się problemy hostingowe, ponieważ teraz muszę mieć serwer z Pythonem, np. Apache+mod_python oraz bazę MySQL/PostgreSQL.

Jeżeli dysponujecie takim serwerem i nie macie nic przeciwko przygarnięciu niewielkiego projektu to proszę o komentarz z namiarami kontaktowymi. Co prawda Pacnet stworzony został na potrzeby kategoryzacji pakietów Archlinuksa, ale system jest na tyle elastyczny, że równie dobrze można by kategoryzować pakiety z dowolnej dystrybucji. Więc jeżeli chcielibyście odpalić coś takiego dla Waszej ulubionej dystrybucji nie powinno być z tym problemów. Potrzebny tylko hosting.

Dodam, że Pacnet nie potrzebuje dużej przestrzeni plikowej, ponieważ poza Django wszystkie inne informacje przechowywany są w bazie. Np. zrzuty ekranów to w rzeczywistości linki do zewnętrznych plików na innych serwerach (by Google Search).

Anyone ?

Aktualnie w polskim prawie nie ma przepisu zabraniającego nagrywania audycji radiowych. Oznacza to, że całkowicie legalnie możemy wejść w posiadanie sporych zbiorów muzyki. Nie każde radio jednak gra to czego chcielibyśmy słuchać. I tu pojawia się Last.fm – radio, które zna nasz gust i gra to co lubimy. Tylko jak teraz dobrać się do tej muzyki?

Odpowiedzią jest program TheLastRipper. Małe ale skuteczne narzędzie, pożerające adresy typu lastfm://. Wystarczy wskazać mu katalog, do jakiego ma rippować muzykę oraz stację.

Rezultatem działania TheLastRippera będą utwory znajdujące się w ładnie nazwanych katalogach (wg. schematu wykonawca > album > utwór) oraz pobrane okładki albumów w trzech rozmiarach.

Trzy rozmiary okładek mogą przeszkadzać. Np. mój QuodLibet przy odtwarzaniu utworu wybiera akurat najmniejszą okładkę co nie wygląda najlepiej. Ale łatwo można temu zaradzić. Wystarczy w katalogu z muzyką utworzyć skrypt zawierający:

find ./ -type f \( -name "SmallCover.jpg" -o -name "MediumCover.jpg" \) -delete

który usunie małe i średnie okładki z wszystkich podkatalogów.

Użytkownicy Archa aby pobrać pogram mogą skorzystać z aktualnego PKGBUILDa, który zamieszczam poniżej, ponieważ ten obecnie znajdujący się w AUR jest przestarzały.

PKGBUILD for version 1.1.1
pkgname=thelastripper
pkgver=1.1.1
pkgrel=1
pkgdesc="A Last.FM Ripper"
arch=('i686')
url="http://thelastripper.com/"
license=('GPL')
depends=('gnome-desktop-sharp' 'gnome-icon-theme')
makedepends=('pkgconfig')
source=("http://thelastripper.googlecode.com/files/$pkgname-$pkgver.tar.gz")
md5sums=('9a8653cc0cf450077b599cb8988ba8a3')
build() {
export RSVG_SHARP_20_CFLAGS="/usr/share/rsvg2-sharp/2.0/rsvg2-api.xml"
export RSVG_SHARP_20_LIBS="/usr/lib/mono/rsvg2-sharp-2.0/rsvg2-sharp.dll"
cd $startdir/src/$pkgname-$pkgver
# Bypass GMCS and fakeroot bug
mkdir -p $startdir/src/$pkgname/.wabi
export MONO_SHARED_DIR="$startdir/src/$pkgname/"
./configure --prefix=/usr
make || return 1
make DESTDIR=$startdir/pkg install
}

Załącznik 1 - lista adresów last.fm

  • lastfm://user/$username/personal
  • lastfm://user/$username/playlist
  • lastfm://artist/$artistname or lastfm://artist/$artistname/similarartists
  • lastfm://globaltags/$tag
  • lastfm://group/$groupname
  • lastfm://user/$username/neighbours
  • lastfm://user/$username/recommended/100
  • lastfm://play/tracks/$trackid,$trackid,$trackid

Kolorowanie terminala

Kategorie: Linux 28 listopada 2008 o 18:02:10 | trackback

Jeżeli Twój terminal wygląda tak:

To raczej nie macie pojęcia gdzie kończy się jedna komenda a zaczyna następna. Ale jest na to prosty sposób. Wystarczy w katalogu domowy wyedytować plik .bashrc (o ile używacie tej powłoki) i zmienić (lub dopisać) linię:

PS1='[\[\033[32m\]\u@\h \[\033[33m\]\W\[\033[0m\]]\$ '

Rezultat:

Odpowiednio dla roota edytujemy /root/.bashrc

PS1='[\[\033[31m\]\u@\h \[\033[33m\]\W\[\033[0m\]]\$  '

Gdyby ktoś chciał poeksperymentować z kolorami to może zajrzeć w ten skrypt (wygrzebane na forum archa)

Geany 0.15

Kategorie: Linux Software 20 października 2008 o 12:14:17 | trackback

Po półrocznym okresie kodowania, nie dalej jak wczoraj pojawiła się nowa wersja mojego ulubionego edytora Geany. Nowa wersja oznaczona numerkiem 0.15 przynosi wiele zmian. Ważniejsze z nich to:

  • Dodanie opcji ‘Close Other Documents’ do menu Pliki. (zamknięcie wszystkich kart poza obecnie aktywną)
  • Obsługa własnych szablonów kolorowania składni plików (katalog ~/.geany/templates/files)
  • Dodanie mechanizmu „soft tabs” (teraz możemy tworzyć wcięcia oparte na tabulacjach lub spacjach)
  • Aktualizacja Scintilli do wersji 1.77 (Scintilla to komponent odpowiadający za wyświetlanie kodu, czyli rozwijanie/zwijanie sekcji kodu, podpowiadanie składni itp.)
  • Obsługa nowych typów plików: OpenGL Shader Language (GLSL), R, gettext files (.po)
  • Możliwość pionowego dzielenia okna (wtyczka Split Window)

  • Scalenie wtyczek InstantSave, AutoSave i BackupCopy w nową wtyczkę ‘Save Actions’
  • Wiele zmian w API dla wtyczek (patrz dokumentacja)
  • Usunięcie wielu błędów i dodanie ulepszeń
  • Nowe języki: Koreańskie i Tureckie oraz aktualizacja pozostałych tłumaczeń

Więcej szczegółów w znajdziecie w Release Notes

Dzięki sprawnym developerom Arch Linuksa paczka z Geany 0.15 jest już w repozytorium community.

Software Freedom Day - Opole

Kategorie: Inne Linux 17 września 2008 o 17:30:07 | trackback

Zapraszamy wszystkich miłośników otwartego oprogramowania a także takich, którzy chcieliby się z nim zapoznać na prelekcje z okazji Dnia Wolności Oprogramowania, które odbędą się w sobotę 20 września o godzinie 17:30 w budynku Łącznika Politechniki Opolskiej, przy ulicy Mikołajczyka 5. Dla uczestników przewidzieliśmy drobne upominki :-)

Mapka:

Patroni medialni:


Zaprasza:
Opolska Grupa Użytkowników Linuksa (OpLUG)
linux.opole.pl

PS. Gdybyście chcieli gdzieś rozwiesić plakat to proszę bardzo

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.

Pakiet Software Freedom Day

Kategorie: Inne Linux 26 sierpnia 2008 o 16:46:00 | trackback

Dziś dotarł do mnie (via China Post) pakiet dostarczany dla ekip w ramach Software Freedom Day 2008. Wygląda tak:

W skład pakietu wchodzą:

  • Koszulki – 3 sztuki w rozmiarze XL
  • Płyty – 5 sztuk
  • Plakietki – 10 sztuk
  • Balony – 20 sztuk
  • Plakietki – 25 sztuk

Płyty zawierają garść programów oznaczonych jako „High Quality Open Source Software” przeznaczonych dla Windowsa. Płytka dla Linuksów oczywiście nie miała by sensu, bo każdy ma zapewne wszystkie te programy w repozytorium swojej dystrybucji. A dokładnie są to:

  • 7zip
  • abakt
  • audacity
  • avidemux
  • azureus
  • blender
  • camstudio
  • carmetal
  • celestia
  • clamwin
  • dia
  • filezilla
  • firefox
  • freeciv
  • freecol
  • freemind
  • ganttproject
  • gimp
  • graphcalc
  • gtk
  • guidovanrobot
  • healthmonitor
  • httrack
  • infrarecorder
  • inkscape
  • kompozer
  • notepad2
  • openoffice
  • pdfcreator
  • pidgin
  • qianhong
  • rss
  • rssowl
  • scribus
  • stellarium
  • sumatra
  • thunderbird
  • tightvnc
  • tuxpaint
  • tuxtyping
  • wesnoth
  • winboard
  • winscp
  • workrave
  • worldwind

Osoby z okolic Opola już teraz zapraszam na prelekcje z okazji Software Freedom Day 2008, które odbędą się 20 września, najprawdopodobniej w budynku Łącznika (Politechnika Opolska ul. Mikołajczyka). Najprawdopodobniej bo sala właśnie jest na etapie zaklepywania. Więcej szczegółów wkrótce na stronie OpLUGa więc podepnijcie sobie RSSa jeżeli jeszcze nie macie.

Ostatnio przy okazji wydania nowej wersji Ubuntu wypłynął na światło dzienne całkiem ciekawy design stworzony przez przez jednego z fanów Ubuntu. Ostatecznie nie został on wcielony do nowego wydania, ale sam pomysł jest na tyle ciekawy że nie może się na Ubuntu skończyć ;-)

Na początek tapeta:

Teraz menadżer logowania. Jeżeli używacie GDM to skórkę znajdziecie tutaj.

Ja używam XFCE i Slima więc poskładałem skórkę dla Slima. Na początku próbowałem zachować zgodność z oryginałem ale jako że Slim jest o wiele prostszy niż GDM więc dziury po przyciskach „Suspend”, „Reset”, „Shut Down” oraz brak opcji i daty zmusiły mnie do drastycznego okrojenia wyglądu. Jednak myślę, że wyszło prosto i ładnie, jak to Slim :-)

Ostateczny wygląd:

Dla lubiących ciemny design można zainstalować jeszcze odpowiedni styl GTK. Ja wolę pozostać przy Inverted.

PS. Jeżeli chcielibyście zastąpić logo Archa jakimś innym to proszę bardzo — wood-svg.tar.gz

Właśnie wrzuciłem na serwer API v1.0

Adresy wyglądają tak:

[TYP] = text, json
[PAKIET] = firefox, gajim, mc …
[KATEGORIA] = net-im, games-rpg …
[SZUKAJ] = aur, fire, ftp …

lista wszystkich pakietów

http://pacnet.karbownicki.com/api/[TYP]/packages

informacje o pakiecie
http://pacnet.karbownicki.com/api/[TYP]/package/[PAKIET]

lista wszystkich kategorii
http://pacnet.karbownicki.com/api/[TYP]/categories

lista pakietów w kategorii
http://pacnet.karbownicki.com/api/[TYP]/category/[KATEGORIA]

wyszukiwanie pakietu
http://pacnet.karbownicki.com/api/[TYP]/search/[SZUKAJ]

W przypadku braku trafień typ tekstowy zwraca null natomiast JSON pusty obiekt {}

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.

Semestr już prawie się skończył, nareszcie mam trochę więcej czasu, wiec zabrałem się dzisiaj za aktualizację pacnetu. Z pomocą oczywiście przyszedł mi Python, dzięki któremu napisałem ładny skrypt, porównujący obecną bazę ze stanem repozytoriów i na tej podstawie dokonujący aktualizacji.

Na czerwono zaznaczane są nowe pakiety, które można przeglądać również na odpowiedniej podstronie.

Wreszcie dodałem możliwość wrzucania zrzutów ekranów, czyli najprzyjemniejszej funkcjonalności. Niestety nie dysponuję odpowiednim serwerem do przetrzymywania tej całej grafiki, więc całe wrzucanie ogranicza się do podania adresu miniaturki i dużej grafiki.

Ponieważ wiem, że pakietów jest sporo a zrzuty będą przybywały raczej w wolnym tempie więc dodałem automatyczne wyszukiwanie zrzutów w Googlu. Co prawda nie zawsze wyszukuje to co trzeba, ale w większości przypadków sprawuje się całkiem dobrze i od razu widać z jaką aplikacją mamy do czynienia. Poniżej zrzuty z Battle of Wesnoth.

Ostanie 20 zrzutów będzie wyświetlane na odpowiedniej podstronie.

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

Linux jest wszędzie

Kategorie: Linux Ubuntu 18 kwietnia 2008 o 22:16:13 | trackback

Ostatnio, z racji tego że nieźle padało, wybrałem się na uczelnie autobusem (a nie jak zazwyczaj rowerem), i tak też z niej wracałem. Wsiadłem do autobusu, usiadłem na końcu, patrzę a obok mnie Linux! A dokładniej Ubuntu. Musiałem nagrać ;-)

To chyba pierwsza taka wlepka jaką widziałem w publicznym miejscu niezwiązanym z komputerami. Jak to dobrze, że czasy się zmieniają. Jeszcze muszę żabkę odwiedzić :-)

Jak wygląda Twój katalog domowy ?

Kategorie: Linux 02 marca 2008 o 00:12:22 | trackback

Ostatnio zauważyłem ciekawy wątek na angielskim forum Arch Linuksa, poświęcony strukturze katalogów domowych. Można by powiedzieć, „pokaż mi swój katalog domowy a powiem Ci jakim jesteś użytkownikiem” ;-)

Zacznę od przybliżenia własnego

~/Desktop [1]
~/go [2]
    /bash
    /ftp
    /python
    /ssh
~/kamera [3]
~/muzyka [4]
~/school [5]
~/stuff [6]
~/tmp [7]
~/www [8]

[1] - Katalog roboczy, nic w nim nie zostaje na dłużej niż czas pracy. Nienawidzę bałaganu na pulpicie.
[2] - Lokalny bin podzielony na kategorie. Służy do szybkiego odpalania skryptów czy łączenia się przez ssh/ftp np.: go/ssh/praca (bardzo wygodne w używaniu).
[3] - Tutaj zapisywane są klatki czy filmiki z mojej laptopowej kamery.
[4] - Moja przez lata zbierana kolekcja, wszystko porządnie nazwane, otagowane, okładki albumów na stanowiskach.
[5] - Materiały z uczelni, tylko z bieżącego semestru. Przydatność poza zajęciami znikoma.
[6] - Różne pierdoły ale warte zachowania, np.: katalog z tapetami, jakieś LUG-owe wykłady, moje grafiki z Inkscape'a, rozkład jazdy autobusów itp.
[7] - Katalog tymczasowy na materiały pobierane z p2p, www, ftp. Najczęściej tam też się kończy iść żywot.
[8] - Aplikacje internetowe nad którymi pracuję/pracowałem. Tutaj skierowany jest DocumentRoot mojego Apache'a.

I to by było na tyle. Schemat ten stosowałem prawie na każdej dystrybucji jakiej używałem i póki co sprawdza się doskonale.

A jak u Was to wygląda ?

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

Przypadkowy skan

Kategorie: Linux 17 stycznia 2008 o 01:27:21 | trackback

Ostatnio jadąc autobusem komunikacji miejskiej musiałem na chwilkę odpalić laptopa aby sprawdzić jedną rzecz. Przy okazji zauważyłem coś ciekawego:

Skan trwał jakieś 3 minuty. Wniosek: witamy erę WiFi.

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.

Jeżeli Firefox nie otwiera nam linków typu mailto: w domyślnym kliencie pocztowym, chociaż właściwa aplikacja obsługi poczty jest wskazana w naszym środowisku graficznym, trzeba go do tego zmusić!

Wchodzimy na about:config i tworzymy nowy klucz (string)

nazwa: network.protocol-handler.app.mailto
wartość: /usr/bin/thunderbird

Domyślnie chciał mi otwierać Evolution, ale zobaczyłem to dopiero zmieniając wartość klucza network.protocol-handler.warn-external.mailto na true.

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