Спасибо за ваш комментарий и проявленный интерес к статье! 😉
Раздел про биометрические данные лучше удалить
Знаете, у меня тоже иногда возникает желание удалить кое-что… например, строчку кода, которая стала причиной бага, обнаруженного в 2 часа ночи. Но, как гласит народная мудрость, из песни слов не выкинешь (а из статьи – разделов). «Бабушки у подъезда» – это же кладезь народной мудрости и, между прочим, алгоритм "узнавания по походке" тоже серьёзный биометрический инструмент! 😄 Но если серьёзно – раздел, конечно же, можно дополнить и улучшить. Возможно у вас есть, что предложить? "... критикуешь – предлагай ...!" (с) Я с превеликим удовольствием добавлю в статью ваши наработки по теме биометрии!
знатные русофобы (sourceafis)
Ох уж эти ярлыки в наше неспокойное время! SourceAFIS – это, в первую очередь, библиотека с открытым исходным кодом (open-source) для распознавания отпечатков пальцев, причем имеющая реализации на Java. Видимо, «русофобия» проявляется в том, что она не на 1С написана? 😉 Но если отбросить шутки, то политику и технологии лучше не смешивать. Есть факты, которые указывают на то, что именно алгоритм (а не разработчик) проявляет признаки "русофобии"? С интересом ознакомлюсь.
Смешать OpenCV и Megamatcher
Каюсь, грешен, немного увлёкся. 😅 Это как в кулинарии: иногда хочется добавить в блюдо всего и побольше. OpenCV – это, действительно, библиотека компьютерного зрения общего назначения, эдакий "швейцарский нож" для обработки изображений. А Megamatcher – это уже профессиональный SDK, "набор инструментов", предназначенный для создания сложных мультибиометрических систем (включая, но не ограничиваясь, матчинг). Вы абсолютно правы: OpenCV предоставляет базовые возможности, а Megamatcher предлагает специализированные, оптимизированные (и закрытые) алгоритмы для решения конкретных задач. Учту ваше замечание и постараюсь в дальнейшем чётче разграничивать эти инструменты. (Если, конечно, сообщество Хабра не решит, что мои статьи тоже пора "удалить"! 😂)
В заключение хочу ещё раз поблагодарить вас за конструктивную критику. Статья обзорная, и, разумеется, невозможно в одном материале объять необъятное. Замечания сообщества ценны и помогут мне сделать статью лучше!
Спасибо за развёрнутый комментарий! Рад, что статья вызвала живую реакцию и послужила поводом для столь детального разбора. 😊
По поводу "смешались в кучу кони, люди" – да, возможно, есть немного. Статья и не претендует на звание фундаментального труда, скорее, это попытка "взглянуть с высоты птичьего полёта" на данные в контексте Java-разработки, попутно затронув и основы.
Что касается конкретных замечаний:
double и финансы: Согласен, использовать double для финансовых расчётов – не лучшая идея из-за особенностей представления чисел с плавающей точкой. Тут стоило бы упомянуть BigDecimal для точных вычислений.
Queue и FIFO: Вы абсолютно правы, Queue в Java – это интерфейс, и он не обязан быть FIFO. Есть, например, PriorityQueue, где элементы упорядочиваются по приоритету, и LIFO-очереди (стеки). В тексте, дай бог памяти, имелось в виду "как правило", но формулировка неточная.
ArrayList и O(n^2): Здесь, конечно, ошибка. Доступ к элементу ArrayList по индексу – это O(1), так как внутри используется массив. O(n^2) – это, скорее, про неудачный алгоритм поиска внутри списка.
Ranges: Да, Guava's Range может работать с любыми типами данных, для которых определено сравнение, не только с числами.
Sequences: Тут, видимо, вышло недопонимание. Sequence упоминается как струкутра данных в общем. А в Java, Streams и Sequences из Kotlin, решают похожие задачи.
В общем, есть над чем работать! Спасибо за ценные замечания, обязательно учту их в будущих публикациях. А долги зимней сессии – да, надо закрывать, кто же спорит! 😉
Спасибо за ваш комментарий и проявленный интерес к статье! 😉
Знаете, у меня тоже иногда возникает желание удалить кое-что… например, строчку кода, которая стала причиной бага, обнаруженного в 2 часа ночи. Но, как гласит народная мудрость, из песни слов не выкинешь (а из статьи – разделов). «Бабушки у подъезда» – это же кладезь народной мудрости и, между прочим, алгоритм "узнавания по походке" тоже серьёзный биометрический инструмент! 😄 Но если серьёзно – раздел, конечно же, можно дополнить и улучшить. Возможно у вас есть, что предложить? "... критикуешь – предлагай ...!" (с) Я с превеликим удовольствием добавлю в статью ваши наработки по теме биометрии!
Ох уж эти ярлыки в наше неспокойное время! SourceAFIS – это, в первую очередь, библиотека с открытым исходным кодом (open-source) для распознавания отпечатков пальцев, причем имеющая реализации на Java. Видимо, «русофобия» проявляется в том, что она не на 1С написана? 😉 Но если отбросить шутки, то политику и технологии лучше не смешивать. Есть факты, которые указывают на то, что именно алгоритм (а не разработчик) проявляет признаки "русофобии"? С интересом ознакомлюсь.
Каюсь, грешен, немного увлёкся. 😅 Это как в кулинарии: иногда хочется добавить в блюдо всего и побольше. OpenCV – это, действительно, библиотека компьютерного зрения общего назначения, эдакий "швейцарский нож" для обработки изображений. А Megamatcher – это уже профессиональный SDK, "набор инструментов", предназначенный для создания сложных мультибиометрических систем (включая, но не ограничиваясь, матчинг). Вы абсолютно правы: OpenCV предоставляет базовые возможности, а Megamatcher предлагает специализированные, оптимизированные (и закрытые) алгоритмы для решения конкретных задач. Учту ваше замечание и постараюсь в дальнейшем чётче разграничивать эти инструменты. (Если, конечно, сообщество Хабра не решит, что мои статьи тоже пора "удалить"! 😂)
В заключение хочу ещё раз поблагодарить вас за конструктивную критику. Статья обзорная, и, разумеется, невозможно в одном материале объять необъятное. Замечания сообщества ценны и помогут мне сделать статью лучше!
Спасибо за развёрнутый комментарий! Рад, что статья вызвала живую реакцию и послужила поводом для столь детального разбора. 😊
По поводу "смешались в кучу кони, люди" – да, возможно, есть немного. Статья и не претендует на звание фундаментального труда, скорее, это попытка "взглянуть с высоты птичьего полёта" на данные в контексте Java-разработки, попутно затронув и основы.
Что касается конкретных замечаний:
double и финансы: Согласен, использовать
double
для финансовых расчётов – не лучшая идея из-за особенностей представления чисел с плавающей точкой. Тут стоило бы упомянутьBigDecimal
для точных вычислений.Queue и FIFO: Вы абсолютно правы,
Queue
в Java – это интерфейс, и он не обязан быть FIFO. Есть, например,PriorityQueue
, где элементы упорядочиваются по приоритету, и LIFO-очереди (стеки). В тексте, дай бог памяти, имелось в виду "как правило", но формулировка неточная.ArrayList и O(n^2): Здесь, конечно, ошибка. Доступ к элементу
ArrayList
по индексу – это O(1), так как внутри используется массив. O(n^2) – это, скорее, про неудачный алгоритм поиска внутри списка.Ranges: Да, Guava's
Range
может работать с любыми типами данных, для которых определено сравнение, не только с числами.Sequences: Тут, видимо, вышло недопонимание. Sequence упоминается как струкутра данных в общем. А в Java, Streams и Sequences из Kotlin, решают похожие задачи.
В общем, есть над чем работать! Спасибо за ценные замечания, обязательно учту их в будущих публикациях. А долги зимней сессии – да, надо закрывать, кто же спорит! 😉
Да, обязательно добавлю. Вот только разберусь как это сделать корректно.