`

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

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

BEST CIO

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

Человек года

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

Продукт года

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

 

У меня есть две новости - одна хорошая, вторая - плохая

Начнём с хорошей. Настоящий подарок всем любителям Forth - наконец-то в свободном доступе полные варианты культовых книг Лео Броуди Starting Forth и Thinking Forth!

Thinking Forth давным-давно выходила в русском переводе, но малым тиражом и быстро стала редкостью. Мне досталась в каком-то букинисте в те времена, когда доллар стоил под 200 тысяч купонокарбованцев - без обложки, разодранная, с частично отсутствующими страницами.

А теперь - вторая новость. Она тоже из мира Forth, но выходит далеко-далеко за его границы.

Дело в том, что фортеры любят делать то, чего не любят все остальные - копошиться на низком, машинном уровне. Ну, специфика системы Forth такая - тут ничего не поделаешь.

Вот и Антон Эртл (Anton Ertl), разработчик Gforth (GNU Forth), повозился с разными  версиями компилятора gcc (двумя релизами ветки 2.95 и  4.1) и продемонстрировал малоприятное:

"Снижение быстродействия сгенерированного кода gcc-4.1 обусловлено плохой алгоритмикой назначения регистров (registers allocation) и ошибочным механизмом замены при простом  присваивании (copy propagation)".

Иными словами, - там, где gcc 2.95.1 генерировал код, весьма близкий к оптимальному, gcc 4.1 творит просто какое-то непотребство, другими словами не скажешь. Да вы сами взгляните на ассемблерные листинги - там всё понятно без слов.

Нехорошо это. Ой как нехорошо.

Славная игрушка

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

А вот и долгожданная игровая приставка Hydra на основе этого процессора. "Игровая" вовсе не для тех, кто любит играть в готовые игры, а для кого создание собственной игры - игра:

 Славная игрушка

$200? В общем, - немного. За такое удовольствие - тем более. Да ещё и в комплекте книга того самого легендарного Андре ЛаМота.

Прекрасный подарок для настоящего гика, прекрасный.

А ведь кому-то это 100% пригодится

Как быть, если вы – Windows-пользователь, «злые админы» вашей локальной сети установили ограничение на максимальный размер письма, а вам надо отправить раз этак в 50 больше?

Тривиальная задача с тривиальным решением - упаковать отправляемое, разбить на куски допустимого размера, и отправлять по частям. Всё прекрасно, кроме кучи возни. А между тем…

В штатной подсистеме командной строки Windows есть очень полезная команда FOR (в любой из описанных ранее консолей, если вы не меняли командной оболочки, она расскажет сама о себе в ответ на традиционный запрос FOR /?). А еще по блату скажу, что есть очень замечательная крохотная программка также командной строки – blat.
Этих двух штуковин более чем достаточно, чтобы одной командой «забомбить» адресата файлами.
Для начала: после скачивания blat и её «установки» (в какой-либо каталог из перечня в переменной окружения PATH), следует программу инициализировать. По минимуму ей надо указать протокол (POP3/SMTP/NNTP), IP-адрес вашего почтового сервера, ваш собственный почтовый адрес  и, например, имя профиля для данной комбинации. Шаблон команды инициализации:

blat –install протокол ip_адрес_сервера мой_почтовый_адрес имя_профиля

На этом - всё, blat готов «к труду и обороне».
Теперь предположим, что почтовый сервер «выпускает» из внутренней сети письма размером не более 1 MB, а вам надо отправить 50+ MB фотографий, и сделать это минимальной кровью, несколькими движениями, а не мучительной «мышиной вознёй».
Сохраните следующее в виде bat-файла, например, с именем send_all.bat (естественно, поместите этот файл в какой-либо каталог из перечня, указанного в переменной окружения PATH):

for %%F in (*.%1) do blat %2 -to %3 -subject %4 -body %5 -r -attach %%~nxF

Превратите ваши файлы в какой-либо многотомный архив, например, - rar. Откройте в каталоге с этим архивом консоль (или перейдите в этот каталог), и наберите команду:

send_all rar профиль адрес_получателя "заголовок всех писем" "тело всех писем"

Разбирать здесь особо нечего – команда for для каждого файла с расширением rar текущего каталога вызовет blat c указанными вами параметрами и именем файла, который требуется «приаттачить».

Вот так.

И не надо искать какие-то сложные GUI-программы.

Кстати, по умолчанию blat хранит информацию о профилях (а их может быть несколько, конечно) в ключе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Public Domain\Blat (можно указать программе, чтобы для каждого пользователя были собственные профили). Если этот ключ «выкусить» редактором реестра и сохранить, например, на флэшке, blat можно сделать «переносимым».

Этот скрипт я набросал сразу, как только отыскал blat, и с тех пор он меня регулярно выручает.

Пользуйтесь на здоровье.

А вот и что-то действительно новое

В Нью Йоркской публичной научно-технической библиотеке (перевод, конечно, не точный, но наиболее близкий - SIBL, New York Public Library’s Science, Industry, and Business Library) 21 июня была установлена первая машина класса EBM - Expresso Book Machine.

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

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

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

А вот и что-то действительно новое

О том, как "там" отреагировали на новость, говорит тот факт, что сайт компании On Demands Book, создавшей EBM, глухо "лежит" под  наплывом любопытных посетителей.

Наконец-то осмысленный "моддинг"

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

Скотт Уолкер, заместитель главного редактора газеты "Бирмингемские новости"  (Birmingham News, это американский Бирмингем, не британский), по случаю купил на eBay за $100 старый уличный газетный автомат - таких работающих автоматов по всей Америке предостаточно, они - неотъемлемая составляющая урбанистического пейзажа.

К автомату Уолкер докупил недорогой обычный 17-дюймовый TFT-монитор, который неожиданно удачно подошёл по размерам к будущей конструкции (кстати, - весьма забавный факт). Также пришлось "пожертвовать" неновым MacMini c беспроводным адаптером.

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

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

Процесс построения и результат Уолкер документировал и открыл для всех желающих.

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

TCC- это было только начало

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

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

Так что буду плести свои ниточки дальше.

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

Для красоты же с cmd32.exe можно сделать немногое. Поменять боевую раскраску - это само собой, но это дело вкуса. А вот шрифт - это уже другое дело, хороший шрифт в консоли очень важен. И хорошо, что с бесплатными программами просмотра документов Microsoft Office 2007 идёт в комплекте бесподобный моноширинный шрифт Consolas (название само говорит, для чего он лучше всего годится, но, на всякий случай - он полностью соответствует требованиям Microsoft к шрифтам консоли). Только вот просто, "через меню" консоли добавить его не получится.

Если Consolas уже установлен в системе - запускаем regedit и неспешно продвигаемся по указанному маршруту:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont

 В этом ключе regedit покажет нам примерно такое (в Windows XP - примерно точно такое):

0 REG_SIZE Lucida Console

Это установленный по умолчанию первый системный шрифт консоли. Чтобы установить N-й шрифт, надо создать новое строковое значение реестра (string value) c именем 00... (повторяется N раз) и данными - именем шрифта. То есть, второй шрифт Consolas добавляется как:

00 REG_SIZE Consolas

Теперь перегружаемся - и Consolas становится доступным в настройках cmd32.exe.

Если ещё и настроить раскраску - можно получить весьма приемлемый вид консоли. Но есть одно "но": cmd32.exe - весьма специфическое, "нестандартное" приложение. И если вы используете всякие расширители возможностей пользовательской оболчки Windows - скорее всего их действие на cmd32.exe не распространяется.

В таком случае воспользуйтесь или Console, или ConEmu. Обе программы невелики, просты в настройке (раз уж кого "погнала" судьба в командную строку - тот разберётся) и позволяют "подстёгивать" в качестве командного интерпретатора не только намертво привязанный к cmd32.exe системный.

Мне, например, сейчас больше нравится менее "навороченная" ConEmu, которую, несмотря на её "близость" с Far Manager, можно смело использовать отдельно, как самостоятельный продукт. 

Дальше подумаю, чем бы добавить получившееся, чтобы сразу почувствовать полезность всей этой возни.

"Интуитивно" - не значит "верно"

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

 На практике же эта любовь может привести к весьма непредсказуемым последствиям.  А именно, - если требуется очень быстро обрабатывать массивы, программист интуитивно предполагает, что размер массива, выражаемый как 2^N, должен быть в каком-то смысле "лучше", чем некратный степени двойки.

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

 Дело в том, что при исполнении оперирующего массивами кода вычислителем с не полностью ассоциативной кэш-памятью (direct-mapping или set-mapped организация кэш-памяти), проявляется совершенно неинтуитивная зависимость между размером массива и… быстродействием кода.

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

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

 Авторы соответствующего абзаца в заметке wikipedia ссылаются на опубликованную ACM статью некоей Моники Лэм. ACM - ресурс, к сожалению, небесплатный. Но разведка доложила точно - на сайте самой Моники Лэм статья доступна за просто так, разве что в посткрипте (надеюсь, это не будет главной проблемой для желающих её прочесть - статья-то ой какая не простая).

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

 Так что на всякий случай размерности массивов 2^N лучше сторониться - если не поможет, так хоть не навредит.

Баловство без излишеств

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

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

Поэтому земной поклон Фабрицию Белларду за TCC. Статью об этом компиляторе не написать, потому что не о чем особо - ну компилятор, ну поддерживает ANSI C c многими расширениями C 99, ну файлик "инсталляции" для Windows - 417 KB, ну - ядро Linux (с минимальными правками) собрать может, и, само собой, - сам себя.

Из достоинств - реактивная скорость компиляции. Это просто ракета какая-то, а не компилятор - измерять мне было лень, но на Athlon 2500+ задержки между запуском компилятора (с опцией -run, означает автоматический режим трансляция-сборка-запуск) и исполнением кода мне заметить пока не доводилось.

Об остальном написано в мануале, но там всё традиционно и если хоть одним компилятором пользовался, с этим проблем не будет.

Очень полезная в хозяйстве штука. 

Не прошло и семи лет

Семь лет назад за такой Motif многое можно было бы отдать. Как минимум - минут 40 времени. Сейчас уже труднее, хоть и очень вкусно (не то слово - это как раз то, чего ждали все мотифолюбы):

  • сглаженные шрифты (сглаживание на клиенте, посредством библиотеки XFT, само собой - libXft здесь);
  • поддержка UTF-8 и юникодовых строк в атомах;
  • расширенные возможности отображения текста и пиксельных блоков в виджетах;
  • поддержка PNG и JPEG вдобавок к штатному, но изрядно  устаревшему формату XPM.

К сожалению, по сравнению с "тем самым Motif" OpenMotif скромен, но всё же это много лучше, чем ничего.

Ну так что делать - качать и собирать, чтобы потом прикрутить красивые шрифты к Nedit и DDD (которые прекрасны и без красивых шрифтов, но на этих TFT-мониторах, на этих TFT-мониторах...), или всё же забыть?

Сам ещё подумаю.

 

Ukraine

 

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