Category Archives: технология

TermFu (За Android) – справочник за дълги команди

от Владимир Колев
лиценз CC BY-NC-ND
Терминал

ic_launcherАко често използвате терминала или пък харесвате да комбинирате доста от нещата, които вършите в .sh скриптове предполагам, че това приложение от BulTux може да ви бъде доста полезно, особено ако като мен имате проблем със запомнянето на километричните низове от команди с параметри за извършване на задачи от рода на:

- конвертиране на изображения
- записване на екрана във видео формат
- споделяне на екрана чрез SSH
и т.н.

За приложението

TermFu е приложение за Android телефони (Android 2.2+), което ви позволява да преглеждате сайта commandlinefu.com за termfu_dialogразлични команди – от записване на екрана чрез ffmpeg или mencoder, през ssh и различни трикове за споделяне на екрана до следене на системата. На практика сайта предлага различни едно-редови команди, с които можете доста да улесните живота си. От друга страна запомнянето на тези дълги команди е определено непосилно (поне за мен е така), а посещаването на сайта през телефона е меко казано неудобно. Така се роди и идеята за TermFu – едно малко приложение, което по всяко време да ми е под ръка.

Какво предлага като функционалност

- Табът “Последни” (Latest) – предлага на потребителя последните команди, публикувани за последната седмица – избор на команда отваря диалог, в който се показва цялата команда, описание какво прави и позволява на потребителя да копира командата в буфера за споделяне (clipboard). Звездичката, която е на всеки ред, позволява да добавите командата в “Предпочитани”.

- Табът Популярни (Popular) – не се различава по функционалност от Latest, освен че предлага най-популярните команди за цялото време. Това са командите, които с времето са събрали най-много гласове.

termfu_search- Табът “Търсене” (Search) – както предполагате – позволява търсене в commandlinefu.com за въведена от вас ключова дума. Резултатите функционират както последните два таба.

- Предпочитани (Favorites) – показва записаните в базата данни на приложението команди от пторебителя (Записването става, чрез избор на звездата от предните три таба). Тук функционалността е малко по-различна. Контрола става чрез задържане на определен елемент, което активира меню с опции – “Преглед” и “Изтриване”, което предполагам е ясно какво правят.

 

 

Изтегляне

Приложението можете да изтеглите от Google Play Store:

Android app on Google Play

Да си наинстаграмим снимките…

от Йордан Радунчев
лиценз CC BY

Имате стари снимки, искате да изглеждат като онези страхотно модерни снимки, които всички правят с Instagram? Дообре... Imagemagick знае как.

Оригиналната снимка:

Оригиналната снимка...

Ghotam:

Ghotam

convert zkayra.jpg -set option:distort:viewport "%[fx:min(w,h)]x%[fx:min(w,h)]+%[fx:max((w-h)/2,0)]+%[fx:max((h-w)/2,0)]" -filter point -distort SRT 0 +repage -modulate 120,10,100 -fill '#222b6d' -colorize 20 -gamma 0.5 -contrast -contrast ghotam.jpg

Toaster:

Toaster

convert zkayra.jpg -set option:distort:viewport "%[fx:min(w,h)]x%[fx:min(w,h)]+%[fx:max((w-h)/2,0)]+%[fx:max((h-w)/2,0)]" -filter point -distort SRT 0 +repage -fill black -opaque '#330000' -modulate 150,80,100 -gamma 1.2 -contrast -contrast -gaussian-blur 0x1 toaster.jpg

Nashville:

Nashville

convert zkayra.jpg -set option:distort:viewport "%[fx:min(w,h)]x%[fx:min(w,h)]+%[fx:max((w-h)/2,0)]+%[fx:max((h-w)/2,0)]" -filter point -distort SRT 0 +repage -fill black -opaque '#222b6d' -fill white -opaque '#f7daae'-contrast -modulate 100,150,100 -auto-gamma nashville.jpg

Lomo:

Lomo

convert zkayra.jpg -set option:distort:viewport "%[fx:min(w,h)]x%[fx:min(w,h)]+%[fx:max((w-h)/2,0)]+%[fx:max((h-w)/2,0)]" -filter point -distort SRT 0 +repage -channel R -level 33% -channel G -level 33% lomo.jpg

Kelvin:

Kelvin

convert zkayra.jpg -set option:distort:viewport "%[fx:min(w,h)]x%[fx:min(w,h)]+%[fx:max((w-h)/2,0)]+%[fx:max((h-w)/2,0)]" -filter point -distort SRT 0 +repage -auto-gamma -modulate 120,50,100 -fill 'rgba(255,153,0,0.5)' kelvin.jpg

Толкова, за да придобиете представа на какво е способен Imagemagick... Прегледайте документацията, за да се запознаете с пълните му възможности, ако искате да шашнете Света с наистина откачени снимки.

Пропуснах OpenFest

