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

Тъжно за FOSDEM

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

Да, тъжно ми е. FOSDEM беше много важно събитие за мен и го смятам за част от израстването ми като компютърен специалист, като философ, ако щете и като човек изобщо. Това е мястото и времето, в което се включваш, макар и за малко, в пулса на цялата общност на свободния софтуер. Това, че е в университетски кампус е още по-показателно. Не успях да ида да уча навън като студент, но още първата година, когато с Jitsi отидох в ULB, все едно имах крила на обувките и търсех да видя коя сграда на кой факултет и на коя специалност е. Не намерих по-социални науки от право, май, но все едно бях в някой от онези колежански сериали, дето във викториански сгради учат ту физика, ту история на американската литература… примерно.

Тази година ФОСДЕМ няма. Е, уж има онлайн събитие, но аз не мога да следя излъчвания в мрежата. Не знам защо, просто не ми се получава. Мога да гледам записи, понякога нарочно търся нещо тематично, но наживо да следя емисии, да гледам “live-ове” – това не е за мен. А има някои неща, които много искам да следя, някои от тях имат редовни емисии – например всеки петък или веднъж на две седмици… и пак не успявам. Случвало ми се е да се сещам вече закъснял и да тичам към компютъра или пък да ровя бързо в мобилния, само за да открия, че излъчването току-що е приключило. Някои казват, че това с живите предавания на събития, конференции и дори концерти било страхотно, така сме щели да се справим с предизвикателствата на ковид – е, сори, но аз своите записи из мрежата не съм догледал, та камо ли друго.

Конференцията в Белгия е по-специална за мен и по други причини. Като франкофон ми беше още по-вълнуващо да крача из улици, сред всякаква френска реч, от разбираема до съвсем нечленоразделна за мен. Помня как първия път се загубих в нощен Брюксел и първо реших да разчитам на естествения си усет за ориентация, който бързо ме предаде и се оказах в квартали, в които не чуват точно френски говор, а фасадите бяха с една идея по-близки до мизерните квартали на София. Заговорих се на френски с полицаи и разбрах, че съм вървял бързо в обратна на центъра посока. Спомням си как с Емчо вървяхме през половината град към Beermania и като стигнахме се зарекох като се прибера, да изхвърля кубинките. Как с Ицо и Боби се заливахме от смях из нощните улици, след като в Delirium-а бяхме седяли до една италианска двойка на средна възраст, дето подозрително цяла вечер миришеха на джойнт. Разходките из града с Любо и Слави. Всички срещи с българската група там – някои редовни участници от българските конференции и общности, някои съвсем неочаквани, като Шопов. Оглеждането на опашката за жетони за бира, тъкмо пристигнал, дали ще видиш познати лица. Посрещането на Даменчо на гарата и после двата часа по тъмно отвън на по бира, с разказване как са те, как съм аз. Като бонус – всички познати лица от големите проекти, пък и от по-малките, някои легенди в средите, всички интересни проекти, щандове и лекции, на които или си искал да идеш, или случайно си попаднал, защото съседната зала вече е била пълна. Дори лицата от поредното подписване на ключове. Тук-там и някой от големите компании, дето са се свързвали с теб в миналото и ти ги знаеш по име и лице, но те не и си стоиш във фоайето на сграда K и си говориш с тях…

Още първия път, когато тръгвах, през 2014г., Светко ме пита дали не може да дойде с мен. Даже се отчая малко, като разбра, че заминавам и ще съм без него. Всеки път след това въпросът беше поставян отново, а междувременно и той, и Оги започнаха да ходят на курсове по роботика, да опитват да програмират на Scratch, даже преди две години, то вече са две години и половина, едно лято на морето започнаха да измислят компютърна игра. Няма да издавам тайни, но е свързана с море и вълни. Имахме съвсем сериозни планове като се приберем, да започна да ги въвеждам в програмиране и да имат свой проект, да разучаваме заедно – ако не бъркам, идеята беше да разучим Blender и после Unity, все свръх амбициозни планове. Така и още стои на трупчета, но пък точно миналата година реших, че е крайно време да ѝ изтупаме праха, да направим проект и да идем с децата на FOSDEM следващата година. А то… онлайн излъчване на видеозаписи на лекции.

