Дата Пасхи

Попалась мне как-то на глаза цитата с баша (из бездны)

«Пасха рассчитывается по формуле Гаусса: a = [(19 * [Y / 19] + 15) / 30], где Y — год, [] — остаток от деления; b = [(2 * [Y / 4] + 4 * [Y / 7] + 6 * a + 6) / 7]; Если (a + b) > 10, то Пасха будет (a + b — 9) апреля ст. стиля, в противном случае — (22 + a + b) марта ст. стиля. Дата Пасхи может попадать в период от 22 марта до 25 апреля по ст. стилю (от 4 апреля до 8 мая по н. стилю).» Гаусс не только великий ученый но и священный математик =)
(далее…)

Install: Setup Android project in Eclipse

На работе настолько нехрен делать, что поставил себе Eclipse и Android SDK, Java JDK у меня уже стояла. И вот хочу по горячим следам выложить урезанный перевод официального мануала с комментариями руководство по установке все этого барахла. Сначала я написал все это как одну статью но потом решил разделить на несколько чтобы можно было легко давать ссылки, поэтому про установку вы почитаете по ссылкам ввержу а про конфигурацию ниже.

(далее…)

Счастливый билетик

Вчера речь зашла о ‘счастливых талончиках’, если кто на общественном транспорте не ездит то это такие талончики у которых серийный номер состоит из 6 цифр и сумма первых трёх равна сумме последних трёх. Так вот стало очень интересно какая вероятность того что тебе попадется ‘счастливый талончик’, для этого я решил написать функцию на PHP, но Apache под руками не оказалось и я написал на JavaScript. Сначала я думал что оптимальный алгоритм это разделение строки на две части, сложение цифр первой и второй половины, и сравнение.

(далее…)

HashMap Comparator

Небольшое напоминание себе, чтоб не забыть, а то вот уже третий раз не могу найти этот код в проекте (потому что он большой и хреново структурированный), поэтому пишу его четвертый раз и выкладываю тут чтоб не забыть. Это пример как отсортировать HashMap по значениям, а еще это пример использования double braces initialization, хоть это никому, по большому счету, и не надо.

(далее…)

Цепи Маркова

Я что-то не особо любил учиться в школе, потом в институте, а сейчас в институте ничему не учат, приходишь два раза в год сдаёшь сессию и не заморачиваешься — заочный в общем. Тяжелее всего мне в школе давалась вышка и физика. Все, кто мне говорил, что вышка нужна для программирования посылались на хуй не задумываясь. Да на хуй вышка нужна быдлокодеру на HTML и PHP?! :D. Но вот не такое уже и большое время назад я понял, что было бы неплохо знать, о чем идет речь, когда читаешь статью о программировании. Все началось наверное когда я прочел об алгоритме сортировки quicksort. Потом мне как-то на глаза попалась заметка Пылесос Kirby не удаляет пыль Фату с ковра Серпинского, естественно полез узнавать что это такое :) Где-то посреди поисков нашел фразу «Пылесос Kirby не удаляет пыль Фату с ковра Серпинского просыпанную из бутылку Клейна«, еще один умный термин в копилку. Кстати больше никогда не буду упоминать бутылку Клейна в разговоре, не с моим талантом объяснять людям, что это такое. И одним из последних мне на глаза попался фрактал Мандельброта. Так вот к чему это я так долго веду… К тому что я в рамках собственного ликбеза и наполнения блога статьями по Java написал реализацию цепей Маркова, а все вышесказанное плавно подводило к тому что это граф из высшей математики.

(далее…)

break $me;

Удивительно что такое большое количество людей не знает, что оператор break в PHP может принимать параметр который указывает какое количество вложенных циклов нужно остановить. Более того он может принимать переменную, что вряд ли полезно, но радует наличием возможности. Об этом мелким шрифтом написано в мануале, но судя по количеству кода, где я видел его использование, даже самые одаренные гуру читают ман по диагонали.

(далее…)

JFreeChart: StackedXYBarChart

Так получается что по работе я все дальше отхожу от JavaScript в сторону Java. Я в принципе я рад, но дело в том, что писать становиться все сложнее, потому что показывать какие-то мелкие части большой системы не имеет никакого смысла, их зачастую нельзя даже использовать повторно. Но вот недавно мне пришлось использовать библиотеку под названием JFreeChart и о ней я сейчас расскажу.

Библиотека очень приятная на ощупь! Прекрасная демка, скачиваешь загрузчик, который сам тянет все примеры, смотришь, все хорошо, до того момента пока не переходишь на закладку «исходный код», а там с тебя просят за исходники заплатить. Простите, но это жлобство, мало того, что сама библиотека платная, так еще и исходники примеров платные. Первая мысль — декомпилировать, а вторая поискать в Google, который с радостью отдает все исходники по названию примера?. Пошаманив немного я изобразил то, что требовалось. Но об этом чуть позже.

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

(далее…)

Pattern: ServiceLocator

Статья Pattern: Registry имеет непосредственно отношение к этой статье, советую ознакомиться перед прочтением.

Паттерн ServiceLocator изначально спроектирован для Java и дает возможность находить сервисы, зная их имя. В Java для того чтоб найти Enterprise JavaBeans (EJB) или Java Message Service (JMS) нужно использовать JNDI API. Это накладывает на код некоторые ограничения, например операции поиска и создания компонентов служб могут быть сложными (ресурсоемкими) и могут использоваться периодически в различных клиентах приложения. Для этого ввели паттерн, который позволяет абстрагироваться от использования JNDI и скрытия сложностей создания исходного контекста, а также может повторно использоваться несколькими клиентами.

(далее…)