от Ясен Праматаров
лиценз CC BY

Не успях да ида на OpenFest. Имах намерение, но вкъщи сме с леко болничка мама и всички – дечица и тати – се опитваме да помагаме. Не ми липсва пропускането на фестивала – от няколко години вече съм леко встрани от тия неща, по едно време и престанах да ходя. Радвам се, че хората, които продължиха и продължават да го организират, не губят ентусиазма. Аз не съм бил никога от централното ядро там, но покрай Сдружението за свободен софтуер имах досег и донякъде, доколкото можех, съм помагал косвено. Първият OpenFest беше точно на рождения ми ден и отидохме заедно с Краси, после цяла вечер бяхме с хората от екипа, с Krzysztof Zaraska от Prelude IDS и Harald Welte. Беше 2003-та. Сега погледнах – на сайта на OpenFest най-старото споменаване в историята на фестивала е 2006-та. Може би има нещо общо със смяната на хората, с промяната на екипа. Може би има личен момент, както имаше и личен момент в разтурянето на FSA-BG. Жалко, но все тая. Имам много добри приятелства и познанства от тия години и си ги ценя – макар и повечето хора да ги виждам “веднъж на високосна”.

Прекарах топлите пладнета на съботата и неделята в парка с децата. Игри, езерца, катерички, жълъди, въртележки и пързалки и разговори със Светко защо някои деца се държат лошо и как трябва сам да се справя, защото не е честно аз да се намесвам. Хубави дни. Краси е по-добре. Трябва да платим наема днес – като мине това, ще се успокоя, надявам се. Бях изнервен вчера и взех да се карам на децата – поуката е, че валидолът не е лошо нещо и митовете за опасности са пълна глупост и чист HealthScare.

Пропуснах OpenFest

от Ясен Праматаров
лиценз CC BY

Не успях да ида на OpenFest. Имах намерение, но вкъщи сме с леко болничка мама и всички – дечица и тати – се опитваме да помагаме. Не ми липсва пропускането на фестивала – от няколко години вече съм леко встрани от тия неща, по едно време и престанах да ходя. Радвам се, че хората, които продължиха и продължават да го организират, не губят ентусиазма. Аз не съм бил никога от централното ядро там, но покрай Сдружението за свободен софтуер имах досег и донякъде, доколкото можех, съм помагал косвено. Първият OpenFest беше точно на рождения ми ден и отидохме заедно с Краси, после цяла вечер бяхме с хората от екипа, с Krzysztof Zaraska от Prelude IDS и Harald Welte. Беше 2003-та. Сега погледнах – на сайта на OpenFest най-старото споменаване в историята на фестивала е 2006-та. Може би има нещо общо със смяната на хората, с промяната на екипа. Може би има личен момент, както имаше и личен момент в разтурянето на FSA-BG. Жалко, но все тая. Имам много добри приятелства и познанства от тия години и си ги ценя – макар и повечето хора да ги виждам “веднъж на високосна”.

Прекарах топлите пладнета на съботата и неделята в парка с децата. Игри, езерца, катерички, жълъди, въртележки и пързалки и разговори със Светко защо някои деца се държат лошо и как трябва сам да се справя, защото не е честно аз да се намесвам. Хубави дни. Краси е по-добре. Трябва да платим наема днес – като мине това, ще се успокоя, надявам се. Бях изнервен вчера и взех да се карам на децата – поуката е, че валидолът не е лошо нещо и митовете за опасности са пълна глупост и чист HealthScare.

Poor man’s backup options

от Йордан Радунчев
лиценз CC BY

Всички ние редовно си правим архив и резервни копия от важната информация по лаптопите и компютрите, които използваме, и съхраняваме тези архиви на друго място, различно от лаптопите и компютрите, които използваме... нали така? Ха-ха.

Това все още е най-стария виц сред IT хората - датира още от появата на първия персонален компютър.

Обаче не е толкова весело, когато се прецака твърдия диск и няма от къде да възстановите данните си. Тогава ви идва на ум, че можеше и да копирате оная папка със сорс кода в dropbox например... и сега да си я върнете обратно... Само ако не беше толкова досадно да се правят архиви и да се ъплоудват на някъде. Ами всъщност не е толкова досадно. С bash скриптове и cron, всяка досадна задачка я прехвърляте на Линукс и той с удоволствие ще я върши редовно вместо вас.

Добрият човек Andrea Fabrizi е написал скрипт, който позволява да работите с dropbox от командния ред. Отбележете си някъде да го почерпите бира, когато го срещнете. Свалете си dropbox-uploader.sh и го настройте за работа с вашия dropbox, следвайки указанията на Андреа. С негова помощ можете да копирате архивите си на редовни интервали там с помощта на скрипт и cron.

