Архив июня 2018

Сокращение

БДСМ – база данных системы мониторинга.

А. В. Столяров, “Программирование: введение в профессию”

Посмотрел на свежие “краудфандинговые” книги А. В. Столярова:

http://stolyarov.info/books/programming_intro

Лишний раз убедился, что фанатизм несовместим с преподавательской деятельностью – пусть заведомо ложные утверждения частично убраны, использовать эти книги в качестве учебника (и, стоит полагать, слушать лекции автора) категорически нельзя.

Можно ли с чисто педагогической точки зрения яростно обличать “стандартизаторов” языков C и C++? Возможно, не все, что они делают – правильно, но стоит ли осуждать в учебнике (!) современные стандарты? Сам автор книги давно ушел из большого секса, но те, кто по этой книге учится сейчас – будут профессионально заниматься программированием через 4-5 лет. Местами есть относительно разумные объяснения, какими возможностями из новых стандартов пользоваться не стоит – но в целом “вместе с водой выплеснули и ребенка”, и, скажем, о существовании того же stdint.h вообще не упоминается. Можно ли сейчас считать компетентным программиста на C, не знающего о существовании этого заголовочного файла – вопрос риторический.

В общем, местами книги можно считать хорошими, местами – приемлемыми, а кое-что вообще следовало бы вычеркнуть. Явно не подходит для “введения в профессию” – а вот как элементарный справочник по программированию в Unix-подобной среде использовать можно, если грамотно отделять тараканов автора от фактического материала.

Как тебе такое, Элон Маск?

Пишут, что среди работников завода “Теслы” нашли саботажника:

https://www.cnbc.com/2018/06/18/elon-musk-email-employee-conducted-extensive-and-damaging-sabotage.html

Немного подробнее, с оправданиями мужика, где он утверждает, что безвинно пострадал за правду, а со слов представителей “Теслы” – он намеренно гадил в компьютерных системах на производстве:

https://www.carscoops.com/2018/06/fired-tesla-employee-says-hes-whistleblower-not-saboteur/

Все бы было неплохо – но на ВАЗе такое делали аж 35 лет назад:

https://habr.com/company/ua-hosting/blog/277487/

Интернет вещей, комменты

iot-comments

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

Почитал тут про кашрут

Имею два вопроса:

- кошерна ли свинья, которой перед забоем дали пожевать дирол или орбит?
- кошерно ли варить соевое мясо в соевом молоке?

О профессиях будущего

В известном “Атласе новых профессий“, изданном Агентством Стратегических Инициатив и Московской школой управления “Сколково”, профессии сквиртолога не обнаружено. Видимо, появится в новой редакции.

Уберизация как она есть

Показывайте этот ролик всякому, кто заводит разговор о sharing economy и прочих disruptive innovations.

Nils Patrik Johansson – Evil Deluxe

Экс-вокалист полюбившейся мне Civil War выпустил сольный альбом – в духе предыдущей своей группы, но, как мне показалось, поинтереснее их последнего альбома.

По-моему, вполне годно.

Про пенсионный возраст

Начну с задачки, приведенной в “Сборнике задач противоалкогольного содержания”, изданном в 1914 году:

alko-sber

Какую сумму мог бы скопить русский в действительности пьющий взрослый (см. предыдущую задачу) за 25 лет, если, отказавшись от своей пагубной привычки, он стал бы класть употребляемые на пропой деньги в Государственную Сберегательную Кассу, где у него бы за это время наросло бы еще процентов?

“Действительно пьющий взрослый”, по приведенной в предыдущей задаче статистике, выпивал в год 1 ведро и 16 бутылок водки, 1 ведро и 10 бутылок пива и 9 бутылок виноградного вина. Стоимость этого всего приводилась в предыдущей задаче, процентные ставки должны были быть известны читателю – а вот что произойдет с вкладом в Государственной Сберегательной Кассе уже в самое ближайшее время, не знал никто.