Да, това ме амбицира още повече да направим тази игра и да помогна на момчетата да продължат сами да разучават технологии и концепции. Много е лесно, особено с това “онлайн обучение”, всички не-изкушени от технологиите да разбират от всичко и по много. Не ме притеснява това, че децата растат в такова бурно време или че се учат отдалечено. Повече се тревожа от този “вечен септември” на интернет интерактивността, който започва да създава грешни представи. Начинът да се остане “на вода” в този потоп е да се осмислят процесите и ценностите на онлайн средата.

Догодина се надявам да има и конференции, и фестивали. 2021-ва я пропускаме, но 2022-ра вече трябва да е ок, че ние остаряваме, децата растат…

Как се пишат марките на автомобилите – с малка или с главна буква; с кавички или без?

от Павлина Върбанова
лиценз CC BY-NC-ND
Марките на автомобилите се пишат с главна буква, тъй като представляват съществителни собствени имена, и се ограждат в кавички.   Повечето хора свързват автомобилите „Ферари“ с червения цвят. Ще си купувам кола и смятам да заложа на „Фолксваген“. Ако марката е написана с шрифт, различен от основния, кавички не се поставят.   Повечето хора свързват […]

WannaCry, Windows?

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

Години наред им казваш да не ползват Windows и всякакъв несвободен софтуер, а сега пищят от поредния вирус… ами как да кажа, не че съм доволен, но не ми е неприятно. Яд ме е само на хорската глупост.

LTO barcode labels

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

Не е достатъчно да се прави бекъп редовно. Необходимо е архивираните данни да са лесно достъпни и бързо откриваеми, представяте ли си да се наложи да претърсите 50 касети по 2.5TB, докато откриете файла, който ви е необходим? Модерните системи за бекъп поддържат подробни каталози на архивираните данни - кое на коя касета се намира. За това е важно касетите да са надлежно надписани. Най-добре с баркод, който самата система за архивиране може да чете и обработва. Всеки производител на касети за бекъп предлага и етикети за тях. Цветни, нарязани, готови за лепене. Почти идеални, само с един недостатък: невъзможност за "персонализиране". Няма как да се кодира собствена схема за обозначаване на касетите. Не е гот. Естествено има и много комерсиален софтуер за генериране и печатане на баркодове. Естествено има и много безплатен и свободен такъв. Като barcode. С него и малко bash магия ще си напечатате колкото си искате етикета за бекъп касетите по каквато си искате схема. Етикета на моите касети за ежедневни архиви започва с D (daily), има петцифрен пореден номер и, съгласно възприетите практики, завършва с L6, понеже е LTO6. Този bash код ми генерира една страница А4 с 57 етикета на нея:

for ((i=1; i<=57; i++)); do printf "D%05dL6n" $i; done | 
barcode -u mm -t 3x20 -g 79x17 -o label.ps -e code39 -p 210x297 -m 3,2 -c

Изглеждат ето така:

LTO6 Labels - Daily

Github, отвори се!

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

Един alias в моя alias_git, който може да ви се стори интересен и полезен, може да се използва и като добър пример за използването на pipes на командния ред в Линукс, и като илюстрация на sed. С този alias от командния ред отварям в браузъра github страницта на репозиторито в което работя в момента.

alias gh="git config --get remote.origin.url | sed 's/git@/https:///g;s/:///g;' | xargs /usr/bin/chromium %U 1>/dev/null 2>&1 &"

Отделните стъпки са следните:

Взимам URL-а на репозиторито така както е дефинирано в config-а:

git config --get remote.origin.url

Със sed заменям ':' с '/' и 'git@' с 'https://' в URL-а:

sed 's/git@/https:///g;s/:///g;'

Резултата подавам на chromium с помощта на xargs:

xargs /usr/bin/chromium %U 1>/dev/null 2>&1 &

Разбира се, има какво да се подобрява - например какво се случва, ако го използвам в обикновена директория, а не в репозитори? Правилно - отваря ми празен браузър. А може да се сложи проверка и да не се отваря изобщо нищо. Ето нещо над което да поработите.

