Реч уредника

ЛиБРЕ! на друштвеним мрежама

Друштвене мреже су све популарније. Превазишле су своју примарну функцију дружења истомишљеника или генерација на мрежи, па данас људи све више користе друштвене мреже за комуникацију и маркетинг. Наш часопис је то увидео и прихватио овакав вид комуникације иако имамо чланове тима који више преферирају мало старије начине комуникације као што су електронска пошта и ИРЦ.

Однедавно смо постали активнији на Фејсбуку и на Твитеру. Почињемо полако да креирамо заједницу окупљену око часописа. Не можемо се похвалити бројем пратилаца ни на једној од ове две друштвене мреже. Mислимо да то може боље и више. Већ сада за неке наше постове на Фејсбуку досег (енг. reach) нам иде и преко 5000. Можемо да закључимо само да нам број пратилаца расте и да сваке недеље бележимо раст, али још нисмо задовољни темпом.

На Фејсбуку смо већ добијали ваше поруке, неке су биле само речи хвале, а било је и конкретних идеја и понуда. Неке од тих понуда и идеја смо одбили због политике часописа, а оне које нису биле у супротности са политиком часописа смо прихватили.

Како су нам стизале понуде за текстове које смо одбили, морамо напоменути да не прихватамо већ објављене текстове са блогова. Прихватљиви су само премијерни ауторски текстови или, евентуално, премијерни преводи страних чланака који су кључни за разумевање и развој слободног софтвера.

Важно је напоменути да нас преко друштвених мрежа можете контактирати ако имате идеју за текст, или сте вољни да учествујете у било којем сегменту развоја часописа. Ако имате неке ваше пројекте отвореног кода, можете их представити у часопису. Сваки пројекат је вредан пажње.

Волели бисмо када би заједница више помогла промоцију часописа. Довољно је да поделите вест са пријатељима и тиме сте потпомогли часопис. Позовите пријатеље за које мислите да су заинтересовани да посете нашу страницу и тиме ћете нам много помоћи.

Ипак, драго нам је да смо успели за кратко време на Фејсбуку да развијемо какву-такву комуникацију.

Друга друштвена мрежа где смо активни је Твитер. Он је мало сиромашнији од Фејсбука јер смо тек одскора почели да га редовно одржавамо, али се надамо да ћемо и ту успети да развијемо добру комуникацију са свима који нас прате.

Наш маркетиншки тим полако расте. Некада нисмо имали маркетинг као део тима, а данас тај тим постаје подједнако значајан као и графика, лектура и ауторство.

За наредни период припремамо додатне маркетиншке акције. Обећавамо вам много више интеракције чланова редакције са читаоцима. Ми верујемо у то да је заједница важна и да се она ствара добром комуникацијом. Заједница производи добре идеје, што је додатно увећава. То посредно унапређује целокупно друштво, а то нам је свима коначан циљ.

За крај, приметићете да у овом броју имамо нешто мањи број текстова. Није нам понестало идеја. Прави разлог је што покушавамо да задржимо једнак број страна у часопису. Неки текстови су нам овај пут опширнији и нисмо хтели да их сецкамо на више делова, већ смо одлучили да их објавимо у целини по цену да имамо мање текстова у овом броју. Надамо се да ћете ипак уживати читајући и да ћете наћи оно што вам је занимљиво. Ако не нађете, контактирајте нас путем електронске поште, Фејсбук стране или Твитера, и покушаћемо у неком другом броју да задовољимо и ваше жеље.

До следећег броја,
ЛиБРЕ! тим.

ЛиБРЕ! вести

21. јануар 2016.

Пулс-аудио 8.0

Пулс-аудио (PulseAudio), програм који омогућава напредне операције на звуку на путу између хардвера и програма, објавио верзију 8.0.

Корисни линкови: http://j.mp/24qL4MH

25. јануар 2016.

Сербијан Гну-Линукс 2016

Објављенo је треће издање домаћег прилагођавања Дебијана, Сербијан Гну-Линукс (Serbian GNU/Linux) са КДЕ и Опенбокс графичким окружењем.

Корисни линкови: http://j.mp/1p7cw1y
http:http://j.mp/1XOeNKQ

26. јануар 2016.

Линукс Минт 18

Представљени су планови развоја Линукс Минта 18.

Корисни линк: http://j.mp/24qLbrz

28. јануар 2016.

ГПУОпен је опен-сорс

АМД је званично ослободио код ГПУОпена. ГПУОпен је одговор на Инвидија гејмворкс, софтвер за развој игара. Ослобађањем кода ГПУОпена АМД омогућава програмерима свеобухватну колекцију визуелних ефеката и лакши развој игара.

Корисни линк: http://j.mp/1S2YGsj

30. јануар 2016.

Брјев

У развоју је нови опен-сорс веб-браузер Брејв (Brave) који ће аутоматски уклањати рекламе и тиме знатно убрзати отварање страница.

Корисни линкови: https://brave.com/
http://j.mp/21iBNqP

1. фебруар 2016.

Рођендан ВЛЦ-а

Пре тачно 15 година први пут је објављен ВЛЦ медија плејер под Гнуовом општом јавном лиценцом.

Корисни линк: http://j.mp/1p7cV47

2. фебруар 2016.

Зорин 11

Позната линукс дистрибуција Зорин, која је базирана на Убунтуу, објавила је своје једанесто издање. Зорин 11 и даље следи своју филозофију дистрибуције намењене почетницима на линуксу са побољшаним визуелним утиском који не збуњује прелетаче са других оперативних система.

Корисни линк: http://j.mp/1R3skZG

4. фебруар 2016.

Убунту тач

Акварис М 10 (Aquaris M 10) Убунту едиција је серија таблета коју развија Убунту са својим европским партнером Бе-Ку (BQ). Убунту платформа уједињује пун осећај тач-технологије са пуним ПЦ искуством.

Корисни линк: http://j.mp/1VGcA2x

5. фебруар 2016.

Вајн 1.9.3

Популарни програм за извршавање програма за Виндоуз - Вајн (Wine) - објавио је нову верзију 1.9.3 са, између осталог, новом верзијом геко енџина и подршком за Џисан (JSON) у Јаваскрипту.

Корисни линк: http://j.mp/1p7d5IL

6. фебруар 2016.

Мару ОС

Мару ОС је нови оперативни систем за мобилне телефоне базиран на Андроиду 5.1 Лилипоп. Посебност овог система је да, попут Убунту тача, приликом прикључивања већег  екрана а подршком за ХДМИ  систем пребацује на пунокрвни Дебијан Гну-Линукс и даје пуно ПЦ искуство ограничено само хардвером телефона.

Корисни линкови: http://j.mp/1S2YTf6
http://maruos.com

15. фебруар 2016.

Русија планира да пређе на Гну-Линукс

Више од 22000 локалних самоуправа у Русији су спремне да пређу са Виндоуза на Гну-Линукс.

Корисни линк: http://j.mp/1LewOQt

16. фебруар 2016.

Риакт ОС 0.4

Риакт ОС (ReactOS) је Руски независни пројекат отвореног кода. Није базиран на линуксу, већ на најбољим принципима Виндоуз НТ архитектуре. Риакт ОС треба да обезбеди алтернативу за Виндоуз без потребе за променом апликативног софтвера.

Корисни линкови: http://j.mp/1Qfjo3L
http://j.mp/1KMRX4k

