програмиране

Малки 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

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

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

[email protected] | 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.

Free backup script

Баси тъпото заглавие.

Anyway – днес fork-нах един проект, който използвам от извесно време с разни адаптации за marvin и реших да го публикувам.
github проекта за сега носи работното име Full Web Server Backup, а основния проект можете да намерите тук.

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

  • Основния проект има Amazon S3 sync, аз го махнах, защото използвам услугите на pCloud;
  • В моя има архивиране на /etc, почистени са малко неразбории.

За в бъдеще смятам да добавя:

  • Избор на compression level;
  • Изнасяне на mySQL user/pass в ~/.my.cnf
  • Избор на специфични директории в /etc, които да архивираме или exclude-нем;
  • cronjob;
  • Архивиране на /home директорията на определен потребител (ако имаме права за това).

Ако имате друга идея с радост ще я прегледам. marvin си пази бекъпите с този скрипт и за момента работи безпроблемно.

01.11.2017

Има дни в които искаш да си купиш книга за Java и ant и да ги запалиш в пентаграма гледайки как синия пламък оформя странни форми на къдрави скоби и NULL-ове. Има и дни в които нещата не изглеждат така безнадеждни.

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

In other news:

Честит празник на програмиста

Честит празник на всички програмисти.
Деня на програмиста е официален празник в Русия от 2009 г. насам и се празнува на 256 ден от годината (на 12.09 при високосните или 13.09 при невисокосните години).

Избора на числото 256 също не е случаен. В рамките на един байт най-голямото десетично число, което можем да запишем в двоичен формат е 255 = 1×27 + 1×26 + 1×25 + 1×24 + 1×23 + 1×22 + 1×21 + 1×20 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 28 – 1

 

Ако броим нулата (а ако сме (не само) JS devs винаги я броим) възможните числа, които могат да се запишат са 256.
Та – честит ви професионален празник, хора. Бъдете с остри умове, меки нрави (но не много меки), усмихнати и наслаждаващи се на това, което правите.

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

Проекта

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

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

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

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

 

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

regex или порно за мозъци

Преди 2 седмици се заиграх с jMeter (статия планирам в близко бъдеще, супер интересен и мощен tool!) и се наложи да взема стойността на един hidden field, който е уникален за всяка потребителска сесия. Кода изглеждаше така:

<input name="form_key" type="hidden" value="PmIAQBj6jXqBIX8g" />
</pre>
<input name="form_key" type="hidden" value="PmIAQBj6jXqBIX8g" />
<div id="authenticationPopup" style="display: none;" data-bind="scope:'authenticationPopup'">
<p id="find_result" class="result">А нужното поле, както можете да се досетите - value.</p>
<p class="result">Между другото ако ви е интересно това е стандартна Magento 2 Enterprise инсталация.</p>

</div>
</div>
И моя гениален ум просветна веднага - "Просто е, ще ползвам regular expression". Всеки е чувал за регулярните изрази и за техните полу-митични възможности - от взимане на стойност по определен набор от инструкции,  validation, assertation и т.н. и т.н.

Отворих бодро regexp-а на Java и след около 15 минути мозъка ми излезе в почивка. Оказа се, че не е чак толкова лесно, а като попаднах на този (по мое мнение грозен, бавен и неефикасен (според stackoverflow)) <a href="http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html">regexp за валидиране на mail addresses</a> ми се схвана душата.
За радост тулове много, а добра работа ми свърши <a href="http://java-regex-tester.appspot.com/">http://java-regex-tester.appspot.com/</a>.

