Тег ‘паяльный бред’

Чудо китайской инженерной мысли

Ковыряю сейчас метеостанцию RST Meteoscan Pro с целью вытащить самописной программкой по USB данные наблюдений. Удивительно, но в Дойчланде такой же девайс стоит 100 евро и продается в обычных супермаркетах Маркткауф. Единственная разница – нашлепка на морде, в Германии она называется Mebus TE923 (а в Штатах – Honeywell TE923 или Irox USB Pro, продающиеся по 200 баксов). Реально же на платах внутри написано Hideki TE923.

В общем, китайцы удивляют по полной с самого начала. Вместо того, чтобы “вписать” метеоданные в дескриптор HID-устройства (это не ругательство, а класс USB-устройств, очень полезных по жизни), они развернули “поверх” HID целый протокол обмена данными, способный “вписать” 32 байта “реальных” данных в 56 байт – это 7 восьмибайтовых пакетов, максимально допустимых для HID-устройства. Как мне кажется, это – вариация на тему какого-то древнего протокола обмена по RS-232, отсюда вылезли и обязательные даже в восьмибайтовом пакете контрольные суммы, и переменная длина “значащих” байт в пакете – например, в одном пакете имеется 7 “значащих” байт и 1 байт длины, в другом – значащий байт только один.

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

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

Кстати, никак не доходят руки до окончания обещанной для EasyElectronics статьи про USB. Ни у кого нет идей, какой можно сделать интересный демонстрационный девайс, который стоило бы “научить” двусторонему обмену данными с компьютером? Очередной ЖК-индикатор с выводом текущей песни в Винампе делать не хочется, да и Винампом я не пользуюсь.

Восстание машин

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

Речь идет про окружающие нас микроконтролеры. По многим подсчетам, у “современного цивилизованного человека” в квартире и машине имеется около 50 микроконтролеров. Каждый такой микроконтролер – это небольшой компьютер, снабженный собственным программным обеспечением, которое, к сожалению, подвержено ошибкам. Чтобы не быть голословным, приведу небольшой пример.

Думаю, многие видели на дорогах чудо отечественного автопрома под названием УАЗ Патриот (а кто не видел, может мельком ознакомиться с ТТХ по ссылке). В общем, по массогабаритным характеристикам это типичный представитель класса БЧД (большой черный джип), а по потрясающей маневренности и отличной управляемости – ближайший родственник ЗиЛ-130. А вот – шокирующая правда (из газеты Авторевю):

Дмитровский полигон, тест Авторевю, внедорожник УАЗ Патриот ходом штурмует заснеженный подъем. Половина уже пройдена, осталось еще немного, еще чуть-чуть… И вдруг — хр-р-р! — у УАЗа выбивает передачу в «раздатке», и машина остается без тяги. Ногу на тормоз, чтобы не скатиться вниз! Педаль встает колом, а Патриот лавиной катится вниз, неумолимо набирая ход. Поберегись! Почуяв неладное, фотограф отскакивает в сторону, а УАЗ, откатившись на десять метров от подножия склона, наконец-то «включает» тормоза и останавливается.

Оттуда же, из другой статьи:

Как показали дополнительные заводские тесты, которые ульяновцы провели после публикации АР, время отключения тормозной системы после длительной пробуксовки может достигать 10 секунд. Очень опасно! В чем причина? Заводчане отмалчиваются, но нам стало известно, что доводку программы управления АБС для Патриота компания Bosch поручила… студенту-практиканту. В принципе это обычная практика для крупных компаний, которым фирмы «третьего мира» заказывают какие-нибудь малобюджетные работы. Но странно, что ни тесты самой фирмы Bosch, ни заводские испытания УАЗа этой прорехи в программном обеспечении не выявили.

Решайте сами, а мне не хотелось бы оказаться на тормозном пути двухтонного внедорожника с “зависшей” АБС. К чести УАЗовских конструкторов, хочется добавить, что проблемы с раздаточной коробкой и АБС на более новых машинах уже решены, и вообще по количеству внедренных с начала производства доработок “Патриот” мог бы дать фору многим другим отечественным автомобилям (которые ездят с хорошо известными “косяками” уже десятки лет). К сожалению, далеко не все владельцы УАЗов 2007 года выпуска знают о дефекте АБС – многие “забивают” на дилерское техобслуживание сразу после покупки.

Наверное, от глюков прошивки УАЗа можно спастись, не выходя на улицу (а жратву покупать в “Утконосе”, хе-хе). Но кто гарантирует, что такой же студент-практикант не заложил подобную “мину замедленного действия” в микроволновку или гидромассажную ванну с десятком программ? Кто может поручиться, что стиральная машина не зальет соседей внизу, а музыкальный центр не врубит марш “Гори, еврей!”, когда рядом будут проходить озлобленные антифашисты? А как вы будете себя чувствовать, когда курьер из “Утконоса” на ваших глазах провалится в шахту лифта? И что вы будете делать, когда кондиционер с термостатом, сговорившись, решат вас немножко заморозить?

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

Эти методики проникают и в более “ответственные” приложения. Как заметил [info]infowatch, в следующий раз прошивку для АБС будет делать аутсорсинговая фирма, “у которой в штате тот же один практикант плюс три юриста”. А затем – и индусы подключатся. Возможно, критикуемый в тамошних комментах “несовременный” метод, когда программу пишет собирающийся на пенсию дядечка, менее подвержен ошибкам, чем перекладывание ответственности, называемое модным словом “аутсорсинг”.

