Обо мне

Моя фотография
Дикий Полярный Сов

понедельник, 11 июня 2012 г.

Инженер.

Защитился на прошлой неделе. Теперь я - полноценный инженер с оценкой "отлично" в дипломе.

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

У вас Perlянка // It's luPLus.


В конце рабочей недели вернулся на время к good old Perl.

Нужно было перенести сайт с PHP-рельс (хе-хе) на рельсы Великого и Ужасного. Решил воспользоваться фреймворком Mojolicious (http://mojolicio.us) для этих целей.

Скоро будет уже года два, как я не пишу на Perl. Сам фреймворк производит великолепное впечатление, все достаточно аккуратно и логично. Наличествуют _почти_ все атрибуты уважающего себя веб-фреймворка - пути, расширяемый шаблонизатор, запросы-ответы, есть даже модные "HTML5-штуки" навроде WebSockets. Не хватает только управляемых форм (вместо расставляемых в шаблоне тегов и ручного извлечения из POST-параметров) и ORM для связи с БД. Но с ORM-ами у Perl вообще все как-то грустновато. Для работы с электронной почтой нашелся плагин (плагины для Моджо - отдельная тема, их достаточно много и просто писать свои).

Также есть приятный режим Mojolicious::Lite, который позволяет простецкое приложение описать вообще одним файлом, есть встроенный оптимизированный сервер - Гипножаба (СЛАВА ГИПНОЖАБЕ), не хватает только встроенного репла, как в джанге.

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

воскресенье, 12 декабря 2010 г.

Идея для футболки

Пришла в голову офигенная идея для футболки. Носить обязательно на девушке.

Итак, на груди надпись:
'(       )
Между скобками, естественно, ОНИ. А ниже надпись:
LISP - тема списков раскрыта
Ящитаю, будет бомба.

четверг, 9 декабря 2010 г.

понедельник, 27 сентября 2010 г.

Я вернулся.

Не знаю, надолго ли, но вернулся, гыгы.

Написал на хаскеле интерпретатор конечных автоматов Мили, аналогичный используемому в институте "МИЭМ-89" (написанному на паскале). На все про все ушло около двух вечеров: один разбирался с парсерами и их комбинаторами и писал свой велосипед (хотя, наверное, стоило бы повтыкать в Parsec), а второй - писал собственно интерпретатор.

Устанавливаем SDL-ные биндинги поверх Haskell Platform for Windows

Наткнулся на такую ссылку: http://web.animal-machine.com/blog/2010/04/a-haskell-adventure-in-windows/

пятница, 23 июля 2010 г.

Кнопочки.

Блоггер дот ком добавил кнопочки к постам. Теперь моим бредом можно делиться с друзьями на фейсбуке, хехе.

Кстати, на фейсбуке я тоже теперь есть.

Новое сообщение. Работа и развлечения.



Итак, как некоторые из вас уже знают, я сменил работу. Теперь я отошел от дел перловых и пишу на пайтоне. Под django. В общем, то самое, о чем я мечтал полгода.

На работе использую Ubuntu 10.04, emacs, ipython, git. Впечатления - восхитительные. Все-таки фреймворк упрощает программисту работу в разы, если не на порядок. К тому же, встроенные средства джанги, типа админки, тоже сильно облегчают работу, особенно на этапе разработки.

Приобрел себе книгу "Категории для работающего математика", штудирую потихоньку. Также с целью математического самообразования (или восполнения пробелов в памяти - как посмотреть) разжился "Лекциями по линейной алгебре" и "Теорией множеств". Сейчас продвигаюсь по всему этому потихоньку.

Такие дела.

понедельник, 28 июня 2010 г.

Erlang + OCaml и все-все-все.

Вот здесь опубликованы весьма интересные слайды - про то, как функциональные языки вытеснили в продакшене императивщину. Крайне интересно.

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

пятница, 25 июня 2010 г.

Няшный Haskell.

На днях нарыл книжку "Programming in Haskell", начал потихоньку разбираться. Пока что понимаю не так уж много, но работаю над собой. Налицо, кстати, явное сходство F# с сабжем - afaik, одни и те же люди приложили руку к созданию как того, так и другого.

А сейчас - про общую, хех, "няшность" брутального Хаскеля. Игру про няшного котика, написанную на Haskell, все видели? Ну а теперь вот второе наблюдение - интерпретатор Хаскеля называется "hugs". Вот сидит такой одинокий программист, захочется ему обнять кого-нибудь, открывает он консоль и пишет там "обнимашки" (ну, hugs пишет, имею ввиду). И запускается ему интерпретатор, и теплеет у него на душе, и с блаженной улыбкой он начинает работать.

пятница, 18 июня 2010 г.

Насущные вещи и perlянка.

Всем привет!

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

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

Но. Была очень серьезная проблема, которую разрешить не удалось. О чем я искренне сожалею. Мне будет не хватать вас, ребята.

Ну ладно, с лирически-грустной частью покончено. Теперь расскажу вам кое-что интересное.

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

пятница, 4 июня 2010 г.

Наконец-то пост. О работе и всяком таком.

И снова я возвращаюсь сюда.

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

Установил для Emacs расширение yasnippet. Как я раньше без всего этого жил - скорость набора кода увеличилась в разы. Продолжаю запоминать собственные мнемоники. Очень удобно, сделал уже набор сниппетов для jQuery и для часто используемых перловых оборотов. Особенно понравилась возможность встраивать в сниппет elisp-код.

В планах на будущее - доосилить таки F#-сервер и заняться программированием всяких прикладных автоматизирующих рутинную работу штучек на пайтоне. Хочу попробовать IronPython, а также Stackless - мельком видел его, вроде достаточно интересен.

Такие вот наполеоновские планы, хехе.

пятница, 7 мая 2010 г.

Last second save!

Давно не писал.
А все почему?
Да потому что нечего особо писать. Как будет что интересное - немедленно сообщу.

На следующей неделе начальник сваливает в отпуск на две недели, и я принимаю на себя весь нелегкий груз веб-программизма. Атлант, однако!

Вот такие дела.

понедельник, 19 апреля 2010 г.

Метро 2033

Раз уж день пошел богатый на посты в блоге, продолжим, пока прет. Прошел "Метро 2033".

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

Такие дела. Крайней рекомендую. Книжка мне в свое время понравилась (вторая, кстати, как-то не очень была, а первая очень даже прилично).

F# - красивая конструкция

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

И вот, благодаря паттерн матчингу, их можно объединить:

let sendToStream (str: NetworkStream) (bin: Object) =
    match bin with
        | :? string as strn ->
            str.Write(System.Text.Encoding.UTF8.GetBytes(strn), 0, strn.Length)
        | :? (byte[])  as bytarr ->
            str.Write(bytarr, 0, bytarr.Length)

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

P.S. Кстати, в приведенном примере компилятор найдет изъян - не покрыты все паттерны. Дело лечится добавлением граничного случая | _ -> failwith "Invalid input" например.

Новое и насущное.

Увидел вчера в книжном нового, свеженького (для России) Рейвенора-отступника, и не смог пройти мимо - подхватил и утащил, аки паук, на кассу.

Качество бумаги по сравнению с предыдущим изданием - небо и земля, причем сравнение, естественно, не в пользу предыдущего. И, хотя я уже читал его в оригинале, начал читать в русском переводе. Пока откровенных косяков не замечено - Молох все еще Молох.

Вот так. Этот пост, конечно, не интересен будет тем, кто не в теме :]

пятница, 16 апреля 2010 г.

Erlang - шифр цезаря.

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

О том, что из этого получилось - под катом.


четверг, 15 апреля 2010 г.

Эрланг. Впечатления.

Первое впечатление: "хехе, паттерн матчинг, оптимизация хвостовой рекурсии... как тут дела с HOF?".
Второе: "Неизменяемые переменные!"
Третье: "Круто, все так параллелится!"
Четвертое: "Что-то мне синтаксис напоминает..."
Пятое: "ПРОЛОГ?"