Пулс слободе

Како куца Тилда?

Аутор: Никола Харди

Увод

Као што већ сигурно знате, Нови Сад има и хакерспејс – Тилда центар. ЛУГоНС тренутно нема своје просторије, пуно чланова више није у Новом Саду - али они који су ту често се састају баш у Тилди. Тилду је основала ЛУГоНС екипа и исти дух и принципи су се задржали.

Тилда постоји већ готово годину дана на адреси: Булевар ослобођења 12, спрат 5, стан 21. Веб-адреса је http://tilda.center. Редовна окупљања су понедељком и петком у 20 сати, а за остала дешавања можете да сазнате на страници Фејсбукa или ИРЦ каналу #tilda.center на Фриноуд (енг. Freenode) серверу. Ако нисте сигурни да ли ћете затећи некога, најбоље је да проверите на ИРЦ-у. Сада када се распоред усталио и има много новости, време је да са вама поделимо како изгледа посета Тилди!

Окупљања понедељком

Понедељком у 20 сати увек има неког. Понедељком је тема за разговор слободна. Прича се о проблемима на које смо наишли од претходне посете хакерспејсу. Деле се искуства и траже савети о подешавању наших личних рачунара. Прича се о хардверу и софтверу. Например, многи су недавно купили ССД диск, па је било приче о монтирању диска на место ЦД читача у лаптопу. Било је приче и о додатним подешавањима за систем када се користи ССД, али и о телефонима, па смо тако имали прилику да испробамо Убунту на телефону. Засада барем троје људи користи Мек (енг. Mac), тако да Тилда није резервисана само за кориснике Линукса. Јако нам је драго што у последње време за неким столом сваки пут или трепћу диоде, или се испробава неки нови сензор. Дакле, на располагању има и електронике и алата. Унутра је забрањено пушење, али главна просторија има излаз на терасу која је више него довољно пространа. После 21 сата већ почиње да се ствара приметна гужва и да постаје бучно, па се људи спонтано групишу. Групе се формирају испред табле, за столом око ардуина, на тераси или за столовима уз лаптопе. У главној просторији нема телефонирања. За то постоји посебна просторија. У Тилди постоји фрижидер, а свако ко долази обично понесе неко пиће. У сваком случају, понедељком је гужва, бучно и занимљиво! Не планирајте да радите нешто понедељком увече, јер нећете одолети расправама око вас.

Окупљања петком

Окупљања петком такође почињу у 20 сати. Дешава се да повремено склизну на четвртак. Петком је мирније, слуша се предавач (обично је то досада био Горан Мекић, један од оснивача Тилде) и прати се предавање. Тема предавања је најављена унапред. Досада су покривене теме које се тичу програмирања веб-апликација. У Тилди се воли Пајтон (енг. Python), REST и апликације које су сачињене од једна странице (енг. single page applications). Досада су покривене следеће теме:

Фласк (енг. Flask)

Backend python microframework

Пиви (енг. Peewee)

Пај О-Ер-Ем (енг. Py ORM)

Свегер (енг. swagger)

Документација REST АПИја

Гитхаб радионица

