Category Archives: свободен софтуер

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

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

от Йордан Радунчев
лиценз 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 :-)

Набързо за 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

MySQL -> TheirSQL?

от Lindeas
лиценз CC BY

Прокрадват се съмнения в обещаната от Oracle политика към MySQL, когато ги напазаруваха със Sun. Съмненията не са от вчера и дано всичко накрая свърши като кратка буря в чаша вода.

А дано, ама надали, както биха казали някои…

MySQL AB, компанията, която развиваше MySQL, беше купена през 2008г. от Sun Microsystems и след това, две години по-късно, премина в лакомите ръце на Oracle, когато погълнаха Sun. Положението е много интересно, защото самите Oracle имат за основен бизнес една от най-мащабните комерсиални системи за управление на бази от данни. MySQL на практика им се явява нещо като вътрешна конкуренция, защото от своя страна е най-разпространената свободна система за бази от данни.

MySQL AB пък винаги е работела на принципа на двойното лицензиране – продуктът се предлага и като свободен софтуер, но основните приходи идват не от поддръжка, а от продажби на комерсиални лицензи. Нерядко са се чували притеснения от този модел – например Qt на Trolltech и др. – най-вече заради лесният механизъм на еволюция към затворен код, ако компанията промени приоритетите си за бъдещите версии. Между другото, наскоро за пореден път такива притеснения се появиха за въпросното Qt, след като от ръцете на Nokia сега премина в тези на Digia – и двете (едната повече, другата по-малко) заподозрени от общността в близки отношения с Microsoft. Може би сравнението на Digia с Oracle не е много коректно, но бъдещето ще покаже кой как си спазва обещанията.

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

При MySQL може би е реалистичен вторият вариант. От доста време бивши разработчици на MySQL, заедно с основателя на проекта Monty правят продукта MariaDB, който е двоично съвместим и заменим с MySQL. В повечето случаи разликата е само в имената на програмите и съответно имената на инсталационните пакети. Затова в дистрибуциите се повдига въпроса за премахване на твърдото изискване за “mysql” в зависимостите на пакетите, за да може да се използва която и да е от тези системи, без функционална разлика.

Притеснението на хората от MariaDB в случая е заради скриването в последната версия на MySQL (с която те периодично се синхронизират в името на съвместимостта) на списъка с промените и на тестовите скриптове. Така не се разбира какви грешки всъщност са отстранени в тази версия и никой външен разработчик не може да е сигурен защо нещо е поправено, какво е било то, нито може да провери дали наистина е поправено. Така с един “удар” се отсича достъпа на външни на компанията разработчици – да, кодът е там и е под свободен лиценз, но я иди да четеш хиляди и хиляди редове код и да не знаеш кое как и защо е променено…

Ако се стигне до масова миграция към MariaDB, затруднението ще е в зависимостите на дистрибуциите и в свикването с името от потребителите. Първото е лесно и бързо решимо – и по-големи промени са се правили в дистрибуциите, а тук става дума почти само за промяна в име. Второто ще е големият проблем, защото днес всеки знае за MySQL и почти никой – за MariaDB. Имам предвид особено мениджърите на средно ниво из фирмите, на които им трябваха години, за да запомнят MySQL, а сега не се знае колко биха им трябвали, за да го сменят. Ще кажете – няма проблем, те във фирмите ще си ползват комерсиални лицензи за MySQL, независимо колко отворен или затворен е кодът. Да, така е, от гледна точка на бизнеса няма голям проблем. Но от гледна точка на софтуерната свобода години усилия отиват на вятъра.

Може всичко да се окаже техническа грешка и нещата да се оправят. Ако не – още един грях на Oracle към свободния софтуер.

EmailPrintIdenti.caFacebookTwitterGoogle+DeliciousLinkedInShare/Bookmark

Debian на 19

от Lindeas
лиценз CC BY

Няма как да се пропусне споменаването – макар да се случва всяка година, рожденият ден на Дебиан си е повод ако не за хакерско празненство с торта с лого, то поне за усмивка и едно “благодаря” наум.

Проектът Debian навърши 19 години. Ако беше от Алабама или Южна Корея, примерно, щеше да навършва пълнолетие. Но за всички, които ползваме Debian GNU/Linux си е отдавна зрял. Думите са или малко, или ненужно помпозни, или така и така вече казани на предните годишнини, затова е достатъчно само едно:

