Обо мне

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

понедельник, 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?".
Второе: "Неизменяемые переменные!"
Третье: "Круто, все так параллелится!"
Четвертое: "Что-то мне синтаксис напоминает..."
Пятое: "ПРОЛОГ?"

О нежданной пользе старинных технологий.

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

А пользовался бы КПК или телефоном для тех же целей - не было бы у меня сейчас полтинника.

воскресенье, 11 апреля 2010 г.

Лекция в политехе.

Был в среду на лекции "Эволюция искусственного интеллекта" в Политехническом музее.

Лекция проходила в Большой аудитории. На подобном мероприятии в политехе был впервые, а в самом политехе - в третий раз в жизни :]

В общем, пришел, сел. Пришел за 5 минут до начала (то бишь без пяти восемь). Народу было где-то половина аудитории. К тому моменту, когда началась лекция (началась она с опозданием на 10 минут) - был уже почти полный зал (только несколько верхних рядов были заполнены наполовину.

Итак, собственно про лекцию. Я по ходу делал кое-какие заметки, сейчас по ним попробую восстановить. Если что забыл - не обессудьте.


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

F# web server, текущая картина.

Итак, на данный момент имеется:

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

Однако взглянул я в код, и кое-что мне не понравилось. Чтобы добавить новые функции, слишком много надо курочить.

И решил я его переделать.

Сегодня займусь.