CategoryIT Stuff

06.04.2020 – Занимавки по време на чума

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

Понеже живеем в tricky времена смятам, че една рубрика с хубави новини няма да навреди на мрачното настроение на блога.

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

Иначе в офиса нещата са добре – последно време уач Ruby и ползвам безплатните уроци на CodeCademy и съм доста доволен.

И ако сте забелязали някакво подобрение на зареждането на блога то това е, че ми мина през ума съвсем скоро да проверя през Google Speed колко точки имам, защото ми се стори, че малко бавно ми зарежда началната страница. Отварям и очаквам 75-80 и БАМ – 28 точки. И като излязоха едни змии и гущери (както пя Керанов). Например при embed на youtube клип по някаква причина зареждам от YouTube JS, който се зарежда ВСЕКИ ПЪТ при всеки embed. И при все, че в предната статия имам 5-6 видеа YT зарежда JS с размер от 1 МБ (!!) на клип или 5-6 МБ в JS. Как е, а?
Та започнах да мисля стратегия – gzip по някака причина ПАК не е разрешен, обвинявам ISPConfig за това, защото имам спомен, че го оправях вече веднъж, после JS minification, но направих стъпка назад и се замислих, че проблема ми е основно в снимките и видеата. И реших проблема с един lazy load плъгин. После, защото няма как да е лесно, нали, се наложи да тествам 6-7 плъгина докато стигна до един, който просто прави lazy load без да ми чупи дизайна или да ми предлага по доста интрузивен начин да мина на про план (за lazy load, yea).

Та така де – след малко тихо псуване си харесах a3 Lazy Load, който като цяло е прост, прави това, което искам и е сравнително конфигурируем.

Не казвам, че това е най-гениалния начин за фиксване на производителността на един WP, но за моя върши работа.
Ето и преди/след:

Сега остана и да започна пак да пиша често в него…

27.07.2019 – 6/7

Преди няколко дни ходих да карам за да компенсирам неделята в която се скатах. Този път реших да завъртя до Аладжа Манастир, който е на 10-тина км. от Варна.

И понеже основно започвам с баири (както писах в предните си гърчописи) последната седмица тук маршрута е доста по-лек в началото (и като цяло). Синхронизирах се май с траковете, които Spotify ми пусна от моята прелесна плейлиста и честно казано се изкъртих. Каданса ми по някакво чудо беше точно толкова, колкото ми се искаше стисках силно кормилото и дишах често. Мислих си разни неща, пот ми влизаше в очите, но тогава беше един от малкото моменти в които нищо не може да ме разконцентрира. Гледха стръвнишки баира, който всеки път ме напада и всеки път резултата е различен. Дишах асфалта и приех болката. С пулс от 175 удара в минута и по баира с 13-тина км/ч катерих нагоре като много упорита (и дебела) коза. И го изкатерих. И боля, но този път по-малко.

Реших да обърна и завъртях със средна скорост от 27.7 км/ч, което не ми се случва всеки ден.

In other news:

  1. Юруков отново със страхотен коментар по НАПЛийкс подложен с факти и страхотна карта на българите извън страната;
  2. За втори път хващат лаптопи на HP с предварително инсталирана ОС да има keylogger макар и да бил уж за debugging цели и да не е включен по default (точно за случаите в които някой го намери);
  3. Интересен поглед над новия дизайн на Twitter. Освен това май ще мигрирам в twitter, че FB само ми яде от времето и ми пълни главата с простотии;
  4. Биволъ пуснаха търсачка на #НАПлийкс в която можете да потърсите дали вие сте вътре. Стъпките са описани и няма страшно – генерирането на MD5, който е еднопосочен алгоритъм ще ви даде известна сигурност, че Биволъ няма да ви откраднат ЕГН-тата (които вече си ги има в публичното пространство :D );
  5. В Русия искат да вържат вашия телефонен номер с мейла ви. Това като онази новина от преди няколко дни в която Казахстан правят MITM attack на целия HTTPS трафик в страната. Да живее демокрацията;
  6. Историческия парк около Варна може да се окаже пирамида.

Song of the day

Признавам си, че Joe Bonamassa го харесвах само в комплект с Beth Hart, нооо тряба да чуете това.

Виц на деня

Мъж се събудил и погледнал часовника си, било 7:07ч. Облякъл се, отишъл в кухнята, погледнал календара 7 юли (7ми ден на 7мия месец). Излязъл навън, а на спирката се задавал трамвай 7, хванал го и отишъл на кафе, а там сметката била 7.77лв
“Баси днеска само на седмици ми върви, съдбата се опитва да ми каже нещо”. Отскочил до букмейкъра и се пуснал на конни състезания, там кон номер 7 бил кръстен Съдба. Човекът не можал да повярва и заложил последните 100 лв, които имал на него и естествено конят завършил седми.

