суббота, 31 марта 2012 г.

[life.aphorism] Очень глубоко и точно

 

Перестраивая мир, мы приводим его в соответствие с путаницей наших мыслей.

Сказано про общественно-политическую жизнь. Но один-к-одному подходит и для инженерной деятельности (особенно в ИТ).

[life] С выходом стабильного релиза языка Go…

…пришло понимание, что у меня уже нет ни времени, ни сил, ни желания пытаться его освоить. Почти как в анекдоте:

- работа
- семья
- спорт
- язык Go (Erlang, Haskell, F#, …)

но можно выбрать лишь три пункта.

[life.cinema] Очередной кинообзор (2012/03)

Подошло время очередного кинообзора. На этот раз совсем небольшого, т.к. смотреть кино было особо-то и некогда.

13 убийц. Сильно напомнил мне старинный классический фильм "Семь самураев". Думаю, что тем, кому понравился "Семь самураев", понравится и "13 убийц".

Как украсть небоскреб. Понравился. Динамично, довольно смешно, пошлости и дурости по минимуму.

Охотник. Жаль, что в основу сюжета был положен совершенно сказочный ход – поиск единственного дожившего до наших дней тасманского сумчатого волка. Если бы не это, то получилась бы сильная драма. Но природную харизму Уиллема Дефо, на игре которого держится весь фильм, нельзя не отметить.

На живца. Фильмец не новый, но легкий, динамичный и забавный.

Лифт. Задумка, наверное, была не плохая. Но исполнение превратило фильм в невероятную туфту.

Женщина из Пятого округа. Не понял ни о чем этот фильм, ни для кого он был снят. Как по мне, так бессмысленный, скучный бред.

[life.wow] Бумажный сейф – смотришь и чувствуешь себя ребенком

пятница, 30 марта 2012 г.

[life.photo] Понравились фотографии

Давно не было возможности посмотреть всякие разные фотографии в Интернете. Сегодня глянул несколько подборок. Фотографии, которые понравились, утащил к себе (см. ниже). Но подписи не переводил, как были на англицком, так и остались – влом-с :)


Ed Waido feeds handfuls of potato chip leftovers to gulls at McCook Beach in East Lyme, Conn., March 9, 2012. (Sean D. Elliot /The Day)


BLUE ICE CAVE Antarctica, December 2011 (Jamie Scarrow/Bruce, Canberra, Australia)


Skiers approach Wendelstein church near Bayrischzell, Germany on January 31, 2012. (Lukas Barth/dapd/Associated Press)


A rugby match between Old Belvedere and Blackrock, Dublin, Ireland, Feb. 5, 2011.


A torrential monsoon rain in Bhaktapur. Bhaktapur, Nepal. (Photo and caption by Anuar Patjane)

[prog.flame] Наткнулся тут на планы разработчиков Nemerle2

Прочитал (довольно бегло, признаюсь) первые несколько разделов статьи “N2 – языковый фрeймворк”. Не понял, для какой аудитории предназначен сей инструмент.

Я вижу себе картину мира так:

  1. Есть разработчики универсальных языков программирования общего назначения. Таких, например, как Go или Vala. Нужен ли им какой-то вспомогательный фреймворк? Помнится, я читал, что при разработке серьезных компиляторов даже генераторы парсеров не часто используются. Из соображений эффективности и более качественной диагностики ошибок парсер, семантический анализатор, оптимизатор и пр. вещи там реализуются, зачастую, вручную.
  2. Есть разработчики мелких DSL-ей. Например, нужно разработчику сделать собственный специализированный аналог IDL (Interface Definition Language), наподобие тех, которые используются в Google Protocol Buffer или Thrift, но попроще. Тут цель разработчика – сделать быстро, без затей, чтобы затем было просто переделывать, да и выбросить чтобы было не жалко. Выбор в таких условиях идет, обычно, между встроенными возможностями целевого языка программирования (макросы или шаблоны в C++, метод eval в динамических языках и т.д.), использованием внешних динамических языков (Perl, Ruby, Python,…) или самых простых и доступных генераторов парсеров (коих великое множество, начиная от древних lex+yacc).
  3. Есть разработчики серьезных специализированных языков, вроде языков описания аппаратуры.

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

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

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

