Защитился на прошлой неделе. Теперь я - полноценный инженер с оценкой "отлично" в дипломе.
(setf *my-blog* (make-instance 'blog)) ;Also available in Common LISP
понедельник, 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, вернее, из-за перерыва. Ну и из-за прочих областей, в которые пришлось залезть.
понедельник, 31 октября 2011 г.
воскресенье, 12 декабря 2010 г.
Идея для футболки
Пришла в голову офигенная идея для футболки. Носить обязательно на девушке.
Итак, на груди надпись:
'( )Между скобками, естественно, ОНИ. А ниже надпись:
LISP - тема списков раскрытаЯщитаю, будет бомба.
пятница, 10 декабря 2010 г.
четверг, 9 декабря 2010 г.
Clojure - пишем программу с базовым интерфейсом и собираем ее в .jar
Переписал пример из "Core Java. Fundamentals" на clojure, чтобы разобраться с тем, как на ней пишется GUI.
Код и комментарии - под катом.
понедельник, 27 сентября 2010 г.
Я вернулся.
Не знаю, надолго ли, но вернулся, гыгы.
Написал на хаскеле интерпретатор конечных автоматов Мили, аналогичный используемому в институте "МИЭМ-89" (написанному на паскале). На все про все ушло около двух вечеров: один разбирался с парсерами и их комбинаторами и писал свой велосипед (хотя, наверное, стоило бы повтыкать в Parsec), а второй - писал собственно интерпретатор.
Написал на хаскеле интерпретатор конечных автоматов Мили, аналогичный используемому в институте "МИЭМ-89" (написанному на паскале). На все про все ушло около двух вечеров: один разбирался с парсерами и их комбинаторами и писал свой велосипед (хотя, наверное, стоило бы повтыкать в Parsec), а второй - писал собственно интерпретатор.
пятница, 23 июля 2010 г.
Кнопочки.
Блоггер дот ком добавил кнопочки к постам. Теперь моим бредом можно делиться с друзьями на фейсбуке, хехе.
Кстати, на фейсбуке я тоже теперь есть.
Кстати, на фейсбуке я тоже теперь есть.
Новое сообщение. Работа и развлечения.
Итак, как некоторые из вас уже знают, я сменил работу. Теперь я отошел от дел перловых и пишу на пайтоне. Под django. В общем, то самое, о чем я мечтал полгода.
На работе использую Ubuntu 10.04, emacs, ipython, git. Впечатления - восхитительные. Все-таки фреймворк упрощает программисту работу в разы, если не на порядок. К тому же, встроенные средства джанги, типа админки, тоже сильно облегчают работу, особенно на этапе разработки.
Приобрел себе книгу "Категории для работающего математика", штудирую потихоньку. Также с целью математического самообразования (или восполнения пробелов в памяти - как посмотреть) разжился "Лекциями по линейной алгебре" и "Теорией множеств". Сейчас продвигаюсь по всему этому потихоньку.
Такие дела.
понедельник, 28 июня 2010 г.
Erlang + OCaml и все-все-все.
Вот здесь опубликованы весьма интересные слайды - про то, как функциональные языки вытеснили в продакшене императивщину. Крайне интересно.
Сказать по правде, именно так я себе все и представлял.
Сказать по правде, именно так я себе все и представлял.
пятница, 25 июня 2010 г.
Няшный Haskell.
На днях нарыл книжку "Programming in Haskell", начал потихоньку разбираться. Пока что понимаю не так уж много, но работаю над собой. Налицо, кстати, явное сходство F# с сабжем - afaik, одни и те же люди приложили руку к созданию как того, так и другого.
А сейчас - про общую, хех, "няшность" брутального Хаскеля. Игру про няшного котика, написанную на Haskell, все видели? Ну а теперь вот второе наблюдение - интерпретатор Хаскеля называется "hugs". Вот сидит такой одинокий программист, захочется ему обнять кого-нибудь, открывает он консоль и пишет там "обнимашки" (ну, hugs пишет, имею ввиду). И запускается ему интерпретатор, и теплеет у него на душе, и с блаженной улыбкой он начинает работать.
А сейчас - про общую, хех, "няшность" брутального Хаскеля. Игру про няшного котика, написанную на Haskell, все видели? Ну а теперь вот второе наблюдение - интерпретатор Хаскеля называется "hugs". Вот сидит такой одинокий программист, захочется ему обнять кого-нибудь, открывает он консоль и пишет там "обнимашки" (ну, hugs пишет, имею ввиду). И запускается ему интерпретатор, и теплеет у него на душе, и с блаженной улыбкой он начинает работать.
пятница, 18 июня 2010 г.
Насущные вещи и perlянка.
Всем привет!
Вот немного разобрался со своими проблемами - ушел на очередной околоземный виток в институте (я снова четверокурсник, хаха), нашел себе новую работу (программист python+django, аккурат то, о чем я мечтаю вот уже полгода как), сейчас дорабатываю две недели в "Докторе" и сваливаю.
Впечатления от почти двух лет работы: в общем, все было ок (а местами даже лучше, чем ок), не особо и жалуюсь. Коллектив отличный, режим работы неплохой, занятия не особо скучные (в основном, но бывают, конечно, рутинные места, хотя - где их нет?). Добираться от дома, опять же, достаточно удобно :]
Но. Была очень серьезная проблема, которую разрешить не удалось. О чем я искренне сожалею. Мне будет не хватать вас, ребята.
Ну ладно, с лирически-грустной частью покончено. Теперь расскажу вам кое-что интересное.
А именно - о ключе 'e' в регулярных выражениях Perl. Тема эта для меня новая - не так уж и давно начал ее ковырять, поэтому если что - не обессудьте, буду рад выслушать всяческую критику, замечания и предложения.
Вот немного разобрался со своими проблемами - ушел на очередной околоземный виток в институте (я снова четверокурсник, хаха), нашел себе новую работу (программист python+django, аккурат то, о чем я мечтаю вот уже полгода как), сейчас дорабатываю две недели в "Докторе" и сваливаю.
Впечатления от почти двух лет работы: в общем, все было ок (а местами даже лучше, чем ок), не особо и жалуюсь. Коллектив отличный, режим работы неплохой, занятия не особо скучные (в основном, но бывают, конечно, рутинные места, хотя - где их нет?). Добираться от дома, опять же, достаточно удобно :]
Но. Была очень серьезная проблема, которую разрешить не удалось. О чем я искренне сожалею. Мне будет не хватать вас, ребята.
Ну ладно, с лирически-грустной частью покончено. Теперь расскажу вам кое-что интересное.
А именно - о ключе 'e' в регулярных выражениях Perl. Тема эта для меня новая - не так уж и давно начал ее ковырять, поэтому если что - не обессудьте, буду рад выслушать всяческую критику, замечания и предложения.
пятница, 4 июня 2010 г.
Наконец-то пост. О работе и всяком таком.
И снова я возвращаюсь сюда.
Из последних новостей - продолжаю разбираться в джанге, параллельно подтягиваю пайтон. Ищу работу - программист на Perl или Python. На Пайтоне, конечно, из разряда мечт - кто ж меня возьмет без опыта (точнее, с опытом, но с опытом перла, так сказать, хех). В общем, если кто это увидит и захочет мне чего предложить - милости прошу.
Установил для Emacs расширение yasnippet. Как я раньше без всего этого жил - скорость набора кода увеличилась в разы. Продолжаю запоминать собственные мнемоники. Очень удобно, сделал уже набор сниппетов для jQuery и для часто используемых перловых оборотов. Особенно понравилась возможность встраивать в сниппет elisp-код.
В планах на будущее - доосилить таки F#-сервер и заняться программированием всяких прикладных автоматизирующих рутинную работу штучек на пайтоне. Хочу попробовать IronPython, а также Stackless - мельком видел его, вроде достаточно интересен.
Такие вот наполеоновские планы, хехе.
Из последних новостей - продолжаю разбираться в джанге, параллельно подтягиваю пайтон. Ищу работу - программист на Perl или Python. На Пайтоне, конечно, из разряда мечт - кто ж меня возьмет без опыта (точнее, с опытом, но с опытом перла, так сказать, хех). В общем, если кто это увидит и захочет мне чего предложить - милости прошу.
Установил для Emacs расширение yasnippet. Как я раньше без всего этого жил - скорость набора кода увеличилась в разы. Продолжаю запоминать собственные мнемоники. Очень удобно, сделал уже набор сниппетов для jQuery и для часто используемых перловых оборотов. Особенно понравилась возможность встраивать в сниппет elisp-код.
В планах на будущее - доосилить таки F#-сервер и заняться программированием всяких прикладных автоматизирующих рутинную работу штучек на пайтоне. Хочу попробовать IronPython, а также Stackless - мельком видел его, вроде достаточно интересен.
Такие вот наполеоновские планы, хехе.
пятница, 7 мая 2010 г.
Last second save!
Давно не писал.
А все почему?
Да потому что нечего особо писать. Как будет что интересное - немедленно сообщу.
На следующей неделе начальник сваливает в отпуск на две недели, и я принимаю на себя весь нелегкий груз веб-программизма. Атлант, однако!
Вот такие дела.
А все почему?
Да потому что нечего особо писать. Как будет что интересное - немедленно сообщу.
На следующей неделе начальник сваливает в отпуск на две недели, и я принимаю на себя весь нелегкий груз веб-программизма. Атлант, однако!
Вот такие дела.
понедельник, 19 апреля 2010 г.
Метро 2033
Раз уж день пошел богатый на посты в блоге, продолжим, пока прет. Прошел "Метро 2033".
Конечно, наверное, на просторах интернета много камней кинуто в огород линейности-коридорности, но мне понравилось. Особенно понравилась атмосфера - виды разрушенной Москвы прямо как бальзам на душу (не подумайте плохого). Выйдя на поверхность с Боровицкой (в игре), сразу же узнал пейзаж, несмотря на разрушения. А уж эпизод с телебашней это вообще ух.
Такие дела. Крайней рекомендую. Книжка мне в свое время понравилась (вторая, кстати, как-то не очень была, а первая очень даже прилично).
Конечно, наверное, на просторах интернета много камней кинуто в огород линейности-коридорности, но мне понравилось. Особенно понравилась атмосфера - виды разрушенной Москвы прямо как бальзам на душу (не подумайте плохого). Выйдя на поверхность с Боровицкой (в игре), сразу же узнал пейзаж, несмотря на разрушения. А уж эпизод с телебашней это вообще ух.
Такие дела. Крайней рекомендую. Книжка мне в свое время понравилась (вторая, кстати, как-то не очень была, а первая очень даже прилично).
F# - красивая конструкция
Сижу, пишу сервер. Есть у меня две функции, которые принимают данные разных типов (String и byte array) и отправляют их в поток - первая, соответственно, для отправки клиенту текста (заголовки всякие, прочая белиберда), вторая - для отправки изображений и прочей бинарщины.
И вот, благодаря паттерн матчингу, их можно объединить:
Вот такая вот функция. Что радует - увеличившийся уровень абстракции - стоит появиться какому-нибудь новому типу, для которого нужен свой способ отправки - все, что нужно изменить - паттерн. Благодаря наличию Object на верхнем уровне мы можем совать какие угодно данные в функцию. Правда, тут стоит следить за наследованием - ведь проверка типов может не дойти до нашего "нового" типа. Поэтому наиболее частные типы следует размещать как можно раньше.
P.S. Кстати, в приведенном примере компилятор найдет изъян - не покрыты все паттерны. Дело лечится добавлением граничного случая
И вот, благодаря паттерн матчингу, их можно объединить:
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?".
Второе: "Неизменяемые переменные!"
Третье: "Круто, все так параллелится!"
Четвертое: "Что-то мне синтаксис напоминает..."
Пятое: "ПРОЛОГ?"
Второе: "Неизменяемые переменные!"
Третье: "Круто, все так параллелится!"
Четвертое: "Что-то мне синтаксис напоминает..."
Пятое: "ПРОЛОГ?"
Подписаться на:
Сообщения (Atom)

