Home

Ангэ · Эсэф

Свежие записи · Архив · Друзья · Личная информация

* * *
Из Ставангера в Берген я ехал автостопом, решил опробовать этот чудесный способ передвижения и в Норвегии. Водители, как и все остальные норвежцы, отлично говорили по-английски, рассказывали забавные истории и в целом были отличными ребятами. Особенно запомнился пирсинг/тату-мастер на пижонском красном Мерседесе, который завёз меня километров на 30 дальше, чем ему нужно было ехать чтобы подбросить меня до парома. А ещё -- парень-Пушкин, так я про себя его назвал, потому что у него был дед-эфиоп, и он рассказывал истории про то, как ездил в Эфиопию и что там есть классный вулкан.

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

дальше фотографии )

Метки: , ,

* * *
Сейчас Ставангер считается самым богатым городом Норвегии, главным образом из-за нефти. Когда в 1969-м году в Северном море обнаружили нефть (что положило началу богатству и процветанию Норвегии) — Ставангер был избран центром нефтебизнеса. Кстати, интересно, что нефтяные разработки в Норвегии национализированы и ими занимается главным образом государственная компания StatOil.

У города интересная история взлётов/падений и отраслей с ними связанных — вначале город был известен судостроительством, затем, уже в ХХ-м веке, на смену пришло консервное дело — в Ставангере делали консервы с сельдью в оливковом масле (даже есть музей консерв :)), которые, как я понимаю, экспортировались во многие страны. Ну а сейчас — эра нефти.

После такого вступления наверное представляется индустриальный город со зданиями из стекла и бетона, но здесь совсем другие символы достатка :)

дальше )

Метки: , ,

* * *
После парка Вигеланда я отправился в Фольк-музей, что находится на полуострове Bygdøy, который, как потом оказалось, является довольно мажорским районом и в нём оочень красивые домики, прямо как с картинок журнала об элитной недвижимости.
дальше )
Метки: , ,
* * *
У меня часто спрашивали: "Почему именно Норвегия и зимой?", потому я сразу отвечу. Причин несколько: я люблю север, люблю black metal, и Норвегия — слегка экзотическая страна, если выбирать из стран Европы. Мне хотелось посмотреть северное сияние, фьорды, красивую природу, наконец попробовать себя в получении шенгенской визы и также немаловажно, что WizzAir открыли дешёвый рейс Киев — Осло (билет в оба конца с багажом обошёлся мне всего 454 гривны). Так что вот — долгие и тщательные приготовления, сбор документов для визы, поиск хостелов и хороших ребят из hospitalityclub.org и couchsurfing.com (в итоге хостелы мне не понадобились вовсе), ранняя покупка билетов (я рискнул и заказал многие билеты даже до получения визы, и в итоге выиграл немало денег) и наконец виза получена и я улетаю в Осло!

Маршрут был выбран такой:

Киев - Осло - Ставангер - Берген - куда-то на фьорды - Осло - Тромсё - Осло - Киев.
дальше )

Метки: , ,

* * *
Когда наступила надобность сверстать слайды для следующей презентации — я наконец решил воспользоваться LaТеХ-ом (это уже далеко не первый мой подход, но пока самый продуктивный). В процессе работы у меня возникали различные мелкие задачи: нарисовать диаграмму, нарисовать синтаксическое дерево, нарисовать несколько деревьев "в разных позах", раскрасить исходный код, ну и наконец всё это представить в виде более или менее симпатичных слайдов.

Поскольку часто полученные знания были достойны того, чтобы ими делиться, а весь этот подход по сравнению с традиционным WYSIWYG (в лице Open или Microsoft Office) весьма любопытный и просветляющий — я решил написать на эту тему несколько постов. Они не будут претендовать на роль учебных, т.к. я постараюсь быть кратким и выражать самую суть, чтобы позволить прочувствовать эту атмосферу, заинтересовать и дать толчок к дальнейшему изучению. Кроме того, я сам только изучаю LaTeX, потому не могу служить авторитетом в данной области.

Итак, начнём с LaTeX )

Метки: ,