Так вот, приведу простой вопрос, на который может ответить каждый, не прогуливавший в школе историю:

Назовите период протяженностью 35 лет в новой или новейшей истории России, в течение которого не происходило войн, революций, гиперинфляции, конфискационных денежных реформ, экономических кризисов и прочей подобной херни.

PS Правильный ответ на оба вопроса: деньги лучше пропить.

Таймеры здорового человека (не на ардуине)

Если вы еще не видели очередного ардуиносрача на хабре – читать тут:

https://habr.com/post/413779/

Собственно, автора можно показывать студентам-медикам в курсе общей психопатологии как наглядный пример “бреда изобретательства” – но странное впечатление производят поддерживающие его комментаторы. Кажется, что они заперлись в своем маленьком ардуино-мирке и активно не хотят признавать, что их “проблемы” (те же таймеры, например, или многозадачность) решены много лет назад.

Вот, скажем, в комментариях автор с гордостью заявляет – мол,

типовое время задержки в системе составляет 10 мс (но пиковые задержки могут быть значительно больше и не нормируются)

- и более того,

на реальных задачах это особой роли не играет потому, что 99,(9) процентов времени в системе остаются типовые задержки

Вы примерно представляете себе, что такое 10 мс? Это примерно до хрена, если речь идет о несложной, в общем-то (но абсолютно реальной) задаче типа управления инжекторным двигателем – целый оборот коленвала при 6000 оборотах в минуту. За это время надо:

- открыть форсунки;
- закрыть форсунки (выдержав требуемое время впрыска);
- в нужный (с точностью до десятков микросекунд) момент жахнуть искрой в нужную пару цилиндров;
- прикрыть или приоткрыть регулятор холостого хода;
- сделать еще кучку полезных дел – например, считать показания десятка аналоговых датчиков (ну ладно, в конкретном цикле – можно обойтись и двумя, ДМРВ и ДПДЗ) и пересчитать параметры работы двигателя (время впрыска, опережение зажигания и так далее);

И это не какие-то там нереальные космические нанотехнологии, это в каждом сраном Жигуле стоит и надежно работает (на убогом SAF C509). Не знаю, конечно, как оно сделано в том же Январе или Микасе, а вот исходники MegaSquirtAVR вполне доступны для изучения (после минимальной гуглежки) и там ничего ужасного нет – в общих чертах, кстати говоря, это повторяет материал обсуждаемой лекции (где-то с 1:16:46). В системе поддерживается очередь событий (типа “открыть группу форсунок такую-то”, “закрыть группу форсунок такую-то” и так далее), в нужный момент (скажем, в верхней мертвой точке – она определяется по датчику положения коленвала, или при определенном угле поворота того же коленвала) очередная пачка событий со временами их срабатывания добавляется в очередь. Один из таймеров, “тикающий” с периодом в 4 микросекунды, начинает отсчет до ближайшего события, а при срабатывании прерывания, во-первых, выполняется связанный с событием код (довольно элементарный – “дернуть” одной из ножек микроконтролера), и во-вторых – начинается отсчет времени до следующего события из очереди. Все это работает на AtMega128 – и по отзывам, работает вполне неплохо.

Скажете, не всем надо управлять инжекторными двигателями? Хорошо, расскажу тогда про мой первый проект на микроконтролере – идейно, кстати говоря, очень похожий. Сделан он был, правда, не на AVR, а вовсе на PIC, и представлял собой PPM-кодер для аппаратуры радиоуправления. PPM – или Pulse Position Modulation – это распространенный стандарт, позволяющий “упаковать” сигналы для нескольких (до 8) сервомашинок в одну “посылку” длительностью около 20 мс. Принцип формирования (точнее, декодирования) PPM-сигнала показан на рисунке:

ppm-decode

Декодер, кстати говоря, делается на одной микросхеме CD4017 – схема есть тут (оттуда же я уволок и картинку выше):

