-
Про архитектуру
Решил написать еще одну заметку про проектирование. Меня периодически спрашивают, как привести в порядок проект или как выстроить в нем архитектуру. Как правило программисты интересуются больше техническими вопросами (про дизайн, архитектуру, стек технологий), а менеджмент как найти нормального архитектора. Есть такая книга “Thinking, Fast and Slow”. На русский язык название почему-то перевели как “Думай медленно……
-
Запечатывание в Java.
Наконец-то нашел время дописать статью в блоге, которая давно уже в черновиках лежит…. Итак, про запечатанные классы и немного про алгебраические типы данных. Запечатанные классы определяются с помощью ключевого слова sealed. Это нужно, чтобы ограничить в наследовании. Потенциальных наследников в таком случае нужно указать явно, через запятую после permits. Например так: На самом деле, основной…
-
Про JavaScript (не для JavaScript программистов).
Последние полтора месяца пишу для одного своего заказчика графический движок на JavaScript (HTML5/Canvas), который будет рисовать в браузере некоторые их инженерные схемы. Параллельно консультирую штатных программистов, у которых не очень большой опыт работы с JavaScript-ом. При кажущейся простоте JavaScript не создан для легкого написания надежного кода. Для самопроверки пользуюсь jsLint-ом и периодически запускаю google closure…
-
Поиск. КМП-алгоритм
Недавно на досуге решил написать алгоритм КМП (Кнута — Морриса — Пратта) для Scala. Изначально, мне нужно было решить простенькую задачку – найти последовательность байт в потоке байтов. Сделал на Java. Потом, решил сделать тоже самое на Scala. Занятно, но в стандартной библиотеке коллекций Scala используется именно КМП поиск. Вот мой вариант.
-
Самый лучший Singleton
Из всех существующих на момент написания этого поста реализаций шаблона Singleton (одиночка) мне больше всего нравится эта: public class Singleton { // Private constructor prevents instantiation from other classes private Singleton() {} /** * SingletonHolder is loaded on the first execution of Singleton.getInstance() * or the first access to SingletonHolder.INSTANCE, not before. */ private static…
-
Как рисовать UML диаграммы классов.
Диаграмма классов. Архитекторы программного обеспечения разговаривают на языке UML. Это такая своеобразная программисткая латынь. Использовать UML напрямую для программирования неудобно, зато многие его понимают и используют для выписывания рецептов описания архитектуры системы. Нарисовал диаграмму классов и стало понятней что к чему. Её поймет и дельфист и жаваист, и сишник и питоньшик, и сишарпер и рубист…
-
Хранение семантических данных. Связка: Jena / Jenabean + Sparql
1. Jena В поисках средств для работы с семантическими данными (semantic web) на java можно наткнуться на следующие решения: Jena JRDF Sesame В данной статье я хочу рассмотреть работу только с Jena. Этот фреймворк достаточно богат по набору полезных фишек, например он позволяет работать с RDF, RDFS, OWL, осуществлять запросы через SPARQL, есть возможность читать…
-
деревья и реляционные базы данных. вложенные множества.
Для работы с древовидными (иерархическими) структурами в первую очередь следует постараться понять какие действия будут осуществляться часто, а какие эпизодически. Цель статьи не описать все возможные способы хранения таких данных, а в сжатом виде виде описать два часто встречающихся подхода и область их наилучшего применения. 1. Узел хранит информацию о родителе. Это классика. CREATE TREE_NODE…
-
Сортировка за O(N)-время
Случайно наткнулся на статью на java.dzone.com – Fast O(n) Integer Sorting Algorithm! Всегда считал что O(n*log(n) ) это очень хороший показатель. Например, стандартная реализация сортировки в Java 6 является слегка модифицированным вариантом merge sort, которая соответственно дает время n*log(n). Получить ультра ускорялку сортировки можно используя дополнительные хитрости: используя дополнительные знания о самих объектах которые мы сортируем…
-
шаблоны проектирования
GoF Шаблоны проектирования При работе с шаблонами мне интересен был в первую очередь практический аспект. Сейчас в 2010 году уже существует достаточно много информации и учебников по шаблонам проектирования как в интернете, так и в печатных изданиях. “Классикой жанра” считается книжка “банды четырех” (англ: “Gang Of Four” или просто GoF) – книга написанная Эрихом Гаммой…