CHANGES.TXT:
1. Почти дописал систему для распределённой сборки проектов с помощью Maven'a.
На это почти потратил два полных выходных. Вкратце как работает: есть клиенты, которые осуществляют сборку. К ним по JMS приходит сообщение о том что нужно собирать. КОгда сборка окончена они отсылают сообщение что закончили и тайминги сборки. Центральный сервак анализирует приходящие ответы и обновляет build plan сборки, рассылая информацию о тех артефактах которые нужно собираться. Для поиска зависимых библиотек (один клиент собрал библиотеку а другой должен её включить в buildpath чтобы собрать свою) поднял ftp сервак и все клиенты качают что им надо оттуда. Соответственно и результаты сборки выкладывают туда.
Думал ещё над вычислительным облаком, когда есть только клиенты которые слушают очередь сообщений и через одну эту очередь общаются между собой. Вкратце: клиент получает сообщение о сборке такого то артефакта. Он смотрит на артефакт и видит: ага. он зависит от ещё не собранных артефактов и посылает сообщения в очередь о тех артефактах которые должны быть собраны. Как только к нему или к какому то другому клиенту приходит сообщение о сборке артефакта, который не зависит ни от каких других или все остальные уже собраны, то выполняется сборка артефакта. После сборки отсылается сообщение сигнализирующее о том что артефакт собран. Если клиенту приходит сообщение о том что артефакт собран, то он смотрит на "родителя" или зависимые от него библиотеки, если они все собраны то он собирает родителя. Элегантно. Просто. Но не сработает без грязного хака - отсылать в каждом сообщении информацию о состоянии сборки дерева артефактов.
При этом полдня разбирался как запустить maven из приложения, чтобы снять временные замеры. Детишки. Никогда. Повторяю никогда не используйте classworlds без суровой на то необходимости. В особенности в тандэме с IoC от plexus. Я пытался полдня разобраться как это работает и как сделать так чтобы у меня это заработало. Не получилось. Пошёл самым простым способом: посмотрел какой класс запускается батником maven'a декомпельнул его и скопипастил к себе в проект. Пока работает. Единственный минус в том, что плагины которые используют Log4j и которые загружаются через classworlds не позволяют использовать log4j у себя в проекте. Ибо по какому то хитрому стечению обстоятельств иерархия класслоадеров inconsistent :/
Ещё пара часов потратил как сделать как бы load balancing с помощью JMS. Оказывается по умолчанию большинство JMS Provider's (как и сановский в glassfish) посылают до 3 сообщений сразу одному клиенту. В принципе когда клиентов мало а сообщений много больше, эта штука сработает. Чтобы каждому клиенту отсылалось одно сообщение из очереди нужно оказывается указать такие очевидные параметры как imqConsumerFlowThreshold в 0, a imqConsumerFlowLimit в 1.
Будет работать только для ограниченного количества проектов.
2. Покатал на роликах на городу. Он такой маленький. Такой грязный. С таким ужасным асфальтом, что собрав волю в кулак я смог его объехать примерно за час. Колёса сточились до неузнаваемости, а подшипники скрипят. Так что в ближайшее время вряд ли поеду кататься.
//TODO заехать за подшипниками
3. Ээээ. Хотелось, но переживу. Оревуар.
4. Ах да. Решил посмотреть скачанные фильмы за последний месяц. Унылое...сам знаю что.
Звёздные врата: ковчег чего то там. - трэш какой то. После первых 5 минут просмотра сложилось стойкое ощущение того что это 47 серия из сериала про звёздные врата.
Глаз - местами страшно, но это наверное только потому что я не фанат ужасов и редко их смотрю. Еле уломал себя досмотреть до конца.
CJ7 - местами смешно, но опять же в каком то дурацком стиле вроде "шары ярости", "какой то там футбол". Детям можно смотреть.
Хортон - уши у него забавные, но так до конца и не досмотрел. Сюжет трешовый. Детский фильм.
Трудно быть богом - ожидал увидеть пейзажи каких нить пустынь с бестолковыми декорациями и увидел пейзажи каких то пустынь с бестолковыми декорациями.
Вся надежда на "Майкл Клейтон". Вроде оскара получил.
5. Родители уехали, сеструха тоже. А кому то ведь надо доедать торт! Сижу, давлюсь, но доедаю :(