Естествено, аз не ви съветвам да качвате данните си в Интернет незащитени и да се доверявате на сигурността на dropbox. В никакъв случай. Нямате никаква реална представа колко защитен е сайта им и дали вече не е хакнат. За това силно ви препоръчвам да криптирате всяка информация, която качвате там. Скрипта, който ви предлагам, освен че създава архиви от директориите, които сте му посочили, също така криптира тези архиви с публичен ключ, преди да ги качи в dropbox, така че само вие да можете да ги декриптирате в последствие с частния си ключ. Дори някой да ги източи от там, няма да може да ги разгледа.

Като първа стъпка трябва да си генерирате двойка частен-публичен ключове специално за целите на архивирането. Не ви съветвам да използвате ключове, които използвате вече за други цели. Необходимо е да имате OpenSSL в системата си, ако нямате, инсталирайте си го. С него генерираме ключовете:

openssl req -x509 -nodes -days 100000 -newkey rsa:2048 -keyout prk.pem -out puk.pem -subj '/'

Частният ключ prk.pem запазете някъде на сигурно място, чиято сигурност вие контролирате. Този ключ отключва архивите. Публичният ключ puk.pem ще се използва за заключването им, него може да запазите където ви е удобно, той може само да криптира.

Сега сте готови да използвате моя скрипт. Свалете си го от тук: dbackup. В началото на скрипта има няколко променливи, които трябва да настроите, за да стане използваем.

  • bcpdir=("${HOME}/mp3/" "${HOME}/scripts/") - тук задавате директориите, които искате да се архивират. ${HOME} е променлива на обкръжението, която отговаря на вашата домашна директория. Можете да зададете колкото пожелаете директории тук, като записвате пътя до тях в кавички и ги разделяте една от друга с интервал. В примера скрипта ще архивира две директории от домашната ми директория - mp3 и scripts.

  • pubkey=("${HOME}/dropbox_backup/pukey.pem") - тук се посочва публичния ключ, който ще се използва за криптиране на архивите. Задайте пълния път на файла.

  • dboxup=("${HOME}/dropboxbackup/dropboxuploader.sh") - това е пълния път до скрипта на Andrea. С него ще се ъплоудват архивите в dropbox. Необходимо е преди да изпълнявате моя скрипт, да сте настроили неговия за работа с вашия dropbox.

  • dboxdr="/backups" - това е папката в dropbox в която искате да се запишат архивите ви.

След като сте настроили тези променливи, можете да си създадете запис в cron, който да изпълнява скрипта на определен от вас интервал. Честито.

В този backup скрипт липсват много неща, които биха го направили истински бекъп скрипт. Например той прави само пълни архиви на посочените директории, не предлага възможност за частични архиви само на файловете, променени след последния пълен архив. Именно поради това е poor man's вариант на бекъп, а не истински бекъп. Но по-добре такъв, от колкото никакъв.

Едно нещо, което липсва и което вие можете сами да добавите - след успешно качване на архивите в dropbox, да изтрива архивите от локалната машина, за да не заемат излишно място.

Скрипта вече си работи в /tmp директорията и почиства след себе си. Освен това разделя архивите на части от по 512M. Ако искате по-малки или по-големи парчета - задайте размера в променливата bckpch в мегабайти. За всеки файл се изчислява контролна сума (md5).

DreamHost FAIL (another one)

от Ясен Праматаров
лиценз CC BY

DreamHost са пълни смешници! Казвал съм го и преди, но това вече прелива чашата. Единствената причина да не се махам от тях толкова време е, че все нямам време – имам доста неща за местене, не е просто едно блогче на уърдпрес. А, и другата причина е, че не са български хостинг. Не ми се задълбава в тая насока, но накратко аз доверие нямам по принцип на споделените хостинги, та камо ли ако са български. Всички oversell-ват, при това яко, масово нямат даже ssh, по-специализираната поддръжка е под всякаква критика, а и данните са ми в държава, управлявана от луди алчни нарцистични властолюбиви… хора.

Но за Дриймхост – вижте сега, казвате, че правите “Proactive Security Maintenance” чрез “(New Login Keys)”. Похвално, но:

1) нито е “proactive”, защото го пишете постфактум,

2) нито е “security”, защото НЕ Е и си е покана “елате ни направете MITM” и

3) що не вземете да се гръмнете с вашите циркулярни писма, в които пишете оригиналности и тъпотии, а когато има нещо сериозно – правите проактивно действие, което нито е действие, нито е проактивно.

Толкова съм потресен, че чак не ми се обяснява. Нямам думи направо. Който знае за какво става дума или има време да порови, ще разбере… Вижте, дори уеб-страницата, на която е “обявлението”, не е през SSL, а си е по чист HTTP. Даже когато го видях снощи, съобщението си беше с цитиран ключа на съответната система, която за пример са достъпили… После са го заменили с “removed for security reasons”… Всъщност защо не пуснахте ssh id-то? Щото трябва да пуснете тези на всичките ви хостове, не само на този, който сте пробвали в примера, и това ви се е видяло много като текст? В коментарите някой се беше опитвал да трие ред с номер 10278, който също е от примерната система на админа в Дриймхост… (Сега поне знаем, че някой от техните админи има поне 10278 хоста в known_hosts, макар че какво ни интересува.)