Честит празник на всички!

Софтуерната свобода е за всички потребители, а Дебиан продължава да прави много за разпространението на тази свобода. Дотолкова, че приносът често не се разпознава и е станал част от пейзажа, част от бита ни – както и трябва да бъде.

apt-get rule-world! Debian FTW! Happy birthday! :)

EmailPrintIdenti.caFacebookTwitterGoogle+DeliciousLinkedInShare/Bookmark

BeakerCMS – възраждането на HotaruCMS

от Lindeas
лиценз CC BY

Нов ден и нова добра новина – след като прекалено дълго време HotaruCMS нямаше никакви обновления и никакво раздвижване около кода и след като преди време Nick Ramsey, авторът на Хотару, обяви, че изоставя проекта, сега кодът започва нов живот под името BeakerCMS и ръководството на Stuart Duff.

Всички препратки от стария сайт сочат към новия, има тема във форума на стария, обявяваща разклонението… което всъщност е по-скоро миграция, отколкото класически форк.

Нова версия се очаква скоро, кодът ще е и в github (core, plugins) и се обещава плавна миграция на старите инсталации. Новият шеф си личи, че има опит освен с всичко друго и с уебдизайн и наръчници за лъскавини за WordPress, така че може да се очаква освен по-стабилно, и по-красиво бъдеще.

BeakerCMS е система за управление на съдържание, ориентирана основно (но не само) към споделяне на препратки и новини. Близко до първоначалната идея на Digg и на свободни проекти като Pligg, но с олекотен интерфейс и с възможност за управление на всякакъв вид съдържание – от статични малки сайтове до каталози с мултимедия – не само на новини и гласове за новини. В Lindeas ползваме леко променена инсталация на Hotaru за сайта Ново 20.

EmailPrintIdenti.caFacebookTwitterGoogle+DeliciousLinkedInShare/Bookmark

Calligra Author

от Lindeas
лиценз CC BY

Проектът Calligra обяви, че започва работа по нова програма от групата “офисни” приложения, което ще е насочено изцяло към авторите на текстове – писателите и съставителите на техническа документация.

Интересното в новината е акцентът върху писателите. “Офисни” е в кавички, защото от много време (може би за България от времето на Микротекст) програмите за текстообработка се използват ако не по-често, то поне не по-рядко вкъщи и за лични цели, отколкото в офис за служебни документи.

Къде пишем личните си текстове, и по-точно с какви програми ги пишем? Почти винаги отговорът на неизкушените от софтуерната свобода ще е “в Word”. Сред хората, които ползват свободен софтуер, но идват от тази уърд-нагласа, много ще кажат “в OpenOffice” или “в LibreOffice”. Някои с право ще възразят, че текст с малка или никаква нужда от специално форматиране е безсмислено да се пише в офисна програма и ще пишат текстове в обикновен текстов редактор, запазени в текстови файлове. Уеб-осъзнатите сред нас ще предпочетат онлайн редакторите на блоговете си. Тук-там ще се чуят гласове за GNote, Tomboy или подобни. Но всеки ще се съгласи, че няма инструмент, който да се доближава достатъчно до удобството на писането върху хартиени листове. С възможността във всеки момент да се отгърне нещо от написаното вчера или пък да се обхващат с един поглед два различни пасажа. Да, офисната текстообработка има такъв преглед, но той е преглед за печат, а не за проследяване на текста.

Като отидем пък към проблема за съвместимостта между форматите и факта, че нещо написано на офисна програма най-често остава в нейния си формат (пак заради трудното, несигурно и сложно преобразуване), може би най-”правилният” избор е да пишем на LaTeX… Страхотно, ще кажат програмистите, най-накрая правилен отговор. Но нека вдигнат ръце тези, които без капка притеснение отварят Emacs и пишат LaTeX начисто! Или тези, които инсталират Eclipse с всичко нужно, само за да напишат кратък разказ. Или които започват да ровят за TeX-редактори в дистрибуцията си, когато им дойде идеята за разказа. Да, със сигурност има много такива хора. Е, Calligra Author може би не е за тях. Но аз лично се радвам, че след вече десетилетия мислене за писането на текст като за “писане в уърда” се появява проект, насочен изцяло и специално към пишещите.