Малки SQL трикове за WordPress

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

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

В този блог за 2017 година съм публикувал 155 поста. Чудя се това малко ли са или много, но колкото-толкова.
Интересно е друго – начина по който видях това. Оказа се съвсем лесно с SQL заявка, която изглежда по този начин:

select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'publish'

Имайте предвид, че тази заявка показва само публикуваните постовете (не page или някакъв custom post type) за 2017 г.

Примерен резултат:

mysql> select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'publish';
 +----------+
 | count(*) |
 +----------+
 | 155      |
 +----------+
 1 row in set (0.00 sec)

Ако искате да видите колко draft-а имате можете да изпълните тази заявка:

select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'draft'

Примерен резултат:

mysql> select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'draft';
 +----------+
 | count(*) |
 +----------+
 | 116      |
 +----------+
 1 row in set (0.00 sec)

 

И не – няма грешка. Имам цели 116 поста, които така и не съм публикувал, повечето от които са започнати и недовършени истории, няколко tutorial-а (още ме е яд, че не завърших този за HTTP/2) и няколко пътеписа.

Как да сменим siteurl и homeurl с един ред

Ако не сте чували за siteurl и homeurl няма страшно. Но ако се наложи да мигрирате сайта, да смените домейна или да добавите/премахнете HTTPS поддържка ще се наложи да поработите с тях.

UPDATE wp_options SET option_value = replace(option_value, 'http://www.nedko.info', 'https://www.nedko.info') WHERE option_name = 'home' OR option_name = 'siteurl'

След изпълнението на тази заявка при опит да достъпя сайта ще бъда пренасочван автоматично от non-HTTPS към HTTPS версията на блога. Можете да я използвате и при смян на домейн да кажем като смените втория линк на този, който желаете. Не е най-добрия пример, но е важно да схванете как работят siteurl и homeurl. Друга полза е ако ъпдейтвате сайта и имате да мигрирате да кажем https://nedko.info/v2 към https://nedko.info.

Работа с пароли

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

UPDATE wp_users SET user_pass = MD5( '123456' ) WHERE user_login = 'admin'

Тази заявка ще смени паролата на потребителя admin с 123456.

 

Ако ви се наложи да работите върху клиентска инсталация, но не искате да сменяте паролата на потребителя можете първо да запишете хеша ѝ със следната заявка:

select user_login,user_pass from wp_users

Примерен резутат:

mysql> select user_login,user_pass from wp_users;
+------------+---------------------------------------------------+
| user_login | user_pass                                         |                           |
+------------+---------------------------------------------------+
| admin      | $P$B5&50UGz0.kW3tq6jifraX.hT!РqZP.                |
+------------+---------------------------------------------------+
1 row in set (0.00 sec)

Сега запишете стойността на user_pass полето, изпълнете горната заявка, която ще смени паролата на 123456 и като сте готови просто изпълнете следната заявка за да върнете старата парола:

UPDATE wp_users SET user_pass = '$P$B5&50UGz0.kW3tq6jifraX.hT!РqZP.' WHERE user_login = 'admin'

 

Изтриване на всички спам коментари

Преди време ми се наложи да изтрия от един блог над 10 000 коментара. Tricky-то беше, че имаше и коментари от хора, не само спам. Решението е тривиално и се нарича Akismet. Безплатната версия върши страхотна работа, но имах проблем с привилегиите на DB потребителя и коментарите маркирани като спам не се триеха. За това използвах тази заявка за да ги изчистя (~10 000 коментара от които 90%-95% спам се изтриха за под 2 секунди):

DELETE FROM wp_comments WHERE comment_approved = 'spam'

Ако искате да изтриете и тези със статус awaiting moderation можете да ипозлвате следната заявка:

DELETE FROM wp_comments WHERE comment_approved = '0'

Как да видим всички неизползвани тагове

Ако искате да видите дали имате тагове, които никога не са използвани можете да изпълните тази заявка:

SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0

Примерен резултат:

mysql> SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0
 -> ;
+--------+-------+
| name | count |
+--------+-------+
| blabla | 0 |
+--------+-------+
1 row in set (0.00 sec)

Ако обаче искат да видите (спорд мен далеч по-практично) тагове, които са използвани 5 или по-малко пъти, сортирани по възходящ ред можете да изпълните следната заявка:

SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count<5 order by wtt.count DESC

Примерен резултат:

mysql> SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count<5 order by wtt.count
+--------------------------------------------------------+-------+
| name | count |
+--------------------------------------------------------+-------+
| blabla | 0 |
| humor | 1 |
| кино | 1 |
| котка | 1 |
| vulnerability | 1 |
+--------------------------------------------------------+-------+
5 rows in set (0.00 sec)

Извличане на всички мейли от коментарите на потребителите

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

select comment_author_email,comment_author_url,comment_date from wp_comments order by comment_date DESC

Тази заявка ще покаже мейла, сайта (ако има такъв попълнен) и датата на коментара. Това можете да го ползвате като ориентация.

Примерен резултат ще върне следните данни:

somemail@gmail.com | http://www.somedomain.com | 2017-11-01 17:18:19 |

Иначе можете да лимитирате само до списък с мейлите така:

select comment_author_email from wp_comments

 

P.S. For non-Bulgarian speakers:

  • What are you doing here?
  • If you think that the article will be useful I can translate it in English.

09.12.2017

Днес е малко време за четене и спокойствие. И разходка!

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

Вечерта започнах да се подготвям за миграцията на marvin към php-fpm (не с manually build PHP (и при това две – едно антично и едно latest and greatest)), Никото ми представи няколко много вълнуващи идеи и конфигурации за nginx-а.
Плана е да deploy-на наново nginx, php-fpm и да пренапиша изцяло vhost-овете. Освен това сега използвам letsencrypt за … да – да генерирам сертификати за Let’s Encrypt. Ще мигрирам на certbot.

Тези промени ще подобрят:

  • Работата на marvin като цяло;
  • Много по-леката конфигурация на nginx, очаквам скоростта на блога и останалите сайтове да се качи значително;
  • Всичко, което носи PHP 7.2 и най-вече сигурност и скорост;
  • Сигурността трябва да се повиши (имам някои проблеми си правата и потребителите, които ще бъдат разрешени с деплоя на новия nginix);
  • Ще науча много за nginx, конфигурацията му и работата с vhosts;
  • Ще разкарам всичките php-fpm глупости – в момента търкалям PHP 5.3 (което е свръх-антично) и PHP 7.0.3. Накрая ще стане само един (колко крайно прозвуча това :D) – 7.2.

 

In other news:

01.12.2017 – Linux Journal shuts down

Едно от най-големите списания за Linux и Open Source спира изданията си от днес. Първото издание на списанието е от 1994 година и по техни думи е с едно от най-силните микро общества фокусирани в open source-а. Последното печатно издание е от 2011 година, но портала остава популярен и до днес.
Финалната статия на Kyle Rankin повдига няколко основни въпроса относно open source, linux и идеята, която стои зад тях – свобода, прозрачност и гъвкавост.

So long and thanks for all the bash, Linux Journal!

Как да намерим незатворен HTML таг с прост скрипт

Проекта

Вчера ми се наложи да намеря незатворен HTML таг в една страница и се оказа приключение. Първо започнах да търся някакъв начин да го направя през Sublime, но бързо преустанових и реших да потърся някакво WEB решение.

И се оказа, че има. Автора е Jon Aquino, а скрипта му е прост и върши само това, което очаквах от него.

Как се използва?

Използването на скрипта е елементарно – копираме вече генерирания HTML от браузъра (за Chrome – ctrl+u) и после просто paste-ваме тук.
Разбира се можем да сложим и HTML от наши сайтове ако имаме достъп.

 

Притеснението ми е, че проекта е стар (2013 г.) и не съм сигурен, че има добра поддръжка на HTML5/CSS3, но за основни неща ще свърши добра работа.

Архивиране на директория с tar

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

Архивиране с tar

Ако искам да архивирам директория с всичките поддиректории и файлове с tar (zip и rar не идват инсталирани в пакетите на Дебиан и Убунту и вероятно на повечето останали дистрибуции) използвам следната команда:

tar czfv nedko.info.tar.gz /var/www/html/nedko.info/.

 

Дисекция на командата:

c – create

z – де/компресирай с gzip

f – архивирай във файл

v – verbose output (ще ни покаже полезна информация по време на компресирането. Не се препоръчва ако използваме командата в cron)

nedko.info.tar.gz – името на архива

/var/www/html/nedko.info – директорията, която искаме да архивираме

 

Разархивиране на създадения архив

И да речем, че нещо се прецака и искам да разархивирам архива в определена директория:

tar xzfv nedko.info.tar.gz /var/www/html/nedko.info

 

Дисекция на командата:

x – extract

z – де/компресирай с gzip

f – file (трябва да подадем име на файла след тази директива)

