Архив 05.2008
May 30, 2008
13:05
Достаточно часто в веб-приложениях на Rails требуется выполнять периодические задачи. В частности, наиболее распространенной такой задачей является удаление устаревших сессий. Другими могут быть какие-либо задачи обновления данных и т.п.
Есть несколько подходов для реализации таких задач, наверное, одним из наиболее удобных является использование плагина BackgrounDrb, значительно упрощающего реализацию.
Здесь я кратко опишу процесс установки и конфигурирования плагина для выполнения какой-либо периодической задачи.
Читать дальше »
May 26, 2008
07:05
На тему http://dask-blog.blogspot.com/2008/05/property-c.html.
Немного поигравшись, пришел к реализации свойств в C++, которая обладает некоторыми преимуществами, по сравнению с известными мне реализациями:
- Свойства не требуют инициализации в конструкторах
- Независимо от количества свойств, размер класса увеличивается на константу, связанную с выравниваем членов. У меня, например, на 4 байта.
Как это делается?
Читать дальше »
May 26, 2008
03:05
Я уже давно искал антиспам плагин для Kopete. Особенно стало актуальным в последние пару месяцев, спаммеры совсем обнаглели.
Закончилось все это тем, что пришлось взять свой напильник и делать все ручками. В результате родился Kopete Antispam Plugin. Поскольку с Qt я до этого не работал, он кривоват, но зато работает. По той же причине, конфигурацию и прочее я отложил на ближайшее время.
Принцип работы повсеместно используемый: когда неизвестный пользователь пишет сообщение, окно чата с ним не открывается, вместо этого ему отсылается ответное сообщение с простым вопросом. Как только он присылает ответ, открывается окно чата с ним.
Все уже выложил на kopeteantispam.sourceforge.net.
Читать дальше »
May 25, 2008
14:05
В процессе написания небольшой програмки для мобильного телефона столкнулся с тем, что работа c файловой системой (JSR-75) поддерживается не на всех телефонах. А данные надо же где-то хранить. Потому я решил реализовать поддержку записи данных как в файловую систему, так и в RecordStore
Но при этом различные объекты пишут данные по разному, поэтому в голову пришла следующая абстракция:
- Все объекты, которые могут быть сохранены, реализуют интерфейс Storable
- Имеется абстрактное хранилище данных, от которого наследуются реализации для файлов и для RecordStore. Это же абстрактное хранилище умеет само выбирать реализацию и выдавать ее по запросу.
Читать дальше »
May 20, 2008
06:05
В этой заметке я расскажу о фасаде для систем логирования, SLF4J, опишу его особенности и использование.
SLF4J (Simple Logging Facade for Java) – библиотека для логгирования, ставящая своей целью предоставить максимально простой, но при этом мощный фасад для различных систем логгирования на Java. Чем же это лучше чем использование какой-либо распространенной библиотеки для логгирования?
Если сравнить использование различных систем логгирования, как log4j и обощенных фасадов, таких как, например, slf4j, то можно найти следующие отличия:
Использование конкретной реализации:
- Зависимость от этой конкретной реализации
- Необходимость искать адаптеры, при необходимости использования компонент, разработанных, для других реализаций логгирования
- Меньше компонент в зависимостях
Использование фасада:
- Возможность использования различных реализаций
- Большое число компонент (фасад + реализация)
- Возможность быстро менять реализацию, возможно даже не меняя не строчки кода
Дополнительно к этому, SLF4J предоставляет возможность интегрировать компоненты, зависимые от других систем логирования (Log4J, JCL), подставляя реализации, направляющие логи этих систем в SLF4J.
Таким образом, небольшой ценой использование фасада для логирования значительно увеличивает возможности для интегрирования компонента в другие системы, что особенно важно, если неизвестно, где компонент будет использован (например, если это какая-та библиотека).
Читать дальше »
May 14, 2008
12:05
Умные указатели (Smart pointers) - это, объекты, которые хранят указатели на динамическую память. Они действуют аналогично обычным указателям C++, за исключением того, что автоматически освобождают память в необходимый момент.
Boost предоставляет шесть типов умных указателей:
- scoped_ptr - некопируемый автоматический указатель на объект;
- scoped_array - некопируемый автоматический указатель на массив;
- shared_ptr - разделяемый указатель на объект;
- shared_array - разделяемый указатель на массив;
- weak_ptr - вариант разделяемого указателя, не увеличивающий счетчик ссылок;
- intrusive_ptr - указатель со встроенным в объект счетчик ссылок
Читать дальше »
May 09, 2008
13:05
JFace - это доплнительный слой абстракции над графической библиотекой SWT, предоставляющий возможности для разработки графического интерфейса приложения на основе модели MVC(Model View Controller). Основные компоненты JFace включают:
- Viewers - классы для инкапсуляции задач предоставления данных для отображения, их фильтрации, сортировки и т.п.
- Actions and contributions - вводят семантику описания пользовательских действий и того, как они должны быть доступны пользователю.
- Image and font registries - предоставляют классы для управления ресурсами, такими как изображения и шрифты.
- Dialogs and wizards - фреймворк для построения сложного диалогового взаимодействия с пользователем.
- Field assist - предоставляет возможности для реализации вспомогательной функциональности для полей, такой как отображение статуса поля или подсказки о содержимом.
В первой части будет рассмотрено создание простого окна с использованием JFace, добавление к нему меню, статусной строки и панели инструментов.
Читать дальше »