Как стать автором
Обновить
42.7
Карма
0.2
Рейтинг
Константин Грибов @grossws

Разработчик

  • Подписчики 14
  • Подписки 17

Как мы ускоряли комментарии Хабра

Кроме того, на мобильном ff нажатие на число непрочитанных не срабатывает если не нажимать НАД числом (на сантиметр выше).

Не работает выделение в окне редактора комментария.

Ну из из того что писал в поддержку, но было полностью проигнорировано, отвалились хоткеи (t, f). Это просто пушной зверёк какой удар по юзабилити.

Туториал по JUnit 5  - Аннотация @Disabled

Или в небольшое количество. Про lifecycle annotations + per instance/per class вполне можно рассказать в одной статье (и то, мне кажется это уже было где-то во времена выхода junit5).

Аналогично repeated и parameterized, test factory, dynamic tests тянут, как максимум, на одну статью. И эта тема, скорее всего, тоже плотно освещалась.

Если этот поток статей ещё нормально смотрится личном блоге, на хабре он выглядит как поток спама. Что в свою очередь люди типа меня будут интерпретировать как откровенное неуважение к читателям. Особенно учитывая что в предыдущих статьях уже откровенно намекали что не надо так.

Kubernetes и другие оркестраторы

Если уж упоминать opensift, то стоит вспомнить и okd, который является его open source базой, как традиционно происходит со многими продуктами красношляпы.

Возможности Java 17 и рекомендации по миграции

Мне нравится потенциальная возможность перехода на 17, но по реальным ощущениям вы нарвётесь на необходимость использования --add-opens в каком-то количестве, практическую невозможность использования JPMS (например, если где-нибудь в зависимостях закралась guava, которая транзитивно тащит jsr305 с аннотациями в javax.annotation) и т. п.

Apache Maven 3.6.x, Gradle 6.x, всякие плагины с неистовой любовью к xml типа maven-jaxb2-plugin, некоторые annotation processor'ы, библиотеки сериализации, использующие defineClass и т. п. радостно разваливаются при запуске под 17. Рано или поздно это, конечно, пройдёт, но переход безболезненный только в тривиальных случаях.

В реальности -- надо пробовать и тестировать. В том числе гонять свои приложения под нагрузкой на 17, смотреть как реально поведёт себя ZGC/Shenandoah, если вы до этого жили с CMS. Если у вас используется jni/jna/jnr-ffi, kryo или какой-нибудь offheap, смириться с возможной болью и потихоньку сменить рантайм.

В исходниках версию с 1.8/11 поднять всегда успеете, вслепую прыгать дальше 11, имхо, не стоит. Легче отскочить на 11 при наличии проблем.

Возможности Java 17 и рекомендации по миграции

Map<String, List<MyDtoType>> myMap = new HashMap<String, List<MyDtoType>>();

В java 8 вы скорее напишите Map<String, List<MyDtoType>> myMap = new HashMap<>();, приведённый в статье способ -- это этоха 1.5/1.6.

Туториал по JUnit 5  - Аннотация @Disabled

Вы по каждой аннотации отдельную статью планируете? Я понимаю что это перевод, но превращать хабр в твиттер (даже если автор оригинального набора туториалов делал их максимально короткими) -- это, имхо, перебор

Nginx + Node.js: делаем идентификацию и аутентификацию

Осталось надеятся что в проде вы нигде не забываете заменить XlSklNDEtGXHpbkkX6ri7Fqj на новое случайное значение. А то, знаете, misconfig всякий бывает ,)

Spring Cloud Config — обновление конфигурации

Если я правильно вас понял, то kv2 -- это со стороны клиента vault. Вопрос был про бэкенд где сам vault хранит своё состояние. Возможно вы используете integrated storage про который я совсем забыл.

Здесь есть информация о максимальных размерах storage entry. Начиная с 1.5.3 их можно увеличить, но вполне возможно что вам хватит 512k для конфигурации.

Spring Cloud Config — обновление конфигурации

А поверх какого хранилища у вас работает vault? Наверняка же consul/etcd или подобная HA KV-store.

В принципе никто не запрещает хранить в нём и конфигурацию, не уверен что есть готовый property source. Получите больше нагрузки на vault, потенциальный геморрой с бутстрапом, хотя может и небольшой. Ну и можно упереться в размеры значений в самом vault, не помню есть ли там жёсткие лимиты. Ещё возможно посложнее будет если хочется делать property refresh. А так идея имеет право на жизнь.

Spring Cloud Config — обновление конфигурации

Более стандартным подходом будет использовать для конфигурации kv в consul (который часто используется совместно с vault) или etcd. IIRC, в spring cloud был стартер и для получения конфигурации из консула, и для регистрации в его service discovery.

Тип данных Either как альтернатива выбрасыванию исключений

Смешались в кучу either/result/validation.

Для разумного удобства работы с either нужны проекции, иначе начинают плодиться mapLeft/mapRight и далее по тексту.

Обработка ошибок и валидация - несколько разные задачи. В первой хочется fail fast, во второй - не столько.

При обработке ошибок можно использовать either как poor man's result/try. В реальности result/try должен перехватывать не всё throwable, а только те из которых есть шанс восстановиться (и это зависит от контекста). Можете ли вы в данном случае пережить, скажем, oom или нет.

Валидация обычно пытается набрать максимально разумное количество ошибок на данном уровне. Когда вы делаете, скажем, валидацию развесистой структуры в веб-сервисе (или тупо в форме) часто полезно сообщить об ошибках во всех полях входных данных, а не только в первом попавшемся. Поэтому там любят сделать scatter-gather: на отдельных операциях перехватываем ошибки валидации, потом сворачиваем всё либо в удачный результат, либо в агрегат, описывающий проблемы. Аналогичная история с батч-запросами, шардированием, вызовом распределенных сервисов и т.п.

ЧеловекEPIDоножка, или Intel’s Enhanced Privacy Identification (EPID) Technology

Ура, заново изобретён kerberos, oauth2, u2f/webauthn и тонна других схожих механизмов с разделением клиента, провайдера и доверенной стороны.

Ну и автору стоит вычитать статью и проверить что он не путатет authn и authz.

Физик и ролики

В таком режиме использования в течение 2 лет я так и не стер родные колеса роликов (ролики Seba FR-2). Потом я стал кататься сильно реже, но вот спустя лет 8 эти колеса все еще пригодны к использованию, хотя и уменьшились миллиметров на 8-10 в диаметре

Сильно зависит от асфальта, пробега и манеры катания. Я родные колёса на fr2 убил за пару сезонов (до < 70мм). Активные циклы разгона/торможения к этому приводят на ура.

Советы по работе с Quarkus

Мне лично Quarkus понравился тем что он нацелен на Jakarta EE/MicroProfile, что для тех кто имеет легаси из Java EE мира (или около того) делает миграцию более дешёвой по сравнению со Spring. Заход в cloud-native/cloud-ready там скорее боковая фича по сравнению с build-time резолвингом в их реализации CDI.

В нашем случае всё оказалось не так просто, гладко и шелковисто, т.к. несмотря на использование EEшных кусков (JAX-RS, Servlet и CDI поверх embedded Jetty, Weld & Resteasy) у нас есть некоторый кусок CDI extensions (который не поддерживается в Quarkus ARC), работа с диспатчингом и контекстами Resteasy и подобные развлечения.

Но в целом подход Quarkus'а мне понравился. Хотя часть народа удивляется их JAX-RS без Servlet API (там Resteasy+Vert.x+Netty вместо привычных сервлет-контейнеров типа Tomcat/Jetty).

Для green field разработки можно выбираться что нравится. И текущий Spring Boot вполне удачный конкурент.

Учитывая что за Quarkus стоит красношляпа -- они имеют все шансы влезть в нишу простого фреймворка для микросервисов и "микролитов" (microlith = microservice/monolith) со стандартно доступными opt-in батарейками типа метрик, трассировок, аггрегации логов, cloud conf, service discovery, load balancing и прочих развлекух.

Физик и ролики

Разные соулы и плуг на хреновом (или неизвестном) покрытии -- дело опасное. Т-стоп и простая человеческая змейка (если хватает ширины дороги) на мой взгляд являются самыми простыми и доступными способами торможения (если нет штатника).

Также в статье упоминается достаточно сложный (и стрёмный, если асфальт заранее не проверен) parallel, но не упомянут довольно популярный power (разворот спиной, глубокий присяд и тормозящая нога сильно вынесенная вперёд), который довольно эффективен, позволяет оттормозить товарища не сильно теряя в управляемости. Бонус -- положение тела с довольно низким центром тяжести, сложнее опрокинуться.

Выпуск Rust 1.56.0 и 2021 редакция

А урезанный вариант реализации GAT не вошел в 1.56?

Как я случайно заблокировал 10 000 телефонов в Южной Америке

Как известно, S в аббревиатуре IoT означает security.

Основные linux-команды для новичка

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

Пять лет Rust

Дёргать из rust библиотеки с C ABI проблемы большой нет, равно как и наоборот предоставлять C ABI наружу. А поддержка конкретной платформы — дело llvm, как выше написал Antervis.


Для ARM всё довольно неплохо и постепенно развивается. Не знаю как ситуация с Cortex-R, но Cortex-M живёт и здравствует с постепенным наращиванием объёма библиотек, улучшение hal и средств отладки. IIRC, какие-то шевеления в рамках nRF были, посмотрите https://github.com/nrf-rs/nrf-hal и соседние проекты, также https://github.com/rust-embedded/wg.


UPD: судя по devkit'у nRF52 там простой Cortex-M4F, который прекрасно поддерживается текущим компилятором rust, так что больших проблем быть не должно, если говорить про низкоуровневую часть.

Rust для Java разработчиков

Когда делается прототип — вполне нормально. Хотя с использованием нормальных библиотек обработки ошибок типа snafu/anyhow, когда не нужно писать много бойлерплейта для конверсии типов ошибок, можно спокойно использовать ?.

Информация

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