TechLife devBlog

# Linux

Elementarne Loki

Linux 19 października 2016 23:35

Całkiem niedawno miałem okazję przeprowadzić pewnego (już dość wysłużonego) McBooka przez tunel białego światła do krainy wiecznego Linuksa. Chociaż instalacja przebiegła gładko to miałem wcześniej niezły dylemat, bo jaką dystrybucję można zaoferować wieloletniemu użytkownikowi OS X-a, który przecież słynie z łatwości użytkowania i ładnego, dopracowanego interfejsu? Ubuntu? Wielu użytkowników do dzisiaj nie potrafi przełknąć Unity. Mint? Niby bardziej intuicyjny, ale chyba zbyt klasyczny, efektu wow nie będzie.

Elementary OS - logo

Tak się jednak złożyło, że światło dzienne ujrzała właśnie nowa wersja dystrybucji Elementary OS, która jak pamiętałem zgarnęła przy poprzednim wydaniu całkiem niezłe oceny blogerów. Instalacja Loki 0.4 (na bazie Ubuntu 16.04 LTS) waży 1,32 GB i zawiera, tak jak się można spodziewać, bardzo prosty i intuicyjny instalator graficzny. Tak prosty, że przypomniały mi się czasy przeklikiwania dalej, dalej, dalej, w instalatorach Windowsów 9x.

Po instalacji i ponownym uruchomieniu lądujemy na ładnym ekranie logowania Lightdm a następnie na spójnym graficznie pulpicie.

Elementary OS - pulpit

Na pierwszy rzut oka wyglądało mi to na połączenie Androida ze OS X-em. Minimalizm, estetyka i ładny motyw graficzny. Chociaż muszę przyznać, że domyślny motyw jest IMHO jednym z brzydszych w porównaniu do innych dostępnych.

ustawienia pulpitu

Pierwsza rzecz, która przykuła moją uwagę to ładne i funkcjonalne obramowania okien, które nie są wyłącznie zajmującą miejsce belką z tytułem ale zawierają też "inputy", paski nawigacji czy inne podręczne przyciski.

różne obramowania okien

Wszystkie zainstalowane aplikacje mają też OS X-owy look&feel.

odtwarzacz muzyki odtwarzacz muzyki

edytor tekstu edytor tekstu

czy klient poczty klient poczty

Wszystko jest ze sobą bardzo dobrze skomponowane. Nie brakuje też znanych ułatwień takich jak efekt Expose rozstawiający na ekranie wszystkie aktywne okna czy łatwego ich przerzucania na inne obszary robocze. Wszelkie powiadomienia to również wielofunkcyjne obiekty, które mogą zawierać różnego typu widgety.

dymki powiadomień

Mógłbym tu jeszcze wymieniać i wymieniać ale o wiele dokładniej zrobi to wpis na oficjalnym blogu opisujący nowe wydanie. Moim skromnym zdaniem tak przyjaznej dystrybucji do tej pory nie widziałem i myślę, że próg wejścia do świata Linuksa został tym samym obniżony do poziomu, którego nie spodziewałem się zobaczyć jeszcze przez długi czas. Co prawda spotykam coraz więcej nie-technicznych osób używających Ubuntu ale od dzisiaj, jeżeli ktoś mnie spyta o poradę na pewno Ubuntu nie będzie pierwszą dystrybucją jaką polecę.

Dla osób, które chciałby spróbować polecam jeszcze dwa linki:

Więcej oczywiście na: elementary.io

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

httpie - HTTP dla ludzi

Linux 7 marca 2016 22:16

Bardzo lubię pythonowe paczki z serii for humans. Obok requests (zamiennika urllib2) czy Envelops (Mailing for human beings) znajdziemy również HTTPie - doskonały zamiennik takich konsolowych narzędzi jak wget czy curl.

Instalacja

jak zawsze banalnie prosta.

pip install httpie

lub jeżeli nie chcecie zainstalować paczkę tylko dla swojego użytkownika:

pip install --user httpie

Po instalacja do naszej dyspozycji mamy komendę http.

http google.com

http -v google.com

