Pull to refresh
50
-1.6
Илья Родионов @ris58h

Продуктовый разработчик (Java/JavaScript)

Send message

Wi-Fi без Интернета на рейсе Southwest

Level of difficultyEasy
Reading time4 min
Views14K

Недавний полет я провел, пытаясь выяснить, что можно сделать, подключившись к Wi-Fi на борту самолета, но без доступа к Интернету.

Читать далее
Total votes 23: ↑21 and ↓2+22
Comments23

Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR

Level of difficultyMedium
Reading time9 min
Views1.8K

В этой статье я не буду описывать как создать плагин для IntelliJ с поддержкой %lang_name% с нуля. Кроме официальной документации и туториала от JetBrains в сети есть множество статей и примеров. На Хабре тоже есть пара весьма подробных статей от @pyltsinm. Фокус будет на разработке плагина с использованием ANTLR и моём опыте в этом нелёгком деле.

Примером в этой статье будет WebCalm - плагин для IntelliJ с поддержкой JavaScript и CSS, который я сделал с помощью ANTLR.

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

Пишем на Python как на Rust

Level of difficultyMedium
Reading time17 min
Views30K

Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.

Читать далее
Total votes 88: ↑83 and ↓5+94
Comments42

11 MacOS приложений для продуктивной работы с трекпадом

Reading time3 min
Views10K

MacOS имеет большой набор возможностей по управлению с помощью трекпада, но следующие 11 приложений сделают вашу работу с ним ещё продуктивнее.

Читать далее
Rating0
Comments9

Компилируем C++ приложение для запуска в браузере

Reading time4 min
Views1.5K

У фреймворка Android есть небольшой инструмент под названием validatekeymaps.
Это утилита для проверки синтаксиса конфигурационных файлов устройств
ввода (*.kl, *.kcm, *.idc или virtualkeys.*). В документации
предлагается собрать её самостоятельно: скачать исходники Android,
установить необходимую систему сборки и т.д. И это в почти 2023. Неужели
нельзя сделать это в вэбе, чтоб без заморочек и удобно для
пользователя? Спойлер: можно. Этим и займёмся.

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

Добавляем список глав прямо в плеер YouTube

Reading time1 min
Views2K

У YouTube уже давно есть такая фишка как главы (chapters) для быстрой навигации по частям видео. Огромный недостаток текущей реализации - просмотр списка глав осуществляется в стороннем блоке за пределами плеера, т.к. в театральном и полноэкранном режимах до него непросто добраться. Намного удобнее, кажется, отображать оглавление прямо в плеере. Поправим это с помощью расширения (Chrome, Firefox).

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

Переназначение клавиш в macOS без стороннего софта и консоль как в Quake

Reading time4 min
Views9.9K

Зачастую, в ответ на вопрос "Как переназначить клавиши на macOS?" советуют использовать сторонний софт, например, Karabiner-Elements, но простое переназначение клавиш возможно и нативными средствами.

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

Touch-Tab — эмулируем Cmd-Tab с помощью тачпада в macOS

Reading time2 min
Views2.4K

В последних версиях Windows можно переключаться между окнами с помощью свайпа тремя пальцами, а между рабочими столами - четыремя. Зато в macOS всё по-другому: переключение свайпом (тремя пальцами по-умолчанию) доступно только между рабочими столами или полноэкранными приложениями. А ведь так не хочется тянуться до клавиатуры или ползти курсором в Dock, чтобы переключить приложение! Тут на помощь приходит Touch-Tab.

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

ExKeyMo — кастомизируем раскладку внешней клавиатуры на Android без root

Reading time3 min
Views2.3K

В статье Кастомизируем раскладку внешней клавиатуры на Android без root мы выяснили, что Android-приложение может предоставлять дополнительные раскладки клавиатуры, и научились собирать такое приложение. Но простому (и даже не простому) пользователю лень собирать приложение. Хочется, чтобы это происходило автоматически, и в этом нам поможет ExKeyMo.

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

Считаем 183 дня и не только

Reading time1 min
Views2.9K