Но на мой взгляд, это не столь страшно, сколько постоянно растущая сложность встроенных систем. Если на УАЗе еще можно вытащить предохранитель и послать Bosch с ее практикантами в известном направлении (у нас нет дорог – одни направления), то в любой современной импортной машине компьютер еще и проверит уровень алкоголя в выдыхаемом воздухе, напомнит о необходимости пристегнуться, скажет “до сервиса осталось 100 километров”, а если водитель заснет за рулем, несмотря на алкотестер – еще и подложит подушечку. Надо ли говорить, что без этого компьютера вы просто не запустите двигатель?

Помните закон Брукса про количество связей в коллективе? То же самое верно и для числа связей между модулями программы. Предположим, программист пишет программу из 7 как-то взаимосвязанных частей (большее количество трудно держать в голове) – например, работающую с 7 какими-нибудь датчиками. Тогда между ними имеется 7*6/2=21 различная “связь” (например, “если опросить датчик А, то следующее показание датчика Б будет на 1 завышено”) – а это количество уже удержать в голове нельзя и можно допустить ошибку, просто забыв учесть какое-либо из них. Современные языки программирования и “соглашения о кодировании” позволяют свести количество связей между модулями к минимуму (предположим, к 6 вместо 21) – но о каких “паттернах проектирования” речь может идти в случае микроконтролера с парой килобайт ОЗУ? Если же уйти от “мелких” PIC и AVR к младшим ARM – то тут мы столкнемся со сложностью самой аппаратной платформы, не уступающей неплохому компьютеру 70-х годов. К тому же, если захочется использовать на этом ARM какую-нибудь адаптированную ОС – нет никаких гарантий, что в ней самой нет ошибок.

Не знаю, как будет называться OS/360 применительно к встроенному ПО (а скорее всего, каждый эмбеддер создаст “свою”, с которой и натрахается вволю), а обращу внимание еще на один прискорбный факт – сейчас практически нет эффективных способов проверки программного обеспечения на безошибочность. Как говорил Дейкстра, тестирование может лишь выявить ошибки, но не доказать их отсутствие. С другой стороны, столь любимое Дейкстрой формальное доказательство правильности программ совершенно непригодно для использования.

В мире hardware этот этап прошли в середине 90-х, после обнаружения ошибки FPU в первых Pentium. Тогда из обширного багажа знаний уехавших на Запад советских ученых были извлечены математические методы проверки работы электронных схем, не требовавшие перебора всех вариантов входных данных – и благодаря им удалось внедрить такое тестирование для всех новых разработок. Думаю, что и для программ существуют аналогичные методики – в конце концов, любая программа для компьютера представляет собой лишь конечный автомат, разве что с невероятным количеством состояний.

Интересно, каким будет программный сбой, который заставит внедрить “контроль качества” в разработке программ? Думаю, что даже если Берлускони улетит в Везувий на презентованном ему в свое время Путиным “Патриоте”, никто и не почешется. А вот упавший в Большой Каньон Обама – это уже поинтереснее. Подарит ли Медведев Обаме замечательный российский джЫп (с негротюнингом, разумеется)?

Господа! А также товарищи, камрады и как вас там!

Предлагаю покурощать википузиков в естественной среде обитания в связи с проникновением в ихнюю википедию поноса из так называемого “Музея политической истории России“. Википедические опущенцы носятся с фотографией зверски покореженного магнитофона “Тембр” или МАГ-59М, выставленного в пресловутом музее с табличкой “Самодельный магнитофон, Ленинград, 1970. Изготовлен для М. В. Крыжановского на одном из военных заводов”.

Не знаю, как музейщики представляли себе процесс выноса с военного завода магнитофонного шасси массой в 15 килограмм и неслабых габаритов, да и само подпольное изготовление магнитофонов в 70-е было совершенно не нужно – заходи в магазин и покупай – похуже с полок, получше из-под прилавка. В общем, табличка рассчитана на ахающих барышень, уверенных, что приемник “Спидола” необходимо было приобретать по спецразрешению КГБ, а все владельцы магнитофонов были под наблюдением того же КГБ, чтобы не встретичались с владельцами “Спидол” и не записывали на магнитофон “Голос Америки”. Тех же, кто имел наглость иметь одновременно и “Спидолу”, и магнитофон, незамедлительно высылали в Магадан, а приемник с мафоном конфисковывали для дачи очередного генерала КГБ.

Так вот, сие разжижение мозгов проникло и в Википедию:

http://ru.wikipedia.org/wiki/Самиздат
http://ru.wikipedia.org/wiki/Файл:Самодельный_магнитофон_1970ых.jpg

Как почетный КГБшник, имеющий аж целую магнитолу VEF Sigma, а также приемник “Мир-152″, отделанный ценными породами дерева, на порубке которого в ГУЛАГе зверски угробили миллион зеков (на каждый приемник), я не мог пройти мимо такой откровенной клеветы буржуазных наймитов на советский строй, поэтому решил исправить сведения с правдивых, раскрывающих всю людоедскую сущность советско-чекистского режима, на идеологически правильные, а также задать википедикам неудобный вопрос: почему “Тембр” обозвали “самодельным магнитофоном”?

Естественно, уже через 12 минут википедики исправили все обратно, а при попытке еще раз указать модель магнитофона – еще и забанили меня за якобы имевший место “вандализм в обсуждении”, причем старательно потерли все свидетельства.