Główne zalety httpie

  • kolorowanie wyjścia
  • formatowanie wyjścia
  • łatwy upload plików
  • pobieranie plików w stylu wget-a
  • obsługa parametrów GET i POST
  • nagłówki
  • bezpieczeństwo (uwierzytelnianie, https)
  • obsługa sesji
  • strumieniowanie odpowiedzi

Kilka przykładów użycia:

Wysłanie POST-a

http httpbin.org/post test=yyy --print HB

--print HB pozwala wyświetlić jedynie nagłówki (H) oraz treść (B) rządania.

Pobieranie pliku

http http://wikipedia.pl/img/wikimedia-polska.png > logo.png

Zeal - dokumentacja pod ręką

Kodowanie, Linux 31 lipca 2015 00:30

Zeal to inspirowana swoim Mac-owym płatnym odpowiednikiem (Dash) zgrabna przeglądarka dokumentacji dostępna na platformach Linux i Windows. Co ciekawe autorzy obu projektów dogadali się (Zeal reklamuje Dasha) dzięki czemu Zeal korzysta z dokumentacji przygotowanej dla Dash-a.

zeal

Pełną listę dostępnych dokumentacji znajdziecie pod adresem kapeli.com/dash#docsets. Obecnie jest ich ponad 150 i bardzo łatwo można dorzucić samemu kolejne lub podłączyć się do zewnętrznych dostawców.

Kluczowa w Zeal jest jednak integracja z większością znanych edytorów/IDE dzięki czemu dokumentację mamy zawsze pod ręką (zwłaszcza pracując offline), w miejscu gdzie jest nam najbardziej potrzebna.

pluginy

W przypadku Sublime'a instalacja jest banalna, wystarczy odnaleźć odpowiedni plugin i gotowe.

sublime

Po pierwszym uruchomieniu, należy wejść do opcji, przejść na zakładkę docsets i tam wybrać interesujące nas dokumentacje. Po ich pobraniu można już zabrać się za przeglądanie a Zeal będzie na bieżąco śledził ich aktualność.

django

Kiedy chcemy znaleźć dokumentację do interesującej nas komendy z poziomu edytora wystarczy ją zaznaczyć i wcisnąć odpowiedni dla edytora skrót klawiszowy (zazwyczaj F1).

wyszukiwanie w edytorze

Spowoduje to otwarcie Zeal-a dokładnie na szukanej komendzie.

wynik wyszukiwania