Всем привет. Если у вас, как и у меня, возникла потребность подсчитать количество дней в году проведённых зарубежом (а может и любые другие памятные дни года), то рад представить вашему вниманию Annual Day Counter.

Читать далее
Total votes 10: ↑2 and ↓8-5
Comments27

Tree-sitter: обзор инкрементального парсера

Reading time5 min
Views7.8K

Некоторые IDE и текстовые редакторы парсят исходный файл целиком при каждом изменении, что может тормозить на больших файлах, а некоторые делают это построчно с помощью регулярных выражений, что тоже тормозит и не даёт качественной подсветки кода, т.к. теряется контекст. Для решения этих проблем в недрах GitHub был создан tree-sitter - инкрементальный парсер, который используют всё больше и больше проектов. Давайте разбираться зачем и почему.

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

Не мучайте свой мизинец

Reading time2 min
Views12K

Мизинец - слабый палец руки, но в Win/Linux системах он задействован в большом количестве сочетаний клавиш, что заставляет выгибать кисть при нажатии или переносить руку с home row. Посмотрим как можно решить эту проблему.

Читать далее
Total votes 10: ↑7 and ↓3+6
Comments46

Баги в Hello World

Reading time3 min
Views9.8K

Hello World, должно быть, самая часто создаваемая компьютерная программа. Уже десятилетия это первая программа, которую пишут люди, когда начинают изучение нового языка программирования.

Конечно же эта простая программа не должна иметь баги. Верно?

Читать далее
Total votes 27: ↑21 and ↓6+19
Comments21

Youtube Timestamps — расширение для показа временных меток из комментариев

Reading time1 min
Views5K

У YouTube есть возможность оставлять в комментариях временные метки для видео. Просто пишем в комментарии время в формате hh:mm:ss и YouTube сам превратит это в ссылку. Небезызвестный музыкальный сервис Soundcloud позволяет показывать комментарии к трэкам прямо на таймлайне. Так почему бы не сделать такое же в YouTube?!

Читать далее
Total votes 15: ↑14 and ↓1+15
Comments11

Laconic POM для Maven: скрываем многословность pom.xml

Reading time1 min
Views2K

Зачастую, одна из претензий к Maven - выбор многословного XML для описания проекта. Polyglot for Maven должен был решить эту проблему, но проект не "взлетел". Для буквального сокрытия этой проблемы существует IDEA-плагин Laconic POM.

Читать далее
Total votes 9: ↑7 and ↓2+7
Comments11

Bar Breaker: убираем плашки закрывающие обзор на сайтах

Reading time1 min
Views4.7K

Если вы пользуетесь устройством с небольшой диагональю дисплея, то наверное замечали, что на некоторых сайтах "липкие" плашки отъедают значительную часть экрана. Прибавим к этому меню браузера и операционной системы, зачастую узкий экран (16х9) и, в итоге, остаётся не так много вертикального пространства. Расширение Bar Breaker решает эту проблему (доступно для Chrome и Firefox).

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

Кастомизируем раскладку внешней клавиатуры на Android без root

Reading time5 min
Views19K

Мне нравится раскладка клавиатур на Mac: Cmd(Ctrl) под большим пальцем и возможность, без шаманства, прямо в настройках изменить поведение CapsLock. Такого же результата легко добиться в Linux с помощью setxkbmap в консоли или, например, gnome-tweak-tool в UI. Но что делать, если клавиатура подключается к Android?


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

Cross-Origin Read Blocking (CORB) в расширениях для Chrome

Reading time2 min
Views13K
image

Если вы когда-то разработали расширение для Chrome, то может оказаться, что оно перестало работать.

Причина в том, что начиная аж с прошлого года, в браузере Chrome блокируются Cross-Origin запросы из content-скриптов. Это означает, что если ваше расширение обращается к некоторому строннему API напрямую из content-скрипта, такой запрос будет заблокирован благодаря Cross-Origin Read Blocking (CORB)
Читать дальше →
Total votes 11: ↑10 and ↓1+14
Comments1

Information

Rating
Does not participate
Registered
Activity