Как стать автором
Обновить
3
0.1
Роман Давыдкин @Beholder

Java-разработчик

Отправить сообщение

Английский, которому меня не учили

Время на прочтение14 мин
Количество просмотров75K

Или максимы Английского языка, которые бы я хотел знать 20 лет назад.

Чем отличается хороший геймер от плохого? Хороший геймер сидит и изучает игру. Он знает каждый закуток. Он может без запинки назвать все характеристики всех юнитов в Star Craft. А самый крутой игрок знает все пропускные способности желтых, красных и синих конвейеров. А плохой игрок использует чит-коды или assistant apps. 

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

Я не раз в своей жизни слышал, что Английский чрезвычайно сложен. Подобные заявления фактически являются чит-кодом. Вы просто сдаётесь и перестаёте пытаться. А зря. В английском языке есть очень много полезных и понятных вещей. 

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

Okay, let's go...
Всего голосов 103: ↑101 и ↓2+130
Комментарии174

Что нового в Java 20?

Время на прочтение7 мин
Количество просмотров23K
image

Версия Java 20 должна быть выпущена в марте 2023 года, и ожидается, что в ней появится целый ряд изменений и новых функциональных возможностей. Мы подготовили обзор, описывающий, какие JEP с наибольшей вероятностью будут приняты в JDK 20, и какие из них, как мы надеемся, будут приняты в ближайшей перспективе!

Последняя версия JDK (Java Development Kit) 19 была выпущена 20 сентября 2022 года. Следующая версия, Java 20, планируется как релиз без LTS, а следующая версия 21 — как релиз с долгосрочной поддержкой (LTS). Ожидается, что грядущая версия 20 принесет ряд замечательных обновлений, поэтому мы с нетерпением ждем марта, чтобы получить ее в распоряжение!

Но прежде чем перейти к рассмотрению JEP, запланированных для Java 20, давайте сделаем краткий обзор процесса обновления Java и концепции предложений по улучшению, чтобы целиком представлять картину происходящего.
Читать дальше →
Всего голосов 13: ↑11 и ↓2+15
Комментарии13

Оформляем большие документы по ГОСТам в MS Word и не только

Время на прочтение5 мин
Количество просмотров9.4K

Продолжаем тему оформления документов по ГОСТам, начатую в статье «Оформляем приложения по ГОСТ 7.32 в MS Word и не только». На этот раз рассматриваем подходы к автоматизации форматирования больших текстов (более 500 страниц) в редакторе MS Word. Предлагаемые подходы применимы также в других редакторах, использующих стили, в частности, LibreOffice Writer.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии23

Kotlin Symbol Processing. От теории до практики

Уровень сложностиСредний
Время на прочтение28 мин
Количество просмотров11K

Я расскажу в этой статье о Kotlin Symbol Processing, также известном как KSP.

Сначала обсудим теоретические основы работы KSP, после, конечно же, перейдём к практике. На примере небольшой задачи, подобной той, что мы решаем с помощью KSP в нашей компании, покажу, как анализировать код с помощью KSP, генерировать файлы, соблюдать контракты, описанные разработчиками KSP. 

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии6

Детальное рассмотрение поведения при использовании INCLUDE

Время на прочтение14 мин
Количество просмотров8.7K

Некоторые базы данных такие, как Microsoft SQL Server, IBM Db2, а также PostgreSQL начиная с 11 версии – предлагают прибегнуть к оператору include для генерации индекса. Представление данного функционала в PostgreSQL (исходная статья вышла 30.04.2019) послужило поводом для этого объёмного рассуждения о работе с оператором include.

Содержание:

1)    Напоминание: btree-индексы

2)    Напоминание: Index-only сканирование

3)    Оператор include

4)    Фильтрация по полям в include

5)    Уникальные индексы при использовании include

6)    Сравнение

7)    PostgreSQL: Никакой фильтрации до проверки области видимости

Читать далее
Всего голосов 10: ↑8 и ↓2+8
Комментарии3

Добавляем поддержку Flatpak в Compose Desktop

Время на прочтение7 мин
Количество просмотров1.6K

Те, кто делали мультиплатформенное приложение с помощью Compose Multiplatform, наверное уже сталкивались с тем, в как публиковать приложение. Для Linux на текущий момент доступны следующие форматы: Deb - "нативные" пакеты для Debian-подобных дистрибутивов; Rpm - такие же пакеты для Fedora, RHEL; AppImage - portable приложения(одним файлом). Недостаток первых двух - заточенность только под одну платформу(Debian и Fedora соответственно), второго - отсутствие пакетного менеджера в абсолютном большинстве дистрибутивов. Негодуя с этого, я решил внедрить compose-приложение в Flatpak - пакетный менеджер для sandboxed приложений. Sandboxed apps - приложения, которые по умолчанию не имеют доступа к файлам пользователя и другим настройкам. Flatpak дает уверенность, что та или иная функция/бинарник присутствуют в системе и могут быть использованы. Также с помощью Portals, которые встроены в Flatpak, приложение может безопасно и независимо осуществлять некоторые операции вроде доступа к камере, показа уведомлений и другого. Как вы могли видеть ранее, поддержки Flatpak в Compose Multiplatform нет.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

