`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

«Уязвимость» №1 (комедия-триллер без элементов мистики и ужасов)

Оболочка командной строки bash – утилита фактически стандартная (в мире Unix клонов) и далеко не новая. Её разработка была начата в первой половине февраля 1988 года. Инсталляционная база её очень большая. Пусть не «громадная», но действительно Очень Большая. И тут, в 2014 году, внезапно, открывается ужасное – оказывается, в bash есть уязвимости, да ещё и «жуткие», допускающие инжектирование стороннего кода для исполнения. Пока ничего не скажу об этом «кошмаре», поговорим лучше немного о другом, более фундаментальном. Точнее, о фундаментально смешном баловстве, очень старом (ещё тех времён, когда никакой Linux и в проекте не было), но всё равно забавном.

Любой мало-мальски опытный пользователь, например, ОС Linux, знает о «wildcards» (даже не хочу приводить увечные попытки перевода термина на русский) – метасимволах, по-разному интерпретируемых командной оболочкой (дальше – shell, утомительно писать много лишних букв). «*» уж точно известно всем – этот метасимвол, например, в именах файлов, заменяет shell долгое описание «любое количество любых символов, включая вообще ничего». То есть, команда shell  «ls *» выдаст в поток вывода список всех видимых в текущем положении (в файловой системе) файлов, «ls *.c» - файлов с любыми именами, в которых есть два последних символа «.c». Пока нам этого и хватит, для дальнейшего.
Давайте попробуем заглянуть в «богатый внутренний мир» простой и совершенно законной (хоть и полностью бессмысленной) операции «ls * -al» с использованием утилиты strace: «strace ls * -al». Первая же строка результата показывает нам и чем заменяет shell символ «*», и результирующий вызов функции execve с переменным числом параметров:

«Уязвимость» №1 (комедия-триллер без элементов мистики и ужасов)

Эта функция предназначения для исполнения программ, и, по соглашению (а не по строгой её спецификации), первым аргументом является полное путевое имя программы, дальше следуют возможные параметры – в нашем случае это результат скрытой замены символа «*», наконец, строка «-al», перенесенная из текста команды. Этот последний параметр в сочетании с wildcards – очень полезный, потому что никакой разницы между явной передачей параметров и именем файла не наблюдается, ведь правда? Ну, да, параметры начинаются с символа «-», но значимых препятствий для шаловливых рук это не создаёт.

Создадим файл с именем «-rf» - «touch -- -rf». Проверим, что он появился – «ls -al». Есть такой файл. А теперь, после strace-наблюдения за выполнением глупой команды «ls * -al» подумаем, что будет, если мы вызовем в каталоге, содержащем файл с именем «–rf», команду «rm *». Логика работы команды «rm» и механизмов подстановки shell, по идее, должна привести к удалению всех файлов, каталоги же останутся нетронутыми (и об этом shell должна сообщить). Но. Если в списке файлов есть пустое ничто с красивым именем «-rf», шелл честно передаст в списке параметров вызова функции execve строку “-rf”, которая ничем не отличается от параметров команде rm, которая, в свою очередь, искренне воспримет всё ей переданное так, как способна понять, и вместо сохранившихся каталогов в результате удаления файлов командой «rm *» не останется ничего, кроме файла с именем «-rf». Этот фокус пещерных времён Unix принято называть «инжекцией через метасимволы» (wildcard injection), и он является одним из примеров широкого класса «инжекции в канал» (channel injection), при которой для изменения исполнения чего-то используется фундаментальный принцип «сборки» этого чего-то из частей в один «канал исполнения».

С помощью инжекции через метасимволы можно, например, красиво заставлять команду chown (изменение владельца и группы файла) делать совсем не то, что подразумевает вызывающий её, в первую очередь при рекурсивном изменении файлов. Подсказка проста и кроется в возможностях самой утилиты: есть в перечне её опций «--reference=имя_файла», где имя_файла – образец для подражания, то есть, владелец и группа этого файла и будут «распространены» по прочим вызовом функции «chown –R», причём… даже если желаемые пользователь и группа указаны в команде явно, образец для подражания эту попытку ручного управления «перевесит» (не удивляйтесь, всё логично, просто это такая логика). То есть, достаточно в забитом тысячами файлов каталоге всего двух, например, одного с именем «--reference=.zykdsga.zzz» (первая точка в имени образцового файла – сугубо для увеселения), и второго – «.zykdsga.zzz», чтобы любая выполненная системным администратором команда «chown –R желаемый_пользователь:желаемая_группа» изменила всё на… пользователя и группу файла .zykdsga.zzz. Совершенно аналогичен фокус с изменением битовых масок прав доступа командой chmod (у неё есть точно такая же опция «--reference»). А вот куда более насыщенная утилита tar, например, настолько насыщенная, что man-страницу по ней никто не дочитал до конца, поэтому она позволяет тем же приёмом сделать куда более весёлые вещи. Потому что в списке её параметров есть такие милые, которые начинаются с «--checkpoint». Первый задаёт через сколько обработанных блоков данных сообщать об этом важном событии, а вот второй, «--checkpoint-action=программа» позволяет запускать на исполнение в эти важные моменты какой-то файл. Какой угодно. И не только файл, а вообще описывать какой-то сложный вызов, это же Unix. Уже понятно? Делаем в каком-то каталоге два файла, с именами, например, «--checkpoint=2» и «--checkpoint-action=sh bomb.sh», ну и, само собой, третий файл – bomb.sh. И пусть себе лежат. Если системному администратору вздумается (или он будет стимулирован) выполнить команду tar в этом каталоге, невидимо для него наш прекрасный файл bomb.sh будет выполнен с… эскалацией привилегий до максимально возможного уровня. Гениальная это команда, tar, всегда её любил, как и прочие команды с нечеловеческой бездной параметров. Ну и так далее, смотрите все команды, где там у них в параметрах есть возможность задать исполнение чего-то, а дальше - инжекция через метасимволы, древний принцип, которым можно творить, выдумывать, пробовать (и не забывайте, метасимволов больше, чем только "*", там обширное поле для творчества). И уж если кто-то добрался до шелла, пусть без прав суперпользователя, и нашёл в файловой системе каталоги, где можно что-то записать, и это старый хитрый волк, понимающий толк в социальной инженерии, то оставить после себя всяких презабавных мин замедленного действия он может предостаточно, как и активировать их…

Так вот всё это к чему. Ну, отыскали в bash кроме кучи встроенных на уровне идеологии способов инжекции кода, ещё один, позволяющий из-за «ошибки» исполнять не только записанную в переменную окружения функцию bash (что само по себе прекрасная возможность что-нибудь кому-нибудь сломать), но и «по ходу дела» дописанный после формального завершения тела функции фрагмент (я взял слово «ошибка» в кавычки не случайно, скорее всего речь идёт даже не об ошибке, а о некотором таинственном «расширенном функционале» (как всегда, где я использую слово «функционал» не в математическом его смысле, там же использую и сарказм), потому что подобный эффект проявляется не только в bash, но и в zsh, например. Говорить, что это всерьёз что-то ухудшило, трудно. Если бы не одно «но». Нечеловеческими усилиями эта странность (которую "умудрялись не замечать" сто лет) оказалась потенциально угрожающей для всяких систем, использующих CGI (Common Gateway Interface), а их очень немало. Например, результаты попытки сканирования позволили прийти этому автору к выводу об уязвимости примерно одного хоста из пятидесяти.

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

Откланиваюсь.

Урок IoT-кооперации - ARM, STMicrorlectronics и IAR Systems одновременно

Есть, наверное, одно важное отличие hypes от реальных событий в индустрии. О нём обычно не говорят, и дело даже не в том, что hypes обычно состоят на 99% из медиа-потоков и всего на 1% из реальных действий, ни один наблюдаемый мной приступ hypes не порождал действующей кооперации серьёзных, больших игроков. Даже на уровне анонсов обещаний (есть и такой уровень).

И вот события прошедших пары дней показывают новый уровень «игры в IoT» - за два дня практически одновременно прозвучали: анонс новой архитектуры ARM, анонс реализации этой архитектуры «в железе» и анонс инструментальной поддержки только анонсированного «железа», и всё это – от трёх независимых производителей. Такой синхронности на моей памяти ещё не было (максимум два участника наблюдалось), потому и решил уделить событию внимание.

Итак, ARM анонсировала пока наивысшую ступень развития своих архитектур для встраиваемых систем – Cortex-M7. Теперь пригодный для синтеза реальных устройств модельный ряд ARM включает следующий набор:

  • Cortex-M0 – микробюджетное 32-битовое ядро, «убийца» восьми- и шестнадцати-битовых микропроцессоров и микроконтроллеров;
  • Cortex-M0+ – 32-битовое ядро, оптимизированное для устройств с батарейным питанием, в реализациях обещающее многолетнюю работу от одной литиевой батарейки;
  • Cortex-M3 – 32-битовое ядро универсального назначения, результат оптимизации по критерию «потребляемая энергия – производительность»;
  • Cortex-M4 – гибрид ядра общего назначения и DSP (процессора цифровой обработки сигналов);
  • Cortex-M7 – ядро для высокопроизводительных встраиваемых систем.

По сути, Cortex-M7 – вполне очевидное развитие всей линейки, основные архитектурные решения этого ядра не являются чем-то особенным ни для индустрии (несколько параллельных трёхступенчатых конвейеров с возможностью одновременного исполнения двух команд, что в совокупности с тремя ступенями общего конвейера, - выборки, декодирования и формирования потоков исполнения, issue, – позволяет называть основу Cortex-M7 «six-stage, dual-issue superscalar pipeline»), ни для ARM (в первую очередь речь идёт о фирменных решениях, например, о 64-битовой системной шине AMBA 3-го поколения, называемой AXI, и, конечно, о мощных средствах конфигурирования ядра CPU, позволяющих разработчику конечного продукта по сути формировать необходимый конкретный процессор). Но есть в Cortex-M7 нечто интересное, радикально отличающее его, например, от предшественника, Cortex-M4. Во-первых, это контроллер (порт) «сильносвязанной памяти» (tightly coupled memory, TCM), о которой обычно говорят что-то не совсем внятное. Наличие TCM – хороший индикатор «целенаправленности» процессорного ядра, потому что TCM – это отдельная очень дорогая память с быстродействием кэш-памяти, полностью отданная в распоряжение программисту. Естественно, TCM, как и кэш-память, работает с тактовой частотой ядра процессора, и отличается от кэш-памяти разве что собственным адресным пространством и полным отсутствием всякой «автоматизации». Такое архитектурное решение всегда является следствием нацеленности процессора на вычисления реального времени, в первую очередь – на очень быструю обработку аппаратных прерываний и на обмен данными между потоками исполнения. Второе следствие наличия TCM и принятого за основу в архитектуре Cortex-M7 принципиально последовательного исполнения высокоуровневых команд (in-order) отражают стремление разработчиков ARM обеспечить высокую предсказуемость и повторяемость времени исполнения, в первую очередь, критических фрагментов кода. И, во-вторых, Cortex-M7 предусматривает возможность включения в реальные «в кремнии» ядра подсистем обнаружения сбоев и обеспечения безопасности исполнения, соответствующих самым строгим требованиям отраслевых стандартов SIL и ASIL. Так что и без заявлений ARM позиционирование Cortex-M7 очевидно – требующие одновременно высокой производительности (порядка 5 Coremark на мегагерц тактовой частоты, это очень приличный показатель) и предсказуемости и безопасности встраиваемые системы.

Буквально в день анонса новой архитектуры ST Microelectronics анонсировала и первое её «овеществление» - семейство микроконтроллеров STM32F7 с пока единственным представителем. Очень «напичканная» всем чем можно микросхема, с двумя областями TCM – для критических данных и подпрограмм реального времени.

И, опять же, день в день один из лидеров разработки инструментальных средств для embedded мира, IAR Systems, объявила о поддержке своей средой разработки и кросс-компиляторами C/C++ архитектуры Cortex-M7 и семейства STM32F7 от ST Microelectronics.

В общем, из-за этих фактов следует признать, что ARM удалось и создать и работающую «как часы» сверхсистему из независимых производителей, и своим «модельным рядом» удовлетворить где-то 99% производителей, ориентирующихся на IoT. Первое – очень важное и даже феноменальное. Если когда-то ARM разрабатывала IP (Intellectual Property, синтезируемые модели) своих процессоров, потом сражалась за лицензиатов, и это были очень небыстрые процессы, то, начиная где-то с ядра ARM Cortex-M0, которое было анонсировано в феврале 2009 года, и примерно тогда же (с запаздыванием на несколько дней) NXP был объявлен анонс ставшей популярной линейки контроллеров LCP1100, всё происходит «день в день». Причём инициатором и «первой скрипкой» скрытых за таким тройным анонсом процессов может быть только сама ARM. Феноменально для крохотной компании.

Откланиваюсь

Как нельзя, и почему

Так уж получилось исторически с моими личными увлечениями, что внимательно слежу за происходящим в мирах IoT (Internet of Things), микроконтроллеров, интерфейсных и аналоговых микросхем и прочего, непосредственно отражающего "низовые" признаки каких-то движений в индустрии (все движения ведь начинаются оттуда, от элементной базы и от воплощений низкоуровневых идей, прочее - надстройки). И вот, "тятя, тятя, наши сети притащили" очередного... Но настолько яркого, что не удержался и вынужден что-то сказать по поводу. Не совсем хорошее, но полезное. Не потому, что очень плохой признак, а из приземлённых соображений - если вы собираетесь за грибами, рационально заранее знать, где их точно нет.

Итак, всё началось на очередном IDF, где Intel наконец окончательно анонсировала вроде как "аппаратную платформу" для IoT, весьма забавную машинку Edison в миниатюрном формате с габаритами почти SD карточки памяти, но, что теперь известно точно, никакого отношения к этому технологическому формату не имеющем (хотя все эту SD-карточку упоминают, я вот тоже не удержался). После долгого разогрева рынка стали известны окончательные технические детали Edison и, что самое важное, цена. Ни слова не скажу ни о первом, ни о втором. Точнее, о первом как раз кое-что скажу, но я вообще не о том собирался сказать и говорю. Сразу предупреждаю - дальше будет и смешно, и не очень. Зависит от точки зрения. Коллегам по цеху точно будет не смешно.

Как нельзя, и почему

Итак, Edison. Машинка как машинка, для чего-то прекрасная, для чего-то неподходящая, всё как обычно в инженерии. Но. И на презентации на IDF, и на специальном сайте, посвящённом машинке, везде прозвучало нечто общее, интересное разве что немногим. А именно - судя по написанному на "самой главной странице", в Edison есть и двухъядерный Atom, и странный "встраиваемый процессор" с архитектурой x86 Quark, о котором в своё время было много чего сказано:

"The Intel Edison module uses a 22-nm Intel® Atom™ SoC, formerly Silvermont that includes a dual core, dual threaded CPU at 500 MHz and a 32-bit Intel® Quark™ processor MCU at 100 MHz"

По-моему, я правильно всё прочитал - в состав "компьютера на модуле" входят двухядерный (каждое ядро - с поддержкой двух потоков) Atom и Quark, работающий на частоте 100 MHz.

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

А теперь давайте сделаем маленький эксперимент. Посмотрим в документацию "железа" Edison прямо с официального сайта, сделанного Intel специально для новой платформы. Это pdf-файл "Edison Module Hardware Guide", к тому же и не очень большой, и далеко не многостраничный. Это не "сырой" документ, он прошёл несколько редакций, и текущая, на момент написания этого текста - вторая редакция публично доступной  версии, от 16 сентября 2014 года. И давайте попробуем найти в нём хоть одно упоминание того самого Quark, который обещан почти 200 тысячами страниц старательных копировщиков новостей. Если вам удастся такое - сниму шляпу. Нет там никакого Quark. Ладно, может, он есть в системе на чипе семейства Z34XX, которая заявлена в документации? Увы. Это семейство ориентировано на смарфтоны и планшеты (и я очень сомневаюсь, что для малосерийного Edison сделают специальную микросхему семейства), и ни в одном документе, посвящённом семейству, упоминания Quark нет.

Господа, вот что это было?

Мы уже пришли в ту точку, в которой надо тщательно проверять совершенно невинную и далеко не "коммерциализированную" новость? Причём проверять надо всех, без исключения, начиная с собственно "виновника" торжества?

Это не дело.

Я бы не обратил внимания на весь этот цирк, если бы не мой обоснованный интерес к двухпроцессорным машинам-гибридам, где 32/64-битовый "тяжеловоз" традиционной ОС (со всеми её удобствами в смысле готовых и проверенных временем стеков сетевых протоколов) аппаратно отделяется от RTOS, обслуживающей в реальном времени контроллеры, работающие "на физический мир".

Короче, господа.

Так нельзя.

2014й год на улице, а мы друг с другом играем "в никому не верю", причём играем только из-за лени.

Так что теперь и вы знаете, где нет грибов. И если хотите что-то знать, ищите оригинальную документацию производителя, смотрите на её ревизию, ищите errata (официальные изменения документации), etc, в общем, старайтесь действовать профессионально. Время такое.

Откланиваюсь

Летающие вычислители, или об отличиях IT 2.0 от того, что было (2)

У IT 1.0 есть одна отличительная черта, о которой знают разве что узкие специалисты, занятые или не-IT спецификой действительно больших инсталляций, или проектированием «абсолютно не вычислительных» узлов компьютеров. Попробую по возможности чётко эту черту показать, чтобы провести внятную границу, отделяющую новый мир IT 2.0.

Предположим, в рамках IT 1.0 мы нуждаемся в программной реализации какого-то полезного алгоритма, не важно в какой области, например, в логистике, – нам надо решить классическую задачу коммивояжера, грубо говоря, мы ищем способ с оптимальными затратами объехать N заданных пунктов. Учитываем ли мы при решении этой задачи (то есть, при программировании и сопутствующих инженерных нюансах) какие-то физические факторы реального мира реальных вычислителей, ресурсами которых будет решаться задача? Нет. Этих факторов не существует. Вибрации, вызванные, например, проезжающими по соседней (с помещением, где установлен компьютер) улице грузовиками, вибрации от вентиляторов системы охлаждения, нестабильности и специфика подсистем питания компьютера, магнитное поле, электростатика, условия и специфика распространения радиоволн, геометрия корпуса компьютера, материалы, etc, всё, что является абсолютной нормой классической инженерии, в мире IT 1.0 не существует. Это мир настоящих идеальных «сферических вычислителей в вакууме», высшую точку в котором поставила облачная виртуализация, дающая в распоряжение динамически изменяемый в зависимости от потребностей в ресурсах абстрактный вычислитель. То есть, мир IT 1.0 максимально абстрактен и «мягок» (soft[ware] abstraction), в нём есть система команд вычислителя (которую по сути никому, кроме очень узких специалистов, и знать не надо), есть «мягкие» (soft) инструментальные средства и, наконец, есть «мягкий» продукт – исполняемая программа, результат работы которой так же абстрактен и «мягок». Это исключительно абстрактный и очень мягкий (в первую очередь по отношению к занятым в IT 1.0 работникам) мир. Вполне возможно именно поэтому работники IT 1.0 тщательно и с завидным упорством придумывают себе невероятно чудовищные трудности, благо, абстрактность и мягкость (она же и податливость) неимоверно способствуют расцвету всевозможных ментальных девиаций (шучу, конечно, но что-то в этом есть кроме шутки). Больше того, мягкий абстрактный мир IT 1.0 вообще плохо изучен и даже теоретизирован, например, в нём никто не видел формальных методов синтеза «ключевого продукта» – алгоритмов (потому что это искусство), в нём нет чётких базовых критериев для оценки «потребительских продуктов» (например, попытки формализовать хотя бы понятие usability только всё усложняют), здесь никто не знает формальных механизмов сравнения инструментов (что даёт питательный корм страдающим нехваткой эмоций программистам, такого «бокса по переписке», как в нескончаемых спорах о языках программирования, не бывает ни на каких других «абстрактных рингах»), оценки затрат в этом мире заставят обзавидоваться самых продвинутых шаманов и служителей самых экзотических культов. В общем, в силу полной абстрактности мир IT 1.0 даёт невероятную свободу (иерархии абстракций в нём строятся как угодно), а в силу крайне плохой теоретизированности – ещё и сытное пастбище для любознательных и смекалистых (что куда более важно в этом мире, чем высокая теоретическая подготовка, потому и заковыристые вопросы хороших HRов часто крайне далеки от «конкретно компьютерной тематики», чтобы ни значило выражение в кавычках). 

Как бы подводя итог – граница мира IT 1.0 чётко очерчивает контур «абстрактной мягкости». Всего один шаг за пределы – и начинается совсем другой мир. Прямые преобразователи энергии и данных в перемещение полётом, те же мультикоптеры, – замечательная иллюстрация различий в двух мирах.

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

Летающие вычислители, или об отличиях IT 2.0 от того, что было (2)

 
Сенсоры ориентации – главный элемент, обычно это комплект из трёх «гироскопов», трёх акселерометров и трёх же магнетометров. Пока ничего не скажу о каждом элементе комплекта, просто поясню их назначения – «гироскопы» (позволяю себе неточность, и называю «гироскопом» целый функционально законченный узел, это не совсем технически точно, но иначе получится энциклопедия, а не запись в блоге) каким-то способом преобразуют изменения углов ориентации в пригодные для дальнейшей обработки сигналы (и их три, чтобы получать информацию для трёх осей евклидового пространства), акселерометры дают информацию о разности проекций векторов ускорений на оси евклидового пространства и проекций вектора гравитационного ускорения, трёхосевой магнитометр – источник информации о проекциях векторов магнитного поля на оси евклидовой системы координат. Эти три источника данных об ориентации мультикоптера (или чего угодно, пытающегося летать) в пространстве критически необходимы.

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

Локационные подсистемы далеко не всегда присутствуют в реальных конструкциях, но неизбежно будут появляться, кроме информации о своём положении, необходимы и данные о положении прочих объектов.

Дальше всё почти как обычно – управляющие системы, иногда одна общая, иногда – несколько, актуаторы (исполнительные электромеханические механизмы).

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

Вот теперь совсем пора об IT 2.0. Целевое назначение всего этого комплекта – летать. В нём всё неидеально, нет ни одной идеальной подсистемы, и летать оно всё должно в неидеальной среде и условиях. Поэтому ни о какой «абстрактной мягкости», как в IT 1.0, и речи быть не может.

Двигатели, крутящие винты, неидеальны. А всё, что неидеально и крутится, формирует биения. Конструктив всего этого устройства, несмотря на видимую элементарность, является механической системой. Которая характеризуется упругостью и ещё тьмой показателей. То есть, фундаментально биения (колебания) от вращающихся двигателей «распространяются» по всему конструктиву. И влияют на датчики, потому что они чувствительные (каким бы ни было их исполнение, они должны быть чувствительными). То есть, вместо красивых данных, которые чуть ли не норма в IT 1.0, управляющая подсистема может получить чудовищно зашумлённый сигнал, и от шумов здесь чистой цифровой обработкой сигналов не спастись, принципиальная работоспособность всего в целом зависит и от качества проектирования примитивного на первый взгляд «корпуса» (начиная от формы сечения и материала несущих балок, у каждой формы сечения – свои частотные характеристики, и заканчивая успешностью решения задачи демпфирования платформы с датчиками). Всё ещё несколько хуже – в реальных летающих конструкциях алгоритмика обработки данных, характеристики механико-электрико-аэродинамических подсистем и механизмы калибровки (т.е. уже особенности эксплуатации) всего в целом полностью взаимосвязаны и не существует, например, ни одного «самого хорошего алгоритма», ни одной «самой хорошей конструкции», ни единого «принципа эксплуатации».

Неидеальность двигателей и воздушных винтов – это ещё и ненулевая их масса. А «масса» – это «инерционность», которая, в свою очередь, означает, что для адекватных компенсаций быстрых случайных изменений положения мультикоптера в пространстве нужны не совсем простые алгоритмы управления частотой вращения двигателей. Или даже совсем непростые (помнится, кто-то в комментариях к предыдущим записям говорил о простоте задачи построения преобразователя напряжения питания, разочарую – только широтно-импульсная модуляция, PWM, фундаментальный для импульсных систем принцип, дико непростая область, средне-хорошая книга для профессионалов в ней – под 600 страниц, «без воды»). То есть, решение задачи преобразования команды «установить частоту оборотов N» в частоту оборотов N – далеко не такое простое, как кажется. И без этих алгоритмов самого низкоуровневого управления ничего летать не будет.

Теперь немного о самих сенсорах ориентации. Те, которые доступны для «флотов дронов» (а об этом уже вовсю идёт речь, и во многом благодаря доступности таких сенсоров), не просто не неидеальны. Они, по-хорошему, чудовищно отвратительны. Но дёшевы. Очень заманчиво дёшевы и принципиально работоспособны. Ко всем недостаткам (например, к фундаментальной нестабильности), их работа ещё и очень сильно зависит от температуры. В общем, даже исключительно дорогие сенсоры такого назначения, на которых не экономят, например, в крылатых ракетах, всё равно вносят ощутимую погрешность измерений, потому и крылатые ракеты оснащаются сложной подсистемой коррекции своей траектории, например, по радиолокационной карте земли. Для дронов, как машин мирного времени, задача коррекции проще – в мирное время в голову никому не приходит, что надсистемы вроде GPS могут не работать. Вот только возможности гражданских систем глобального позиционирования далеко не всегда соответствуют потребностям (например, прецизионной агрокультуры, есть такая область, где, точность обработки поля обеспечивает одновременно и снижение затрат на химикаты, и повышение качества и количества урожая), и даже в самых простых дронах частота обновления информации от GPS порядка раза в секунду является категорически недостаточной (4 Hz – уже немного лучше, но совсем хорошо – десятки герц).

А теперь будем собирать всё это крайне общее в какое-то целое. Сенсоры ориентации обычно выдают данные с частотой порядка 50-100 Hz, навигационные данные поступают с частотой единиц-десятков герц, соответственно, актуаторы (исполнительные механизмы) должны обладать адекватными возможностями и, конечно, программные подсистемы обязаны успевать всё это промолачивать через себя и формировать управляющие команды. «Опозданий» и «задержек» здесь быть не может, это чистый hard realtime – вычислительная подсистема обязана гарантированно обрабатывать и отрабатывать всё что должна за строго заданное время, ни на микросекунду (нано-, пико- etc) дольше. Соответственно, и системное ПО отличается от традиционного, но здесь как раз нового не так уж и много, потому что теория и практика встраиваемых систем – самостоятельная дисциплина с богатой историей и практикой. Разве что надёжность, о которой пока деликатно говорят немного. Мало кому понравится упавший на голову из-за сбоев в системном ПО с высоты 500 м шестикилограммовый дрон. Тут кое-что делается, потому что усилиями профессионалов дроны буквально «выгоняются» из игрушек в машины. Например, всерьёз изменяется подход к проектированию системного и управляющего ПО, появляются формально верифицированные операционные системы реального времени, моделирование управляющих алгоритмов с последующей генерацией кода реализации становится нормой.
Прочие возможные подсистемы мы вообще вычеркнем из этой цепочки рассуждений, иначе утонем навсегда. Все они необходимы в зависимости от дополнительных задач, стоящих перед разработчиками мультикоптера, и все они – такая же интегральная часть целого, что простоты решению задачи не добавляет.

В общем, я всё это вот к чему – в IT 2.0 всё очень меняется (а кто сомневается в наступлении эпохи IT 2.0, посмотрите внимательно на цепочки недавних историй в сегменте робототехники, там очень показательные приобретения и слияния происходят). IT 2.0 становится сугубо мультидисциплинарной, и в ней «мягкая» (soft, программная) составляющая – всего лишь одна из обширного списка очень жёсткой конкретики реального мира. Первый и главный пункт списка, о котором пока не было явно сказано ничего, очевиден – продукция IT 2.0 материальна. Поэтому фокусы с беззатратным тиражированием, совершенно нормальные в IT 1.0, здесь не действуют, здесь традиционный мир себестоимостей. Об этом почему-то забывают, а это очень важно, в таком мире только «обновлениями ПО» мало что можно исправить, в отличие от IT 1.0 с адекватной уровню её абстрактности agile-культурой. «Быстро слепили и исправляем в ходе эксплуатации» здесь категорически не сработает вообще, ни на одном этапе жизненного цикла продукта. Мульдисциплинарность на деле означает неизбежное торжество того, что в IT 1.0 было де-факто отброшено как основной и массовый метод разработки – моделирования. «Язык» UML – одна из попыток в IT 1.0, оказался в итоге нишевым (есть огромные и замечательные программные системы, созданные на базе UML-моделей, например OrCAD), и в очень многих подотрослях IT 1.0 от UML давно и старательно бегут, как от огня. В IT 2.0 всё не так, здесь с моделирования всё начинается, а код… код вообще может генерироваться (и генерируется) после уже натурных (а не вычислительных) экспериментов. Так что знаменитым в узким кругах специалистов Matlab (Scilab), Mathematica (и Wolfram System Modeler), LabView, ANSYS/AutoFEA и прочим для IT 1.0 специализированным пакетам, в IT 2.0 уготовлена роль чуть ли не основных инструментов. Без них категорически невозможно. Это очень серьёзная миграция, и она неизбежно случится, с приходом (тоже неизбежным, как бы там ни называлось получившееся в итоге) Internet of Things. И, конечно, IT 2.0 – это де-факто поглощение теорией автоматического управления IT 1.0. Не наоборот. Раз IT 2.0 имеет дело с объектами материального мира, а не с абстракциями, иначе быть не может.

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

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

Откланиваюсь

Летающие вычислители, или об отличиях IT 2.0 от того, что было

«Рассекреченная» Google программа создания флота собственных дронов (они же UAV, Unmanned Aerial Vehicle, они же БПЛА – Беспилотные Летательные Аппараты, последней аббревиатурой я бы не советовал пользоваться, потому что в насквозь милитаризированном русскоязычном информационном поле БПЛА содержит исключительно военные коннотации), длившаяся почти 2 года, принципиальная позиция Amazon в отношении того же («не получится сходу в США, развернём сеть доставки дронами в Индии»), бурная активность производителей и потребителей UAV в самых разных отраслях, в первую очередь в сельском хозяйстве, вынуждают признать нечто новое, но очевидное. Робототехника, по ряду причин бурно развивающаяся именно в нише «летающих роботов», становится уже не «сектором IT», а именно что свежей кровью обновления информационных технологий. Хотя бы потому, что UAV новой, коммерческой волны, по сути являются очень интересными вычислителями, способными летать. Без IT-составляющей летать они принципиально не способны.

О военных коннотациях сделаю короткое отступление, и предоставлю слово «американской военщине» (это важно, потому что беспилотных аппаратов существовало и существует в достатке):

Летающие вычислители, или об отличиях IT 2.0 от того, что было

 
Теперь вернёмся к фразе «без IT-составляющей UAV летать принципиально не способны», похоже, придётся усилить, а потом и детально пояснить. Дело в том, что наиболее распространённые конструкции малых дронов фактически представляют собой прямые преобразователи энергии батарей и информации в перемещения полётом. Именно что «прямые преобразователи», то есть такие, в которых всё прочее – нефундаментально. Вот классический представитель большого класса подобных конструкций, дрон доставки Amazon:

Летающие вычислители, или об отличиях IT 2.0 от того, что было
 
Он относится к классу многовинтовых UAV (где «много» - больше двух, класс широкодиапазонный – от трёхвинтовых трикоптеров, до N-винтовых, модель PrimeAir, в частности, - классический октакоптер).  Из фотографии видно, что конструкция фундаментально примитивна – четыре балки с двигателями на концах, на валу каждого двигателя без всякой вычурной механики – воздушный винт (по сути, единственная «авиационная деталь»). Всё. Если попробовать «запустить» этот аппарат без его IT-начинки, не получится ровным счётом ничего. Без непрерывной в реальном времени обработки собственных информационных потоков такие машины летать не могут (разве что их можно метать на дальность, как любую железку). А «не-IT» составляющая в них, как вы видите, минимальна, и соответствует детской наивности высказывания кого-то из авиаконструкторов дремучего прошлого (вроде как Поликарпова): «если к шкафу привязать мотор соответствующей мощности, шкаф полетит».

Не буду затрагивать класса UAV, вполне рационально выбранного Google (разве что позже попробую объяснить рациональность выбора) и собирательно называемого «tail-sitter» (википедия подскажет о таких летательных аппаратах), пока только скажу, что и «tail-sitter»’ы – де-факто почти «прямые преобразователи» энергии и информации в полёт. Но попытаюсь немного рассказать о том, как, что и во что преобразуют «N-коптеры», а также о той грани, за которой начинаются отличия «IT 1.0» от «IT 2.0» (это условные термины, конечно же).

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

Квадрокоптер (в английском – quadcopter или quadrotor) – четырёхвинтовой совсем не вертолёт (именно что «совсем не», а не «не совсем», извините за вынужденную игру слов). Кому интересна история квадрокоптеров – советую обратиться к наследию французского конструктора Этьена Эдмонда Эмишена (Étienne Œhmichen, к сожалению, точно передать первый звук фамилии крайне трудно), квадрокоптер которого в апреле 1914 года пролетел рекордные (и зафиксированные официально) 360 метров. Потом, в начале 1920х, за мультикоптеры «взялись» американцы (сам себя называвший Жоржем де Ботезатом уроженец Бессарабии, учившийся в Харьковском политехническом и Университете Парижа, потомками именуемый Георгием Александровичем), для нужд армии. Но дольше двух с половиной минут шестивинтовой (гексакоптер) аппарат Ботезата летать не мог (хотя принципиально – летал).

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

Летающие вычислители, или об отличиях IT 2.0 от того, что было
 
В электро-квадракоптере ничего этого нет. Всё, чем можно управлять в нём – частотой вращения двигателей (и, соответственно, винтов). И это управление сугубо электронное, без всякой механики. Для увеличения надёжности двигатели обычно используются бесколлекторные, т.е. такие, у которых нет обеспечивающих электрический контакт трущихся деталей (никаких щёток etc). Расплата за повышение надёжности – усложнённые системы управления такими двигателями, но в 2014 году это уже если не тривиальная, то классическая инженерная (далеко не простая, если надо управлять действительно хорошо, но и не совсем научная) задача.

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

Летающие вычислители, или об отличиях IT 2.0 от того, что было

 
Из этой схемы видно, как всегда вращаются винты квадракоптера – «попарно-противоположно» (это фундаментально, чтобы стабилизировать полёт). Основные варианты «полёта» - набор высоты и снижение (без маневров в других плоскостях) отображены фрагментами (с) и (g) в «зелёном блоке»: частота вращения всех двигателей одновременно или увеличивается (набор высоты), или уменьшается (снижение). Повороты вокруг вертикальной оси (перпендикулярной к плоскости условного изображения квадрокоптера на рисунке, «красный блок») отображаются фрагментами (а) и (b): для поворота по часовой стрелке частота вращения двух двигателей (1 и 3) одновременно снижается, против часовой стрелки – одновременно увеличивается. Угол наклона относительно оси, определённой положением двигателей 2 и 4, может изменяться разными частотами вращения двигателей 1 и 3 («синий блок», фрагменты (е) и (f)). И, наконец, угол наклона относительно оси, определённой положением двигателей 1 и 3 («оранжевый блок») – разные частоты вращения двигателей 2 и 4.
Ввиду симметрии конструкции квадрокоптера не были использованы специальные и общепризнанные термины для этих «вариантов полёта», но всё же: «красный блок» – yaw, «синий блок» - pitch, «оранжевый блок» – roll.

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

Осталось самое очевидное. Если бы квадрокоптер был идеальной конструкцией и летал в вакууме (уж не знаю как с помощью аэродинамических винтов), работала бы «IT 1.0» – мир простых алгоритмов и программ, увеличил частоту вращения здесь, уменьшил там, и всё как должно быть, всё идеально летает. Даже полностью ручное управление было бы доступно человеку с его ограниченным временем реакции (которое у тренированных людей порядка 0,1 секунды). Но вот в реальном мире мультикоптеры без «IT 2.0» никогда не летали, эта возможность появилась только после серьёзного становления «новой индустрии», признаком которого стала популярность и доступность UAV всех масштабов и ценовых категорий, вплоть до совсем дешёвых комнатных игрушек.

Собственно, это всё из не-IT составляющей. В следующей тематической записи перейдём к главному, к «IT 2.0».

Откланиваюсь.

«Монотехнологические» дистрибутивы Linux, пример KaOS, или как не надо и даже нельзя

Сама идея «монотехнологического» дистрибутива, то есть такого, в котором все приложения в userspace основаны на технологической цепочке «X Window – один тулкит – …», по-своему хороша и логична. По крайней мере, теоретически. Сокращение технологических зависимостей снижает расходы на сопровождение дистрибутива, что может означать – при ограниченных ресурсах у разработчика появляется возможность сконцентрироваться на совершенствовании того, что реально нужно пользователю. Но «может означать» - вовсе не «означает».

Итак, попались мне на глаза несколько хвалебных обзоров дистрибутива KaOS, к тому же ещё и выбравшего за основу userspace действительно очень хороший тулкит Qt, что заодно позволяет косвенно оценить и влияние условно говоря «качества» и «технологического уровня» больших системообразующих библиотек на весь проект.

Система была установлена, продержалась в инсталлированном состоянии буквально 40 минут, и не без удовольствия была удалена.

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

Краткие негативные впечатления (начнём с них, вопреки традициям), списком:

  • логика разработчиков инсталлятора поражает, если выбрать какое-либо местоположение, для которого локаль будет не английской, инсталлятор переключит режим ввода на язык выбранной страны и что-либо сделать с этим невозможно (или возможно, но какими-то абсолютно таинственными способами, которых я не нашёл), поэтому имя хоста (и пользователя, и пароль etc) придётся вводить на региональном языке, что от практики здравого смысла весьма далеко;
  • что такое «тултипы» (всплывающие подсказки) разработчики не представляют, поэтому пользователь оказывается в страшно перетяжелённой «функционалом» (злобно ёрничаю) среде, где что-то узнать из самой среды не представляется возможным, то же самое справедливо и для клавиатурных команд (шорткатов, потому что до управления ими надо ещё добраться);
  • страстная любовь программистов к идиотским ни о чём не говорящим названиям здесь доведена со совершенства, причём в самых фундаментальных для Unix-подобных систем вещах, например, не стоит пытаться искать поиском меню “term”, “xterm”,”console” и прочее, потому что терминал называется Yakuake (OM...G!), браузер никак не обозначен что он – браузер вообще, а доступный в общестистемном меню пункт, отвечающий за вызов браузера, почему-то именован «вытащенным» из шортката названием малоизвестного поставщика сервисов видеоконференций, что ли (возможно, спонсора проекта);
  • отдельного приступа ярости заслуживает выбор иконок, которые в любом пользовательском интерфейсе сугубо прагматичны и (по логике) должны быть предельно информативны, можно понять желание разработчиков сохранить оригинальные логотипы разных проектов, но кто может догадаться, что стилизованный синий осьминог – это менеджер пакетов, а не, например, игрушка, - особенно это справедливо для тех, кто прежде в глаза не видел Octopi, одну из тысячи графических оболочек одного из сотни пакетных менеджеров, и это справедливо практически для всех иконок, так что если разработчики стремились к эффекту «внезапности», они его добились «на отлично», а уж с учётом игнорирования тултипов – так и вовсе достигли совершенства;
  • реализации сложных, довольно странных и вовсе нетривиальных концепций пользовательского окружения KDE названы невнятно и никак нигде не пояснены на уровне интерфейса (например, Activities, как узнать что это, не выходя за пределы системных возможностей?);
  • колоссальные усилия затрачены на подсистемы крайне сомнительной целосообразности, например, на поддержку виджетов, которые очень спорно важны для «рабочих станций», там море ненужного в 99% случаев, а то и вовсе вредного (особенно для пользователей стареньких машин и лаптопов, ведь каждый виджет – это ресурсы и расход батареи);
  • простые кажуальные утилитарные приложения перетяжелены по принципу «мы сделали, потому что это можно было сделать», эффекта от этого строго ноль, а в некоторых случаях он ещё и отрицательный (всегда умиляли, например, визуализаторы сигнала в музыкальных плейерах – на что и зачем в них смотреть, даже спектроанализатор – что его созерцание даст непрофессионалу в акустике?, но всё это – повышенный расход батареи при исполнении на лаптопе, что для фонового приложения абсолютно непозволительно);
  • рендеринг шрифтов оставляет, мягко говоря, желать лучшего.

Впрочем, хорошее тоже есть. Система принципиально работоспособна, весьма «шустрая» и неожиданно легковесная. То есть, все страхи и ужасы «тяжести» KDE больше миф, чем реальность (разве что подкреплённый избыточностью «свистелок» и «бантиков» миф).

Общее впечатление примерно такое – если вы хотите чтобы вам разбили голову ноутбуком, установите кому-нибудь, кто физически покрепче и не использует KDE, KaOS на ноутбук «в качестве подарка». Вам этого не забудут (и даже не простят).

***

А теперь эмоции и ёрничанье в сторону. И вернёмся к самому началу. К сожалению, любые предположения о влиянии «уровня совершенства» («качества разработки») технологической базы пользовательского интерфейса никак не влияют на фундаментальные пользовательские показатели и соответствие пользовательским критериям (а когда-то в Nokia, кажется, думали иначе). Увы, это факт. О крайностях мы не говорим, что очевидно (крайность – это неработающая или неправильно работающая технологическая основа). Больше того, предположения о результирующем улучшении пользовательских показателей за счёт архитектурных решений на уровне пользовательского интерфейса (а «монотехнологичность» дистрибутива – это именно что архитектурное решение) тоже не обладает универсальностью, по крайне мере, доказанной. Сделать пользователю плохо можно с помощью любых технологических решений.

В то же время, никогда не надо считать пользователя идиотом и потому «делать похоже на Windows». У всех перед глазами совершенно взрывной успех той же Android, ничем абсолютно «на Windows» не похожей. Это не помешало. Но вынуждать пользователя тыкаться слепым котёнком, укрепляя такую позицию логикой «захочет, найдёт как узнать» и богато украсив её «внезапными весёлыми картинками и иконками», тоже категорически нельзя. Если человек встречается с невнятными внезапностями при возможности выбора – он разворачивается и уходит. Поразительно, но в 2014м году, оказывается, после опыта с той же KaOS, свежо звучит чудовищная банальность – люди в технических системах ценят «простоту концепций» и удобство использования механизмов, где «простота концепций» - это минимальный список фундаментального (например, «всё что ты видишь на экране – объекты, наводишь на объект курсор – получаешь информацию об объекте, правая кнопка мыши – список возможных действий с объектом, левая кнопка мыши – выделение объекта»). Увы, KDE, по крайней мере с настройками создателей дистрибутива KaOS, никакой простоты концепций не демонстрирует. Царство эклектики, хаотичное расположение непонятных управляющих элементов интерфейса (некоторые пиктограммы даже оконного менеджера ставят в тупик), скрытые клавиатурные шорткаты, о которых ничего не известно из самого интерфейса, etc. С таким подходом сам Линус Торвальдс ещё не раз скажет «хочется, всё-таки, увидеть десктоп».

Из всего этого следует ещё и банальная просьба к восторженным блоггерам и всем, «пробующим перо» авторам статей технического содержания. Восторги и «позитивные эмоции» (звучит отвратительно, но модно) – это прекрасно. Но если за ними нет ничего подтверждающего, они оборачиваются разочарованием аудитории. А аудитория таких авторов – потенциальные пользователи, замыкающие необходимую для существования любого проекта цепочку обратной связи. Дезинформировать потенциальных пользователей (наобещав им «немыслимые удобства и красоты») – фактически сократить переход из потенциальных в реальные, или, попросту, погубить проект.

Откланиваюсь.

«Casual computing» и битва за «Нетбук 2.0»

Придётся начать с терминов, потому как они выдуманы для этой записи, которая получается размером статьи (но на статью «не тянет» по ряду очевидных причин).

Casual computing – удовлетворение повседневных «информационных потребностей», нетребовательное к единственному существенному фактору – площади экрана. Чтение новостей с пассивным ленивым браузингом несущественного для профессиональной деятельности (все понимают, о чём речь), общение (включая соцсети), иногда и по желанию – чтение электронных книг (что совсем не обязательно, как и всё прочее), кажуальные игрушки-таймкиллеры, мелкие активные действия «по хозяйству» (как-то – планы регулярного шоппинга, дурацкое слово, заменители всяких «хозяйке на заметку» бумажек с рецептами и прочей полезной мелочью, etc).

От casual computing невыносимые «снобы IT» долго воротили нос (причём сами же использовали вовсю, загружая им свои же «рабочие станции»), время всё расставило по своим местам, теперь для casual computing приспосабливают «умные часы», потому что для многих задач достаточно совсем крохотной экранной площади.

Маркетинговый термин (скорее даже forced meme) "нетбук" без подпитки журналистикой вроде как канул в Лету. Технические характеристики «нетбуков» забылись и стёрлись, но кое-что важное в памяти осталось – у «нетбуков» был экран малой площади (чаще всего 10” диагонали) и они были дешёвые. То есть, без всяких умственных ухищрений, это были «машины casual computing». Несколько обогнавшие своё время (нечёткое позиционирование, выражающееся даже в аморфности мема, обозначающего класс, и неготовность индустрии на компонентном и программно-системном уровне), потому и ушедшие со сцены очень быстро.

Но тихо и почти незаметно (кого особо волнуют новости в «товарной составляющей», кроме продавцов и временно озабоченных выбором покупателей) происходят кой-какие явления, вроде пока незначимые, довольно чётко очерчивающие контуры ожидаемого близкого будущего устаревшего, но до сих пор живого класса персональных компьютеров, которые "для casual computing". Явления давно ожидаемые, кто-то просто должен был решиться сделать первый шаг. Начну издалека.

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

Оказывается, "проницательных маркетологов" этот факт поставил в тупик. Теории обвалились, шаблоны не помогли, а замедленная реакция на события в "практическом мире" стала слишком заметной, до возникновения вопросов.

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

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

БЕЗЗАБОТНОСТЬ

Эти устройства действительно такие, в отличие от PC, требующих каких-то постоянных мелких забот (а они у "некомпьютерных людей" бывают самыми "неочевидными" и "странными" по меркам, например, профессионалов из IT-сектора, например, забитый "под завязку" диск C: при свободном терабайте на диске D: - норма, и кто кому дал право человека, занимающегося кройкой и шитьём, в этом обвинить?).

И дело даже не в том, что люди в возрасте и подростки (дети) любят именно такие устройства - не требующие лишних действий. Дело в потребностях. Или в casual computing. Этим пользователям не нужны "супервозможности" офисных пакетов, они не "оформляют профессиональные документы", и платить за это лишними заботами они не собираются. Вот и вся тайна, собственно. Кроме одной мелкой детали. Появление и популярность не-PC устройств косвенно свидетельствует и о том, что разработчики UI наконец научились делать UI (кто сомневается - возьмите "на поиграться" старенький карманный компьютер, только делайте это в присутствии близких людей, вдруг вы не имеете опыта, и вам понадобится экстренная медицинская помощь, провожу над собой такой эксперимент со старым HP iPAQ, некогда чуть ли не лучшим в своём классе, включаю его раз в год, мог бы снять разрывающее сердце видео об этом).

Так вот я всё это к чему. Технический уровень планшетов до буквально последних нескольких дней был несоизмеримо выше "хромобуков". Особенно заметной была разница в качестве и показателях ключевого элемента - экрана. Я не беру "элитные модели" из непозволительной для массовой аудитории пользователей "необязательных удовольствий" ценовой категории. Если в бюджетных планшетах IPS-матрица (пользователь может не подозревать что оно такое, но прекрасно отличает по качеству "картинки") с, условно говоря, HD-разрешением - давно норма, то вот у "хромобуков" экраны хромали. Ну и сочетание "процессор - объём ОЗУ" у хромобуков также было каким-то, мягко говоря, странным.

И тут Samsung, Acer и Nvidia делают первые шаги. 13-дюймовые "хромобуки" наконец получают HD экраны и, в старших модификациях, наконец выпускаются с 4 GB ОЗУ. Ценовой диапазон - до $400. Время автономной работы - до 11 часов.

(для некоторого "оживления" приведу очень информативные фотографии, а самых строгих оповещаю - это сарказм)

"Хромобук" Acer, и описание, кому интересно:

«Casual computing» и битва за «Нетбук 2.0»

Аналогичное, от Samsung (описание):

«Casual computing» и битва за «Нетбук 2.0»

Неожиданно тяжёлая и страшная поступь хромобуков не остаётся без внимания и сторонниками адаптации того, что уже есть, каким бы оно ни было.

И вот, очень неожиданно, Hewlett Packard анонсирует нечто странное, с полноценной ОС Windows 8.1 и немыслимой даже для времён нетбуков ценой - $199. Странное во всех смыслах. Экран уже вроде не совсем для casual computing – целых 14” диагональ (ну а вес 1,75 кг, - вообще из совсем другой оперы). Правда, экранное разрешение всё ещё из времён первой серьёзной волны casual computing – 1366x768. Прочие параметры несущественны, если бы не одно «но» - специфика используемой ОС. Она действительно «очень большая» система, и скромная SOC от AMD в комплекте с 2 GB ОЗУ и 32 (в базовой модели) GB флэш-накопителя для такой большой системы крайне недостаточны. Но цена… Цена как будто должна «решить всё». Гадать о возможностях всей системы не буду (у меня есть негативный опыт попыток эксплуатации Windows 8.1 на нетбуке с аналогичными основными параметрами), просто напомню судьбу куда-то девшихся дешёвых планшетов под Windows 8.1. Куда они делись?

Метания с попыткой сверхбюджетной адаптации Windows 8.1 к чему попало, для чего она не предназначена, по идее, не должны радовать в первую очередь рыночных аналитиков. Вынужденное занижение ценовой планки меняет «ландшафт», но не отменяет сути – устройства появляются и сходят со сцены из-за невостребованности, но «осадок остаётся». Хорошо, когда высота ценовой планки диктует рынку разнокалиберных производителей некий набор де-факто стандартных параметров, формируя у потребителя восприятие «теперь _это замечательное_ стоит столько». Всё прочее – нехорошо, причём для индустрии.

Ну и теперь, наконец, самое главное. Потребности в casual computing никто не отменял. И не отменит. Это самые распространённые потребности. И поднимающаяся волна "нетбуков" (машин для casual computing) нового поколения - хороший сигнал для разработчиков... дистрибутивов Linux. Windows слишком большая система для casual computing. Неоправданно громадная. Её неоспоримые достоинства для задач casual computing совершенно не нужны. Только подсистемы, отвечающие за миллионы драйверов для всего, что возможно, есть и было, это громадный пласт, в котором десятилетиями «роются» армии узкоспециализированных профессионалов. Зачем всё это машине casual computing, если она не расширяема по определению, и всё, что у неё есть для работы с внешним миром – беспроводные каналы (никто уже не использует в casual computing USB, любой лишний разъём и «шнурок» пользователя раздражают, ничего по сути не предлагая взамен). Сложные оконные системы тоже оказались не особо нужными, потому что площадь экрана ограничена, а время переключения между задачами (да и механизмы переключения) ничуть не «напрягают». Миллионы шрифтов (и подсистемы управления ими) тоже избыточны, и так далее, и тому подобное. Всё это великолепно реализовано в Windows, но не востребовано пользователями casual computing.

Казалось бы, при всём этом очевидном дистрибутивостроители Linux должны, наконец, сказать своё слово. Увы. Не говорят. Молчат как рыбы. А если что и говорят – то очень часто лучше бы молчали.

К сожалению, продолжающаяся история «незаполнения ниши» casual computing выявляет очень серьёзные явления, присущие миру open source, к неудивлению – совершенно очевидные. Тотальная вторичность в нетехнических идеях (то есть, в том, что видимо неспециалисту) – копирование на всех уровнях, от идей до дизайна. Чудовищные по сей день механизмы распространения готовых к исполнению программ (пакетные менеджеры и «маркеты программ» в мире Linux - отдельная история, заслуживающая настоящего погрома). Реальная невозможность с использованием одной технологической базы сформировать программный набор для casual computing. Это очень неприятное явление, потому что за каждым дистрибутивом стоит огромный труд поддержки всего невидимого пользователю «технологического мусора» (и для пользователя это действительно мусор), «волочить» который силами энтузиастов можно какое-то время, но непросто, а уж при коммерческом подходе и мизерной марже в сегменте casual computing (напоминаю о $199 14-дюймовом «нетбуке» с недешёвой коммерческой ОС Windows 8.1)... 

В общем, Linux-сообщество никак не хочет и не может понять очевидных причин успеха «корпоративных дистрибутивов» - Android и ChromeOS. Цельная жёсткая волевая политика в формировании userspace и создание действительно удобных и внятных «рынков программ». Ничего подобного в Linux-сообществе не наблюдается и, похоже, не предвидится. Так что битва за casual computing рынок всё так же будет между гигантами корпоративной разработки, причём с заранее уже известным результатом (ведь смартфоны – тоже casual computing машины, а на рынке смартфонов всё уже очевидно до зевоты).

То есть, особо интересного ничего не произойдёт. Это, кстати, объясняет и масштабные попытки поиска «направлений прорывов» в casual computing, от wearable до ubiquitous вычислителей. Все ищут область, где будет всем интересно, потому что «всем интересно» и «денежно» - синонимы на определённом участке эволюции.

Такая картина формируется из наблюдаемого.

Откланиваюсь.

И новая память, и новый разъём USB

Много писать здесь нечего, всё это было буквально «под ногами», но всё же. В подразделении Cypress Semiconductor под названием AgigA Tec продемонстрировали первый образец DIMM нового поколения. В привычной «компьютерной части» - это DDR4, со всеми вытекающими удовольствиями (не буду пересказывать очевидное). И, честно говоря, трёх букв бы из себя не выдавил по этому поводу, потому что DDR4 планок памяти будет уже в этом году в достатке.

Но. То, что предлагает AgigA Tec, называется NVDIMM – то есть, энергонезависимые (Nonvolatile) модули памяти. А вот это уже очень интересно, особенно в сочетании с DDR4.

NVDIMM ничем электрически не отличаются от традиционных DIMM. То есть, вставляются в те же разъёмы, на тех же платах. Ключевое отличие – способность каждой планки памяти сохранять своё содержимое в интегрированной на той же планке флэш-памяти. Даже (и в первую очередь, - именно) при серьёзных авариях подсистемы питания всего компьютера в целом.

Пора взглянуть на собственно планку памяти NVDIMM:

И новая память, и новый разъём USB

Планки памяти все видели, и тут отлично заметно, насколько технологически всё изменилось – вместо привычно «расползшихся» по площади платы DIMM однотипных микросхем DRAM мы видим явно какие-то большие контроллеры и модуль памяти, выполненный в одном корпусе. Но самое интересное не в этом. А в системе аварийного питания NVDIMM. Чтобы оперативная память приобрела полноценное свойство Nonvolatile, необходима её энергетическая независимость, хотя бы на время, достаточное для копирования данных в «теневую» флэш-память.

Разработчики AgigA Tec решили задачу радикально – они используют как бы «собственный источник бесперебойного питания» в каждой планке памяти. Реализован он на суперконденсаторах (с ёмкостью порядка единиц или даже десятков фарад). Технически задача не смертельно сложная, но и далёкая от тривиальности – у суперконденсаторов приличные токи утечки и специфическое поведение при разряде на нагрузку с изменяющимися электрическими характеристиками.

В общем, «встроенный UPS» такой планки памяти – вовсе не «две детали», а довольно серьёзный контроллер резервного питания плюс «аккумуляторы», всё как в больших устройствах. Причём учитывающий важный нюанс используемых «аккумуляторов» - суперконденсаторы очень «не любят» перегрева (их электрические свойства резко ухудшаются), поэтому для таких подсистем питания в Agiga Tec производят стендовый отбор компонентов и, естественно, контроллер аварийного питания планки памяти измеряет температуру суперконденсаторов и алгоритмически пытается подстраивать режимы работы механизмов копирования DRAM во флэш-память с учётом возможностей «силовой подсистемы».

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

Независимые механизмы копирования-хранения-восстановления образов RAM в каждой планке памяти по сути распараллеливают операцию «аварийного сохранения и восстановления контекста» и, тем самым, существенно сокращают время её выполнения.

Собирая эти два очевидных свойства NVDIMM воедино, можно утверждать, что такая память интересна как производителям высоконадёжных серверов, так и (возможно даже в больше степени) сборщикам рабочих станций и ноутбуков. Для последних малопотребляющая (суперконденсаторы можно очень долго заряжать малым током, «срабатывает» же система питания на них относительно редко, скважность «импульсов» резервного питания очень высока, соответственно, среднее энергопотребление - мизерное) подсистема очень быстрого «глубокого сна» (типа hibernate) – настоящий Клондайк.

Учитывая снижающуюся стоимость флэш-памяти и дешевизну суперконденсаторов (в первую очередь, рассчитанных на низкие рабочие напряжения, это важный нюанс в сочетании с пониженным напряжением питания DDR4), можно на основе сугубо инженерных соображений говорить о скорой будущей маленькой, но крайне полезной «революции» в лаптопах, особенно мощных. Ведь время "засыпания-просыпания" ноутбука - очень важный маркетинговый и легко оцениваемый пользователем показатель, как и время автономной работы. По-моему, такого интересного очень давно не было.

Теперь новый разъём USB. Тоже ничего бы не сказал даже о нём, если бы не одно «но». Все знают, что, в среднем, USB-разъём «втыкается» (простите за грубость) с третьего раза, а в особо приятных (и почему-то особо нужных) случаях – с N-го, с помощью обсценной лексики. Так вот. Мучиться осталось недолго.

Здравствуй, наконец, разъём USB Type-C, индифферентный к ориентации. Не будет больше ни ограничений формой разъёма (как в Micro USB), ни, тем более, кошмарного внутриразъёмного ограничителя, как в полноразмерном разъёме.

И новая память, и новый разъём USB

Это просто праздник, причём консорциум USB (USB Promoter Group) уже приготовил и спецификации самого разъёма, и кабелей. Габариты разъёма практически такие же, как у Micro USB, так что со следующего года Type-C, вероятнее всего, будет во всём «свежем». А для измученных классическими USB-разъёмами уже обещаны переходники, и уж кто-кто, а предприимчивые малые китайские производители наштампуют их в невероятных количествах.

Таковы маленькие новости в период большого затишья в индустрии. Уже неплохие, я считаю (разве что удивляет, сколько времени понадобилось USB Promoter Group для выяснения очевидной особенности разъёмов, тем более, такой, которая стала основой мемов и анекдотов).

Откланиваюсь

IBM и DARPA, искусственные нейросистемы, а также где лежит миллион $

Новость о появлении «процессора» TrueNorth от союза IBM и DARPA буквально проскочила в поле зрения, отшумела за день и утонула в потоке «более актуального». Как обычно, прозвучали обязательные «революция» (в основном, в изданиях) и «круто» (во всяких неформальных «народных источниках»).

Попробую восстановить о чём вообще идёт речь и почему DARPA не поскупилась на $53 миллиона инвестиций в исследовательскую программу, которая на деле ещё только начинается.

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

Начнём с «имитации человеческого мозга», о которой упомянули чуть ли не все.  На деле в основе проекта TrueNorth (название заимствовано из геодезии, это «истинный», а не магнитный, северный полюс, уж не знаю, может, в IBM специально выбрали такое «холодное» название, чтобы как раз подчёркнуто избавиться от неизбежного «очеловечивания» технологии во всём научно-популярном) вовсе не мозг «неизвестного человека», а результаты исследований мозга неисчислимого множества многострадальных лабораторных макак.

Подпроект CoCoMac (Collation of Connectivity data on the Macaque brain, сопоставления экспериментальных данных о соединении нейронных сетей мозга макаки) сам по себе – громадный труд, объединяющий результаты 410 анатомических исследований и 2500 проб самых разных времён. В итоге построена модель мозга, по заявлениям специалистов IBM превосходящая что в масштабах, что в степени детализации, всё существовавшее ранее примерно в 3 раза (и никаких оснований сомневаться в этом заявлении нет). Теперь всё накопленное, структурированное и аннотированное, доступно специалистам в виде единой открытой базы данных (или даже знаний). Кому интересны междисциплинарные детали проекта, в них нет никакой тайны. В деталировке ограничусь лишь очевидным фактом – исследователей CoCoMac большего всего интересует структура «длинных соединений» мозга, то есть, аксонная структура. Факт сам по себе очевидный – если производится попытка построить действующую модель фрагмента нейронной структуры на основе небиологических технологий, неизбежно проявится фундаментальное ограничение технологически доступной элементной базы – она уже позволяет реализовать много «соединений» в пределах одного полупроводникового кристалла, но вот количество физических выводов реальной микросхемы, в которую кристалл «упакован», имеет реальные ограничения. В IBM это прекрасно понимают, и единичный, даже с выдающимися на сегодня показателями, «процессор» TrueNorth – далеко не то, на что в IBM замахнулись. А большие сети таких «процессоров» требуют реально очень хорошего понимания принципов работы биологических сетей, в которых длина аксонов может достигать уже «вполне инженерных» единиц метров (например, у нашего биологического вида homo sapiens).

Теперь собственно аппаратная модель нейрона. Если кто-то впечатляется громкими объявлениями «очередной революции», поспешу охладить пыл – аппаратные модели нейронных сетей имеют очень продолжительную (более чем двадцатилетнюю) историю, о которой написан целый трактат в Университете Беркли, я постараюсь почти не затрагивать этот обширный документ, изобилующий библиографией, разве что скажу – некоторые серийно выпускавшиеся модели «нейронных сетей в виде микросхем» были уже устаревшими в 1997 году.

Так что о «революциях» мы не будем, а вот о последовательной эволюции поговорим. Потому что TrueNorth преподносит некоторые ожидавшиеся (и не очень) сюрпризы.

Описанию модели нейрона TrueNorth посвящён отдельный документ 2013 года, из которого видно, что в IBM изначально работали не только над аналоговой или функциональной моделями, а и над классическим бинарным вычислителем весьма скромных масштабов – модель нейрона потребовала для реализации 1272 логических вентиля (для сравнения – ядро очень скромного 32-битового встраиваемого процессора ARM Cortex M0, считающееся сопоставимым по сложности с многими 8-битовыми конкурентами, по числу вентилей «сложнее» примерно в 10 раз). Причём примерно четверть используемых логических вентилей в «бинарно-вычислительном» нейроне TrueNorth фактически нужны для моделирования аналогового несовершенства биологической системы (на 384х логических вентилях создан генератор псевдослучайных чисел). Ещё раз напоминаю – речь идёт о TrueNorth образца 2013 года, который всего года назад считался «очень большим» - 256 нейронов, 65535 синапсов («коротких соединений», коммутатор 256x256), 256 аксонов («длинных соединений», для формирования сетей из отдельных микросхем).

Проходит всего год, и IBM заявляет новый TrueNorth, с миллионом нейронов (увеличение показателя – в 3900 с лишним раз!) и с 256 миллионами синапсов (рост показателя – в те же 3900 раз). При этом за год никаких сверхреволюций (и даже просто мелких «переворотиков») в полупроводниковой технологии не наблюдалось, а новый TrueNorth уже существует «в железе».

Что же произошло?

В принципе, ничего непредсказуемого – победил исторически проверенный инженерный опыт. 1272 логических вентиля, реализующих модель нейрона, были заменены крайне примитивным (не в придумывании, в реализации) функциональным вычислителем, принцип действия которого соответствует требуемой задаче. Описание всего 10-транзисторной функциональной ячейки, моделирующей нейрон как динамическую систему, есть в статье исследователя IBM Джона Артура (John Arthur, “Silicon-neuron design: A dynamical systems approach” 2010), кому решение задачи интересно, статью можно отыскать. 1272 логических вентиля – это примерно («на глаз») в 4000 раз больше, чем 10 транзисторов функционального вычислителя. Причём, если следить за датами публикаций, в IBM «обкатывали» сразу несколько конкурирующих вариантов реализации действительно большой нейронной сети на одном кристалле, и после явного технологического ограничения (площадь кристалла-то конечна), выиграл в итоге классический инженерный подход (как он выиграл в своё время в функциональном вычислителе, встроенном в любой телевизор – фильтре на поверхностных акустических волнах).

Вторым и очень приятным (особенно для практиков) следствием применения функционального подхода стало энергопотребление. Оно тоже совершенно закономерно снизилось, и новый TrueNorth потребляет всего 70 милливатт. Даже не представляю, какой бы это был «утюг» при классическом вычислительном подходе и заявленных параметрах.

Обо всей инфраструктуре, которой в IBM уже «обрастили» буквально «взорвавшийся» (3900-кратное улучшение показателей всего за год, при мизерном потреблении энергии – это взрыв) TrueNorth, даже не буду ничего говорить, всё нужное всем желающим доступно. Поговорю о другом и главном. Чего хочет IBM от внезапно появившегося и теперь уже (с учётом масштабов) совершенно нового класса вычислителей.

Во-первых, начнём с очевидного. Дешёвым TrueNorth в экстремальных конфигурациях не будет, и это совершенно однозначно. Давайте подумаем о кристалле реализации этой машины. Большую площадь кристалла должен занимать (и занимает) реализованный на основе статической памяти коммутатор «ближних соединений» между нейронами. Площадь области «моделей нейронов», по логике,  должна быть совсем скромной. Статическая память – очень дорогой узел во всех микросхемах. И я не уверен, что IBM в промышленных масштабах нарушит негласное соглашение индустрии и устроит «погром на рынке цен встраиваемой SRAM». Так в индустрии не поступают, не принято.

Но. Машины TrueNorth более скромной конфигурации крайне реалистичны как массовые, и IBM их уже открыто нацеливает куда? Правильно, туда, куда нацелено сейчас всё – в область IoT, Internet of Things. И, даже мне не кажется, это будет реально «свежая кровь». Для IBM и её решений в области нейровычислителей (или «когнитивного компьютинга», как кому нравится) это самый короткий путь к коммерциализации технологии (очень специфической и совершенно «не обкатанной» массовой аудиторией практикующих разработчиков). «В прицел» IBM попадают сразу и встраиваемые IoT-вычислители (например, для решения самых разных задач распознавания образов, в том числе и в первую очередь далеко не очевидных, sensor fusion как «локальная подготовка более лучших данных» действительно требует энергоэффективного решения таких задач в реальном времени), и «супермашины распознавания образов и анализа данных» датацентров. Так что история коммерциализации обещает быть очень интересной, и кто знает, через сколько лет спрос на «когнитивных программистов» превысит спрос на «традиционных».

Только во всём этом есть одно большое «но». Безусловно, быстродействие небиологических моделей нейронных сетей несоизмеримо выше, чем у своих «живых» прототипов. Но за биологическими сетями – миллиарды лет непрерывной эволюции. Так что основная битва за «нейровычислители» будет, вероятнее всего, не в аппаратных моделях (они, как раз, развиваются очень хорошо), а в алгоритмике быстрого машинного обучения (самообучения), например. И, естественно, в моделировании систем. Никто же не будет десятилетиями обучать нейронную сеть «правильно» реагировать на редко происходящие в физическом мире события, это непозволительная роскошь.

Так что DARPA и IBM как бы нарисовали будущим программистам и IT-специалистам обширную область вероятного «повышенного спроса»: междисциплинарное высокоуровневое моделирование и машинное обучение. Впрочем, реальные специалисты в этих областях уже вовсе не бедствуют, насколько я информирован.

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

Теперь пару слов о тоже какой-то почти фантастике, но всё же, мало ли. Google объявила всемирный конкурс с призовым фондом в миллион долларов. Всего-то, что требуется от участников - зарегистрироваться (до 30го сентября), поработать и представить образец AC/DC преобразователя с максимально возможным КПД и удельной мощностью выше 50 Ватт на кубический дюйм (это, на мой взгляд, ключевые требования, прочие по ссылке). Google выберет из предложений претендентов лучшее - и миллион долларов в кармане. И интересно, и денежно, да-с. Конечно, очень хочется верить, что найдутся высококлассные конструкторы систем питания, элементная база (необходимая, а не "какая есть"), покой для хорошей работы и много ещё всяких факторов. В общем, если кто-то решится сражаться - искренне желаю победы, готов за бесплатно написать о победителях и сделать хорошие фотопортреты :)

Откланиваюсь.

Продолжаем формировать «личные информационные завалы»

Приёма, описанного в предыдущей записи, увы, категорически не хватает. По разным причинам. Поэтому я использую ещё один приём, с целой «технологической цепочкой», разовое формирование которой не требует особых усилий.

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

Продолжаем формировать «личные информационные завалы»

Сохранённая в Pocket страница не так уж и плоха:

Продолжаем формировать «личные информационные завалы»

Если вы знаете LaTex, сможете прочитать формулы. Но даже если знаете, это не лучший вариант – почему-то даже прекрасно знающие LaTeX предпочитают распространять «читабельные» в естественной нотации документы, да и Tex – LaTex сделаны как раз для этой цели.
Попробуем «почистить» страницу штатным «чистильщиком» Clearly сервиса Evernote. Ой, «а где всё»?:

Продолжаем формировать «личные информационные завалы»

Если таким методом «не глядя» очистить страницу и сохранить её, увы, 90% сути утратится.

Ещё неприятнее, чем с MathML, обстоит дело с svg-иллюстрациями, которые «чистилками» и сервисами чаще всего превращаются в чудовищное невосстановимое месиво символов. И, как обычно, всегда «трудные» фрагменты – вставки исходных текстов (snippets), особенно с подсветкой синтаксиса. Всё это или исчезнет, или будет «перекорёжено» до непригодности, или «линеаризировано» в одну монохромную строку до нечитаемости. В таких случаях (и просто при больших документах, а они встречаются) без дополнительной ручной работы не обойтись.

Инструмент №0 – незаменимый лично для меня сервис с характрное анти-вебдванольным внятным названием PrintWhatYouLike. Это гибрид интерактивного «навигатора» по DOM страницы с оперативным редактором, который даёт возможность изолировать, удалять и изменять некоторые геометрические параметры элементов DOM. Сервис доступен с помощью букмарклета и практически не требует освоения – водим-«тырцаем» мышкой по странице, смотрим за подсвеченными красным блоками DOM, выбираем в появляющихся контекстных меню нужные действия (обычно сразу отыскивается и изолируется сутевой блок, потом он «подчищается» от излишеств):
После ручной «подчистки» получаем практически идеальный документ, без каких-либо излишеств и с полноценной сохранённой разметкой:

Продолжаем формировать «личные информационные завалы»

Можно попытаться скопировать его весь (Ctrl+A) и вставить новым документом в тот же Evernote, довольно часто получается очень хороший результат, но слова «довольно часто» означают, что также довольно часто получается не то, чего хочется. И тратить время на это нет смысла.

Мой подход другой. Я «печатаю» очищенный документ на виртуальном pdf-принтере (очевидная кнопка Print блока управления PrintWhatYouLike), на этом этапе всё, что от меня требуется – ввести более-менее вменяемое имя файла («вменяемость» определяется многими критериями, я игнорирую содержание и использую шаблон WebArt_YY_XX.XX.XXXX, где YY – номер, а XX.XX.XXXX – дата). И всегда получаю безукоризненный pdf-документ, с сохранённой разметкой и даже с URL оригинала в нижнем колонтитуле.

Продолжаем формировать «личные информационные завалы»

На этом этапе сделано всё, чтобы сформировать настоящую «файлопомойку» и потом в ней увлечённо копошиться. Но это не наш метод.

Свежеполученный документ добавляется в библиотеку Calibre. Это надо делать вручную. Как именно – не буду даже докучать, Calibre предельно простая в пользовании система. К особо интересным документам я даже не ленюсь подбирать «обложки» - механизмы редактирования метаданных Calibre это позволяют, а 3-5 минут на подбор поиском картинки, которая вызывает ассоциацию с содержимым файла, окупается потом сторицей, потому что одна из самых удобных навигаций по библиотеке Calibre – всё равно визуальная, «по обложкам» (они же прекрасно запоминаются).

Можно добавлять сохранённые pdf-файлы прямо в Evernote, оболочки сервиса располагают неплохими средствами, поддерживающими чтение инкапсулированных pdf-документов, но. «Распечатанные» в pdf файлы получаются не такими маленькими, как хотелось бы (приведенный пример «породил» почти мегабайтный документ), «напичкивать» Evernote таким большим нет смысла.

Calibre же даёт очень развитые средства управления метаданными документов (у «распечатанного» файла нет в метаданных обложки, авторов, тэгов, etc) и, главное, сервер удалённого доступа к библиотеке.

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

Всё бы хорошо в этой системе. Кроме одного «но». Calibre – система большая и интерактивная, она для ведения библиотеки (что составляет менее 1% времени пользования ею) и только частично – для удалённого доступа к ней (а это – 99% времени). Держать ради доступа к библиотеке постоянно включённый «большой» компьютер нерационально. Надо экономить электроэнергию.

Посему пришлось добавить «стационарную интерактивную Calibre» отдельным Calibre-сервером на том самом стареньком нетбуке, который выбросить не поднимается рука. И синхронизировать каталоги библиотеки интерактивной и серверной Calibre. Есть всякие способы решения этой задачи, но я выбрал самый простой, требующий минимума действий. О них – в следующий раз, пока же скажу, что потребляющий 8 ватт никогда не выключающийся нетбук справляется со своей задачей «на отлично» - моя библиотека всегда со мной (через туннель ssh, точнее, Mosh, об этом тоже будет запись – почему, как и зачем) там, где есть доступ к сети. Всегда можно что-то нужное «подтянуть» из неё и потом уже читать локально.

К слову, я пробовал развернуть сервер Calibre (или его заменитель – COPS OPDS, тоже напишу о нём) на Raspberry Pi (это возможно), но результатами остался неудовлетворён. В реальном использовании Pi слабенькая для таких «программных бегемотиков». Так что чуда для любителей Pi в этом случае не выйдет.

Теперь о всяком высмотренном удивившем и забавном.
Не устаёт удивлять Microsoft. Уже и в Lenovo сообразили, где «новое большое поле со свежей травой», и создали подразделение IoT (и даже не побоялись после всех своих неисчислимых масштабных приобретений заявить, что «эпоха PC уже всё»), а в Microsoft всё идут какими-то странными, извилистыми путями, открывая крайне неожиданные проекты. Нет, ну действительно, позиционирование Sharks Cove в область «Internet of Things» – это, мягко говоря, очень странное позиционирование.

Продолжаем формировать «личные информационные завалы»

€239 за весьма заурядную материнскую плату с Intel Atom, созданную в союзе с Intel, это может относиться к какой угодно области, только не к IoT. Всё ещё интереснее, потому что в комплект входит инсталляция Windows 8.1. Которая и не RTOS, и не отличается компактностью, и вообще из «другой оперы». Что с этим будут делать те, кто уже «наелся» поисками ответа на этот же вопрос в возне с Raspberry Pi (которая хоть забавна, потому что копеечная и «сделай сам»), понятия и представления не имею. Для IoT-маршрутизаторов такой странный гибрид пользовательской ОС и уменьшенного (в смысле формата) commodity «железа» абсолютно не интересен – сейчас этих маршрутизаторов сколько угодно и какой угодно стоимости, никаких «сугубо IoT» аппаратных (в первую очередь интерфейсов) и программных решений в Sharks Cove нет. Я очень удивлён, и не только я. Тем более удивлён, что это же не первая попытка, до сих пор где-то «одинокая бродит Galileo», уже во второй ревизии.

Ну и о забавном. Сейчас такое время, когда забавное можно найти на каждом шагу. Например, было очень забавно наблюдать спокойное, без фанфар, празднование в США Дня Независимости, и тщательное игнорирование в русскоязычном пространстве незначительных фактов, «открывшихся» из этого празднования. Восполню пробел. В общем, США производят 75% всего того, что потребляют, рост промышленного производства достиг почти 2,4 триллиона долларов, а уровень производительности труда в промышленности такой, что количество занятых в ней снижается.

Продолжаем формировать «личные информационные завалы»

 

Продолжаем формировать «личные информационные завалы»

 

Что вы будете делать с этими знаниями – ума не приложу (а кошмарно-пионерское "с них надо брать пример" и вовсе уж будет издевательством), но это забавно в качестве противовеса «апокалипсическим картинкам», которые сейчас рисуются в неисчислимом количестве.

На сегодня всё

Откланиваюсь.

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT