22 декабря 2013 г.

Заяц в гостях у Волка

Нарисовал позавчера:

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

- Артём

4 декабря 2013 г.

Guile-SSH 0.4.0

Доброго времени суток.

На прошлой неделе выпустил релиз Guile-SSH 0.4.0. В новой версии добавлена поддержка GNU Guile 2.0.x, добавлен SSH Server API, улучшен SSH Client API, исправлены ошибки. Также добавлены примеры программ, написанных с использованием библиотечного API -- см. каталог examples в корне репозитория.

Готовых сборок пока нет. Исходный код Guile-SSH 0.4.0 можно взять на GitHub:
https://github.com/artyom-poptsov/libguile-ssh/releases/tag/v0.4.0

Вот краткий перечень изменений, взятый из NEWS-файла:

  • Добавлена поддержка новой стабильной версии GNU Guile 2.0. Сборка с GNU Guile 1.8 по-прежнему поддерживатеся.
  • Изменён API -- убран префикс "ssh:" из названий функций.
  • Добавлен базовый SSH Server API.
  • Исправлено повреждение памяти в функции channel-read.
  • Исправлено повреждение памяти при сборке неиспользуемых объектов сборщиком мусора.
  • Исправлен баг в функции session-set!, который приводил к невозможности установки корректного булева значения.
  • Добавлены новые функции: channel-write, channel-request-pty channel-request-shell, channel-set-pty-size!
  • Исправлено имя функции write-known-host! (по-ошибке была названа authenticate-server).
  • Изменена обработка ошибок в функциях: write-known-host!, channel-open-session, channel-request-exec, channel-request-env, close-channel!, server-set -- функции теперь бросают исключение при ошибке, вместо возврата #f. Возвращаемое значение теперь неопределено.
  • authenticate-server теперь так же бросает исключение при ошибке, вместо возврата #f.
  • Функция make-session переименована в %make-session.
  • Добавлена новая функция make-session, которая является обёрткой над %make-session и session-set!. Функция предоставляет удобный интерфейс, позволяя задавать опции сервера через ключевые слова.
  • connect переименована в connect!
  • Исправлена опечатка в названии символа: strcthostkeycheck переименована в stricthostkeycheck
  • Исправлена ошибка в public-key->string, приводившая к зацикливанию функции. Ошибка была обнаружена на Ubuntu GNU/Linux 10.04 LTS.
  • В репозиторий добавлены примеры программ -- см. каталог examples.
  • Улучшена распечатка SSH ключей, каналов и сообщений.

- Артём

22 октября 2013 г.

Московский хакерспейс Neuron

Доброго времени суток.

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

Найти хакерспейс в первый раз было непросто -- снаружи здания вывески нет, а в самом здании находится масса заведений, слабо связанных с IT и компьютерами вообще. Александр Чемерис, один из основателей Neuron'а, на эту тему пошутил, что поиск хакерспейса -- своего рода квест, который должны пройти настоящие хакеры, дабы попасть в хакерспейс. От себя могу добавить, что в поиске хакерспейса помогает миникарта Москвы, носимая в телефоне или планшете, а так же расспрос местного населения. К слову, во дворе здания есть охрана, у которой так же можно поинтересоваться о нахождении Neuron'а. Если вы выглядите, как гик, то можете не волноваться -- вас направят на верный путь без дальнейших расспросов. Далее остаётся следовать по указателям.

Первое, о чём хотелось бы сказать -- в хакерспейсе есть целая лаборатория трёхмерной печати. Отдельная большая комната хакерспейса заставлена 3D-принтерами, столами с различными инструментами и полками с примерами распечатанных объектов.

Есть так же и небольшой склад неудавшихся экспериментов и бракованных деталей, которые можно взять -- безвозмездно.

Как и обычному, двухмерному, принтеру, трёхмерному принтеру нужны расходные материалы. В данном случае -- это различные виды пластмасс в виде жгутов, намотанных на катушки.

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

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