Не ме разбирайте погрешно – страхотни редактори има и днес. Но винаги работата по текста – изписване, редактиране, оформяне, дописване и пак редактиране и коригиране – се накъсва. Особено, когато става дума за съвместна работа на няколко души – автор, редактор, коректор… И винаги се намесва проблемът с преобразуването на форматите или друга подобна несъвместимост.

Концепцията на Author не е изчистена докрай и от Calligra ще търсят мнението на самите автори – кое им е нужно, в какъв формат, в кой момент… Целта е да се направи инструмент, с който да се създават електронни книги (от всякакъв вид) без излишни технически претрупвания. Очаква се първата версия да се появи в края на 2012г.

EmailPrintIdenti.caFacebookTwitterGoogle+DeliciousLinkedInShare/Bookmark

Прихващане и пренасочване на DNS запитвания

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

Ако не знаете нищо за DNSChanger, можете да се информирате на сайта на ФБР. С две думи: шест лоши момчета от Естония намерили начин да манипулират D(omain)N(ame)S(ystem) настройките на милиони интернет устройства. DNS е Голямата Адресна Книга на Интернет - когато напишете в браузъра си www.google.com, браузърът ви не знае нищо за този сайт, няма никаква идея как да го намери. Браузърът отправя запитване до специален сървър, който "знае" IP адресите на всеки сайт в Интернет, получава от него адреса на www.google.com и отваря връзка с него. Обикновено вашия Интернет доставчик има свои DNS сървъри и техните адреси са част от настройките, които компютъра ви получава автоматично. Лошите естонци са намерили начин да променят тези настройки - да подменят адресите, предоставяни от доставчика ви, с такива, които те контролират. По този начин те контролират вашия достъп до Интернет изцяло и са в състояние да ви "водят" на там, на където те искат. Така са успели да пренасочват трафик от нищо неподозиращи интернет потребители към определени рекламни сайтове и определени продукти - от което и са правили пари.

След като ФБР ги спипали, успели да вземат заповед от съд в САЩ, която задължава Internet System Consortium да "вдигне" чисти DNS сървъри на мястото на "лошите" сървъри. Сървърите на ICS се държат като нормални DNS сървъри и не манипулират достъпа до Интернет, като по този начин дават време на засегнатите да изчистят системите си, без да губят достъпа си до Мрежата. Срокът на тази заповед е до 9 юли 2012. На тази дата ICS ще изключи "заместителите". Ако сте били засегнат от DNSChanger и до този момент все още не сте оправили комютъра си, на 9 юли най-вероятно ще бъдете неприятно изненадани - няма да ви се отварят повечето сайтове... Няма фейсбук, няма твитер... Лоша работа.

Най-добре хвърлете едно око на сайта на DNSChanger Working Group - там има инструкции как да проверите дали сте от засегнатите и как да оправите настройките си ако сте. Това, че не използвате Уиндоус на компютъра си нека не ви успокоява. Компютърът ви най-често получава мрежовите си настройки от рутер/сървър на доставчика ви. DNSChanger може да манипулира тези устройства и да "отрови" информацията, която те предават на компютрите под тях, като по този начин лошите DNS настройки се записват и от машини с Линукс или МакОС.

Ако пък вие самите използвате рутер, за да свържете домашната си мрежа с тази на Интернет доставчик, имате добра възможност да се предпазите от подобни лошотии чрез него. Стига рутерът ви да е с инсталирана една от многото свободно разработвани и свободно достъпни операционни системи за рутер, базирани на Линукс. Като DD-WRT или Tomato - за безбройните Linksys, Buffalo и подобни устройства. Или IPCop, Smoothwall или подобни - които превръщат PC с две мрежови карти в домашен рутер. Всички те изпълянват NAT (network address translation) използвайки iptables. Добавяйки следните две правила в iptables на рутера:

iptables -t nat -A PREROUTING -p udp -i eth1 --dport 53 -j DNAT --to 208.67.222.222
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 53 -j DNAT --to 208.67.222.222

рутерът ще прихваща и "пренасочва" абсолютно всички DNS запитвания от компютрите, които обслужва, към DNS сървър на OpenDNS. По този начин, дори някой от тях да е инфектиран с DNSChanger, заявките му ще бъдат прихващани и пренасочвани към "правилен" сървър.

Специално за DD-WRT можете да използвате тази инструкция.

