Pull to refresh
1
Константин@ConstOrVar

Разработчик мобильных приложений

Send message

Конкатенация строк в Java: почему советы 2008 года всё ещё работают — и почему этого уже недостаточно

Level of difficultyMedium
Reading time16 min
Reach and readers9.3K

Вы наверняка видели такой код - for (String s : data) { result += s; } сотни раз.

Что с ним не так?

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

И казалось бы, проблема конкатенации строк в Java давно решена. Джунам говорят: используй StringBuilder и будет тебе щастье. А статьи десятилетней давности сравнивают + и append() в бенчмарках и ставят точку.

В сегодняшней статье я копнул немного глубже и оказалось, что реальность сложнее.

Вред не исчез - он принял новые, менее очевидные формы.

Заглянуть

Security Week 2619: особенности уязвимости Copy Fail в ядре Linux

Reading time3 min
Reach and readers9.7K

Важной новостью прошлой недели стало обнародование данных об опасной уязвимости в ядре Linux, получившей название Copy Fail (мини-сайт, новость на Хабре), которая открывает относительно простой способ локального повышения привилегий. Авторы оригинального исследования не стесняются рекламировать ИИ-ассистент для анализа кодовой базы, который нашел данную проблему в течение часа. Исследователи «Лаборатории Касперского» провели анализ уязвимости и предложили варианты обнаружения атак с ее использованием.

Уязвимость получила идентификатор CVE-2026-31431 и рейтинг 7,8 балла по шкале CVSS. Ошибка была внесена в код модуля ядра algif_aead еще в 2017 году: тогда была внедрена поддержка оптимизаций in-place при работе системы шифрования AEAD. Это, в свою очередь, привело к дефекту обработки буферов, что дало потенциальному атакующему возможность контролируемо изменять содержимое кэша любого файла, доступного для чтения.

Читать далее

Понять Big O раз и навсегда

Level of difficultyEasy
Reading time9 min
Reach and readers15K

На локалке всё летает, а на проде ложится замертво? Дело в масштабировании. Big O — это не скучная теория для алгоритмических собеседований, а реальный инструмент, чтобы ваш код не «убивал» сервера. В этой статье я на простых примерах и без зубодробительной математики объясню, как оценивать сложность своих алгоритмов. От O(1) до O(N!) — только суть, примеры на Python и немного здоровой иронии над медленным кодом.

Читать далее

Великий Калужский Нефтяной Мираж: как гражданин РФ на патентах поднял десять миллиардов рублей с рынка облигаций

Level of difficultyMedium
Reading time15 min
Reach and readers20K

Великий Калужский Нефтяной Мираж: как гражданин РФ на патентах в папочке поднял десять миллиардов рублей с рынка облигаций

Читать далее

Моки без боли

Level of difficultyMedium
Reading time8 min
Reach and readers8.5K

Моки — достаточно крутой инструмент, если использовать его правильно.

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

И я не буду здесь спорить о терминологии — в этой статье я буду называть все тестовые дублёры «моками». Примеры будут на Scala, но моки в других языках работают похожим образом, так что боль универсальная. Как и решение — об этом в статье.

Читать далее

Майские как тест на выгорание: что покажут эти 9 дней

Level of difficultyEasy
Reading time7 min
Reach and readers7.7K

На майских удобно проверять не только мангал, но и своё состояние. В тексте — несколько простых мини‑тестов, которые помогают отличить усталость от выгорания, и шаги, с которых можно начать изменения без «уволиться прямо сейчас».

Читать далее

Концепция Байесовского мозга, или Почему этот заголовок в моменте — ваша галлюцинация

Level of difficultyEasy
Reading time16 min
Reach and readers20K

Помните то самое платье?
В 2015 году интернет раскололся пополам: одни клялись, что оно бело-золотое, другие — мол, сине-черное. Люди ругались в комментах, крутили яркость на мониторе, а самые умные врубали пипетку в Paint. Само платье, кстати, оказалось сине-черным, но дело вообще не в этом.

Проблема в том, что двое условных человека смотрели на одни и те же пиксели и видели разные цвета. Не интерпретировали по-разному, не спорили о вкусах — буквально видели разное. И оба лагеря не ошибались: сетчатка у всех отрабатывала штатно, а дальтонизм тут вообще ни при чем (поскольку речь не об оттенках одного цвета).

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

Эта концепция называется байесовским мозгом, и я хочу о ней рассказать. Потому что, во-первых, она красиво объясняет кучу странных вещей: от оптических иллюзий до галлюцинаций и эффекта плацебо. 

А во-вторых, ровно по такому же принципу работает половина современного машинного обучения. Stable Diffusion, которая дорисовывает картинку из шума, Языковые модели, которые предсказывают следующее слово. Автоэнкодеры, world models, диффузионки — все это, если снять маркетинговую обертку, машины, которые делают то же самое, что и ваш мозг прямо сейчас. Гадают.

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

Читать далее

Мне прислали фишинг под MAX. Я разобрал ссылку и нашёл уязвимость в их API