Предавања се не преносе уживо, али доступна су на Јутјуб каналу. Ово је добра прилика да вас подсетимо на Балкон (енг. BalCCon) – Jутјуб канал на којем су доступни снимци предавања са Балкона одржаног 2014. (Second base) и 2015. (Third time's charm), као и неколико предавања са првог Балкона, одржаног 2013. године (First contact).

Тежи се ка томе да предавања буду повезана у серије уз повременe тематске радионице. Након предавања следи практичан део. Слободно предложите ваше теме за окупљања петком било путем мејла [office@tilda.center], ИРЦ канала, или поруком на страници на Фејсбуку.

Остала дешавања

Осим редовних дешавања понедељком и петком, немојте очекивати да је простор иначе празан. Многи сврате да раде на својим пројектима, да уче или само да хакују. Свакоме ко дође на располагању су места за радним столовима, довољно утичница за струју, интернет, табла и пројектор, фрижидер, електронске компоненте (ардуино, диодице, протобордови) и нешто алата. Повремено се организују и пројекције филмова. Средином фебруара су коначно допремљена и два сервера који су поклон другара из холандског хакерспејса - Ревспејс (енг. Revspace). Хвала Гори! До Tилде су наравно стигли ЛУГоНС путевима, а реч је о два рачунара са осмојезгреним Оптерон процесорима, 64 GB радне меморије, и 500 GB простора за складиштење података на дисковима у РАИД (енг. RAID) систему. Тек треба да буду пуштени у рад и искоришћени.

Планови

Eлектроника и хардвер,

даље опремање простора,

пројекти и радионице: чишћење лаптопа

О плановима је најбоље писати тек након што су остварени, али ипак ћемо пренети неколико идеја. Полако се ствара критична маса заинтересована за електронику. У Новом Саду има пуно људи који се баве електроником, што професионално, што из хобија. Например, на Факултету техничких наука постоји дуга традиција учествовања на такмичењу из роботикеEuroBot где готово сваке године неке екипе имају пласман на финале у иностранству. Мејкер НС је удружење које се специјализовало баш за електронику и хардвер. На окупљањима понедељком је постала нормална појава да барем један сто буде окупиран електроником. Очекујемо врло брзо да барем један дан у седмици буде посвећен само електроници и хардверу. Занимљиво је што се идеје и жеље посетилаца преклапају. Имали смо већ неколико ситуација где исту идеју препознамо код више посетилаца, па им помогнемо да се повежу и подржимо их у раду на пројекту. За више детаља о овим пројектима ћете за сада ипак морати да свратите до Тилде. Нека остану изненађење још неко време. Рећи ћемо само да су тема, наравно, интернет ствари (енг. IoT - Internet of Things)!

Већ смо написали шта је од опреме набављено, али хакерспејс још дуго неће бити онакав каквим смо га замислили. Почели смо од тога да нам је фалила канта за смеће и столице, а ниједног стола није било. Сада је једна просторија скоро сасвим опремљена. Ред је да се опремају друге просторије. Ко год жели да помогне, наћи ћемо начин. УСБ каблови, продужни каблови, алат, столице, чивилук, новац, књиге… све су то ситнице које боравак у хакерспејсу чине пријатнијим. Други начин да помогнете је да посетите Тилду и чим приметите да вам нешто недостаје, онда то купите или контактирајте друге и организујете куповину.

Све у свему, оно шта смо желели да поделимо са вама је да је Тилда жива и здрава. Тилда расте и јача. Представили смо шта се дешава и шта је у плану. Последња радионица до сада (гитхаб) је организована на предлог посетилаца. Други догађај који је предложен и биће убрзо организован је чишћење лаптопа од прашине. Уколико сте одувек желели да отворите свој лаптоп, а нисте смели то да урадите сами, ето где можете да свратите за подршку. Пишите часопису како сте се провели у Тилди, или барем пошаљите неколико речи подршке! Ако ништа друго, барем ширите вест да Нови Сад има хакерспејс. 

Поздрав из Новог Сада!

Дан приватности података

Аутор: Никола Тодоровић

Дан приватности података (енг. Data Privacy Day) или Дан заштите података је годишња прослава безбедности података и обележава се сваки 28. јануара. Сврха овог дана је да се повећа свест о приватности и заштити личних података.

На сваки помен о важности приватности наших података наилазимо на изговоре људи који тврде да им приватност није битна јер немају шта да сакрију. Овакво схватање се може сматрати погрешним и човек не би смео олако да се одриче своје приватности, која је основно људско право. Из тог, као и многих других разлога, овај дан (28. јануара) се обележава у циљу подизања свести јавности о значају заштите података о личности и упознавање јавности са начинима заштите личних података.

Дан је инициран од стране Савета Европе и званично се обележава од 2007. године. Две године касније, Сједињене Америчке Државе проглашавају 28. јануара Даном приватности података. Од тада па све до ове године, број земаља које обележавају овај дан је у константном порасту – тренутно га обележавају Сједињене Америчке Државе, Канада и 47 европских држава.

У Београду овај дан није био заборављен и обележен је са три међусобно независна догађаја. Екипа ЛиБРЕ! часописа је присуствовала неформалном окупљању у београдском хаклабу, а дан је обележен и у Медија центру и Привредној комори.

Обележавање дана у београдском хаклабу

Овај дан је први пут обележен у београдском хаклабу у Даничаревој улици, број 23, са почетком у 20 часова. Организатор овог догађаја је члан београдског хаклаба Петар Симовић, уједно и аутор ЛиБРЕ! текстова о сигурности система и безбедности корисника. Посећеност догађаја је била скромна, што због ограниченог капацитета хаклаба, што због слабије најаве овог окупљања. Осим домаћина хаклаба, догађају су присуствовали студенти Електротехничког и Математичког факултета у Београду.

Окупљање је протекло уз гледање предавања „Етички дизајн и демократија”. Да не би дошло до забуне, у оквиру појма етички дизајн (Манифест етичког дизајна) реч дизајн се не односи на то како нешто изгледа, већ на начин на који функционише. Предавање је настало у оквиру пројекта „Power to the People” где је предавач Арал Балкан изнео своје мишљење о опасности у којој се наша приватност данас налази и предложио начине како да се у будућности избегне злоупотреба наших података. Не само због теме, већ и због актуелности (предавање је одржано 21. јануара ове године), одлучено је да се прихвати предлог аутора овог текста да се Дан приватности податка обележи приказивањем овог видеа. Порука презентације је да слободан софтвер у комбинацији са децентрализованим системима кориснику пружа нешто што ниједан централизовани систем и власнички софтвер не може, а то је поверење поред приватности. Након гледања видеа који није оставио гледаоце равнодушним, уследила је дискусија о томе како друштвене мреже угрожавају нашу приватност и искоришћавају наше податке. Дискусија је настављена разматрањем идеје Арала Балкана о формирању децентрализованих система. Посматрањем те идеје са технолошког аспекта, дошло се до закључка да је јако тешко остварива, а у наставку се говорило о формирању централизованих система који би нам омогућили апсолутну приватност. Из претходно наведеног, и чињенице да би се дискусија наставила још неколико сати да није поноћ била близу, можемо закључити да је ово окупљање било успешно.

Конференција за новинаре у Медија центру

У Медија центру у Београду је поводом овог дана одржана конференција за новинаре са Родољубом Шабићем, повереником за информације од јавног значаја и заштиту података о личности. „Почела је да се буди свест људи о праву заштите података” закључио је Родољуб Шабић на основу податка да је број пријава које је добила та институција драстично порастао у односу на 2009. годину када је било 83 пријаве на годишњем нивоу, а данас преко 2500. Детаљније о конференцији овде.

Округли сто у Привредној комори Београда

У Привредној комори Београда одржан је округли сто поводом Европског дана заштите података о личности. На састанку се поред подизања свести и бољег законског уређивања заштите података о личности, говорилио о анкети коју је Друштво за информатику спровело прошле године, а резултати су показали да се људи у Србији односе немарно према личним подацима. Детаљније о догађају овде

Можемо доћи до закључка да је дан обележен како доликује и надамо се да ће следеће године бити више догађаја, те да ће више људи бити укључено. Не смемо се зауставити на само једном дану; приватност треба да се практиткује сваки дан и да се утиче на повећање свесности друштва о важности приватности.

Представљамо

Сигурнији оперативни системи — Фрипто (2. део)

Аутор: Петар Симовић

Фрипто (енг. Freepto) је још један оперативни систем који доста подсећа на већ описани Тејлс (енг. Tails). Фрипто је, као и Тејлс, заснован на Дебијану и циљна група корисника су му активисти, истраживачки новинари, узбуњивачи или, једноставније речено - сви они којима је сигурност и приваност у раду на рачунару на првом месту. Фрипто долази у формату .img „слике” за разлику од већине других дистрибуција које долазе у стандардном .iso формату. Овај оперативни систем можете покренути само са У-ес-бе-а (енг. USB) тако што ћете целу .img „слику” копирати на у-ес-бе употребом команде dd из терминала (уколико користите Гну/Линукс оперативни систем), или помоћу програма ЈунетБутин (енг. UnetBootin) на Виндоуз оперативним системима.

„Слика” оперативног система се може преузети са главног сајта Фрипто пројекта http://www.freepto.mx/en/, у секцији за преузимање. Овде можете пронаћи и хеш (енг. hash, SHA512) вредности саме „слике” оперативног система које скидате, као и дигитално потписане хеш вредности исте „слике” коју саветујемо да обавезно проверите како бисте избегли да се понови инцидент са Линукс Минт оперативним системом и замењеним „сликама” оперативног система (више о инциденту са Минт ОС на: http://goo.gl/2LR5kL ).

Међутим, оно што је разлика између Тејлса и Фрипа, јесте да Тејлс све везе са интернетом рутира кроз Тор мрежу и то се не може онеспособити/искључити, док Фрипто има опцију шифровања свега кроз Тор али се мора претходно укључити. Такође је дозвољено и излажење на мрежу и без било какве анонимне мреже. ТорТп је програм који укључује анонимни мод и рутира све конекције кроз Тор мрежу. ТорТп је програм отвореног кода и доступан је на Гитхабу (енг. Github) https://goo.gl/QoHbhl .

Када успешно направите бутабилни у-ес-бе од празног флеша и Фрипто „слике”, покрените рачунар уз помоћ флеша намештеним као први уређај са кога се чита оперативни систем. Након тога, упалиће се екран са логоом Фрипто оперативног система где треба да изаберете опцију Фрипто са аутоматском детекцијом процесора (енг. Freepto (autodetect CPU)). Детаљна упутства можете наћи на: https://goo.gl/cuIya0. Ова упутства се односе на промену подразумеване администраторске шифре, из: live у неку која вама одговара и коју ћете само ви знати, као и креирање шифрованог флеша са којег се Фрипто покреће. Ово шифровање флеша може потрајати јер се празан простор на флеш диску са којег сте покренули Фрипто попуњава насумичним подацима који се такође шифрују па овај процес може трајати и преко сат времена, зависно од величине флеш меморије која треба да се попуни.

Што се програма тиче, најинтересантнији су они који су задужени за приватност података и комуникацију, а у фрипто су укључени:

ГПГ (енг. Gnu Privacy Guard) за потребе шифровања електронске поште и података, дигитално потписивање порука и података, као и проверу потписа и аутентичности;

ТорТп већ поменути програм за рутирање свих конекција преко Тор мреже;

МАТ и Бличбит (енг. BleachBit) који су ту за брисање метаподатака, непотребних фајлова и логова које други програми остављају, као и сигурно брисање података;

Трукрипт (енг. TrueCrypt) и томб за шифровање и сакривање (стеганографија) фајлова на већ шифрованом флеш диску;

Тор претраживач (енг. Tor Browser Bundle - TBB) интернет претраживач специјално модификован тако да користи само Тор мрежу и спречи деанонимизацију корисника због своје униформности (једиствена дијагонала претраживача и подешавања за све кориснике ТББ-а како би сви изгледали идентично посматрачу Тор мреже);

Ту је наравно и Флоренс, виртуелна тастатура за случај да користите Фрипто на туђем рачунару са инсталираним ки-логером (енг. keylogger) и заштитним зидом (енг. Firewall);

Неизоставни су наравно и ИксЧет (енг. XChat), Пиџин (енг. Pidgin) и ФајлЗила (енг. FileZilla), који су сви већ подешени да сав интернет саобраћај проводе кроз Тор мрежу, а Пиџин је инсталиран са подразумеваним ОТР (енг. Off The Reccord) додатком.

Међутим, ово није цела листа. Ту су и програми за промену хардверске Мек (енг. MAC - Media Access Control address) адресе који спречавају рутере на које се качите да вас прате по хардверској адреси уређаја који се за њих везује, ОпенВи-Пи-Ен (енг. OpenVPN) како бисте осим Тора могли користити и/или ВПН. Наравно ту су и АјсДов (енг. IceDove) мејл клијент и АјсВисл (енг. IceWeasel), интернет претраживач, и мноштво других корисних програма које можете видети на приложеним сликама. Њих нећемо описивати јер немају много везе са заштитом и приватношћу.

Сви програми који вам недостају могу се накнадно инсталирати или при тесту овог оперативног система са још нешифрованог флеша, или послије шифроване инсталације на исти (енг. resistance). Међутим, оно што је замерка је да програми дуго нису освежени (енг. update) новијим верзијама које постоје већ одавно, као и да Тор претраживач није хтео да се покрене и скине нову верзију приликом тестирања, а да при том не шифрује целу флеш меморију. Иако нас овај проблем не спречава да користимо Тор мрежу у симбиози са другим програмима (па и за претраживање интернета) помоћу ТорТпа, ово слабо одржавање као и сам формат (.img) у којем долази оперативни систем чине га одбојним управо онима којима је намењен, а то су активисти и новинари који нису нужно стручни за сналажење у непредвиђеним софтверским ситуацијама и баговима. Уколико из неког разлога не волите претходно описани Тејлс, а имате доста искуства са Линукс оперативним системима, добро рукујете терминалним програмима за заштиту, добро знате како шта функционише - онда можете одабрати Фрипто као замену за Тејлс. Мада, Тејлс топло препоручујемо, чак и ако испуњавате све предходно наведене услове а приватност и анонимност у дигиталном свету су вам пресудне, или бар људима са којима комуницирате.

Иако Фрипто има доста потенцијала и корисних решења, неактивна и мања заједница као и веома успорен развој и застарео софтвер га свакако чине одбојним. Али, као што смо већ рекли, Фрипто се може користити у мање опасним ситуацијама, за претраживање вести из кафића или рад над подацима у мање страном и пријатељском окружењу (туђ рачунар, непознати људи). Наравно, уколико сте користили шифровање целог флеш диска, што је обавезно ако намеравате да заиста користите Фрипто за стваран рад, а не само за тест, губитак шифроване флеш меморије на којој је Фрипто са вашим приватним подацима није никакав проблем, јер га осим вас који знате шифру нико неће моћи дешифровати, покренути оперативни систем и прочитати ваше фајлове. Само се потрудите да шифра буде дуга и нетривијална. На крају крајева, Фрипто и Тејлс нису једини сигурнији оперативни системи о којима ће се говорити у овом серијалу. Има још занимљивих система који ће тек бити представљени.

Како да...?

Нумеричка обрада и симулације (4. део)

Аутор: Стефан Ножинић

У претходном делу смо се упознали са неким основним деловима библиотеке коју ћемо користити. Та основа није довољна без доброг разумевања математичке теорије. Ово није потребно само ради разумевања процеса и метода које ћемо описати, већ и због тога што се многе ствари не могу урадити без доброг математичког алата.

Вектор

Постоји доста дефиниција векторa – наравно, све су еквивалентне. Ради бољег разумевања метода које ћемо користити, изабрали смо дефиницију која најбоље леже уз структуру података помоћу које ћемо представљати векторе. Вектор је низ бројева и може представљати коначан број података. Например, тачка на равни се може представити вектором тако што ћемо навести њене координате. Те координате не морају бити уобичајене координате које познајемо, односно не морају бити координате у Декартовом правоуглом координатном систему. Други пример био би, рецимо, скуп неких мерења. Например, желимо да измеримо висину на узорку од 100 људи; то мерење можемо записати као вектор (низ) од 100 елемената. Овде морамо пазити да је редослед битан - јер, ако променимо редослед елементима, то више није вектор.

Векторе ћемо представљати на следећи начин:                

a=[a₀,a₁,a₂,...,an-1]

Oво је вектор од н чланова. Приметите да смо почели са индексирањем од нуле. Ову конвенцију користимо како бисмо се лакше могли пребацити на конкретну имплементацију касније.

Следи пример како векторе користимо у Пајтону, уз библиотеку НумПај (енг. NumPy)

>>> import numpy as np
>>> a = np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> b = np.zeros(50)
>>> b
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> c = np.ones(10)
>>> c
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
>>>

Приметите да функцијама np.zeros(…) и np.ones(…) додељујемо број елемената колико желимо да тај вектор има. У овом контексту, вектор и низ су исти.

Сабирање и одузимање вектора се врши тако што саберемо и одузмемо елемент по елемент. Tачније:

ако је c = a ± b онда за и-ти елемент важи: ci = ai ± bi                

а у коду бисмо то овако имплементирали:

>>> a = np.array([1,2,3])
>>> b = np.array([0,2,1])
>>> c = a - b
>>> c
array([1, 0, 2])

Потребно је приметити да вектори морају имати исту величину, односно број елемената.

Такође, могуће је и множење по елементу, односно и-ти елемент новог вектора је једнак производу и-тих елемената ова два вектора. У коду се то имплементира исто јако једноставно:

>>> d = a*b
>>> d
array([0, 4, 3])

Слично је и за дељење по елементу.

Имамо још две операције које не постоје када причамо о скаларима (појединачним бројевима), а то су скаларни и векторски производ.

Скаларни производ као резултат не даје вектор, већ скалар, односно број:

Ово на први оглед може стварати конфузију јер је тешко разликовати скаларни производ од производа елемената. Због овога ћемо скаларни производ обележавати као ab, а производ по елементима као  a • b

Последња операција са векторима коју ћемо обрадити је векторски производ:

a × b

који као резултат даје вектор. Засада нећемо улазити у детаље како се ова операција врши, јер нам тренутно није потребна.

Матрице

Друга структура која ће нам бити потребна јесу матрице. Оне могу представљати линеарну трансформацију, тачније трансформацију једног вектора у други. Матрице ћемо обележавати великим словима.

Као што смо рекли, матрице представљају трансформацију вектора због операције множења матрица која је дефинисана на следећи начин:

ако је C = AB  онда елемент на позицији (i,j) има следећу вредност:

Ово може деловати компликовано, па је најбоље да то погледамо кроз пример:

>>> A = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> A
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> B = np.array([[1,7,8], [8,2,1], [1,5,10]])
>>> B
array([[ 1, 7, 8],
        [ 8, 2, 1],
        [ 1, 5, 10]])
>>> C = np.dot(A,B)
>>> C
array([[ 20, 26, 40],
       [ 50, 68, 97],
       [ 80, 110, 154]])
>>>

Потребно је приметити како се дефинише матрица: као аргумент np.array(…) методе убацујемо групу витичастих заграда, па у њих више група витичастих заграда у којима наводимо елементе. Прва група означава први ред, друга група је други, итд.

Ако желимо да задамо матрицу нула, то можемо урадити на следећи начин:

>>> Z = np.zeros([5,5])
>>> Z
array([[ 0., 0., 0., 0., 0.],
       [ 0., 0., 0., 0., 0.],
       [ 0., 0., 0., 0., 0.],
       [ 0., 0., 0., 0., 0.],
       [ 0., 0., 0., 0., 0.]])
>>>

Дакле, као аргумент наводимо вектор у којем су димензије матрице.

Код производа две матрице је битно напоменути две ствари:

1. Број колона прве матрице мора бити једнак броју редова друге матрице. 2. Из горњег услова лако је закључити да не важи правило комутативности, тачније: AB ‡ BA.

Јединична матрица је матрица  I за коју важи AI = IA = A, а можемо је добити врло лако:

array([[ 1., 0., 0., 0., 0.],
       [ 0., 1., 0., 0., 0.],
       [ 0., 0., 1., 0., 0.],
       [ 0., 0., 0., 1., 0.],
       [ 0., 0., 0., 0., 1.]])
>>>

Како ова матрица има једнак број колона и редова, довољно је као аргумент навести само број који означава број редова (колона).

Сада се поставља питање да ли постоје матрице тако да је AB = I

Одговор је: и да и не. Не постоје увек, али кад постоје, те две матрице су инверзне једна другој. Инверзну матрицу ћемо обележавати са -1 у експоненту, тако да AA⁻¹ = I важи за дату матрицу. Матрице које немају свог инверзног партнера зовемо неинвертабилне матрице.

Сада вектор можемо посматрати и као матрицу која има Н редова и једну колону. У том случају производ матрице и вектора даје нам вектор на следећи начин Ax = b где је

Последња ствар коју би требало да појаснимо пре него што пређемо на нешто конкретније - јесте транспоновање матрица. Ова операција је врло једноставна – она само „ротира матрицу”, тј. ако је B = AT онда  Bi,j = Aj,i. У коду то изгледа овако:

>>> A = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> A
array([[1, 2, 3],
      [4, 5, 6],
      [7, 8, 9]])
>>> A.T
array([[1, 4, 7],
      [2, 5, 8],
      [3, 6, 9]])
>>>

За размишљање

У наредном броју крећемо конкретније да се бавимо самом темом овог серијала. Надамо се да ћете нас читати. До тада, остављамо вас да размислите како да скаларни производ два вектора представите у матричној нотацији користећи производ матрица који смо описали, и транспоновање. Хинт: вектори се исто могу транспоновати.

Слободни професионалац

Доку

Аутор: Немања Недељковић

Доку (енг. Dokku) је екстремно једноставан платформа као сервис (PaaS - platform as a service). Филозофија које су се држали програмери док су развијали овај софтвер је поприлично јасна. Они су желели да направе што једноставнији, потпуно функционалан клон Хероку платформе. У томе су и успели.

Оно што је предност оваквог система, јесте то што ви не морате (али можете) да размишљате о целокупном контејнеру у којем се извршава апликација, већ само о апликацији и њеним захтевима. Све што треба да урадите јесте да „пушујете” (енг. push) свој гит репозиторијум и Доку ће од њега направити потпуно функционалан докер контејнер.

Шта се дешава када пошаљем гит репозиторијум?

Прво што треба да знате о Доку, Хероку и сличним решењима, јесте то да они користе скрипте за припрему окружења (енг. buildpacks). Ова скрипта је у суштини скуп додатног софтвера који је неопходан за компајлирање и извршавање ваше апликације. Тако нпр. имамо скрипту за ПХП (енг. PHP), за Пајтон, за Руби, итд.

Шта је билдпек и како се користи?

Билдпек је скупина од три баш (енг. bash - bourne again shell) скрипте које имају једноставну улогу.

bin/detect - Улога ове скрипте је да утврди користи ли ваша скрипта овај билдпек (ако корисник не дефинише који билдпек жели да користи, при изградњи платформа покреће по реду ову скрипту из свих билдпекова, да би утврдила који билдпек треба да примени на одређену апликацију).

bin/compile - Улога ове скрипте је да трансформише вашу апликацију у „нешто што може да се изврши” тако што нпр. у случају ПХП-а инсталира зависности које су дефинисане у composer.json фајлу, као и веб-сервер и ПХП.

bin/release - Улога ове скрипте је да „каже” које команде треба да се покрену при покретању worker/web процеса.

Дакле, када пошаљете своју апликацију, неопходно је да се открије који је билдпек погодан за њу.

Постоје две методе: можете сами подесити који се билдпек користи, или да Доку то сам открије.

Све ово се одвија тако што Доку покрене Херокуиш (енг. Herokuish - клон Хероку контејнера за изградњу, који је базиран да Херокуовом основном контејнеру) и проследи му ваша подешавања и апликацију. Уколико се међу тим подешавањима налази билдпек, Херокуиш га скида и инсталира. У супротном, Херокуиш пролази редом кроз локалне билдпекове док bin/detect не да потврдан одговор.

Након тога извршава се bin/compile, који скида неопходне зависности; компајлира, уколико је то потребно, итд.

Да би Херокуиш „знао” како да покрене вашу апликацију, потребан му је Procfile. Procfile је веома једноставан фајл који дефинише команду за покретање ваше апликације.

Пример:

web: node index.js

Ако ваша апликација не поседује Procfile, онда се од bin/release скрипте очекује да га генерише.

Сада, када је ваша апликација потпуно изграђена, преостао је још један корак. Докер (енг. Docker), контејнер у којем се све то десило, чува се као Докер слика која садржи вашу апликацију.

Када се покрене тај Докер контејнер, покреће се и ваша апликација.

Остало је само да ваша апликација „комуницира” са „спољашњих светом”. Прво што је неопходно да би се та комуникација остварила јесте да ваша апликација „слуша” на одређеном порту. Да бисте знали који је то порт, Доку вам прослеђује PORT варијаблу у ENV-у. Затим, креира nginx.conf фајл који садржи подешавања да се „направи” Енџин-икс (енг. NginX) мрежни посредник (енг. proxy) до ваше апликације.

Шта је предност једног оваквог система

Предности је много. Набројаћемо само неке од њих и објаснићемо их на што једноставнији начин.

коинзистентно окружење - сигурни сте да ће се један контејнер потпуно исто понашати на различитим серверима као и да су контејнери исти зато што се користи Херокуов стандард који дефинише шта сваки контејнер мора да поседује од апликација;

брза испорука крајње апликације и, због тога што је окружење релативно лагано, можете да имате и локални Доку;

код је једноставан, читљив и врло је једноставно писати додатке за овај систем;

већ постоји заједница људи који користе Доку па је самим тим и проверен и има многобројне додатке који вам могу бити од помоћи.

Интернет, мреже и комуникације

Дубоки веб (Deep web— 2015.)

Аутор: Дејан Маглов

Дуго је аутор овог текста размишљао да ли је уопште паметно писати о овом документарцу у једном часопису какав је ЛиБРЕ! Тема документарца је, благо речено, контроверзна.

Управо ова контроверза подстиче гледаоца да размишља о оном што је у овом документарцу видео, што представља први разлог зашто га треба погледати. Други значајан разлог је што лепо објашњава шта је то срфејс веб, дип веб и дарк нет. Такође, документарац у складну целину обједињује технологије о којима и наш часопис стално прича, а то су: Тор, Биткоин и криптографија. Трећи разлог је што барем делимично објашњава важност заштите приватности на вебу.

Дип веб

Документарац има више главних јунака. Насловна прича је о дип вебу. За неупућене, интернет који ми познајемо је срфејс веб (енг. surface web – површински веб). То је индексирани и контролисани део интернета. Много већи део интернета (можда и хиљаду пута већи) је скривен испод овог површинског слоја и није индексиран. Целокупни онлајн садржај који није индексиран и није дат за јавно приказивање представља дип веб (енг. deep web - дубоки веб). Садржи банкарске податке, податке владиних агенција, корпорација, универзитета и научних института, итд. Ови садржаји су скривени од јавности и доступни само одређеним овлашћеним групама људи.

Овај део интернета временом су почели да користе људи који су имали жељу или потребу да штите своју приватност на вебу. Новинари, узбуњивачи, адвокати, дисиденти су имали потребу да објаве јавности своја сазнања а да притом не буде откривен њихов стварни идентитет и тако буде угрожена њихова приватност, или чак и живот. Овај скривени део дубоког веба назива се и „Дарк нет” (тамни нет).

Дарк нет

Тамном нету се може приступити, између осталих, и софтверским сервисом Тор. Тор је развила америчка војска, али сада је софтвер отвореног кода и јавно је финансиран.

Тамни нет, осим могућности да створи сигурну зону за узбуњиваче, може и да се злоупотреби. Тамни нет постаје сигурна зона и за криминалце. Сама чињеница да постоји злоупотреба тамног нета ствара слику у јавности и медијима да су тамни нет и Тор зли алати за криминалне активности.

О таквој злоупотреби интернета говори и овај документарац.

Силк роуд

Тамни нет и технологије као што су Тор, Биткоин и криптографија отварају могућност потпуно слободне трговине на интернету. За све државе и њихове владе потпуно слободна трговина је илегална активност. Чак и када је роба којом се тргује потпуно легална, ова трговина је у сивој зони јер државе не могу да уберу порез на промет и тиме је посредно угрожен мали грађанин коме се повређује право на сигурност (од порeза се финасира војска, полиција и судство), угрожава се право на здравствену заштиту и образовање (угрожене су плате лекара, учитеља и професора). У случају Силк роуда (енг. Silk road - „Пут свиле”), комерцијалног портала на Тамном нету, слободна трговина наркотицима је била у потпуно црној зони.

Оно што највише смета аутору овог текста је тон документарца који кроз читаву радњу сувише романтично приказује трговину наркотицима. Аутор документарца чак сугерише да би ова трговина требало да буде легализована и, чак, с времена на време, појављује се сугестија да су трговци и зависници наркотика изложени употреби претеране силе од стране власти (државних органа реда). Посредно се наговештава да би либерализација ове трговине смањила насиље, а актере ове трговине на Тамном нету претвара у нове Зорое или Робине Худове.

Истина је да би премештање тежишта трговине наркотицима са улице на интернет смањило насиље на улици. Не би било ратова банди за територију, изненадних рација у којима гину и недужни. Био би подигнут и квалитет робе јер без територијалних разграничења трговцима би једино квалитет робе и цена донели предност на тржишту. То су предности, а мана је већа доступност наркотика широј популацији. Зависницима тежа доступносност није никад представљала проблем, али онима који би само да експериментишу је тежа доступност била проблем и можда једини разлог зашто никада нису пробали наркотике.

Аутори документарца заборављају или намерно прећуткују чињеницу да наркотици уништавају живот својим корисницима, њиховим породицама, пријатељима, познаницима и да је једна од највећих пошасти савременог друштва.

Дред Пајрет Робертс (ДПР)

Дуги најважнији лик око кога се врти радња документарца је Дред Пајрет Робертс (енг. Dread Pirate Roberts – алијас ДПР). ДПР је псеудоним главног администратора Силк роуда. Захваљујући Тору и криптографији немогуће је у потпуности идентификовати ко је заправо ДПР. Затим није могуће са сигурношћу утврдити да ли је ДПР креатор и власник портала Силк роуд. Такође није могуће са сигурношћу утврдити колики је утицај и одговорност у самој трговини на порталу. Није чак могуће утврдити да ли је то једна личност или више њих који користе исти псеудоним.

ДПР је носилац романтичног дела овог документарца. Сам псеудоним је преузет од бајковитог лика, борца за правду који га носи наследно, али не по родбинској линији, него по заслугама које је стекао својом храброшћу и моралним принципима. ДПР, администратор Силк роуда, првенствено је бизнисмен који ово ради не само због новца, него и да пренесе политичке идеје слободне заједнице и слободног тржишта без регулативе власти. Администратор ДПР не признаје да је идејни творац и власник Силк роуда, већ да је он само онај који контролише трговину и не дозвољава трговину робом која директно угрожава животе попут трговине оружјем, уговарања плаћених убистава и слично. Заборавља да и наркотици угрожавају живот.

Заслуга ДПР-а је стварање компактне заједнице око Силк роуда потпуно другачије у односу на, примерице, Ибеј (енг. eBay) заједницу. Силк роуд заједница дели филозофију и активно учествује у развоју.

Рос Олбрикт

За добар документарац потребан је и трагични лик. У овом документарцу је то Рос Олбрикт (енг. Ross Ulbricht). Уз сарадњу свих полицијских агенција САД-а, Роса је успео да ухвати ФБИ на делу док је имао руке на тастатури улогован као Дред Пајрет Робертс, администраторски део Силк роуда. Овим је његова судбина била запечаћена.

Овом акцијом ФБИ-а нанесен је ударац Силк роуд заједници. Ухапшен је један од њихових истакнутих чланова, ускоро је пронађен главни сервер и тиме је угашен портал Силк роуд. Самом Росу су у оптужници прикачени сви греси комплетне заједнице плус наручена убиства за која се ни не зна да ли су била извршена. Да би судски процес успео, Росу су судије морале да занемаре уставно право на његову приватност јер већина прикупљених доказа против њега је прикупљена на начин који повређују право о заштити приватности личности и морали би бити одбачени. Рос је драконски кажњен. Осуђен је на доживотну робију без права на помиловање. Овим правни систем Америке прави пример од Роса и даје на знање да су овакве радње недопустиве и да ће свако ко буде ухваћен у сличним радњама бити најстрожије кажњен.

Постсудски епилог

ФБИ је добио једну рунду. Затворио је Силк роуд. Судско веће је учинило све да драконском казном превентивно делује на понављање оваквих дела. У пракси, судски спор није ни завршен, а на Тамном нету се појавио Силк роуд 2.0 са новим Дред Пајрет Робертс администратором. НСА и ФБИ је успео да затвори и овај Силк роуд. Сервер се ни не охлади како треба, а појави се и Силк роуд 3.0 са још бољом одбраном.

Силк роуд није једини сајт оваквог типа у Тамном нету. Ово показује да рат са овако софистицираним криминалцима је немогуће добити на класичан начин забрањивања.

Закључци

Тешко је писати о овом документарцу а не упасти у клопку. Ма колико снажно да кажемо „ово што ови људи раде је лоше”, већ у следећој реченици кажемо „ово смањује насиље” или „они користе слободни софтвер”, а у часопису стално пишемо да је то добро, или „они су заједница”, што такође промовишемо.

Оно што је највише одвраћало аутора овог текста од представљања овог документарца је могућност да некоме дамо идеју како да злоупотреби слободан софтвер. Нашим органима реда још само фале високософистицирани криминалци.

У нашу одбрану бисмо рекли да овај документарац постоји, налази се на површинском вебу и лако је доступан. Коме је стало до злоупотребе, лако ће се информисати и без нас. Наше је да упозоримо да то постоји и да се спремимо за одбрану од овакве опасности.

Чињеница је да док буде људи који злоупотребљавају наркотике, биће и трговаца наркотицима и то све софистициранијих. Игнорисање и препуштање да се само органи реда боре против наркоманије је унапред изгубљени рат. Едукација и контрола су једине успешне методе борбе. Родитељи морају бити свесни да Фејсбук није најопасније место на интернету, већ да има и опаснијих.

Раскринкавање искривљене филозофије слободног софтвера је још један задатак часописа. Рећи да Тамни нет, Тор и криптографија не ваљају јер могу да се злоупотребе је исто као рећи да мотика, нож и секира не ваљају јер могу бити оружје. Слободан софтвер је алат који помаже људима да што боље изразе своју креативност без ограничења. Све се може злоупотребити, па и слободан софтвер. Али за то није крив алат, него онај ко га употребљава.

Друга злоупотребљена ствар у овом случају је заједница. Заједница окупљена око Силк роуда наликује заједницама окупљеним око слободног софтвера. У сржи сваке заједнице је филозофија коју заједница дели. Заједнички именилац између филозофија слободног софтвера и Силк роуд заједнице је једино именица „слобода” - све остало је различито. Док се код филозофије слободног софтвера пропагира слобода размене идеја, искустава и знања, код Силк роуд заједнице влада анархо-либерални капитализам који пропагира слободу трговине без државне регулативе и без жеље да се ишта држави врати. Није им потребна заштита (војска, полиција и судство им само смета) и имају пара да се сами лече и образују, а за друге их није брига.

Треба бити опрезан. „Није злато све што сија”, па ни свака слобода која угрожава туђу слободу није слобода. Анархија свакако није слобода.

Сам свој мајстор

Инсталирање програма из изворног кода

Аутори: Никола Харди и Стефан Ножинић

О проблему

Слободан софтвер стиже до рачунара крајњих корисника у разним облицима. Данас су најпопуларније тзв. „бинарне” дистрибуције (енг. binary based distribution) које се базирају на систему пакета у ризницама, а сваки пакет садржи програме који су већ преведени у извршни облик (енг. executable) и увезани (енг. linked) са одговарајућим верзијама дељених библиотека. Одговарајуће верзије тих библиотека су такође доступне у неким другим пакетима. О овоме можете детаљно да прочитате у 34. броју часописа.

Други начин за добављање новог софтвера је преузимање кода. Постоје дистрибуције које су базиране на изворном коду (енг. source based distribution) као што су Слеквер (енг. Slackware) и Џенту (енг. Gentoo). Пакет менаџери таквих дистрибуција преузимају изворни код софтвера и изворне кодове његових зависности, преводе их и тек потом премештају на потребне локације (инсталирање). Обе варијанте имају и своје предности и своје мане.

Предност бинарних дистрибуција је што захтевају мање процесорских ресураса јер нема потребе за превођењем програма при инсталацији. Мана је мањак флексибилности при инсталацији јер је програм доступан само у оном облику у којем је припремљен.

Дистрибуције базиране на изворном коду превазилазе тај проблем, али уносе додатно време и употребу процесора при инсталацији (и свакој надоградњи!) сваког пакета. Дистрибуције базиране на изворном коду нису тема овог чланка јер је у том случају процес превођења аутоматизован. Тема овог чланка је како преузети код програма који иначе није могуће инсталирати стандардним путем или када желимо да направимо неку измену у њему (енг. patch). Главна тема је софтвер који је типично писан у програмским језицима Ц и Ц++.

Код једноставнијих пројеката који се састоје од свега неколико датотека проблем превођења је тривијалан. Постоји јасна полазна тачка (енг. main entry point) а скуп зависности је минималан. Проблем се јавља када се пројекат састоји из великог броја датотека и ослања се на велики број библиотека које морају бити присутне у тренутку превођења. Проблем постаје још сложенији када желимо да изменимо неке претпоставке као што су подразумевана локација за тражење библиотека, избор преводиоца или искључивање неких делова кода.

Проблем је другачији код неких других оперативних система и програмских језика. На линуксу и другим јуниксоликим системима је ситуација таква да се програми ослањају на скуп дељених библиотека (енг. shared libraries). На неким другим платформама су библиотеке или статички увезане (део су самог програма), или се дистрибуирају заједно са програмом. У оба случаја при превођењу су заглавља (енг. headers) свакако неопходна. Пајтон и Пип (енг. Pip) управници пакета могу то сами да разреше, APT такође. Уколико желимо да инсталирамо програм који није доступан у нашој дистрибуцији, проблем се мало другачије решава.

На почетку је напоменуто да су језици у којима су ови пројекти писани углавном Ц и Ц++. За пројекте писане у Пајтону постоји специфичан и једноставан начин превођења и такав пројекат је најчешће доступан у ризницама управника пакета Пип. За Јаваскрипт постоји npm као и слични управници за пројекте у осталим језицима. Употреба ових специфичних управника за ове језике је веома једноставна, разрешавање зависности иде аутоматски па их нећемо овде описивати.

Еволуција алата

На почетку је проблем донекле решаван тзв. билд скриптама (енг. build script) који су до одређене мере могле да аутоматизују процес превођења. Појавио се шаблон и појавила се потреба за новим алатом. Тако је настао језик за специфичну намену (енг. domain specific language, dsl) под називом M4. M4 је заправо скраћеница од речи Макро, по принципу почетног слова и броја слова које следе. М и још четири слова. М4 се користи за писање мејкфајлова (енг. makefile) и дан-данас.

Иако је М4 помогао у аутоматизацији, он није могао да помогне у проблему портабилности. Процес превођења није потпуно исти на Линуксу и на БСД-у или Соларису. Због тога су као помоћни алат настале скрипте за конфигурацију (енг. config). Њихов посао је да открију у каквом окружењу се тренутно налазе, који преводилац је доступан, да ли су све зависности задовољене итд. Као резултат скрипте за конфигурацију је један мејкфајл који је валидан за тренутну платформу. Поред наведених могућности, скрипте за конфигурацију су и дан-данас начин за фино подешавање програма при превођењу. Например, можете да преведете плејер без подршке за графичко окружење или уређивач текста без могућности за истицање синтаксе. То је механизам који дистрибуције засноване на изворном коду користе за фино подешавање пакета. Пошто је и у процесу писања скрипти за конфигурацију примећен известан шаблон, успостављен је одређени стандард и направљен је скуп алата. Писање скрипте за конфигурацију није нимало једноставан задатак. То су алати који се усавршавају већ више од двадесет година. Један такав алат је Гнуов систем за превођење (енг. GNU build system) познат као Autotools. Други је знатно млађи (десетак година) и у неким принципима другачији систем - Си-Мејк (енг. CMake). Оба система имају исту намену: на основу одређених подешавања произвести исправан мејкфајл на било којој од подржаних платформи, уз препознавање доступног преводиоца, проверу зависности и подршку за фино подешавање могућности. Ово је, наравно, само груб опис. Мејкфајлови могу да се користе за различите намене (покретање процеса генерисања документације или тестирања), а данас не морају да буду ни у М4 језику - постоје и други билд системи, например Нинџа (енг. Ninja). У овом чланку ћемо се бавити само проблемом употребе ових система од стране корисника, не програмера. Припрема пројекта тако да користи неки од ових система је тема за неки други чланак.

Гнуов систем за превођење

Гнуов систем за превођење је нешто старији скуп алата. Важи за сложену машинерију. Може се рећи да је најзаступљенији, барем када је реч о Ц и Ц++ пројектима. Иако је прилично сложен за постављање, једноставан је за употребу. Састоји се углавном од три корака:

покренути скрипту за конфигурацију;

покренути превођење;

покренути инсталацију.

Ово се обично састоји из три команде које се редом извршавају:

./configure
make
make install

Различити параметри се могу поставити при извршавању скрипте за конфигурацију, а за више детаља о датим параметрима довољно је извршити команду за добијање помоћне документације:

./configure --help

Си-Мејк

Прича каже да је Си-Мејк скраћеница од колор мејк (енг. „colour make” - мејк у боји). То и јесте најочигледнија разлика за једног корисника. Током процеса превођења извештаји су у боји, а тренутни напредак је изражен у процентима уместо криптичним дугим линијама које представљају записник о извршеним командама. И Си-Мејк решава проблем откривања окружења, проверу зависности и фино подешавање заставицама (енг. flags). Начин је мало другачији, скрипте за конфигурацију су у језику направљеном специфично за овај алат, уместо класичних беш (енг. bash) скрипти. Резултат може да буде М4 или Нинџа мејкфајл. Најчешће је то баш М4 који се стандардно покреће командом make. Процес се састоји од следећих корака:

cmake .
make
make install

Разрешавање зависности

Овде није реч о „оним зависностима”. Зависност је у овом контексту библиотека на коју се жељени програм ослања. Најчешће је та библиотека потребна у облику дељене библиотеке (енг. shared library) са .so екстензијом. Таква зависност се назива и зависношћу потребном за покретање програма (енг. runtime dependency). Такав облик је неопходан за покретање програма, али није довољан за превођење. За превођење су потребна и заглавља.

Списак зависности може да се открије на много начина. Неки су мање а неки више мучни. Ово је некада давно била главна мука корисника линукса, у време када управници пакетима нису постојали или нису били толико напредни.

Најочигледнији начин за откривање зависности је документација. Аутори програма често напишу упутство за превођење програма у којем се налази и списак зависности. Традиционално се та датотека назива README (енгл. прочитај ме) или INSTALL.

Други начин је покретање скрипте за конфигурацију која ће пријавити грешку сваки пут када наиђе на незадовољену зависност. Нажалост, незадовољене зависности се откривају једна по једна тако да је процес итеративан и замарајућ.

Трећи начин је вероватно најелегантнији. Сваки пакет у себи носи списак својих зависности за покретање и за превођење. Уколико имамо ту срећу да нам је доступан, можемо да инсталирамо све зависности или само да их излистамо. Например, овако за Убунту:

apt-get build-dep [paket]
apt-rdepends --build-depends [paket]

Конкретан пример

Код можете да преузмете из званичног „узводног” репозиторијума за тај програм (енг. upstream), или помоћу управника пакетом из репозиторијума дистрибуције.

Први начин даје најсвежији доступан код. Ово је препоручена полазна тачка ако желите да исправите неку грешку, прво проверите да ли је та грешка још увек присутна чак и у најновијој верзији кода. Ако јесте, проверите да ли ју је неко већ пријавио. Тек онда се препустите хаковању и писању закрпе (енг. patch).

Неопходно је да имате већ инсталиран Гит. То можете проверити командом:

which git
</code
>ili
<code
>git --version

Као пример Гнуовог стила узећемо IRSSI. Конзолни ИРЦ клијент.

Преузимање најновијег кода:

git clone https://github.com/irssi/irssi

Преузимање кода из репозиторијума дистрибуције:

apt-get source irssi

Обратите пажњу да изворни репозиторијуми обично нису укључени. Проверите да ли је то и код вас случај и, ако јесте, укључите их.

После тога је неопходно инсталирати зависности. Експеримента ради, можете да покушате да покренете скрипту за конфигурацију пре инсталирања зависности како бисте видели како изгледају поруке о грешкама.

Зависности можете инсталирати овом командом:

apt-get build-dep irssi

Додатна зависност може да се појави, например, dh-autoreconf у овом случају!

Процес компајлирања започети овим командама:

./autogen.sh # (dodatni korak koji generiše čak i skriptu za konfiguraciju)
#prethodna skripta će odmah pokrenuti i configure skriptu, mada možete je opet pokrenuti i sami
make -j5 #(kompajliranje, -j5 znači 5 poslova, pravilo je broj jezgara +1)
#izvršna datoteka se nalazi u src/fe-text/irssi
#po potrebi možete pokrenuti i make install, onda će svi fajlovi biti raspoređeni na svoje mesto
#direktno u sistem, obratiti pažnju da install deo morate pokrenuti kao root korisnik

Deo INSTALL datoteke:

Irssi installation instructions
-------------------------------

To compile irssi you need:

- glib-2.6 or greater
- pkg-config
- openssl (for ssl support)
- perl-5.6 or greater (for perl support)

  For most people, this should work just fine:

  ./autogen.sh     (for people who just cloned the repository)
  ./configure      (if this script already exists, skip ./autogen.sh)
  make
  su
  make install     (not _really_ required except for perl support)

Си-Мејк пример

apt-get source weechat
apt-get build-dep weechat
cd weechat
mkdir build
cd build
cmake ..
make -j5
cd src/gui/curses/weechat

Први програм можете тестирати покретањем извршног фајла који је наведен горе или, ако сте извршили и инсталацију, односно премештање извршних фајлова - потребно је само да у конзоли откуцате:

irssi

Требало би да добијете конзолни интерфејс који подсећа на прозор за дописивање. Откуцајте следеће да се конектујете на наш канал:

/nick nadimak_koji_zelite
/server irc.freenode.net
/join #floss-magazin

Други програм можете покренути покретањем извршног фајла који се налази у директоријуму у који сте прешли након превођења, или, ако сте извршили инсталацију, покретањем команде:

weechat

А можете се конектовати на следећи начин:

/server add freenode chat.freenode.net
/connect freenode
/nick nadimak_koji_ste_izabrali
/join #floss-magazin

Ако будете имали неких недоумица или проблема, можете нас контактирати путем електронске поште или наших страница на Фејсбуку и Твитеру.