пятница, 28 января 2011 г.

четверг, 27 января 2011 г.

Wanderlust + smtp error

Если у вас при отправке письма из wl появляется странная smtp'шная ошибка, но письмо отправилось, то держите патч на FLIM:


--- smtp.el~ 2005-07-24 21:51:09.000000000 -0400
+++ smtp.el 2011-01-27 15:49:36.020003315 -0500
@@ -465,7 +465,7 @@ BUFFER may be a buffer or a buffer name
   (smtp-find-connection (current-buffer)))
  (response
   (smtp-read-response connection)))
-    (if (/= (car response) 220)
+    (unless (member (car response) '(200 220 250))
  (smtp-response-error response))))

 (defun smtp-primitive-ehlo (package)
@@ -554,7 +554,7 @@ BUFFER may be a buffer or a buffer name
     ;; STARTTLS --- begin a TLS negotiation (RFC 2595)
     (smtp-send-command connection "STARTTLS")
     (setq response (smtp-read-response connection))
-    (if (/= (car response) 220)
+    (unless (member (car response) '(200 220 250))
  (smtp-response-error response))
     (starttls-negotiate (smtp-connection-process-internal connection))))

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

Новая Англия, фитнес, etc

Вот говорят, что простые, небогатые омериканцы толстые, потому что они жрут жирные рёбра, пончики и прочий макдональдс. Про всю омерику не скажу, но вот у нас стать жирным имеет шанс только очень богатый человек. Неужели тут люди не жрут пончики? Нет, жрут, и сразу дюжинами, ибо 12 пончиков дешевле процентов на 30, чем 11. Почему же они не жиреют? А вот почему:

Полгода сыплет снег. И не как-нибудь абы, чисто чтоб отмазаться, а сразу сантиметров по 25, а то и все полметра. Понятно, что после каждого снегопада попадание на работу превращается в часовой квест "Откопай машину и расчисти для неё дорогу". И все машут лопатами. Прям весь город, с 7 до 9. Лопату, соответственно, можно купить в ближайшем магазине, хоть в чисто продуктовом. При заказе какой-нибудь икебаны или фарфоровой вазы на Амазоне в зимнее время к посылке прилагается бесплатная лопата. Объёмы перемещаемого снега настолько огромны, что все пончиковые жиры сгорают ещё на первом кубометре. Местные доктора даже не спрашивают, занимаетесь ли вы каким-нибудь спортом: вы ж в Новой Англии, утренний лопатинг делает каждый! Люди, с трудом открывая утром дверь дома, поднимают лопату приветственным жестом и здороваются с соседом: "May the shovel be with you!". На работе до обеда все разговоры только о том, кто сколько чужих машин откопал, пока свою не нашёл.

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

А теперь давайте посмотрим и обсудим, как я провёл утро.

понедельник, 24 января 2011 г.

Epic fail

Гуглохром (арчевско-убунтовские 9.0.597.45 и 8.0.552.237) при попытке из гуглового блогспота залить фотку на гугловую пикасу и вставить её в пост падает.

воскресенье, 23 января 2011 г.

От шеф-повара

Сварил 4.5 литра солянки. Жру. Ложка колом стоит.

пятница, 21 января 2011 г.

Отладка реального бага в Лиспе

Если вы думаете, что самое сложное - это отловить рандомную порчу памяти в сишной программе для эмбеддед-платформы типа UCOS II, где сама программа и операционная система сидят в одном адресном пространстве без MMU, и никаких вам сегфолтов и валгриндов нет, то вы правы только отчасти.

Сижу сегодня, значит, клепаю "мета" на лиспе. Закончил очередной шаг, проверил, всё работает, закоммитил. Чудненько. Приступаю к следующему шагу, для которого нужна поддержка udp. В составе лиспворковского пакета comm поддержки udp нет, но есть внешняя лиспворксо-специфичная примочка lispworks-udp, которая мимикрирует comm, но с поддержкой udp. Добавляю, значит, :lispworks-udp в :depends-on моей системы, всё конпеляется ровно, но в вебе при попытке открыть один лисповый объект, которые у нас из dsl-описания автоматом генерятся, помимо всего прочего, в html с js, система ругается.

Первое предположение: случился тихой сапой какой-то клэшинг между нашими пакетами и этим lispworks-udp. Просмотрел внимательно, ничего не нашёл. Убрал депендс, давай вставлять (ql:quickload :lispworks-udp) в разные места. Нашёл, что если делать это после создания наших классов, то всё пучком. Давай делать бисект, т.е. отрезать из свежеподключенной системы файл за файлом, и ждать, пока перестанет глючить. Нашёл. Внимательно изучил бажный файл, ничего подозрительного нет. Так, объявляется пара-тройка обычных классов. Как девочка попробовал поменять имена классов, слотов, акцессоров и т.п - не помогло. Зато помогло комментирование кода. Уже интересно. Давай опять двигать ql:quickload, и обнаружил, что чем больше оттягиваю по времени подгрузку lispwork-udp, тем меньше надо комментить кода :) Причём, комментирование распространяется не только на тот файл.

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