Имат ми пощенския адрес. Даже ми имат два. Имат списък за циркулярни писма, с които спамят потребителите си за глупости. Имат административен панел, в който се влиза с парола и който е по https, където можеха да направят някаква автоматика за това… или изобщо ако бяха пуснали съобщението в админ-панела, щеше да е сто пъти по-добре. Защото вече си влязъл, вече си се доверил на панела. А така, в някакво си сайтче?

Чак ми става кофти, че такива смешници се опитват да се набъркат в OpenStack. Къш бе!

Аматьори.

Отворените данни в страната на Линукс

от Йордан Радунчев
лиценз CC BY

Тези дни от Държавния архив направиха данните за всички загинали в Балканската война достъпни на специален Интернет сайт: http://archives.bg/balkanwars/. Наистина не по най-удобния за използване и обработка начин, но не им се сърдя - те също се учат в движение, достатъчно е, че са тръгнали в правилната посока. Боян Юруков, който вероятно влага най-много усилия в каузата "Отворени данни" у нас, е изтеглил всичката информация от сайта и след допълнителна обработка, я е публикувал на този адрес: http://opendata.yurukov.net/balkanwars/, като CSV файл с табулация за разделител на полетата. Целта на този текст е да ви покаже как може да използвате основни Линукс инструменти за обработка на подобни данни.

И така, имаме CSV файл. Тоест - обикновен текстов файл съдържащ данни, структурирани по определен начин. Всеки ред от този файл представлява запис за един човек. Всеки запис се състои от няколко полета, разделени с табулация едно от друго. Първият ред-запис във файла представлява всъщност списък с етикетите на отделните полета в реда по който са подредени във всеки ред-запис. Ако сте изтеглили файла с данните от сайта на Боян, можете да го отворите и да погледнете - петото поле на всеки ред-запис съдържа фамилията на човека, за когото е записа. Дванадесетото - датата на смъртта му. И така нататък. Така са организирани данните.

В Линукс, когато стане дума за текстов файл, записи по редове, данни по полета - веднага се сещаме за awk. С негова и на приятелите му помощ, можем да извлечем информация от данните. Приятелите на awk са sort и uniq. И така - може би ви интересува в битките при кои населени места, българската армия е дала най-много жертви? Във файла информацията за мястото на смъртта се съдържа в поле 13 от всеки запис. С awk можем да извадим само него от всички данни. Със sort ще сортираме резултата от работата на awk. Инструмента uniq, извикан по подходящ начин, ще преброи колко пъти се среща всяко име в подредения от sort списък. Резултата от uniq ще дадем отново на sort, като този път го помолим да го сортира в обратен ред - от най-голямата стойност към най-малката. И тъй като ни интересуват само най-големите стойности, ще извикаме head и ще поискаме от него само първите десет стойности от списъка, изготвен от sort. Следите ли мисълта ми? Ето я цялата операция в един команден ред:

awk 'BEGIN{FS="\t"}{print $13}' zaginali.csv | sort | uniq -c | sort -nr | head -n 10 
Красиво :) Резултата от изпълнението изглежда така:
    2659 
    1684 Чаталджа
   1502 Одрин
   1168 Чорлу
   1156 София
   1044 Бунар Хисар
    817 с. Тарфа
    801 Лозенград
    739 с. Калфа кьой
    718 Хисар

За 2659 от загиналите липсва информация къде са загинали. 1156 са починали в София - вероятно става дума за ранени и болни, евакуирани и починали в болници.

Малко по-подробен поглед върху awk частта... Това което е оградено с '' представлява "програмата", която искаме awk да изпълни върху всеки ред от файла, който му даваме. Ето съставните й части и коя какво прави:

  • BEGIN{FS="\t"} - указва на awk, че за разделител между полетата в записа използваме табулация. Налага се, защото по подразбирне awk използва интервал за разделител. BEGIN казва на awk да изпълни инструкциите в следващия блок {} преди да започне да обработва файла.

  • {print $13} - инструктираме awk да отпечата 13 поле от всеки ред-запис във файла zaginali.csv.

Това е почти най-простия начин да се използва awk. Толкова прост, че чак е обиден за него и вероятно тук бихме могли да използваме cut вместо awk.

Със същия команден ред, като го насочим към друго поле от данните, можем да извадим различна информация. Например за това кой войнишки набор е дал най-много жертви в Балканската война - набора на загиналите е посочен в седмото поле..

