3 декабря 2011 г.

Фаулер, исходники примера из первой главы

На днях начал плотное изучение книги Мартина Фаулера "Рефакторинг: улучшение существующего кода"

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

Банально, но для закрепления теории нет ничего лучше практики. Вот так и родилась идея завести маленький проект в IntelliJ IDEA и попробовать там проделать то же самое. Ну и грех не поделится, может кому-нибудь будет полезен этот код.

Проект на GoogleCode

VCS: Mercurial

Repository URL: https://code.google.com/p/fowler-book-chapter1/

Небольшие изменения, которые привнес я (отличия от книги):

  1. Самое главное - написал тесты, которые в книге упоминаются, но не приводятся (сделал на JUnit4).
  2. В последних коммитах (а их всего девять) я заменил авторскую конкатенацию строк для формировании отчёта на более удобный метод String.format()
  3. Немного другая разметка HTML-версии отчёта (авторская показалась какой-то убогой)

Загрузить проект в отличную от IntelliJ IDEA среду, я думаю, сможете без проблем. Тесты лежат в отдельном пакете "Tests".

На текущий момент последняя ревизия — с подписью "Шаг 7 (заключительный в книге). Замена switch полиморфизмом. Создание класса Price с потомками."

Правда и более ранние коммиты тоже имеют значения - благодаря им можно отследить всю историю правок, шаг за шагом.

P.S. Хочу в дальнейшем преобразовать этот код в подобие боевого - чтобы было все правильно прокомментировано, были всевозможные проверки на входные значения аргументов методов и т.п.

25 октября 2011 г.

Анонс нового проекта

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

15 мая 2011 г.

Numeration - перевод в произвольную систему счисления

Возникла мысль для передачи ID в ajax приложении кодировать числовые значения в 64-ричные. Накидал простенький скрипт. Интересная особенность - на вход можно подавать произвольный алфавит любой длины. Но это неразумно, т.к. при url-кодировании вся экономия сходит на нет. Поэтому имеет смысл использовать алфавит, подобный тому, который используется при Base64 кодировании.

24 апреля 2011 г.

Закончил проект генератора карт для иконок

Адрес проекта на гуглокоде: http://code.google.com/p/iconset-preview-generator/

Программа на PHP, генерирует карту для набора иконок.
Примерно такую, как на небезызвестном проекте Fugue Icons

Возможности:
  • Генерация карты для иконок произвольного размера;
  • Гибкая настройка генератора редактированием INI файла;
  • Возможность генерации карты комбинированных иконок, т.е. сразу нескольких размеров (пока фиксированных два);
  • Кол-во иконок неограниченно;
  • Есть возможность отмечать новые иконки рамочкой;
  • Есть режим вывода только основных иконок, пропуская производные;
Текущий статус - готово к употреблению.

23 апреля 2011 г.

ExtJs 4.0: Начало цикла статей

Этот пост - просто анонс о цикле статей, в которых я буду описывать процесс освоения ExtJs4 (с учетом небольшого опыта разработки на ExtJs3)

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

8 апреля 2011 г.

Игры с JavaScript

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

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

Первое что пришло в голову это шесть вложенных друг в друга циклов, внутри последнего проверяется условие и при его выполнении увеличивается счетчик. Достаточно просто.

Язык - JavaScript, платформа FF4 + Firebug.