Человеческим языком про метрики 3: перцентили для чайников

Время на прочтение10 мин
Количество просмотров115K

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

Читать далее
Всего голосов 19: ↑18 и ↓1+19
Комментарии2

Готовим Window Inset под соусом Jetpack Compose и щепоткой View

Время на прочтение19 мин
Количество просмотров15K

Обожаю запах свежей мобильной разработки по утрам, дням и вечерам ??

Все примеры из статьи можно посмотреть в этом репозитории.

Вот только почему, почему ещё не все используют режим edge2edge? Разве для того я покупал огромный безрамочный телефон, чтобы смотреть на траурные черные полоски с кнопками?!

К сожалению, сейчас все еще встречаются Android-приложения, которые не поддерживают edge-to-edge. Складывается ощущение, что разработчики либо не знают об insets, либо просто не умеют их готовить. На самом деле реализовать edge-to-edge не сложно, а благодаря этой статье вы сможете разобраться с insets в разы быстрее.

Сегодня я надену специальный мобильный фартук и расскажу, что такое режим edge-to-edge в мобильных приложениях и как работать с insets в Android. А ещё мы разберём примеры обработки insets не только во view, но и в compose. Если статьи о работе с insets в view еще можно найти на просторах интернета, то информацию про работу с ними в compose можно найти только в официальной документации.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии1

Глубокое погружение в Java Memory Model

Время на прочтение53 мин
Количество просмотров148K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии60

Как ускорить работу PostgreSQL с помощью конфигурации базы и оптимизации запросов

Время на прочтение12 мин
Количество просмотров40K

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

Администратор баз данных в Southbridge и ведущий инженер компании Data Driven Lab Иван Чувашов занимается базами данных 15 лет и сегодня хочет поговорить про оптимизацию запросов. Разбирать все будет на примере PostgreSQL, так как именно с этой базой он сейчас работает плотнее всего.

Эта статья — конспект бесплатного вебинара об оптимизации PostgreSQL от «Слёрма». Если вам удобнее смотреть, а не читать, переходите на YouTube.

Читать далее
Всего голосов 16: ↑14 и ↓2+15
Комментарии13

12 схем архитектуры английской грамматики

Время на прочтение12 мин
Количество просмотров37K

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

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

Читать далее
Всего голосов 32: ↑24 и ↓8+20
Комментарии86

Магия Dispatcher'ов и как сделать свой Main

Время на прочтение6 мин
Количество просмотров12K

Я думаю сейчас не осталось людей, незнакомых с корутинами в Kotlin. Волшебный инструмент, согласны?

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии2

Неожиданная находка, которая освобождает 20 GB неиспользованного индексного пространства

Время на прочтение14 мин
Количество просмотров33K

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

Начнем с конца: в итоге нам удалось освободить более чем 70 GB не оптимизированного и неиспользуемого пространства без удаления индексов и данных. 

Читать далее
Всего голосов 47: ↑44 и ↓3+54
Комментарии9

PostgreSQL Antipatterns: обновляем большую таблицу под нагрузкой

Время на прочтение6 мин
Количество просмотров29K
Как стоит поступить (а как точно не надо), если в «многомиллионной» активно используемой таблице PostgreSQL нужно обновить большое количество записей — проинициализировать значение нового поля или скорректировать ошибки в существующих записях? А при этом сохранить свое время и не потерять деньги компании из-за простоя.


Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии8

Как живет IT-шник на фрилансе с БАР без таблеток

Время на прочтение14 мин
Количество просмотров22K

БАР была со мной долгие годы, но в 22 года появилась ясность.

С сезонной депрессией знакомо немало людей, привыкли, что от недостатка витамина D наш организм начинает страдать. Мы чувствуем упадок сил, теряем положительные эмоции, не выходит собрать себя с постели для легкого подъема, еле доживаем до конца рабочего дня. При БАР депрессия наступает внезапно, длится невыносимо долго, проходит, как по щелчку пальца.

Биполярное аффективное расстройство (БАР) — психическое расстройство с поломкой работы тела. Если у человека БАР, то «взять себя в руки» не получится. Болезнь остается на всю жизнь и прогрессирует со временем.

Люди с БАР немного отличаются. Болезнь протекает периодами. Наличие смен состояний позволяет поставить диагноз человеку. Итак, у этих состояний есть названия: мания, депрессия, гипомания, смешанные состояния и «ремиссия». При этом депрессия и мания — две крайности. Одно состояние выключает человека из жизни, приятных ощущений и радости, а второе вызывает прилив сил до невозможности уснуть и восстановиться. Из-за того, какие состояния присутствуют в большей степени у человека, биполярное расстройство различают двух типов: в первом случае наблюдаются мании, во втором случае только гипомания, человек чаще живет в депрессии.

У меня расстройство второго типа, так что риск не спать сутками, решить продать все имущество и резко помчаться за билетами на Бали — не мой случай.

Первые симптомы биполярного расстройства

Когда одноклассники покоряли Doom и Dota, в моей жизни произошло много перемен. Мать выгнала из дома. В попытках выживать самостоятельно я разносил листовки и мыл авто, когда хватало времени - сидел за партой и читал книги. Через полгода “поверхностной учебы”, учителя забили тревогу, о ситуации узнал отец. Чтобы разобраться в вопросе, повел в Психоневрологический диспансер (коротко ПНД). Так я впервые оказался на приеме у психиатра.

Читать далее
Всего голосов 35: ↑31 и ↓4+41
Комментарии28

«Ленивый сахар» PostgreSQL

Время на прочтение7 мин
Количество просмотров41K

SQL - декларативный язык - то есть вы описываете "что" хотите получить, а СУБД сама решает, "как" именно она будет это делать. Некоторые из них при этом позволяют им "подсказывать", как именно лучше выполнять запрос, но PostgreSQL - нет.

Тем не менее, "синтаксический сахар" некоторых языковых конструкций позволяет не только писать меньше кода (учите матчасть!), но и добиться, что ваша база будет делать часть вычислений "лениво", только при фактической необходимости.

Читать далее
Всего голосов 42: ↑42 и ↓0+42
Комментарии15

Thymeleaf + Spring WebFlux + Spring Security

Время на прочтение17 мин
Количество просмотров12K

Thymeleaf появился довольно давно, как минимум 10 лет назад, но он до сих пор весьма популярен и активно поддерживается. Шаблоны Thymeleaf удобны тем, что при простом открытии в браузере они выглядят как обычные HTML-страницы и их можно использовать как статический прототип приложения.

В этой статье рассмотрим, как создать простое приложение Spring WebFlux с Thymeleaf, аутентификацией Okta OIDC, защитой от CSRF-атак и контролем полномочий.

Читать далее
Всего голосов 6: ↑3 и ↓3+1
Комментарии0

11 хитростей Chrome DevTools, которые помогут Вам стать Senior FrontEnd-разработчиком

Время на прочтение4 мин
Количество просмотров63K

Я полагаю, вы знакомы с инструментами разработчика браузера Chrome. Мы можем использовать его для просмотра сетевых запросов, анализа производительности веб-страницы и отладки последних функций JavaScript.

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

Давайте посмотрим
Всего голосов 55: ↑49 и ↓6+50
Комментарии23

Java 17 для тех, кто не следил. Часть 2: API

Время на прочтение8 мин
Количество просмотров13K

image


Если обновляешься со старой Java на LTS-версию Java 17, как разобраться сразу во всех фичах за несколько лет? Чтобы помочь с этим, мы уже публиковали расшифровку доклада tagir_valeev с нашего IT-фестиваля TechTrain. Но доклад такой подробный, что разделили его на два текста: в предыдущем была основная часть про языковые изменения, а теперь представляем вам завершающую часть про API.


И напоминаем, что следующий TechTrain состоится уже 14 мая (онлайн, бесплатно), а в июне будет много Java-докладов на JPoint (онлайн + офлайн).


Далее повествование идёт от лица спикера.

Читать дальше →
Всего голосов 22: ↑21 и ↓1+26
Комментарии4

Этапы работы Jetpack Compose

Время на прочтение9 мин
Количество просмотров12K

Как и большинство UI-фреймворков, Compose рендерит кадр в несколько различных этапов. В системе Android View есть 3 этапа: Measure, Layout и Drawing. Compose очень похож, но имеет важный дополнительный этап Composition в начале.

1. Composition: какой UI показывать. Compose запускает composable-функции и создает описание вашего UI 

2. Layout: где размещать UI. Этот шаг состоит из двух: измерение и размещение (measurement и placement). Элементы верстки измеряют и помещают самих себя и все дочерние элементы в 2D-координатах.

3. Drawing: как рендерить. UI-элементы отрисовываются в Canvas, обычно на экране устройства.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Информация

В рейтинге
3 185-й
Откуда
Тульская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer