Pull to refresh
4
0
Максим @makdoc

Пользователь

Send message

Сломать объект с помощью финализации

Reading time3 min
Views8.5K

Вчера перевели в статус Candidate новый JEP 421: Deprecate Finalization for Removal. Путь к удалению механизма финализации из Java начался в Java 9, когда метод Object.finalize() был впервые объявлен deprecated. Рано или поздно механизм исчезнет из Java, поэтому если вы его используете, самое время задуматься об альтернативах. Однако статья не об этом.


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

Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments8

Простой шутер от третьего лица на Unreal Engine. Часть 2

Reading time4 min
Views8.1K

До прочтения этой статьи рекомендую прочитать первую часть.

План на сегодня:

Сегодня мы создадим простеньких противников, который будут ходить туда-сюда. Научимся наносить им урон.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments3

Учимся считать, играя: подготовка к школе

Reading time6 min
Views3.7K

Школа предъявляет высокие требования к ребенку: уже с первых занятий необходимо уметь быть усидчивым, сосредоточенным, слушать, удерживать и выполнять инструкцию, ориентироваться в том, как выполнять задание. Например, для последнего нужно понимать структуру задачи, что в ней можно выделить несколько действий, что для успешного решения нужно выполнять их в определенном порядке. Для этого нужно не только успевать осваивать большие объемы учебного материала, но и уметь учиться - понимать «правила» того, как выглядит учебный процесс.

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

Читать далее
Total votes 8: ↑5 and ↓3+5
Comments4

Создание собственных RequestBody и ResponseBody

Reading time7 min
Views5.5K

Думаю, что многие из вас сталкивались с добавлением собственных HttpMessageConverter в своём проекте. Ну или хотя бы слышали за такую возможность. Однако, возникают ситуации, когда мы хотим не только добавить свой собственный конвертер, но и создать собственную аннотацию для явного обозначения того, что тело ответа или запроса будут обработаны нестандартными способами Spring. Более того, данные аннотации могут содержать дополнительную информацию, которая потребуется вашему конвертеру.

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

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Какую СУБД выбрать и почему? (Статья 2)

Reading time4 min
Views11K

После публикации статьи “Какую СУБД выбрать и почему? (Статья 1)” ко мне поступили справедливые комментарии о том, что я не упомянул такие типы СУБД, как Time Series и Spatial. В этой статье я кратко опишу их и добавлю еще два типа — Search engines и Object-oriented (объектные).

Читать далее
Total votes 16: ↑10 and ↓6+5
Comments15

Java на одноплатниках: легко и просто

Reading time4 min
Views6.7K

Привет уважаемый читатель!

В какой-то момент, на нашем замечательном COVID карантине, появилось свободное время и посмотреть на одноплатные компьютеры, которых сейчас уйма всяких разных. Однако, работать с ними именно из Java оказалось достаточно большой проблемой, т.к. экосистема – оставляла желать лучшего. Нет, я не про запуск Java на одноплатных компьютерах, а про работу с периферией в лице сенсоров, датчиков и прочих устройств.

В результате блуждания по поисковикам, было найдено несколько возможностей:

1. Oracle Java ME – проект, скорее мертв, чем жив. Давным-давно, в 2006 году, Oracle прибило его гвоздями к Raspberry Pi Model B/STM32429I-EVAL/32746GDISCOVERY с минимальными требованиями по железу того времени. И так выглядит скорее заброшенным, то похоже не полетел.

2. Pi4j – неплохой проект от Robert Savage, который развивается до сих пор. Однако это просто враппер на WiringPi, который автор забросил и “прибитый” гвоздями к определенным платам. Сейчас на сколько я вижу, идут попытки отойти от этого.

3. Diozero – так же неплохой проект от Matthew Lewis, однако как и предыдущие два, “прибит” гвоздями к определенным SoC или платам.

Если я что-то упустил, пишите в комментариях.

А как же “Write once and run anywhere?”, спросит читатель. А вот никак и точка.

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

Несмотря на то, что мир за пределами JVM представлял для меня темный лес, то задача выглядела интересно. Да и учетом того, что современные одноплатники уже начали переходить на 64 бит, имеют большие тактовые частоты и несколько ядер. Имеют на борту такие объемы Memory/Storage, за которые не то, что программист, геймер каких то 15 лет назад продал бы душу “кремневому дьяволу”, то условия и возможности современного железа достаточно сильно поменялись...

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments28

Пишем драйвер виртуального EEPROM для STM32F030

Reading time15 min
Views13K

Кто хотел сохранять какие-либо данные в FLASH микроконтроллера во время работы устройства сталкивались с особенностями работы с этим видом памяти. Из-за необходимости стирания страницы большого объёма для перезаписи ячейки FLASH памяти, возникает угроза потери данных из-за отключения питания во время процесса обновления (один из вариантов). В этой статье я расскажу как можно упростить работу с FLASH, да и ещё с гарантией сохранения данных при прерывании процедуры обновления на любом этапе. Реализуем это на STM32F030.
Читать дальше →
Total votes 43: ↑40 and ↓3+56
Comments29

Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад

Reading time11 min
Views23K
Это — тёплая, ламповая статья об Ассемблере и разработке ПО. Здесь мы не будем пытаться писать убийцу Майкрософта или Андроида. Мы будем писать убийцу 2048. Здесь не будет докера и терраформа с кубером. Зато здесь вы сможете найти большое количество материалов по Ассемблеру, которые помогут вам вновь погрузиться в мир трёхбуквенных инструкций. Доставайте пивко, и поехали. (Саундтреком к этой статье можно считать IBM 1401 a system manual)

Читать дальше →
Total votes 74: ↑68 and ↓6+89
Comments100

Чему я научился делая игры на LibGDX

Reading time12 min
Views20K

Привет, Хабр! 👋 В этом топике хочу поговорить о незаслуженно забытом, бесплатном фреймворке для разработки кросс-платформенных игр - LibGDX. Поделиться секретами своей кухни и решениями, которые я использую при разработке своих игр-головоломок. Ворнинг! Много кода под катом.

Читать далее
Total votes 15: ↑15 and ↓0+13
Comments13

Обработка русского языка на Java

Reading time4 min
Views11K

Рассказ пойдет об одной новой, общедоступной Java/Kotlin библиотеке, для работы с русским языком. Она позволяет получить исходные формы + морфологическую информацию для большинства слов русского языка. Статья предназначена для тех, кто создает ботов, обрабатывает сообщения и занимается поиском. Для справки, ключевое отличие лемматизации от стеммизации (урезания до нормализованной формы) состоит в том, что лемма удовлятворяет правилам языка, например для слова "яблоками" леммой будет "яблоко", а не просто урезанный корень. Лемма может быть и более сложной, например для слова люди, начальная форма – человек. В этой статье мы рассмотрим способ быстрого извлечения такой информации из морфологического словаря.

Запустить процесс
Total votes 10: ↑10 and ↓0+10
Comments13

Мой MikroTik – моя цифровая крепость (часть 3)

Reading time10 min
Views29K
Статья является продолжением первой и второй частей, посвящённых организации практической безопасности сетей, построенных на оборудовании MikroTik. Ранее были рассмотрены общие рекомендации, безопасность уровней L1, L2 и L3. Настало время показать варианты реализации централизованного логирования. Поехали!
Читать дальше →
Total votes 30: ↑28 and ↓2+39
Comments10

48 полноценных бесплатных книг для программистов (happy developer's day)

Reading time2 min
Views109K

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

Дисклеймер. Все эти книги взяты с одного ресурса, который существует за счет донейшенов. Получить книги можно без осуществления донейшенов, ресурс полностью бесплатный, пожертвования опциональны. Все книги написаны на основе контента со StackOverflow и являются код-ориентированными. Книги со временем обновляются. По ссылкам -- книги, актуальные на 15.09.2021.

Читать далее
Total votes 83: ↑82 and ↓1+98
Comments55

Java 17 и Jakarta EE 9 — минимальные требования для Spring Framework 6

Reading time3 min
Views19K


От переводчика: на конференции SpringOne были сделаны довольно важные анонсы относительно нового поколения Spring Framework, на Хабре это почему-то это прошло незамеченным. Судя по всему, в ближайшее время мы будем жить не просто в мире “Java 8/Java 11+”, а появится ещё один водораздел: “Spring 5/Spring 6+”. Чем это грозит? Например, если вы используете Hibernate 5.4, то придется принудительно обновиться на Hibernate 5.5+.


1 сентября на SpringOne было объявлено, что минимальные требования для Spring Framework 6 и Spring Boot 3, который будет доступен в 4 квартале 2022 года, сдвигаются в сторону увеличения:


  • Java 17+ (c Java 8-17 в линейке Spring Framework версии 5.3.x)
  • Jakarta EE 9+ (с Java EE 7-8 в линейке Spring Framework версии 5.3.x)
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments4

DIY-музыка — проекты, которые помогут погрузиться в тему

Reading time3 min
Views6.7K

При желании собрать цифровую звуковую рабочую станцию можно на основе open source инструментов — о некоторых из них мы рассказывали ранее. Однако перенести свои акустические эксперименты в оффлайн и собрать синтезаторы и педалборды на основе открытых схематиков — тоже можно. Поговорим о проектах, которыми пользуются популярные исполнители, в том числе The Prodigy.

Читать далее
Total votes 8: ↑6 and ↓2+7
Comments3

Перестроились в модульный монолит, а не в микросервисы

Reading time17 min
Views9.8K

Относительно недавно мы начали строить качественно новую версию платформы "Юнидата", в которой изменилось очень многое, включая архитектуру, технологии, подход. Даже основная идея продукта приросла новыми деталями.

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

Об авторе статьи. Меня зовут Илья, я занимаюсь разработкой новой версии. Мне не довелось работать с предыдущими версиями "Юнидата", и в проект я пришел на этапе прототипа. Я могу быть не до конца объективен на тему того, почему было выбрано то или иное решение, если это происходило еще до моего присоединения к продукту. В причинах перехода я написал свое видение, после общения с командой.

Итак, всем, кто любит истории переезда с ноткой технических особенностей, добро пожаловать под кат.

Краткий тех.обзор

Сейчас мы имеем модульный монолит и на бэке и на фронте. Они расположены в отельных репозиториях + есть еще один, который содержит настройки для запуска всего приложения в контейнерах.

Кроме того, продукт разделён на Community Edition (хранится в публичном гитлабе) и Enterprise Edition.

Фронтенд состоит из 20 модулей (число не конечное). Мы используем свежую версию typescript и почти свежую react (сейчас 16, но перевод на 17 - дело ближайшего времени). Применяем MVC подход в каждом модуле: реакт только view-слой, своя observable модель (обязательно про нее напишем отдельную статью), mobx сторы в качестве контроллеров.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments2

Каждому 3D принтеру — по рельсам

Reading time5 min
Views20K

Давно хотел написать статью о своём положительном опыте переделки 3D принтера с линейных стержней на рельсы, похоже время пришло.

В ходе этой статьи расскажу, что и как я делал, возможно, мой опыт кому-то поможет перевести свою рабочую лошадку на рельсы.
Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments62

Все уроки по ардуино

Reading time5 min
Views284K
Однажды появилась необходимость собрать все уроки, обучающие материалы (tutorials) с habrahabr и geektimes в одном месте и немного их систематизировать. В этом сборнике обучаек представлены более 100 статей на тему ардуино с пометкой «tutorial», либо содержащие несложные для новичков проекты на ардуино, а также немного видеоуроков по смежным темам. Статьи разделены на 10 тематик по сферам применения собранных устройств. Также хочется напомнить, что весь обучающий материал, опубликованный на habrahabr и geektimes является интерактивным: в любой момент можно задать вопрос автору в комментариях к статье. Как правило авторы на них отвечают. Этот сборник будет дополняться новыми обучайками (tutorials) по мере их публикации.

Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments25

25+ видеоуроков по Android для начинающих

Reading time2 min
Views414K

Приветствую вас, уважаемый хабрачеловек!
Предлагаю вашему вниманию бесплатно серияю видеоуроков в котрых рассмотренно базовые понятия разработки под Android.
Читать дальше →
Total votes 111: ↑108 and ↓3+105
Comments33

CS50`s Introduction to Game Development с русскими субтитрами — Лекция 0. Pong

Reading time1 min
Views5.7K

Посмотрела все лекции гарвардского курса по разработке игр и так вдохновилась, что захотела перевести их на русский. Изначально хотела просто добавить субтитры к оригинальному видео, но, к сожалению, на Youtube эту функцию убрали, поэтому пришлось загружать заново.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments0

Самогонный аппарат — полный автомат. Часть 3. Заключительная

Reading time15 min
Views26K
Прошло +100500 лет с момента первой и второй публикаций. Настала пора поставить точку в этом многолетнем вопросе.

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


КДПВ. Точь-в-точь — мой аппарат
Поехали? Нет! Погнали!
Total votes 51: ↑50 and ↓1+62
Comments22

Information

Rating
Does not participate
Location
Ташкент, Ташкентская обл., Узбекистан
Date of birth
Registered
Activity