Васил Левски – украинец?!

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

От няколко дни сме свидетели на борбата на украинците - борят се да изтръгнат родината си от прегръдката на руската мечка, борят се да останат част от Европа, а не отдел от азиатския департамент на имперската канцелария. Всички следим новините от там, наясно сте, да не ви обяснявам и да изпадам в патетични излияния.

В Украйна, както е известно на всеки български патриот и родолюбец (а дали?), има огромно множество хора, които се определят като българи по националност и етническо самосъзнание. Толкова огромно, че правото им да се наричат българи е признато от държавата и си имат собствено политическо представителство в парламента, както и редица други права като училища на български и т.н. В събота, в предаване по БНТ (или бТВ), водещия включи директно по скайп един от българските депутати в украинския парламент. Естествено по повод събитията в Украйна след решението на парламента им да завие към Русия, вместо към Европа. Първият още въпрос беше - А какво мислят българите в Украйна, каква е тяхната позиция? И от отговора аз лично получих едновременно просветление относно исконната същност на българската душевност и сърдечен удар. Българските депутати в украинския парламент... подкрепят решението за по-тесен съюз и обвързване с Русия, за сметка на влизането на Украйна в ЕС. Толкоз. Защо? Защото по времето на СССР имали сигурност, имало грижа на държавата за тях, имало отворени читалища във всяко село, имало работа, имало ред - за всичко това се грижела СССР. И тука ми светна. Чакай! Този отговор съм го чувал! Това е стандартната мантра на всеки червен носталгик, осъзнат или латентен комунист, у нас, в България! Тези хора са наистина българи, Господи! Макар и от векове откъснати от България, че как да мислят друго? Те са българи.

Нали сте говорили с червени носталгици? Всичко, в края на всичко, се свежда до едно, всеки пример за това колко анти-човешка идеология е комунизма се парира с едно: Абе да бе, абе може да е било сякакво при Живков, ама поне е имало СИГУРНОСТ, поне НЕ НИ СЕ Е НАЛАГАЛО ДА МИСЛИМ за работа, НЕ НИ СЕ Е НАЛАГАЛО ДА МИСЛИМ за прехрана. Това е, драги. Това е истината - българина най-МРАЗИ да мисли. Той мечтае да не му се налага да МИСЛИ. Някой друг да мисли за него - за читалищата му, за културните му домове, за работата му, за всичко. Ама за всичко! Нали помните оня виц за Тодор Живков, в който открива нова детска градина? "Партията ви направи детска градина, хо хо хо!" - "Ама, другарю Живков, ние деца нямаме..." - "Е па и деца ше ви направи партията хо хо хо хо!" И всички дружно се смеем... Ама не е виц. Не съм убеден, че е виц. Това е еманация на най-дълбокото и съкровено желание на българина. ДА НЕ МИСЛИ ЗА НИЩО. Като прасе в кочина. Сипват му помия, чистят му от време на време, макар и рядко, лайната. На завет е. Е, не са идеални условията, може и по-добре да се живее, нали... ама НЕ НИ СЕ НАЛАГА ДА МИСЛИМ! Ако трябва по-добре да живеем, ще ни се наложи да мислим сами за себе си. Да, там някакви някъде по света по-добре живеят, ама пък то живот ли е тяхното бе - НАЛАГА ИМ СЕ ДА МИСЛЯТ!!

И в България, и в Украйна и на всякъде по света българинът си е българин. Можеш да го присадиш в какви ли не условия, ще вирее... издръжлив е. И при комунизъм, и при капитализъм, и при монархия, и при демокрация, и на течение... Само не го карай да мисли! Сакън. Истинският българин не мисли! Мрази да мисли. И не мисли.

Да ме прощават патриотите, но всичките им кумири - и Паисий, и Раковски, и Ботев, и Левски, и Бенковски, и Захари Стоянов - всички те очевидно не са българи. Всички вкупом не издържат теста по българщина. Те са имали отчетливо изразени вредни склонности към мислене. Толкова ярка анти-българска черта. Били са украинци... най-вероятно. Приличат на украинци - поне по любовта им към и жаждата им за Свобода. А може и папуаси да са... Но определено не са българи. И аз не съм българин.

2676

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

Не успявам да остана достатъчно дълго насаме с празния екран, за да пиша. А имам за какво да разказвам. Пътувания през лятото, училище, работа… и уволнение… и пак работа, но за себе си. Много неща, но трудно започвам – все няма време или ако има време, нямам сили и спя. За да не е само мрънкане това започване, ще кажа, че мобилните програми – конкретно за Android – са готино предизвикателство. Много дълго отлагано, но за всяко нещо си идва времето. Реших и стратегия за учене – пиша това, което ми липсва на момента. Или го има, но е несвободно, не е във f-droid… другояче казано, пак ми липсва.

Етап две – приключване на сагата ми с търсене на нов лаптоп. Старият е на пределна възраст, но на почти никой нов не му харесвам копчетата. Има някои модели с прилични клавиатури – без омразния цифров блок, с групирани F-ове и с разположение на специални клавиши, с каквото съм свикнал. Но пък са все със слаби процесори внесените бройки… Трудно е, но скоро ще трябва да реша.

Too many folders too little time

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

Напоследък все повече затъвам в Microsoft среда и се налага да се оправям със всякакви казуси в нея. Последно се наложи да намеря лесен начин да се даде достъп на група потребители в Exchange до дърво от папки в мейлбокс. Проблема е, когато имате добре развита структура от папки и подпапки в един мейлбокс - абсурдно е да цъкате на всяка една папка и да давате достъп до нея потребител по потребител. Майкрософт са проявили здрав разум и са имплементирали Exchange Management Shell - среда, в която можете да автоматизирате със скрипт такива задачки (и която поразително наподобява bash, дори заимства негови функции и команди - защо ли?).

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

  \RootFolder
                \SubFolder1.0
                               \SubFolder1.1
                                               \SubFolder1.1.1
                               \SubFolder1.2
                \SubFolder2.0

Като дълбочината и разклонеността на дървото е без значение. Задачата е да дадем достъп на група потребители до всички папки под RootFolder (или под SubFolder1.0, или под SubFolder1.1 - принципа е същия). След кратко ровене из Нета от няколко парчета код се получи следния скрипт:

$mbox="Shared.Mailbox"
$usrs=( "User.Name1", "User.Name2", "User.NameN")

ForEach($fldr in (Get-MailboxFolderStatistics $mbox | Where { $_.FolderPath.Contains("RootFolder") -eq $true })) {  
    $fldrname = $mbox + ":" + $fldr.FolderPath.Replace("/","\");

    #Remove existing permissions
    ForEach($itm in (Get-MailboxFolderPermission $fldrname | select User,AccessRights)) {
        if (($itm.User -notlike "Default") -and ($itm.User -notlike "Anonymous")) {
        Remove-MailboxFolderPermission $fldrname -User $itm.User -confirm: $false
        }
    }

    #Add new permissions
    ForEach ($usr in $usrs){
        Add-MailboxFolderPermission $fldrname -User $usr -AccessRights NonEditingAuthor
  }
}

Некои съображения... Понеже използвам Add-MailboxFolderPermission, а той не променя вече съществуващи права за достъп на потребител, а само добавя нови такива, се налага първо да изчистя всички права за достъп до папката - защото ако се опитам да дам достъп на потребител, който вече има достъп до папката, то Add-MailboxFodlerermission ще се възмути и ще изплюе грешка... Което не е фатално, скрипта ще продължи нататък със следващия потребител от списъка usrs, но ще изглежда грозно на екрана хехехе. Пък и в конкретния случай, за който ми трябваше, този подход ме устройва, защото освен да се даде достъп до папките на някои потребители, се налага и да се премахне достъпа до тях на други потребители - та с един куршум отстрелях два заека (кажете после, че не ме мързи). Ще ви подскажа обаче, че за промяна на права за достъп се използва Set-MailboxFolderPermission - ако ви трябва друг подход, оправяйте се :) За параметрите на Add-MailboxFolderPermission и компания питайте Гугъл и Майкрософт.

2520

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

WordPress 3.6 е свежо обновление, признавам. Интересни стъпки, може би най-вече с визуалните промени. Не мога още да свикна с новия изглед Twenty Thirteen, макар че на много други блогъри ще им потекат лигите. Най-интересно ми е продължаващото развитие с различните формати на публикациите. Далеч e от гъвкавостта в Drupal, но пък май нарочно ги правят така. Още не свиквам – твърде ненастройваеми ми стоят.

Dual head setup с Linux

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

Dual head setup е работна станция (десктоп, лаптоп) с включени към нея два екрана. Идеята е да се увеличи площта на работния плот, като така стане възможно да имате отворени повече приложения И да ги следите едновременно, защото прозорците им не се припокриват.

Dual Head Setup

Когато говорим за десктоп, трябва да е ясно, че се нуждаете от видеокарта, която има два изхода, или специален сплитер. Този вариант не е предмет на тази статия.

Друго приложение на този сетъп е при изнасяне на презентации с лаптоп - мултимедийния проектор играе ролята на втори дисплей, на който може да прехвърлите слайдовете за публиката, докато на основния дисплей на лаптопа сте отворили бележките си.

Как се прави това под Линукс? Лесно. Повечето мейнстрийм графични среди за Линукс ви предлагат инструменти с които да направите необходимите настройки. Обикновено след като включите външен дисплей към извода на лаптопа си, в аплета за настройка на дисплея се появяват и двата - вградения и външния - и имате възможност да ги управлявате от там.

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

Използва се xrandr - приложение разработвано и поддържано от freedesktop.org, базирано на RandR X протокола. Много накратко казано това е протокол за откриване, конфигуриране и прочие на дисплеи. xrandr е част от стандартния Xorg пакет, така че се намира на всяка машина с инсталиран X.

Нашия сценарий е прост - презентатор с линукс лаптоп и мултимедиен проектор. Първата стъпка е да включите проектора към VGA извода на лаптопа. След това да прегледате как го намира Xorg:

09:14:40 yradunchev:~ $ xrandr -q   
Screen 0: minimum 320 x 200, current 1024 x 600, maximum 4096 x 4096   
  LVDS1 connected 1024x600+0+0 (normal left inverted right x axis y axis) 195mm x 113mm   
     1024x600       60.0*+   
     800x600        60.3     56.2     
     640x480        59.9     
  VGA1 connected (normal left inverted right x axis y axis)   
     1440x900       59.9 +   75.0     
     1280x1024      75.0     60.0      
     1280x960       60.0      
     1152x864       75.0      
     1024x768       75.1     70.1     60.0      
     832x624        74.6      
     800x600        72.2     75.0     60.3     56.2      
     640x480        72.8     75.0     66.7     60.0      
     720x400        70.1      
09:14:43 yradunchev:~ $     

Както виждате, xrandr -q ще покаже всички дисплеи, които открива, както и всички възможни режими на работа, които те предлагат. LVDS1 e основния, вградения дисплей на лаптопа, а VGA1, логично, е проектора включен към VGA изхода на лаптопа. За да го използвате, издавате следната команда към xrandr:

09:34:50 yradunchev:~ $ xrandr --output VGA1 --mode 1440x900 --right-of LVDS1

Това ще "добави" екрана на проектора към десктопа ви, в дясно от основния - това значи, че ако мръднете в с мишката надясно от дясната граница на основния екран на лаптопа, ще се озовете на екрана на проектора. Можете просто да завлачвате прозорци от основния екран надясно, за да ги видите на проектора. Когато пожелаете да изключите сигнала към проектора:

10:20:10 yradunchev:~ $ xrandr --output VGA1 --off

И шоуто приключва. Из Интернет можете да намерите шел скриптове, които можете да закачите за някоя клавишна комбинация или функционален/мултимедиен бутон на лаптопа си, и с тяхна помощ да включвате и изключвате външния екран в различни комбинации с основния. Тук няма да давам такъв, това ще ви е за домашно. :)