суббота, 14 августа 2010 г.

[prog] Интервью Андрея Александреску на informit.com

11-го августа на informit.com была опубликована первая часть интервью Андрея Александреску, в котором он рассказывает о языке D.

Интересно почитать. Оказывается, в 2006-м Александреску пытался создать собственный язык Enki. Но потом встретился с Вальтером Брайтом и отказался от идеи сделать новый язык с нуля. Вместо этого они с Брайтом замутили D2. А D1 самому Александреску не нравился.

Сейчас Александреску вместе с Доном Клагстоном и Шоном Келли развивают стандартную библиотеку Phobos. Участие в этом процессе Шона Келли лично для меня удивительно. Если мне не изменяет склероз, Келли был одним из ведущих разработчиков Tango. Не значит ли это, что Tango загнется (поскольку ее релизы случаются очень редко), а основной библиотекой для D окажется Phobos?

Вообще, интересно Александреску рассказывает, увлекательно. Даже соблазн дать D еще один шанс появляется. Но будем посмотреть. Пока меня сильно смущает, что нет публичных планов развития D – будет ли релиз языка, будет ли мораторий на модификацию языка после релиза, чего вообще D2 сейчас не хватает. Вроде бы во многих последних релизах только багфиксы, но смущает наличие релизов с изменениями языка.

Еще один интересный момент. Не рожденный язык Enki предполагал, как я понял, очень гибкий синтаксис, в котором программист очень много чего мог переопределить и добавить. А после подключения Александреску к разработке D появились разговоры и о потенциальном добавлении в язык синтаксических макросов. Так что у D есть шанс еще раз сильно видоизмениться :)

С интересом жду публикации оставшихся частей интервью.

пятница, 13 августа 2010 г.

[life.sport.darts] Как делают мишени для дартс

Видео о том, как делают дротики для дартса, найти на YouTube не сложно. Но как делают мишени я раньше не видел. Вот как, оказывается:

[work] Не люблю телефонные звонки на производственные темы

Телефонные звонки хороши, когда они используются для решения личных вопросов. А производственные телефонные разговоры – вот это для меня серьезное напряжение. Поскольку изрядная их часть сводится к трем основным категориям:

  1. А у меня вот это перестало работать, в чем может быть причина?
  2. А расскажи как вот эта штука работает.
  3. А что, если нам сделать вот это?

В подавляющем большинстве таких звонков единственный цензурный ответ, который я могу дать – это “Мне нужно подумать (посмотреть логи, заглянуть в исходники)”.

Под катом немного матерное продолжение :)

четверг, 12 августа 2010 г.

[life] Сделал себе карточку Visa Virtuon в БПС-Банке

После приобщения к дартсу последовало приобщение и к интернет-покупкам ;) Чтобы не просить коллег, решил завести себе пластиковую карточку специально для расчетов в Интернет. Как оказалось, из располагающихся рядом со мной банков специальные карты подобного рода предлагают только Приорбанк (выкупленный когда-то Райффайзен-Групп) и БПС-Банк (купленный совсем недавно российским Сбербанком). В Приорбанке такие карты называются Visa Internet, а в БПС-Банке – Visa Virtuon.

Выбрал, в результате, БПСБ-шную Visa Virtuon. Во-первых, поскольку ихний РКЦ прямо под боком и, во-вторых, в БПСБ можно открыть карточку в белорусских рублях (что лично мне очень удобно).

Visa Virtuon

Заказывал карту через Интернет. На сайте БПС-Банка заполнил анкету, указал контактные телефоны и стал ждать. Никакого уведомления или звонка из банка о том, что карточку начали делать, не было. Поэтому спустя неделю и один день я написал кляузу на сайте БПСБ – мол, когда же? Кляузу написал утром, а вечером, в районе 17 часов мне позвонили из банка и предложили зайти, забрать карту. Сходил, заплатил все необходимые взносы, карту забрал.

Когда отдавали карту, предупредили, что она не активирована, а активируют ее в течении трех часов. Я специально узнал, а пока она не активирована, можно ли на нее деньги положить. Сказали, что можно. Сразу же пошел в кассу, попробовал. Оказалось, что нельзя. Ладно, думаю, буду ждать утра.

Подключился сразу и к услуге Интернет-Банкинг. Тут интересно. При выдаче карточки в банке мне сразу вручили листок с набором “сессионных ключей”. Т.е. на листочке тупо распечатаны пронумерованные наборы цифр. Когда в Интернет-Банкинге нужно будет подтвердить какую-то операцию (например, я добавлял свою карту в список активных карт), то у меня будут просить: “Введите сессионный ключ номер-такой-то”. И я должен буду вспомнить, где же та бумажка с ключами, потом найти ее и только после этого я смогу подтвердить операцию. Косяк, имхо.

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

Еще интересно – пока карта была не активированной, в Интернет-Банкинге ее статус указывался как “Ошибка авторизации ‘КАРТА ПРОСРОЧЕНА’”. Как может быть просрочена новая карта для меня загадка. Имхо, это как раз тот случай, когда отсутствие диагностики гораздо лучше неправильной диагностики.

В общем, получил я карту во вторник вечером, а в среду утром получил письмо-ответ из службы поддержки банка. Мол, не смогли с вами связаться, потому и не позвонили, а вообще ваша карта готова и вы можете ее забрать. Ага, не смогли, не доступен я был :/ Поскольку сам имею некоторое отношение к подобным службам поддержки, то такому ответу ничуть не удивился :)

Но хуже было то, что карта так и не была активирована. О чем я не преминул написать в ответ. На что мне сказали, что карту активируют только после выдачи карты из соображений безопасности. И что она уже активирована. Ладно, сказал я. И почему-то решил службе поддержки поверить, даже не смотря на то, что ее статус в Интернет-банкинге не изменился. Зря я это сделал, поскольку при попытке пополнить карточку в ближайшем РКЦ меня ждал облом. На что я опять написал телегу с вопросом “Доколе?” ;) Ответа не последовало, но в течении часа карту таки активировали. Так я и не понял, мои обращения в техподдержку банка имели какое-то отношение к происходящему с картой или же это были удачные совпадения :) Но, в любом случае, приятно было узнать, что наша собственная служба техподдержки (хоть и не банковская) ничуть не хуже других :)))

Да, еще один важный момент у карточек БПСБ. Перечислять на них наличные в РКЦ можно двумя способами:

  1. Прямо на карту. Для этого кассиру нужно дать саму карточку, она вбивает ее номер в компьютер и зачисляет деньги. Никаких документов при этом предъявлять не нужно, а зачисленные деньги сразу оказываются на карточке.
  2. На некий “карт-счет”. Кассиру для этого не нужна карта, а нужен паспорт ее владельца. Внесенные деньги на карту сразу не попадают, а где-то висят весь рабочий день. В конце дня региональные отделения начинают отсылать дневные отчеты в процессинг. И после обработки этих отчетов (т.е. в районе 19-20 часов вечера) деньги в конце-концов попадают на карту.

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

А в остальном пока все нормально, карточка работает, товары оплачиваются. Ждем-с очередной посылки из Англии :)

среда, 11 августа 2010 г.

[life] Собачий кошачий взгляд

Те, кто держат котов, обычно поступают одним из двух способов: либо своих котов вообще не выпускают из дому, либо же коты весь день проводят на улице, а к хозяевам наведываются только чтобы поесть и поспать. Но хозяева одного кота в нашем подъезде делают то, что я всю жизнь считал в принципе невозможным – они несколько раз в день выгуливают его на поводке! Как собаку. Зрелище, конечно, сюрреалистичное, но я наблюдаю его регулярно :)