http://rconline.ru/modules/smartsection/item.php?itemid=49

Длительность “посылки” составляет 20 мс, пауза между импульсами каждого из каналов – 0,3 мс, а длина каждого из “канальных” импульсов – от 1 до 2 мс (считая вместе с паузой). Для восьмиканальной (максимально доступное количество каналов в PPM-аппаратуре) длина синхроимпульса составит 4 мс. Кстати, теперь понятно, почему сервомашинки управляются таким, на первый взгляд, странным образом?

Так вот, имея “в активе” PIC16F72 с АЦП и прочитанные пару глав из самоучителя Корабельникова (не смейтесь – но 11 лет назад в жанре “введение в микроконтролеры для чайников” выбор был между слегка упоротым Корабельниковым и полностью шизофреническим 123avr) я соорудил вполне приличный кодер для PPM-сигнала, поддерживающий до 8 каналов с 8-битным разрешением (для аппаратуры радиоуправления 8 бит – уже неплохая разрядность, в самой дорогой аппаратуре можно встретить 10-битные АЦП). Опять же, все очень просто – запускаем таймер с частотой 10 МГц (для удобства счета), и радостно пользуемся тем фактом, что один отсчет этого таймера – это в точности 0,1 микросекунды. При срабатывании прерывания таймера – просто загружаем в него либо значение, соответствующее длительности паузы, либо заранее вычисленную длительность “сигнального” импульса. Немного сложнее, чем генерация обычного ШИМ на том же таймере – но принцип примерно тот же.

Про многозадачную операционную систему на PIC рассказывать, наверное, не буду – собственно, под видом “операционной системы” предлагался просто способ организации кода в виде относительно независимых “задач”. Этого в “самоучителе” не было – но найти ее и использовать не представляло особого труда.

При чем здесь ардуино? Наверное, ни при чем – если, конечно, не обращать внимания на огромное количество совершенно поверхностных материалов “для начинающих”. Честное слово, даже упоротый Корабельников, невероятно многословно рассказывающий в своем “самоучителе”, как организовывать задержки с использованием аппаратного таймера и прерываний, намного лучше любого материала “про ардуино”, где то же самое предлагается делать с помощью разнообразных задержек типа delay() (библиотека же Timer1 считается в среде ардуинщиков каким-то “высшим пилотажем”, а заодно и не работает на некоторых платформах).

А где приличные корпуса для всякой электроники искать?

Есть девайс, внутри устроенный примерно так:

shield-lcd

Хочется выпустить небольшую – скажем, из 10-20 устройств “серию”, и хочется подобрать под это дело корпус приличного вида – что-то, например, в таком духе:

alpha-driver-display

Ну или даже таком:

blunik-ii

В общем, хочется нормальный пластиковый корпус размером где-то 85×50x25 мм с окошком для ЖК-индикатора – и вот тут сразу возникает вопрос – а где такие искать? Продукция фирмы Gainta, в изобилии имеющаяся в Чип-и-Дипе, выглядит убого, а заодно требует доработки напильником. Вдобавок, ни в каталоге Чип-и-Дипа, ни в каталоге самой Gainta нет минимально приличного параметрического поиска (последний вообще сегодня сдох). Вот не поверю я, что негде взять приличную “мыльницу” с заранее проделанным отверстием для “стандартного” ЖК-дисплея, типа какого-нибудь Winstar 1602B.

Общественность что-нибудь подскажет?

RFC по английской грамматике

Наверное, каждый, кто изучал английский, помнит, что модальные глаголы (всякие там can, should, must и так далее) обозначают какую-то неведомую хрень, типа “возможность, но не как физическое состояние, а как разрешение” или “долженствование с оттенком вынужденности” – попробуйте понять это хотя бы на русском! Оказывается, что вся эта чушь изложена в одном из RFC в предельно лаконичной форме – пользуйтесь:

http://www.ietf.org/rfc/rfc2119.txt