Możliwe jest również wyszukiwanie bezpośrednio w odpowiedniej dokumentacji. W tym celu używamy drugiego skrótu (Shift + F1 w przypadku Sublime'a) i wpisujemy odpowiednią formułkę korzystając ze składni kategoria:szukany_obiekt

wyszukiwanie w JavaScripcie

Wyniki zostaną ograniczone do podanej kategorii.

wyniki wyszukiwania w kategorii JavaScript

Pozostało zainstalować i używać, z pewnością przyśpieszy to naszą pracę i zastąpi ciągłe googlowanie. Użytkownikom Archa polecam instalację pakietu zeal-git dostępnego w AUR.

Strona projektu - zealdocs.org

Społecznościowe manuale

Linux 3 lipca 2015 09:15

Jeżeli stale lub okazyjnie możesz nazwać się użytkownikiem Linuksa to z pewnością znany jest Ci problem niezbyt często wykonywanych komend, których składni nigdy się nie pamięta. Oczywiście można zajrzeć do systemowego manuala, ale najczęściej oprócz ściany tekstu objaśniającej nam wszystkie możliwe parametry nie znajdziemy tam zbyt wielu przykładów użycia. Niestety nie tak łatwo jest wpłynąć na treść systemowych manuali dlatego społeczność rozwinęła własne rozwiązania.

Bropages

Bropages to właśnie jeden z projektów starających się wypełnić dziury w manualach skupiając się wyłącznie na przykładach użycia. Sposób działa jest prosty, wystarczy zainstalować napisanego w Ruby klienta.

$ gem install bropages

Następnie używamy go poprzez wywołanie komendy bro jako argument podając nazwę komendy, której przykładów użycia szukamy.

$ bro zip

5 entries for zip -- submit your own example with "bro add zip"

# Zips up everything in my current directory recursively into the file archive.zip 
zip -r archive.zip *

 bro thanks to upvote (36) 
 bro ...no to downvote (0)

.........................................................................................

# put README.txt and test.c into the zip file named archive.zip 
zip archive.zip README.txt test.c

 bro thanks 2 to upvote (15) 
 bro ...no 2 to downvote (0)

.........................................................................................

# Recursively zip all files in the directory foo into foo.zip 
zip -r foo foo

 bro thanks 3 to upvote (8) 
 bro ...no 3 to downvote (2)

.........................................................................................

# Recursively zip everything, starting from the current directory, that matches the given pattern into archive.zip 
# Note: the `R` flag is case sensitive! 
zip -R archive "*.png" 
zip --recurse-patterns archive "*.png"

 bro thanks 4 to upvote (2) 
 bro ...no 4 to downvote (0)

.........................................................................................

# Use the `unzip` command to extract a zip file, unlike `tar` and `gzip` where you use a command line argument to decompress 
unzip file.zip # Extracts to current directory 
unzup file.zip -d dir # Extracts to specified directory

 bro thanks 5 to upvote (1) 
 bro ...no 5 to downvote (0)

Jeżeli któraś podpowiedź przydała się w naszym przypadku, możemy na nią zagłosować wydając odpowiednią komendę. Jeżeli robimy to po raz pierwszy, będziemy poproszeni o wpisanie kodu autoryzującego wysyłanego na nasz adres e-mail.

$ bro thanks 2 
Bropages.org requires an email address verification to do this 
What's your email address? 
tomasz@karbownicki.com 
Great! We're sending an email to tomasz@karbownicki.com 
Please enter the verification code: xxxxx
Great! You're verified! FYI, your email and code are stored locally in ~/.bro 
You just gave thanks to an entry for zip! 
You rock!

Przykłady użycia danej komendy sortowane są według ilości głosów, dzięki czemu najczęstszej używane przypadki mamy na pierwszym planie.

Oczywiście jeżeli czegoś nam brakuje, obojętnie czy jest to kolejny przykład użycia na istniejącej stronie czy rozpoczęcie nowej strony manuala, możemy to zrobić w bardzo prosty sposób.

$ bro add zip

Po wydaniu tej komendy otworzy nam się domyślny edytor, wraz z szablonem przykładu użycia. Wystarczy uzupełnić i gotowe.

Więcej zastosowań bro możecie obejrzeć w samym bro :-]

$ bro bro

Warto też przejrzeć stronę projektu - bropages.org

TLDR

TLDR (too long didn't read) to kolejne, tym razem wieloplatformowe rozwiązanie problemu nieprzyjaznych manuali. Obecnie mamy do dyspozycji klienty dla:

Mi najwygodniej użyć Pythona.

$ pip install tldr

Po instalacji korzystamy analogicznie jak z bro.

$ tldr curl

# curl

 Transfers data from or to a server 
 Supports most protocols including HTTP, FTP, POP

- Download a URL to a file

 curl "{{URL}}" -o filename

- send form-encoded data

 curl --data {{name=bob}} {{http://localhost/form}}

- send JSON data

 curl -X POST -H "Content-Type: application/json" -d {{'{"name":"bob"}'}} {{http://localhost/login}}

- specify an HTTP method

 curl -X {{DELETE}} {{http://localhost/item/123}}

- head request

 curl --head {{http://localhost}}

- pass a user name and password for server authentication

 curl -u myusername:mypassword {{http://localhost}}

Współpraca nad treściami manuali odbywa się tu odmiennie niż w bro. Klient nie ma możliwości modyfikacji czy głosowania, jeżeli chcemy zaproponować jakieś zmiany należy klasyczną metodą stworzyć na GitHubie pull request, który następnie przejdzie przez review autorów projektu. Każda komendą w repozytorium to osobny plik w formacie Markdown, więc można szybko odnaleźć miejsce, które chcemy zmodyfikować. Sam klient pobiera manuale bezpośrednio z GitHuba, więc wszystkie dokonane zmiany są od razu po zatwierdzeniu dostępne dla użytkowników.

Strona projektu - github.com/tldr-pages/tldr

Strona 1 z 20 | Starsze »