TechLife devBlog

Generator filmowych miniaturek

Kodowanie Linux Software Techblog 11 stycznia 2012 o 21:59:22 | ☍ trackback

Często zamieszczając na stronie streszczenie jakiegoś filmu brakowało mi narzędzia, które było by w stanie zamiast zrzutu pojedynczej klatki wygenerować mi miniaturkę składającą się przynajmniej z 4 zrzutów pochodzących z różnych części filmu. W repozytorium znalazłem tylko mplayer-snapshot, ale nijak nie działało. Ponieważ potrzebowałem tylko 4 zrzuty szybko skleiłem prosty skrypt Basha wykorzystujący FFMpegThumbnailer (powinien być w każdym repo) do robienia zrzutów i montage (pakiet imagemagick) do ich klejenia.

#!/bin/sh

usage()
{
cat << EOF
usage: $0 [options] -i MOVIE-FILE

OPTIONS:
   -h       show this message
   -i       input movie file
   -o       output JPG file name
   -a       percentage or absolute time hh:mm:ss, default 20
   -b       percentage or absolute time hh:mm:ss, default 40
   -c       percentage or absolute time hh:mm:ss, default 60
   -d       percentage or absolute time hh:mm:ss, default 80
   -n       number of columns
EOF
}

FILE=
OUT=
COLUMNS=2
T1=20
T2=40
T3=60
T4=80

while getopts "hi:o:a:b:c:d:n:" OPTION
do
     case $OPTION in
         h)
             usage
             exit 1
             ;;
         i)
             FILE=$OPTARG
             OUT=${OPTARG}.jpg
             ;;
         o)
             OUT=$OPTARG
             ;;
         a)
             T1=$OPTARG
             ;;
         b)
             T2=$OPTARG
             ;;
         c)
             T3=$OPTARG
             ;;
         d)
             T4=$OPTARG
             ;;
         n)
             COLUMNS=$OPTARG
             ;;
         ?)
             usage
             exit
             ;;
     esac
done

if [[ -z $FILE ]]
then
    usage
    exit 1
else
    ffmpegthumbnailer -t $T1 -s 400 -o /tmp/thumb-1.jpg -i $FILE
    ffmpegthumbnailer -t $T2 -s 400 -o /tmp/thumb-2.jpg -i $FILE
    ffmpegthumbnailer -t $T3 -s 400 -o /tmp/thumb-3.jpg -i $FILE
    ffmpegthumbnailer -t $T4 -s 400 -o /tmp/thumb-4.jpg -i $FILE

    montage -mode concatenate -tile ${COLUMNS}x -adjoin /tmp/thumb*.jpg $OUT
    rm /tmp/thumb*.jpg
fi

Dla przykładu weźmy trailer Hobbita. Po pobraniu go na dysk i zapisaniu jako hobbit.flv wystarczy odpalić skrypt i wskazać plik:

movie-thumbnails.sh -i hobbit.flv

Skrypt powinien wypluć plik o nazwie hobbit.flv.jpg:

Jak to jednak przy generowaniu miniaturek bywa czasami zdarza się złapać jakaś niepożądana klatkę. Aby ją wymienić należy wskazać którą z czterech klatek wymieniamy (a,b,c czy d) oraz podać procentowo lub dokładnie (np. 00:03:28) czas filmu, z którego ma zostać pobrana.

Domyślnie:

a - 20%
b - 40%
c - 60%
d - 80%

Czyli jeżeli chcemy wymienić np. miniaturkę 2 na coś jaśniejszego wystarczy zrobić:

movie-thumbnails.sh -i hobbit.flv -b 27

wynik:

Używając parametru -n możemy sterować też ilością kolumn:

movie-thumbnails.sh -i hobbit.flv -n 1

movie-thumbnails.sh -i hobbit.flv -n 4

Na koniec parametrem -o sterujemy nazwą pliku wyjściowego

movie-thumbnails.sh -i hobbit.flv -o hobbit.jpg

Linki

Łączenie przez SSH na dynamiczne IP

Linux Techblog 04 listopada 2011 o 22:25:01 | ☍ trackback

Kiedyś korzystałem z różnych serwisów z cyklu NO-IP. Z czasem jednak niektóre się pozamykały a inne stały się płatne. Nie miałem też ochoty rejestrować się i testować nowych rozwiązań, po których do końca nie było wiadomo czy na pewno są darmowe czy może płatne. Wymyśliłem więc prosty trick.

The story

W biurze mam stale działający komp, który służy do robienia backupów z naszych serwerów. Czasem z domu chcę coś na nim pogrzebać ale problem polega na tym, że nasz Netiowy ADSL co jakiś czas zmienia IP. Żeby więc móc za każdy razem połączyć się przez SSH muszę śledzić zmiany IP.

The trick

Metoda jest bardzo prosta. Wystarczy posiadać internetowy serwer (nazwijmy go serwerem zdalnym), który spełni rolę pseudo DNS-a, czyli zapytany o namiary na biurowy serwer (nazwijmy do serwerem lokalnym) zdradzi nam jego IP.

W tym celu na serwerze zdalnym piszemy prosty skrypt, który serwer lokalny będzie odpalał co godzinę.

nazwijmy go zapisz-ip.sh

#/bin/sh
echo $SSH_CLIENT | cut -f1 -d' ' > /tmp/ip

Tak przygotowany plik zapisujemy np. w katalogu bin w katalogu domowym użytkownika (czyli /home/tomek/bin/zapisz-ip.sh) i oczywiście dajemy mu prawa do wykonywania (chmod +x bin/zapisz-ip.sh). Jak widać skrypt ze zmiennej $SSH_CLIENT wyciąga adres IP i zapisuje go do pliku /tmp/ip.

Teraz na serwerze lokalnym (tym w biurze) ustawiamy w cronie zadanie wywoływania tego skryptu co godzinę. Czyli stukamy crontab -e i piszemy:

11 * * * *      tomek@ADRES-SERWERA-ZDALNEGO.pl ~tomek/bin/zapisz-ip.sh

Tutaj należy wspomnieć, że połączenie pomiędzy serwerem lokalnym a zdalnym powinno odbywać się poprzez autoryzację kluczem SSH. W przeciwnym wypadku skrypt zatrzyma się na etapie podawania hasła.

Mamy więc na serwerze zdalnym stale uaktualniany plik /tmp/ip zawierający bieżące IP serwera lokalnego. Żeby teraz połączyć się z serwerem lokalnym z dowolnego innego miejsca wystarczy przy łączeniu przez SSH adres IP odczytać z serwera zdalnego. Wygląda to tak:

ssh tomek@`ssh tomek@ADRES-SERWERA-ZDALNEGO.pl cat /tmp/ip`

Najlepiej oczywiście wsadzić to w jakiś skrypt i wywoływać jednym poleceniem. Taki sam efekt można uzyskać wykorzystując serwer www z obsługą np. PHP + prosty skrypt zapisujący do pliku adres IP a następnie serwujący go pod jakimś URL-em.

PS. Jeżeli trick wydaje Wam się zbyt banalny to polecam niezłą listę 100 darmowych gier na Linuksa ;-).

Pacnet żyje i ma się dobrze

ArchLinux Linux Pacnet Projekty 16 czerwca 2011 o 23:26:08 | ☍ trackback

Pacnet

Pracę nad Pacnetem czyli Archową wersją Gentoo Portage zacząłem w lutym 2008 roku. Od czasu do czasu tam coś nagrzebię ale generalnie poza cotygodniowym zapuszczeniem skryptu aktualizującego bazę pakietów to projekt żyje własnym życiem i z miesiąca na miesiąc rejestruje coraz więcej odwiedzin.

Dotychczasowa historia w pigułce wygląda mniej więcej tak:

  • [luty 2008] Pacnet powstaje jako projekt napisany w PHP
  • [czerwiec 2008] pojawiło się API serwujące dane w formacie JSON
  • [lipiec 2008] aurshell implementuje obsługę Pacnetu
  • [grudzień 2008] Pacnet przepisany zostaje na Django
  • [marzec 2009] jako, że z hostingiem Django wówczas było krucho to nieoceniona okazała się pomoc załogi MegiTeam, która zaoferowała hosting projektu za darmo na swoich serwerach (co czyni wyśmienicie do dnia dzisiejszego)
  • [kwiecień 2009] powstaje gPacnet niewielkie GUI dla GTK operujące na API Pacnetu
  • [lipiec 2010] Pacnet otrzymuje subdomenę pacnet.archlinux.pl