Level of difficultyMedium
Reading time14 min
Reach and readers35K

«Мне прислали фишинг под MAX. Внутри оказался MITM в их API» «Не ты ли на фото?» — пришло поздно вечером, в обычной переписке, от знакомого, который пишет редко. К сообщению приложена короткая ссылка. Я понял, что у него увели аккаунт, и захотел разобраться, что внутри. Через пять дней я смотрел на инфраструктуру из 179 фишинговых доменов, четырёх хостингов, через которые оператор переезжал каждые сутки, и обнаружение, что фишинг-кит работает не как сборщик паролей, а как MITM-прокси к настоящему API мессенджера MAX. Жертва получает реальный SMS от реального MAX и не может распознать атаку. CVSS 8.8. VK молчит уже неделю.

Читать далее

Мой опыт установки Sentry self-hosted

Level of difficultyEasy
Reading time15 min
Reach and readers8.9K

Привет! Меня зовут Даниил Ткаченко, я веб‑разработчик в ИТ‑компании «Активика». В статье я поделюсь опытом развёртывания Sentry self‑hosted для высоконагруженного проекта. Несмотря на обилие материалов по SaaS‑версии, актуальных гайдов по self‑hosted‑установке почти нет — особенно с учётом современных требований к производительности и отказоустойчивости.

Мы столкнулись с рядом проблем: нестабильностью на базовом хостинге, отсутствием перехвата HTTP‑ошибок и быстрым заполнением диска. Под катом разберу каждую проблему, покажу код решений и дам рекомендации для тех, кто планирует развернуть Sentry самостоятельно.

Статья будет полезна разработчикам и DevOps‑инженерам без опыта работы с self‑hosted Sentry.

Читать далее

Copy.Fail (CVE-2026-31431) — больше чем LPE

Level of difficultyMedium
Reading time3 min
Reach and readers13K

Свежая CVE-2026-31431 только набирает обороты, и тут я хочу показать, почему это не совсем обычная LPE.

Copy Fail как примитив Process Injection через Page Cache

Оригинальный PoC модифицирует setuid binary перед execve и получает root.
Второй публичный PoC подменяет id у текущего юзера на 0000.

Хорошие, рабочие LPE, дающие рута.

Но исследуя дополнительные свойства этого примитива я обнаружил несколько эффектов, не описанных в оригинальном disclosure.

Читать далее

Как я сдал BSCP за 2 часа. Методология подготовки + разбор

Level of difficultyEasy
Reading time4 min
Reach and readers6.4K

В каждой профессии есть ритуал инициации, о котором не принято говорить вслух. У хирургов — первая ночная смена с тяжёлым пациентом. У пилотов — посадка вслепую на тренажёре. У багхантеров и пентестеров есть Карлос. Да, тот самый Carlos, чей пароль или токен вы будете выгрызать из экзаменационного приложения PortSwigger, пока где-то на фоне тикает таймер, а Burp Collaborator хранит гробовое молчание.

Меня зовут Султан. Первая попытка, два часа — экзамен сдан.

Я знаю, о чём вы подумали: сдать BSCP с первого раза удаётся очень немногим, даже опытным специалистам. Так почему у меня получилось? Ответ — в методологии.

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

Читать далее

Я люблю «Героев меча и магии», но пару моментов бы поменял

Level of difficultyEasy
Reading time24 min
Reach and readers22K

«Герои меча и магии» (Heroes of Might & Magic или просто HoMM) это серия игр, на которой я вырос, и в которую до сих пор периодически с удовольствием играю. Конечно же, больше всего наиграны третьи Герои, а также пятые. И вот только что в раннем доступе вышла новая часть — HoMM: Olden Era от студии Unfrozen, с чем я всех нас и поздравляю.

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

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

И сегодня я хотел бы поделиться своими субъективными мыслями на этот счёт и сразу же проанализировать, насколько моё мнение совпадает с видением разработчиков новой части — Olden Era. Она уже долгое время была доступна в виде демо-версии, поэтому у всех желающих было время её попробовать и понять, какой будет игра. Также приглашаю вас поделиться своими мнением в комментариях и вместе конструктивно подискутировать.

Читать далее

Часть I. Конечные автоматы. Универсальная машина Тьюринга. Интерпретатор Brainfuck

Level of difficultyMedium
Reading time71 min
Reach and readers14K

▒▒▒▒▒▒▒▒▒█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
▒▒▒▒▒▒▒█░▒▒▒▒▒▒▒▓▒▒▓▒▒▒▒▒▒▒░█
▒▒▒▒▒▒▒█░▒▒▓▒▒▒▒▒▒▒▒▒▄▄▒▓▒▒░█░▄▄
▒▒▄▀▀▄▄█░▒▒▒▒▒▒▓▒▒▒▒█░░▀▄▄▄▄▄▀░░█
▒▒█░░░░█░▒▒▒▒▒▒▒▒▒▒▒█░░░░░░░░░░░█
▒▒▒▀▀▄▄█░▒▒▒▒▓▒▒▒▓▒█░░░█▒░░░░█▒░░█
▒▒▒▒▒▒▒█░▒▓▒▒▒▒▓▒▒▒█░░░░░░░▀░░░░░█
▒▒▒▒▒▄▄█░▒▒▒▓▒▒▒▒▒▒▒█░░█▄▄█▄▄█░░█
▒▒▒▒█░░░█▄▄▄▄▄▄▄▄▄▄█░█▄▄▄▄▄▄▄▄▄█
▒▒▒▒█▄▄█░░█▄▄█░░░░░░█▄▄█░░█▄▄█