В общем, имеется предложение – совместными усилиями поисправлять подпись к картинке на странице “Самиздат” на “Магнитофон «Тембр» (МАГ-59), CCCР, 1964″, а также позадавать на странице обсуждения картинки неудобный вопрос, почему “самодельный” магнитофон представляет собой остатки вполне серийного и присутствовавшего в продаже “Тембра”.

Мир-152

Тут меня упрекают за то, что давно не писал “паяльного бреда”. Надо исправиться.

mir

Впрочем, у меня есть оправдание. С самого начала ЖАРЫ В МОСКВЕ™ мой стол и окружающее пространство были заняты чудо-агрегатом под названием Мир-152 (или М-152) – одним из лучших советских ламповых приемников, выпускавшимся в 1952-1954 годах заводом “VEF”. Из-за жары я никак не мог съездить на Митино купить у дедков лампу 6А7 на замену сгоревшей 50 с лишним лет назад. Практически все остальные лампы в приемнике были “родными”, с клеймом ВЭФовской приемки, а последняя “неродная” лампа датировалась 1957 годом. Кроме того, в приемнике недоставало нити верньера.

Сгоревшая 6А7 стояла в каскаде УВЧ, что не мешало приемнику нормально принимать пару мощных станций на кусок провода в гнезде “заземление”. Подозреваю, кстати, что и нить верньера оторвали специально, для того, чтобы работало только Радио Северной Кореи :)

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

Кстати, специально для московских паял. Если вы ненавидите “Чип-и-Дип” за тормознутость персонала – зайдите в “Иголочку”. Если кассирша беседует по пять минут с каждой теткой-рукодельщицей, можете сами прикинуть скорость движения очереди.

Теперь о технических характеристиках “Мира”. “Мир” – это продолжение серии приемников VEF Luxus M1307 (1939), ВЭФ M-1357 (1948) и Латвия M-137 (1949) – фактически, еще довоенная разработка, “подогнанная” под параметры ГОСТа 1951 года. В принципе, я не ожидал каких-то удивительных параметров у творения латвийских инженеров, так что приемник меня приятно удивил. Начну лишь с того, что на воткнутый в гнездо заземления кусок провода “Мир” неплохо принимал мощные станции, а когда я заменил неисправную лампу, по чувствительности приемник превзошел “Спидолу” и показал себя ничуть не хуже “Дегена”, а в диапазоне СВ – и превзошел, несмотря на отсутствие магнитной антенны.

Замечательная чувствительность у “Мира” сочетается с неслабым усилителем – в выходном каскаде стоит пара ламп 6П3С, обеспечивающих, по мнению ВЭФа, выходную мощность в 4 ватта. Если кто-то считает, что 4 ватта – это только наушники от плеера слушать, то он глубоко заблуждается. Дело в методике измерений. Для ламповых приемников 1 класса, к которым относится и “Мир”, коэффициент гармоник составляет 5% на частотах свыше 400 Гц. “Современная” же мощность обычно измеряется при КГ не менее 10% (это относится к RMS, в случае PMPO гармоники никого не волнуют). В общем, 4 ГОСТовских ватта, дополненные весьма приличными динамиками, могут задать шороху в трехкомнатной квартире при половинном положении регулятора громкости, а при выкрученной полностью ручке – разбудить соседей на три этажа вверх и вниз. Это называется “звуковое давление не менее 20 бар”.

Естественно, не обошлось без “никому не нужных прибамбасов”. В случае с “Миром-152″ таким прибамбасом является система бесшумной настройки – мне так и не удалось “поймать” тонкую грань между помехами на ДВ и “Радио России”, которое принимается аж с перехлестом секторов на индикаторе. В следующей модели – “Мир-154″ систему БШН исключили, заменив более полезным режимом местного приема.

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

Наконец, остается лишь удивиться силе латышских Шварцнеггеров, которые собирали эти приемники. На фотографии – такой Шварцнеггер с шасси М-1357, зачем-то нацепивший женский парик.

baboschwarz

Про диалектический материализм и ПО для Android

Есть такая фраза, являющаяся непреложной истиной для каждого сторонника диалектического материализма – “Бытие определяет сознание”. Естественно, всякие идеалисты используют противоположные вариант – “Сознание определяет бытие”, после чего жестоко ругаются с материалистами.

А вот в разработке ПО, видимо, можно сформулировать аналогичную вещь: “Возможности железа определяют методику разработки ПО”. Я об этом писал на примере Arduino, а вот еще пример, не менее поучительный. Недавно видел у [info]belnetmon ссылку на статью о разработке ПО для мобильной операционки Android. Что же нам в ней советуют?

Ресурсы нужно экономить.
Нужно мгновенно выдавать реакцию на действия и поддерживать обратную связь с пользователем.
Производительность приложения главная цель. Нужно постоянно в процессе разработки оптимизировать производительность, не оставляя эту работу на потом.
Нужно измерять время выполнения, протоколировать и анализировать ход выполнения приложения, узкие участки кода, возникновения событий, выделение памяти, время жизни объектов. Что не измеряется, то нельзя оптимизировать.
Избегайте создания лишних объектов.
По возможности делайте методы статичными.
Используйте прямой доступ к полям вместо методов посредников.
Используйте static final для констант.
Не используйте enum там, где достаточно обычной переменной целого типа.

Все это вытекает из возможностей “железа”. Современные мобильники и КПК сравнимы по производительности с “персоналками” где-то десятилетней давности (причем очень “грубо” – например, над 24 доступными для процесса мегабайтами ОЗУ в 2000-м году посмеялись бы). Вспомним, что происходило в программировании в те далекие времена.