awk 'BEGIN{FS="\t"}{print $7}' zaginali.csv | sort | uniq -c | sort -nr | head -n 10

    14337 
    2985 1906
    2326 1908
    2300 1907
    2297 1905
    1886 1904
    1807 1909
    1640 1911
    1615 1910
    1512 1912

За 14337 души липсва информация от кой набор са. От останалите, за които има такава - най-голям брой жертви е дал набор 1906 - 2985 човека. До тук видяхме, че с прости и достъпни във всяка Линукс дистрибуция инструменти, можем да извличаме информация от данните, задавайки прости въпроси. А ако искаме да зададем по-сложен въпрос, който да ни даде по-специфична информация? Например - кой войнишки набор е дал най-много жертви в боевете при Одрин? На практика комбинираме двата прости въпроса, които използвахме в примерите до сега. Истината е, че в примерите до сега не сме използвали и 5% от мощта на awk. За него подобни задачи са тривиални.

awk 'BEGIN{FS="\t"}$13~/Одрин/{print $7}' zaginali.csv | sort | uniq -c | sort -nr | head -n 10

    476 
     77 1906
     66 1905
     62 1894
     59 1912
     59 1895
     57 1908
     56 1904
     50 1910
     45 1893

Въобще не го затруднихме - поискахме полетата с набора, но само на записите в които полето за място на смъртта съдържа Одрин. И после sort, uniq и head свършиха своята част от задачата. Най-много жертви при Одрин е дал набор 1906... А къде е дал най-много жертви въпросният героичен набор 1906? Да попитаме:

awk 'BEGIN{FS="\t"}$7~/1906/{print $13}' zaginali.csv | sort | uniq -c | sort -nr | head -n 10

    118 
    101 Чаталджа
     91 Чорлу
     78 с. Тарфа
     75 Бунар Хисар
     71 Одрин
     61 Щип
     52 Хисар
     48 с. Криволак
     46 Лозенград

В боевете при Чаталджа...

Тъй като в последните два примера усложнихме въпроса, инструкциите към awk също леко се усложниха.

  • BEGIN{FS="\t"} - това вече го знаем. Уведомяваме awk, че разделителя в нашия файл е табулация.

  • $7~/1906/{print $13} - тук отново искаме от awk да отпечата поле №13, но под условие! Условието е поле №7 да съдържа 1906 - ако там има друга, различна година, не го искаме. За това пред инструкцията за отпечатване на поле №13 сме сложили условието $7~/1906/... Сега awk ще погледне какво има в поле 7 и ако там стои 1906, ще продължи с изпълнението на инструкциите в блока {}, ако няма 1906 - ще мине направо на следващия ред-запис, без да отпечата нищо.

Виждате, че Linux има всичко необходимо, за да отговори на въпросите ви, стига вие да можете да ги формулирате правилно и да му дадете база от данни, от която да извлече отговора. А ако впрегнете и gnuplot - ще се сдобиете и с красиви графики, които да визуализират информацията ви. Но за това друг път.

Комфорт в терминала

от Владимир Колев
лиценз CC BY-NC-ND
Терминал

Със следната статия ще ви покажа как да направите ползването на терминала малко по-удобно и разбира се приятно. Все още много потребители намират ползвато на текстовата работна среда за неудобно и стряскащо, но моето лично мнение е, че тя може да бъде доста приятна и примамлива, също както едно време беше модерно на графичната среда да се активират какви ли не ефекти, което спомогна за популяризирането на някои десктоп Линукс базирани дистрибуции.

Инстументите, които ще покажа тука са следните: zsh и tmux (други мисля, че вече сме си споменавали в по-стари статии като cmux, irssi, alpine).

Zsh (Z Shell)

Е алтернатива за bash (bourne-again schell), но много по-конфигурируема и също така разпространена. С какво обаче е по-различен и за предпочитане пред инсталирания по подразбиране в много дистрибуции bash:

  1. Функционира изключително близко до bash, което позволява на потребителите да не се налага да се учат на ново как да го ползват
  2. Предлага корекция на правописа. Предполагам ви се е случвало в бързината да напишете команда и да изпуснете/заместите буква. Zsh се опитва да разпознае командата и ви предлага да я замести преди да се опита да изпълни сбърканата от вас команда.
  3. Изключително конфигурируем (както, между другото, вече споменах).
  4. Много добро и коректно допълване с клавиша [Tab]
  5. Споделена история между сесии – ако сте стартирали няколко zsh-сесии едновременно, то те ще си споделят историята
  6. Вграден пейджър – това можете да го разбирате като вградена less функционалност. Така можете да напишете <README вместо cat README | less
  7. Красив и разширяем – освен по-подредения синтаксис, към zsh можете да иснталирате пакет oh-my-zsh, с който инсталирането и конфигурирането на обвивката става изключително бързо и лесно. Смяната на контролната лента е просто като да смените темата на десктоп средата (не говоря за Gnome3, където това е чиста висша акробатика).