* * *
Сегодня у [info]martreya День Рожденья! Ура, ура, ура! :)
* * *
Роман Чепляка выложил в HTML нашу статью о xmonad, весьма хорошем оконном менеджере, написанном на haskell.
Ранее она публиковалась в журнале Open Source, выпуски 27, 28, 29.
Можно смело сказать, что статья является самой подробной из всего написанного про xmonad на русском :)
* * *
Хотите написать умную статью, но не знаете о чём?

Вам поможет это! О правильном использовании написано в разделе Examples :)

P.S. Спасибо за наводку замечательному блогу http://www.defmacro.org, не перестаю получать удовольствие от тонкого юмора в статьях автора :)

P.P.S. А в материалах конференции WMSCI 2005 такие статьи даже печатают! Подробнее обо всей этой истории здесь.

* * *
Примерно неделю назад мы с Мариной ([info]martreya) вернулись из двухнедельного автостопа по Турции. Поездка получилось отличной, полной ярких впечатлений и интересной. Турки - замечательные люди, спокойные, улыбчивые и дружелюбные. История страны невообразимо насыщена, кого здесь только не было: и хетты, и греки, и римляне, и турки-сельджуки, и турки-османы! Стамбул (Константинополь) - бывшая столица трёх империй: Восточно-Римской, Византийской и Османской. В общем, предварительно начитавшись статей и путеводителей мы двинулись в путь :)

Маршрут был такой:

Киев - Одесса - (1.5 дня на теплоходе) - Стамбул - Изник - Ассос - Эгейское море - Измир - Гюмюльдюр - Сельчук - Эфес - Конья - Гёреме (Каппадокия) - Невшехир - Стамбул - (1.5 дня на теплоходе) - Севастополь - Киев.

Карта:

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

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

Вступление
Одесса
Стамбул (часть первая)
Изник
Ассос(Бехрамкале)
Гюмюлдюр
Эфес
Сельчук

UPD:
Конья
Гёреме, Каппадокия
Каппадокия (часть вторая)
Гёреме, музей
Стамбул (часть вторая)
Море

Метки: ,

* * *
В последнее время я начал проверять орфографию с помощью программы aspell и обнаружил, что в виндовой её поставке нет русского словаря с буквой "ё". Соответственно, при проверке aspell ругается на слова типа "поёт", "смеётся" и т.д., что мне совершенно не нравится.

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

Немного поисследововав этот вопрос, можно узнать следующие факты:


  • Ё была предложена в 1783, впервые использована в печати в 1795, однако формально вошла в алфавит только в советские годы

  • относительно названия надстрочного элемента (вот тех двух точек) нет единого мнения. Употребление слов "умляут", "трема" считается некорректным, поскольку относится к диакритике символа, а диакритика связана с произношением звука (и т.к. ё фонетически не связана с е (ё=йо, е=йэ), то две точки сверху - не диакритический символ)

  • медленное введение в обиход и распространение буквы ё объясняется её неудобной для быстрого письма формой и техническим несовершенством печатных средств докомпьютерной эпохи. Заметьте, обе эти причины отсутствуют в компьютерном наборе. Хотя, конечно, им на смену может прийти несколько необычное расположение этой буквы на клавиатуре

  • в результате необязательности употребления буквы "ё", сейчас мы можем наблюдать множество исковерканных личных имён (Ришелье, Монтескье, Рентген, Рерих и т.д. - все они были с буквой Ё ;))


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

Действующие правила орфографии не требуют написания буквы "ё", однако рекомендуют её написание в неоднозначных словах. Однако, задумываетесь ли вы например при написании очередного поста в ЖЖ, что слово "все" может быть прочитано как "всё"? Уверен, что нет. Увидев такое слово в неоднозначном предложении, приходится возвращаться к нему и переосмысливать прочитанное, что не менее важно, чем то, что взгляд "спотыкается о букву Ё", что например является одним из главных аргументов "против" в статье Лебедева про Ё из его книги "Ководство".