Бывшие паскалисты (спасибо дядьке Фаронову!) успешно освоили “программирование мышкой” в Delphi. Сишники разделились на два лагеря – первые вслед за паскалистами поклялись в вечной любви к фирме Borland и пользовались CBuilder, вторые забыли TurboC, как страшный сон, и переметнулись в стан любителей Microsoft Visual Studio 6.0. С++ использовался в варианте “C on steroids” – слова “инкапсуляция”, “наследование” и “полиморфизм” до многих доходили слабо, зато “заклинания” типа TForm1.OnClick() весьма понравились. Надо ли говорить, что полноценного стандарта C++ не было реализовано нигде, библиотека STL зачастую отличалась непредсказуемым поведением (например, в книжке Б. Кернигана и Р. Пайка “Практика программирования”, вышедшей в 1998 году, приводится пример, когда один из Windows-компиляторов С++ был снабжен ужасно медленной версией входящего в STL дека), да и поведение компиляторов иногда оставляло желать лучшего (кто помнит, почему не стоит писать “for(int i=0; i < N; i++)" в VC++ 6.0?). Языки программирования, отличные от C и Pascal, в нашем Отечестве не котировались (по причине неведомо кем культивируемой веры в крутость русских программистов), а в Буржундии к тому времени уже по достоинству оценили хоть и более медленные, зато более "безопасные" Java и Visual Basic. Кстати, там же, в Буржундии, как раз к 2000-му году вылезли из своих нор мамонты и динозавры - знатоки FORTRAN, поправили где надо год и отправились на заслуженный отдых, пока им в аду прогулы считают.

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

С другой стороны, "Практика программирования" Кернигана и Пайка тоже написана не на пустом месте и не потеряла актуальность в начале 2000-х (а то и сейчас, во всяком случае, многие похапешники после нее будут плакать кровавыми слезами). Несмотря на все замечательные возможности языков, очень большое внимание уделялось и производительности - часто даже в ущерб языковым возможностям (например, самописный hashmap часто оказывался существенно быстрее STL-ного, в результате чего мог считаться предпочтительнее).

В общем, советы по программированию для Android лишний раз напоминают, что удобные возможности языка и среды выполнения зачастую сильно влияют на производительность программы - причем зачастую отрицательно.

PS А вот более развернуто мое мнение про Arduino:

http://community.livejournal.com/ru_radio_electr/759218.html?thread=12768946

Мифический Arduino-месяц

Прочитал недавно известную книгу Ф. Брукса “Мифический человеко-месяц”. А сегодня в комментариях у [info]bitoniau увидел довольно распространенное мнение – мол, известная демоплата Arduino не нужна, можно собрать то же самое “ручками”, то есть съездить в “Чип-и-Дейл”, купить паяльник ватт на двести, припой – лучше всего ПОС-40, флюс – канифольку смрадную, текстолит гетинакс, хлорное железо, микроконтролер, горсточку бракованных деталей, набор тупых мелких сверл, затем загадить мерзким раствором пол-квартиры, взять паяльник за “не тот” конец, собрать программатор, плату с микроконтролером, потом поставить на компьютере AVRStudio, WinAVR и еще кучу всякой дряни, сжечь LPT-порт при прошивке – и все это только для того, чтобы поморгать диодиком. Мало кто сейчас следует книжке Борисова и тренируется “на кошках”, то есть на выпаянных неизвестно откуда КТ315. А зря, ибо когда Борисов начинает рассказывать о цифровых микросхемах (и на этом, кстати, книжка уже почти заканчивается), “юный радиолюбитель” превращается в закоренелого паялу, а для такого запаять 24-ногое чудо враждебной техники – раз плюнуть.

Казалось бы, чего общего может быть у умещающегося в одном DIP-корпусе микроконтролера и огромной IBM System/360, занимавшей несколько шкафов и жравшей немерянное количество электроэнергии, и какое отношение книга Брукса может иметь к “единоличной” разработке программ для МК? Дело не в том, что микроконтролер близок по своим “ресурсам” к “суперкомпьютерам” прошлых лет (System/360 всяко покруче будет!). Просто в те времена еще не было замечательных линуксов, работающих на кофеварках, и программы писались на сравнительно низком (не плохом, а приближенном к “железу”) уровне. А особенно верно это для операционной системы совершенно новой машины – основываясь на опыте разработки которой, Брукс и написал книгу.

Вот один только абзац:

В наше время мы привыкли к тому, что аппаратная часть компьютера большую часть времени работает без сбоев. Если только разработчик прикладной программы не замечает, что система неодинаково себя ведет при разных идентичных прогонах программы, ему правильнее всего поискать ошибки в своем коде, а не в технике.

Этот опыт, однако, сослужил плохую службу при программировании новой машины. Лабораторные разработки, предварительные или ранние выпуски компьютеров не работают должным образом, не работают надежно и не остаются неизменными день ото дня. <…> И хуже всего неопределенность, лишающая стимула копаться в своем коде в поисках ошибки – ее может там вовсе не быть.

Программирование для микроконтроллерных систем – в чистом виде системное программирование для “новой машины”. Да, микроконтроллер – довольно хорошо изученная и документированная штука, но вот трудность вызывает сборка “первой схемы”, особенно, если это схема на МК. Разве может начинающий знать, что керамический конденсатор необходимо разместить как можно ближе к корпусу микросхемы? А то, что блокировочные конденсаторы для пары микросхем вовсе не стоит заменять одним, пусть даже и с емкостью, равной суммарной? А нюансы, связанные с подключением кварца?

Непонятно, почему “светодиодная моргалка”, собранная “по всем правилам”, не хочет работать. Дело ли в программе, в прошивальщике, в программаторе, в схеме, в монтаже – начинающему не понять. А применительно к AVR – вспомним хотя бы о “фузах”, неправильной установкой которых так легко угробить контроллер (купленный, естественно, в единственном экземпляре).

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

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

Для разговора про ардуиновскую “стандартную библиотеку” хочу вновь обратиться к истории. Технологии и методы программирования развивались в тесной связи с развитием возможностей “железа”. Та же Simula оказалась невостребованной в конце 60-х – для тогдашних компьютеров более естественными оказались “процедурные” языки. Приведу маленький пример.

Для не очень хорошего программиста на Java или любом другом подобном языке вполне естественно написать что-то вроде:

var s = new String();

for(var i = 0; i < 100; i++) String += i + ",";

Кое-кто может сослаться на историю маляра Шлёмы, но речь немного не об этом, тем более что класс String можно реализовать и без недостатков сишных строк. Если кто-то, подобно тому не очень хорошему программисту, не читал книжек по Java или другим языкам со "сборкой мусора", то предлагаю проследить, что же происходит в цикле. При каждой его итерации создается несколько экземпляров класса String, которые не уничтожаются сразу после окончания вычисления (как в C++), а остаются в памяти.

То, что мы не заботимся о явном выделении памяти и ее освобождении, и называется абстракцией. Нас не волнуют такие вещи, как стек, страницы памяти и прочие малопонятные вещи. Даже мусор за нами должен собрать "сборщик мусора" (кстати, тоже сделанный в Simula).

Естественно, что за возможность написать код, наподобие приведенного выше, надо чем-то расплачиваться - а именно, ресурсами выполняющей эту гадость машины. Комфорт программиста, не заботящегося о "смысле", скрытом за легко читаемой строчкой, оплачивается памятью, тактами процессора и прочими ныне почти забытыми понятиями. Именно поэтому Simula и оказалась не нужна в 60-х. А вот разработанный практически в те же годы C оказался гораздо интереснее для компьютеров с очень сильно ограниченной памятью, да и на тех же AVR широко используется.

Похоже, то, что avr-gcc умеет компилировать и объектно-ориентированный C++, послужило поводом реализовать "объектно-ориентированную" стандартную библиотеку Arduino. Хоть Страуструп и утверждает, что "никакое языковое средство не должно приводить к снижению производительности программ, не использующих его", но из этого совершенно не следует, что реализованные с использованием ООП и без оного аналогичные функции будут работать одинаково.

Зато кому-то стало легче - не надо изучать такой непонятный RS-232, достаточно лишь написать Serial.println(15 - 10) :) А потом начинаются пляски с бубном около ООП-шных изысков, реализованных на неподходящей для этого системе.

