Tag Archives: софтуер

Bitcoin, UASF… и политиката

Post Syndicated from Григор original http://www.gatchev.info/blog/?p=2064

Напоследък се заговори из Нета за UASF при Bitcoin. Надали обаче много хора са обърнали внимание на тия акроними. (Обикновено статиите по въпроса на свой ред са салата от други акроними, което също не улеснява разбирането им.) Какво, по дяволите, значи това? И важно ли е?

Всъщност не е особено важно, освен за хора, които сериозно се занимават с криптовалути. Останалите спокойно могат да не му обръщат внимание.

Поне на пръв поглед. Защото дава и сериозно разбиране за ефективността на някои фундаментални политически понятия. Затова смятам да му посветя тук част от времето си – и да изгубя част от вашето.

1. Проблемите на Bitcoin

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

Всички транзакции в биткойни се записват в блокове, които образуват верига – така нареченият блокчейн. По този начин всяка стотинка (пардон, сатоши 🙂 ) може да бъде проследена до самото ѝ създаване. Адресите, между които се обменят парите, са анонимни, но самите обмени са публични и явни. Може да ги проследи и провери за валидност всеки, които има нужния софтуер (достъпен свободно) и поддържа „пълен възел“ (full node), тоест е склонен да отдели стотина гигабайта на диска си.

Проблемът е, че блокът на Bitcoin има фиксиран максимален размер – до 1 мегабайт. Той побира максимум 2-3 хиляди транзакции. При 6 блока на час това означава около 15 000 транзакции на час, или около 360 000 на денонощие. Звучи много, но всъщност е абсолютно недостатъчно – доста големи банки правят по повече транзакции на секунда. Та, от известно време насам нуждата от транзакции надхвърля капацитета на блокчейна. Което създава проблем за потребителите на валутата. Някои от тях започват да я изоставят и да се насочват към традиционни валути, или към други криптовалути. Съответно, влиянието и ролята ѝ спада.

2. Положението с решенията

Предлагани са немалко решения на този проблем. Последното се нарича SegWit (segregated witness). Срещу всички тях (и конкретно срещу това) обаче има сериозна съпротива от ключови фактори в Bitcoin.

Сравнително скоро след създаването на Bitcoin в него беше въведено правилото, че транзакциите са платени. (Иначе беше много лесно да бъдат генерирани огромен брой транзакции за минимална сума напред-назад, и така да бъде задръстен блокчейнът.) Всяка транзакция указва колко ще плати за включването си в блок. (Това е, което я „узаконява“.)

Кои транзакции от чакащите реда си ще включи в блок решава този, който създава блока. Това е „копачът“, който е решил целта от предишния блок. Той прибира заплащането за включените транзакции, освен стандартната „награда“ за блока. Затова копачите имат изгода транзакциите да са колкото се може по-скъпи – тоест, капацитетът на блокчейна да е недостатъчен.

В добавка, немалко копачи използват „хак“ в технологията на системата – така нареченият ASICBOOST. Едно от предимствата на SegWit е, че пречи на подобни хакове – тоест, на тези „копачи“. (Подробности можете да намерите тук.)

Резултатът е, че някои копачи се съпротивляват на въвеждането на SegWit. А „копаещата мощност“ е, която служи като „демократичен глас“ в системата на Bitcoin. Вече е правен опит да се въведе SegWit, който не сполучи. За да е по-добър консенсусът, този опит изискваше SegWit да се приеме когато 95% от копаещата мощност го подкрепи. Скоро стана ясно, че това няма да се случи.

3. UASF? WTF? (Демек, кво е тва UASF?)

Не зная колко точно е процентът на отхвърлящите SegWit копачи. Но към момента копаенето е централизирано до степен да се върши почти всичкото от малък брой мощни компании. Напълно е възможно отхвърлящите SegWit да са над 50% от копаещата мощност. Ако е така, въвеждането на SegWit чрез подкрепа от нея би било невъзможно. (Разбира се, това ще значи в близко бъдеще упадъка на Bitcoin и превръщането му от „царя на криптовалутите“ в евтин музеен експонат. В крайна сметка тези копачи ще са си изкопали гроба. Но ако има на света нещо, на което може да се разчита винаги и докрай, това е човешката глупост.)

За да се избегне такъв сценарий, девелоперите от Bitcoin Core Team предложиха т.нар. User-Activated Soft Fork, съкратено UASF. Същността му е, че от 1 август нататък възлите в мрежата на Bitcoin, които подкрепят SegWit, ще започнат да смятат блокове, които не потвърждават че го поддържат, за невалидни.

Отхвърлящите SegWit копачи могат да продължат да си копаят по старому. Поддържащите го ще продължат по новому. Съответно блокчейнът на Bitcoin от този момент нататък ще се раздели на два – клон без SegWit и клон с него.

4. Какъв ще е резултатът?

Преобладаващата копаеща мощност може да се окаже в първия – тоест, по правилата на Сатоши Накамото той ще е основният. Но ако мрежата е разделена на две, всяка ще има своя основен клон, така че няма да бъдат технически обединени. Ще има две различни валути на име Bitcoin, и всяка ще претендира, че е основната.

Как ще се разреши този спор? Потребителите на Bitcoin търсят по-ниски цени за транзакции, така че огромният процент от тях бързо ще се ориентират към веригата със SegWit. А ценността и приетостта на Bitcoin се дължи просто на факта, че хората го приемат и са склонни да го използват. Затова и Segwit-натият Bitcoin ще запази ролята (и цената) на оригиналния Bitcoin, докато този без SegWit ще поевтинее и ще загуби повечето от релевантността си.

(Всъщност, подобно „разцепление“ вече се е случвало с No. 2 в света на криптовалутите – Ethereum. Затова има Ethereum и Ethereum Classic. Вторите изгубиха борбата да са наследникът на оригиналния Ethereum, но продължава да ги има, макар и да са с много по-малка роля и цена.)

Отхвърлилите SegWit копачи скоро ще се окажат в положение да копаят нещо, което струва жълти стотинки. Затова вероятно те шумно или тихо ще преминат към поддръжка на SegWit. Не бих се учудил дори доста от тях да го направят още на 1 август. (Въпреки че някои сигурно ще продължат да опищяват света колко лошо е решението и какви загуби понасят от него. Може да има дори съдебни процеси… Подробностите ще ги видим.)

5. Политиката

Ако сте издържали дотук, четете внимателно – същността на този запис е в тази част.

Наскоро си говорих с горда випускничка на български икономически ВУЗ. Изслушах обяснение как икономията от мащаба не съществува и е точно обратното. Как малките фирми са по-ефективни от големите и т.н…

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

В ИТ бизнеса динамиката е много над средната. Където не е и няма как да бъде регулиран лесно, където нещата са по-laissez-faire, както е примерно в копаенето на биткойни, е още по-голяма. Нищо чудно, че копаенето премина толкова бързо от милиони индивидуални участници към малък брой лесно картелиращи се тиранозаври. Всяка система еволюира вътрешно в такава посока… Затова „перфектна система“ и „щастие завинаги“ няма как да съществуват. Затова, ако щете, свободата трябва да се замесва и изпича всеки ден.

„Преобладаващата копаеща мощност“, било като преобладаващият брой индивиди във вида, било като основната маса пари, било като управление на най-популярните сред гласоподавателите мемове, лесно може да се съсредоточи в тесен кръг ръце. И законите на вътрешната еволюция на системите, като конкретно изражение на дисипативните закони, водят именно натам… Тогава всяко гласуване започва да подкрепя статуквото. Демокрацията престава да бъде възможност за промяна – такава остава само разделянето на възгледите в отделни системи. Единствено тогава новото получава възможност реално да конкурира старото.

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

Който разбрал – разбрал.

Съд на ЕС: за достъпа до The Pirate Bay

Post Syndicated from nellyo original https://nellyo.wordpress.com/2017/06/15/the-pirate-bay-5/

Вчера беше публикувано решението на Съда на ЕС по дело C‑610/15 Stichting Brein срещу Ziggo BV и XS4ALL Internet BV.

Решението засяга функционирането и достъпа до The Pirate Bay.

Спорът

9 Ziggo и XS4ALL са доставчици на достъп до интернет. Значителна част от техните абонати ползват платформата за онлайн споделяне TPB, индексатор на BitTorrent файлове. BitTorrent е протокол, чрез който потребителите (наричани „равноправни устройства“ или „peers“) могат да споделят файлове. Съществената характеристика на BitTorrent се състои в това, че файловете, които се споделят, са разделени на малки сегменти, като по този начин отпада необходимостта от централен сървър за съхраняване на тези файлове, което облекчава тежестта на индивидуалните сървъри в процеса на споделянето. За да могат да споделят файлове, потребителите трябва най-напред да свалят специален софтуер, наречен „BitTorrent клиент“, който не се предлага от платформата за онлайн споделяне TPB. Този BitTorrent клиент представлява софтуер, който позволява създаването на торент файлове.

10      Потребителите (наричани „seeders“ [сийдъри]), които желаят да предоставят файл от своя компютър на разположение на други потребители (наричани „leechers“ [лийчъри]), трябва да създадат торент файл чрез своя BitTorrent клиент. Торент файловете препращат към централен сървър (наричан „tracker“ [тракер]), който идентифицира потребители, които могат да споделят конкретен торент файл, както и прилежащия към него медиен файл. Тези торент файлове се качват (upload) от сийдърите (на платформа за онлайн споделяне, каквато е TPB, която след това ги индексира, за да могат те да бъдат намирани от потребителите на платформата за онлайн споделяне и произведенията, към които тези торент файлове препращат, да могат да бъдат сваляни (download) на компютрите на последните на отделни сегменти чрез техния BitTorrent клиент.

11      Често пъти вместо торенти се използват магнитни линкове. Тези линкове идентифицират съдържанието на торента и препращат към него чрез цифров отпечатък.

12      Голямото мнозинство от предлаганите на платформата за онлайн споделяне TPB торент файлове препращат към произведения, които са обект на закрила от авторски права, без да е дадено разрешение от носителите на авторското право на администраторите и на потребителите на тази платформа за извършване на действията по споделянето.

13      Главното искане на Stichting Brein в производството пред националната юрисдикция е да разпореди на Ziggo и на XS4ALL да блокират имената на домейни и интернет адресите на платформата за онлайн споделяне TPB с цел да се предотврати възможността за ползване на услугите на тези доставчици на достъп до интернет за нарушаване на авторското и сродните му права на носителите на правата, чиито интереси защитава Stichting Brein.

Въпросите

 При тези обстоятелства Hoge Raad der Nederlanden (Върховен съд на Нидерландия) решава да спре производството по делото и да постави на Съда следните преюдициални въпроси:

„1)      Налице ли е публично разгласяване по смисъла на член 3, параграф 1 от Директива 2001/29 от страна на администратора на уебсайт, ако на този уебсайт не са налице защитени произведения, но съществува система […], с която намиращи се в компютрите на потребителите метаданни за защитени произведения се индексират и категоризират за потребителите по начин, по който последните могат да проследяват, да качват онлайн, както и да свалят закриляните произведения?

2)      При отрицателен отговор на първия въпрос:

Дават ли член 8, параграф 3 от Директива 2001/29 и член 11 от Директива 2004/48 основание за издаването на забрана по отношение на посредник по смисъла на тези разпоредби, който по описания във въпрос 1 начин улеснява извършването на нарушения от трети лица?“.

Вече имаме заключението на Генералния адвокат Szpunar, според което

обстоятелството, че операторът на уебсайт индексира файлове, съдържащи закриляни с авторско право произведения, които се предлагат за споделяне в peer-to-peer мрежа, и предоставя търсачка, с което позволява тези файлове да бъдат намирани, представлява публично разгласяване по смисъла на член 3, параграф 1 от Директива 2001/29, когато операторът знае, че дадено произведение е предоставено на разположение в мрежата без съгласието на носителите на авторските права, но не предприема действия за блокиране на достъпа до това произведение.

Решението

Понятието „публично разгласяване“ обединява два кумулативни елемента, а именно „акт на разгласяване“ на произведение и „публичност“ на разгласяването (решение от 26 април 2017 г., Stichting Brein, C‑527/15, EU:C:2017:300, т. 29 и цитираната съдебна практика). За да се прецени дали даден ползвател извършва акт на публично разгласяване по смисъла на член 3, параграф 1 от Директива 2001/29, трябва да се отчетат няколко допълнителни критерия, които не са самостоятелни и са взаимозависими.

  • ключовата роля на потребителя и съзнателния характер на неговата намеса. Всъщност този потребител извършва акт на разгласяване, когато, като съзнава напълно последиците от своето поведение, се намесва, за да предостави на клиентите си достъп до произведение, което е обект на закрила, и по-специално когато без неговата намеса тези клиенти по принцип не биха могли да се ползват от разпространеното произведение. (вж. в този смисъл решение от 26 април 2017 г., Stichting Brein, C‑527/15, EU:C:2017:300, т. 31 и цитираната съдебна практика).
  • понятието „публично“ се отнася до неопределен брой потенциални адресати и освен това предполага наличие на доста голям брой лица (решение от 26 април 2017 г., Stichting Brein, C‑527/15, EU:C:2017:300, т. 32 и цитираната съдебна практика).
  • закриляното произведение трябва да бъде разгласено, като се използва специфичен технически способ, различен от използваните дотогава, или, ако не е използван такъв способ — пред „нова публика“, тоест публика, която не е била вече взета предвид от носителите на авторското право при даването на разрешение за първоначалното публично разгласяване на произведението им (решение от 26 април 2017 г., Stichting Brein, C‑527/15, EU:C:2017:300, т. 33 и цитираната съдебна практика).
  • дали публичното разгласяване  е извършено с цел печалба (решение от 26 април 2017 г., Stichting Brein, C‑527/15, EU:C:2017:300, т. 34 и цитираната съдебна практика).