v – verbose – ще ни изкара полезна информация по време на декомпресирането. Не се препоръчва ако използваме командата в cron.

100% SSL поддържка на marvin

Днес най-накрая успях да подкарам 100% SSL support на всичките ми хостнати проекти с Let’s Encrypt.

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

[code]aptitude remove letsencrypt[/code]

[code]aptitude purge[/code]

[code]aptitude install letsencrypt[/code]

Заедно с това сложих и letsencrypt renew, защото сертификатите са валидни само три месеца. Сега ще чакам да видим след три месеца дали всичко ще стане автоматично :)

Вече съм сертифициран радиолюбител

С времето човек спира да се учи малко по малко и когато аз усетих това реших да се хвана в ръце. Първо дойде решението ми да сменя работата си, а малко по-късно мой приятел ме надъха да изкарам клас 2 радиолюбител.
Преди 2 седмици мина изпита поред КРС в гр. Варна с още около 25 човека и получих оценката си почти ведната – изпит взет.
Оборудването ми е Baofeng UV-5R, което за момента ми е напълно достатъчно.
И най-важното – инициала ми е LZ2NIH или преведено на НАТО фонетичната азбука – Lima Zulu 2 November India Hotel.

73 и до нови срещи.

Raspberry Pi 3 – по-мощен от всякога + вградени WiFi и Bluetooth

Тези, които ме познават знаят, че колекционирам разни проекти, които биха тръгнали на Raspberry Pi, Arduino, Olimex* и т.н. (и още нищо не съм реализирал от край до край…). Покрай новото Raspberry Pi се реших да напиша една кратка статия за него, за компанията и защо тази малка платка е толкова популярна.

 

Първо ще започнем с малко интро защо изобщо тези малки SoC (System on Chip) са толкова популярни и се продават с милиони бройки всяка година.

Raspberry Pi е малка развойна платка, която има всички нужни параметри, за да работи като самостоятелен компютър – процесор, памет, storage port, има си няколко USB, GPIO (General-purpose input/output за комуникация с различни периферии извън USB), HDMI аудио/видео изход, без движещи се елементи (вентилатор) и т.н. Цялото това нещо тежи едва 45 грама (за последната версия без адаптера).

Второ – защо ни е такава развойна платка?

Когато за пръв път попаднах на сайта на Raspberry Pi си помислих, че това е развойна платка, която се използва в роботиката и/или автоматизацията (основно заради тогавашните проекти най-вероятно) и е много тясно специализирана. След няколко дни пак се присетих нещо за Pi-то и се замислих, че на това чудо биха тръгнали всякакви интересни неща, ако му се подкара някаква (Linux базирана) операционна система.

Разбира се след като открих Raspbian (базиран на Debian) и NOOBS разбрах колко ценен е този малък продукт. С времето видях как хора го ползват от всякакви проекти – от метереологични станции през малки Apache/nginx services, home automation (с подходящите китове, които се продават отделно можете да настройвате климатици, да отваряте и затваряте прозорци и врати и каквото се сетите още (ето един страхотен пример за open source home automation) и стигнетете до изграждане на клъстери с 256 паралелно работещи Pi-та за каквото се сетите.

Всичко, от което имате нужда е едно Raspberry Pi, памет (последната трета версия работи с microSD карти, предците му – с SD) и адаптер с мощност от над един ампер (тоест повечето зарядни за телефони, например) и ще можете да си поиграете с тази играчка.

Трето – моите идеи. Те, разбира се, са ужасно много, но след строга селекция реших да използвам моето Raspberry Pi 2, за да се запозная малко повече с:

  • mySQL replication;
  • Load balancing (с Apache/nginx);
  • Failover schemes (пак с Apache);
  • Proxies;
  • (евентуално) High-availability.

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

Червърто – периферия. С разширяването на проекта разработчиците и third parity страни започнаха разработки на интересни хардуерни проекти свързани с Pi. Може би първото нещо, което прави в мен най-силна асоциация е Camera Pi. Това е една микроскопична 5 мегапикселова камера с размери 25х24х9 и тежи едва три грама (без интерфейсния кабел), снима видео в 1080p (30 кадъра в секунда), 720p (60 кадъра в секунда) и 640x480p (60/90 кадъра в секунда). Повече информация за нея можете да прочетете тук. Има и инфрачервена версия – NoIR Camera.

Разбира се освен камерата има и още много хардуер, който е съвместим (или правен за) Raspberry Pi, например дисанционни, мишки и клавиатури, WiFi, 3G, Infrared и Bluetooth приемници, звукови карти, GPS, smart card readers, екрани чувствителни на допир, скенери за пръстви отпечатъци и още много други. Ето тук можете да видите пълен списък с устройствата, които са тествани и работят на Pi.

Пето – малко история. Типично за мен започвам нещата малко отзад напред.

В общи линии идеята на проекта се е зародила от възпитаниците на Кеймбридж Eben Upton, Rob Mullins, Jack Lang и Alan Mycroft през 2006 г. с идеята да създадат достъпен компютър за общи цели. Техния ценови диапазон (само за платката) е едва $35 (като имат и Raspberry Pi Zero за … $5, но за него след малко). За рожден ден на проекта създателите смятат датата 29.02, защото тогава са направили и първата продажба на Raspberry Pi 1.
Ето и през какви периоди преминава Raspberry Pi за последните 4 години:

02.2012: Raspberry Pi Model B
10.2012: Raspberry Pi Model B rev2
02.2013: Raspberry Pi Model A
05.2013: Camera module
10.2013: Infra-red Camera module
07.2014: Raspberry Pi Model B+
11.2014: Raspberry Pi Model A+
04.2014: Raspberry Pi Compute Module
02.2015: Raspberry Pi 2 Model B
08.2015: Raspberry Pi Sense HAT
11.2015: Raspberry Pi Zero
02.2016: Raspberry Pi 3 Model B

По данни на Raspberry Pi foundation за 4 години са продадени над 8 милиона устройства.

Пето – най-доброто, което Raspberry Pi може да ви предложи – Raspberry Pi 3.

С всяка версия Raspberry Pi става невъзможно добро, а цената му си остава същата.

Ето и спецификациите с които може да се похвали последния Pi:

Чипсет – Broadcoam BCM2837 (CPU, GPU, DSP, SDRAM) срещу 32 битовия му предшественик Broadcom BCM2836;

Процесор – ARM Cortex-A53 1.2 GHz 64-bit quad-core срещу QUAD Core @900 MHz;

Рам памет – 1 GB @ 400 MHz (споделена с тази на видео картата);

Видео – Broadcom VideoCore IV @ 250 MHz, поддържа OpenGL ES 2.0 (производителност от 24 гигафлопа), хардуерен MPEG-2 и VC-1 кодеци,1080p 30 кадъра в секунда H.264/MPEG-4 AVC декодер и енкодер

USB – 4 готови за използване USB 2 порта (всъщност са 5, но единия е резервиран за ethernet модула);

Видео вход – 15 пинов MIPI  интерфейс (CSI) за връзка с Raspberry Pi Camera и Raspberry Pi NoIR);

Видео изход – HDMI (ревизии 1.3 & 1.4) в 14 резолюции от 640×350 до 1920×1200 плюс PAL и NTSC стандарти, composite video (PAL и NTSC) през стандартен 3.5 мм жак със споделен аудио изход;

Звук – всички версии на Raspberry Pi използват I²S;

Storage – през microSDHC карта, идва с допълнителни 4 GB eMMC;

Мрежа – Еthernet – 10/100

Мрежа – Wireless – 802.11n

Bluetooth – 4.1 поддържата и Low Energy

 

Цена от производител (без доставка и адаптер) – $35 (не забравяйте, че в тази версия WiFi и Bluetooth са вградени и няма нужда да ги купувате отделно);

Цена за адаптер – около $8

MicroSD карта – 16GB microSDHC за около $8

Обща цена без доставка – $51

Търсите нещо още по-евтино? Няма проблем. Клон на проекта Pi е Zero. Това е още по-малко, по-просто и много по-евтино устройство, което ще задоволи нуждите на всеки, който търси автоматизация на възможно най-ниска цена.

Спецификации:

Процесор – Broadcom BCM2835 ARM 11 @ 1 GHz (или с около 40% по-бърз от първото Pi);

Рам памет – 512MB LPDDR2;

Слот за microSD карта;

mini-HDMI сокет с до 1080p @ 60 fps

40 pin GPIO (съвместим с всички останали Pi от първия до последния);

Размер – 65мм x 30мм x 5мм

Цена – wait for it… $5.

Извод – няма нужда да сте запален geek или специалист, за да подкарате Raspberry Pi и то да върши точно това, от което имате нужда. Платката е производителна, не грее (много), не е скъпа и има огромно предназначение. Силно препоръчвам Raspberry Pi / Raspberry Zero на хора, които са от специалисти до начинаещи в бранша и дори деца (представете си вашия 10-12 годишен син/дъщеря да котролират кога диода закачен на GPIO-то ще свети и кога не).

 

Ако има интерес ще напиша и за конкурентите на Raspberry Pi, които са също толкова впечатляващи, а някои от тях – дори и по-евтини.