С 2010 года компания JetBrains разрабатывает еще один jvm язык программирования kotlin. Прочитав первые страницы документации, какие-то отзывы и блоги о нем, я решил попробовать его в действии. Утверждается, что kotlin полностью совместим с java в обе стороны. Это значит, что проект может состоять вперемешку из java и kotlin кода, что важно для плавной миграции или частичного внедрения. В качестве упражнения для себя я решил перевести один небольшой проект на kotlin и тут делюсь впечатлениями.
27 сент. 2015 г.
28 авг. 2015 г.
Web приложение для поиска подписи
В предыдущем посте я описал рабочий способ нахождения подписи на документе, но в процессе тестирования алгоритм несколько усложнился и из отдельного класса превратился в целое приложение + я добавил веб интерфейс, чтобы можно было со внешней системы делать запрос с адресом скана, а в ответ получать json с результатом. Данный пост описывает модернизацию алгоритма.
Исходный код здесь
Исходный код здесь
Ярлыки:
Алгоритм
,
Поиск подписи
,
Aspect
,
image parsing
,
javacv
,
opencv
,
Springboot
22 авг. 2015 г.
Поиск подписи на документе
Есть некий устоявшийся бизнес-процесс, в котором пользователю надо напечатать документ, заполнить его, расписаться и отсканировать. Однако по какой-то причине пользователь часто забывает расписаться в документе (или вообще не знает, что должен это сделать), что вызывает много проблем и ненужных действий.
Нужно как-то уменьшить процент не подписанных документов, при этом не надоев пользователю лишними сообщениями и напоминаниями. В этом посте я хочу рассказать об одном решении этой проблемы, а именно об исследовании изображения, распознавании места для подписи и определения её наличия или отсутствия. В качестве инструмента решения этой задачи я выбрал уже известную связку opencv+javacv и алгоритм Виолы-Джонса, о которых я рассказывал в предыдущем посте.
Нужно как-то уменьшить процент не подписанных документов, при этом не надоев пользователю лишними сообщениями и напоминаниями. В этом посте я хочу рассказать об одном решении этой проблемы, а именно об исследовании изображения, распознавании места для подписи и определения её наличия или отсутствия. В качестве инструмента решения этой задачи я выбрал уже известную связку opencv+javacv и алгоритм Виолы-Джонса, о которых я рассказывал в предыдущем посте.
18 авг. 2015 г.
Поиск фрагмента изображения с помощью opencv
Недавно по работе столкнулся с необходимостью реализовать поиск фрагмента изображения. После продолжительного интернет серфинга на эту тему я пришел к выводу, что лучше всего для решения данной задачи подходит opencv. Ссылка на официальный сайт
Opencv — это супер библиотека для работы с изображениями, которая написана под все популярные операционные системы, очень много всего умеет, есть хорошая документация. Но поскольку я привык работать с java, я нашел библиотеку-обертку на java для opencv: Javacv.
В javacv, к сожалению, с документацией и примерами все хуже, но при желании тоже можно разобраться. Сначала это у меня не получалось и я даже перешел на C++, но потом понял, что можно читать официальную документацию для C++ и пользоваться ей на java. Все классы и методы в java именованы либо точно так же, либо очень похоже.
Ниже я расскажу кратко об алгоритме, и как с нуля написать на java программу для поиска фрагмента изображения.
Opencv — это супер библиотека для работы с изображениями, которая написана под все популярные операционные системы, очень много всего умеет, есть хорошая документация. Но поскольку я привык работать с java, я нашел библиотеку-обертку на java для opencv: Javacv.
В javacv, к сожалению, с документацией и примерами все хуже, но при желании тоже можно разобраться. Сначала это у меня не получалось и я даже перешел на C++, но потом понял, что можно читать официальную документацию для C++ и пользоваться ей на java. Все классы и методы в java именованы либо точно так же, либо очень похоже.
Ниже я расскажу кратко об алгоритме, и как с нуля написать на java программу для поиска фрагмента изображения.
9 авг. 2015 г.
Архитектура GWT WebSocket приложения
В прошлом посте я выложил библиотеку на GWT, которая оборачивает sockJS, тем самым делая доступным протокол websocket для GWT. В этом посте я хочу предложить архитектуру, для GWT приложения, которое использует веб сокеты. Сразу же ссылка на проект на гитхабе
5 авг. 2015 г.
GWT библиотека для Websocket
Сделал небольшую библиотеку, чтобы использовать протокол websocket в gwt приложении. Проект на гитхабе
В сети существуют несколько подобных решений, для использования websocket в gwt, но мне было важно то, чтобы библиотека обеспечивала только клиентскую часть приложения. Сервер может быть реализован как угодно, единственное условие: использование json.
Напомню, что websocket это протокол поверх TCP для общения между клиентом и сервером. Основная фишка этого протокола для обычного пользователя это то, что сервер может обратиться к клиенту без предварительного запроса от клиента. Это может быть применимо в различных ситуациях, самое простое, например, это чат. Глупо же с клиента каждый раз делать запрос на сервер, узнавая, писал ли кто мне. Гораздо практичнее серверу самому отправить сообщение по необходимости.
В сети существуют несколько подобных решений, для использования websocket в gwt, но мне было важно то, чтобы библиотека обеспечивала только клиентскую часть приложения. Сервер может быть реализован как угодно, единственное условие: использование json.
Напомню, что websocket это протокол поверх TCP для общения между клиентом и сервером. Основная фишка этого протокола для обычного пользователя это то, что сервер может обратиться к клиенту без предварительного запроса от клиента. Это может быть применимо в различных ситуациях, самое простое, например, это чат. Глупо же с клиента каждый раз делать запрос на сервер, узнавая, писал ли кто мне. Гораздо практичнее серверу самому отправить сообщение по необходимости.
30 июл. 2015 г.
Эмулятор автомобильного движения на akka
Хотел давно освоить интересный фреймворк akka. Akka реализует концепцию акторов на языке scala, хотя API у него есть как и на scala, так и на java. В двух словах концепция акторов подразумевает, что есть акторы (актеры), которые параллельно выполняют какие либо операции, создают новых акторов, а общаются с другими акторами с помощью сообщений. Все как у людей. Испробовать все это я решил на автомобильном эмуляторе.
Быстрый deploy
Основная мысль этого поста — это как круто, когда по одному push происходит развертывание приложения на публичном сервере.
Я подумал и решил сделать так.
1) скачал и установил на сервер Teamcity
2)В проекте делаю две ветки: develop и master. Работаю в ветке develop. Когда хочу поделиться результатом, то мержу изменения в master.
3)Тем временем Teamcity делает сборку на каждом push для обоих веток, но для master ветки я добавил шаг: скопировать war в директорию для tomcata и рестартануть его.
Этот способ я использую когда работаю как один, так и в команде. Разумеется, если результатом вообще нужно делиться.
Я подумал и решил сделать так.
1) скачал и установил на сервер Teamcity
2)В проекте делаю две ветки: develop и master. Работаю в ветке develop. Когда хочу поделиться результатом, то мержу изменения в master.
3)Тем временем Teamcity делает сборку на каждом push для обоих веток, но для master ветки я добавил шаг: скопировать war в директорию для tomcata и рестартануть его.
Этот способ я использую когда работаю как один, так и в команде. Разумеется, если результатом вообще нужно делиться.
8 мая 2015 г.
Настройка бэкапа с помощью bacula
Столкнулся с необходимостью сделать бэкап со своего домашнего мини-сервера, на котором у меня много что развернуто в том числе и этот блог(UPD: уже нет). После нескольких часов гугления я остановился на bacula. В интернете море инструкций на эту тему, можно довольно легко развернуть бэкап-систему. Чтобы структурировать полученный опыт, я решил оставить здесь небольшой how-to.
Приложение для рассадки гостей
Помню, когда мы готовились к свадьбе, то достаточно много времени нам пришлось уделить для планировки рассадки гостей. У нас было около 50 человек и 8 столов. В итоге пришлось в фотошопе нарисовать столы в виде больших кругов, людей в виде маленьких и за пару вечеров, перетаскивая гостей мышкой туда-сюда, мы выбрали оптимальную рассадку. Тогда мне и пришла идея создать приложение, которое бы получало на вход информацию о гостях и столах, а на выходе бы давало самую оптимальную рассадку. В конце 2014 года я занялся этой задачей.
4 мая 2015 г.
Фотопогода
Хочу представить вашему вниманию мой уже старый (2013) первый проект на java — Фотопогода. Это с виду обычный сайт, который показывает погоду на ближайший день, но делает это особым образом: помимо обычных параметров погоды, как температура, облачность и т.д., показывается фотография, на которой изображена эта погода.
Подписаться на:
Сообщения
(
Atom
)