42 В случая, видно от акта за преюдициално запитване, значителна част от абонатите на Ziggo и XS4ALL са сваляли медийни файлове чрез платформата за онлайн споделяне TPB. Както следва и от представените пред Съда становища, тази платформа се използва от значителен брой лица, като администраторите от TPB съобщават на своята платформа за онлайн споделяне за десетки милиони „потребители“. В това отношение разглежданото в главното производство разгласяване се отнася най-малкото до всички потребители на тази платформа. Тези потребители могат да имат достъп във всеки момент и едновременно до защитените произведения, които са споделени посредством посочената платформа. Следователно това разгласяване се отнася до неопределен брой потенциални адресати и предполага наличие на голям брой лица (вж. в този смисъл решение от 26 април 2017 г., Stichting Brein, C‑527/15, EU:C:2017:300, т. 45 и цитираната съдебна практика).

43      От това следва, че с разгласяване като разглежданото в главното производство закриляни произведения действително се разгласяват „публично“ по смисъла на член 3, параграф 1 от Директива 2001/29.

44      Освен това, що се отнася до въпроса дали тези произведения са разгласяват на „нова“ публика по смисъла на съдебната практика, цитирана в точка 28 от настоящото съдебно решение, следва да се посочи, че в решението си от 13 февруари 2014 г., Svensson и др. (C‑466/12, EU:C:2014:76, т. 24 и 31), както и в определението си от 21 октомври 2014 г., BestWater International (C‑348/13, EU:C:2014:2315, т. 14) Съдът е приел, че това е публика, която носителите на авторските права не са имали предвид, когато са дали разрешение за първоначалното разгласяване.

45      В случая, видно от становищата, представени пред Съда, от една страна, администраторите на платформата за онлайн споделяне TPB са знаели, че тази платформа, която предоставят на разположение на потребителите и която администрират, дава достъп до произведения, публикувани без разрешение на носителите на правата, и от друга страна, че същите администратори изразяват изрично в блоговете и форумите на тази платформа своята цел да предоставят закриляните произведения на разположение на потребителите и поощряват последните да реализират копия от тези произведения. Във всички случаи, видно от акта за преюдициално запитване, администраторите на онлайн платформата TPB не може да не са знаели, че тази платформа дава достъп до произведения, публикувани без разрешението на носителите на правата, с оглед на обстоятелството, което се подчертава изрично от запитващата юрисдикция, че голяма част от торент файловете, които се намират на платформата за онлайн споделяне TPB, препращат към произведения, публикувани без разрешението на носителите на правата. При тези обстоятелства следва да се приеме, че е налице разгласяване пред „нова публика“ (вж. в този смисъл решение от 26 април 2017 г., Stichting Brein, C‑527/15, EU:C:2017:300, т. 50).

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

47      Вследствие на това трябва да се приеме, че предоставянето на разположение и администрирането на платформа за онлайн споделяне като разглежданата в главното производство, съставлява „публично разгласяване“ по смисъла на член 3, параграф 1 от Директива 2001/29.

48      С оглед на всички изложени съображения на първия въпрос следва да се отговори, че понятието „публично разгласяване“  трябва да се тълкува в смисъл, че  в неговия обхват попада предоставянето на разположение и администрирането в интернет на платформа за споделяне, която чрез индексиране на метаданните относно закриляните произведения и с предлагането на търсачка позволява на потребителите на платформата да намират тези произведения и да ги споделят в рамките на мрежа с равноправен достъп (peer-to-peer).

Масовите коментари са, че решението засилва позициите на търсещите блокиране организации.

Filed under: Digital, EU Law, Media Law Tagged: съд на ес

WannaBark (at the Moon)

Post Syndicated from Йовко Ламбрев original https://yovko.net/wannabark/

Не. Няма да пиша за ИскаПлаче. Вече много се изписа – и както обикновено малка част си струваше четенето.

Проблемът е много по-голям от раздуханата случка. А резюмето е, че сме прецакани. Генерално сме прецакани! Нещо, което си повтаряме от време на време из технологичните среди, но е крайно време да го обясним с човешки думи на всички и да започнем някак да поправяме нещата.

Интернет е лабораторно чедо. Няма някакъв съвършен имунитет. Роди се и проходи в среда на академична романтика, обгрижвано с наивната добронамереност на първосъздателите и първопотребителите си. До скоро (в Интернет) все още беше донякъде вярно, че мнозинството по принцип е рационално, що-годе грамотно, а полезното и смисленото естествено ще надделяват над глупостта и враждебността. Вече не е така. Приказката свърши!

Време е да се събудим и да признаем, че доброто няма да победи злото по подразбиране, без да му помогнем.

Свързани сме. Всички. Повече от всякога. И затова трябва да осъзнаваме отговорността си един към друг. Както когато сме пипнали грип, не си стоим вкъщи само за да се излекуваме по-бързо, а и за да ограничим заразата сред останалите – така и не можем в наши дни да си позволим да ползваме компютър, смартфон и софтуер, който е стар и изоставен от поддръжка – защото сме уязвими не само ние, но застрашаваме и останалите.

Както някой сполучливо обобщи тези дни в twitter: „Не е вярно, че не можеш да си позволиш да обновяваш. Не можеш да си позволиш да не обновяваш!“

Системите, които ползваме явно или невидимо около нас, ще стават все по-свързани и отговорността да ги опазим е обща. Тя включва и да изискваме отговорност – от себе си, от операторите, от правителствата.

WannaCry нямаше да има този ефект, ако пострадалите бяха обновили софтуера си. Затова, когато на телефона или какъвто и да е компютър или умно устройство изгрее обновление, за бога, не го пренебрегвайте! Да, понякога може да е досадно. Не е много забавно и да си миеш зъбите, но е силно препоръчително и полезно за здравето.

Но… дори и от утре всички да започнем стриктно да спазваме това, то пак няма да е достатъчно, ако срещу себе си имаме правителства и организации, които злоупотребяват. WannaCry е производна на уязвимост в Windows, която Агенцията за сигурност на Съединените щати е открила, но вместо да уведоми за това Microsoft, неясно колко време се е възползвала от нея, за да прониква в чужди системи и да проследява и краде данни от тях. Кракерска групировка ги открадна пък от тях преди време, публикува присвоения арсенал – и ето – бързо се намери някой, който да го използва с користна цел.

Такива случки тепърва ще зачестяват. И ако правителствата ни играят срещу нас… няма да е никак весело.

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

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

Най-лошият пример са старите телефони и таблети с Android, за които Google няма механизъм да принуди производителите им да се грижат по-добре и по-адекватно и продължително за тях.

Огледайте се около себе си и вижте колко ваши познати използват много стари устройства.

За кошмарната сигурност на доста IoT джаджи за автоматизация и управление на умни домове и производства дори не ми се отваря тема.

Но като споменах Google… Необходим ни е нов, променен Интернет!

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

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

Подхлъзвайки ни да ползваме „безплатните“ услуги на Google, Facebook и подобните им… те ни обричат на зависимост и контрол. Елегантно се оказва, че данните, които им поверяваме, не са наши данни, а техни. Те ги използват, за да ни профилират, да отгатват интересите ни, темите към които имаме чувствителност, манипулират ни с тях, продават ги, за да ни манипулират и други. Това е цената на „безплатното“.

Както казва Aral Balkan (вече два пъти беше и в България) – това не е data farming, а people farming, защото нашите данни това сме самите ние. А пренебрежителното махване с ръка, че няма какво да крием, е престъпление към общността ни (пак да акцентирам) в нашия свързан свят, защото пък както казва Edward Snowden: „Да нямаш нужда от лична неприкосновеност, защото нямало какво да криеш, е като да нямаш нужда от право на свободна воля, защото няма какво да кажеш.“

Права = Сила

И борбата за тях (трябва да) е непрекъсната.

  • Трябва да си върнем контрола върху дигиталното ни Аз в Интернет. Да редуцираме до минимум използването на безплатни услуги, които събират данни.
  • Да приемем грижата за сигурността на софтуера и устройствата ни като част от личната ни хигиена.
  • Да възпитаваме чувствителност към манипулациите в Интернет и особено към фалшивите новини и некачествената журналистика.
  • Да настояваме за прозрачност от правителствата, организациите, политиците и корпорациите.
  • Да предпочитаме децентрализирани или фокусирани (в едно нещо) услуги, вместо глобални конгломерати със стремеж към монопол в колкото се може повече теми (напр. ProtonMail или FastMail вместо Gmail, собствени блогове вместо Facebook и др.)
  • Да използваме по-малки, децентрализирани платформи (медийни, за услуги, за комуникация) и да ги подкрепяме финансово, а когато можем – и да стартираме собствени такива.
  • Да надвиваме индивидуализма си и да се подкрепяме взаимно в общността си.
  • Да обучаваме и призоваваме повече хора да правят същото…

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

Снимка: Markus Spiske

Съд на ЕС: Uber u юберизацията

Post Syndicated from nellyo original https://nellyo.wordpress.com/2017/05/15/uber/

 Стана известно заключението на Генералния адвокат Szpunar   по делото C‑434/15  Asociación Profesional Elite Taxi срещу Uber Systems Spain, SL.

Uber е наименованието на електронна платформа, разработена от дружеството Uber Technologies Inc. със седалище в Сан Франциско (Съединени щати). В Европейския съюз платформата Uber се поддържа от Uber BV, учредено по нидерландското право дружество, което е дъщерно на Uber Technologies. Платформата позволява посредством смартфон с инсталирано приложение Uber да се заяви услуга по градски превоз в обслужваните градове. Приложението разпознава местонахождението на ползвателя и открива намиращите се в близост свободни шофьори. Когато шофьор приеме да извърши превоза, приложението уведомява ползвателя, като показва профила на шофьора, както и приблизителна цена на пътуването до посочената от ползвателя дестинация. След извършване на превоза сумата автоматично се изтегля от банковата карта, която ползвателят е длъжен да посочи при регистрация в приложението. Приложението има също възможност за оценяване — както пътниците могат да оценяват шофьорите, така и шофьорите могат да оценяват пътниците. Средна оценка под определен праг може да доведе до отстраняване от платформата.

Предмет на главното производство:

услугата, известна като UberPop, в рамките на която физически лица, непрофесионални шофьори, осигуряват превоз на пътници със собствените си превозни средства.   Тарифите се определят от оператора на платформата въз основа на разстоянието и продължителността на курса. Те варират в зависимост от търсенето в даден момент, така че в часове на голямо натоварване цената на курса може неколкократно да надвиши базовите тарифи. Приложението изчислява цената на курса, която автоматично се изтегля от оператора на платформата, след което той задържа част от нея като комисиона, обикновено между 20 % и 25 %, и изплаща останалата част на шофьора.

Тълкуването, което се иска от Съда, се отнася единствено до правното положение на Uber от гледна точка на правото на Съюза, за да може да се определи дали и в каква степен това право е приложимо по отношение на развиваната от него дейност:  дали евентуалното регламентиране на условията за функциониране на Uber трябва да бъде съобразено с изискванията на правото на Съюза и, на първо място, с това за свободно предоставяне на услуги, или регламентирането на тези условия попада в обхвата на споделената компетентност на Европейския съюз и на държавите  в областта на местния превоз.

Спорът:

тъй като   нито Uber Spain, нито собствениците, нито шофьорите на съответните превозни средства имат лицензите и разрешенията, предвидени в Наредбата за таксиметровите превози на   Барселона, професионалната организация на таксиметровите шофьори предявява иск срещу Uber Systems Spain,   за нелоялна конкуренция,  да му бъде разпоредено да преустанови нелоялното си поведение, състоящо се в  предоставяне на услуги по извършване на резервации по заявка чрез мобилни устройства и по интернет,  чрез цифровата платформа Uber в Испания, както и да му бъде забранено да извършва тази дейност в бъдеще.

Преюдициални въпроси, поставени от Търговския съд – Барселона (общо са четири):

 Следва ли — доколкото член 2, параграф 2, буква г) от [Директива 2006/123] изключва от приложното поле на тази директива транспортните дейности — извършваната от ответника с цел печалба дейност по посредничество между собственика на превозно средство и лицето, нуждаещо се от превоз в рамките на определен град, при която се управляват информационни технологии — интерфейс и софтуерно приложение („смартфони и технологична платформа“ според ответника) — позволяващи на посочените лица да влязат във връзка едно с друго, да се счита просто за транспортна дейност, или тази дейност следва да се разглежда като електронна посредническа услуга, тоест като услуга на информационното общество по смисъла на член 1, параграф 2 от [Директива 98/34]?

При определяне на правното естество на тази дейност може ли последната да се счита отчасти за услуга на информационното общество или е транспортна услуга?

Заключението:

Обичайно Uber се определя като предприятие (или платформа) от т.нар. „икономика на споделянето“. То със сигурност не може да се счита за платформа за споделено пътуване – защото  шофьори предлагат на пътници услуга по превоз до избрана от пътника дестинация и за това получават възнаграждение в размер, който значително надхвърля простото възстановяване на направените разходи. Следователно става дума за класическа услуга по превоз.

Член 2, буква a) от Директива 2000/31/ЕО (Директива за електронната търговия) следва да се тълкува в смисъл, че услуга, състояща се в свързване чрез софтуер за мобилни телефони на потенциални пътници с шофьори, предлагащи индивидуален градски превоз по заявка, не представлява услуга на информационното общество при положение че доставчикът на услугата упражнява контрол върху основните условия на извършвания в тази връзка превоз, по-специално върху цената му.

Това е транспортна услуга.

Filed under: Digital, EU Law, Media Law Tagged: съд на ес

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

Post Syndicated from nellyo original https://nellyo.wordpress.com/2017/05/15/open_soft/