Для того, чтобы исследовать какой процент фрэндов моего ЖЖ использует букву "ё" в своих постах, я написал небольшой скрипт - ёметер :) Он извлекает список друзей, затем последние 25 постов каждого пользователя и проводит простой анализ. Для каждого пользователя затем выдаётся "yo-ratio" (отношение постов с "ё" ко всем постам), так же отношение фрэндов хотя бы раз употребивших "ё" ко всем фрэндам. У меня этот результат таков:

 total users = 106, significant users = 100,
 yo users = 64, ratio = 0.64
 
Таким образом 36 процентов моих фрэндов ни разу не употребило "ё" за последние 25 постов! К вам, собственно, и обращён этот мой пост :)

Ссылки:

- исходный код yometer.py (для использования необходим python и доступ в интернет)
- статья про Ё в русской википедии
- много ссылок в конце этой статьи
- параграф из книги "Ководство" А. Лебедева

UPD: Для поднятия насущности вопроса публикую под катом список фрэндов, не употребляющих "ё" :) (отредактирован после работы скрипта - вычеркнуты англоязычные и украиноязычные юзеры)
список )

Метки: , ,

* * *
Сегодняшняя встреча SpB Haskell user group прошла просто замечательно - услышал много нового и интересного, да и сам что-то хорошее рассказал :)

В программе было три доклада:

  • "Комбинаторы сериализации" (слайды) - мой доклад.

  • "Свободные теоремы" (или "Теоремы нахаляву" - вольный перевод Theorems for free) (слайды) - доклад [info]deni_ok

  • "Функциональные структуры данных (часть вторая)" (слайды) - доклад [info]antilamer

(чуть позже возможно появятся фотографии и аудиозапись)

Я получил свой первый опыт чтения докладов широкой (да ещё и весьма интеллектуальной) публике, получив при этом массу fun-a. Смею надеяться - первый блин не вышел комом :)

Остальные доклады тоже весьма порадовали - и интересные результаты, получающиеся в результате вывода этих самых "халявных" теорем, и полезные и интересные техники, описанные Женей, вместе с его замечательными иллюстрациями :) и последующая мини-лекция о realtime-вычислениях и проблемах, с этим связанных, рассказанная Иваном Тарасовым ([info]_navi_), так сказать, в кулуарах.

Что же, с нетерпением жду следующих встреч! :)

Метки: , ,

Настроение:
artistic artistic
Музыка:
The Velvet Underground
* * *
Сегодня, просматривая свою коллекцию книжек и paper-ов по функциональному программированию, решил посмотреть, что там пишет Simon L. Peyton Jones в своей книге "The implementation of functional programming languages". И был приятно удивлён - как же классно он пишет! Хотел всего лишь прочесть вступление и зачитался! :) Меньше чем за 30 первых страниц книги получаем чёткое, сжатое, понятное и хорошо иллюстрированное описание таких тем:


  • синтаксис лямбда-исчисления (в дальнейшем ЛИ)

  • карринг

  • операционная семантика ЛИ

  • бета-редукция, альфа- и эта-преобразования и что они значат

  • порядок редукции, его оптимальность

  • нормальный порядок редукции

  • теоремы Чёрча-Россера

  • пример выражения, у которого нет нормальной формы

  • как выражать рекурсивные функции в ЛИ

  • Y-комбинатор

  • денотационная семантика ЛИ, отличие денотационной семантики от операционной

  • bottom _|_

  • строгость и ленивость функций

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

Дальнейший обзор книги )

Настроение:
geeky geeky
Музыка:
muse
* * *
Весёлая, однако, штука - википедия! Читал статью про метасинтаксические переменные, а буквально через два-три перехода по ссылкам внутри статей - уже попал на статью про куннилингус! :) При этом узнал, что и до него, и после нежелательно чистить зубы и есть чипсы и сухарики :)

А в дополнение выпуск xkcd на эту же тему:
[xkcd.com - The problem with Wikipedia]

Метки:

Current Location:
kiev
* * *
Вчера, с подачи [info]antilamer (спасибо за вдохновляющий поток эмоций! :)), поразбирался с QuickCheck - средством для тестирования функционального кода, которое основывается на проверках неких свойств, которые задаются относительно определённых функций и проверяются на случайно сгенерированных данных.