Разбира се, това решение не отменя и не замества "почистването" на компютъра ви от заразата, ако е инфектиран. Според данните на DCWG към 4 юли все още има 341 IP адреса от България, от които идват заявки към "лошите" DNS сървъри - 341 заразени устройства, едно от тях може да е вашето.

Ако не ви е ясно как да инсталирате и конфигурирате DD-WRT или Tomato на домашния си рутер, и така да си осигурите по-добър контрол над него и по-голяма безопасност - изобщо не се притеснявайте да ме потърсите за съдействие - ще ви помогна срещу минимално възнаграждение :)

Прихващането и пренасочването на DNS заявките от компютрите в домашната (офисната) мрежа, в комбинация с филтрите, които предлага OpenDNS, дава много добра възможност за управляване на достъпа на децата (служителите) в къщи (офиса) до Интернет - предпазването им от сайтове с "неподходящо" съдържание, като същевременно ограниченията не влияят на използването на Интернет от родителското тяло (шефа). Но това е друга тема - ако имате непълнолетни вкъщи (подопечни в офиса) и ви интересува - насреща съм да я обсъдим.

Прочети ми аватара

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

И все пак една солидна част от това което съставлява една съвременна личност е присъствието ѝ в Интернет - нейния живот онлайн в социални мрежи, форуми и прочие. Образа на тази онлайн самоличност, с който тя осъществя първоначален контакт с останалите виртуални самоличности, е малка картинка, често наричана аватар (понятието е в обръщение дълги години преди Холивуд да започне да го експлоатира). Ако в офлайн пространството посрещат по дрехите, в онлайн пространството посрещат по аватара. С него имате шанс да манипулирате първото впечатление за вас у непознатите и да предпоставите тяхното отношение към вас в подходяща за вас емоционална гама. Така че не подценявайте малката картинка. (Въййй... като като един Максим Бехар го докарах!)

Бидейки едно от първите неща, които другите "виждат" от вас в Интернет, аватара е добър начин да направите изявление, което да привлече вниманието им. Неговата площ по определение е ограничена, но една-две думи биха се събрали. От вас зависи да измислите кратко, но ярко и запомянащо се нещо. А Линукс ще ви помогне да го изпишете върху картинката, която сте избрали да представлява вашата ярка индивидуалност пред света.

Инструментите за целта са част от пакета imagemagick. Ако се интересувате от всички детайли и инструменти в него - www.imagemagick.org е добро начало. Тук няма да изпадам в подробности. Командите, които използвам и опциите са скрити в прост скрипт на bash - каква изненада - който взима от вас името на файла с картинката и текста, който искате да изпишете върху нея. Какъв контрол имате върху скрипта? Отваряте го с любимия си редактор (както пишат в посредствените сайтове за Линукс, кхъкхъ), и:

  • -background : тук можете да зададете цвета на фона ЗАД текста. ако искате да е прозрачен - използвайте transparent.

  • -gravity : този параметър определя къде върху картинката да се позиционира текста. Вариантите са northwest, north, northeast, west, center, east, southwest, south, southeast. Мисля, че е очевидно кой къде позиционира текста - горната част на картинката е north, дясната east, долната south, лявата west.

  • -font : Очевидно това е шрифта с който ще се изпише текста. Зависи от това какви шрифтове имате на системата си.

  • -fill : Цвета на текста.

  • -pointsize : Размера на шрифта, с който ще се изпише текста.

Променяйки тези параметри, можете да постигнете различни комбинации на текст и картинка. "Прочети ми аватара!" е онлайн еквивалента на култовата реплика "Read my lips!", не се притеснявайте да импровизирате и да сменяте често statement-а върху аватара си. С този прост скрипт това не е трудно. А можете и да го използвате в по-сложни сетъпи, които примерно на определен период от време автоматично четат statements от предварително подготвен файл, изписват ги върху аватар и ъпдейтват с него вашия профил в съответната социална мрежа, използвайки API функциите й. Пример за аватар "избродиран" с този скрипт e моя twitter: @yradunchev

Приятна игра!

#!/bin/bash

[[ "$#" -eq 2 ]] || { echo "Usage: ${0} pict.ure \"caption text\"" >&2; exit 1; }

convert \
-size $(identify -format %w ${1})x40 \
-background transparent \
-gravity center \
-font Helvetica-Bold \
-fill yellow \
-pointsize 40 \
caption:"${2}" ${1} \
+swap \
-gravity south \
-composite ${1%.*}_${2}.png