2018 год

…а люди все еще с удивлением обнаруживают, что внутри ардуины стоит атмега, и что эту атмегу можно программировать на ассемблере:

https://movaxbx.ru/2018/06/05/как-программировать-arduino-на-ассемблере/

The next stop is Casino!

В преддверии ЧМа по ногомячу в подмосковных электричках добавили объявления на “английском” языке. Теперь на станции Выхино на чистейшем английском звучит объявление:

The next stop is Casino!

Лас-Вегаса из окна электрички, к сожалению, разглядеть не удалось.

Зашел на Хабр поржать

Ожидания оправдались – моментально нашел рекламу некоего “коворкинга”, который, среди прочих плюшек, предлагал возможность “перекусить в небольшом кафе” прямо там, на территории. Фотография кафе – в большом разрешении, достаточном, чтобы разглядеть тамошние цены (фото кликабельно):

coworking-cafe

Итого – лимонад 130-170 рублей, смузи 150 (или 200 за “шепот травы мятный” – похоже, без Марь Иванны тут не обошлось), разного рода “фреши” – от 80 за морковный до 160 за сельдереевый, чай по 130 рублей и кофе от 70 до 150. Обещанных “бизнес-ланчей” не видно вообще, но что сука характерно, цены мало отличаются от какой-нибудь “Шоколадницы”.

#сказочноебали

dublin-paris-bali

Что-то пельменей захотелось

Не пойму, кому продал?

TI Store

Посмотрел я цены в московских магазинах на некоторые детальки производства Texas Instruments и стало мне немного печально. Возьмем, к примеру, какой-нибудь модуль с WiFi – да хоть CC3200MOD.

Чип-и-Дип готов привезти под заказ за 3-4 недели и хочет за это 1380 рублей.

Компэл/Терраэлектроника/Электронщик – тут вариантов несколько больше. Например, 1520 рублей за одну штуку и отгрузку на следующий день. Если берете три штуки или согласны подождать две недели – то цена падает до 1300-1350 рублей. Если же вы – человек серьезный и собираетесь использовать эти модули в серийном устройстве – то партия от 15 штук обойдется вам в 700 рублей за штуку.

Примерно такая же картина – и на eFind, розница в Москве хочет 1300-1500 рублей (отдельные барыги задирают цену и до 2000), оптовая цена не опустится ниже 650-700 рублей, как в Терре.

А что же “у них”? Оказывается, в TI Store – магазине на сайте Texas Instruments – есть не только разнообразные отладочные платы, но и множество деталей производства все того же Texas Instruments. CC3200MOD стоит там в розницу (до 10 штук) всего 11,88 $ – по текущему курсу это 738 рублей.

Оптовая цена там опускается до 8-10 долларов – но не забывайте, что оптовую партию надо еще и растаможить, так что разница с Компэлом практически неощутима. Интереснее подход к “рознице”. TI Store осуществляет доставку Fedex-ом, причем стоимость доставки International Economy указана, как 0,0 $ (и это действительно так). Итого, заказав в понедельник для проверки парочку CC3200MOD, я получу их уже в следующий вторник по цене 738 рублей/штука – наверное, недостижимый вариант для московской розницы. Неплохо, да?

Я, конечно, в такую щедрость TI не особо верю – так что в заключение хотел бы спросить – а какие тут скрыты подвохи?

UPD Согласно таможенной декларации, стоимость посылки составляет не 23,76 $, а что-то около 18 $. Соответственно, стоимость доставки – около 6 $. Возможно, у TI какой-то хитрый контракт с Fedex – потому что по калькулятору на федексовском сайте, стоимость одной только доставки из Далласа в Москву переваливает за сотню баксов.

UPD2 Получил свой заказ – и даже не во вторник, как прогнозировал Fedex, а вовсе в понедельник. Итого – могу рекомендовать, вполне подходит для небольших и “разовых” заказов.