Дальше пошёл жуткий дебаг. Я, фактически, работал машинисткой, набирая команды под диктовку. MOP - штука страшная, особенно, когда доходит до багов, но начальник нереально крут в MOP. Он этот фреймворк лет 10 назад написал, и лет 5 не трогал, но всё равно сходу точно определял места, где смотреть. Причём, те места - голимый MOP. Крут мужик! И ещё я многое узнал про лиспворксоспецифичную отладку. Например, макрос trace гораздо более навороченный, чем про него в CLHS написано.

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

В общем, сложные системы тоже глючат, и глючат сложно.

Stay tuned.

This is New England!



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

Сдался, купил в машину лопату.

Машина из снежной ямы на пониженной передаче и со включенным зимним режимом вылезла нормально, хотя резина и лысоватая. Под снегом - каток, ABSка срабатывает при любом чихе. В повороте машину сносит, начинает работать система стабилизации STC и мешает мне бороться со сносом :) Хорошо, что есть кнопка выключения.

четверг, 20 января 2011 г.

Работа

Ваяю одновременно "мета" на Лиспе и глубокий сишный эмбеддед для nios-2 (проц. для fpga). Взрыва мозга нет, скобки правильно ставлю.

Альтеровский "Квартус" - глючное жирное уёжище. В 64-битной версии половина файлов из ниосовского тулчейна - 32-битные, требуют 32-битную яву, всё остальное хочет 64 бита. И после установки скрипты ихние правил, чтобы они в реальном мире работали. Ну и работает это добро нестабильненько.

Вот ЛиспВоркс очень стабилен, хотя он конпеляет логику на два порядка сложнее сишной.

среда, 19 января 2011 г.

Тест на пригодность

Забыл ноутбучный блок питания на работе, обнаружил только дома. Первая мысль: "Так, батарейки хватит часа на полтора. Чё, надо ехать." Вторая: "Блин, ведроид же есть.".

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

Последующие мысли: "И читалка ещё есть. И standalone плейер. И вообще, давай на гитаре бренчи. И спать раньше спать пойдёшь.". Сплошная польза от забытого БП, в общем.

понедельник, 17 января 2011 г.

Вы будете смеяться, но...

    if(offset_lo == 0)
         offset_decimal = 0;
    else if(offset_lo == 1)
         offset_decimal = 0.25;
    else if(offset_lo == 2)
         offset_decimal = 0.50;
    else if(offset_lo == 3)
         offset_decimal = 0.75;

Уверен, автору этого кода очень тяжело живётся на белом свете. Жизнь ведь такая непростая...

пятница, 14 января 2011 г.

Разница в менталитете

Они:

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

Утром чатился с начальником (который американец), вскользь обмолвился. Он через 5 минут пишет, что позвонил им, пожаловался, они жутко извинялись, просили меня им перезвонить, чтобы принести лично извенения, вернуть деньги и сделать подарочек.

Мы (я):