Сегодня выхожу из подъезда, а на лавочке сидит хозяйка этого кота, рядом с ней лежит и сам кот. Посмотрел я ему в глаза и в мозгу что-то щелкнуло – что-то здесь не то. Не успел я понять, в чем же дело, как увидел на другом конце лавочек другого кота, обычного, дворового. Посмотрел на меня дворовый кот и меня осенило. У домашнего кота с поводком на шее был собачий взгляд! Так смотрят на прохожих только сидящие рядом с хозяином собаки.

Таки да, битиё определяет сознание.

[blog] Повысить удобство блога: комментарии

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

Раньше у меня комментарии вводились на странице ввода комментариев, которая заменяла исходную страницу с постом.

Сегодня я сделал ввод комментария в отдельном окне. Можно попробовать и сравнить.

Есть еще вариант сделать форму ввода комментариев сразу после всех комментариев прямо на страничке с постом. Но там, однако, капчу будет спрашивать после нажатия на кнопку “отправить”.

Капча в любом случае останется, иначе пойдет поток спама.

Какую форму ввода комментариев оставить?

вторник, 10 августа 2010 г.

[life.prog.fake] Подбросьте историй про хитрож*пых программистов

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

Ограничение на размер модуля

В 70-80-х годах, когда необходимость структурного и модульного программирования стала осознаваться самыми широкими массами программистов, в одной организации дабы стимулировать переход к модульности поставили разработчикам жесткое условие: модуль (он же исходный файл) не должен быть больше 3 тысяч строк. И ниипёт. Три тысячи строк и крутись как хочешь. Решение оказалось простым. Программисты продолжали писать модули того размера, который им был нужен. Скажем, в 15kloc. После чего разрезали получившийся модуль на маленькие кусочки по 3kloc и в таком виде сдавали проект.

Приз за самый эффективный код

Давным-давно, в какой-то шараге решили простимулировать разработку эффективного кода. Эффективность оценивали по очень простому критерию: объем кода (в инструкциях) делили на скорость его работы. Т.е. чем быстрее работал объемный код, тем лучше. Приз взял разработчик, который модифицировал свою старую программу так, что ее эффективность просто зашкалило. Стали разбираться. Оказалось, что в программе использовался большой массив, который первоначально нужно было заполнить нулями. Ранее это делали два цикла. Т.е. код был маленький, а работал долго. Разработчик эти циклы заменил на тупые инструкции вида a[0][0]=0; a[0][1]=0;… Код, понятное дело, разросся до невероятных размеров, а его скорость несколько увеличилась (не стало лишних проверок и инкрементов счетчиков циклов). Программа стала несопровождаемой, зато супер-эффективной по выбранному формальному критерию.

Оплата за строки кода

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

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

Призовые за ударный bug-hunting day

В одной крупной аутсорсинговой компании начальство сильно озадачилось проблемой качества разрабатываемого ПО. И придумало, как ему казалось, хорошее решение: bug-hunting days. Раз в неделю (как правило, в субботу) все участники проекта выходили на работу для того, чтобы только искать и исправлять баги, новую функциональность в эти дни в софт добавлять было нельзя. Для стимулирования интереса как тестировщиков, так и разработчиков, были объявлены солидные призовые тому, кто больше всех багов нашел (стимул для тестировщиков), и тому, кто больше всего найденных багов исправил.

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

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

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

И вот на объект прибыл очередной программист. Очень упорно трудился, днями не вылезал из ВЦ. В назначенное время сдал свой компонент на тестирование, прошел приемку с первого раза, собрал монатки и слинял на большую землю. Приехал его сменщик, заглянул в код и ох*ел: один огромный исходный файл, вся прикладная математика находится в самом конце да еще и полностью закомментирована. Зато 90% кода – это сплошные if-ы, которые проверяют, какой именно тестовый сигнал пришел от стенда и в зависимости от этого сразу выдают готовый результат.

Уважаемые читатели, наверняка вы знаете еще истории такого рода – поделитесь, плз.

понедельник, 9 августа 2010 г.