Так что, со нескрываемым злорадством отмечу, что Nemerle-строители в очередной раз страдают херней. С еще большим злорадством отмечу, что Nemerle-евангелисты вот уже шесть лет засирают самый солидный профильный ресурс Рунета без заметного практического выхлопа. И будут засирать еще шесть лет, хотя, похоже, у многих RSDN-еров уже устойчивый иммунитет на Nemerle выработался ;)

Имхо, причина в том, что первоначальные разработчики Nemerle (польские аспиранты) знали, зачем им Nemerle нужен. Они своих целей и достигли, полагаю. А вот RSDN-овские евангелисты не знают, зачем им это все. Нравится им с парсерами развлекаться, нравится мечтать сделать глобальный всемогутор, вот и пилят не язык программирования, а языковой фреймворк. Ну туда им и дорога.

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

среда, 28 марта 2012 г.

[prog] Насколько просто поставить себе ODBC-драйвера от Oracle?

Как оказалось, совсем не сложно. Если знать как :)

Первоначально этой задачей занимался мой сотрудник. Он скачал что-то под названиями Oracle Database Client, сначала версии 10, затем 11. Приличного веса дистрибутивы с GUI-выми инсталляторами. Но почему-то ни один из них нормально 32-х битовый ODBC-драйвер поставить не смог (нормально, это что бы в ODBC connection string можно было указать что-то вроде “Oracle ODBC Driver” в параметре Driver).

Памятуя мудрость о том, что хорошо сделанное – это сделанное самим собой, я решил тряхнуть стариной и попробовать справиться с Oracle Database Client самостоятельно. От чего получил массу интересных ощущений.

Инсталлятор клиента 10-й версии заставлял Windows 7 переключаться в какой-то ущербный видеорежим, поскольку не мог работать в штатном режиме. Что уже вызывало подозрения.

Далее инсталлятор предлагал выбрать одну из готовых конфигураций или же определить custom-конфигурацию. В режиме custom-конфигурации я выбрал только ODBC-драйвера, но когда перед началом инсталляции была показана итоговая информация по устанавливаемым компонентам, то там было перечислено еще штук двадцать наименований. И на диск ставилось несколько десятков мегабайт всякой шняги (включая, как мне показалось, не только JRE, но еще и Perl). Плюс к тому инсталлятор ожесточенно ругался на то, что длина значения PATH больше 1023 символов и поэтому он не может это значение модифицировать.

Инсталлятор от 11-й версии уже нормально переваривал количество цветов в штатном видеорежиме. Но так же ставил туеву хучу всякой херни вместе с ODBC-библиотеками. И так же ругался на длину значения PATH.

Но при этом у инсталлятора от 10-й версии была большая кнопка “Deinstall components” на главном диалоге. А вот в 11-й версии ее уже не было. И я так не нашел способа цивильного удаления установленной Oracle-овским инструментом требухи со своей машины – вычищал ручками.

В результате обнюхивания того дерьма, которым Oracle-овский инсталлятор засерал мой винчестер, удалось найти маленький html-файлик с инструкцией по ручной установке ODBC-драйверов под названием ODBC_IC_Readme_Win.html. В котором все просто и доступно расписано – качаем два zip-архива из состава Instant Client, создаем вручную папочку на диске, туда оба эти архива распаковываем один за одним, запускаем odbc_install, модифицируем PATH + еще пара тому подобных операций (вот, например, такая инструкция для Oracle 10g).

Самое хорошее в этом то, что этот способ реально работает. Такое впечатление, что Instant Client-ом занимаются в Oracle люди старой закалки, которые не боятся ставить и настраивать все ручками. Поэтому у них и работающие вещи получаются.

А вот разработчикам GUI-вых инструментов чего-нибудь вправить не помешало бы (или руки, или голову). Поскольку от знакомства с их творениями остается твердое впечатление, что чем больше и богаче контора, тем более говеный софт она производит.

Кстати, еще о качестве софта от Oracle. Примечательно, что попытка скачать архив с Oracle Instant Client без предварительного логина на сайт Oracle приводит вот к такому сообщению о системной ошибки. Хотя контора попроще наверняка бы просто написала, что для доступа к архиву нужно зайти на сайт под своим аккаунтом.