Quartz.com  информира за решение по делото  Artifex v. Hancom в Северна Калифорния, отнасящо се до използването на лицензиран софтуер с отворен код. Компанията – носител на права Artiflex съди компанията Hancom за нарушаване на условията на лиценза.

Решението на федералния съд  е в полза на Artiflex,  но медиите акцентират върху следния факт: според съда  нарушаването на изискванията на лизенза се третира като нарушаване на условията на договор.

Изглежда очевидно, но е в полза на яснотата.

 

Filed under: Digital, US Law

Тръмп, антилиберализмът и психологията

Post Syndicated from Григор original http://www.gatchev.info/blog/?p=2027

Напоследък ми стана навик да крада статии оттук-оттам из Нета. Ами какво да правя – навъдиха се хора, които казват каквото мисля по-добре от мен! 🙂 Което е чудесно.

Лошото е, че публикувалият ги сайт понякога умира и мислите им изчезват. Затова искам тяхно копие да има тук, в скромния ми блог. Докато го има.

Сега е модерно да се пише за Тръмп. Само че тази статия на Даниел Смилов в портала „Култура“ е не за личността Тръмп, а за антилиберализма като цяло.

(Тя обръща внимание и на една важна фигура, която не е много позната на българина. Ако руската царица Александра си е имала Распутин, Хитлер си е имал Гьобелс, а Путин си има Дугин, то Тръмп си има Стив Банън. Единствената разлика между последния и първите трима е, че Банън има много повече власт и влияние от тях. Към момента той реално е вторият по сила човек в света, при положение, че Тръмп е първият.)

Антилиберализмът има много отрочета. Нацизмът, фашизмът, комунизмът, русизмът… Неговата кауза е подмяната на свободата с робство, превръщането на невежеството в сила и представянето на войната за мир – накратко, „разделяй и владей“. Искате ли тази кауза да се сбъдне?

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

Да, знам, че не ви се занимава с политика. Ѝ на мен не ми се занимава. Пишат ми се разкази, правят ми се разни софтуери, грижи ми се за здравето на хората… Но училищните спомени ме подсещат, че ако на теб не ти се занимава с побойника на класа, това само засилва неговото желание да се занимава с теб. И да си затвориш очите води само до това да те бият както си със затворени очи.

Не си затваряйте очите, моля ви. После боли много и за дълго.

—-

Модерно е днес човек да е антилиберал и мнозина станаха такива. Тяхното всемирно вдъхновение е Доналд Тръмп – първият американски президент, който спечели искрените симпатии на БСП. Путин, разбира се, е фърст за Корнелия Нинова и средния социалист, но и Доналд вече не е секънд спрямо никой! А и как да е втори, когато не слиза от заглавията на всички публикации, включително за съжаление и на тази.

Либерализмът пък е осъждан като причина за повечето “бедствия” на планетата – от глобализацията, финансовия капитализъм, мултикултурализма, тероризма, бежанците, политическата коректност та чак до Иван Костов. Всъщност (малко парадоксално) самият Иван Костов също наскоро осъди либерализма.

Пък и какво ли толкова е дал либерализмът на света?!

Е, конституционализмът, разделението на властите, правата на човека, свободата на пазара, антидискриминационното законодателство и международният правов ред сигурно трябва да му бъдат приписани, защото Лок, Монтескьо, Мадисън, Кант, Адам Смит, Токвил, Бентъм, Констан, Келзен минават за либерали в образована среда. Но други приноси либерализмът едва ли има.

Като изключим може би и държавата на благоденствието (все пак) заради Джон Мейнард Кейнс, Джон Роулз и Роналд Дуоркин. И за да не се обидят либертарианците – трябва да се добавят и приносите на Хайек към икономическата теория и идеите за правова държава. Но друго няма. (Ако не броим десегрегацията и движението за граждански права през 60-те години – Мартин Лутър Кинг, Ърл Уорън. Както и критиката на тоталитаризма на Попър и Аренд).

Съвременният антилиберализъм не отрича тези постижения, а само логичните им следствия. Ако твърдите, че свободата на търговията и конкуренцията водят до всеобщ просперитет (както Адам Смит), трябва да искате да падат търговските бариери, както и затрудненията за движението на хора, стоки и капитали. Но Тръмп се оттегли от търговските споразумения с Канада и Азия, и планира да строи стена с Мексико. Ако твърдите, че всички имат равни права без оглед на религия и етнос, не поставяте специални ограничения за мюсюлманите. Но Тръмп направи точно това.

Ако смятате, че хора с различна култура могат да живеят мирно и цивилизовано в едно и също общество, трябва да следвате и някакви правила на уважително отношение към всяка една общност. За Тръмп това е вредна “политическа коректност”, обаче. И накрая, ако сте наистина загрижен за съдбата на работническата класа, трябва да й гарантирате максимално качествени публични услуги и достъп до работни места с генерирани от държавата програми. Това е препоръчвал Кейнс, но Тръмп сваля данъците и тръгва на поход срещу общественото здравно осигуряване и образование.

От логика към психология

Антилиберализмът не залага на логиката. Неговата сила е в психологията. Томас Хобс е първият модерен автор, който е осъзнал политическото значение на страха и параноята: свободата може да носи рискове и опасности. Свободният човек е методологически егоист, който в преследване на интереса си неизбежно (както Хобс е смятал) влиза във война с другите. Война на всеки срещу всеки. За да не се стига до нея, е необходима чудовищно силна, безконтролна власт, от която всеки да изпитва страх. Необходим е Левиатан, Путин или Ердоган. Необходим е някой с нервен пръст върху бутона за ядрен Армагедон, от когото останалият свят да трепери.

Съвременният антилиберализъм не спори с Лок, Монтескьо или Кейнс, а просто цели да убеди психологически населението, че без антилиберален Левиатан войната на всеки срещу всеки ще е неизбежна. Без лидери от типа на Орбан, Льо Пен или Ангел Джамбазки светът ще се свлече в едно “естествено състояние” на хаос и беззаконие, в който животът по Хобс ще е “solitary, poor, nasty, brutish and short” (самотен, беден, гаден, жесток и кратък).
Съвременният антилиберализъм е систематична, методологическа и научно-обоснована психологическа атака срещу населението, която цели да убеди хората, че живеят в света на Хобс. Те трябва да започнат да виждат всеки като потенциална опасност и всяка свобода – като носеща прекалено висок риск. Това се постига, като към нея се прикача въздействащ образ, вдъхващ страх и трепет:

– свобода на движение = “цунами от бежанци”, “нашественици”, “завоеватели”;

– религиозна свобода = “терористи”, “кървави атентати”, зловещ камуфлаж под форма на бурки;

– свобода на търговията = обезлюдени региони, ръждясали предприятия;

– етническа толерантност = “циганска престъпност”

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

– те са сами пред опасностите и трябва да мислят първо за себе си (America first!);

– институциите, които ги защитават, са безсилни (овладени са от някакви лигави либерали, например, които непрекъснато се провалят);

– не бива да разчитат на добронамереност и сътрудничество от никого: нито в държавата, а особено в чужбина (НАТО и ЕС са отживелица);

– трябва да се справят САМИ, като се самовъоръжават и придържат към най-близките – семейството, единоверците, нацията (стена, капиталът обратно от Китай, по-мощни ядрени ракети и другите да се оправят).

Хора с такива нагласи вече живеят в света на Хобс.

Психология и технология

Българският антилиберализъм е първичен, любителски и подражателен. В световен мащаб обаче психологическата атака срещу хората се води професионално, по научните принципи на пропагандната война и на съвременните технологии. Както стана ясно, зад Брекзит и зад Тръмп стои сериозна технологична експертиза, която профилира психологически населението и е в състояние да таргетира почти всеки избирател поотделно в зависимост от неговия психологически профил. Това става чрез Big Data компании, които филтрират огромен обем данни, събрани от бази на фирми, обществени институции или социалните мрежи.

Cambridge Analytica например е компанията, която е помагала на Тед Круз, Тръмп и привържениците на Брекзит и която твърди, че е профилирала (най-вече психологически) американските избиратели – всички 220 милиона от тях![i] Изработени са били 32 психологически профила[ii]с цел по-ефективна кампания: ако човек е по-невротичен например, пращат му картинки на битова престъпност – кражба с взлом. Ако е по-спокоен и склонен към съгласие – семейна снимка на баща и дъщеря на лов за патици. Изводът е един обаче – гласувайте за кандидата, който подкрепя оръжията.

Ако сте по-скоро избирател на Клинтън, тогава психологическата задача е пък да не отидете да гласувате. Като например ви убедят, че тя е отвратителна (nasty woman, crook). Експерти на споменатата компания твърдят, че почти няма съобщение и послание от страна на Тръмп, което да не е било подплатено с данни, генерирани от профилирането.

Стийв Банън – човекът, който в момента е най-влиятелен в Белия дом по мнението на мнозина, – е член на борда на Cambridge Analytica.

Съветската школа е традиционно много силна в областта на пропагандната психологическата война, която в модерната си версия се нарича “хибридна”. Макар и не толкова high tech, и съветската школа е допринесла с прийоми, които са много ефективни. Като техниката на “гнилата сельодка” например, известна от учебниците от 60-те години: подбирате грозна лъжа за опонента и я тиражирате масово. Той е принуден да се оправдава, да се обяснява и попада в неизгодна позиция. Или пък тактиката “60:40” за пропагандна борба в не съвсем гостоприемна среда (в близката чужбина да речем): говорите 60% за НАТО и ЕС и 40% за Русия и санкциите срещу нея. Проевропейците се объркват, про-евразийците се обнадеждават.[iii]

Начало на какво?

Светът на Хобс е нелицеприятен. И той трудно може да бъде обичан. Защо е тогава тази антилиберална фиксация върху насаждането на хобсианска психология?

Хана Аренд отбелязва, че всеки тоталитаризъм започва с неприязън към всичко, което имаш[iv] – в нашия случай, демокрацията, свободите, ЕС, НАТО “Нещата трябва да се променят! Не могат да останат такива!”. Антилиберализмът винаги е насаждал подобни емоции на неприязън. Затова и Карл Льовенщайн нарича фашизмът “емоционализъм”.

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

Що за състояние е това? От една страна, либерализмът започва да се политизира и от обща идеология на всички партии в демокрацията, става разделителна линия. От другата страна стоят антилибералите, които не го отричат съдържателно, а “просто” искат да го суспендират временно заради опасности от най-различен характер: от “бежански цунамита” до “обезлюдяване и смърт на нацията”.

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

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

___________

[i] Hannes Grassegger and Mikael Krogerus, The Data that Turned the World Upside Down https://motherboard.vice.com/en_us/article/how-our-likes-helped-trump-win

[ii] Профилирането става на базата на разделянето на хората по пет основни критерия: откритост към нови преживявания; съвестност при изпълнение на задача; интровертност; съгласие; невротичност. От английските наименования на тези критерии е и съкращението OCEAN, което ги обобщава.

[iii] В.Яковлев, Методы боевой спецпропаганды http://aillarionov.livejournal.com/846809.html

[iv] Hannah Arendt: From an Interview http://www.nybooks.com/articles/1978/10/26/hannah-arendt-from-an-interview/

2016-12-29 33c3 – малко лекции

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3332

Тази година гледам 33c3 от вкъщи, и май гледам по-малко лекции. Ето какво съм гледал до тук:
(обработените лекции са на media.ccc.de, ако ги няма тук може да се търсят на relive)

What could possibly go wrong with <insert x86 instruction here>? беше описание и демонстрационен код как може да чрез ползване на кеша (flush-ване, напълване и т.н.) да се комуникира между несвързани процеси или дори виртуални машини, които се schedule-ват на същия процесор (т.е. и между core-ове, които споделят кеш).

How Do I Crack Satellite and Cable Pay TV? беше за reverse-ване на чиповете, които декриптират сателитна телевизия, прилично интересно.

Building a high throughput low-latency PCIe based SDR са хора, които разработват software-defined radio на mini PCIe карта, което може да се използва за всякакви по-сериозни цели (има включително синхронизация на часовника от GPS), като за момента са до средата (не са си постигнали целта за скорост на устройството), и ако постигнат прилична цена, това може да се окаже идеалното устройство за правене на софтуерни GSM/LTE неща.

Shut Up and Take My Money! беше за как са счупили на някакви хора мобилното приложение, което се занимава с потребителски транзакции. Звучеше като да трябва да затворят тия, дето са го мислили/писали.

What’s It Doing Now? беше доста интересна лекция за автопилоти по самолети, как тоя тип автоматика трябва да се следи внимателно и като цяло, че нещата не са толкова автомагически, колкото ни се иска. Лекциите за самолетни проблеми винаги са интересни 🙂

Nintendo Hacking 2016 описа какво са счупили по разлините nintendo устройства, exploit-и по boot loader-и и всякакви такива неща. Това беше една от лекциите, в която се споменаваше техниката с glitching – да се подаде по-нисък волтаж за малко, така че дадена инструкция да се намаже и да има шанс да се JMP-не някъде в наш код в някакъв момент, така че да можем да dump-нем нещо.

Where in the World Is Carmen Sandiego? беше лекция за чупенето на системите за резервиране на самолетни билети и като цяло пътувания. Силно тъжно, казаха си в началото, че няма много хакване в лекцията, понеже нещата са твърде счупени и лесни за атака. Кратък съвет – не си публикувайте снимка на boarding pass-а.

You can -j REJECT but you can not hide: Global scanning of the IPv6 Internet е разработка с DNS за сравнително лесно сканиране на всички съществуващи IPv6 DNS PTR записи, та да се намерят повечето съществуващи сървъри. Доста идейно и вероятно ще го тествам някъде 🙂

Tapping into the core описва интересно устройство за дебъгване/слушане на intel-ски процесори през USB и вероятно и мрежа, т.е. дебъгер, който може директно да пипа процесора. Звучи многообещаващо (лекцията гледаше основно на това като начин за правене на rootkit-ове).

