Blog of Alexey Kutepov

Разработка программного обеспечения

Articles

My articles of software development on Java and Python, and reviews of modern IT solutions

Несмотря на то, что студенческие годы далеко позади, электрогитара и увлечение музыкой остались в моей жизни как хобби. А инженерный бэкграунд и неугасаемое любопытство привели к тому, что несколько месяцев назад я увлёкся темой изготовления звукоснимателей и начал погружаться в этот удивительный мир, изучая и конспектируя литературу. Но теория должна подкрепляться практикой, поэтому в какой-то момент мне понадобился намоточный станок и я решил его изготовить самостоятельно. В наличии имеется 3d-принтер, в Компас 3D работать немного умею и с Arduino факультативно знаком, а вот с ТММ (Теория Машин и Механизмов) уже всё гораздо печальнее, но это не повод сдаваться!

Сканер портов - очень важная утилита, которая помогает найти открытые порты на сервере. Используется как хакерами для разведки и первоначального сбора данных о ресурсе, так и админами для аудита безопасности. С помощью сканера портов можно выявить открытые порты на собственном ресурсе и принять меры по улучшению безопасности. В этом видео я покажу как написать свой собственный простейший сканер и покажу как он работает. Материал подходит для новичков в программировании.

Часто бывает необходимо, чтобы приложение выполняло какие-то действия регулярно, в определённое время. Например каждое утро выгружать актуальные данные из стороннего сервиса, инвалидировать кэш в конце дня и т.п. Для этих целей в Spring существует встроенный планировщик задач, он же Scheduler. В этой статье я расскажу о том, как работать с планировщиком задач в приложении на Spring Boot, как его настроить в своём проекте и какие возможности у него есть.

На практике часто бывает ситуация, когда необходимо многократно извлекать одни и те же данные, например из базы данных, либо получать их по http или другим затратным способом. В отдельных случаях такие запросы могут работать медленно (например сторонний сервис долго отвечает) и это становится настоящей проблемой, когда нагрузка на приложение возрастает. Повысить производительность приложения в этом случае можно с помощью кэширования - многократно используемые данные сохраняются в памяти и их извлечение происходит без запросов к базе данных и сторонним сервисам. В этой статье я расскажу о том, как можно настроить кэширование в вашем приложении на Spring Boot.

Тема разработки собственного бота для Telegram хоть и не новая, но всегда актуальная и востребованная. Думаю каждый разработчик рано или поздно сталкивается с такой задачей, поэтому сегодня я расскажу как разработать простой Telegram-бот на Java с использованием Spring Boot.

С момента первого выпуска Java в 1995 году многое изменилось как в программном, так и в аппаратном обеспечении. Мощные процессоры и более дешевая память позволяют нашим приложениям работать быстрее и обрабатывать большее количество информации. Язык программирования Java все эти годы тоже не стоял на месте и активно развивался, однако успел обрасти мифами. В этой статье мы рассмотрим ряд ложных и устаревших представлений о Java.

Над покупкой 3d-принтера я начал задумываться очень давно, но по разным обстоятельствам откладывал это мероприятие на потом. И вот совсем недавно, читая очередной раз обзоры и просматривая каталог товаров на AliExpress, я решился на покупку. Так в нашем доме появился простой, но очень популярный 3d-принтер Creality Ender 3. После сборки и настройки началось тестирование данного приобретения и был выполнен небольшой апгрейд, а так же составлено общее впечатление, которым я спешу поделиться в данной статье!

Не так давно я озадачился вопросом распознавания печатного текста в своём приложении. Мне стало интересно, какие на данный момент существуют OCR-библиотеки и насколько они удобны в использовании. А главное - будет ли приемлемый результат распознавания текста и можно ли такой текст потом озвучить? Озвучка текста это тема для отдельной статьи, а сегодня мы напишем приложение на Python, которое сможет распознавать тексты на русском языке благодаря OCR-библиотеке Tesseract.

Как многие из вас наверняка знают, Deadlock – это взаимная блокировка, ситуация, когда два или более потока зависают в вечном ожидании ресурсов, захваченных друг другом.

Принципы разработки программного обеспечения и основные шаблоны проектирования с примерами на Java.

Настало время подводить итоги уходящего 2020-го года! Не буду концентрироваться на негативных моментах, упомяну только то, что вместе с большими потрясениями появляются и большие возможности. Поэтому расскажу как этот год повлиял на IT и изменил привычный уклад жизни.

Часто на практике возникает необходимость централизованной обработки исключений в рамках контроллера или даже всего приложения. В данной статье разберём основные возможности, которые предоставляет Spring Framework для решения этой задачи и на простых примерах посмотрим как всё работает. Кому интересна данная тема - добро пожаловать под кат!

С рекомендательными системами каждый из нас сталкивается ежедневно: YouTube найдет для вас интересное видео, Google Play предложит установить полезное приложение или игру, а многие интернет-магазины порекомендуют товар, который который подойдет именно вам, и так далее. Как реализован подобный функционал? Об этом и многом другом я расскажу вам в своём вебинаре.

В этой статье я продолжу знакомить вас с DjangoCMS и расскажу о том как можно использовать в своём проекте готовые решения от сторонних разработчиков и для чего это нужно. В качестве примера я покажу как создать свой собственный блог на DjangoCMS и за основу возьму проект из прошлой статьи. Вы можете клонировать данный проект с GitHub (ветка part1) или создать свой собственный сайт и проводить эксперименты уже на нём.

Я уже очень давно слежу за развитием проекта DjangoCMS и честно скажу что он не всегда мне нравился. Но постепенно команда проекта исправила многие косяки и сделала эту CMS по-настоящему удобной, гибкой и функциональной. После этого я стал практически фанатом DjangoCMS и использую его в некоторых своих проектах (например этот блог). Сегодня я подробно расскажу что такое DjangoCMS, в каких случаях его удобно применять и покажу как с помощью него создать простой сайт. Надеюсь вы тоже полюбите этот инструмент :)

На данный момент существует множество фреймворков, позволяющих организовать работу с базами данных из java-приложений. В этой статье я расскажу про легковесный и в то же время функциональный фреймворк, реализующий технологию ORM - ORMLite.

В этой статье я расскажу от такой крутой вещи, как Jetty сервер! Почему Jetty крутой и чем он может быть полезен сферическому java-программисту в вакууме? Всё дело в том что Jetty является одновременно легковесным и хорошо оптимизированным решением, которое можно использовать как в небольших, так и в крупных проектах. Jetty хорошо масштабируется, экономично использует память, но самый жир это то что его можно встроить в своё приложение. Это дико удобно когда нужно отладить работу веб-приложения, так как отпадает необходимость постоянно его пересобирать и заливать на сервер приложений. Да и вообще встроенный сервер может решать кучу полезных задач, например недавно мне понадобилось сделать легковесное веб-приложение со встроенным сервером, которое можно было бы запускать одной командой на любой машине, и для решения этой задачи я использовал Jetty.

В данной статье я рассмотрю сравню две популярные системы обмена сообщениями и расскажу а нюансах при переходе с IBM WebSphere MQ 7.5 на свободно распространяемый Apache ActiveMQ 5.9. Также проанализирую риски подобной смены технологий.

Hibernate — библиотека предназначенная для решения задач объектно-реляционного отображения. Она представляет собой свободное программное обеспечение с открытым исходным кодом (open source), распространяемое на условиях GNU Lesser General Public License. Данная библиотека предоставляет легкий в использовании каркас (фреймворк) для отображения объектно-ориентированной модели данных в традиционные реляционные базы данных. Другими словами, используя данную библиотеку, можно заметно упростить себе жизнь, так как у нас появляется возможность эффективно и легко взаимодействовать с базами данных, не обладая глубокими знаниями SQL. Как использовать Hibernate я расскажу в этой статье.