В Java 8 кардинально переработали процедуру вывода типов выражений. В спецификации появилась целая новая глава на эту тему. Это весьма сложная штука, изложенная скорее на языке алгебры, чем на языке нормальных людей. Не каждый программист готов в этом разобраться. Я, разработчик IDE, которому приходилось ковыряться в соответствующем коде, к своему стыду тоже довольно плохо разбираюсь в этой теме и понимаю процесс только по верхам. Причём сложно не только мне, но и авторам компилятора Java. После выхода Java 8 обнаружились десятки багов, когда поведение компилятора не соответствовало спецификации, либо текст спецификации был неоднозначен. В средах разработки для Java ситуация обстояла не лучше: там тоже были баги, причём другие, поэтому код мог отображаться ошибочным в вашей IDE, но успешно компилироваться. Или наоборот. С годами ситуация улучшилась, многие баги исправили, хотя всё ещё в спецификации остались тёмные углы.
Пользователь
Joker 2021: прошедшая Java-конференция и общая статистика
Обзор рассказывает об увиденных и услышанных докладах, о полученных при этом впечатлениях и о произошедших изменениях в проведении конференции формата онлайн.
«Я больше не могу»: 5 причин эмоционального выгорания программиста и что с этим делать
Андрей Н. начал кодить 8 лет назад, и готов был работать сутками напролет, набирая «шабашки» на выходные, а в свободное от работы время изучая новые фреймворки. Работа приносила удовольствие, он наконец-то нашел себя! Спустя 8 лет Андрей с трудом заставляет себя встать с кровати утром, работа не приносит радости, как не приносит ее ничто другое: все виды развлечений, которые развеивали ранее, больше не интересны. У Андрея эмоциональное выгорание, которое предшествует депрессии.
Меня зовут Ксения Корзун, я психолог, специализируюсь на работе с программистами и, в частности, много работаю с эмоциональным выгоранием, апатией и депрессивными состояниями. Проанализировав множество кейсов, проведя терапию с такими клиентами как Андрей, я выделила несколько причин возникновения эмоционального выгорания и в этой статье хочу привести их и сразу же предложить несколько «антидотов».
Расширения Chrome для программистов и сочувствующих
На Хабре уже есть посты в духе «10 браузерных расширений, которые нужны КАЖДОМУ УВАЖАЮЩЕМУ СЕБЯ РАЗРАБОТЧИКУ». Но в них меня смущает то, что там вперемешку совсем разные вещи для разных людей. От React Developer Tools до съёмки полностраничных скриншотов — и всё это просто списком через запятую.
Поэтому захотелось сделать более структурированный пост с разделением на тематические категории. По которому можно и получить представление «что вообще бывает», и найти что-то конкретно для себя.
Разумеется, в комментариях приветствуются дополнения, мне знакомо далеко не всё.
Clickhouse & Grafana: история успеха одних алертов
Меня зовут Елизавета Добрянская и я Frontend-разработчица в компании Домклик.
В этой статье я хочу рассказать, как мы танцевали с бубном при настройке алертов на клиентские метрики. Как, зачем и с чем мы столкнулись в этой задаче - читайте далее ?
Как я сэкономил 5000 долларов дроплетом за 5 баксов
С 20 ноября 2020 года Docker начал ограничивать по количеству передач запросы к его популярному реестру Docker Hub. Это изменение затронуло всех пользователей, анонимных и бесплатных. После внедрения изменения процесс работы разработчиков по всему миру резко затормозил. Для решения проблемы многим просто было достаточно залогиниться (для залогиненных аккаунтов уровень ограничения передачи выше), однако другим потребовалось платить за сервисный аккаунт. При высоких нагрузках сервисные аккаунты могут быть дорогими.
Нет ничего плохого в том, чтобы решать проблемы деньгами. Возможно, в вашей ситуации это даже будет правильным решением. Однако для других реальность может быть не такой приятной.
Работая в Earthly, я столкнулся с этими ограничениями передачи. Для создания контейнированной сборки приходится подтягивать кучу контейнеров, и делать это часто. За пару часов мы 2-3 раза запускали наш тестовый набор, что приводило к активации ограничения передачи… и с каждым новым тестом ситуация становилась всё хуже. Возможно, это вам знакомо?
Поэтому вместо того, чтобы платить за сервисный аккаунт я настроил Pull-Through Cache, служащий посредником для всех запросов к Docker Hub. После его создания все отказы, вызванные ограничениями передачи, исчезли. Кроме того, это дешевле, чем платить за сервисный аккаунт! Чтобы сэкономить вам время, я задокументировал то, что сделал.
Миграция со Spring Boot на Quarkus. Магия или безумие?
Quarkus – это стек Java, приспособленный для работы с OpenJDK HotSpot (или OpenJ9 на zSeries) и GraalVM, собранный из оптимизированных библиотек и стандартов Java. Он хорошо подходит для создания сильно масштабируемых приложений, при этом значительно скромнее использует ресурсы CPU и памяти, нежели другие фреймворки Java. Quarkus может работать с традиционными веб-приложениями, бессерверными приложениями и даже с функциями, предоставляемыми как услуга.
Существует много документированных случаев, в которых организации переносили свои приложения на Quarkus. В этой статье рассмотрим один из таких миграционных путей: со Spring Boot на Quarkus. Есть в этом своя магия и свое безумие. Магия – это когда миграция осуществляется как по мановению руки, и ни одной строки кода при этом менять не приходится. Безумие – в том, чтобы попытаться осознать, как все это делается.
Мой путь к кохлеарной имплантации
Меня зовут Анатолий Сазонов, сейчас мне 38 лет, я глухой на оба уха, но слышу с помощью кохлеарных имплантов, живу и работаю в Москве в компании Infosecurity аудитором по информационной безопасности, уже больше десяти лет женат, растет маленькая дочка.
Рассказываю свою историю, как я пришел к кохлеарной имплантации и почему решился ее сделать.
Регулярные выражения. Всё проще, чем кажется
Всем доброго времени суток. Сегодня хочу рассказать максимум о регулярных выражениях: что они из себя представляют, как их писать, для чего нужны и т.д.
Информации о регулярках много, они разбросаны по разным сайтам и я решил собрать всё, касательно регулярок, в одну статью. Ну что-ж, приступим поскорее к делу.
Алгоритм Ethash
В этой статье я расскажу про алгоритм Ethash, который используется для майнинга различных криптовалют, но главная из них это, конечно, Ethereum. Ethash - это Proof of Work (PoW) алгоритм, который является последней версией алгоритма Dagger-Hashimoto, хотя его больше нельзя назвать таковым, так как многие из исходных функций обоих алгоритмов были кардинально изменены.
Термин Proof of Work означает, что майнеры ищут решение (“nonce” или одноразовый номер), которое при хешировании выдаст значение меньше целевого порога, который предварительно задан. Из-за криптографического характера хеш-функции практически невозможно обратное вычисление одноразового номера (“nonce”), удовлетворяющего целевому пороговому пределу. Только если вручную перебирать все возможные варианты.
Алгоритм Dagger-Hashimoto был придуман путем соединения алгоритма Dagger - Виталика Бутерина (одного из основателей Ethereum) и алгоритма Hashimoto Thaddeus Dryja. Он создавался, для того чтобы затруднить майнинг для ASIC-оборудования (Application Specific Integrated Circuits), а также для того, чтобы была легкая проверка и полное хранение в цепочке.
Затруднение майнинга для ASIC-оборудования необходимо, чтобы дать возможность добывать монеты пользователям, у которых нет достаточного объема капитала для покупки таких устройств.
Многие знают, что в данный момент майнинг монет Bitcoin невозможен даже на очень мощном компьютере. Это вызвано тем, что существует большое количество майнинговых ферм, состоящих из ASIC-оборудования, и имеющие гораздо большие вычислительные мощности чем любой персональный компьютер. Именно этой ситуации старались избежать разработчики алгоритма Dagger-Hashimoto и, соответственно, Ethash.
Что же такое ASIC-устройство? Это специальное оборудование, которое создается на основе интегральных схем, специально разработанных для майнинга монет. Мощность такого устройства сравнима с общей мощностью нескольких самых продвинутых видеокарт, однако при этом энергопотребление значительно ниже.
Создание больших ферм на ASIC-оборудовании негативно влияет на блокчейн, так как значительно уменьшает уровень децентрализации. А децентрализация необходима для надежности криптовалюты. С помощью равномерной рассредоточенности узлов блокчейна и многократному дублированию файлов платформы, получается создать систему, которая будет невосприимчива к блокировке, удалению, изменению и хакерским атакам.
Как я научился проходить архитектурные секции
Netflix за 45 минут: Краткий рассказ о system design-интервью, чего ожидать + подборка полезных ссылок
В нашем блоге мы много пишем о построении карьеры в ИТ в разных странах, поиске работы, отличиях в процессе собеседований крупных компаний. В сегодняшней статье мы пойдем дальше и раскроем тему так называемых интервью по system design – это один из этапов собеседований известных технологических компаний, на котором отсеиваются многие кандидаты.
Итак, что такое system design и как пройти интервью такого типа?
Проект Natasha. Набор качественных открытых инструментов для обработки естественного русского языка (NLP)
Проект подрос, библиотека теперь решает все базовые задачи обработки естественного русского языка: сегментация на токены и предложения, морфологический и синтаксический анализ, лемматизация, извлечение именованных сущностей.
Для новостных статей качество на всех задачах сравнимо или превосходит существующие решения. Например с задачей NER Natasha справляется на 1 процентный пункт хуже, чем Deeppavlov BERT NER (F1 PER 0.97, LOC 0.91, ORG 0.85), модель весит в 75 раз меньше (27МБ), работает на CPU в 2 раза быстрее (25 статей/сек), чем BERT NER на GPU.
В проекте 9 репозиториев, библиотека Natasha объединяет их под одним интерфейсом. В статье поговорим про новые инструменты, сравним их с существующими решениями: Deeppavlov, SpaCy, UDPipe.
Контролируем и сохраняем сессии, используя Spring
При разработке многопользовательского web-приложение, понадобилось ограничить количество активных сессий для одного пользователя. В этой статье хочу поделиться с Вами свои решением.
Контроль сессий актуален для большого количества проектов. В нашем приложение необходимо было реализовать ограничение количества активных сессий для одного пользователя. При входе в систему (login) для пользователя создается активная сессия. При входе этого же пользователя с другого устройства необходимо не открывать новую сессию, а проинформировать пользователя об уже существующей активной сессии и предложить ему 2 варианта:
- закрыть прошлую сессию и открыть новую
- не закрывать старую сессию и не открывать новую сессию
Так же при закрытие старой сессии необходимо отправить уведомление администратору об этом событие.
И нужно учесть 2 возможности инвалидации сессии:
- разлогин пользователя (т.е. нажатие пользователем кнопки logout)
- автоматический разлогин после 30 минут бездействия
Пришло время ленивой загрузки закадровых <iframe>
Нативная отложенная загрузка для изображений была добавлена в Chrome 76 через атрибут loading, а затем пришла и в Firefox. Мы рады сообщить, что встроенная отложенная загрузка для iframe теперь стандартизирована и также поддерживается в браузерах на основе Chrome и Chromium.
<iframe src="https://example.com"
loading="lazy"
width="600"
height="400"></iframe>
Встроенная lazy-loading загрузка iframe откладывает загрузку закадровых элементов iframe до тех пор, пока пользователь не прокрутит их рядом. Это сохраняет данные, ускоряет загрузку других частей страницы и уменьшает использование памяти.
Tsunami — масштабируемый сканер безопасности от Google
Компания Google открыла исходники сканера Tsunami — решения для обнаружения опасных уязвимостей с минимальным количеством ложных срабатываний. Tsunami отличается от сотен других сканеров (как коммерческих, так и бесплатных) подходом к его разработке — Google учитывал потребности гигантских корпораций.
Что такое CI (Continuous Integration)
- Собирается ли он?
- Проходят ли автотесты?
Тем лучше! CI позволяет делать такие проверки автоматически. Он используется в продвинутых командах разработки, которые пишут не только код, но и автотесты. Его спрашивают на собеседованиях — хотя бы понимание того, что это такое. Да, даже у тестировщиков.
Поэтому я расскажу в статье о том, что это такое. Как CI устроен и чем он пригодится вашему проекту. Если вы больше любите видео-формат, можно посмотреть мой ролик на youtube на ту же тему.
Коммитите в опенсорсе, работая разработчиком? Разбираемся с правами (привет, nginx)
Ситуация с правами на код в Российской Федерации довольно интересная: по закону разработчик (физлицо) защищён очень и очень сильно. Нужно как-то весьма прилично косякнуть, чтобы оказаться неправым. А вот работодателю нужно довольно много и кропотливо бегать с бубном и бумагами, чтобы получить права на тот самый код, который пишется на его же зарплату.
Давайте рассмотрим, что говорят законы о правах на код с обеих сторон:
- Когда и какие права возникают у вас (как физлица) на код.
- Как правильно устроена передача имущественных прав на код работодателю.
- Тимлид, который делал ревью, — он соавтор или кто?
- Можно ли коммитить в свой pet-project с рабочего компьютера в рабочее время?
- Какой геморрой предстоит пройти, чтобы правильно использовать код, если вы его заказали?
И так далее.
Поехали!
Написание тестов @SpringBootTest при ипользовании Spring Shell в приложении
Иногда в приложениях полезно иметь консоль для управления приложением непосредственно с сервера. Одним из чрезвычайно удобных решений данной задачи является Spring Shell.
Тесты — тоже весьма неплохая практика (надеюсь у вас они есть) и, иногда, они пишутся с аннотацией @SpringBootTest. Однако, если вы подключите Spring Shell и попробуете запустить такой тест, то… ваш тест просто зависнет в ожидании введения команды с консоли.
Итак, отправляемся на поиски решения.
Юлия → Iuliia. Всё о транслитерации
Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.
Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).
И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.
Информация
- В рейтинге
- Не участвует
- Дата рождения
- Зарегистрирован
- Активность