А в другой день я обнаружил в лаборатории напечатанную на принтере руку, которой можно управлять благодаря тросам -- аналогам сухожилий. Говорят, напечатали для себя, just for fun. В общем, здесь явно готовится революция в робототехнике, которая (конечно же) сделает нашу жизнь лучше.

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

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

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

Кроме лаборатории трёхмерной печати, в Neuron'е обитают ещё несколько стартапов (англ. startup)

Один из стартапов связан с созданием компонента "умного дома". Достаточно минималистичный по виду куб понимает команды "на слух" и отвечает человеческим синтезированным голосом на вопросы вида "а какая сегодня погода?"

Сердцем (ну или разумом, кому как больше нравится) куба является плата вроде BeagleBoard (к сожалению, не спросил точно модель) с установленной ОС Android, которая и управляет всем действом. Заинтересовавшись, я поделился своим опытом участия в проекте по превращению Android'а в ОС реального времени.

За то время, пока я был в Москве, к кубу прикрутили (точнее вкрутили в него) экспериментальную возможность, которая добавляет тактильный отклик при касании верхней поверхности куба (вы должны быть знакомы с этим, если пользовались экранной клавиатурой на современном коммуникаторе/smart phone). Разработчик куба сказал, что рассматривается вариант включения его от касания (хотя, конечно же, его можно включить и простой фразой "кубик, проснись!"). Пока неизвестно, будет ли реализован тактильный отклик в первой версии куба -- но идея, на мой взгляд, выглядит интересно.

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

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

Остальные фотографии из хакерспейса Neuron можно посмотреть в этом альбоме:
https://picasaweb.google.com/114139409305362314356/Neuron

В целом, замечательное место. Я посещал хакерспейс каждый будний вечер во время командировки, порой засиживаясь там до полуночи. И могу сказать, что атмосфера, царящая в Neuron'е, помогает работать. Например, в один из вечеров мне удалось решить проблему с библиотекой Guile-SSH, над которой думал уже довольно давно.

Если бы жил в Москве постоянно, то посещал бы Neuron регулярно. Но командировки имеют свойство заканчиваться -- и вот, попрощавшись с участниками Neuron'а, я отправился обратно. Однако не обязательно ехать в Москву, чтобы побывать в хакреспейсе. Пусть в нашей стране такие организации можно пересчитать по пальцам одной руки -- но это поправимо. Я считаю, что Нижнему Новгороду нужен свой хакерспейс -- и, между прочим, этим летом я взялся за организацию Нижегородского хакерспейса. Но об этом расскажу в следующий раз.

- Артём

16 октября 2013 г.

Командировка в Москву

Доброго времени суток.

В пятницу прошлой недели мне предложили поехать в командировку в Москву. Времени на размышления дали немного, я подумал -- и согласился. Удивился сам себе -- ехать в другой город, в одиночку, на поезде? Жить в отеле несколько дней? Не смешите меня. Автор этих строк в свои почти что 25 лет теряется даже в том, как доехать до вокзала в родном городе, в котором провёл большую часть жизни -- не говоря уж о том, чтобы сесть на поезд и доехать до Москвы.

Однако я согласился.

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

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

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

Те задачи, которые возникали передо мной, я решал одну за другой, и уверен в том, что решу и другие задачи, с которыми придётся столкнуться.

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

Каждую из задач я рассматриваю, как квест (англ. quest, буквально -- "поиск"). Поездка в Москву -- последовательность квестов.

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

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

- Артём

6 октября 2013 г.

Северное сияние над планетой Осень

Доброго времени суток.

Попробовал сфотографировать осенний лист через старый микроскоп МБУ-4, с помощью камеры коммуникатора HTC Wildfire. Несмотря на то, что разрешение у камеры небольшое и совмещение коммуникатора и микроскопа делалось вручную (даже без изоленты) -- результат, на мой взгляд, достаточно интересен.

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

На этих снимках видна внеземная растительность,

внеземная атмосфера и следы внеземной вулканической деятельности,

и даже -- внеземные северные сияния.

