Архив Ноябрь 8, Воскресенье, 2009

Убунтариум / Ubuntu 9.10 и catalyst: исправляем медленное развёртывание окна

Нет комментариев »

В свежеустановленной ubuntu у счастливых^Wпользователей проприетарного драйвера от ati(catalyst), при включенных эффектах, очень долго разворачивается окно. Для исправления нужно поставить «иксы» с патчем nobackflill(отключается инициализация фона). Это легко сделать:

  1. В /etc/apt/sources.list добавить:

    deb ppa.launchpad.net/launchpad-weyland/xserver-nobackfill/ubuntu karmic main
  2. Выполнить:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16E70E3E

    sudo aptitude update

    sudo aptitude upgrade
  3. Перезагрузить X сервер



на welinux.ru


Копирайт / Цена для подписчиков

Нет комментариев »

lib.rus.ec/ окончательно продался www.imobilco.ru/ (теперь при попытке скачать книгу идет перенаправление на последний, если данная книга на Аймобилке имеется, конечно).

Ладно, думаю, посмотрю что это за сервис. А смешной сервис:

image


Mozilla / У Firefox Mobile появился логотип

Нет комментариев »

Был конкурс на логотип, выиграл некий Yaroslaff Chekunov :-) что не может не радовать.

image

Ну и как вам?



Блог Mozilla

Претенденты


Веб 2.0 / Разрабатываем в облаках (WPF, ASP.NET, PHP)

Нет комментариев »

ss1 Много всего сейчас говорится об облачных вычислениях. О том, как удобно все хранить и обрабатывать где-то там — в облаках. У нас есть Google Docs для создания документации, скоро будет Microsoft Office Web 2010 Apps (на самом деле и сейчас уже можно пользоваться Excel и PowerPoint на live.com), так же мы уже можем хранить документы в облаках, вести контакты, календари, ну в общем все что только можно захотеть (или почти все?). И более того, на глаза мне недавно попался CodeRun – Web IDE.


Стартапы / Каковы стартапы на самом деле

Нет комментариев »

Представляю вашему вниманию перевод очередного замечательного эссе Пола Грэма What Startups Are Really Like.



Октябрь 2009

(Это эссе основано на выступлении в Школе Стартапов в 2009г.)



Я не знал о чем говорить в Школе Стартапов, поэтому я решил спросить создателей стартапов, которые мы профинансировали. О чем я еще не написал?



Я нахожусь в необычной ситуации, имея возможность проверить те эссе, которые я написал о стартапах. Надеюсь, что эссе на другие темы тоже верны, но у меня нет возможности их проверить. Эссе о стартапах проверяются 70 разными людьми каждые 6 месяцев.



Итак, я отправил всем основателям письмо, в котором спросил их, с какими неожиданными вещами они столкнулись, создавая стартап. Фактически, я спросил их, что я сам неправильно понимаю, потому что я все объяснил достаточно хорошо, и ничто не должно было их удивлять.



Я с гордостью могу сказать, что получил один ответ, который гласил:

Что больше всего меня удивило, так это то, что все действительно было довольно предсказуемо!



Плохая новость состоит в том, что я получил больше 100 других ответов с описаниями неожиданностей, с которыми столкнулись основатели стартапов.

Полученные ответы четко разбивались на несколько категорий; примечательно, как часто несколько человек были удивлены в точности одним и тем же.


C++ / STL Filter — скрипт для лаконичных ошибок STL

Нет комментариев »

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> >]





ну и еще пара десятков строк.



Спортивное программирование / HabraWars — альфа версия

Нет комментариев »

HabraWars



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



Для нормальной работы необходима свежая версия Firefox или Google Chrome. Возможно, будет также работать в Сафари, потому что она тоже полностью поддерживает тег canvas из HTML5 (буду рад помощи в тестировании и отладке).



Собственно, вот адрес: habrawars.appspot.com.



Сайт развернут на серверах корпорации Света и Добра, авторизация тоже через них.



Копирайт / Рассуждение о роли Государства в мультимедиа индустрии

Нет комментариев »

Дорогие хабралюди, сегодня мне хотелось бы обсудить с вами проблему копирайта в мультимедиа индустрии. Я говорю проблему, так как я действительно считаю, что в данной отрасли существует очень большая проблема, и дело не только в пиратстве, по-моему, сама система давно устарела и потеряла эффективность.



Итак, чтобы понять, как действует эта система сегодня, следует обратиться к истории.







Haskell / О монадических технологиях

Нет комментариев »

Кирпичёв правильно пишет про небрежность интуитивного понимания императивных языков: 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;



Потратим по паре абзацев на каждый пункт.


JAVA / RMI (Remote Method Invocation)

Нет комментариев »

Случилось так, что поставленная задача требовала применения удалённого вызова методов. Порывшись на Хабре, ничего не нашел по данному вопросу (хотелось что-нибудь почитать в качестве первого знакомства, перед чтением документации). Изучив спецификации на java.sun.com спешу поделиться с вами своей первой статьей. :)


«Что такое RMI?»



Remote method Invocation — механизм, который позволяет вызывать метод удалённого объекта. Согласно ему, все операции по подготовке и передаче данных инкапсулируются в вызываемом методе клиентского объекта-заглушки (stub). Сам же вызов метода ничем не отличается от вызова метода обычного локального объекта, за небольшим исключением:

  • все параметры передаются по значению (т.е. копии объектов, а не ссылки на них, как это обычно происходит)
  • передаваемые объекты должны быть Serializable
  • кроме всех прочих исключительных ситуаций, при вызове удалённого метода может возбуждаться исключение RemoteException (ошибки маршализации/демаршализации, передачи данных и другие возможные ошибки протокола)

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