W czerwcu zaktualizowałem kod do wersji Django 1.3 oraz wrzuciłem całość na GitHub (gPacnet też). Poczyniłem też kilka niewielkich zmian tu i tam. Mam nadzieję, że ułatwi to korzystanie ze strony.

PS. gdyby komuś się chciało zrobić tłumaczenie na coś innego niż angielski i polski to będę wdzięczny.

Xfce4.8 - przewodnik

Linux Software Techblog 18 stycznia 2011 o 20:30:12 | ☍ trackback

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

Przewodnik

Ten przewodnik przedstawi Ci wszystkie ważniejsze wizualne nowości w Xfce 4.8. Jest to tylko wizualna część tego co zostało dokonane, pełną listę zmian możecie zobaczyć w dzienniku zmian. Przewodnik po Xfce 4.6 jest również nadal dostępny.

Thunar - menadżer plików

Zdalne przeglądanie współdzielonych plików

Thunar posiada teraz wsparcie dla GVFS, dzięki czemu możliwe jest przeglądanie zdalnych współdzielonych zasobów używając Thunara oraz serwerów: FTP, Windows Shares, WebDav i SSH.

zrzut ekranu

Nowe okno dialogowe postępu operacji plikowych

Kiedy kilka operacji plikowych (kopiowanie lub przenoszenie) jest wykonywanych równolegle, Thunar teraz pokaże pojedyncze okno dialogowe, które będzie zawierało wszystkie zagregowane informacje.

zrzut ekranu

Przycisk usunięcia dla urządzeń przenośnych

Jest teraz możliwe usunięcie zamontowanych urządzeń poprzez kliknięcie na przycisk usunięcia (eject) w pobliżu nazwy urządzenia przenośnego w panelu bocznym.

zrzut ekranu

Panel Xfce

Panel Xfce w wersji 4.8 został całkowicie przepisany. Poniżej najbardziej zauważalne zmiany.

Ulepszone pozycjonowanie oraz zarządzanie rozmiarami

Xfce panel posiada teraz znacznie lepsze wsparcie dla pozycjonowanie poszczególnych paneli na ekranie. Mogą one być przeciągane i przyklejane do krawędzi ekranu. Pozycja jest zapamiętywana przy przeciąganiu panelu a sam panel może posiadać szerokość określaną w procentach długości ekranu.

Przezroczyste tła

Panel umożliwia teraz ustawienie przezroczystości jego tła jednocześnie pozostawiając jego elementy nieprzezroczystymi. Twoje panele pozostaną więc czytelne a jednocześnie ładnie wyglądające.

zrzut ekranu

Nowe edytor elementów

Nowa funkcjonalność panelu - edytor elementów - pozwala na szybką modyfikację, przesuwanie, dodawanie i usuwanie elementów. Jest to funkcja szczególnie użyteczne dla pojedynczych elementów, których nie trzeba już przeklikiwać kolejno prawym klawiszem, aby wyedytować ich zawartość. Wszystkie elementy oraz ich układ mamy dostępne w jednym miejscu.

zrzut ekranu

Tworzenie aktywatorów metodą przeciągnij i upuść

Możesz teraz przeciągnąć i upuścić elementy z menu aplikacji, wyszukiwacza aplikacji lub Thunara wprost na panel, aby utworzyć aktywator. Ta funkcjonalność powinna zadowolić sporą rzeszę użytkowników, którzy domagali się jej od lat. Aktywatory mają również zintegrowany wyszukiwacz aplikacji, który przydaje się przy dodawaniu kolejnych elementów.

Wtyczka przycisków okien

Wtyczki "Ikony okien" oraz "Lista okien" zostały teraz połączone w jedną wtyczkę o nazwie "Przyciski okien". Zawiera one inne metody sortowania ulepszone działanie w pionowych panelach oraz umożliwia stworzenie podobnej ramki jak Xfwm4 podczas przełączania Alt+tab, kiedy najedzie się na przycisk.

Nowy rozmyty zegar

Nowe wydanie Xfce bez nowego trybu zegara nie było by prawdziwym wydaniem. Pozwólcie nam przedstawić nowy "rozmyty tryb" zegara!

zrzut ekranu

Nowa wtyczka - menu katalogów

Wtyczka menu katalogów dostarcza nowe menu odwzorowujące układ każdego katalogu. Pozwala to na otwarcie konsoli lub menadżera plików w danym podkatalogu w bardzo szybki i efektywny sposób.

zrzut ekranu

