Архив Ноябрь 8, Воскресенье, 2009
Ноябрь 8, Воскресенье, 2009
В свежеустановленной ubuntu у счастливых^Wпользователей проприетарного драйвера от ati(catalyst), при включенных эффектах, очень долго разворачивается окно. Для исправления нужно поставить «иксы» с патчем nobackflill(отключается инициализация фона). Это легко сделать:
- В /etc/apt/sources.list добавить:
deb ppa.launchpad.net/launchpad-weyland/xserver-nobackfill/ubuntu karmic main
- Выполнить:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16E70E3E
sudo aptitude update
sudo aptitude upgrade
- Перезагрузить X сервер
на welinux.ru
Ноябрь 8, Воскресенье, 2009
lib.rus.ec/ окончательно продался www.imobilco.ru/ (теперь при попытке скачать книгу идет перенаправление на последний, если данная книга на Аймобилке имеется, конечно).
Ладно, думаю, посмотрю что это за сервис. А смешной сервис:

Ноябрь 8, Воскресенье, 2009
Был конкурс на логотип, выиграл некий Yaroslaff Chekunov
что не может не радовать.

Ну и как вам?
Блог Mozilla
Претенденты
Ноябрь 8, Воскресенье, 2009
Много всего сейчас говорится об облачных вычислениях. О том, как удобно все хранить и обрабатывать где-то там — в облаках. У нас есть Google Docs для создания документации, скоро будет Microsoft Office Web 2010 Apps (на самом деле и сейчас уже можно пользоваться Excel и PowerPoint на live.com), так же мы уже можем хранить документы в облаках, вести контакты, календари, ну в общем все что только можно захотеть (или почти все?). И более того, на глаза мне недавно попался CodeRun – Web IDE.
Ноябрь 8, Воскресенье, 2009
Представляю вашему вниманию перевод очередного замечательного эссе Пола Грэма What Startups Are Really Like.
Октябрь 2009
(Это эссе основано на выступлении в Школе Стартапов в 2009г.)
Я не знал о чем говорить в Школе Стартапов, поэтому я решил спросить создателей стартапов, которые мы профинансировали. О чем я еще не написал?
Я нахожусь в необычной ситуации, имея возможность проверить те эссе, которые я написал о стартапах. Надеюсь, что эссе на другие темы тоже верны, но у меня нет возможности их проверить. Эссе о стартапах проверяются 70 разными людьми каждые 6 месяцев.
Итак, я отправил всем основателям письмо, в котором спросил их, с какими неожиданными вещами они столкнулись, создавая стартап. Фактически, я спросил их, что я сам неправильно понимаю, потому что я все объяснил достаточно хорошо, и ничто не должно было их удивлять.
Я с гордостью могу сказать, что получил один ответ, который гласил:
Что больше всего меня удивило, так это то, что все действительно было довольно предсказуемо!
Плохая новость состоит в том, что я получил больше 100 других ответов с описаниями неожиданностей, с которыми столкнулись основатели стартапов.
Полученные ответы четко разбивались на несколько категорий; примечательно, как часто несколько человек были удивлены в точности одним и тем же.
Ноябрь 8, Воскресенье, 2009
STL славится своей способностью заполнять метры экранного пространства сообщениями об ошибках. Надоело смотреть на экран и видеть перлы вроде:
testmap.cpp:25: error: no matching function for call to ‘std::map<int, double, std::less, std::allocator<std::pair<const int, double> > >::map(int, int, int)’
/usr/include/c++/4.3/bits/stl_map.h:175: note: candidates are: std::map<_Key, _Tp, _Compare, _Alloc>::map(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]
/usr/include/c++/4.3/bits/stl_map.h:165: note: std::map<_Key, _Tp, _Compare, _Alloc>::map(const _Compare&, const _Alloc&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]
ну и еще пара десятков строк.
Ноябрь 8, Воскресенье, 2009