Решението на задачата е просто и изглежда по този начин:
<pre>[code](?<=value\=\")([a-zA-Z0-9]*)

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

 

Сигурно се питате защо “порно за мозъци”? Много просто – търсенето и експериментирането с такъв набор от инструменти се оказа интересна задача и макар за някои да е елементарна за моя пръв сблъсък ми беше на ръба да изям клавиатурата.

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, които са също толкова впечатляващи, а някои от тях – дори и по-евтини.

Недко разказва: За “лошите” работодатели

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

Та си говорихме скоро за работата и се учудих на всеобщото мнение как, цитирам “Всички работодатели са лоши и те изстискват” и там каквото беше нататък.

Съвсем кратко, без да изпадам в излишни подробности, искам да споделя моя опит.

 

НИКОГА не съм започвал да работя нещо, което не обичам. От кабелджия опъвайки по цял ден кабели насам-натам носейки стълба, която беше тежка колкото мен за малък ISP (с тайното желание някой ден да стана системен администратор), през търговията с компютри, внедряването на софруер за управление на бизнеса (включително и за управление на индустриални съоръжения) та до последните години в които съм се квалифицирал основно като Software Quality Assurance Engineer. И никога и не съм попадал на “кофти работодатели”.

И ще ми кажете, че това е късмет, но мога да ви уверя, че не е.

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

Относно заплатите и условията съм чувал толкова много, че ако го разпиша сигурно ще стигна max post size на wordpress. Имал съм познати, които като им опиша офиса в който работя, всичките излизания с колеги, teambuildings, работна среда и това с което се занимавам веднага започват с “Ама то сигурно там ви изстискват, сигурно шефовете са гадни, сигурно има страшно много работа” ала бала. Well – fuck off, dudes.
Всеки иска да започне да работи за 1500 лв . – 2000 лв. стартова, ‘щото видиш ли в IT бранша хора няма. Еми няма. Ква-ли-фи-ци-ра-ни хора няма обаче.
Не може човек, който е прочел общо 12 страници за HTML/CSS/JS/PHP/bash или каквото и да е там, който най-малкото не може да си настрои работната среда (и не се опитвайте да ме убедите, че примерно един PHP developer не трябва да разбира от Apache(nginx)/mySQL(MariaDB)/малко Linux (или съответно .NET developer с неговата среда) ) да очаква да започне на подобна заплата.

За това се изисква да си съдереш задника от четене, от анализиране, от мислене, от проби и грешки. И това да ти доставя удоволствие. Да – звучи малко садо-мазохистично, но ако не изпитвате удоволствие от това, което правите тогава не сте за тази професия.

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

 

Note – сега се сетих за два страхотни примера за хора, които искат да се развиват:

  1. В университета в който учих ( и водих лекции по едно време ) имахме колега, който беше на около 60 години. С пъти по-надъхан от нас, с пъти по-заинтересован, по-аналитичен, по-добър и за пример. Не веднъж е спирал хора по коридора да пита кое как става, а с него сме прекарали доста време в разговори за IT частта. И беше абсолютното удоволствие да видиш човек, който няма абсолютно никакъв подобен background, който не разбира английски, компютрите му бяха табу да си записва всичко и на следващия ден да ти задава въпроси по това, което сме си говорили и като му кажем, че е точно така и да виждаме зле прикритото вълнение, което блика в него. Да е жив и здрав бай Данчо.
  2. Злати – от дизайнер реши да се преквалифицира на developer. Сега пише основно на C# като има и front end задачки. Пак аналитична, критична и надъхана. Удоволствие е да ѝ намериш бъг и да ѝ видиш погледа като ти покаже фикснатата версия. Пак задаваща въпроси и четяща много.

 

Note 2 – с писането на този пост се присетих, че няма да е лоша идея да разпиша един за това как аз избирам евентуален бъдещ работодател (research + комуникация с компанията), че често основно хора на които съм водил лекции някъде са ме питали. Така, че през следващите дни очаквайте нещо по въпроса.

 

Ваш (хейтещ),

Недко.

Безплатно: Raspberry PI за Python програмисти

By PacktPub
By PacktPub

Raspberry Pi Cookbook for Python Programmers

Открийте какво можете да направите с един Python качен върху Raspberry PI с офертата на Packt Publishing, която пуснаха безплатно само за днес (редовната ѝ цена е малко над $25).

Книгата се състои от 10 глави , които включват:

  1. Как да започнем с Raspberry PI:
    1. Инсталиране на Raspberry PI NOOBS;
    2. Настройка на Ethernet и wireless мрежа;
    3. Използване на прокси, връзка към VNC/SSH (през X11 forwarding);
    4. Конфигуриране на споделена директория използвайки Samba;
    5. Update към latest на Raspberry PI и Noobs/Debian;
  2. The real deal – Инсталация и първи стъпки с Python, стрингове, файлове и менюта:
    1. Въведение;
    2. Работа с текст и стрингове;
    3. Работа с файлове и error handling;
    4. Създаване на boot-up меню;
    5. Създаване на самодефинируемо (баси думата. На английски е self-defining) меню.
  3. Използване на Python за автоматизация и по-висока продуктивност;
  4. Създаване на игри и графика използвайки IDLE3 за debugging, Tkinter Canvas за чертаене с мишката и създаване на 1-2 игрички (това е интересно да се види на живо);
  5. Създаване на 3D графика – създаване и импорт на 3D модели, създаване на 3D и билдване на карти и лабиринти;
  6. Използване на Python за комуникация с хардуер. Тук ще се покажат няколко ултра интересни неща в които е силната страна на Pi-то – контролиране на LED светлина, обработване на данни през бутон (тоест какво да прави при натиснат/изключен бутон), създаване на shutdown бутон, използване на GPIO и други;
  7. Работа със сензори. Работа с i2c бъс, четене на аналогови данни и използването на analog-to-digital конвертор, логване на данни, разширяване на функционалността на Raspberry PI с GPIO с I/O expander, събиране и изпращане на данни към online services.
  8. Създаване на проекти с Raspberry Pi camera module;
  9. Да си направим робот – използвания хардуер е Rover-Pi с линеарно задвижващи се мотори, advanced motor control, създаване на шестокрак Pi-Bug робот (да стряскате с него любимата), избягване на обекти и ориентация;
  10. Интерфейси – автоматизиране на дома с remote sockets, използване на SPI за контрол на LED матрици, комуникация през серийния интерфейс, контролиране на Raspberry PI през bluetooth и USB devices.

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

Вариантите в които пристига книгата са:

  • Онлайн през техния Piktlib. Там четенето е приятно, всичко е структурирано добре със съдържание на книгата в дясно и опция за търсене из страниците. Проблем е, че ресурса понякога е малко бавен. Няма опция за bookmarks на определени текстове или страница и ако не помня до къде съм стигнал рискувам да загубя немалко време докато се ориентирам кое съм чел и кое не;
  • PDF;
  • ePub;
  • Mobi;
  • Kindle с два ebook формата – PDF или Kindle format. След избор на формат въвеждаме Kindle адреса си и ще получим книгата синхронизирана на Kindle–а без да я прехвърляме от устройство на устройство;
  • Code files – Всичкия код, който е използван в книгата като примери може да бъде изтеглен също от тази секция.
  • С доплащане можете да получите и хартиения вариант на книгата.

Та така де. Книгата изглежда интересна.

 

Линк за теглене можете да намерите тук.

 

Приятно четене.