Edycja manu aplikacji

Możesz teraz edytować menu za pomocą każdego zgodnego z Freedesktop edytora. Do naszych testów użyliśmy Alacarte.

Dialogi ustawień Xfce

Ulepszona konfiguracja multihead setup

Xfce wspiera teraz multihead setup dla każdego zgodnego z randr 1.2 sterownika. Niestety oznacza to, że nie zadziała na własnościowych sterownikach Nvidii.

Możesz aktywować lub dezaktywować dołączane ekrany, ustawiać ich rozdzielczość, częstość odświeżania, kąt obrotu oraz odbicie, klonować oraz rozciągać ekrany.

Czasowe potwierdzenie

Wszelkie zmiany potwierdzane za pomocą okna dialogowego ustawień muszą zostać zaakceptowane w przeciągu 10 sekund. W przeciwnym wypadku zostaną cofnięte. Zapobiegnie to uszkodzeniu np. sterowników wideo podczas nieobecności przy komputerze.

zrzut ekranu

Szybkie okno ustawień

Szybkie okno ustawień pozwala skonfigurować podwójny ekran w kilka sekund. Podłącz drugi ekran, naciśnij klawisz display lub Windows+p i wybierz żądany układ. Gotowe!

Edycja ustawień za pomocą edytora ustawień Xfce

Edytor ustawień Xfce teraz w pełni zasłużył na swoją nazwę. Nie jest on już zwykła przeglądarką ustawień (Xfconfig). Możesz teraz modyfikować, dodawać i przywracać ustawienia poprzez interfejs. Potrafi on także monitorować i na bieżąco aktualizować widok.

zrzut ekranu

Usprawniona sekcja układu klawiatury

Widok sekcja układu klawiatury otrzymał sporo miłości. Nie pokazuje już zaszyfrowanych kodów język/wariant ale używa tłumaczonych nazw języków. Edycja układu klawiatury stała się również łatwiejsza poprzez wypełnianie pól przez aktualne wartości.

zrzut ekranu

Flash player i pseudo-strumień MP4

Kodowanie Linux Software Techblog 10 stycznia 2011 o 19:07:34 | ☍ trackback

Co jakiś czas przychodzi mi osadzać na stronach pliki FLV z jakimś Flashowym playerem. Oczywiście nie ma z tym żadnego problemu, jednak obecnie nadciąga moda na pliki MP4 kodowane przez h264. Flash od wersji 9 umożliwia odtwarzanie tego typu plików jednak jest ale. Żeby Flash zaśpiewał jak mu MP4 zagra, potrzebuje wyciągnąć z niego metadane (w tym cały indeks zawartości pliku) czyli tzw. obszar Moov Atom. Problem w tym, że większość enkoderów beztrosko umieszcza metadane na końcu pliku MP4.

Rezultatem tej złotej myśli technologicznej jest to, że plik MP4 musi zostać w całości pobrany, zanim jakiś Flash player go zdoła otworzyć. Z małymi plikami to nie problem, jednak kazanie użytkownikowi czekać na pobranie 200 MB pliku, zamiast oglądać go w trakcie ściągania jak w przypadku plików FLV, to powrót do epoki, w której to strony zdobione były tagami <marquee>.

Wyjścia innego nie ma jak złapać za uszy metadane i przeciągnąć je na początek pliku. Na szczęście FFMPEG dostastarcza do tego celu gotowy skrypt o nazwie qt-faststart. Jego użycie raczej nie przysporzy nikogo o ból głowy.

qt-faststart in.mp4 out.mp4

Dla !linuksiarzy pozostaje skorzystanie z aplikacji dla Adobe AIR, lub przygarnięcie klasy dla PHP5.

Geany 0.19

Linux Software 23 czerwca 2010 o 22:15:22 | ☍ trackback

