TechLife devBlog

#- Software

How much is the fish

Linux, Software 17 marca 2016 11:14

Dzisiaj będzie o złotej rybce, która jest w stanie spełnić większość naszych życzyń dotyczących efektownej i efektywnej konsoli. Friendly Interactive SHell czyli fish to jedna z powłok systemowych, której możemy użyć w konsoli jako zamiennika basha czy zsh.

fish shell logo

Instalacja

Powłoka fish jest dostępna w repozytoriach większości dystrybucji. Wystarczy zainstalować paczkę.

# pacman -S fish

Następnie ustawić ją jako domyślną powłokę dla naszego użytkownika.

$ chsh -s /usr/bin/fish

Gotowe, po uruchomieniu nowej konsoli zobaczymy domyślne powitanie fisha.

fish default prompt

Menadżer pakietów

Dobre rozwiązania mają to do siebie, że są zbudowane na solidnej podstawie ale jednocześnie dają możliwość rozszerzania swoich funkcji za pomocą pluginów. Podobnie jest i w tym przypadku. Do wyboru mamy nawet kilka menadżerów pakietów tj.

  • fundle - inspirowany Vundle-m czyli podobnym menadżerem dla Vim-a
  • oh-my-fish - menadżer inspirowany oh-my-zsh
  • fisherman - nowy i podobno najszybszy z nich wszystkich

Jako że dzisiaj wpadłem na fishermana to właśnie jego zademonstruję. Do jego instalacji wystarczy nam curl.

$ curl -sL get.fisherman.sh | fish

fish default prompt

Do dyspozycji mamy teraz komendę fisher oraz dwa domyślnie zainstalowane pakiety.

$ fisher list
* debug
* spin

Rybaka w działaniu możecie dokładniej pooglądać tutaj - fisherman.sh/#demo

Szczegółową listę pakietów można podejrzeć wklepując:

$ fisher search --long

fisher search results

Oczywiście lista obejmuje jedynie wspierane i przetestowane paczki ale nie zabrania nam to zainstalowania dowolnej paczki ze ścieżki, url-a czy podając autora i nazwę repozytorium.

$ fisher install owner/repo

Osobiście moim must have w konsoli jest nazwa użytkownika i maszyny, na którą jestem obecnie zalogowany, dlatego pierwsze co robię po instalacji fisha to dostosowanie prompta poprzez instalację paczki lambda.

fisher lambda prompt

Użytkowanie

Fish jak już sama nazwa wskazuje został zaprojektowany jako przyjazna użytkownikowi interaktywna powłoka. Interakcje możemy zauważyć już po wpisaniu pierwszego znaku, ponieważ powłoka od razu podpowiada nam pasujące do wpisanego tekstu komendy.

fish interactive

Out of the box podpowiada też argumenty różnych komend.

fish git

Używając zsh często przyłapywałem się na tym, że 80% rzeczy które robię w konsoli zaczynają się od wciśnięcia ctrl+r czyli kombinacji pozwalającej na wyszukiwanie w historii. W fishu ten krok stał się zbędny ponieważ domyślnie wszystko co wklepujemy automagicznie przeszukuje historię w celu podpowiedzenia nam ostatniego użycia a strzałkami w górę i w dół możemy przeglądać pozostałe pasujące rezultaty.

fish history search

Mógłbym tu jeszcze pozachwycać się nad wieloma fajnymi rzeczami jakie można znaleźć w fishu, ale nie po to ktoś napisał do niego ładny tutorial, żebym go teraz pominął. Pluginy najlepiej przetestować samemu, ewentualnie korzystając z fisher search --long przejrzeć najpierw ich repozytoria ponieważ na większości znajdziecie gotowe screeny.

Na koniec oficjalnie: fishshell.com

h3. UPDATE

Ponieważ moja poprawka do lambdy dodająca wsparcie dla pythonowego virtualenva wisi od dłuższego czasu to działającą wersję możecie zainstalować z mojego repozytorium

fisher install trojkat/theme-lambda

Lub jeżeli korzystacie z omf:

omf install https://github.com/trojkat/theme-lambda

Generator filmowych miniaturek

Kodowanie, Linux, Software, Techblog 11 stycznia 2012 21:59

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

Xfce4.8 - przewodnik

Linux, Software, Techblog 18 stycznia 2011 20:30

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 19:07

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 22:15

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 + oraz -' 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 ;-)

Strona 1 z 6 | Starsze »