Повечето дистрибуции идват с преинсталиран bash, и ако искате да го смените ще трябва да извършите няколко машинации, които далеч не са нещо особено сложно:
- Инсталирате пакет zsh: В ArchLinux това би било pacman -S zsh
- Смяна на шела по подразбиране за настоящия потребител – в почти всички дистрибуции това става с командата chsh [change shell]:

chsh -s /bin/zsh

- Добавяне на oh-my-zsh: Това може да стане по два начина:
Автоматизирано с curl:

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

Ръчно с извличане на git хранилището:

git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

Тук обаче ще се наложи ръчно да създадете .zshrc файла, по образеца в ~/.oh-my-zsh

След като рестартирате терминала би трябвало да бъдете поздравени с промпта на zsh, от там следва една бърза настройка като разрешите някои добавки за вашата дистрибуция или често ползвани приложения. Можете да смените и командния промпт,с друг по-шарен, или по-полезен за вас.

Списък с предлаганите теми към oh-my-zsh можете да намерите на адрес: https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
Списък с предлаганите добавки и кратко обяснение за какво са: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins

И един бонус, който мен лично доста ме ядосваше в началото е пействането от clipboard с клавишната комбинация Shift+Ins за целта трябва да добавите следното във вашия .zshrc файл:

# Create a widget from the function paste-from clipboard.
# Note that /dev/clipboard will give you access to the clipboard
# if you are on cygwin.
paste-from-clipboard() {
CLIPOUT=`cat /dev/clipboard`
BUFFER=$LBUFFER$CLIPOUT$RBUFFER
}
 
# Bind a widget with the same name as the function
zle -N paste-from-clipboard paste-from-clipboard
 
# Make insert paste from clipboard by binding it to the widget.
# If you hit ctrl-v and then the key, it shows you the extended code to use.
bindkey "\e[2~" paste-from-clipboard

Общо взето това е – мисля, че останалото бихте могли сами да разучите.

Tmux (Terminal Multiplexer)

Накратко по-добра алтернатива за screen и byobu, позволява ви да стартирате една или повече инстанции на шела в една програма, като ги разделяте по екран или по прозорци – всичкото в една програма. Представете си ползвате компютъра без графична среда. Няма прозорци, които да минимизирате, няма табове – за запознатите – тук влиза в употреба screen. В случаят при мен влиза в употерба tmux. И защо е за предпочитане – защото позволява с прости клавишни комбинации да разделяте екрана, както пожелаете. В screen например разполагате с прозорци и толкова (или пък аз не съм достатъчно запознат). Докато в tmux можете да разделяте допълнително прозореца на дялове. По този начин можете да изпълняване няколко неща директно от един екран (особено за разработка това е страхотно (ляво: терминал, дясно: vm,  долу: gdb). Разбира се бихте могли да си нацепите по този начин и vim, но за някои от функциите ще трябва да се погрижите за подходящи добавки.

Важно да кажем за някои от характеристиките на tmux:
- Поддържа utf-8 и 256 цвята
- Панели и прозорци, като всеки панел може да бъде разделят многократно
- Смяна на прозорци, чрез търсене на по индекс
- Заключване на терминала – ръчно или автоматично след определен период от време и т.н.

Инсталирането на tmux става от пакетния мендиджър на почти всяка дистрибуция.

За да не преписвам клавишните комбинации ще добавя една Ctrl+b+…. – това е командната клавишна комбинация, след което следва командата.
На пример ако искате да разделите екрана на две полета ляво/дясно Ctrl+b+!
Ctrl+b+" – разделя екрана/полето на две горе/долу
Ctrl+b+<стрелки за движение> – можете да се движите между полетата
и т.н. пробвайте с man tmux за да ги разучите

Щеше ми се да допълня и малко повече за настройката на vim посредством bundles, но мисля, че за това ще трябва допълнителна статия.

Надявам се информацията да ви е била полезна.

P.S. BulTux.Org rises from the dead :-)

Свободни кубчета в космоса

от Lindeas
лиценз CC BY

photo by ArduSat

Темата за изследване на Космоса е отново актуална за широката публика – показва го например интересът в социални мрежи и блогове към текущите мисии на NASA до Марс. Това повторно обръщане към небето след дълги години превес на земните ни проблеми съвпада със скорошното по-масово навлизане на идеите на софтуерната свобода в областта на хардуера – както чисто компютърен, така и не само; както за решаване на задачи от ИТ-инфраструктурата, така и на битови такива.