Позавчера я озвучил идею создания игры для программистов и проведения соревнования среди хабражителей. Идея стала популярной, а я, как и обещал, выкладываю первую (очень сырую) версию симулятора.
Для нормальной работы необходима свежая версия Firefox или Google Chrome. Возможно, будет также работать в Сафари, потому что она тоже полностью поддерживает тег canvas из HTML5 (буду рад помощи в тестировании и отладке).
Собственно, вот адрес: habrawars.appspot.com.
Сайт развернут на серверах корпорации Света и Добра, авторизация тоже через них.
Ноябрь 8, Воскресенье, 2009
Дорогие хабралюди, сегодня мне хотелось бы обсудить с вами проблему копирайта в мультимедиа индустрии. Я говорю проблему, так как я действительно считаю, что в данной отрасли существует очень большая проблема, и дело не только в пиратстве, по-моему, сама система давно устарела и потеряла эффективность.
Итак, чтобы понять, как действует эта система сегодня, следует обратиться к истории.

Ноябрь 8, Воскресенье, 2009
Кирпичёв правильно пишет про небрежность интуитивного понимания императивных языков: http://antilamer.livejournal.com/300607.html.
Однако, мне кажется, что важно было бы озвучить, что всё то, что сейчас скрывается под именем «монада» — само по себе достаточно спутанно в плане педагогики и евангелизма. Классическая шутка SPJ/Вадлера звучит как «нам следовало назвать ЭТО warm fuzzy things, чтобы не пугать людей теоркатом». Шутка поразительно недальновидная. Проблема лежит в той же плоскости, что и называние стоящих перед тобой задач словом «stuff» (это то, с чем борется Аллен в своём GTD).
Монады в настоящий момент являются миру как сложный ком из исторически обусловленных причин, проблем, решений, технических возможностей и теоретических основ (как алгебраических, так и аспектов теории вычислений).
Все эти наслоения можно (и нужно) расщепить в первом приближении так (порядок приблизительно случайный):
- стремление к экспликации эффектов (чистое внедрение императивно-подобных моментов в вычисление), (см. труды Вадлера); здесь мы включаем ввод-вывод, STM, параллельные вычисления и проч.)
- удобный механизм для материализации базовых микро-стратегий вычисления — вызов функции (call-by-name/call-by-value), многозначность, смена состояния (присваивания!), обработка исключений, останов при неудаче, continuations, бэктрекинг;
- typeclasses как механизм внесения монад в язык, и как следствие — удобный механизм для мета-перехвата вычисления (невероятно удобно для domain-specific embedded languages);
- строгая проверка типов, проистекающая из использования typeclasses, и позволяющая механически проверять корректность использования объектов;
- существование монадических законов, в которые укладываются монады, что позволяет материализовывать абстрактные комбинаторы; это позволяет находить порой неожиданные изоморфизмы между различными предметными областями, а также помогает при оптимизации и верификации программ;
- проработанная теоретическая основа (теория категорий), на которой базируются монады; это облегчает жизнь создателям базовых библиотек, на которых потом базируется всё реальное программирование;
- монады — лишь один из классов в длинной цепочке интересных алгебраически обусловленных классов, некоторые из которых слабее монад, а некоторые — сильнее: Functor, Applicative, Monoid, Traversable, Foldable, Monad со товарищи, Arrow со товарищи;
- стремление к материализации некоторых видов вычислений в алгебраическую структуру (моноидальные вычисления); это открывает широкий простор для оптимизаций, верификации программ, создания абстрактных комбинаторов, а также устранение unbounded recursion — по мощности результатов это похоже на то, как когда-то ввод-вывод был надежно изолирован в IO Monad;
Потратим по паре абзацев на каждый пункт.
Ноябрь 8, Воскресенье, 2009
Случилось так, что поставленная задача требовала применения удалённого вызова методов. Порывшись на Хабре, ничего не нашел по данному вопросу (хотелось что-нибудь почитать в качестве первого знакомства, перед чтением документации). Изучив спецификации на java.sun.com спешу поделиться с вами своей первой статьей.
«Что такое RMI?»
Remote method Invocation — механизм, который позволяет вызывать метод удалённого объекта. Согласно ему, все операции по подготовке и передаче данных инкапсулируются в вызываемом методе клиентского объекта-заглушки (stub). Сам же вызов метода ничем не отличается от вызова метода обычного локального объекта, за небольшим исключением:
- все параметры передаются по значению (т.е. копии объектов, а не ссылки на них, как это обычно происходит)
- передаваемые объекты должны быть Serializable
- кроме всех прочих исключительных ситуаций, при вызове удалённого метода может возбуждаться исключение RemoteException (ошибки маршализации/демаршализации, передачи данных и другие возможные ошибки протокола)
Так же нужно отметить, что при вызове метода мы работаем с удалённым интерфейсом, а не с удалённым классом.