Классический пример: есть функция reverse для обращения списков. Тогда можно придумать такие достаточно ярко её характеризующие свойства:

propReverseUnit x       = reverse [x] == [x]                             
-- (то есть, обращая список из одного элемента - получаем тот же список)

propReverseAppend xs ys = reverse (xs++ys) == reverse ys ++ reverse xs
-- (обращая конкатенацию списков, получаем конкатенацию обращений частей 
-- в обратном порядке)

propReverseReverse xs   = reverse (reverse xs) == xs
-- (обращая обращение списка - получаем тот же список)

Теперь из-под ghci запускаем QuickCheck:
Main> quickCkeck propReverseReverse
OK, 100 tests passed

и - вот он, момент истины! - QuickCheck сгенерил 100 случайных списков, на которых проверил данное свойство и поскольку оно всегда выполнилось - выдал OK.

При этом свойства могут быть и посложнее нежели описанные выше - в них могут присутствовать необходимые для выполнения свойства условия, генерируемые данные могут быть определённым образом классифицированы, кроме этого можно создавать свои генераторы значений, в том числе для рекурсивных типов (легко!) и даже генераторы случайных функций!

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

На предстоящей встрече Spb Haskell User Group , как раз ожидается доклад по QuickCheck от Дмитрия Тимофеева ([info]dtim), который, думаю, будет весьма интересно послушать, при этом уточнив пока неясные для меня моменты.

В общем, весьма любопытная штука и немного необычный (по крайней мере для меня) подход к тестированию, который отлично работает в условиях отсутствия побочных эффектов и превращает процесс тестирования в весьма увлекательный процесс размышления над свойствами своей программы. Изначально QuickCheck был написан для Haskell и активно там используется, но поиск в гугле выдал и порт для Erlang .

Метки: , ,

Настроение:
geeky geeky
* * *
У меня вот родились котята с месяц назад (мама - наша Маська, папа - некий сторонний перс), теперь ищем им хозяев.
На эту тему сделал здесь пост:

Пост про котят с фото

Там есть и фотки, и небольшое описание, и контакты.
А ещё сделаю превью одного котёнка здесь:

Был бы очень благодарен за помощь в раздаче, ибо в воскресенье утром (29.07) возвращаюсь в Петербург, и было бы весьма неплохо их к тому времени раздать. Котята весьма позитивные, игривые и пока неизбалованные, так что рекомендую :)
Спасибо!

Метки:

Current Location:
kiev
* * *
Вчера благополучно переехали в Санкт-Петербург, буду теперь некоторое время здесь жить :)
Старый номер телефона можете смело удалять, теперь контакты такие: +7 921 3782469.

У нас тут есть чукотские сказки, шахматы, автомобильная сирена по утрам и новый нескрипящий диван!
Все желающие повидать меня в СПб are welcome! :)

Кроме того, примерно 15 июля ещё вернусь на несколько дней в Киев.

Метки:

Настроение:
excited excited
* * *
Наткнулся на прикольный пример изоморфизма. Есть игра для двух игроков: каждый по очереди называет число от 1 до 9. Повторяться нельзя. Выигрывает тот игрок, который первым назовёт числа, сумма которых равна 15.
Спрашивается: какой известной игре эта игра изоморфна?
Комментарии пока скрываются :).

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

UPDATE (ответ)
Более половины комментариев были верными - ответом является игра в крестики-нолики на магическом квадрате 3х3 (сумма чисел в котором по вертикалям, горизонталям и главным диагоналям которого равна 15).
Выглядит он вот так:

2 7 6
9 5 1
4 3 8

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

Спасибо всем за ответы, было интересно!

Метки:

Настроение:
geeky geeky
* * *
Захотел я почитать в Википедии статью про DSL (domain specific languages) и не пожалел :) Набрал не в той раскладке "dsl", и по запросу "выд" английская Википедия достаточно неожиданно выдала мне с релевантностью 9,9% интересную статью про белорусский арабский алфавит. Поначалу я подумал, что это очередной википедийный вандализм (а-ля недавняя байка про МГУ), но нет.

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

