Показаны сообщения с ярлыком software. Показать все сообщения
Показаны сообщения с ярлыком software. Показать все сообщения

24 дек. 2011 г.

Static Code Analysis

Наткнулся на заметку Кармарка о статическом анализе кода написанную после выхода Rage.

Вот некоторые цитаты:
"There was a paper recently that noted that all of the various code quality metrics correlated at least as strongly with code size as error rate, making code size alone give essentially the same error predicting ability. Shrink your important code."
"If you aren’t deeply frightened about all the additional issues raised by concurrency, you aren’t thinking about it hard enough."
И особенно доставила вставка в конце:
@dave_revell The more I push code through static analysis, the more I’m amazed that computers boot at all.

17 апр. 2011 г.

Ковыряние. Eventmachine vs Erlang.


Завтра у меня *большая и важная контрольная* по конструлям потому я зачем-то страдаю херней и решил наконец напостить в бложик. Тем более что есть о чем.



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

На чем же писать асинхронный TCP сервер с потенциалом на несколько сотен, а то и тысяч, подключений? Поскольку пистон я не люблю выбор оказался между Eventmachine и Erlang. 

Helloworld'ы на eventmachine это действительно просто и сравнительно понятно. Сложная логика быстро превращается в спагетти из callback'ов. С этим приходиться бороться и даже иногда получается. Впрочем это проблема не столько Eventmachine, сколько event-based подхода вообще – тем же страдает Node.js (впрочем Node еще много чем страдает :) )

Поскольку цели сделать финальный вариант не было, а OTP я не знаю, то решил без него. Заодно Erlang лучше "распробовал".

Erlang вполне ожидаемо выиграл и по производительности (почти линейно размазывается по ядрам, можно еще по нодам, но я не пробовал) и по прямолинейности кода (отсутствию callback'ов и конечных автоматов). Синтаксис по-началу заставляет тосковать по оному в Haskell, и похоже не только меня. Но быстро привыкаешь. Есть ощущение что по-дороге изобрел немного OTP.

Когда уже закончил с Erlang версией сервера увидел Revactor. Можно лечить спагетти ценой ограничения кол-ва поддерживаемых платформ (только Ruby 1.9+), но императивную семантику Ruby все равно в мешке не утаишь. Производительность тоже, хотя 1.9 в этом плане получше. Насколько я понял автор сабжа полузабил и ушел делать Reia.

При желании перед Ruby скрыптами можно поставить load-balancer и получить горизонтальную масштабируемость, еще через это можно обновлять код сервров за балансировщиком по-очереди, создавая видимость горячей замены кода. Но это более костыльное решение чем большой и счастливый Erlang всему. Тем более, что при использовании OTP эти ништяки получаются совсем сами собой (без OTP надо следовать некоторым соглашениям).

Для полноты картины надо поиграть в асинхронную монаду (Haskell) и продолжения (Scheme). Предполагаю, что Haskell будет удобнее для front-end'а, Erlang для back-end'а. А Scheme неплоха и там и там, но медленнее обоих.

З.Ы.: У меня окончательно вызрела идея давно обещанной библиотеки анимации на JS. Надеюсь доживет в голове до лета.
З.З.Ы.: Старый добрый "Пушистик" получил воторое рождение на HackDay.
З.З.З.Ы.: Быть может скоро напостю про курсовик и Android vs iPhone

15 июл. 2010 г.

Textual defecation

Что-то давненько я не ходил в бложик по-большому :)

Итак: на кафедру АЯ – попал, притом на желанный семинар, на отличные концерты (DSO и Xandria) сходил (кому интересно – в интернетах полно отчетов и фото), сессию закрыл (как ни странно чем меньше парюсь, тем лучше сдаю), на работу устроился (пограммистом под iOS, чсх – выцепили меня в контактике – вот уж от чего пользы не ожидал).

Заимел в пользование MacBookPro 13" (рабочий, охуительный девайс) и бас Ibanez ^_^ (от знакомых, видимо куплю с зарплаты).

Ощущения от MacOS X – вцелом все удобно и хорошо, но не без проблем. Действительно почти идеальная ось для повседневных задач, большая часть неудобств была связанна с непривычностью, теперь комфортно.
Самый шикарный охуец: нету никакой галки чтобы ноут не засыпал при закрытии крышки (но если подключить моник – не засыпает). Решинем стала InsomniaX, несчастная софтина устнанавливает модуль ядра, что какбы намекает на степень костльности решения.
Guake мне заменил Visor. Отдельно отмечу Better Touch Tool, которая позволяет по-настоящему утилизовать возможности тачпэда. Quicksilver какой-то глючный, да и спотлайт его почти заменяет. Доставляет остутствие Cmd-X в Finder от того, что это противоречит философским воззрениям Ябла :)
Не хватет полноценного менеджера пакетов, впрочем есть сторонние решения.

iTunes тема отдельная, ибо количество анальных гвоздей зашкаливает, особенно в момент подключения я-планшетки. Попробовал переползти на Songbird, тот оказался тормозным и глючным (xulrunner жеж), но оч классно интегрировался с last.fm и прочими около музыкальными интернетами (xulrunner жеж). Хныкая уполз обратно к Тунцу. И тут меня поджидал ещё один охуец - вместо плагнов и скриптов большинство обвесов являет собой отдельные софтинки висящие в системе и взаимодействующие с тунцом через его pubic API (кстати очень многоие приложения для мака могут управляться Apple Script'ом как раз через подобный API). Некоторые умеют запускаться и убиваться вместе с тунцом, что приятно.
Нашел маленький, уютный скробблер, который так же умеет выводить нотификации. Нашел ещё кучу всякого прикольного, но бесполезного для меня.
А вот со стягиванием обложек все как-то очень грустно – из всех что я нашел – только один платный умеет стягивать с ласта обложки для моей (видимо слишком экзотической для стягивалок с амазона) коллекции, но он платный и перегруженый. Потому взялся вечерами пилить свой. Через час полностью заработал, но пока управляется правками кода, а допиливать некогда, как только доведу до адекватного состояния - выложу на гуглокод.

Да, с инструменатами для разработки проблем не обнаружено, многое уже есть в пакетике для девелоперов, чего нет – нетрудно доставить, unix жеж.

Из того, чем духовно обогатился могу посоветовать: Caprice, Carnival in Coal, The Vision Bleak, Mr. Nobody, Star Trek TOS, Первые книги про Ведьмака (Анжей Сапковский), Игра про ведьмака (The Witcher)

6 апр. 2010 г.

Как сломать vim шаблонной магией

Симптомы:
Пишу в vim'е  objname. в момент написания точки vim, консолька а потом и весь гуй повисают.
Жму Ctrl+Alt+F1 через ~минуту вижу черноту текстовой консоли. Логинюсь. Отстает даже ввод текста в текстовом терминале. Таки умудряюсь глянуть top, узреть что все сожрал именно vim. Снимаю его. Переключаюсь обратно в графику. Наступаю снова на те же грабли. Снова привожу все в порядок. Догадываюсь наконец что происходит. Добиваюсь своего :)

Что происходило:
Vim у меня настроен таким образом, что если сгенерированы теги, он пытается провернуть code completion. Точка после слова в cpp файле - один из триггеров. В коде шаманский рекурсивно определенный класс-шаблон вида:

tempate <class T>
class A: public A<T> {
 ...
};

template <>
class A<NullT> { 
};

Означенный объект как раз этого чудо-класса. Vim, пытаясь предложить возможные варианты уходит все глубже и глубже в это наследование, которое несчастному редактору кажется вечным, ведь в его обязанности не входит разбираться со специализациями. Хотя разрабы могли бы хоть ограничение на поиск воткнуть. Быть может соберусь с силами и починю vim :)
Такие дела.

8 февр. 2010 г.

Ruby & Co

Во-первых решил запилить на Ruby обработку медиатеки. Успешно написал стягивание обложек с ласта. Дальше чего-то забил.

Во-вторых по случаю поднял дома сервак из ешки (apache + passenger -> redmine) и сделал внешний IP.
Выводы: redmine рулит. Не ставте passenger из репозитариев ubuntu =) Не пользуйте горком =)

Маленькие Открытия

Музыка
Благодаря Last.fm нашел и подсел:

  1. Diablo Swing Orchestra
  2. Akphaezya
  3. Unexpect
Это всё авангардные металлы.

Посмотрел

  1. Зелёная Миля - отличненько.
  2. Avatar 3D - сюжет банален, но потрясающе сделанный мир. Оно того стоит.
  3. Досмотрел таки второй сезон Code Geass. No comments ;)
  4. Aoi Bungaku Series - аниме-экранизация японской классики. Очень хорошо. А на фоне, того шлака рядом с которым оно вышло, просто гениально =)
  5. Мой сосед тотторо - Миядзаки, этим всё сказано
  6. Какое-то блядски тупое гаремное онеме  про Красную ночь, человеокв - кусков и парня с золотым убер-глазом-стохастическим-анализатором. Пожалел потраченнное время.
  7. Человек Дождя - ох не зря оно в топе на кинопоиске.
  8. Властелин колец реж.версия. - круто, но вконец затянуто.
  9. Все умрут, а я останусь - быдло такое быдло. хуже треша лучше нет. шикарно.
  10. Школолололололо - посмотрел несколько серий. Примечательно то, что все до одного герои не вызывают ничего кроме отвращения, неподдельного. Камера а-ля "снмало школие на мобилу" решение сомнительное. Вначале казалось, что смотреть можно, потом осознал, что нельзя. Плохо, что во многом показанное правда (не во всех школах разумеется) .
  11. Черная летающая хуйня  - черная летающая хуйня. Русский спидер-мен бессмысленный и беспощадный.
 Играл

  1. Dead space - забавно поначалу, не осилил до конца, бо наскучило
  2. Overlord 2 - поначалу гениально (в первую часть не играл), потом заскучал.
  3. Thief 3 - запоем за 3-4 суток.
  4. Mass Effect - запоем за двое суток. Наверное хотел бы ещё разок. Подумываю о второй части.
    Что, характерно, там есть солнечная система, в которой всё названо в честь славянских богов
Софт
  1. Kupfer - аналог quicksilver. Много удобнее обычного окна выскакивающего по alt-f2
  2. Google Chrome - очень быстрый, годый броузер от сами знаете кого. Правда пока есть глюки. Но огнелис опасносте. 
  3. Redmine - вкусненький СУПчик