Recount 2016: An Uninvited Security Audit of the U.S. Presidential Election беше много празни приказки за изборите в щатите, за пре-преброяване, в което не са открили проблем, и като цяло за счупената им система.

The Untold Story of Edward Snowden’s Escape from Hong Kong разказваше за двете седмици на Edward Snowden в Хонг Конг и бежанците, при които са го крили, преди да отлети, заедно с призив за fundraiser за тях.

State of Internet Censorship 2016 беше нормалното описание, заедно с проектите, чрез които се изследва. В общи линии изводът беше, че вече цензурирането е узаконено почти навсякъде, където се случва и става все по-често явление някоя държава да си спре internet-а за малко, около разни събития.

Million Dollar Dissidents and the Rest of Us описа какви таргетирани методи се използват от различни правителства (и кой им ги продава и учи) за hack-ване и вадене на данни от всякакви устройства на неприятни за тях хора. Нещата са прилично напреднали и е все по-ясно как повечето ни софтуер не става за secure дейности.

On Smart Cities, Smart Energy, And Dumb Security беше за колко са счупени “smart” електромерите и как сигурността на тия неща никой не и обръща сериозно внимание.

Dissecting modern (3G/4G) cellular modems беше интересно описание на съществуващ хардуер, който може да се използва за 3g/4g модем (който се използва в единия iPhone даже), и който накрая се оказа, че търкаля android/linux в себе си (т.е. може спокойно да се каже, че в iPhone 6 (ако не се лъжа) има един linux/adroid).

Тия дни ще догледам още някакви от записи и каквото остава утре и ще пиша пак. Много ми се иска да изгледам повечето неща за random генераторите и лекцията за HDMI.

2016-11-23 Интерком и телефони на OpenFest 2016

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3329

Интерком

Видео екипът има нужда от начин, по който да си комуникира между операторския пулт и камерите, в общи линии еднопосочно (т.е. режисьора да може да каже "камера 1, мръдни малко в ляво"). Предишни години за целта се употребяваха различни неща, най-често някаква част от комплектите безжични микрофони (един предавател и няколко приемника). Тази година микрофоните ни бяха кът, за това сглобих едно просто решение от ffmpeg и raspberry pi-та:

На контролния лаптоп закачахме какъвто-и-да-е-микрофон (в случая – едни jabra headset-и, които бяха под ръка) и с ffmpeg ги бълвахме по multicast по мрежата:

ffmpeg  \
    -fflags nobuffer \
    -f alsa -i hw:0,0 \
    -acodec aac -tune zerolatency -ac 1 -b:a 128k \
    -f mpegts 'udp://227.0.9.1:9000?pkt_size=128'

Скриптът взима звукът от alsa-та от микрофона (в случая hw:0,0) и ги пуска на 227.0.9.1 с малък размер на пакета, за по-ниска латентност. Ако трябва да се пусне под windows, ‘-f alsa -i hw:0,0’ се сменя с нещо като ‘-f dshow -i audio="Microphone"’ (като "Microphone" трябва да се погледне как точно се казва, понеже windows-а странно кръщава нещата, Любо беше намерил как точно).

На няколкото raspberry pi-та до камерите се пускаше следния скрипт:

while /bin/true; do
ffmpeg  \
    -fflags nobuffer -probesize 32 -i \
'udp://227.0.9.1:9000?timeout=1000000&fifo_size=100&overrun_nonfatal=0' \
    -f alsa hw:0,0
done

Това слуша на multicast-а и play-ва каквото му дойде, като има timeout от 1 секунда без никакви данни, за да гръмне и да се рестартира. Така може да издържи на всякакви мрежови проблеми и в общи линии гарантира възстановяване до 1 секунда, след като се оправи мрежата.

Това като цяло е доста хакаво и сглобено в последния момент. При мрежата, която имахме, за догодина спокойно ffmpeg-а може да бъде заменен с един asterisk с конференция и телефони, които се закачат в нея, така включително ще можем да смъкнем още латентността (на този беше около 300-400ms) и да направим двупосочен интеркома (въпреки че хората не звучаха много въодушевени). Другото, което сравнително лесно трябва да може да се добави е noise reduction, понеже доколкото знам имаше някакъв, или от микрофона и усилването му, или от самите pi-та (като за второто няма да се оправим само софтуерно).

Телефони

Кодът е качен в github, и е съвсем съвсем тривиален:

  • С един php модул (phirehose) се дърпат tweet-ове по признак и се пишат във файлове;
  • Друг скрипт проверява на какъв език са, с espeak ги обръща в говор и ги дава на asterisk-а чрез call file да ги изговори на някого.

Цялото нещо отне чисто час-два да се напише и тества. Изглежда бая грозно (и може да седна да го оправя), но върши доста прилична работа и може да се използва като основа за всякакви подобни неща.

На самия OpenFest реализацията беше, че имаше наслагани 3 стари черни телефона на различни места, които бяха вързани през grandstream ATA устройства (понеже бяха единствените, които поддържаха импулсно набиране) и когато дойдеше tweet с #openfest2016telefon, asterisk-а звънеше на трите едновременно и който пръв вдигнеше го чуваше.

Архив на всичките неща, дето са казани по телефона може да се намери тук.

2016-11-22 Мрежата на OpenFest 2016

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3328

Нямахме голяма промяна от миналата година. Разликите бяха следните:

  • Тази година повечето switch-ове в опорната мрежа бяха tplink SG3210, имахме само 2 cisco-та. tplink-овете са по-тихи, по-малки, (буквално) железни и стават за странни deployment-и. Ако имаха и PoE, щяха да са направо невероятни.
  • Имахме още един switch, за NOC-а в мазето (който беше и единствения leaf в мрежата). Тази година стаичката за VOC беше оставена само на видео екипа, а мрежовия се ширеше в едно мазе.
  • Понеже имахме две зали за workshop-и, имахме малко повече user-ски switch-ове, в общи линии от кол и въже;

Ето тазгодишната схема.

С техника ни услужиха пак Светла от netissat (нейния switch вече 3-4 години е в опорната ни мрежа), Стефан Леков (noc switch-а и резервния сървър) и digger (два microtik-а за workshop switch-ове). Останалото беше от мен и initLab.

Голяма част от мрежовия setup беше организирана през github-ски issue-та, та лесно може да видите какво ни се е случвало по време на подготовката.

Тази година имаше повече наши "клиенти" на мрежата – интеркомът на залите беше по IP и имаше пръснати разни странни телефони, които бяха из мрежата. Като цяло wired мрежата не изглежда да се ползва от посетителите, но все повече се оказва полезна за нас.

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

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

За uplink тази година ползвахме същата оптика на NetX, но с гигабитови конвертори и 300mbps, та не усетихме никакъв проблем със свързаността.

Използвахме и същия DL380G5 за сървър/router, като тази година Леков пусна още един такъв като backup. Пак го използвахме да encode-ва 1080p stream-а от зала България, въпреки че май тая година нормалния ни encoder щеше да се справи (за една година софтуерът е понапреднал).

Тази година се наложи да променим номерата на VLAN-ите, понеже една част от AP-тата (едни големи linksys-и) не поддържаха VLAN tag-ове над 64. Съответно адресният ни план изглеждаше по следния начин:

IPv4

id  range           name
10  185.108.141.104/30  external
20  10.20.0.0/24        mgmt
21  10.21.0.0/22        wired
22  10.22.0.0/22        wireless
23  10.23.0.0/24        video
24  10.24.0.0/24        overflow

IPv6

10  2a01:b760:1:2::/120
21  2a01:b760:2:4::/62
22  2a01:b760:2:5::/62

По firewall-а и forced forwarding-а нямахме разлика – пак пуснахме proxy_arp_pvlan за потребителските VLAN-и, филтрирахме 25ти порт и не се допускаше трафик до management/video/overflow VLAN-ите от нормални потребители.

Имахме пълна IPv6 поддръжка в потребителските VLAN-и (wired и wireless), като тази година нямахме проблемът с изчезващият IPv6 за random хора – явно най-накрая странният bug е бил ремонтиран.

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

2016-11-21 VoctoMix на OpenFest

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3327

Ситуация

За OpenFest имахме две кутии от тези от FOSDEM, които в общи линии ни даваха възможност да включим почти произволен източник на видео в тях и да го изкараме от мрежата. Те вървят в комплект от две – едната се използва, за да се включи в нея лектора, другата – за камерата. С тези две кутии и малко софтуерно видео миксиране може да се направи много лесно добър setup за видео запис на една зала.

Схемата на setup-а може да се види в github, като лесно може да се види, че е доста по-прост от другите, които използваме. Негов вариант мислим да използваме за FOSDEM 2017 (което може да се наблюдава в repo-тата в github – issue-та, wiki и всякакви работи).

VoctoMix

Липсващият компонент в цялата работа беше софтуерен миксер, който да ползваме. Пробвахме различни – първо един ffmpeg с малко patch-ове (чупи се твърде лесно), после OBS (който leak-ва памет като гламав и не е особено стабилен), и накрая се спряхме на voctomix, който е разработка на CCC и в общи линии е прекрасен хакерски инструмент, който работи по следния начин:

  • Има входове на TCP портове за следните неща:
    • Видео потоци (камери, лекторски лаптоп)
    • Поддържащи потоци (фон, какво да се пуска докато не сме live и т.н.)
    • Команди за разни действия (смяна на картина и т.н.)
  • Изходи, пак по TCP, за
    • Видео поток
    • Аудио поток
    • Копие на всеки входящ stream
    • preview на потоците и изходящата картина

Софтуерът в общи линии просто switch-ва между няколко неща (някоя картина на fullscreen, picture-in-picture в някакви варианти и т.н.) и вади поток, който може да се използва. Има отделно приложение (voctogui) което се закача към него и се използва като конзола – може да показва preview на потоците и да подава команди към основния процес (voctocore).

Как го използвахме

Излъчване от кутиите

Като за начало, изкарването на поток от кутиите става с ffmpeg/avconv, по UDP, по multicast. UDP, понеже е по-издръжливо на някакви random прекъсвания и няма да създаде десинхронизация, multicast, за да може да се гледа от повече от едно място (например за проверка какво точно излиза). Командата изглежда по следния начин:

# these are needed, because the default socket size is too small.
echo 81921024 > /proc/sys/net/core/wmem_max
echo 81921024 > /proc/sys/net/core/wmem_default

echo 81921024 > /proc/sys/net/core/rmem_max
echo 81921024 > /proc/sys/net/core/rmem_default

/usr/local/bin/bmd-streamer -f /usr/lib/firmware -k 1000 -S hdmi -F 0 | \
 ffmpeg -i - -c copy -f mpegts 'udp://227.0.0.1:9000&overrun_nonfatal=1&buffer_size=81921024&fifo_size=178481'

Интересното тук са параметрите на UDP stream-а – гигантски буфери (които и по-горе се казват на kernel-а), така че каквото и да се случва, да не се бави писането в буфера. Като цяло не е проблем да се губят пакети, но е доста лошо да се получава забавяне в целия stream, понеже води до десинхронизация. (да се губят пакети също е лошо, и за целта работя по нещо, което да вкарва forward error correction в тоя поток, един добър човек е написал patch за ffmpeg, реализиращ pro-mpeg, който има точно такава функционалност, надявам се да успеем да го ползваме на FOSDEM)

Приемане във voctomix

Самият voctocore приема потоците точно във видът, в който е конфигуриран (в нашия случай 1280×720, 30fps, audio в pcm_s16le на 44100hz), в MKV контейнер. За целта скриптовете, които го подават изглеждат ето така:

#/bin/sh
confdir="`dirname "$0"`/../"
. $confdir/default-config.sh
if [ -f $confdir/config.sh ]; then
    . $confdir/config.sh
fi


ffmpeg -y -nostdin \
    -i 'udp://227.0.0.1:9000&overrun_nonfatal=1&buffer_size=81921024&fifo_size=178481' \
    -ac 2 \
    -filter_complex "
        [0:v] scale=$WIDTH:$HEIGHT,fps=$FRAMERATE,setdar=16/9,setsar=1 [v] ;
        [0:a] aresample=$AUDIORATE [a]
    " \
    -map "[v]" -map "[a]" \
    -pix_fmt yuv420p \
    -c:v rawvideo \
    -c:a pcm_s16le \
    -f matroska \
    tcp://localhost:10000

Това в общи линии казва "вземи udp stream-а, scale-ни го до колкото искаме, сгъни пикселите и аспекта да са точно каквито ни трябват, и го прати като mkv на порт 10000". Сгъването на пикселите и аспекта (setsar, setdar) се налага основно когато не може да се промени изхода на камерата и идва в нещо странно като 1920×1088, което води до малко по-различна форма на пикселите.

За да работи цялото нещо, имаме два такива скрипта (по един за box), както и един подобен, който просто loop-ва едно PNG, което играе ролята на фон. В оригиналните скриптове хората са използвали видео за фон на picture-in-picture, но това е по-объркващо за гледащите и не го ползваме.

Излъчване и запис при voctomix

Излъчването и записът са в общи линии много подобни скриптове, като ще покажа само този, който праща до restreamer-а:

#/bin/sh
ffmpeg -y -nostdin \
    -i tcp://localhost:15000 \
    -threads:0 0 \
    -aspect 16:9 \
    -c:v libx264 \
    -maxrate:v:0 2000k -bufsize:v:0 8192k \
    -pix_fmt:0 yuv420p -profile:v:0 main -b:v 512k \
    -preset:v:0 ultrafast \
    \
    -ac 1 -c:a libfdk_aac -b:a 96k -ar 44100 \
    -map 0:v \
    -map 0:a -filter:a:0 pan=mono:c0=FL \
    -ac:a:2 2 \
    \
    -y -f flv rtmp://10.23.0.1:1935/st/STREAM

(скриптът е примерен, понеже доработвах след това нещата)