PS Я ни в коем случае не утверждаю, что объектно-ориентированное програмирование, преобразование типов и прочие замечательные особенности соременных языков программирования - это "аццтой". Они действительно облегчают жизнь. Сборка мусора - это гораздо лучше, чем ручное управление памятью, примерно настолько же, насколько современная автоматическая коробка передач превосходит ручную. Только вот не надо пытаться присобачить "автомат" к "Жигулям" (за ссылку спасибо [info]onfall).

Из истории завода VEF

Ковыряю сейчас магнитолу ВЭФ-260 (VEF Sigma). Интереса ради решил посмотреть схемы ВЭФовских же приемников тех же лет выпуска (а “Сигма” выпускалась с 1978 года).

Так вот, оказалось, что приемник в этой магнитоле не унифицирован с выпускавшимися на том же заводе “Спидолами” 230, 232 и 242 моделей. В “Сигме” в основном используются кремниевые n-p-n транзисторы (КТ315 и КТ368), а в “Спидолах” конца 70-х – германиевые p-n-p транзисторы. Только в 1985 году, уже после модернизации “Сигмы” (заключавшейся в обновлении корпуса, если че, то и старый был весьма неплох) наконец появляется ВЭФ-214 на n-p-n транзисторах, немного напоминающий “Сигму” по схеме, но все же отличающийся и компоновкой печатной платы, и некоторыми “мелочами” вроде полевого транзистора на входе.

Интересно, какое место занимает “Сигмовский” приемник в эволюции “спидолообразных”? И зачем понадобилось в течении 7 лет выпускать магнитолу с сильно отличающимся от другой продукции завода приемником?

PS Конечно, некоторые детали от “Сигмы” подходят и для других ВЭФовских аппаратов, например, блок питания и барабанный переключатель диапазонов с планками, не стоит забывать и про унифицированный блок УКВ. Но вот почему в магнитолу впихнули новый приемник и почему он не пошел в серию “отдельно” – это вопрос.

Маркер для печатных плат

Продающийся в магазинах “Профи” маркер под маркой R-teck на поверку оказался обычным Centropen 2846.

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

PS Может выйти так, что в канцелярском магазине Centropen окажется не дешевле, чем так называемый R-teck в “Профи”. Я предупреждал.

Про “браузерное” ПО

Очень здорово написано по поводу гуглокалькулятора:

Для проведения одной элементарной операции с целыми числами задействуется огромное число компьютеров: начинается всё на локальном ПК с браузером, выполняющим сотни тысяч арифметических операций (аналогичных по сложности исходной операции) для формирования http-запроса; дальше работают десятки маршрутизаторов, пересылающих пакеты, каждый из которых опять же выполняет сотни арифметических действий; пыхтит коммуникационное оборудование на более низких уровнях модели OSI, и это оборудование тоже много вычисляет, упаковывая пакеты в каналах, кодируя и декодируя данные; лишь потом приходит черёд серверов Google, которые запрашивают базы данных (потому что всё равно идёт поисковая выдача).

После того, как где-то в череде этих миллиардов выполненных арифметических операций несколько наносекунд машинного времени потрачено на определение ответа, начинается процесс доставки ответа обратно. А это опять – серверы, маршрутизаторы, каналы, браузер и вывод результата, всё расходует миллионами арифметические операции, каждая из которых могла бы дать ответ самостоятельно.

В общем, как-то не впечатляют заявления гугля о том, что через десяток лет все ПО будет работать на стороне сервера, а работать с ним будут через браузер.

PS Кстати, если уж на каком-то девайсе смог запуститься интернет-браузер, то уж несложные программы могут выполняться на нем? Могут, естественно. А уж о критериях “несложности” можно подумать и самим. Для провоцирования срача скажу, что на 286-м можно развернуть почти полноценный веб-сервер, например :) Да что там 286-й, люди на PIC и AVR такое сооружают, что знатоки DOM, XML, COM, и прочих трехбуквенных технологий нервно курят в сторонке.

К празднику

Купил на барахолке цешку, то есть советский стрелочный мультиметр. Цешка новая, неюзаная, в стильном футляре из кожи молодых дермантинов.

При покупке посмотрел маркировку, нашел советский еще “Знак качества” с буковками “СССР” и согласился с продавцом в том, что прибор кошерный, советского выпуска, не чета нынешним.

С Днем России, чтоле.

Про “глушилки”

После очередного скандала с братом по поводу блока питания его ноутбука мы уже помирились и ищем новые способы приколоться над общественностью. Читал сегодня сайт о пиратском проводном радио и вычитал там следующее:

Какой гад написал в истории, что я настучал на Электрона в органы? Всё было куда круче и наглее, но благороднее!!! Я напечатал на машинке бланк а-ля “официальное извещение о снятии радиоточки”, грязно его отксерил, и от руки вписал дату, прочую лабуду и подписи товарищей Громова, Юмашева и Данилина (второй после Чкалова экипаж, прилетевший через полюс в США, у меня они якобы заведовали МГТС).

Решили приколоться на тему изъятия питальника и ноутбука “органами”. Сначала братан поставил вконтакте такой статус: “Брат (то есть я) написал на меня донос в Связьнадзор, изымают ноутбук :(”. Народ возмутился, сравнил меня с Павликом Морозовым, назвал чудаком на букву М и все такое.

Следующий этап будет таким: напечатаю в ворде одним пальцем Документ с большой буквы, с подписями Громова, Юмашева и Данилина из Связьохранкультуры, участкового Дьякова и понятых Балалайкина и Кабанова (к сожалению, Федор Гамнюков и сторож Тихопердов не подойдут по причине тупости фамилий). Первые трое – летуны, вторые – персонажи песен “Красной плесени”. Посмотрим на реакцию.

Напишу что-нибудь о помехах приему радиостанций “Радио России” и “Голос России”, добавлю про изъятие ноутбука (за незаконный вай-вай, наверное). В общем, будет редкая туфта. Снабжу все “печатями” из юбилейных десятирублевок Минсвязи и МВД и вывешу вконтакте.

Вроде как общих знакомых по ЖЖ и вконтакту у нас немного, так что прокатит. Заодно, кстати, смогу узнать, заходят ли ко мне некоторые анонимы или нет :)

“Маяк” и Перл-Харбор

Сижу, значит, никого не трогаю, починяю примус “Спидолу”. Ну и параллельно слушаю на той же “Спидоле” “Маяк” на ДВ. Идет передача “Шоу Александра Карпова”. Ведущий несет пургу про высадку в Нормандии (сегодня 66 лет), потом плавно скатывается на тему флота союзников и говорит такую фразу: “…именно с помощью флота союзники проворачивали самые успешные свои операции… Например, (пауза) Перл-Харбор”. На этом упал под стол.

Еще сегодня с утра на оравшую из “VEF Sigma” “Ультру” в прямой эфир дозвонилась какая-то тетка и начала чуть ли не орать на тупых диджеев, что сегодня день рождения Пушкина, а они, такие-сякие, сказали по радио слово “прикол”. Диджеи по своим инструкциям прилюдно послать тетку и кинуть трубку не могут, поэтому спрашивали всякие разные вопросы: “А чем занимался Пушкин, а не придумывал ли он новые слова, и тэ дэ, и тэ пэ”. Жалко, не зачитали “Тень Баркова”.

Ну и наконец, более содержательная чать поста. Не покупайте блоки питания для ноутбуков “Раведа” и им подобные! Это творение безвестных китайских инженеров прекрасно излучает в эфир на всех частотах от 1,5 до 150 МГц. Взглянул бы я в глаза тому, кто прилепил на эту омерзительную штуковину маркировку “РСТ”.

Про антисоветскую деятельность Ле Корбюзье

Благодаря работе французского архитектора Ле Корбюзье сегодня проще и дешевле купить во Франции радиоприемник SNR Excelsior 52 (в 1952-1955 годах выпущено около 100 000 штук), чем в России – его советский клон под названием “Звезда-54″ (выпущено около 700 000 штук) в приличном состоянии.

Это Excelsior:

excelsior52

А это “Звезда”:

zwezda54

К сожалению, большинство сохранившихся “Звезд” выглядят вот так:

zwezda54real

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

Зато наши умельцы, в отличие от французов, научились восстанавливать окраску “змеиная кожа”.

Свобода рекламирует Degen

На сайте радио “Свобода” (финансирумого американским Конгрессом) нашел вот такие стенограммы передач:

Следующее письмо – из Тверской области. «Аффектно-искренне приветствую вас, Анатолий Иванович! Хотя моя интуиция подсказывает, что каждая минута вашей радикальной и плодотворной деятельности перенасыщена, но, уповая на ваш нескончаемый аттрактивный ручеёк филантропии, – помогите, пожалуйста, одинокому диссиденту найти элексир жизни в облике транзисторного приёмника! В настоящее время мне пятьдесят семь лет. Но ещё с юношеского возраста боготворил чародейскую новизну вашей радиостанции, пополняя своё мировоззрение гуманитарными и свободными концепциями райской жизни зарубежья. В настоящее время скорблю об отсутствии в торговле (запрет В.Путина) многоволновых приёмников. Мой любимец «Океан», сошедший с конвейера много лет назад в Латвии, потерял чувствительность. Лишь короткое время, с шумной риторикой, я поглощаю ваши прозрачные спектры бытия. А посему прошу, умоляю: подскажите, где найти иностранный многоволновой транзисторный приёмник. Располагая дензнаками, незамедлительно совершу вояж за чудотворцем. Моя локализация: 172630 Тверская область, Западно-Двинский район, посёлок Старая Торопа, улица Кирова, 39. Иванов Валерий Васильевич».

Письмо господина Иванова я прочитал моему киевскому другу пану Остапенко. Он психолог по образованию, а по роду занятий -предприниматель, торгует установками для очистки воды, частично делает их сам на одном заводе, бывшем, естественно, «почтовом ящике»; установки разные – от домашних до промышленных, заказчики очень довольны, мне кажется, они у него по всему свету, есть и в России, в Якутии, например (где Киев, а где Якутия!); одно из его изделий стоит у меня на кухне уже несколько лет, фильтры ещё ни разу не менял, оно не только делает воду приятной, то есть, безвкусной, но и устраняет болотистый запах. Письмо нашего слушателя я прочитал ему потому, что пан Остапенко всё знает и всё умеет, был у меня прорабом на строительстве бани, консультирует меня по таким вопросам, как укладка гарцовки, у него есть и ветеринарный опыт, ждёт, когда моя корова созреет телиться, он умеет помочь и в этом деле; правда, сначала корову придётся завести. Читаю его письмо:

«Сообщаю вам и вашим слушателям, что жизнь приёмников, позволяющих на территориях бывшего СССР слушать вражеские голоса, продолжается с неизменным успехом. Такие приёмники, а называются они Degen DE1103, можно легко приобрести в Москве примерно за три тысячи рублей на Митинском радиорынке, 102-й павильон, на первом этаже нового здания, а также в других точках этого рынка. В.Путин торговлю ими не запрещал и уже, думаю, не запретит. Эти приёмники изготовлены в Китае для того, чтобы великий китайский народ мог слышать вдохновенные и вдохновляющие голоса своих Великих Кормчих и Великой Коммунистической Партии в любом уголке планеты всей. Но они, эти приёмники, пригодны и для того, чтобы бывшие советские труженики могли по привычке украдкой слушать (перед тем, как забыться сном) такие родные и такие далёкие вражеские голоса… Также эти приёмники, при небольшом ухищрении, способны принимать диапазоны ГиБДД и милиции. Так почти всё тайное, с китайской помощью, становится явным… Есть на митинской барахолке и широчайший выбор всевозможных отечественных приёмников – от раритетной рижской Спидолы до прощального крика советского радиопрома. Нужные вашим слушателям приёмники можно купить и с доставкой наложенным платежом – в интернете полно предложений. Сообщите вашим слушателям, что на получение всех этих сведений я потратил примерно десять минут моего драгоценного времени. С уважением Александр Остапенко».

Отсюда: http://www.svobodanews.ru/content/transcript/1911651.html. Замечу, что реклама павильона 102 в новом здании Митинского рынка здесь просто ничем не прикрыта. Не буду останавливаться на фактических ошибках (”Океан” делали не в Латвии, а в Белоруссии, ГИБДД и милицию ни на одну модель Degen услышать нельзя), а перейду к следующей цитате:

«Уважаемый американский наймит! В вашей последней передаче прошлого года вы повторили украинскую рекламу китайского радиоприемника модели DE1103 для прослушивания передач “Свободы” на русском языке. В этой рекламе приемник назван всеволновым. И это действительно так – с точки зрения международных стандартов. Но в приемнике нет советского УКВ-диапазона частот (65,8-73) МГц, а именно в нем (на частоте 68,3 МГц) ретранслируются передачи “Свободы” на Москву. Интересно, сколько доверчивых москвичей, клюнувши на вашу рекламу, захотели купить “всеволновой” приемник DE1103, чтобы слушать “Свободу” на частоте 68,3 МГц?». Автор этого письма называет украинской рекламой ответ киевского предпринимателя, моего друга пана Остапенко на просьбу одного слушателя из Тверской, кажется, области подсказать ему, какой радиоприёмник годится, чтобы ловить на коротких волнах Свободу». Я переслал пану Остапенко письмо, которое вы сейчас услышали, и вот его ответ автору: «Скажите, а почему вы написали такое злобное и язвительное письмо? Если вы увидели чью-то ошибку, совсем не обязательно наслаждаться своей находкой, тем более, что никакой ошибки и нет. Эти приёмники действительно являются всеволновыми. И вы, при покупке, можете либо выбрать приёмник с этим диапазоном, либо попросить продавца настроить его, либо настроить самостоятельно. Кстати, с 2008 года на рынке появилась новая, более совершенная, модель приёмника degen 1123. C диапазоном от 67 мегагерц». Пан Остапенко по образованию психолог, и, видимо, как таковой указал на известное свойство некоторых людей: обнаружив чью-то ошибку, наслаждаться, а не огорчаться.