Kronikarskim obowiązkiem odnotowuję pojawienie się nowej wersji jednego z najlepszych Linuksowych edytorów -- Geany. Co przynosi nowa wersja?

  • Mechanizm kompilacji został przebudowany, aby być jeszcze bardziej konfigurowalnym (Lex Trotman).
  • Użycie wyrażeń regularnych zgodnych z POSIX system/GNU przy wyszukiwaniu oraz zastępowaniu. Zmiany w składni - teraz wspierany jest operator '?' oraz znacznik nowej linii.
  • Wsparcie dla definiowania własnych typów plików.
  • Dodanie konfiguracji oraz wsparcia dla wirtualnych spacji.
  • Nowe typy plików: Txt2Tags, Abc, Verilog, Genie.
  • Dodanie nowego znacznika dla snippetów -- { command:... }. Powoduje to wstawienie do dokumentu wyniku działania podanej komendy.
  • Zezwolenie na +<numer> oraz -<number>' jako wartości pola Przejdź do wiersza. Umożliwia do przeskok o podaną ilość linii względem aktualnej pozycji.
  • Dodanie menu "Pokaż->Edytor->Schematy kolorów" (tylko jeżeli dostępne są pliki ze schematami kolorów)
  • Dodanie dopełniania podpowiedzi słów kluczowych za pomocą klawisza Tab (działa podobnie jak dopełnianie nazw plików w terminalu za pomocą Tab-a)
  • Poprawki do parsowania symboli dla języków D, Java, PHP, Perl, Python, R, VHDL.
  • Dodanie znaczników specjalnych dla snippetów -- {ob}, {cb} i {pc} -- reprezentujących odpowiednio znaki: {, } i %
  • Dodanie zmiennych {project} i {description} do snippetów
  • Nowy język tłumaczenia: ast
  • Aktualizacja tłumaczeń: de, enGB, es, fr, gl, ja, nl, pt, ru, sl, sv, tr, vi, zhCN.

Wartą odnotowania rzeczą jest pojawienie się odwołań do komend systemowych z poziomu snippetów. Jak to działa? Na przykład tworzymy taki oto snippet w sekcji [Default]:

fortunka={command:fortune}

Po zapisaniu przeładowujemy konfigurację (Narzędzia->Reload Configuration) i od tej pory w dowolnym miejscu dowolnego pliku wpisując fortune i wciskając Tab otrzymujemy losową fortunkę (oczywiście o ile mamy zainstalowany pakiet fortune-mod). Rzecz jasna komendy należy wykorzystać w jakiś bardziej przemyślany sposób niż fortunki ;-)

PlayFlash czyli YouTube i MPlayer

Internet Linux Techblog 19 maja 2010 o 22:14:39 | ☍ trackback

Jak wiemy VP8 jest już w drodze, jednak do czasu pełnego wdrożenia pozostanie nam jeszcze użerać się z Flashem na nie bardzo wspieranych przez Adobe platformach tj. Linux czy Mac. Ułomność obsługi Flasha widoczna jest zwłaszcza przy wideo w wyższych rozdzielczościach.

Powstało już wiele rozwiązań tego problemu jak np. podmiana playera Flashowego na MPlayera lub wywoływanie w konsoli skryptów, które jako parametr dostają adres URL do filmu na YouTube.

Rozwiązania te nie są jednak jak dla mnie zbyt wygodne, ponieważ MPlayer nie jest w stanie zastąpić playera Flashowego, z racji tego, że np. nie zbuforuje filmu od wybranego fragmentu czy też nie umożliwi nam zmiany rozdzielczości filmu. Natomiast uruchamianie skryptu z podaniem mu adresu URL jest co by nie mówić nieporęczne, bo po co klikać dziesięć razy skoro można dwa.

Wiadomo, że ładujący się film z YouTube'a tworzy plik w katalogu /tmp/ o nazwie FlashXX... Wystarczy więc wyłapać najnowszy plik z tego katalogu o takiej nazwie i uruchomić go za pomocą naszego ulubionego odtwarzacza. Całe sterowanie można wykonać za pomocą standardowego Flashowego playera YouTube np. wybór rozdzielczości i ustawienie odpowiedniego miejsca startu filmu (np. od 2 minuty) a później skryptem ukrytym w ikonce lub skrócie klawiszowym uruchomić nasz natywny player i rozsiąść się wygodnie w fotelu.

Skrypt jest banalnie prosty:

/usr/bin/mplayer /tmp/`ls /tmp/ -tr | grep Flash | tail -1`

Ja mam go podpięty pod ikonkę dzięki temu używanie wymaga dwóch kliknięć (pauza w playerze YouTube i odpalanie skryptu).

PlayFlash w akcji

Snippety dla webdevelopera

Kodowanie Linux Techblog 13 maja 2010 o 19:24:46 | ☍ trackback