Като цяло, просто се взимат raw данните от порт 15000, encode-ват се до H.264 и се пращат до сървъра. По същият начин може да се обръщат във WEBM и засилват, но той иска много повече процесорно време и не сме стигнали до там, че да го ползваме.

Екстри за voctomix

Нещо, което не включихме на OpenFest, но ще има на FOSDEM е една дребна доработка, която позволява с много малко ресурси хора отдалечено да контролират voctomix-а. По принцип voctogui не е лек процес и има много сериозни мрежови изисквания, ако не се стартира локално (от порядъка на 1Gbps само за него), но позволява всякакви ужасяващи неща с малко дописване. С един прост скрипт, който прави screenshot веднъж в секунда, и съвсем прост друг, който подава команди ще имаме начин определени хора да имат контрол върху излъчването.

Също така нещо, което ползвахме донякъде на OpenFest за monitoring на stream-а е един друг скрипт с mpv, който взима списък URL-та и някакви имена към тях и ги пуска в отделни подредени един до друг прозорци на екрана, като за всеки overlay-ва един bar с нивото на звука, така че да може да се вижда дали е ок (понеже не е практически възможно да се слушат няколко зали едновременно). Проблемът му е, че се иска бая процесорно време, за да се декодират повечето потоци и един T420 с i7 процесор се озорваше с 6те потока от феста. Как изглеждаше екрана може да видите тук.

Опериране

Работата с voctomix не е сложна, но за момента пълна с неща, които имат да се свършат. Ето как изглежда (засега, работим по автоматизация) процесът на стартиране:

  • voctocore
  • voctogui
  • скриптове за приемане от камери (cam1.sh, grab.sh)
  • скрипт за генериране на фон
  • скрипт за stream-ване
  • запис (record.sh)

След което от voctogui при нужда се сменят различните картини. Като цяло е доста по-просто за разбиране от по-големите setup-и с конвертори и т.н., но и с по-малко функционалности.

Доколко добре работи?

Работи прекрасно, въпреки че се опитваме да открием един бъг с забавяне на audio-то, който се появява в някакъв момент. Започвам да си мисля, че има някакъв проблем със самия лаптоп, с който правим миксирането.

Какво още можем да искаме?

Хрумнаха ни няколко екстри, които да добавим, така че да стигнем функционалността на хардуерния setup:

  • Начин да излъчваме екрана за проектора от при нас. Това ще иска някаква доработка, за да смъкнем латентността на цялото нещо под 100ms, понеже иначе ще е доста забележимо (представете си как лектора прави нещо и проекторът се променя след 5 секунди). Единият от вариантите, който ни хрумна е проекторът да е вързан на едно pi и то директно да може да избира кой multicast да гледа (някоя камера, лаптопа на лектора или нещо трето).
  • Overlay надписи по време на лекцията – трябва да видим какво има да се пипне още, мисля, че има някаква такава функционалност (или може да ги сложим във фона).
  • По-добра синхронизация на различните потоци – ако работим с няколко камери, може да се окаже проблем, че едната върви с няколко кадъра след другата и трябва да си поиграем със забавяне.

Като цяло, аз съм много щастлив от voctomix и ако успея да убедя екипа, догодина можем много повече да ползваме него, отколкото чисто хардуерния setup (просто ще ни трябват мощни машини, за да се справят с encode-ването, че засега успяваме да работим само на 720p, без да подпалим лаптопа).

Pieter Hintjens

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3322

Изтървал съм, а снощи си мислех да пиша до FOSDEM да ги питам не искат ли да го поканят да говори за един последен път. Явно съм закъснял…

Не мисля, че мога да кажа много за него. Скоро научих за него, от един post на Meredith Patterson, и се зачетох в нещата, които е писал. Рядко ми се е случвало толкова да харесам как и какво пише някой, и за да не губя място, ще остава link-ове към няколко ценни негови неща:

Confessions of a necromancer, за различни негови софтуерни проекти;
A protocol for dying;
Scalable C (която май ще си остане недовършена);

… и изобщо повечето неща, които е писал.

Книгите му могат да се намерят по Amazon или разни други места online.

2016-08-17 java, unicode, emoji

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3316

Чудех се дали да кръстя това “fuck you, Java”.

От някакво време гледаме проблеми с пращането на emoticon-и (ако не знаете, unicode стана пълен с всякакви лайна) – в някакви случаи се намазват, не пристигат вярно и т.н.. При нас през JNI стринговете се пращат до един C/C++ lib, от който всъщност излизат през мрежата от там, като по пътя има малко debug, който да каже какво излиза…

Седя аз и гледам как за намазващото се emoji по някаква причина получавам 6 байта от java-та, вместо 4 (което очаквам). 6-те байта ми изглеждат странно, не наподобяват UTF-8 (поне това, което аз знам), и след някакво четене откривам, че педе^Wпрекрасните хора от java под UTF-8 разбират modified UTF-8, или някакви неща като по-големите unicode символи се кодират така, че нищо друго не може да ги схване, освен друга java. Това обърква SMS центровете по пътя и всякакви други реализации и води до странни за дебъгване проблеми.

Разбира се, това се случва само с определени много много големи emoji-та, които ги има само на определени телефони в стандартните клавиатури, което па води до много фалшиви следи, като например “това са го строшили в android 5 при samsung”, “сървъра ги яде”, “космически излъчвания” и т.н..
(“клавиатурите” в android са софтуерни компоненти, дето явно всеки малоумен производител си пише сам)

Решението поне в нашия случай е в JNI-то да се превежда техния utf8 до нормалния. Ровейки се из интернета, намерих още подобни оплаквания, но явно не всички успяват да се ударят в това, понеже преди това се оказва, че например mysql-ската им база не ползва верния storage type, node.js-а им има само UCS2, който па хептен не може да ги събере и т.н..

Много хора просто казват “не ползвайте тия работи”. Сериозно ми се иска и за мен да беше опция…

Ако е за здраве, искайте второ мнение

Post Syndicated from Боян Юруков original http://yurukov.net/blog/2016/zdrave-vtoro-mnenie/

​Искайте си второ мнение от друг лекар за всяка по-важна терапия и процедура. Винаги.

Един професор в Пловдив доста се почуди какво са предписали в една от най-реномираните детски болници в Германия. Препоръча бавно минаване на различна доза за едното вещество и спиране на друго. Едното лекарство дори не се предписва на деца под 4 години. Пише го в листовката, но не сме от ония дето на своя глава ще решават как да променят предписаното от лекар. Безотговорно е. Затова търсим специалисти.

Преди малко открих също че въпросният производител (да, big pharma) е платил наскоро в извънсъдебно споразумение около милиард долара в щатите, защото са “поощрявали” лекари да предписват едно от лекарствата за ненужни неща, за по-дълъг период, както и на по-малки деца. Известно е, че Германия има същия проблем. Явно сме се натъкнали баш на такъв лекар.

Нищо, вече самолетите са евтини, Пловдив и София са близко.

После се чудим защо всички се шашкат от big pharma. Добре, че в БГ това го няма в такъв мащаб. Повярвайте ми, няма го. Едната причина е, че пазарът на масовите и важни лекарства се контролира от МЗ. Другата според мен е, че едното лекарство (онова дето всъщност не става за 2-годишно дете) струва $400 в щатите, 40€ в Германия и 40 лв. в България.

Навярно затова оценка на пазара показала, че всички пари дадени от т.н. big pharma в България директно на лекари и болници, за реклама и семинари взети заедно са по-малко от бюджета на едната компания продаваща хранителни добавки за същото. Замислете се над това. После защо всички фармацевти и бая лекари бутат “ей тука едно много хубаво природно” дето на семинара в Шварцвалд им казали, че много работи?

Какво? Семинара ти не бил в Шварцвалд, а са те пратили на спа продецури в хотелче в Банско? Еми явно не сте продали достатъчно гранулки в аптеката. Нищо – следващата година навярно.

Ей такива се хранят само заради идиотщни като онази дето видях в последните месеци. Да не започвам с това педиатърът и аптеката в Германия колко пъти се опитаха да сменят лекарство “щото това имали”. Нищо подобно – имат си договор с определен доставчик, а и често софтуер, който “препоръчва” какво да предпишат. Лесно е да се обезвери човек от системата, ако не гледа внимателно и се хваща на бабини дивитини.

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

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

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

Рецепта за бисквитки

Post Syndicated from Илия Горанов original http://9ini.babailiica.com/cookies/

Не става дума за захарни изделия, а за информационни технологии. Терминът е заимстван с директен превод от английския език, където се използва думата cookies (въпреки, че буквалният превод е курабийки, а не бисквитки).

И все пак, каква е целта на бисквитките? Бисквитките представляват порции структурирана информация, която съдържа различни параметри. Те се създават от сървърите, които предоставят достъп до уеб страници. Предава се чрез служебните части на HTTP протокола (т. нар. HTTP headers) – това е трансферен протокол, който се използва от браузърите за обмен на информация със сървърите. Бисквитките са добавени в спецификацията на HTTP протокола във версия 1.0 в началото на 90те години. По това време Интернет не беше толкова развит, колкото е в момента и затова HTTP протоколът има някои специфични особености. Протоколът е базиран на заявки (от клиента) и отговори (от сървъра), като всяка двойка заявка и отговор се правят в отделна връзка (socket) към между клиента и сървъра. Тази схема на работа е изключително удобна, тъй като не изисква постоянна и стабилна връзка с Интернет, тъй като всъщност връзката се използва само за кратък момент. За съжаление, заради тази особеност често HTTP протоколът е наричан state less протокол (протокол без запазване на състоянието). А именно – сървърът няма как да знае, че редица от последователни заявки са изпратени от един и същи клиент. За разлика от IRC, SMTP, FTP и други протоколи създадени през същите години, които отварят една връзка и предават и приемат данни двупосочно. При такива протоколи комуникацията започва с hand shake или аутентикация между участниците в комуникацията, след което и за двете страни е ясно, че докато връзката остава отворена, комуникацията тече с конкретен участник.

За да бъде преодолян този недостатък на протокола, след версия 0.9 (първата версия навлязла в реална експлоатация), във версия 1.0 създават механизма на бисквитките. Кръщават технологията cookies заради приказката на братя Грим за Хенцел и Гретел, които маркират пътя, по който са минали пре тъмната гора, като поръсват трохи. В повечето български преводи в приказката се използват трохи от хляб (bread crumbs) термин, който намира друго място в IT сферата и уеб, но в действителност приказката е германска народна приказка с много различни версии през годините. Сравнението е очевидно – cookies позволяват да се проследи пътя на потребителя в тъмната гора на state less протокола HTTP.

Как работят бисквитките? Бисквитките се създават от сървърите и се изпращат на потребителите. При всяка следваща заявка от потребителя към същия сървър, той трябва да изпраща обратно копие на получените от сървъра бисквитки. По този начин, сървърът получава механизъм по който да проследи потребителя по пътя му, т.е. да знае, когато един и същи потребител е направил поредица от множество, иначе несвързани, заявки.

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

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

И така, бисквитките се създават от сървърите, като данните се изпращат от уеб сървъра заедно с отговора на заявка за достъп до ресурс (например отделна уеб страница, текст, картинка или друг файл). Бисквитката се връща като част от служебната информация на протокола. Когато клиент (клиентският софтуер – браузър) получи отговор от сървър, който съдържа бисквитка, той следва да я обработи. Ако клиентът вече разполага с подобна бисквитка – следва да си обнови информацията за нея, ако не разполага с нея, следва да я създаде. Ако срокът на бисквитката е изтекъл – следва да я унищожи и т.н.

Често се споменава, че бисквитките са малки текстови файлове, които се съхраняват на компютъра на потребителя. Това не винаги е вярно – бисквитките представляваха отделни текстови файлове в ранните версии на някои браузъри (например в Internet Explorer и Netscape Navigator), повечето съвременни браузъри съхраняват бисквитките по различен начин. Например съвременните версии на браузърите Mozilla Firefox и Google Chrome съхранява всички бисквитки в един файл, който представлява sqlite база данни. Подходът с база данни е доста подходящ, тъй като бисквитките представляват структурирана информация, която е удобно да се съхранява в база, а достъпът до информацията е доста по ефективен. Въпреки това, браузърът Microsoft Edge продължава да съхранява бисквитките във вид на текстови файлове в AppData директорията.

Какви параметри съдържат бисквитките, които сървърите изпращат? Всяка бисквитка може да съдържа: име, стойност, домейн, адрес (път), срок на варидност и някои параметри за сигурност (да важат само по https и да бъдат достъпни само от трансфертия протокол, т.е. на не бъдат достъпни за javascript и други приложни слоеве при клиента). Името и стойността са задължителни за всяка бисквитка – те задават името на променливата, в която ще се съхранява информацията и съответната стойност – съхранената информация.

Домейнът е основната част от адреса на интернет сайта, който изпраща бисквитката – частта, която идентифицира машината (сървъра) в мрежата. Според техническите спецификации домейнът на бисквитката задължително трябва да съвпада с домейна на сървъра, който ги изпраща, но има някои изключения. Първото изключение е, чекогато се използват няколко нива домейни, те могат да създават бисквитки за различни части от нивата. Например отговорът на заявка към домейна example.com може да създаде бисквитка само за домейна example.com, както и бисквитка валидна за същия домейн и всички негови поддомейни. Ако бисквитката е валидна за всички поддомейни, изписването става с точка пред името на домейна или .example.com. Второто изключение е валидно, когато бисквитката не се създава от сървъра, а от приложен слой при клиента (например от javascript). Тогава е възможно js файлът да е зареден от един домейн, но в html страница от друг домейн – сървърът, който изпраща бисквитка може да я изпрати от името на домейна където е js файлът, но самият js, докато е зареден в страница от друг домейн може да създаде (и прочете) бисквитка от домейна на html страницата.