[prog] Интересная презентация Thousands of Threads and Blocking I/O

Thousands of Threads and Blocking I/O – The old way to write Java Servers is New again (and way better). PDF-ка на 65 страниц, в которой рассказывается о сравнении двух подходов к разработке многопоточных серверов на Java: одна-нить на соединение и синхронный I/O против асинхронного I/O и одной нити для обслуживания всех соединений.

PS. Иногда хорошо, когда нет выбора – у наc SObjectizer, так что по агенту на соединение + безальтернативный асинхронный I/O (на основе ACE_Reactor) и все дела. Правда вот вопрос подсистемы ввода-вывода самого SObjectizer… Но это уже совсем другой вопрос :)

[life] Поток сознания провинциала, нахлынувший по дороге из Минска в Гомель

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

С итальянцами однажды у меня такая история приключилась. Возвращаюсь после обеда в офис, вроде бы благодушное и спокойное настроение, хорошо поел, хорошая погода и вАще усё путем! Навстречу идет компашка из трех итальянцев. От итальянцев за версту несет иностранцами. Причем не столько по одежде, сколько по выражениям лиц и по манере держаться – вот там точно была не столько расслабленность, сколько вальяжность.

Когда я проходил мимо них, я случайно увидел наше отражение в большой витрине. Контраст был шокирующим. Улыбающиеся, неспешно шествующие, расслабленные и явно довольные жизнью итальянцы. А рядом с ними я – топающая в ритме 120 шагов в минуту громадная лысая детина, с угрюмым выражением на лице и явным предупреждением “ща, бля, всех порву!” в глазах. И это тогда, когда у меня было очень благодушное настроение! Сильно меня это потрясло.

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

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

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

И вот эта подспудная мысль о том, “а что же будет если…” давит на провинциала несколько сильнее, чем на жителя столицы. Отсюда и угрюмые, сосредоточенные физиономии. Поэтому-то приезжающие к нам иностранцы (совсем не бедные по тамошним, не говоря уже по нашим меркам) выглядят более уверенными в себе и расслабленными, чем минчане.

Кстати, о Москве. Когда мотался в Москву, то существенной разницы в выражениях лиц у прохожих в Москве и Гомеле я не замечал. Наверное, ритм жизни там на людей давит, да и понаехавших (вроде меня) едва ли не больше москвичей. Благодушествовать некогда, пахать нужно. Обычный строк готовности проекта – “вчера”, так что для угрюмости на лицах есть все причины :/

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

Дико мне было это читать. Имхо, проблема вовсе не в Лужкове. А в том, что Москва – это отдельное государство, средний уровень жизни в котором гораздо выше чем в остальной России и СНГ. Вот и рвутся туда все, кому не лень, а ворвавшись пытаются задержаться. И началось это задолго до Лужкова.

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

В общем – у всех есть возможности. У меня есть возможность забить на Гомель, бросить все и отправиться штурмовать Москву, Питер или Лондон. У плачущихся в блогах москвичей есть возможность забить на Москву и осесть в Великом Задрищенске. Надеюсь, что некоторые так и сделают. И избавятся при этом от угрюмого выражения лица ;)

Мне и в Гомеле нормально, в Москву и калачом не затянешь. А вот на счет Минска имеет смысл подумать… Хотя воплощать возможности гораздо сложнее, чем трындеть о желаниях :/

воскресенье, 8 августа 2010 г.

[life.photo] Пейзажи Сергея Румянцева

Лет пять назад на сайте photoexpo.ru (который сейчас не подает признаков жизни) публиковалась фотовыставка Сергея Румянцева под названием “Неизвестная Новая Зеландия”. Потрясающие там были фотографии. Жалко, что сейчас их в Интернете просто так не найти :(

Сейчас снимки Сергея Румянцева можно увидеть на photosight.ru, photoline.ru и, например, вот здесь. А под катом несколько понравившихся мне пейзажей с photosight-а.