LE Blog

Инженер с поэтической душой

08.07.2010 firtree_right Ассорти

В такую жару клёво делать что-нибудь новое и интересное. Пробовать что-нибудь в первый раз и проектировать с нуля. А писать документацию или дорабатывать наследие прошлого в такую жару лениво. Я нашёл программиста на си и очень им доволен. Он аккуратен, оперативен и такой же аут, как и я. Это будет уже третье поколение съёмочной программы. То есть я писал эту штуку два раза с чистого листа и мне всё мало.

Посмотрели сегодня «Девушка с татуировкой дракона». Я люблю скандинавское кино. У него всегда прекрасный, ни на что не похожий ритм. Вроде бы ничего не происходит, но невозможно глаз оторвать. Однако, я бы не смог посмотреть два скандинавских фильма с перерывом меньше чем в неделю. Вот такая любовь.

Нет более приятного собеседника за обедом, чем Маша.

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

А как у вас дела?

23.06.2010 firtree_right Пеар

Вот и вышел в свет ещё один портфолио-блог как у меня с Ирой. :) Сделал я его для наших с Ирой друзей, а именно Маши Красновой-Шабаевой. После того, как Маша и Тимур нарисовали дизайн, я долго тянул кота за хвост, чтобы не верстать, а потом впервые в своей практике применил метод: «Купи вёрстку у Мистера Вудмана и спи спокойно».

Заодно проверим на вшивость отечественных поставщиков хостинга, о которых недавно упоминал.

19.06.2010 firtree_right Деплой

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

В связи с чем попробовал отечественный продукт: хостинг locum.ru. Не знаю, правда, как он под нагрузкой, но первые впечатления от настройки приятные. С тех пор, как я пользуюсь capistrano, залить что-то на хостинг — легко и быстро. Самое трудное, обычно — это первый деплой. Тут как раз всё прошло быстро и не меняя привычек. Недостаток инструкций, конечно, имеется, но не страшный.

Я бы даже написал им инструкцию, как залить свой проект на Ruby on Rails на их хостинг, но я всё время стесняюсь, что не умею пользоваться ssh-agent. Может кто-то научит меня пользоваться ssh-agent, чтобы мне не добавлять дополнительный deploy-ключ в список пользователей репозитория?

18.06.2010 firtree_right Машинка!

Вот, чем я занимаюсь после работы:

12.06.2010 firtree_right Оказалось, не казалось

Пока вы спали (и я тоже спал) мне явился правильный ответ: это float в формате little endian (младшим байтом вперёд). Вот код для андроида.

int tmp = Float.floatToRawIntBits(new Float(number));
byte[] msg = {(byte)tmp, (byte)(tmp >> 8), (byte)(tmp >> 16), (byte)(tmp >> 24)};

Непонятно, зачем они так сделали, ведь работает NXT с целыми числами. Даже если и с точкой, то точность оборудования не та.

11.06.2010 firtree_right Профессиональное

Я тут вечерами не могу лечь спать, потому что управляю своим Lego Mindstorms роботом с телефона на Android (моего любимого ненаглядного HTC Desire то бишь) по bluetooth. Я уже написал базовое взаимодействие, и бодро передаю сообщения. Возник лишь один нюанс с передачей целых чисел. Вместо того чтобы совать их в трубу младшим байтом вперёд, как об этом говорят все интернеты, у меня они выглядят не так.

Это был целый детектив. Я слал ему little endian, но он отказывался. Сначала совсем. Потом везде видел нули Тогда я начал его пытать, и заставлял его посылать сообщения из целых чисел.

Если записать это в двоичной форме, то примерно понятно, что он имеет в виду. Но возможно есть матчасть, которую можно почитать, чтобы лучше это понять. Что это за представление, как его просто изобразить, скажем, на Java? Итак, имеем четыре байта:

... симметрично
-4 => 0x00 0x00 0x80 0xC0
-3 => 0x00 0x00 0x40 0xC0
-2 => 0x00 0x00 0x00 0xC0
-1 => 0x00 0x00 0x80 0xBF
0 => 0x00 0x00 0x00 0x00
1 => 0x00 0x00 0x80 0x3F
2 => 0x00 0x00 0x00 0x40
3 => 0x00 0x00 0x40 0x40
4 => 0x00 0x00 0x80 0x40
5 => 0x00 0x00 0xA0 0x40
6 => 0x00 0x00 0xC0 0x40
7 => 0x00 0x00 0xE0 0x40
8 => 0x00 0x00 0x00 0x41
9 => 0x00 0x00 0x10 0x41
10 => 0x00 0x00 0x20 0x41
...
15 => 0x00 0x00 0x70 0x41
16 => 0x00 0x00 0x80 0x41
17 => 0x00 0x00 0x88 0x41
...
555 => 0x00 0xC0 0x0A 0x44
...
2147483648 => 0x00 0x00 0x00 0x4F

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

09.06.2010 firtree_right Солянка

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

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

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

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

Такие дела.

28.05.2010 firtree_right Dog's dream

Плавно в течение суток мой бложек перетёк на новый хостинговый план. Со скоростью распространения информации по DNS. Кто-то, возможно, в дальних уголках интернет-пространства видит всё ещё старую копию. Хотя, на глаз не отличишь :)

♯♯♯

А ещё мне не хотелось поднимать свой почтовый сервер, и я узнал, что существует Яндекс почта для домена. Это гениально!

♯♯♯

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

#!/usr/bin/env ruby
if `git log -1 --format=format:%H`.chars.each_slice(20).map{ |part| part.inject(0){ |sum, ch| sum + ch.hex } }.uniq.count == 1
puts '**************************************'
puts '*   Congratulations! Lucky commit!   *'
puts '**************************************'
end

♯♯♯

Наконец-то добрался и посмотрел последнюю серию:

via kuteev

Обтекаемо закончили :) Не то, что старик Линч.

23.05.2010 firtree_right Дайджест

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

Мой хостинг-провайдер подогнал новый тарифный план, из которого следует, что умея настраивать сервер, не используя Plesk, можно сэкономить от $20 и более ежемесячно. Я так вообще недолюбливаю этот Plesk и практически не пользуюсь. Попробую с месяцок и перейду насовсем. Вообще в выходные вечерком я люблю понастраивать сервера пару часиков для удовольствия. Особенно, освоив vi.

Меж тем Яндекс обнародовал панорамы улиц другого поставщика. Что, конечно же, радует.

27.04.2010 firtree_right Новьё

Новый постик в бложек лежит в черновиках. Не публикую ничего в начале и в конце недели. От Яндекса научился, хоть моя аудитория и поменьше :) На прошлой неделе не успел ничего написать из-за РИФа. Был там один день, но как докладчик, поэтому выпала первая половина недели, а не вторая.

Очень понравилась в последнее время концепция «достижений» (achievments) в играх и всём подряд. Например, Mass Effect 2 я проходил три раза, чтобы не только спасти всех компаньонов в самоубийственной миссии (no one left behind), но и сохранить их лояльность. А Portal начал проходить ещё раз, чтобы получить достижение «transmission received». Так же отлично это работает и в социальных сервисах. Например, в foursquare уже довольно подробно размечена вся Москва, потому что за внесение и посещение мест на карте дают очки, звания и знаки отличия. Например, сегодня я стал мэром «Улицы ОГИ». Павел «Ксан» Яковлев заявил, что социальным сетям типа Фейсбука или МоегоКруга следует создать для владельцев профилей Компаний систему достижений для их работников. Тогда работники компаний будут вполне себе мотивированно добиваться этих достижений, чтобы их было видно в профиле.

Ещё, с тех пор, как я приобрёл новый телефон мечты (HTC Desire), всё чаще мне попадаются упоминания и примеры Augmented Reality. Например, Google Goggles — пока мне не удалось получить от них много удививших меня результатов. Но он хорошо определяет продукты по баркодам. Если сфотографировать логотип Яндекс, то будут ссылки на википедию про Интернет и Историю Интернета, А если логотип Гугла, то ссылки будут на Гугл :). Однако второй пример поразил воображение не смотря на простоту. Карта звёздного неба от Гугла. Смотришь на небо через телефон, и все созвездия, звёзды и планеты подписаны. Это зашибись просто! Всего то нужно определить местоположение (по GPS или триангуляцией) и время с календарём. Потом акселерометр сообщает, как повернуть сферу.

А что нового у вас?