Хотя некоторые из планет, похоже, плохо приспособлены для жизни.

Интересно, какие формы жизни обитают на этих планетах? Возможно, они так же смотрят на нас через телескоп... или микроскоп.

- Артём

GNU

GNU

Нарисовал этот рисунок в начале этого года, взяв за основу A Bold GNU Head -- официальный логотип проекта GNU. Рисунок так же доступен на моём сайте.

27 сентября 1983-го года -- тридцать лет назад -- Ричард Мэттью Столлман написал в news-группу сообщение о том, что он собирается создать полностью свободную Unix-совместимую операционную систему. Для достижения этой цели Ричард основал проект GNU (GNU's Not Unix).

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

Спасибо проекту GNU за его многолетнюю работу, которая сделала наше общество свободнее.

- Артём
[ Celebrate 30 years of GNU! ]

25 августа 2013 г.

The Maturity Climb

Мне кажется, довольно замечательная иллюстрация:

Нашёл в блоге David'а Holm'а. Сайт автора комикса -- viruscomix.com. К сожалению, не смог найти подробной информации о лицензии на работу. Судя всему -- all rights reserved.

- Артём

8 августа 2013 г.

ClusterGen 2.1

Новость, связанная с моей работой в компании Мера -- на прошлой неделе мы выпустили релиз ClusterGen 2.1:
http://sourceforge.net/projects/clustergen/files/ClusterGen-2.1/

Напомню, что ClusterGen -- это проект по созданию кластерного генератора трафика, использующего возможности ядра Linux для генерации пакетов и позволяющего настроить несколько GNU/Linux хостов для одновременной генерации трафика с заданными параметрами. Подробно о проекте можно узнать в этом посте:
http://memory-heap.blogspot.ru/2012/07/clustergen.html

2.1 является bug-fix релизом. С момента выпуска 2.0 мы исправили большое количество ошибок и улучшили графический интерфейс. Вот список видимых изменений, составленный на основе NEWS-файла:

  • Исправлена загрузка конфигурационных файлов при старте.
    • Старт приложения в Advanced Mode больше не приводит к краху приложения.
    • Корректно обрабатывается попытка загрузки отсутствующего конфигурационного файла -- если файл не найден, приложение просто пропускает этот файл.
  • Приложение больше не полагается на имена файлов в определении типа файла -- теперь можно работать с конфигурационными файлами с любым расширением, или вообще без него.
  • Исправлена работа пунктов меню "Save Test Suite" и "Save Test Suite As...".
  • Исправлен подсчёт статистики, если трафик генерируется несколькими хостами одновременно.
  • Исправлена проблема с некоторыми кнопками, при которой выключенные кнопки продолжали обрабатывать клик на них.
  • Приложение больше не создаёт test suite автоматически при переключении в Advanced Mode -- test suite должен быть создан вручную через меню.
  • Настройки приложения (такие, как период обновления списка хостов и размер статистики для сбора) сохраняются между сессиями.
  • При загрузке приложения в target config прописываются умолчальные значения для параметров (значения взяты из исходного кода pktgen 2.75).
  • При удалении текущего test case больше не выбирается автоматически другой test case.
  • Теперь можно создать test suite с пустыми host config и target config в Test Case Properties Editor.
  • Исправлено отображение размера пакета на вкладке "Statistics".
  • Улучшено включение/выключение элементов интерфейса в зависимости от текущего состояния приложения.
  • Добавлена автоматическая проверка корректности введённых значений в диалогах.
  • Улучшен диалог настроек приложения.
  • Исправлены пустые заголовки у некоторых диалоговых окон.
  • Улучшены диалоги сохранения/загрузки файлов.
  • Добавлены всплывающие подсказки для кнопок.
  • Улучшено расположение элементов интерфейса.

Подробный список изменений можно посмотреть в ChangeLog'е.

Начиная с версии 2.0 в ClusterGen добавлена базовая поддержка тест сьютов и тест кейсов, однако эта часть функциональности пока ограничена -- например, в текущей реализации тест кейс хранит только информацию о конфигурации трафика, и не позволяет задать условия прохождения теста.

- Артём

15 июля 2013 г.

Guile-SSH 0.3.1

Выпустил релиз Guile-SSH 0.3.1. Начиная с релиза 0.2 (который был первым релизом), внёс в библиотеку достаточно много изменений. Вот некоторые, наиболее значимые, из них:

  • Исправлены ошибки сегментации при освобождении неиспользуемых SSH-объектов сборщиком мусора. Ошибка проявлялась, если после удаления сессии сборщик мусора пытался удалить канал, связанный с этой сессией.
  • Библиотека теперь может безопасно использоваться в многопоточных приложениях (при использовании Guile-SSH нужно руководствоваться рекомендациями в инструкции по созданию многопоточных приложений с использованием libssh)
  • Улучшена работа с SSH-ключами. Дело в том, что libssh работает с ключами трёх видов: публичные ключи, приватные ключи и просто ключи. Так вот, публичные ключи могут представлять собой как объект типа ssh_public_key, так и ssh_string с бинарным содержимым. Это выглядит довольно странно, так что я постарался скрыть эти особенности библиотеки, и все виды ключей предстают программисту в Scheme, как единый тип <ssh:key>
  • Исправлена работа функции ssh:public-key-from-file
  • Добавлены новые функции: ssh:get-key-type, ssh:userauth-get-list, ssh:free-channel!
  • Исправлены ошибки в функциях ssh:private-key-from-file, ssh:channel-read, ssh:blocking-flush!, ssh:session-set!

Полный список изменений, видимых пользователю, можно найти в NEWS-файле, в корне репозитория. Подробный лог изменений находится в файле ChangeLog, там же.

Пример приложения, использующего Guile-SSH:
https://gist.github.com/artyom-poptsov/5650840

Готовых бинарных сборок пока нет. Инструкции по сборке Guile-SSH из исходных кодов можно найти на GitHub Wiki:
https://github.com/artyom-poptsov/libguile-ssh/wiki/Building-and-installation

- Артём

18 июня 2013 г.

5 июня 2013 г.

Слайды презентаций с InstallFest'а

Доброго времени суток.

Вот слайды моих презетаций с InstallFest'а:

  • LazyCat -- система управления конфигурациями: odp pdf
  • Guile-SSH -- доступ к протоколу SSH из программ на Scheme: odp pdf

Презетации распространяются под лицензией CC-BY-SA 3.0.

Если вы были на InstallFest'е и присутствовали на этих презентациях -- прошу меня простить за плохое выступление. Я должен был лучше подготовиться.

- Артём

23 мая 2013 г.

Linux InstallFest 13.05

26 мая будет очередной Linux InstallFest в Нижнем Новгороде. Список докладчиков на презентационную зону ещё формируется.

С моей стороны будут презентации по двум проектам:

  • LazyCat -- система управления конфигурациями
  • Guile-SSH -- библиотека, позволяющая использовать протокол SSH в программах, написанных на языке Scheme (диалекте Lisp)

Подробности о мероприятии можно узнать здесь:
http://www.nnlug.ru/fest13

- Артём

19 марта 2013 г.

Интересный хак от Adafruit Industries

Интересный хак от Adafruit Industries: галстук с встроенным измерителем уровня звука. Спасибо сайту hackaday за наводку.

Подробности о проекте можно узнать здесь:
http://learn.adafruit.com/led-ampli-tie

Есть ещё видео с описанием процесса модернизации обычного галстука и демострацией его работы. Рекомендую посмотреть:
https://www.youtube.com/watch?v=7FbK4wA7hjc

- Артём

(фото под лицензией СС-BY-SA 3.0)

14 марта 2013 г.

6 февраля 2013 г.

What is Open Access?

Крайне интересное видео, объясняющее принципы открытого доступа к учебным материалам и научным статьям, и преимущества данного подхода к распространению информации:

Видео распространяется под лицензией CC-BY.