devmark_ru
223 subscribers
157 photos
121 links
Данный канал является частью проекта devmark.ru, который посвящён вопросам разработки программного обеспечения. Здесь вы найдёте полезные материалы по server-side разработке. Прежде всего по Java, Kotlin и Spring.
Download Telegram
Ровно 117 лет назад, в 1906 году, родилась Грейс Хоппер - американский ученый, пионер в области компьютерных технологий и коммодор флота США. Грейс получила образование в области математики и физики.

В 1937 году начала работать в Гарвардском университете, где занималась разработкой компилятора для языка программирования Алгол.

В 1943 году присоединилась к исследовательской группе в Массачусетском технологическом институте, где работала над созданием первого компьютера ENIAC.

Во время разработки компьютера Mark II в Университете Гарварда в 1947, её коллеги нашли и удалили мотылька, застрявшего в реле и блокировавшего передачу сигнала. Этот случай Хоппер отметила как «дебаггинг» системы — в американском английском, слово debugging буквально значило «удаление насекомых».

В 1959 году разработала компилятор для языка программирования COBOL, который стал одним из самых популярных языков программирования в мире.

В 1983 году получила премию Ады Лавлейс (о ней чуть позже) от Association for Women in Computing.
👍3
Декабрь богат на памятные даты в области информатики.

208 лет назад, в 1815-ом году, родилась Ада Лавлейс - английский математик и первая женщина-программист. Ада является дочерью поэта Байрона.

Получила математическое образование, изучала механику и технику.

В 17 лет познакомилась с Чарльзом Бэббиджем, который разработал аналитическую машину. Несмотря на то, что машина Бэббиджа так и не была построена при жизни Ады, она написала первую программу и считается первым программистом. Ввела термины "цикл" и "рабочая ячейка".

В своих записях она предрекала, что аналитическая машина способна создавать алгебраические формулы, а в перспективе — писать музыку, писать картины — и укажет «науке такие пути, какие нам и не снились».

В 1980 году появился язык программирования "Ада", который назван в её честь.
👍4
Опубликовал новую статью на тему Value-классы в Kotlin.

Иногда в процессе разработки на Kotlin требуется обеспечить более узкую типизацию параметров, чем позволяют стандартные типы. Особенно, если метод принимает несколько параметров одинакового типа, но каждый параметр несёт разный смысл.

В Kotlin есть особое подмножество классов, называемых value class. Они сочетают в себе высокую производительность как у примитивов и некоторые преимущества ООП, как у обычных классов.

Механизм value class используется и в стандартной библиотеке Kotlin. Например, беззнаковое целое UInt представлено как обёртка над стандартным целым числом Int.

Поэтому, если Вы согласны с тезисом «чем строже типизация – тем лучше», тогда смело используйте value-классы.
👍4
На моём сайте появилась новая статья про перебор элементов с помощью интерфейса Iterator в Java.

Интерфейс Iterator представляет собой простой способ обхода коллекций благодаря методам next() и hasNext().

Интерфейс Iterable предоставляет более удобный способ работы с коллекциями, позволяя использовать цикл for-each для итерации по элементам коллекции. Использование интерфейса Iterable позволяет сделать код более компактным и читаемым.
🔥6
Сегодня исполняется 232 года со дня рождения Чарлза Бэббиджа, английского математика и изобретателя первой вычислительной машины (в те времена ещё механической).

Чарлз родился 26 декабря 1791 года в Лондоне в семье банкира Бенджамина Бэббиджа. В 1810 году Бэббидж поступил в Тринити-колледж в Кембридже. Однако основам математики он обучался самостоятельно по книжкам. Он тщательно изучал труды Ньютона, Лейбница, Лагранжа, Лакруа, Эйлера и других математиков академий Санкт-Петербурга, Берлина и Парижа.

Бэббидж разработал разностную машину, которая не была успешной, но стала основой для дальнейших разработок.

Он также задумывался о создании программируемой вычислительной машины, известной как аналитическая машина.

Эта машина имела сходную архитектуру с современными компьютерами и включала "склад" (память), "мельницу" (процессор), управляющий элемент и устройства ввода-вывода информации.

В разработке аналитической машины Бэббиджу помогала Ада Лавлейс, первая женщина-программист, о которой я писал ранее.
👍3
В очередной раз переработал и расширил статью про создание telegram-бота на Kotlin и Spring Boot, а также обновил пример проекта в github.

В текущей версии я демонстрирую более простой способ создания команд бота. Также перевёл проект на Java 21 и Spring Boot 3.2.

Чуть позже планирую обновить видеоролик на YouTube с учётом этих изменений.
🔥8
Сегодня Линус Торвальдс празднует свой 54-й день рождения! Будущий создатель ОС Linux родился 28 декабря 1969 в Хельсинки в семье финских шведов Нильса и Анны Торвальдс.

В 1981 году дед Линуса познакомил внука с домашним компьютером Commodore VIC-20, использовавшимся им для математических вычислений. Линус заинтересовался программированием.

Значимым событием в жизни Торвальдса стало прочтение им книги Эндрю Таненбаума «Операционные системы: разработка и реализация». В книге на примере написанной Таненбаумом ОС Minix представлена структура систем семейства UNIX.

Обнаружив недостатки в системе, он начал писать собственный эмулятор терминала. Затем Торвальдс добавлял в программу всё новые функции, благодаря чему она вскоре стала обретать черты полноценной ОС.

17 сентября 1991 года Торвальдс выложил исходный код программы (версии 0.01) для общедоступной загрузки. Таненбаум выступил с резкой критикой системы. Однако он ошибся. Популярность системы росла, и позже о ней заговорили во всём мире.
👍2🍾2
Написал вторую статью про создание Telegram-бота на Spring Boot и Kotlin, в которой привожу пример работы с inline-кнопками.

Эти кнопки отличаются от обычных тем, что позволяют передавать контекст, в рамках которого они были нажаты. Этот контекст позволяет передавать любую необходимую информацию, и пользователь её не увидит.

Таким образом, у нас появляется возможность реализовывать более сложный функционал, улучшая пользовательский опыт взаимодействия с ботом.
👍3🤗2🌭1
Поздравляю с Новым годом, друзья!

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

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

P.S. Следуя трендам, поздравительный кот также сгенерирован нейросетью)
👍2🎉2🎄2
Ранее я публиковал статью про новые интерфейсы SequencedCollection и SequencedSet, которые появились в Java 21. Они расширяют базовый интерфейс Collection, добавляя в него ряд полезных методов для манипуляций с первым и последним элементами, а также для инвертирования коллекции.

Теперь я подготовил видео на эту же тему для тех, кому удобнее смотреть, чем читать.

Подписывайтесь, ставьте лайки и пишите комментарии - так вы сможете поучаствовать в продвижении проекта.
👍5
В продолжение темы SequencedCollection на YouTube выложил ролик про SequencedMap. То же самое, но в виде текста, можно прочитать здесь.

Интерфейс SequencedMap расширяет стандартный Map, добавляя в него методы для доступа и манипулирования первым и последним элементами. В отличие от SequencedCollection, здесь мы манипулируем не отдельными значениями, а сразу парой «ключ-значение», представленной Map.Entry.
🔥3👍1
Опубликовал видео на YouTube про value-классы в Kotlin.

Иногда в процессе разработки требуется обеспечить более узкую типизацию параметров, чем позволяют стандартные типы. Особенно, если метод принимает несколько параметров одинакового типа, но каждый параметр несёт разный смысл.

В Kotlin есть особое подмножество классов, называемых value class. Они сочетают в себе высокую производительность как у примитивов и некоторые преимущества ООП, как у обычных классов.
👍6
По мотивам статьи записал видео про ещё одну production-ready фичу из Java 21 - Pattern matching в switch.

Если ранее в этой конструкции мы могли проверять только константные значения, то теперь мы можем проверять тип переменной и в случае успеха компилятор автоматически выполнит приведение к этому типу.

Кроме того, pattern matching в switch работает также и для record-классов. Помимо приведения к типу, мы также автоматически получаем доступ ко всем значимым полям этого класса, что позволяет избегать громоздких вызовов get-методов.
👍5
В дополнение к статье про итератор записал видео для YouTube.

Интерфейсы Iterator и Iterable часто используются для работы с коллекциями в Java. Они позволяют эффективно и безопасно работать с коллекциями, обеспечивая контроль над процессом перебора элементов (итерации).

Iterator представляет собой одноимённый шаблон проектирования «Итератор».

Iterable предоставляет более удобный способ работы с коллекциями, позволяя использовать цикл for-each для итерации по элементам коллекции.
👍5
В повседневной работе никто из нас не компилирует исходники ☕️ Java вручную. За нас это делают такие инструменты как maven, gradle или среда разработки типа 💡 Idea.

Но для понимания процессов, которые происходят при каждом тестовом запуске вашего приложения, имеет смысл хотя бы один попробовать это сделать самостоятельно прямо из консоли.

Поэтому по мотивам 📗 статьи я подготовил 📺 видео, где привожу пример компиляции исходников Java из консоли вручную.
👍10
Добавил на YouTube новое видео о том, как сохранять большие текстовые файлы на Java наиболее оптимальным образом. Текстовый вариант доступен на сайте.

Давайте сгенерируем строку из случайных символов на Java и затем сохраним её в текстовый файл. Строка должна быть очень большой (более 100 миллионов символов), чтобы мы могли легко заметить разницу во времени, которое требуется на сохранение файла.

Рассмотрим 3 варианта: обычный FileWriter, FileWriter с буферизацией и неблокирующее сохранение файла с помощью пакета java.nio. В конце подведём итоги.
👍4🔥1
Новое 📺 видео на YouTube канале!

Давайте научимся читать большой текстовый файл построчно. При этом каждую строку будем как-то обрабатывать. Например, будем искать наибольшую длину строки.

Поскольку размер файла больше 100 МБ, его чтение происходит с небольшой задержкой. Мы рассмотрим три варианта реализации такого чтения и выберем наиболее быстрый из них.

Также данный материал доступен в виде 📗 статьи.
👍4
Новое 📺 видео на YouTube-канале!

Во многих редакторах при работе с текстовым документом вы можете видеть, сколько всего строк содержится в этом файле. Строки между собой разделяются символом перевода строки, который в каждой операционной системе (Windows, Unix, Mac) свой.

Давайте разберёмся, как быстро подсчитать количество строк в текстовом файле независимо от той ОС, в котором выполняется наш код. Более того, текстовый файл может быть сколь угодно большим, поэтому мы будем использовать буферизацию потока, чтобы не израсходовать всю доступную оперативную память.
👍5
JetBrains анонсирует онлайн-конференцию IntelliJ IDEA Conf 2024, которая пройдёт в онлайн-формате 6 и 7 марта.

Вот некоторые темы, которые будут на ней обсуждаться:
🔹Улучшении производительности IntelliJ IDEA.
🔹Функции и классы стандартной библиотеки Kotlin.
🔹Основы безопасной разработки для защиты приложений.
🔹Изменения, грядущие в Java 22 и последующих версиях.
🔹Создание приложений с использованием ChatGPT API.
🔹Освоение Java-тестирования с использованием JUnit, Mockito и AssertJ в IntelliJ IDEA.

Участие бесплатное, требуется предварительная регистрация.
👍3
В продолжение предыдущей темы, канал YABED (мои хорошие знакомые) является информационным партнёром конференции и потому проводит розыгрыш лицензий JetBrains All Products Pack! Для участия в розыгрыше достаточно подписаться на их канал и нажать кнопку "Участвую".
👍3
🚀 Всем привет! Как вы уже знаете, наш канал выступает информационным партнёром конференции IntelliJ IDEA Conf 2024. В программе много годноты – обязательно к просмотру. Регистрируйтесь по ссылке здесь.

🏆 А мы выполняем обещание и специально к конференции проводим розыгрыш ДВУХ кодов активации для полного набора инструментов для разработки JetBrains All Products Pack!

Что нужно сделать, чтобы принимать участие?
✅ быть подписанным на наш канал
✅ нажать кнопку "Участвую"
🎯 Итоги мы подведём 29 февраля с помощью рандомайзера. Всё честно и просто.

Вперёд, за призами и присоединяйтесь к IntelliJ IDEA Conf 2024! Удачи!
#IntelliJIDEAConf
👍3