You are viewing [info]nikelin's journal

Ложь: Красные и чёрные


Поиграл вчера в Мафию в первый раз в клубе Val & Jee. Попал я туда совсем случайно и неожиданно (сразу после корпоратива), но всё было очень даже мило и приятно.

В особенности, атмосфера декаданса царящая в этот период (с 00:00 до 03:00) в ресторане Революция на Новокузнецкой. Кроме того, завораживает сам процесс игры, её атрибутика, харихма участников игры, которую так прекрасно ведёт Валерией Мнацаканян. Короче, всем советую хотя бы раз сходить именно в этот клуб. К тому же, стоимость участия вполне себе символическая.

Не буду особенно вдаваться в подробности, но мне понравилось. Но только две вещи я пока не могу понять до конца:
1. Как люди могут так не смущаясь откровенно врать и можно ли этому научится?
2. Как из ничего можно составить речь на целую минуту?

И вот сейчас я думаю, может и в нашем "особняке" ввести практику проведения ламповых вечеров игры в Мафию?
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

May. 5th, 2012


Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?



Как же охуительно в Печали звучит гитара.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Apr. 19th, 2012


Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Apr. 12th, 2012

Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Пока ещё жив


Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Трансформация


Сегодня наконец-то решил старую проблему, для которой ещё давно пытался найти выход, но тогда ограничился полумерой, а потом и вовсе забил.

Суть проблемы в целом проста. Может для кого-то и решение прям с ходу кажется очевидным. Заключается она в нахождении такого решения, которое позволило бы трансформировать одну древовидную структуру в другую, учитывая циклические зависимости между её элементами. Это в общем.

В частности же всё намного проще (или сложнее): превратить один Java-объект в другой, с возможностью обратного действия. При этом, следует учитывая, что поля этого самого объекта могут быть: простыми объектами, ссылочными типами (ссылаться на другие составные объекты либо же на сам объект) и списками.
Применений куча: генерация UI-объектов на основе объектов их моделей, преобразование объектов из БД в объекты данных (DTO, модели), т.д.

Я же столкнулся со второй ситуацией. Так, у меня была потребность внутренние объекты одного из участников системы преобразовывать в объекты данных, доступные всем.

В итоге вышло вот так:
https://github.com/nikelin/Redshape-AS/tree/3.1.0/persistence/persistence-parent/src/main/java/com/redshape/persistence/entities/DtoUtils.java

Коротко:
*. Заводится глобальный счётчик обращение к которому производится внутри каждого рекурсивного вызова
*.а Вход в метод toDTO/fromDTO увеличивает счётчик на единицу
*.б Выход из метода toDTO/fromDTO уменьшает счётчик на единицу
1. Объект рекурсивно обрабатываться
2. Каждое значение, к которому должна применяться операция трансформации, помещается в список объектов, находящихся в обработке
3.а Если объект является трансформируемым, к нему рекурсивно применяется операция трансформации
3.б Если объект является списком, то к каждому из его элементов рекурсивно применяется операция трансформации, если они являются трансформируемыми
3.в Если объект имеет является нетрансформируемым, обработка к нему не применяется и в результирующей структуре он сохраняется в неизменном виде
3.г Если значение поля объекта в данный момент находится в процессе трансформации (обработки), то значение, само свойство и трансформируемый объект сохраняются в списке свойств для отложенной инициализации
4. После завершения процессинга объекта (если уровень рекурсии равен нулю) происходит инициализация всех полей объектов, добавленных к списку для отложенной обработки
5. Возвращаем результирующий объект

В целом всё достаточно обобщённо. В самом коде на основной смысл немного накладывается отпечаток БД-специфики, но совсем небольшой.

Первый вариант решения, который я написал ещё прошлой весной при генерации UI по объектам данных, имел весьма печальный недостаток - отложенная обработка проводилась не по отношению к конкретному объекту, а к целому классу объектов, последствия чего не сложно представить.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Ночь темна, бежит дорога, катится луна,
От порога и до Бога ночь темна.
Словно птица, ночь кружится, я тебе спою.
Пусть тебя оставит грусть в том краю.
На краю...
Пусть тебя оставит грусть на краю.
В том краю...
Пусть тебя оставит грусть

Тёмной ночью в тёмном небе чёрная луна.
Ты один и я одна, ночь темна.
Ночь темна...
Ты один, я одна, ночь темна.
Ночь темна...
Ты один, я одна...

Ярче дня взлетает птица, падает, звеня
Не найти тебе пути без меня
Без меня
Не найти тебе пути без меня
Без меня
Не найти тебе пути

Не проститься, не забыться, спи, усни, пока
Не найти тебе пути, не найти.
Не найти...
Не найти тебе пути, не найти
Не найти...
Не найти тебе пути, не найти

Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Apr. 6th, 2012


Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Несезон


...Приехать к морю в несезон,
помимо матерьяльных выгод,
имеет тот еще резон,
что это - временный, но выход
за скобки года, из ворот
тюрьмы. Посмеиваясь криво,
пусть Время взяток не берет -
Пространство, друг, сребролюбиво!
Орел двугривенника прав,
четыре времени поправ!

Здесь виноградники с холма
бегут темно-зеленым туком.
Хозяйки белые дома
здесь топят розоватым буком.
Петух вечерний голосит.
Крутя замедленное сальто,
луна разбиться не грозит
о гладь щербатую асфальта:
ее и тьму других светил
залив бы с легкостью вместил.

Когда так много позади
всего, в особенности - горя,
поддержки чьей-нибудь не жди,
сядь в поезд, высадись у моря.
Оно обширнее. Оно
и глубже. Это превосходство -
не слишком радостное. Но
уж если чувствовать сиротство,
то лучше в тех местах, чей вид
волнует, нежели язвит.

Отрывок из "С видом на море"
И. Бродский
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

От себя


Наиболее раздражает меня наблюдать за людьми, которые искренно уверены, что они делают что-то действительно полезное и незаменимое, ничего полезного при это в целом на свет не производя.
И как же они ещё и кичатся при этом! Я вообще не понимаю, где они столько пафоса-то вообще берут.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Конфигурации


Вот сейчас столкнулся с тем, что проект уже нормально не собирается в со всеми модулями, подая на CloudBees с PermGen. Поскольку, компиляция GWT всё-таки потребляет не мало, а то и слишком много памяти, которой в условии бесплатного cloud-хостинга как-то просто критически мало.

Не имея возможности что-либо исправить в логике CloudBees таки пришлось ввести в проекте конфигурируемую комплектацию сборки через профили. Пока не знаю, насколько это геморно будет в последствии и сколько проблем породит, но вроде пока нормально.

Порадовало, что проблема в Maven в принципе просто решается и в целом - так и должно быть, ибо зачем бесцельно тратить ресурсы времени и мощности ковереера сборки, если тебе не нужно сейчас собирать GWT-версия, а нужна Swing?

Вот.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Jelastic vs Cloudbees


Всё-таки сырой ещё Jelastic. И даже не то, что под него нужно затачивать, а хотя бы то, что вот уже 2-й день хуй знает почему на него не закачиваются артефакты - ни через API, ни через сайт.
А, собственно, началось это всё после введения ими явного разделения на Servint и Dogado (раньше это было как-то иначе, потому что часть народа висели на http://api.jelastic.com/ ).

Вообщем, если выбирать, то CloudBees ( http://cloudbees.net/ ) сейчас кажется гораздо более "готовой", к тому же они предлагают всё то же, что и Jelastic. Правда без всяких модных заточек типа Nginx-фронтенда, настраиваемого балансинга и т.д.

Но!
1) У них функционирует полноценная Develop-Build-Deploy схема
2) Под них нужна минимальная заточка
3) Так же есть вполне разумный бесплатный тариф
4) Цены для небольших объёмов нагрузки так же вполне доступны (на Jelastic же совсем непонятно, чего ждать)
5) Присутствует интеграция как с Ant, так и с Maven-проектами
6) Есть полноценный SDK для управления конфигурацией платформы и созданием новых профилей приложений, которого, кстати, до сих пор нет у Jelastic
7) Интеграция учётных данных между отдельными компонентами системы через ssh-ключи

Если уже говорить в деталях, то Jelastic как минимум кажется немного непродуманным. Как-будто, они вносят некоторые фичи, не до конца разобравшись в специфике их использования.
Ну вот зачем нужен GIT-репозиторий, авторизация в котором происходит по логину и паролю? Да, не нужен.
Зачем отображать пользователю подробности по текущим процессам, если их нельзя отменить?
Какой смысл вводить поддержку сразу 3-х серверов приложений, если все они работают криво и не единообразно. Так, в случае с Jetty вообще нет возможности получить доступ к директории с запущенными приложениями, как в случае с остальными 2-мя.
Glassfish - вообще отдельная тема. Зачем он нужен в формате Cloud-плафтормы? Не понятно.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Apr. 1st, 2012


Когда теряет равновесие
твое сознание усталое,
когда ступеньки этой лестницы
уходят из под ног,
как палуба,
когда плюет на человечество
твое ночное одиночество, --

ты можешь
размышлять о вечности
и сомневаться в непорочности
идей, гипотез, восприятия
произведения искусства,
и -- кстати -- самого зачатия
Мадонной сына Иисуса.

Но лучше поклоняться данности
с глубокими ее могилами,
которые потом,
за давностью,
покажутся такими милыми.
Да.
Лучше поклоняться данности
с короткими ее дорогами,
которые потом
до странности
покажутся тебе
широкими,
покажутся большими,
пыльными,
усеянными компромиссами,
покажутся большими крыльями,
покажутся большими птицами.

Да. Лучше поклонятся данности
с убогими ее мерилами,
которые потом до крайности,
послужат для тебя перилами
(хотя и не особо чистыми),
удерживающими в равновесии
твои хромающие истины
на этой выщербленной лестнице.

Йосиф Бродский
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Ни заревом нежен


Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

...суть. Ага!


Переоценка ценностей привела к следующим выводам:
1. Фёдоров - неинтересен.
2. Озёрский - бог.
3. Хлебников - бог.
4. Под Windows можно разрабатывать Java-проекты.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Поигравшись с Jelastic я внезапно осознал, чего мне нехватает просто очень и очень сильно - нормальной работы с профилями переменных, которые бы динамически выбирались бы Maven-ом.

Вообще, первым шагом в оптимизации процесса разработки было создание архетипа для новых проектов, необходимость в котором в последнее время всё более и более насущна - http://github.com/nikelin/Redshape-Web-Archetype.

Но, его проблема была в том, что пусть он и позволяет конфигурировать проект динамически, но вся эта динамика исчезает после того, как проект успешно сгенерирован. Генерировались всё-таки статические значения, при чём такие, что существовали они не только в рамках pom.xml.

Это не плохо, поскольку там делают почти все, но с другой стороны, как только появляется необходимость выкатить версию в продакшн либо сделать промежуточный релиз, появляется необходимость править множество конфигурационных файлов. Чаще всего править их приходится уже и на продакшене, поскольку как ни крути - я постоянно о чём-то забываю.

И вот если значения из всех этих файлов конфигурации перенести в единое место, которым вполне может стать файла конфигурации проекта (pom.xml) мы получаем качественно новую схему работы с переменными. Всю рутинную работу сделают за вас фильтры ресурсов Maven.

Проблемы решаемые на этом этапе очевидны, однако тут появляется одна значительная проблема, которая в ряде случаев может перечеркнуть все плюсы вышеописанного решения: фильтры - это хорошо, но на лету править файлики уже не получится, потому что для их функционирования, их прежде нужно обработать этими самыми Maven-фильтрами. Так, уже не получится поработать в режиме jetty:run с правкой JSP-файлов на лету. Это особенно печалит.

Но опять таки, Java ведь всё-таки не PHP. Да, и проблема-то решаема, если очень-очень сильно захотеть помочь себе и людям.

В итоге, у меня получается примерно такая модель ведения проектов:
-> Генерация архетипа - создаётся базовая модель проекта; от пользователя получаются основные настройки, сохраняемые в pom.xml
-> Разделение проекта на несколько профилей, с базовыми - dev и production
-> Каждый новый релиз хранится в отдельной ветке
-> Релизами управляет maven-release-plugin

Учитывая ещё тот факт, что автодеплой на Jelastic подключается к проекту в раз, выкатывание версий в лайв становится вообще элементарным действием.

P.S. Кстати, в последнее время всерьёз начал задумываться о гетерогенном подходе к разработке Java-проектов. То есть, очень часто на бэкэнде появляются задачи, для которых Java немного избыточна, и какого-то там Groovy - будет вполне достаточно. Сейчас экспериментирую с более оптимальными подходами, но скорее всего совсем скоро напишу о том, насколько гармонично могут сосуществовать Java, Groovy, Ruby под одной JVM.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Mar. 13th, 2012


Приступы ВСД заебали. Жар в руках. Вены приподняты. Свет раздражает глаза. Не пойму, жарко мне или холодно. Пиздец, просто.
И это только когда я в офисе сижу. Дома всё нормально.

Наверное, дома меня просто никто не бесит. Хотя, скорее, потому что здесь 25-27 температура, при нормальных для меня 18-20 (дома-то окно всегда открыто).
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Хэх


** Мысли о грядущем **
----------------------
Кошка, пьющая вино,
Окунается в желанье,
Вечно пить Шато Мэрло,
И не знать, что есть прощанье.
Она пьёт его,
Бокал, и бутыль пуста,- на днище,
Бултыхая пепелищем оживают небеса.

Кошка пьёт его, вздыхает,
Она думает о Кафке, о кровавых полотнищах,
О скитаньях среди нищих,
О разбитых лепестках.

Она пьяная мечтает,
Обсуждая мироздание,
Критикуя бренность мира,
И абстрактность созерцанья.

Вот винит поэтов нищих,
За стихи кровавых истин,
За мазки сгоревшей кисти,
Расцарапывает очи,
Полумёртвым идеалам,
Моего сознанья гибель.


5 лет прошло... Не год, не два, не три. 5! Кто тут ещё остался живой из тогдашних фредов? Один, два, три человека? Надеюсь ЖЖ всё-таки будет вечен, ну или переживёт нас, по крайней мере. Ведь когда и где ещё люди имели такую невероятную возможность - вернутся на 5 лет назад

Это я просто вспомнил, что через неделю или около того этому журналу уже будет 5 лет.
Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Raphael


Как же он прекрасен!

Nikelin Blog | Кто такой jellical? | Кто такой nikelin?! | Кто такая "Красная хрень"?

Profile

[info]nikelin
Кирилл К.
Хомяк-с

Статистика


Рейтинг блогов
Новый социальный сервис Заяви о себе!

Tags

Syndicate

RSS Atom

Latest Month

May 2012
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
Powered by LiveJournal.com