Обновить
29
0.3

backend developer, java, go

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

Работа с JDK Flight Recorder (JFR) из командной строки: инструмент для профилирования без графического интерфейса

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

Экосистема Java богата качественными инструментами для разработчиков, и средства профилирования и диагностики - не исключение.

Существуют коммерческие профилировщики, есть встроенные инструменты профилирования в ведущих IDE. А если вам важна свобода (или цена является важным фактором), open source сообщество также готово предложить достойные альтернативы.

JFR (JDK Flight Recorder) один из ключевых инструментов для диагностики работы Java приложений, который можно эффективно использовать из командной строки. Приёмам работы с этим инструментом я хочу посвятить данную статью.

Читать далее

Система типов и интерфейсы в Go (статическая типизация)

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

🧠 Система типов и интерфейсы в Go — это не просто о struct и interface{}.
Это про то, как язык заставляет проектировать надёжные, безопасные и предсказуемые системы.
В статье — от основ статической типизации до тонкостей работы интерфейсов, type assertion и generics.

В статье разбираем:
🔹 Как работает система типов Go и почему интерфейсы — это не классы.
🔹 Что такое type embedding и interface satisfaction.
🔹 Как использовать пустой интерфейс (interface{}) безопасно.
🔹 Чем опасны type assertions и где лучше применять type switch.
🔹 Как работают Generics (Go 1.18+) и как они сочетаются с интерфейсами.
🔹 Почему вызовы через интерфейсы влияют на производительность, и как это профилировать.
🔹 Где проходят границы между гибкостью и безопасностью типов.

Читать далее

Хватит бороться с ошибками CORS: разберемся, как они работают раз и навсегда

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

Вы когда-нибудь видели в консоли сообщение вроде: «Access to fetch at '…' from origin '…' has been blocked by CORS policy»? Это как в том фильме: «Суслика видишь? — А он есть». CORS не бросается в глаза, пока все работает, но в нужный момент пресекает недопустимые действия. Например, чтение ответа на кросс-запрос без разрешения сервера.

Меня зовут Баир, я разработчик в команде fuse8. В этой статье я отвечу на вопросы о том, зачем была создана CORS политика, как она устроена под капотом, почему простого действия типа «поставить заголовок на бэке» может быть мало, и какие безопасные паттерны стоит выбирать во фронтенде.

Читать далее

Паттерны ООП c примерами на Java: порождающие шаблоны

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

Привет! Меня зовут Бромбин Андрей. В этой статье мы рассмотрим порождающие паттерны ООП. Обсудим, что такое хороший дизайн и почему не стоит начинать всё с нуля каждый раз, когда перед нами новая задача. Также разберёмся, где эти паттерны действительно помогают и какую пользу несут — всё это с наглядными примерами на Java, приближёнными к реальным.

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

Шаблонизироваться

Разработчик веб-скраперов (53 бота) в 500 м от вас и хочет познакомиться: как не подхватить скрапера?

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

Меня зовут Арсений Савин, и я знаю, как бороться с вредоносными ботами. Почти два года я занимаюсь разработкой веб‑скраперов в компании Effective, и хорошо изучил, как они работают — и как их остановить.

За время реализации этого проекта я столкнулся с огромным количеством разнообразных и неочевидных способов скрапинга, о защите от которых я расскажу в этой статье. План такой: сначала разберём, что такое веб‑скрапинг и какие бывают типы ботов, а потом — то, чем чаще всего они выдают себя, и какие методы защиты от них действительно работают.

Эта статья написана по докладу для конференции Saint Highload++ и носит исключительно ознакомительный характер. Она создана для изучения уязвимостей веб‑сайтов в целях повышения устойчивости к атакам злоумышленников. Любые попытки несанкционированного доступа, взлома или нарушения работы сайтов — противоправны и преследуются по закону.

Читать далее

Обратная совместимость в Java-мире

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

Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Владимир Ситников (@vladimirsitnikov) — performance engineer, PgJDBC и JMeter committer, а также член программных комитетов JPoint, Joker, Heisenbug, DevOops и SmartDara. Если вы больше любите смотреть видео, то смотрите запись доклада на YouTube или VK Видео.

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

Однако 30 лет Java прожила. Давайте посмотрим, как это всё было и что было в начале.

Читать далее

Обход Cloudflare. Часть I

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров24K

Как обмануть алгоритмы отпечатков браузера и не спалиться? Первая часть трилогии о скрытии свойств браузера.

Трилогия будет полезна всем, кто хоть иногда сталкивается с блокировками при парсинге сайтов.

А ну-ка, что там?

Самый лучший мок на свете: разбираемся с инструментами для генерации моков в Go

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

Всем привет! Меня зовут Семён Эйгин, я бэкендер в Авито, люблю опенсорс и периодически что-то туда контрибьючу. В этой статье разбираемся с моками и выбираем самый удобный инструмент (не обязательно лучший!). Это достаточно холиварная тема, хотя при подготовки статьи я не ожидал, что она окажется настолько спорной — у каждого разработчика своё мнение на этот счёт. Чтобы узнать моё и высказать своё — переходите под кат!

Читать далее

Барьеры памяти «Golang»

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

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

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

Читать далее

Изучаем Go: руководство для JavaScript-разработчиков. Часть 1

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

После пяти лет работы JavaScript-разработчиком, занимаясь как фронтендом, так и бэкендом, я провел последний год, осваивая Go для серверной разработки. За это время мне пришлось переосмыслить многие вещи. Различия в синтаксисе, базовых принципах, подходах к организации кода и, конечно, в средах выполнения — все это довольно сильно влияет не только на производительность приложения, но и на эффективность разработчика.

Интерес к Go в JavaScript-сообществе тоже заметно вырос. Особенно после новости от Microsoft о том, что они переписывают официальный компилятор TypeScript на Go — и обещают ускорение до 10 раз по сравнению с текущей реализацией.

Эта статья — своего рода путеводитель для JavaScript-разработчиков, которые задумываются о переходе на Go или просто хотят с ним познакомиться. Я постарался структурировать материал вокруг ключевых особенностей языка, сравнивая их с привычными концепциями из JavaScript/TypeScript. И, конечно, расскажу о "подводных камнях", с которыми столкнулся лично — с багажом мышления JS-разработчика.

Читать далее

Значок верификации в Инсте* — участие в экстремизме

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.7K

Собственно не новость, что Фейсбук* и Инста* запрещены. Все знают, что экстремисты и прокляты, но вокруг этого запрета есть много странных мнений. Которые активно обострились за последний месяц из-за разгонов на счет запрета рекламы в запрещенных соцсетях с 1 сентября 2025 года.

Многие пишут, что покидают запрещенные соцсети, потому что не хотят попадать под уголовное преследование.

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

21 марта 2022 года Тверской районный суд Москвы вынес решение о том, что компания Meta Platforms — владелица Инстаграм, Фейсбук и WhatsApp, считается экстремистской организацией, а ее деятельность запрещена в России.
На основании этого проекты Фейсбук и Инстаграм тоже стали частью экстремизма и заблокированы на территории РФ.

При этом WhatsApp избежал блокировки, но:

Читать далее

Ускоряем валидацию UTF-8 в 10 раз (>10 ГБ/с): реализация алгоритма Lemire-Keiser на Go с ARM NEON

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

UTF-8 валидация — одна из базовых операций при работе с текстом, которая выполняется миллионы раз в секунду в современных приложениях. Стандартная реализация в Go, хоть и корректная, далека от оптимальной по производительности. В этой статье расскажу, как мне удалось ускорить валидацию UTF-8 в 10 раз, используя SIMD‑инструкции ARM NEON и алгоритм из статьи «Validating UTF-8 In Less Than One Instruction Per Byte» Джона Кейзера и Дэниела Лемира.

Читать далее

Почему sync.Map — почти всегда плохая идея

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.3K

Привет, Хабр!

Сегодня разбираемся, почему sync.Map — выглядит аппетитно, но почти всегда оказывается не тем, чем вы ожидали.

Читать далее

Функции и методы в Go

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

Go — язык, который ценится за простоту и чёткость. Однако даже при минимальном синтаксисе здесь есть нюансы. Особенно это касается работы с функциями и методами. В этой статье хочу поделиться личными наблюдениями и выводами по нескольким ключевым темам: выбор типа получателя, использование именованных параметров результата, распространённые ошибки при возврате nil, проблемы с файлами в качестве входных данных и поведение defer.
ps. Обложку нейронка сгенерировала. Очень странно, но мне понравилось.

Читать далее

Почему java -jar игнорирует твой -cp и как это обойти

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.8K

Привет, Хабр!

Когда java -jar цинично игнорирует ваш -cp, хочется грустить, но спокойствие, сегодня рассмотрим, почему так происходит и как это обойти.

Читать далее

Как использовать WebUI для Nginx

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K

Всем привет! Меня зовут Александр, и я системный инженер в облачном провайдере mClouds.ru. В этой статье я расскажу как использовать веб-интерфейс в Nginx, на примере Nginx UI и Nginx Proxy Manager. Перечислим основные «кейсы» использования подобных веб-интерфейсов.

Подробности и особенности - под катом.

Читать далее

Секреты эффективного кодирования на Go для опытных и новичков: профайлинг, тесты, CI

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

За последние два года Go-сообщество выросло на 55% — с 3 млн до 4,7 млн разработчиков. Многие пришли в Go из других языков или только начинают свой путь в программировании. Без понимания идиоматики и ключевых особенностей языка даже опытные специалисты нередко сталкиваются с медленным кодом, дедлоками и утечками памяти.

Так что сегодня разберём, как организовывать пакеты, обрабатывать ошибки, безопасно работать с горутинами и каналами, оптимизировать аллокации и профилировать «горячие» участки через pprof. Советы одинаково пригодятся и опытным Golang-разработчикам, и тем, кто только начинает свой путь в Go.

Читать далее

Выясняем, кто поселился в вашей сети

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

Привет Хабр! На связи Аеза и сегодня мы хотим поговорить на одну очень злободневную тему – выявление подозрительных активностей в трафике. Мы не будем говорить о каких-то специализированных решениях, типа IDS/IPS, а вместо этого рассмотрим основные принципы выявления подозрительных действий что называется вручную.

Наша задача будет состоять в том, чтобы самостоятельно, используя только Wireshark проанализировать образцы трафика и выявить в нем подозрительную активность для последующей настройки средств защиты.

Читать далее

10 советов, как стать системным архитектором

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров6.7K

Архитектор редко работает в идеальных условиях. Бюджет ограничен, сроки поджимают, часть инфраструктуры устарела, часть команды работает удалённо. Всё это реальные ограничения, с которыми нужно уметь работать. А ещё, нужно уметь предсказывать различные риски.

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

Читать далее

От пет-проекта к книге про Spring

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

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

Читать далее
1
23 ...

Информация

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