Тези дни в разговор с приятел стана дума за интереса към звездите – защо и как преди години, когато бяхме деца, това беше цел, повече или по-малко обединяваща нации, понякога дори с коренно различни политически системи, а в по-скорошно време е тема от миналото, скучна новина или в най-добрия случай сценарий на научнофантастичен филм. Които филми, както и книгите, между другото, сякаш страдат то изчерпване и разчитат на преповтаряне. Защо? Именно погледът към външното ни обединява, дава ни цели и ни зарежда с ентусиазъм. Разбира се, търсенето на порив за действия успява и в социалното. Успява дори и вътре в самите нас. Но пълното ослепяване за космическото като реално и достижимо е глупава и, както се оказа, нетрайна нагласа. Вчера в друг разговор се спомена идеята за достъп до компютърни облачни услуги като масова, общодостъпна и комунална услуга – някои хора вече развиват това. Да си представим сега достъпът до космически изследвания като комунална услуга. Или поне наченки на такава. Вече има дълъг списък с начини за участие.

photo by ArduSat

ArduSat е такъв проект. Кубче, което ще работи с Ардуино – както личи от името му. Това е първият такъв проект за спътник, в който ще могат да участват всякакви хора – е, в случая в зависимост от дарението, което са направили през страницата на проекта в Kickstarter.

Самият спътник ще има: камери, спектрометър, датчици за температура, вибрации, налягане, магнитно поле, светлина, озон, въгледвуокис, радиация, инфрачервени лъчи, радиовълни… Веднъж изведен в орбита, ще се насочва чрез три малки магнитни двигателя (magnetorquers). В зависимост от начина на извеждане в орбита ще може да остане в нея между 6 месеца и 2 години. Накрая, след загуба на скорост и изпадане от орбитата ще навлезе в атмосферата и ще изгори изцяло, защото е съвсем малък – 10 куб. см. и с тегло 1 килограм. Няма да стане космически боклук, заради сравнително по-ниската си орбита (в сравнение с големите спътници) и съответно изгарянето.

Част от датчиците също са свободни проекти, като например спектрометърът mySpectral.

За извеждане в орбита се предвиждат няколко варианта – от съпътстващ товар на регулярна мисия на голяма ракета до пробни полети с балон или с изстрелване на малка ракета от стратосферен балон. Последните варианти, разбира се, не могат да достигнат до височина за орбита, но могат да се използват за изпробване и всякакви по-малки и краткосрочни научни проекти на общността. В първия случай става дума за височина около 600 км., което представлява ниска околоземна орбита (до 2000 км., за разлика от геостационарната на големите спътници, която е около 40000 км.). А с балон може да се издигне докъм 30-тина километра – в рамките на стратосферата, която е едва вторият слой на атмосферата.

Енергията за работа на цялата електроника на “борда” и за насочване на кубчето ще идва от слънчеви панели в страните му. Откъм тъмната страна на Земята – от батерия. Големият проблем на всички неща в космоса е слънчевата радиация и лошото е, че такъв малък сателит няма как да се опакова в достатъчна радиационна защита и електрониката бързо ще започне да отказва. Решението в случая е дублиране на системите, а пък когато се очаква платките да сдадат багажа – между половин година и година и половина – самото кубче вече ще е загубило инерция и ще се е насочило към атмосферата.

CubeSat in Wikipedia

Това е концепцията за кубчета-спътници (cubesats), която от година-две се възприема много сериозно, вече има действащи такива и например наскоро NASA възприеха за свой проект.

Интересното за нас е, че ArduSat е част от идеята за свободен хардуер, приложена в случая върху космическите изследвания. Свързването на платките Arduino (самите те под свободен лиценз), както и всичкият допълнителен полезен товар, който ще се слага в кубчето ще са налични (ArduSat.pdf в google docs) под CC BY-SA. Конструкцията на самия CubeSat е публикувана (pdf) от Държавния политехнически университет на Калифорния за свободно ползване (public domain).

Това е формата, а за съдържанието – остава да почакаме малко и да видим какви проекти ще се направят, какви софтуери ще се напишат и какви изследвания ще се направят. Или галерии с потребителски снимки от борда на кубчето към земята, към звездите, луната… Ето списъка с идеи (в google docs) – изглежда впечатляващо, особено за апарат, който ще бъде достъпен за неспециалисти и хакери от цял свят.

Докато все още говорим за хардуер, едно съвсем кратко отклонение – Олимекс започват да правят петъчни срещи в Пловдив за разговори за свободен хардуер, електроника, Ардуино, OLinuXino, свободни проекти. Може пък и ArduSat да се окаже интересна тема за обсъждане на по бира с хардуерни хакери. Аз съм далеч от мястото за среща, а и наистина съм много бос в електрониката, но ако някой прояви интерес, нека мине – не познавам хората от Олимекс, но както изглежда са истински ентусиасти и ще се радват да обменят идеи.

EmailPrintIdenti.caFacebookTwitterGoogle+DeliciousLinkedInShare/Bookmark

Набързо за aptitude

от Lindeas
лиценз CC BY