Я практик и популяризатор языково-ориентированного программирования [1]. В нём задачи решают тройкой: доменная виртуальная машина VM, доменный язык программирования DSL и алгоритмы на нём.
В этом курсе удачными фрагментами разных заметок доступно объясним причины многообразия языков и преимущества их разработки. С теорией, историей и примерами.
Вся наша работа строится вокруг VM, DSL, EBNF, отношений и графов. Мы увидим, как эти объекты соединяют вместе, получая вычислители и программы.

Читать далее

Shrek Linux: кастомизируем Kubuntu для любителей «Шрека»

Reading time3 min
Reach and readers12K

Ох уж этот мир свободного ПО! Хотите создавать проекты, которые покорят мир? Пожалуйста. Хотите просто развеяться и проверить, где же предел гибкости Linux? Этим можно заниматься сколько угодно.

Хотите конкретный пример? Их есть у меня, причем один из них совсем свежий. Шринукс, или Shrek Linux, появился буквально пару дней назад. Это полноценная операционная система с нескучными обоями, где буквально каждая деталь отсылает к мультфильму про болотного огра. К слову, создатель не стал ограничиваться парой обоев — он погрузил в атмосферу Шрека все, что только можно было кастомизировать.

Читать далее

Как действительно отдохнуть на майских

Level of difficultyEasy
Reading time11 min
Reach and readers14K

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

Что же такое хороший отдых? Узнаете под катом. 

Читать далее

MAX и метка Spyware в Cloudflare: что это значит и к чему может привести

Level of difficultyEasy
Reading time9 min
Reach and readers20K

30 апреля в сети появилась информация, что глобальная IT-компания и оператор крупной интернет-инфраструктуры Cloudflare присвоила домену национального мессенджера Max классификацию Spyware (шпионское ПО). Прежде чем мысленно ухмыльнуться и подумать «а я же говорил», давайте объективно разберемся, что это за шум.

В этой статье мы расскажем: кто такая компания Cloudflare, почему она ставит подобные метки, что значит «spyware», на основании каких признаков Cloudflare принимает такие решения, а также какие последствия такая метка может иметь.

Читать далее

Почему я написал Paginator вместо Paging 3

Level of difficultyEasy
Reading time7 min
Reach and readers10K

Это статья от автора библиотеки, поэтому нейтральным разбор не будет. Но это и не рассказ про
конкретный проект — а разбор задач, на которых, на мой взгляд, Paging 3 начинает буксовать, и
того, как Paginator устроен, чтобы эти задачи
закрывать. KMP-библиотека пагинации для Android, iOS, JVM и Desktop. Ниже — почему она появилась
именно как отдельная библиотека, а не как fork или обёртка над Paging 3.

Читать далее

Лузеры следуют рецептам, победители строят систему: учимся собирать секси-еду по принципу LEGO

Level of difficultyEasy
Reading time8 min
Reach and readers13K

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

Я построила систему, которая решает эту задачу.

Привет, я Тоня. Несколько лет назад я ушла из IT в гастрономию: веду канал, хожу на воркшопы шефов в Лондоне, стала завсегдатаем Le Cordon Bleu и учу готовить так, чтобы даже самый уставший айтишник мог собирать блюда как это делают в ресторанах. 

Погнали разбираться!

Читать далее

User Story: полный гайд по написанию без ошибок

Level of difficultyEasy
Reading time9 min
Reach and readers8.7K

Почему одни User Story работают как часы, а другие становятся источником бесконечных багов и ночных звонков? За годы работы в FinTech собрал коллекцию типичных ошибок, из‑за которых команды теряют драгоценное время. В статье — живые кейсы, наглядные диаграммы, разбор INVEST и практики Three Amigos, которые снижают число дефектов. Рассмотрим, как превратить сырую идею в зрелую User Story с чёткими критериями приёмки и нефункциональными требованиями.

Читать далее

Рецензия на книгу «Сети Linux. Модели и приложения» — от TCP/IP до ядра и сетей будущего

Level of difficultyEasy
Reading time9 min
Reach and readers9.8K

В этой рецензии хотим привлечь внимание к последней прижизненной книге по Linux известного автора Олега Цилюрика. Книги по сетям обычно делятся на две категории: либо это классические учебники по протоколу TCP/IP и сетевым утилитам, либо практические руководства по настройке конкретных сервисов. Книга «Сети Linux. Модели и приложения» объединяет оба подхода — и в этом ее главное отличие.

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity