Pull to refresh

Система домашнего учета финансов — koshelek.org

Reading time 5 min
Views 2.8K
Image Hosted by ImageShack.us
Приветствую всех. Сегодня я хотел бы немного попиариться и рассказать о своем небольшом проекте, посвящённом системе домашнего учета финансов «koshelek.org»
и о том как я его делал.

P.S Хочу сказать, что — это не моя система, если я заработаю инвайт, то приглашу человека сюда.
P.P.S Сайт испытывает хабро эффект. Нагрузка на БД. Хостер сказал, что не будет включать ее.
Если у вас есть на примете хостер с поддержкой JAVA, отпишитесь в комментариях.



Как-то при очередной оплате коммунальных услуг столкнулся с проблемой — нехваткой
финансовых средств.
Меня такое положение вещей не очень устроило и после определенного анализа я пришел
к выводу: денег мне хватает, а нехватка получается только из-за неграмотного управления ими.
Осознав, что мне неплохо было бы контролировать свои финансы, я стал искать готовые решения.
Я нашел много полезных и удобных программ и сайтов, но одни имели привязанность к IE, другие
были очень бухгалтерские (включая интерфейс), ну а все остальные платными или мало-функциональными.
Из всего мной попробованного, я бы наверно рекомендовал drebedengi 
Он имеет хороший и удобный интерфейс, возможность работы через программу для PDA, но является платным проектом.
В итоге, чтобы жизнь не казалась сказкой, решил скооперироваться с другом и изобрести велосипед.

Велосипед — это не только средство передвижения…… это еще и наша жизнь.

Примерно месяц назад я приступил к написанию системы домашнего учета финансов koshelek.org, и хочу поделиться своим опытом, как я все организовал. Языком программирования была выбрана java — этой мой любимый язык программирования. Мой выбор является абсолютно пристрастным! Я не намерен никому навязывать данный язык, на месте java мог бы оказаться любой другой язык. Хочу лишь донести до вас то, что не в языке программирование дело, а в подходе.

По природе своей я программист и, если техническую часть я делаю на ура, то с дизайном, проверкой орфографии и продвижением сайта все будет плохо, да и делать все одному — неправильный подход. В итоге первая задача заключается в том, чтобы найти единомышленников среди друзей, знакомых или случайных людей, которым в этом проекте будет интересно поучаствовать. Поиски таких людей — это отдельная история. Дальше возникает вопрос координирование людей. На текущий момент нас всего двое, но координировать свои действия нужно уже сейчас. Время от времени у нас всплывают определенные проблемы и недопонимание, а они затем еще и усиливается из-за разного склада ума: Я — разработчик, Он — человек с творческим потенциалом. Естественно живем мы не на одной лестничной клетке, и возможности зайти в гости, чтобы обговорить все вопросы, просто нет, а жаль.

Если бы это было так, это бы ещё ничего. Если бы, конечно, оно так и было.
Но так как это не так, так оно и не этак. Такова логика вещей!


Для нашей координации я решил поставить систему поддержки проекта Trac. Можно подумать, что данная система подходит только для серьезных проектов, но это не так; даже небольшой сайт необходимо делать по правилам. Система Trac содержит удобную wiki, браузер для сырцов и тикет систему. Весь оборот текстов, версий дизайна и все остальное мы c другом стали вести через wiki, планирование работы — через систему тикетов. Также в Trac есть таймлайн, по которому четко видно кто что сделал в течение дня. Данная система четко стандартизировала и структурировала взаимную работу, тем самым помогла минимизировать «детские болезни». С помощью Mylyn и Eclipce я подключил среду разработки к Trac и моя работа с системой поддержки проекта стала ещё более легкой.
После того как мы определились с координированием проекта, мой друг изобретал внешний вид сайта, я же стал обдумывать архитектуру системы. Основной подход — поменьше велосипедов, запуск в скором времени и с возможностью дальнейшей масштабируемости. Я остановился на следующем наборе:

Ioc Spring Framework:
Выбор Spring был обоснован тем, что это удачная замена EJB и для него не потребуется искать хостинг с матерым сервером апликейшен. У Spring есть свой MVC, но почему-то он меня не очень порадовал, может не глубоко смотрел, но я выбрал Struts2.
На Хабре есть замечательная статья Краткое введение в Spring Framework

MVC Struts2 + tiles
Struts2 — очень мощная и удобная MVC библиотека; используя её с tiles я решил проблему общих шаблонов. Spring и Struts2 очень легко интегрируются и прекрасно взаимодействуют, тут можно почитать как это делается.

ORM Hibernate
Еще одна статья на Хабре Основы Hibernate
Про ORM, думаю, тут тоже все понятно — Hibernate давно стал лидером.

Потратив пару дней, я все настроил и был готов к написанию сайта.

— Пушка. Они заряжают пушку! Зачем? А… они будут стрелять!

Итак, начнём заряжать пушку. Первой задачей являлось построить модель (если кто не знает, модель — это объектное представление данных). Модель я рисовал в виде UML схем, используя плагин для Eclipse eUML2. Очень удобный инструментарий, на ходу генерирует код, притом есть бесплатная версия. Далее вспоминаем принципы масштабируемости и для работы с ORM выбираем шаблон проектирования DAO и штампуем методы для взаимодействия модели с базой данных (в нашем случае ORM Hibernate).
Модель у нас готова, DAO тоже. Не то, чтобы совсем готовы, но ведь у нас архитектура масштабируемая ;), поэтому считаем, что готовы. Spring Framework позволяет легко связывать DAO объекты с MVC контроллерами, для нас эта связка абсолютно прозрачна, нам остается лишь штамповать странички. Принцип написания страничек описывать не буду, в данном деле кто на что горазд, остановлюсь только на следующем: Одна из задач была написать проект быстро; для этого используеv максимально теги от struts 2, благо их не мало и они решают огромное количество проблем. Так же отмечу, что текст лучше не писать в открытом виде во вьюхах, а лучше использовать i18n. Что нам в дальнейшем даст i18n? А даст удобное редактирование текстов через один или несколько файлов, тут кто как сделает, а так же возможность легкой локализации сайта на множество языков. Для Eclipse есть очень удобный плагин ResourceBundle для работы с properties файлами i18n.
Для многих задач требуется планировщик заданий, рассылка писем, периодическая чистка базы от деяний demo пользователя и т.д. Для решения этой задачи используем Quartz. Quartz хорошо интегрируется со Spring, описание можно посмотреть здесь
Итак — сайт готов. Теперь необходимо где то его разметить. JAVA — штука специфическая и хостинг для неё найти проблематично. Бродя несколько дней по Интернету, я нашел недорогой хостинг www.1gb.ru c возможностью запуска на нем JAVA. Стоимость хостинга составляет 340р в месяц, качество хорошее, рекомендую.

Почти во всех делах самое трудное — начало.
Что же в итоге у нас получилось?
Получился, как мне кажется, неплохой сервис, простой и наглядный, который позволит вам не только контролировать, но и управлять финансовыми средствами. Есть многопользовательский режим, который позволит вам объединить учётные записи в одну семью, и при разных логинах и паролях иметь общий бюджет и статистику. Вам не нужно скачивать дорогие программы для подсчета своих финансов! Не нужно отсылать СМС для активации! Мы предлагаем Вам отличный сервис абсолютно бесплатно! Я надеюсь получить не только положительные, но и отрицательные отзовы, чтобы продолжить работу над сервисом и сделать его работу более простой и полезной.
Tags:
Hubs:
+8
Comments 109
Comments Comments 109

Articles