Сейчас китабы хранятся в библиотеках АН Беларуси, АН Литвы, Вильнюсского, Петербургского и Казанского университетов, а также в частных коллекциях.
Такой вот интересный пример транслита.



Ссылки по теме:
Статья на русской Википедии
Более подробная статья о кетабах (англ.)
Метки:

Настроение:
weird weird
* * *
Что же, в прошлый раз мы вспомнили формы записи операторов и рассмотрели написание простого вычислителя постфиксных выражений на Haskell. Следующим шагом является создание транслятора выражений из инфиксной формы - в префиксную. Однако, перед этим нам необходимо улучшить разбор выражения на токены, поэтому в данной статье мы рассмотрим монадические комбинаторные парсеры на примере модуля Parsec, а также использование их на практике.

Haskell postfix: часть вторая. Комбинаторные парсеры Parsec. )

Метки: , ,

* * *
В очередной раз убеждаюсь, что хорошая штука opensource :)

Я пользуюсь Linux Ubuntu и недавно сменил основной аудио-проигрыватель с Amarok на Exaile, поскольку Amarok, будучи KDE-приложением, несколько тормозил при запуске в моём Gnome. Exaile - является некоторым подобием Amarok под Gnome, вполне приятный плэйер, в котором есть интеграция с last.fm, неплохой менеджер артворков, нотификации, работа с мультимедийными клавишами out of the box, приятный внешний вид и т.д. После перехода я обнаружил, что некоторых мелочей мне не хватает и решил сделать их сам.
Что же, получаем исходный код для разработчиков:

svn co svn://exaile.org/usr/local/svn/exaile/trunk trunk
и вперёд! :) Заодно познакомлюсь с Python и GTK.

Захожу на канал #exaile в IRC, знакомлюсь с одним из двух разработчиков Exaile - sjohannes, пытаюсь задавать какие-то вопросы. В принципе ребята на вопросы отвечают, но помогать в разборе кода особенно не хотят. Что ж, посмотрю сам.

Поначалу я реализовал простенькую фичу. Заключалась она в добавлении возможности "Load", которая параллельно очищала плэйлист и добавляла в него выбранный трек или альбом: добавил menu item "Load" в контекстное меню, навесил на него обработчик. В итоге всё вылилось в такой вот ticket с патчем.
Особого успеха у sjohannes этот патч не имел - сказал, что не думает что это особенно нужная функциональность, но, тем не менее, на следующий день пришло письмо от некоего благодарного пользователя, так что хоть кому-то он да понадобился :)

Вторая же возможность, которую я добавил, была навеяна похожей функциональностью Eclipse IDE и сразу понравилась разработчикам. Я говорю о возможности "Show in collection", которая может быть полезна при желании быстро перейти от трека в плэйлисте к соответствующему треку в коллекции (это важно при прослушивании случайных треков, при этом иногда хочется послушать полностью ту группу, которая только что играла и, как следствие, нужно искать её в коллекции, что возможность делает автоматически). В Eclipse этой возможности соответствует переход от текущего редактируемого файла к его ноде в дереве проекта. В итоге, я сделал ещё один патч.

Эта идея и её реализация уже гораздо больше впечатлила sjohannes, и он сказал, что непременно включит её в следующий релиз (см. UPDATE). Что ж, буду рад :)

Хочется отметить, что Python, как и обещалось многими, оказался действительно интуитивно понятным языком, с хорошим синтаксисом. Практически все вещи, что я делал почти наобум - работали именно так, как полагалось. Мне кажется, что это весьма важное качество языка - works as expected. Насчёт GTK и биндингов под Python - pyGTK, тоже ничего плохого сказать не могу, хорошая документация, поработал с деревом и его моделью без особенных проблем. Хотя здесь, конечно, моё мнение весьма поверхностно и сравнивать мне не с чем, ибо я никогда не занимался разработкой GUI под Linux.

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

UPDATE: Функциональность "Show in collection" добавили в Exaile в ревизии 2358 ("svn log -r 2358").

Current Location:
/home
Настроение:
geeky geeky
* * *

Previous

Реклама