По случай скорошния рожден ден на проекта Debian, нека кажем нещо за търсенето в aptitude. Aptitude е някак странна програма – ползва се за основни неща от тези, които не искат да се задълбават в подробностите на apt, dpkg и пакетното управление в Debian. От друга страна пък се ползва и от напреднали хакери и разработчици на пакети. Едните ползват два, максимум три клавиша – u за обновяване, f за забравяне на новите и g за инсталиране на отбелязаните – а другите използват всякакви подробни клавиши, съкратени търсения и превключване на изгледите, от които на нормалния човек му се завива свят. Е, или поне му става като в Emacs (приятелска закачка към емаксаджийте, не се сърдете).

Да видим някои от най-полезните клавиши за ежедневна работа и някои основни търсения и шаблони за търсене, които може да са ни полезни. Без претенция за изчерпателност, разбира се – аз самият дълги години вече не съм седнал да дочета наръчника за програмата… Действам на принципа “колкото ми стига – толкова”.

Клавиши:

u – обновяване на списъка с пакети. Същото като apt-get update, или по-точно aptitude update. Някои си го настройват в cron, други инсталират cron-apt, apticron и подобни. Трети, като моя милост, натискат u при влизане в aptitude, за да се радват на запълващите се зелени и оранжеви стълбчета.

f – забравяне на новите пакети (aptitude forget-new). Когато повече от веднъж видите един и същи пакет в графата “New Packages”, си е досадно. Може да се настрои автоматично да ги отбелязва като нови след инсталиране на нещо, но къде отива удоволствието да гледаш как една програма “забравя”? :)

g – при първо натискане дава списък с действията по пакетите и при повторно – започва да ги действа. Пак стълбчетата.

e – ако има неразрешени зависимости, се опитва да ги разреши автоматично. Ако първият списък не ви харесва, натиснете “>” за следващо предложение. И пак, и пак – докато намерите комбинация, която ви устройва. Назад в тази поредица предложения се връщате с “<”. Понякога спестява време вместо ръчно да оправяте конфликтите с избиране на всеки пакет, да ползвате “e”. Но и често не върши работа – логиката е такава, че няма тотален приоритет на вече инсталираните пакети и неведнъж може например за едно малко програмче да ви предлага да махнете целия X с цяла страница пакети. Не разчитайте сляпо на тая автоматика.

M – ръчно отбелязване на отделния пакет като “автоматично инсталиран”.

m – ръчно отбелязване на отделния пакет като “ръчно инсталиран”. Тези последните две са полезни при бъдещо обновяване или премахване на пакети, които са в зависимост от въпросните. Казано накратко, “автоматичните” се повличат от зависещите от тях (не е толкова просто, но ни стига за момента). Разработчиците описват зависимости, но понякога ръчната донастройка на това си е полезна.

Бързи търсения:

b – търси счупени зависимости (от “broken”). Същото като “/~b”.

/ – влиза в режим търсене. Най-простото е да въведете някакъв низ, който смятате, че се съдържа в името на пакета, защото по подразбиране търси в името. Може да шикалкавите с ^ за търсене в началото и ! в края на името.

/~ – специални търсения. Тук темата е широка и не ни стига малкият сайт. Накратко някои полезни – /~dtext търси за “text” в описанието на пакета; /~mtext търси в полето за пакетиралия разработчик; /~atext търси зададено действие за пакет (“text” може да е install, upgrade, hold и т.н.); /~stext търси в секцията “text”; /~Atext търси в конкретен архив на хранилището “text” (stable, unstable и т.н.); /~Otext търси в хранилището на “text”… Май за тези се сещам…

Да не търсим повече шаблони за търсене, мисля че има още доста, но и тези са предостатъчно. Особено като се има предвид, че едно от удобствата на aptitude е визуалната работата с интерфейса – стрелки, enter, q. Каквото е mc за командния ред. :)

Може би тук е моментът да спомена, че съкращенията с ~ си имат несъкратен аналог с ? – например на d отговаря description, на b – broken и т.н. Рядко съм ги ползвал, но ако някъде видите да се споменават, да знаете, че са същите като кратките. Може би е някакво удобство да виждаш изписана цялата дума и така да не я грешиш, не знам.

Също така всяко от тези условия за търсене може да се обръща с “!” – тоест /!text търси за пакети, които НЕ съдържат “text”.

И сега нека честитим рождения ден на Дебиан, като пуснем следното търсене:

/~i!~Odebian

Това ще ви даде пакетите, които са инсталирани и не са от официалните хранилища на Debian. От пакет на пакет може да минавате с “n” (от “next”). А списък с всички тези пакети наведнъж може да получите от команден ред така:

# aptitude search '~i!~Odebian'

Ако като мен използвате към официалните хранилища и тези на Siduction, тогава:

# aptitude search '~i!(~Odebian|~Osiduction)'

Всичко останало са пакети от рожденика :)

EmailPrintIdenti.caFacebookTwitterGoogle+DeliciousLinkedInShare/Bookmark