Od czasu publikacji poprzedniej porcji snippetów dla mojego ulubionego edytora Geany minęło okrągłe 2 lata i 6 dni. Przez ten czas snippety uległy ewolucji (wykorzystuję je codziennie) jak również nowsze wersje Geany pozwoliły na umieszczenie w snippecie więcej niż jednej pozycji kursora.

Z racji tego, że pracuję jako webdesigner/programista/administrator oprócz zestawu HTML-a dodałem również kilka skrótów dla CSS-a oraz szczyptę udogodnień dla Django (głównie modele i szablony). Scaliłem również inne dostępne dla Geany snippety m.in. dla PHP, Pythona, LaTeX-a i Tlc oczywiście (z informacjami o ich autorach). Prawdę mówiąc, miałem nadzieję, że w ten sposób będzie można uporządkować dodatki na stronie Geany, tak aby do pobrania był jeden plik a z boku zbiorowa informacja o autorach, no ale z autorami strony trochę trudno się dogadać. Już nawet dorwałem ich bezpośrednio na IRC-u ale widocznie godzina była za późna i już mało kontaktowali.

W każdym razie dzięki Dropboksowi plik będzie teraz leżał zawsze w tym samym miejscu i w razie czego będzie na bieżąco aktualizowany, ponieważ mam go podpiętego bezpośrednio pod edytor.

snippets.conf

W szybki sposób można je pobrać tak:

$ wget http://dl.dropbox.com/u/668529/conf/snippets.conf -O ~/.config/geany/snippets.conf

Tradycyjnie dołączam mały przegląd. Oczywiście tylko pobieżnie.

Autorzy snippetów:

  • PHP - Atanas Beloborodov
  • Python - inspirowane snippetami z Gedita
  • LaTeX - Frank Lanitz
  • Tlc - Witek Mozga

Automatyzacja myszy i klawiatury

Linux Software Techblog 07 stycznia 2010 o 22:41:56 | ☍ trackback

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

Pacnet API czyli gPacnet

ArchLinux Linux Pacnet Projekty 10 kwietnia 2009 o 17:22:50 | ☍ trackback

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/

Pacnet na Django

ArchLinux Linux Pacnet Projekty 27 marca 2009 o 13:43:54 | ☍ trackback

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

Xfce 4.6 oficjalnie wydane

Linux Software Techblog 27 lutego 2009 o 05:39:37 | ☍ trackback

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

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.

Hosting Django poszukiwany

ArchLinux Linux Pacnet Projekty 14 grudnia 2008 o 12:05:26 | ☍ trackback

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 ?

Rippowanie muzyki z Last.fm

ArchLinux Linux Software Techblog 29 listopada 2008 o 11:57:19 | ☍ trackback

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

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

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

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

Joggerowy gadżet na pulpit

ArchLinux Kodowanie Linux Python Techblog 05 września 2008 o 00:38:40 | ☍ trackback

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

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.

Ubuntu Interpid Ibex a Slim i XFCE

ArchLinux Linux Varia 19 sierpnia 2008 o 22:28:57 | ☍ trackback

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

Pacnet API

ArchLinux Linux Pacnet Projekty 25 czerwca 2008 o 17:34:45 | ☍ trackback

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 {}

Język dot

ArchLinux Linux Software Techblog 18 czerwca 2008 o 15:51:07 | ☍ trackback

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.

Pacnet - aktualizacja

ArchLinux Gentoo Linux Pacnet Projekty 16 czerwca 2008 o 00:26:08 | ☍ trackback

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.

Snippety w Geany

Linux Software Techblog 07 maja 2008 o 14:58:52 | ☍ trackback

AKTUALIZACJA: karbownicki.com/2010/05/13/snippety-dla-webdevelopera/

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://dl.dropbox.com/u/668529/conf/snippets.conf -O ~/.geany/snippets.conf

Efekt działania

Linux jest wszędzie

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 ?

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 ?

Karta sieciowa Attansic L2 i jądro 2.6.24

ArchLinux Linux Techblog 28 lutego 2008 o 03:26:28 | ☍ trackback

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, czyli Gentoo w Archu

ArchLinux Gentoo Linux Pacnet Projekty Techblog 26 lutego 2008 o 19:31:04 | ☍ trackback

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

Pacman i kategorie z portage

ArchLinux Gentoo Kodowanie Linux Pacnet Projekty Python 24 lutego 2008 o 01:21:39 | ☍ trackback

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