Rust, утки и лягушки



Читаю "Программирование на языке Rust".

Цитата про автовыведение типов:


"Этот подход часто называют «утиной типизацией»: если нечто квакает как утка, то это и есть утка."

Квакает!

Понимай как хочешь  — то ли косяк перевода, то ли прикол:)

СтопХам и ПДД


Ребята из СтопХама, гоняющие ненатуралов с тротуаров — молодцы.

Однако, теоретическая подготовка у них чутка проседает. Как минимум по двум пунктам:

1. Постоянно объясняют нарушителям, что тротуар отделяется от проезжей части бордюром или газоном. Мол, вот, смотрите - вы заехали сюда через бордюр, а значит, вы на тротуаре.

Но, на самом деле, в определении тротуара ничего про бордюр не говорится.

Пункт 1.2 ПДД:

"Тротуар" - элемент дороги, предназначенный для движения пешеходов и примыкающий к проезжей части или к велосипедной дорожке либо отделенный от них газоном.

Есть бордюр или нет бордюра — не имеет никакого значения.

2. Некоторые особо продвинутые нарушители заявляют, что они едут на разгрузку/погрузку, а значит, имеют право ехать по тротуару. СтопХамовцы в ответ упираются и говорят — нет, не имеете.

На самом деле — да, имеют право ехать по тротуару.

Пункт 9.9. ПДД:

Запрещается движение транспортных средств по разделительным полосам и обочинам, тротуарам и пешеходным дорожкам (за исключением случаев, предусмотренных пунктами 12.1, 24.2 - 24.4, 24.7, 25.2 Правил), а также движение механических транспортных средств (кроме мопедов) по полосам для велосипедистов. Запрещается движение механических транспортных средств по велосипедным и велопешеходным дорожкам. Допускается движение машин дорожно-эксплуатационных и коммунальных служб, а также подъезд по кратчайшему пути транспортных средств, подвозящих грузы к торговым и другим предприятиям и объектам, расположенным непосредственно у обочин, тротуаров или пешеходных дорожек, при отсутствии других возможностей подъезда. При этом должна быть обеспечена безопасность движения.

Формулировка в этом пункте, конечно, отвратительная. Очевидно, что это исключение внесено в Правила ради грузовых машин, подвозящих тяжелые грузы к магазинам. Но сформулировано оно слишком обобщенно, в результате это исключение может использоваться и обычной легковой машиной, подвозящей что угодно к дому водителя.

Разумеется, на самом деле нарушители вовсе не подвозят груз для разгрузки, это просто отмазка. Но формально — СтопХамовцы не должны задерживать таких товарищей, в момент движения они ничего не нарушают. По идее, Стопхамовцы в таком случае должны пропустить нарушителя, затем дождаться, пока тот припаркуется, и, если он подъехал куда-то, куда есть другой способ подъехать, или если он не занялся немедленно разгрузкой — вот тут-то и брать поганца за жопу.

Unity и физика



Читаю документацию по Unity. Класс Rigidbody, предназначенный для расчета физики.

Цитата из описания метода Rigidbody2D.AddForce:

«Объект будет ускорен по силе в соответствии с законом "сила = масса * скорость" - чем больше масса, тем больше сила, требуемая для ускорения к данной скорости.»

Вот это поворот!

Русский перевод плевать хотел на законы физики.

Модуль Image::Compare



Недавно я писал, что модуль для сравнения изображений Image::Compare содержит пару ошибок, которые мне не дают покоя. А автор на багрепорты не реагирует.

Что ж, пришлось приложить некоторые усилия и самому стать майнтейнером модуля.

Усилия, конечно, не ахти какие, в основном всё сводится к нескольким письмам автору с копией на modules@perl.org. Автор, обычно, динамит где-то с месяц, потом вмешивается Neil Bowers и назначает тебя майнтейнером...

В общем, теперь я разместил исходники модуля на Гитхабе и исправил раздражавший меня варнинг "Constants from lexical variables potentially modified elsewhere are deprecated".

Подключение Arduino к Mac



При подключении Ардуины к Маку, на котором установлена последняя на данный момент macOS Sierra, Ардуина не видна. Чтобы она стала видна, требуется установка драйвера для чипсета CH34x. Но драйвер от вендора сломан - после его установки подключение Ардуины вызывает кернел-паник и Мак перезагружается. Сюрпрайз.

Исправленный драйвер можно скачать с Гитхаба. С ним всё отлично работает.

Модуль Image::Compare



По работе понадобилось использовать модуль Image::Compare. В нем есть пара ошибок, бегрепорты в трекере висят, автор не реагирует. Последнее обновление модуля было два года назад. Репозитория на Гитхабе у модуля нет.

Походу, придется опять брать дело в свои руки и пытаться получить контроль над модулем, как это уже было однажды с модулем XML::WBXML.

Установка перл-модулей из гит-репозиториев. Всё плохо


В проекте на работе используется куча гит-репозиториев с перл-модулями. Все их нужно собрать вместе, установить и протестировать. Мучаюсь с утилитой, которая сможет это сделать.

- Стандартный cpan не умеет брать модули из репозитория.
- Продвинутый cpanm умеет, но только вручную. Из Makefile.PL или cpanfile читать не умеет.
- carton, как надстройка над cpanm, умеет то же, что и cpanm. Т.е. не умеет.
- cpm умеет читать cpanfile, но только при запуске непосредственно в корне устанавливаемого модуля. Рекурсивно по зависимостям дальше не идёт.

Беда-печаль...

Модуль Perl Data::Printer

У меня на работе в проекте используются текстовые файлы, внутри которых используются некоторые специфические непечатаемые (non-printable) символы. В процессе разработки нужно иметь возможность видеть, что именно находитcя в файле.

Для показа таких символов я использую модуль Data::Printer. Вообще, этот модуль очень много всякого умеет, но сейчас меня интересует именно показ непечатаемых символов.

Collapse )

Опции для perltidy

Всё время забываю, как делаю в разных проектах, надо записать для единообразия:

-pbp  -nola -l=0 -conv

Где:

-pbp — Форматировать по PBP
-nola — Не делать "выступ" для МЕТОК:
-l=0 — Не ломать строки по длине (длина строки 0 = бесконечность)
-conv — делать сразу финальный результат (повторный запуск ничего не изменит)

Подробности в документации.

Стивен Прата, язык Си



Читаю книгу Стивена Праты «Язык C. Лекции и упражнения».

Книга очень подробная, рассчитана на изучение программирования с нуля. В связи с этим Прата рассказывает всё довольно популярно и образно.

Цитата из главы про синтаксические ошибки:

"В качестве примера рассмотрим предложение «Быть программные ошибки катастрофическими могут». В этом предложении используются правильные слова, однако порядок их следования некорректен. Синтаксические ошибки в C связаны с тем, что допустимые символы языка размещаются в неправильных местах."

Видимо, в исходном английском языке эта фраза с переставленными словами звучит неправильно. Но, видимо, Прата не догадывался, что в русском языке слова поставить в любом порядке можно, правильным предложение останется, ибо суффиксов сила в нём есть!