Отсюда: http://www.svobodanews.ru/content/transcript/1936920.html. Ведущий Анатолий Стреляный снова повторил рекламу фирмы Degen, ссылаясь на все того же (придуманного?) пана Остапенко. Воображаемые друзья – один из симптомов шизофрении, так что на месте любого карательного психиатра я бы упек ведущего “Свободы” в дурдом. К сожалению, карательная психиатрия отменена, и теперь гражданин России может свободно рекламировать китайские товары на американской радиостанции, финансируемой еврейским капиталом. Это и называется постиндустриальным обществом.

Китайское качество

Приехавший сегодня УКВ-передатчик радует по дефолту всем, кроме одного – он очень плохо реагирует на пульт ДУ. Китайцы разместили “дырочку” для фотоприемника прямо под отверстием дисплея (на фото – слева от надписи).

sku_33764_detail

Дырочка смотрит не на фотоприемник, а на шлейф дисплея – у фотоприемника “коротки ноги”, чтобы оказаться на положенном месте. Проблема решается с помощью десяти сантиметров МГТФа и кусочка изоленты, чтобы зафиксировать вынесенный на проводах фотоприемник на положенном месте.

Эта штука – error by design. Кто мешал проковырять отверстие сантиметром ниже?

Про город Беромюнстер

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

Если кто-то не видел шкалы большой стационарной радиолы 60-х годов, то вот картинка (кликабельно):

rigonda102_05

КВ и УКВ диапазоны интереса не представляли – чем могут быть интересны какие-то непонятные цифры? Гораздо лучше выглядели диапазоны ДВ и СВ, снабженные немалым количеством подписей с названиями городов. В принципе, города там довольно известные – в основном столицы союзных республик и некоторых европейских стран. Затруднения в определении положения вызывали только Турку, Познань и Беромюнстер, которых не было в школьном атласе. Выяснить, что Познань находится в Польше, а Турку – в Финляндии, оказалось довольно легко. К сожалению, местонахождение города Беромюнстер так и осталось для меня загадкой.

От нечего делать изучал сегодня в английской Википедии тему штыревых антенн на ДВ и СВ. Если в “нормальных человеческих диапазонах” вроде СиБи длина штыревой антенны не превышает нескольких метров, то здесь четвертьволновой штырь должен иметь длину (точнее, нормальный человек назовет это “высотой”) от 50 до 500 метров. Соответственно, вместо антенны типа “крысиный хвостик”, присобаченной к радиостанции-портативке здесь придется строить громадную мачту. В качестве иллюстрации в Википедии была приведена антенна передатчика в города Беромюнстер, Швейцария, снятая зимним швейцарским утром.

beromunster

Кроме громадной антенны, построенной еще в 1937 году и эксплуатировавшейся вплоть до 2008 года, других достопримечательностей и красот природы в Беромюнстере нет.

А вот накидайте идей

На днях я мучился с USB-устройством на V-USB, и обзавелся прекрасным набором разных “мониторов” и “снифферов” USB-шины. Для чего можно применить такую коллекцию? Среди всякого хлама обнаружился адаптер для авиамодельных передатчиков под названием RC Joystick Pro версии 2.2 производства “фирмы” ED&IGL Hobbies.

rcjoystickpro

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

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

PS Конечно, “вычислимый на МК способ” может оказаться весьма гнусным, например, XOR с трехбайтовой маской. В общем, попробую поперебирать простые варианты, типа перестановок байт/полубайт, а там видно будет. А может, единственный метод “хацкерской” разлочки – брутфорс, ведь проверочный код может быть прошит одновременно с серийным номером.

Как два байта отослать

Разработчики шины USB – глубоко больные люди.

Только дебил или извращенец может придумать столько сложностей для того, чтобы, к примеру, передать пару байт от температурного датчика на компьютер. И только маньяк может написать такую гнусную документацию.

Кто-нибудь может кинуть ссылку на хорошее описание USB-HID дескрипторов для полностью нестандартных устройств? Как-то не прикольно, когда датчик распознается системой, как джойстик с одной осью.

День рождения

А я уже отмечаю.

Вспомнилось почему-то, как года три назад я решил купить себе в качестве подарка мультиметр MS8201H. Поехал седьмого вечером, после занятий в универе, в “Чип-и-Дейл” (тогда он еще окончательно не скурвился). Ну, купил прибор, благо народу в магазине уже не было, поехал домой. Большего количества пьяных теток я не видел. А самое странное – все как-то на меня косились, видать, кайф от нового мультиметра был написан прямо на морде.

Больше я не выбираю себе подарки сам, а то как-то маньячно получается.

Про микроконтролеры

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

Я насчитал у себя минимум 48, не считая непрошитых (этих у нормального быть не должно, что лишний раз показывает, какой я извращенец).