Сегодня уходил с работы последним, закрыл двери (2 шт.) и обнаружил, что одна из дверей даже в закрытом виде поддаётся открыванию рукой. А в офисе много дорогого железа, пара серверов с копиями репозиториев, данными, etc. Давай мутить с замком. Инструмента для починки не хватило, оставил так, как есть, но совесть мучала: "А друг кто вломится и всё сопрёт?".

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

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

- Слышь, я щас машину подгоню, приглядишь за моей телегой?
- Ээээ... Чё?
- Ну я щас оставлю тут мою тележку на пару минут, а потом подъеду на машине. Ты посмотри, чтобы с телегой ничё на стало, ОК?
- Ээээ... ОК...

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

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

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

среда, 12 января 2011 г.

Снеговик

Work from home

Натянул самую сурьёзную обувь, которая у мну есть - горные ботинки. Запаковался в лыжную куртку, все застёжки застегнул, одел капюшон, вытянул на нём козырёк, наружу только нос и глаза торчат. Дороги чистят, но как дошёл до тротуара, там снега сантиметров 20. Кое как допрыгал до велосипедной дорожки, там вообще снега по колено. Метров 100 минут за 5 преодолел, ботинки забило снегом, джинсы все мокрые, я злой и потный.

Нуивонафиг, вернулся обратно.

Деревья все поломанные, кстати.

С добрым утром!


XC90 Lego edition




вторник, 11 января 2011 г.

Первый косяк с машиной

Вчера загорелась лампочка Check engine и появилось сообщение Transmission service required. Коробка стала тупить. Судя по интернетам, коробки, которые в Вольвы ставят, небеспроблемные. Сервисование машины строго по регламенту и только у официалов предыдущим владельцем не помогло...

Сейчас вот сижу в вольво-сервисе, жду приговора. Типа новая коробка (восстановленная, на самом деле) стоит около $4k :( Опять же, судя по интернетам, замена ничего не гарантирует, и можно по три коробки в год менять.

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

Ездите, люди, на механике, она надёжнее.

понедельник, 10 января 2011 г.

Back to USA

Блин, чуть не издохнул...

Толком за 15 часов полёта не поспал, плюс джетлаг, плюс ночь, плюс скользкая дорога и лысая летняя резина... Я прям чувствовал, что какая-то непонятная сила меня в поворотах держала. Ну, то есть, наоборот, понятная: это STC работала, но всё равно самый момент фолла на доли секунды чувствуется.

И когда проснулся на скорости 75 миль в час с рулём в руках, то моментально было принято решение: "Нуивонафиг", зарулил на ближайшую парковку, перелез на задний кожанный диван и два часа продрых с ноутбуком с лиспокодом под головой.

Но какая же Вольво тачка классная! :) Тихая, мощная, комфортная, умная...

пятница, 7 января 2011 г.

Про стрёмность форумов на похапе и крутость мейлера Wanderlust

На днях случилось обновление форума Велопитера (velopiter.spb.ru/forum), нотификейшены на мыло стали приходить с битыми сабджектами. Лень терпела несколько дней, но потом сдалась, начал разбираться.

Раньше использовалась std11 mime кодировка windows-1251, всё работало, а сейчас письма идут с utf8. Трассирование лиспокода, хвала Емаксу, привела к тому, что utf8 в mime не существует, есть utf-8. Похапе быдлокодеры, пищущие phpBB, клали на стандарты.

В ~/.emacs добавилась ещё одна строчка:

(setq mime-charset-coding-system-alist (append mime-charset-coding-system-alist `((utf8 . utf-8))))

и всё работает. Ну и как тут на другой мейлер перейдёшь? :)

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

воскресенье, 2 января 2011 г.

Distributed computing vs Распределённые вычисления

Вот почему в википедии английская статья по распределённым вычислениям - нормальная, а русская - на 90% реклама BOINC? Какие мудаки это писали и куда координаторы смотрели?

Авторы http://ru.wikipedia.org/wiki/Распределённые_вычисления, вы - тупые уроды!

Архив блога