Адресът (или пътят) е останалата част от URL адреса. По подризбиране бисквитките са валидни за път / (т.е. за корена на уеб сайта). Това означава, че бисквитката е валидна за всички възможни адреси на сървъра. Въпреки това, има възможност изрично да се укаже конкретен адрес, за който да бъдат валидни бисквитките.По идея, адресите са репрезентация на път в йерархична файлова структура върху сървъра (въпреки, че не е задължително). Затова и адресите на бисквитките представят мястото на тяхното създаване в йерархична файлова система. Например ако пътят на бисквитката е /dir/ – това означава, че тя е валидна в директорията с име dir, включително и всички нейни поддиректории.

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

Срокът на валидност определя колко време потребителят трябва да пази бисквитката при себе си и да я връща с всяка следваща заявка към същия сървър и адрес (път). Когато сървърът иска да изтрие бисквитка при потребителя, той трябва да я изпрати със срок на валидност в миналото, по този начин предизвиква изтичане и автоматично изтриване на бисквитката при потребителя.

Бисквитките имат и параметри, които имат грижата да осигурят сигурността на предаваните данни. Това включва два булеви параметъра – единият определя, дали бисквитката да бъде достъпна (както за четене, така и за писане) само от http протокола или да бъде достъпна и за приложния слой при клиента (например за javascript). Вторият параметър определя, дали бисквитката да се предава по всички протоколи или само по https (защитен http).

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

В допълнение бисквитките имат и редица ограничения. Повечето браузъри не позволяват да има повече от 20 едновременно валидни бисквитки за един и същи домейн. Във Mozilla Firefox това ограничение е 50 броя, а в Opera 30 броя. Също така е ограничен и размерът на всяка отделна бисквитка – не повече от 4KB (4096 Bytes). В спецификациите за бисквитки RFC2109 от 1997 г. е посочено че клиентът може да съхранява до 300 бисквитки по 20 за един и същи домейн и всяка с размер до 4KB. В по-късната спецификация Rfc6265 от 2011 г. лимитите са увеличение до 3000 броя общо и 50 броя за един домейн. Все пак, не трябва да се забравя, че всяка бисквитка се изпраща от клиента при всяка следваща заявка към сървъра, ако чукнем тавана на лимитите и имаме 50 бисквитки по 4KB, това означава, че с всяка заявка ще пътуват близо 200KB само под формата на бисквитки, което може да се окаже сериозен товар за трафика, дори и при техническите възможности на съвременния достъп до Интернет.

Разбира се, по-рано приведеният пример, при който запазваме успешната аутентикация на потребителя в бисквитка има множество особености свързани с гарантиране на сигурността. На първо място – не е добра идея да запазим потребителското име и паролата на потребителя в бисквитка, тъй като тя се запазва на неговия компютър. Това означава, че по всяко време, ако злонамерено лице получи достъп до компютъра на потребителя, може да прочете потребителското име и паролата от записаните там бисквитки. От друга страна, ако в бисквитката съхраним само името на потребителя, без неговата парола – няма как да се предпазим от фалшиви бисквитки – всяко злонамерено лице може да създаде фалшива бисквитка, в която да посочи произволно (чуждо) потребителско име и да се представи пред сървъра от чуждо име.

Затова най-често използваният механизъм е, че при всяка аутентикация с име и парола пред сървъра, след като той ги верифицира, създава някакъв временно валиден идентификатор, който изпраща като бисквитка. В различните технологии този идентификатор може да се намери с различни имена, one time password (OTP), token, session или по друг начин. При тази схема сървърът съхранява за ограничено време (живот на сесията) информация за потребителя. Всяка такава информация (често наричана сесия) получава идентификационен номер, който се изпраща като бисквитка на потребителя. Тъй като той ще връща този идентификатор с всяка следваща заявка, сървърът ще може да възстановява съхранената информация за потребителя и тя да бъде достъпна при всяка следваща заявка. В същото време, информацията е съхранена на сървъра, а не при клиента, което не позволява на злонамерен потребител да я модифицира или фалшифицира. Освен това, идентификаторът е валиден за ограничен период от време (например за 30 минути). Дори и бисквитката с идентификатора да остане на компютъра на потребителя, заисаният в нея идентификатор няма да върши работа след половин час. Не на последно място, при натискане на бутона за изход съхранените на сървъра данни за потребителя се изтриват дори и да не е изтекъл срокът от 30 минути. Именно затова е важно винаги да се използват бутоните за изход при излизане от онлайн системи.

Какво друго се съхранява в бисквитки? На практика всичко! Много често бисквитките се използват за съхраняване на информация за индивидуални настройки на потребителя. Когато потребителят промени някоя настройка сървърът му изпраща бисквитка със съответната настройка и дълъг срок на валидност. При всяко следващо посещение на същия потребител на същия сайт, той ще изпраща запазената в бисквитка настройка, заедно със заявката към сървъра. Сървърът ще знае за желаната настройка и ще я приложи при връщането на отговор на изпратената заявка. Пример за такава настройка е броят на записите които се показват на страница. Ако веднъж промените този брой, избраната стойност може да се запази в бисквитка и при всяка следваща заявка сървърът винаги ще знае за настройката и ще връща правилен отговор.

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

Забранява ли Европейският съюз бисквитките? Бисквитеното чудовище от улица Сезам би било доста разстроено, ако разбере, че ЕС иска да ограничи използването на бисквитки. В действителност истината е доста по-различна, но информацията е масово грешно интепретирана. Да излезем от технологичната сфера и да навлезем малко в юридическата. На първо място, кои са нормативните документи в тази връзка? Масово се цитира европейската Директива 2009/136/ЕО от 25 ноември 2009 г. Истината е, че тази директива не засяга директно бисквитките. Директивата внася изменения в друга Директива 2002/22/ЕО от 7 март 2002 г. относно универсалната услуга (час от която е и достъпът до Интернет) и правата на потребителите. Изменението от директивата от 2009 г. гласи следното (чл. 5, стр. 30):

5. Член 5, параграф 3 се заменя със следния текст:

„3. Държавите-членки гарантират, че съхраняването на информация или получаването на достъп до информация, вече съхранявана в крайното оборудване на абоната или ползвателя, е позволено само при условие, че съответният абонат или ползвател е дал своето съгласие след получаване на предоставена ясна и изчерпателна информация в съответствие с Директива 95/46/ЕО, inter alia, относно целите на обработката. Това не пречи на всякакво техническо съхранение или достъп с единствена цел осъществяване на предаването на съобщение по електронна съобщителна мрежа или доколкото е строго необходимо, за да може доставчикът да предостави услуга на информационното общество, изрично поискана от абоната или ползвателя.“

Също така, в увода на същата директива се споменава още:

(66) Трети страни може да желаят да съхраняват информация върху оборудване на даден ползвател или да получат достъп до вече съхраняваната информация за различни цели, които варират от легитимни (някои видове „бисквитки“ (cookies) до такива, включващи непозволено навлизане в личната сфера (като шпионски софтуер или вируси). Следователно е от първостепенно значение ползвателите да получат ясна и всеобхватна информация при извършване на дейност, която би могла да доведе до подобно съхраняване или получаване на достъп. Методите на предоставяне на информация и на предоставяне на правото на отказ следва да се направят колкото може по-удобни за ползване. Изключенията от задължението за предоставяне на информация и на право на отказ следва да се ограничават до такива ситуации, в които техническото съхранение или достъп е стриктно необходимо за легитимната цел на даване възможност за ползване на специфична услуга, изрично поискана от абоната или ползвателя. Когато е технически възможно и ефективно, съгласно приложимите разпоредби на Директива 95/46/ЕО, съгласието на ползвателя с обработката може да бъде изразено чрез използване на съответните настройки на браузер или друго приложение. Прилагането на тези изисквания следва да се направи по-ефективно чрез разширените правомощия, дадени на съответните национални органи.

От двете цитирания следва да обърнем внамание и на още нещо – цитира се и Директива 95/46/ЕО от 24 октомври 1995 г, която пък третира защитата на физическите лица при обработването на лични данни. Разбира се, трудно е да се каже, че директивата от средата на 90те години засяга директно функционирането на Интернет, който по това време е доста слабо разпространен, а технологията на бисквитките – появила се само преди няколко години, все още изключително нова и рядко използвана.

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

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

Да разгледаме един по-реалистичен пример на базата на вече разгледаната по-рано технология. Имаме прост информационен сайт с автомобилна тематика, който няма никакви специфични функции, не предоставя услуги или нещо друго. Сайтът обаче използва Google Analytics (безплатен инструмент за събиране на статистика за посетителите, предоставят от Google), също така, собственикът на сайта, с цел да монетизира поне в някаква минимална степен събраната на сайта си информация е пуснал и Google Adwords (услуга за публикуване на рекламни банери предоставяна от Google). Също така имаме и потребител, който търси в Google информация за ремонт на спукана автомобилна гума. Потребителят открива цитирания по-горе сайт в Google, където кликва линк и отива на сайта. Същият потребител има и email в Gmail (безплатна email услуга предоставяна от Google). Както забелязвате, до момента имаме един неизменно преследващ ни по целия път общ знаменател – Google. В случая това далеч не е единствения голям играч на този пазар, просто примерът с него е най-достъпен за широката публика. Всъщност Google едновременно има достъп до писмата, които потребителят е изпращал и получавал, до това какво е търсил, до това в кой сайт е влязъл, какво е чел там (точно кои страници), колко време е прекарал на този сайт, също така и информация за всеки друг сайт, който същият потребител е посещавал в миналото, независимо дали ги е посещавал от същия компютър или от друг, достатъчно е всички сайтове да използват Google Analytics за статистиката си. Ако потребителят има служебен и домашен компютър и е влизал в Gmail пощата си и от двата компютъра, тогава Google Analytics е в състояние да направи връзка, че сайтовете, които сапосещавани на двата компютъра, които иначе нямат никаква друга връзка помежду си, са посещавани от един и същи потребител. Тогава, потребителят не трябва да се учудва, ако отиде на трето място, несвързано по никакъв начин с предишните две (домашния и служебния компютър), влезе си в пощата и по-късно посети произволен сайт, на който види реклама за продажба на нови автомобилни гуми.

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

Всичко това може (и се) комбинира и с други данни, които се събират за потребителите – IP гео локация, информация за интернет връзката, използваното устройство, размер на дисплея, операционна система, използван софтуер и много други данни, които се предоставят автоматизирано, докато браузваме в мрежата.

Отново, сама по себе си, технологията на функциониране на бисквитките има предвидени защитни механизми. Например бисквитките от един уеб сайт не могат да бъдат прочетени от друг сайт. Но тук цялата схема се чупи поради факта, че бисквитките са достъпни за приложния слой на клиента (javascript), като в същото време милиони сайтове по света се възползват от иначе безплатната услуга за събиране на статистика за посещенията от един и същи доставчик. Именно този доставчик е свързващото звено в цялата схема. Всеки от сайтовете и всеки от потребителите поотделно не разполагат с особено полезна информация, но свързващото звено разполага с цялата информация и при добро желание, а повярвайте ми, за да бъдат безплатни всички тези услуги, желанието е преминало в нужда, тази натрупана информация може да бъде анализирана, обработена и използвана за всякакви нужди.

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

Тук е много важно да уточним няколко аспекта. На първо място – използването на бисквитки, както и проследяването като процес не са забранени, просто се изисква потребителите да бъдат информирани какво се прави и с каква цел, както и потребителят изрично да е дал съгласието си за това. Другата важна подробност е, че бисквитките не са единственят механизъм за съхраняване на информация на крайните устройства и европейското законодателство не се ограничава до използването именно на бисквитки. Local Storage е съвременна алтернатива на бисквитките и въпреки, че функционира по различен начин и предоставя съвсем различни възможности, но също съхранява информация на крайните устройства и реално може да бъде използвана за следене на потребителите и може да засегне правата им по отношение на обработка на личните им данни. В този смисъл европейските директиви засягат всяка форма на съхраняване на информация на устройствата на потребителите, а не само бисквитките. Също така – директивите разглеждат съхраняването на данни за проследяване на потребителите отделно от бисквитките необходими за технологичното функциониране на системите в Интернет. Също така се прави и разлика между бисквитки от трети страни и бисквитки от собствениците на сайтовете, като в примера с бисквитките оставяни от Google Analytics, Google е трета страна.

Когато съхраняването на данните (били те бисквитки или други) се извършва от трети страни (различни от доставчика на услугата и крайния потребител), това не отменя ангажиментите на доставчика на услугата да информира потребителите, както и да им иска съгласието. Казано накратко, ако имам сайт, който използва Google Analytics, ангажиментът да информирам потребителите на сайта, както и да поискам тяхното съгласие, си остава мой (т.е. на собственика на сайта – лицето, което предоставя услугата), а не на третата страна (т.е. не е ангажимент на Google.

Също интересен факт е, че директивата разглежда като допустимо, съгласието на потребителя да бъде получено и чрез настройка на браузъра или друго приложение. Тук можем обратно да се върнем към технологиите. Преди време имаше P3P (пи три пи като Platform for Privacy Preferences, не ръ зъ ръ)– технология, която започна обещаващо, но в последствие беше имплементирана единствено от Internet Explorer и в крайна сметка разработката на спецификацията беше прекратена от W3C. Една от сочените причини е, че планираната технология беше относително сложна за имплементиране. Към днешна дата повечето браузъри поддържат Do Not Track (DNT), което представлява един HTTP header с име DNT, който ако присъства в заявката на клиента със стойност 1, посочва, че потребителят не е съгласен да бъде проследяван. Разбира се, проследяването, което се визира от DNT и запазването и достъпването на информация на крайните устройства на потребителите, което се визира в европейските директиви на се едно и също. Може да записваш и четеш информация на клиента, без да го проследяваш, което би нарушило европейските директиви, както и можеш да проследиш клиента, без да му записваш и четеш данни локално (например чрез Browser Fingerprint и с дънни съхранявани изцяло на сървъра).

Накрая, нека обобщим:

  1. Европейският съюз не забранява бисквитките;
  2. Европейският съюз предвижда мерки за защита на личните данни, като налага правила за искане на позволение от потребителите, когато се записват и достъпват данни на крайните им устройства, когато тези данни;
  3. Изискването за информирано съгласие не се ограничава единствено до бисквитките, а покрива всички съществуващи и евентуално бъдещи технологии позволяващи записване и достъпване на информация на крайните устройства на потребителите;
  4. Информиране на потребителите следва да има, както и трябва да им се поиска, независимо дали данните се записват или достъпват директно от доставчика на услугата или чрез услугите на трета страна. Или по-просто казано, ако използваме Google Analytics, ние трябва да предупредим потребителя и да му поискаме съгласието, а не Google. В този случай доставчикът на услугата (самият сайт) се явява като оператор на лични данни (не по смисъла на българския ЗЗЛД, но по смисъла на европейските директиви, а Google се явява трета страна оторизирана от администратора да управлява тези данни от негово име и за негова сметка – ерго отговорността е на администратора;
  5. Информиране на потребителя и искане на съгласие не е необходимо, когато записваните и четените данни се използват за технологични нужди и това е свързано с предоставянето на услугата, която потребителят изрично е поискал да използва. Бих казал, че когато случаят е такъв, лично аз бих избрал да информирам потребителя какво и защо се записва и чете, без обаче да му искам съгласието;
  6. Според Европейските директиви съгласието може да се изрази от потребителите и чрез специфични технологии създадени за тази цел, но използването на технологиите не отменя необходимостта от информиране на потребителя относно това какви данни се съхраняват и с каква цел се обработват;
  7. Европейската нормативна уредба в това отношение изглежда не е траспонирана в националното законодателство на България, което не означава, че може да не се спазва;

Адблокинг

Post Syndicated from nellyo original https://nellyo.wordpress.com/2016/07/14/adblocking-2/

Темата за значението и ефектите на адблокинга ще продължава да е важна – и заради финансирането, и заради съдържанието на медиите.

  • Финансирането: ако рекламата не достига до аудиторията – защо рекламодателите да плащат? Тогава какви ще са моделите на финансиране след адблокинга?  За потребителите, които блокират рекламата,  сайтовете веднага предлагат платения модел. Но за телевизията?
  • Съдържанието: ако софтуер  може да блокира електронни търговски съобщения, идва ли времето на интегрирано {редакционно + търговско} съдържание, за да не може софтуерът да разпознава и изолира търговското съобщение? Заплашен ли е  принципът на разграничаване на основно (редакционно) от търговско съдържание? И ако си мислим, че с адблокинга си връщаме контрола върху редакционното съдържание, не допускаме ли всъщност много сериозна грешка?

Едно изследване, оповестено днес, за мотивите (повече) и за ефектите от адблокинга.

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

 

 

Filed under: Uncategorized

Log-ове, дървета, бази данни

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3304

Около разни разговори за една нова система при нас и какви бази данни трябва да ползваме (и викове от някакви хора “ама то трябва да е задължително nosql” с идеята, че nosql == магически бързо) и обяснения, подкрепени с малко тухли, реших да драсна това – какви основни неща ползват базите данни, защо (и какво можем да очакваме с промените по хардуера), заедно с разни други наблюдения.

На всички, които това им е интересно препоръчвам “Transaction Processing” на Jim Gray като едно много добро начало.
(за хората, които предпочитат да четат код, двете малки и съвсем истински бази са BDB и SQLite (който е и пример за истински добре написан софтуер))

По принцип под “база данни” се разбира ACID база данни, вероятно с някакъв SQL интерфейс. В по-модерни времена се разбира някакъв вариант на това, без SQL, понякога просто бърз начин човек да съхранява (и губи) данни.

ACID значи следното:
Atomicity (атомарност) – действие или се изпълнява изцяло, или не се изпълнява изобщо (т.е. ако кажем “искам да увелича с единица на тия две места”, или ще се увеличат и двете, или ще получите грешка, но никога няма да се промени само едното).
Consistency (консистентност) – има вътрешни правила, които винаги са в сила, (например ако сме казали, че стойностите в дадена колона са уникални, базата не трябва да ни позволи да вкараме две еднакви такива).
Isolation (изолираност) – никой няма да ни подмени данните, докато работим с тях.
Durability (издръжливост) – ако сме записали нещо в базата и тя е казала, че е записано – то няма да изчезне, т.е. записано е на физическия носител, който не се влияе от спиране на тока.

Като цяло това са свойства, произлезли от нуждите на счетоводството/банкирането. Една ACID база данни е перфектна за всякакви такива нужди, понеже позволява да се опишат всякакви сложни структури от данни и тя да се грижи за това да не се омазват и да може да се работи с тях.

Всички тези свойства имат негативно влияние в/у performance. Най-зле се отразява D-то, понеже в повечето случаи това значи по поне един fsync() на транзакция, което от своя страна води до поне една физическа дискова операция, а поне преди SSD-тата те бяха най-голямото ограничение. I (и донякъде зависещото от него A) пък започва да се проявява при достатъчно бързи дискови масиви и големи паралелни натоварвания, когато се налага да се взимат и изчакват много (и сложни) lock-ове.

Изобщо, ако искате да запомните нещо съвсем просто от цялото ми писание, TL;DR-то е: писането в базата ви е ограничено от това колко транзакции може да ви направи диска, четенето (ако базата ви не се събира в паметта) – също. Ако не са ограничени от това, ще загубите данни.

Други бавещи неща в стандартните бази данни са огромните възможности на SQL-а – всякакви join-ове и други сложни заявки, които в един момент няма как да се оптимизират – и неща като trigger-и, foreign key-ове, views, които усложняват и вкарват навсякъде нови lock-ове, сметки и забавяния. Например може да е възможно една база да пише в transaction log-а си по 2000 транзакции в секунда, но голяма част от времето ѝ да отива да проверява дали данните отговарят на консистентността, да чака read lock-ове или просто да parse-ва сложния SQL, който и се подава.

Структурите, които базите данни използват са ориентирани към това да може да се работи ефективно и сравнително бързо с бавни, но сигурно-записващи устройства (дискове), т.е. основното предположение на повечето бази данни е, че имаме процесор с много бързи регистри/кеш, 10тина пъти по-бавна памет, и около милион пъти по-бавен диск, от който може да се чете само на блокове (т.е. парчета с размер от 512 или 4096 байта, align-нати на такава граница), като линейните действия (с няколко предни блока) са по-бързи от random действията.

Основната структура, която базите използват се нарича B+ дърво. В “Transaction Processing” има страхотно описание и си личи колко гениална структура е, аз тук ще се спра само на основните неща от нея:
– представлява нормално дърво, с корен и листа на няколко нива;
– всеки node от дървото съдържа ключ, данни и масив от указатели, който казва за кой range от данни към кой друг node да се ходи;
– размерът на всеки един node се гледа да е колкото една страница, константен за дървото, кратен на block size на устройството, на което се записва. Варира от 512B (за много много отдавна), 4KiB (сравнително отдавна) до всякакви други стойности (веднъж като гледах кода на postgresql беше 64KiB);
– в B+ дървото (и каквото по принцип се използва) всеки node има указатели към левия и десния си такъв, за да направи лесно търсенията по интервал (range).

Така търсенето в дървото е в общи линии логаритмично при основа размера на масива от указатели във всеки node, което много ускорява работата при блоково устройство.

(почти) всяка таблица в съществуващите бази данни е B+ дърво, подредено по primary key-а си. Допълнителните индекси са често B+ дърво или подобна структура по колоната, която индексират и със стойност primary key на търсения ред. Това води до следните няколко неща:

– Търсенето по primary key винаги е по-бързо от търсенето по вторичен индекс (освен в един специфичен случай по-долу);
– Индексирането не е магия. Виждал съм хора да слагат в заявка търсене по функция от дадено поле, и ако индексът не е построен по същата функция, базата няма как да го използва;
– Като цяло за блокови устройства няма по-ефективна структура – прави малко четения (които са бавни) за сметка на сравненията (които са сравнително бързи).
– Някои бази имат допълнителни типове индекси, които вършат работа в по-странни случаи. Примери са full-text индексите (GIN на някои места), R-дървета (за многомерни данни) и hash-овете.

Тук има един интересен hack, който се поддържа от повечето по-нови версии на базите данни. Ако имаме следната таблица:

create table pesho (
pesho_sid serial not null PRIMARY KEY,
field_a int not null,
field_b int not null,
field_t varchar(16) not null
);

и имаме да търсим по field_a и field_b, за да прочетем field_t (SELECT field_t FROM pesho WHERE field_a=1 AND field_b=2), по принцип бихме създали индекс по field_a и field_b. Тогава заявката ще прави първо търсене в индекса, ще намери pesho_sid за нужния ред, и ще потърси после в самото B+ дърво. По-хитро (ако базата го поддържа) е направим индекса по field_a, field_b и field_t, като тогава базата ще намери стойността в индекса и ще има и нужните данни, за да върне директно отговор на заявката само с първото търсене.
(още по-подобрен вариант за конкретния случай е да се махне pesho_sid и да се направи primary key по field_a и field_b, доста хора се притесняват по принцип от композитните primary key-ове, а не трябва)

Другият компонент, който би трябвало да има във всяка база е т.нар. transaction log (или write-ahead log, binary log, journal или всякакви други имена). Идеята му е, че всяка транзакция/действие за писане се записва в него, след което той се sync-ва до диска (така се гарантира онова Durability), и чак като се напълни се насипва в/у реалните данни по диска. Всяко действие се записва така, че да е идемпотентно, т.е. да може логът да се приложи няколко пъти, без да повреди данните (което е нужно за спасяване от момента, в който ни спре тока докато flush-ваме log-а).Това помага за доста неща:

– Писането по диска е през повечето време линейно, което доста забързва действията по базата;
– Заявките естествено се сериализират и при спиране на тока или нещо такова после могат да се replay-нат от лога;
– Същия log може да се използва за репликиране на базата, или за възстановяване от backup заедно с dump от дадена дата, или дори за връщане назад.

Идеята всъщност не е ограничена до базите данни, и в един или друг вид се използва на много места (например файлови системи).

Този вид log се използва във всички бази данни и в почти всичко, което съхранява данни (изключение са in-memory storage-ите като memcache, на които не им трябва да се синхронизират с някои и не им пука за спирането на тока).

Ако човек се загледа какво ползват nosql базите, ще открие все същите неща. По-долу съм изброил няколко и причините да са по-бързи (за някои неща):

Apache Cassandra в общи линии използва in-memory transaction log-ове, които синхронизира с другите сървъри в клъстера (т.е. губят се данни, ако на всички им спре тока). Решава си проблемите със скоростта, като не поддържа нищо сложно (като join-ове) и като пише по диска само на големи burst-ове, когато напълни някоя таблица.

Apache CouchDB комбинира по хитър начин B+ дървото и transaction log-а, като винаги само добавя във файла. За да си помогне още малко, прави fsync() не на съвсем всеки документ, а гледа да batch-ва по някакви писания и да sync-ва веднъж в секунда, което пак може да доведе до загуба на данни.

MongoDB ползва transaction log, ползва B дървета за индекси, и се справя с многото писане като просто mmap-ва файловете от базата в паметта. Единственото, което fsync()-ва, е transaction log-а, на 100ms (pdf с презентация за mongodb internals).

Както и много други знайни и незнайни нещица. Голяма част от тях не биха се справили със стандартния ми тест за сериозна база данни ( да се пуснат транзакции спрямо нея и да и се рита тока, и да не загуби нито една от потвърдените), но пък имат приложение в много области, където или данните не са чак толкова важни, или има начин да се заобиколи загубването им. Един хубав пример има в Beautiful data, гл. 5, където facebook описват как да си съхраняват clickstream-а са минали през Oracle, MySQL и са стигнали до cassandra, която просто може да се scale-ва ужасно много (и на тях изобщо не им пука за няколко изгубени click-а).

Ако събера сили, ще напиша приложение за дистрибутирането на базите данни, CAP теоремата (или защо господ ни мрази) и какво правят разни хора по въпроса.

Инструменти

Post Syndicated from Григор original http://www.gatchev.info/blog/?p=1926

Нерядко се случва да ми потрябват някакви абсурдно елементарни софтуерни инструменти, които обаче нямам удобно подръка. Повечето от тях са минута-две писане, но точно затова все не се хващам да ги направя… Е, реших да променя това.

На http://www.gatchev.info/tools ще слагам каквито инструментчета ми хрумне да скалъпя набързо. Ще са тъпи, прости и непретенциозни. Ако имате идеи – казвайте, може някой път да намеря пет минутки да надраскам някоя.

Първата джвъчка, която надробих току-що, е генератор на случайни стрингове. Съдържат главни и малки латински букви, цифри, тире и долно тире. Става за правене на пароли, salt-ове и всякакви подобни. Конкретния генериращ код го откраднах (с леки мои модификации) от WordPress, дано не ме съдят. 😉 На който му трябва – да се радва.

(Не, генерираните стрингове не се записват. Нито се записва кой го използва. Не съм корпорация или правителство, че да страдам от мания за власт и контрол. Ѝ съм щастлив от това. :-) )

Интернет измами

Post Syndicated from Григор original http://www.gatchev.info/blog/?p=1937

Скъпи господине / госпожо (име),

Пише ви X, мениджър по развитието във фирмата Y. Ние сме бързо развиваща се западна фирма с над 10 000 души персонал, над 4 милиарда годишен оборот и над 200 милиона годишна печалба. Поради отличните приходи и силния растеж на фирмата търсим начини да стъпим в нови страни.

След старателен преглед на Вашия (профил във Facebook / LinkedIn / Google+, CV в еди-кой си сайт за работа, други места за лични данни в Мрежата, ненужното да се зачеркне) ние преценихме, че Вие имате точно търсената от нас комбинация от качества. Затова имам честта да ви предложа работа във фирмата ни, като един от първите служители в новооткриващия се клон във Вашата страна.

Ключова за нас е преценката на специалистите ни по човешки ресурси, че на вас може да се вярва и разчита. Затова смятаме да ви поверим ръководството на отдел според Вашата специалност, когато го попълним кадрово. Това се очаква да отнеме около два месеца.

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

Ако проявявате интерес, моля пишете ни.

С уважение,
X
Мениджър по развитието
Фирма Y

—-

Уважаеми Х,

Предложението ви ми се струва интересно. Бихте ли могли да предоставите повече информация?

(име)

—-

Разбира се, (име) – за мен ще е удоволствие!

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

Изпратете ни след това номерата на банковите сметки. Ние ще ги предадем на дистрибуторите ни, за да могат да Ви изпращат парите. (Повтарям: погрижете се от тези сметки да не може да тегли пари никой освен Вас! Други хора трябва да могат единствено да превеждат пари по тях.)

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

На всяка четна дата Вие трябва да превеждате 80% от постъпилите по сметките пари на наша сметка, която ще ви изпратим. Останалите 20% са вашето заплащане. При текущия оборот то се очаква да е около 15 000 месечно. С нарастването на продажбите и работата Ви то ще расте.

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

С уважение,
X
Мениджър по развитието
Фирма Y

—-

След малко колебания решавате да разпитате в някоя банка. Служителите там потвърждават информацията – да, по обикновена сметка може да внася пари всеки, но може да ги тегли и да се разпорежда по всякакъв друг начин със сметката само титулярът. Предпазливо си правите една сметка и пращате номера ѝ на любезния X от фирма Y.

Още същия ден получавате от него номер на сметка, по която да препращате парите, и линк, юзер и парола за софтуера за описване на приходите. А след ден-два, за най-голямо ваше изумление, започват да пристигат и те. Отначало не са много, но след първите няколко дни нарастват значително. Правите най-добрите пари в живота си. С нетърпение очаквате момента, в който фирмата Y ще ви покани в офиса си за официално назначаване. За да ѝ кажете, че искате да продължите работа като мениджър парични потоци…

Само че вместо това на вратата ви почуква полиция. Без много обяснения ви щракват белезниците и закарват в ареста. За щастие ваш добър приятел е адвокат и се опитва да ви помогне. От него и научавате истината за нещата.

Фирмата Y не съществува, както и вероятно любезният господин X – или поне не се казва така. Имали сте работа с банда киберпрестъпници. Парите, които сте получавали, идват от източени банкови сметки, кредитни карти и така нататък. Следвайки пътя им, полицията е стигнала до вас.

След като се съвземате от шока, вие разказвате цялата история. Обяснявате как сте мислели, че работите честно, и т.н. Давате на полицията всичко, което знаете за киберпрестъпниците. Това обаче не ви изкарва от затвора. И приятелят ви адвокат хич не е оптимистичен.

От полицията всъщност не се иска да хване престъпникА. Иска се да хване престъпник. Вие сте приемали откраднатите пари и сте ги препращали на банкова сметка в страна, където банковата тайна не се разкрива за разследвания. Нещо повече, вие сте задържали процент от парите, което не само сте имали глупостта да кажете в показанията си, но и ясно си личи от списъка на преводите ви. (Защото в България банковата тайна не е така строга и съдът лесно задължава банките да сътрудничат на полицията.) Иначе казано, вие отговаряте на всички без изключение критерии за важен съучастник в престъплението, ако не и негов организатор. И понеже другите престъпници няма как да бъдат хванати, се налага вие да оперете пред закона целия пешкир.

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

… Напоследък Нета е пълен с подобни измами. Конкретно тази бива наричана на английски “money mule”, „финансово муле“. Писал съм за нея и преди, но гледам, че напоследък зачестява – полезно е да драсна пак. Едного да опазя да не се хване, ще си е струвало единия час безсъница.

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

2016-04-17 ТърновоConf 2016

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3299

И случихме ТърновоConf 2016.

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

Интересните работи (по техническата част) бяха следните:

Оказа се, че в хотела има някакъв “internet” през кабелната телевизия, с 20mbps download и 1mbps upload. Последваха малко телефонни обаждания, намерихме си резервен вариант през 3g и 4g, а един ден преди събитието се открихме с един приятел и evo.bg ни докараха 1gbps връзка на място, с която тотално ни решиха проблемите. Малко изненадаха хотела с бързото пристигане и окабеляване, но нещата минаха съвсем лесно.

За това събитие паралелно бяхме вързали fosdem-ските videobox-ове, с които вървеше отделен stream, представляващ picture-in-picture (ще кача примерни записи от него и малко encode-нати видеа отделно, за сравнение). Работеха доста добре, бяха полезни за switch-ове и не създадоха никакви допълнителни проблеми, така че вероятно някоя конференция можем да я направим само с такива, ако решим. За изходящия stream от тях трябваше да заделим един лаптоп с i7, но той се справи съвсем добре и май без никакви особени проблеми (трябва да видя streamdump-овете как са).

Успя да ни умре за малко единия контролен лаптоп (един thinkpad t410), понеже при default-ната работа на вентилатора му и виртуалката с контролния софтуер беше успял да прегрее ужасяващо. Решението беше да се накове ръчно вентилатора на максималната възможна скорост.

Имахме сериозен проблем със смущения в микрофоните, при които опрях до там да извадя малкия SDR dongle и да слушам ефира, да видя какво точно се случва. В общи линии имаше зашумяване в целия ефир около нашите честоти (520, 530 и 750MHz), като единствено headset-а ни на 2.4ghz работеше добре, и с останалите май доста изтормозихме публиката. Текущата хипотеза е, че най-вероятно смущенията са идвали от доста мощния поточен бойлер, който беше наблизо, та издирвам някой с такъв, за да идем близо до него и да тестваме дали има тоя ефект. След това вероятно ще си мислим и екраниране…

(започват да ми идват странни идеи да излъчваме ефирна телевизия на къси разстояния/пиратски от тия събития, за идеята, ама трябва да се види от какво можем да модулираме сигнала)

(а аз седнах да пиша лекция за всичките забавни неща на initLab (понеже имаше свободен слот), но избраха на Мариян тая за дебъгването. Поне презентацията мисля да довърша като се прибера в София, да я ползваме да спамим хората)

Личните карти, електронната идентификация и немците

Post Syndicated from Боян Юруков original http://feedproxy.google.com/~r/yurukov-blog/~3/d0bkL3ifXQQ/

В сряда съвсем неочаквано и в последния възможен момент Цветан Цветанов вкара промени в законопроекта за електронната идентификация. Така той отряза ключова част от законопроекта предвиждаща добавянето на чипове в бъдещите лични карти. Аргументите му бяха, че не било разписано достатъчно добре какви трябва да са чиповете, че не трябвало да се променя така законa за документите, че добавянето на чипове оскъпявало всичко и че имало риск за информацията в тях. Всички тези аргументи са били оборени на място от Антон Герунов – шеф на кабинета на Бъчварова. Това не попречи предложението му да бъде прието и да повтори твърденията си няколко пъти в следващия ден.
Тази стъпка може да се разглежда отвън като приятелски огън в редиците на ГЕРБ. Когато погледнем по-внимателно как се стигна до тук, нещата съвсем не са толкова учудващи. Вижда се и колко абсурдни са аргументите на Цветанов предвид технологичното решение на кой се опитва да прокара.
Ключовата технологична неутралност
Първо трябва да разберем, че законът за електронна идентификация не е осакатен окончателно. Предстои да бъде гласуван на второ четене където мнението на комисията и Цветанов има тежест, но не означава, че ще бъде прието. Ако няма чип в личните карти, ще се обезсмисли цялата концепция на електронна идентификация. Тя не само, че е залегнала в редица изисквания на Европейската комисия, но и е в основата на електронното управление и електронното гласуване. Без тази функция в личните ни карти нищо от останалото няма да се случи.
Именно това прави атаките срещу електронната идентификация толкова странни, още повече от редиците на ГЕРБ. Тези критики не дойдоха по време на обществените обсъждания или при първото четене на закона и причината е проста – по това вече вече имаше обществена поръчка за новите лични карти. Сегашният договор изтича след месец и в новата поръчка вече е предвидено да бъде включен чип. Разковничето е, че след много интензивен лобизъм поръчката е била написана така, че една определена компания да отговаря на изискванията – немската Veridos GmbH.
В бъдещият закон за електронна идентификация обаче е заложен т.н. технологичен неутралитет. Това означава, че са описани принципи, а не конкретни технологии и патентовани софтуерни продукти. Ако бъде приет в този си вид, с развитието на технологиите и изискванията ще може да се реагира бързо. В същото време означава и че не може да се ограничават поръчките до един или двама изпълнители. Точно обратното се е случило с поръчката за личните карти – заложени са технологични изисквания подобни на немските лични карти, които Veridos GmbH прави (по-специално Deutschedruckerei, които са част от обединението).
Заради една спряна поръчка
Едно от тези изисквания е, че чиповете са безконтактни. Иронията е, че това всъщност наистина оскъпява много картите. Друга е идеята в екипа на Бъчварова, подкрепена от експерти по сигурността – да се заложи на контактни чипове като тези в банковите карти или тези с електронен подпис. Освен, че е по-евтино за производство и по-сигурно, има и друго предимство – в България вече има 250000 четци у бизнеса и гражданите. Те са купени за електронни подписи и ще може да се използват за новите документи. Това обаче не е заложено в закона, защото той е неутрален. Ще се реши след обсъждане на експертно ниво, където интересите на отделни компании много по-трудно биха пробили.
Критиката на Цветанов за цената и чиповете дойде именно когато въпросната нагласена обществена поръчка беше спряна от Борисов. Така единственият шанс Veridos да спечели служебно е да се спре този закон и да се преправи направо закона за личните документи според каквото е поръчано. Запознати коментират, че лобистът на Veridos е адвокатката Таня Бузева. Тя е лобирала и за Siеmens, които взеха предишната поръчка. Представлявала е и Цветанов, а сега го консултира за този закон. По мнение на хора присъствали на заседанието на комисията, най-вероятно конкретните аргументите изказани от Цветанов в последните минути са дошли от нея.
Нека не повтаряме грешката на немците
Нагласяването така на тази поръчка, не само ще струва много по-скъпо, но и поставя на карта цялата идея за електронното управление. Иронията е, че именно Veridos знаят много добре това. Както споменах, те са направили новите немски карти, които от 2010 имат безконтактни чипове, електронна идентификация и прочие. От тогава насам 35 милиона немци са си извадили лични карти с чип. Въвеждането им обаче може да се опише единствено като провал и голяма вина за това има точно Veridos.
В обширен материал от миналото лято немският Die Welt разглежда бавното въвеждане на електронната идентификация в Германия. Заглавието е буквално „Германия проспа революцията в електронните документи“. След множество проблеми с производството на картите от страна на Bundesdruckerei GmbH (част от обединението Veridos) се оказва, че не е достатъчно обучението на служителите в общините, откриват се софтуерни проблеми и проблеми със сигурността. Тъй като технологията на безконтактните чипове е по-сложна, много от четците не са сработвали и потребителите са се отказвали. След няколко години такива спънки общественото доверие в чипа спада драстично. Стига се до там, че все още самите служители издаващи документи нерядко съветват гражданите да не ги използват.
Министерството отказва да даде точни данни, но по тяхна преценка едва една трета от чиповете в немските личните карти са активирани. От тях едва 5% ги използват активно, за да се идентифицират в мрежата. Разпитах около двайсетина колеги немци и от тях едва трима бяха активирали картата си, но я използваха само, за да подават данъчни декларации през интернет. Повечето от останалите не си спомняха дори дали е активна.
Крадецът вика дръжте крадеца
Във Facebook вчера Цветанов отвърна на масовите критики за лобисткия си саботаж с разширена версия на „крадецът вика дръжте крадеца“. Обвини всички останали, че работят за „вносители на чипове“, „определени фирми“ и прочие. Всъщност, законът в този си вид е точно обратното – не гарантира безкрайна хранилка за една или друга компания, а неутралност, прозрачност и гъвкавост.
Поведението на Цветанов и още няколко атакуващи закона за електронна идентификация, за електронното гласуване и други свързани с отворени данни, отворен код, прозрачност и електронното правителство показва ясен модел. Особено съвпаденията, които виждаме във времето от общественото обсъждане на закона за ИЕ до сега. Всички изброени мерки премахват сфери на влияние, отварят капсулирани службички пазещи данни и процедури като бащиния, ограничават уредените конкурси за длъжности и поръчки, създават приемственост в софтуера, процесите и комуникацията както в самата администрация, така и с гражданите. Това е теорията, това е заложено в тези промени, но трябва да се действа на практика.
Опозицията срещу всичко това не започва и не свършва с Цветанов, но именно той е в позицията да удуши всичко още в зачатие. Той сам изтънка, че не е непременно срещу електронната идентификация. Действията му показват, че просто настоява поръчката да се вземе от който трябва независимо от цената – парична и като ефективност.
Отделно тези му действия не правя никакъв смисъл от гледна точка на изборното законодателство. Вчера депутатите приеха на първо четене гласуването през интернет и МИР Чужбина. Електронното гласуване обаче ще е невъзможно без електронната идентификация. От гледна точка на партията ГЕРБ това е нищо повече от саботаж, защото именно те биха спечелили най-много гласове с това улеснение за българите в чужбина. Анализът на изборните резултати до сега го показва еднозначно. От гледна точка на депутатът Цветанов обаче всичко това е заплаха за неговата релевантност.