Search
Write a publication
Pull to refresh
2
0
Константин @ConstOrVar

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

Send message

3 вопроса на собеседование о многопоточности в Java

Level of difficultyEasy
Reading time4 min
Views10K

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

Сегодня рассмотрим несколько вопросов на собеседовании, которые могут встретиться: чем synchronized отличается от ReentrantLock, что такое happens-before и как оно влияет на volatile и final и почему ConcurrentHashMap.computeIfAbsent() не всегда безопасен?

Читать далее

Никогда не читайте перед обедом книг по специальности

Level of difficultyMedium
Reading time6 min
Views13K

Книги делятся на две категории: fiction и non-fiction. Технические книги — внезапно — не исключение, и поддаются точно такой же классификации. Между учебником по научной дисциплине, начинающегося с аксиоматики и продолжающегося доказательствами теорем, — и практически любой современной литературой по «Computer Science» — лежит пропасть. Что происходит, когда люди долгое время оказываются рабами одной-единственной книги (с продолжениями), нам хорошо известно из истории. Возникает религия.

99% процентов литературы по ООП — это талмуд. Вероятность того, что вам подойдет «паттерн» — примерно 50%. Как встретить динозавра на Невском. Знание паттернов полезно в той же степени, что и теология, — и примерно тем же по специальности людям. Всегда полезно уметь отличать по запаху Пана от простого фавна, но практических применений такой эрудиции — не существует.

Несколько примеров и торжественный вывод

Ужасное состояние двоичной совместимости Linux (и что с ним делать)

Level of difficultyMedium
Reading time20 min
Views19K

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

Читать далее

Мобильная разработка за неделю #581 (24— 30 марта)

Reading time4 min
Views926
В новом дайджесте iOS-разработка в Zed и Picture-in-Picture в 2ГИС, автоматизация версионирования и системные идеи, которые никогда не работают, посудомойка в облаке, дело асинхронного программирования, ускорение Android-сборки и многое другое. Заходите!

Читать дальше →

Исследование уязвимостей LLM-агентов: опыт Red Teaming

Level of difficultyEasy
Reading time11 min
Views2.6K

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

Сначала об определениях. LLM Red teaming — практика тестирования больших языковых моделей (например, GPT), направленная на выявление уязвимостей, нежелательного поведения и способов их взлома (jailbreak). Суть в том, чтобы через специальные подсказки или методы обойти защитные механизмы и ограничения LLM.

Большие языковые модели (LLM) сейчас активно применяются для создания AI‑ассистентов и специализированных агентов, отвечающих на запросы и совершающих операции в различных средах (финансовые транзакции, консультирование, управление ресурсами и др.). Вместе с развитием применения растут и риски, связанные с их уязвимостями. Злоумышленники могут использовать специальные атакующие промпты (adversarial prompts), чтобы добиться от модели нежелательных или запрещённых ответов. Методическое выявление таких уязвимостей через Red Teaming позволяет понять, как можно обойти системные инструкции моделей и разработать меры защиты.

В рамках учебного курса «Безопасность ИИ» (так сложилось, что я магистрант AI Talent Hub ИТМО) я провел исследование уязвимостей LLM‑агентов в формате соревнования Red Teaming (на одной из популярных арен, по правилам арены не буду уточнять название). Цель заключалась в том, чтобы различными способами «взломать» защитные механизмы агента и заставить его выполнять нежелательные действия или раскрывать служебную информацию.

Всего в первой волне конкурса было предложено 9 сценариев атак; мне удалось успешно решить все, осуществив в общей сложности 53 успешных джейлбрейка (по разным языковым моделям) — то есть случаев обхода встроенных ограничений. Решил поделиться с Хабром опытом и подробно рассмотреть применённые техники атаки на агентов. Сами модели в рамках арены не раскрываются, но по косвенным признакам можно было понять, что там был и ChatGPT и Claude.

Я классифицировал их по трём группам: приёмы социальной инженерии, обходы фильтров и цензуры и эксплуатация уязвимостей в поведении агентов. Для каждой группы приведены конкретные примеры запросов и ответов модели. В конце статьи хочу обсудить полученные результаты и предложить рекомендации по защите LLM от подобных атак.

Читать далее

Разбираем паттерны конкурентности

Level of difficultyEasy
Reading time4 min
Views7.5K

Параллельность - выполнение задач в один момент времени на разных логических ядрах.
Конкурентность - выполнение задач последовательно, но со сменой контекста на другую задачу в ожидание завершения иной задачи. У пользователя может возникнуть иллюзия многозадачности даже в однопроцессорной системе, поскольку смена контекста происходит быстро (микросекунды).

Читать далее

Как я набрал миллион подписчиков на Ютубе. История одного преподавателя

Reading time9 min
Views24K

Привет. Вы меня никогда раньше не видели. Как и один миллион человек, которые регулярно смотрят видео на Простой экономике – канале, который я начал вести пять лет назад. Эти пять лет я жил две жизни.

Одна, где я анонимный автор, который создает ролики по экономике для сотен тысяч зрителей. А другая, где я работаю преподавателем в российском вузе и обучаю экономике будущих оперативников подразделений экономической безопасности и противодействия коррупции.

Сегодня, когда со второй жизнью покончено, я наконец, могу рассказать, вам как я придумал канал-миллионник, и почему скрывал свою личность.

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

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

Читать далее

Все знают, какие приложения установлены у вас в телефоне

Level of difficultyEasy
Reading time8 min
Views17K

Ещё несколько лет назад любое приложение, установленное на устройство с Android, могло без разрешений видеть все остальные приложения.

В 2022 году, с выпуском Android 11, Google удалила этот доступ для разработчиков приложений. Согласно новой политике видимости пакетов, приложения должны видеть другие приложения только в том случае, если те необходимы для их базовой функциональности. Кроме того, разработчики должны явным образом объявлять эти приложения в обязательном для всех приложений Android файле конфигурации AndroidManifest.xml.

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

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

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

Читать далее

SQL HowTo: работаем с массивами (Advent of Code 2024, Day 23: LAN Party)

Level of difficultyEasy
Reading time7 min
Views1.4K

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать.

Применяем простые операции над массивами, чтобы определить связность графов.

Читать далее

Более быстрые хеш-таблицы: претенденты на место SwissTable

Level of difficultyMedium
Reading time11 min
Views15K

24 ноября 2021 года на сайте ArXiv.org была опубликована научная статья «Крошечные указатели» (Tiny Pointers) с описанием новой структуры данных — «крошечных» указателей, которые указывают путь к фрагменту хранимых данных и занимают меньше памяти, чем традиционные указатели.

Осенью 2021 года эту статью заметил Андрей Крапивин (Andrew Krapivin), студент Ратгерского университета в Нью-Джерси, и не придал ей особого значения, пишет Quanta Magazine, журнал о последних достижениях в математике (перевод статьи на Хабре). Только через два года он нашёл время, чтобы внимательно ознакомиться с материалом. И понял, насколько это прорывное изобретение, если применить его для оптимизации хеш-таблиц.

Данная тема уже упоминалась на Хабре, но заслуживает более подробного обсуждения.
Читать дальше →

Как предъявлять бездушным машинам, чтобы они тебя понимали. Гайд по промпт-инжинирингу

Reading time7 min
Views11K

Если вам кажется, что нейросети тупят, не справляются с задачами или делают все как-то через раз — не спешите списывать их со счетов. Возможно, проблема не в них, а в том, как вы у нее спрашиваете.

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

Читать далее

Как мы учили нейросеть разбираться в сложных документах: задача семантического поиска

Level of difficultyMedium
Reading time17 min
Views4.5K

Привет! Меня зовут Павел Яковлев, я инженер по разработке ПО искусственного интеллекта в YADRO. В команде GenAI мы занимаемся умными продуктами на основе корпоративных баз данных.

В проектах мы часто используем современные генеративные модели и энкодеры. В статье расскажу, как мы в компании разрабатываем и оптимизируем семантический поиск по сложным документам: PDF, HTML и DOCX.

Читать далее

Несколько правил организации багатона по кибербезопасности

Level of difficultyEasy
Reading time6 min
Views645

Привет! Это Маша из AppSec Альфа-Банка. Недавно мы провели первый (для себя) багатон по кибербезопасности, прошедший при совместной работе ИТ, AppSec, команд Внутрикома и DevRel. Главными целями были пропаганда безопасной разработки и сближение разработчиков и команды AppSec.

Расскажем, как мы спланировали и провели мероприятие, чтобы оно стало не только полезным, но и запомнилось командам разработки.

Читать далее

Пять простых* задач по кибербезопасности для разработчика

Level of difficultyMedium
Reading time12 min
Views4.8K

Привет! Это Маша из AppSec Альфа-Банка. Я люблю, чтобы разработчикам было интересно, а продукты компании были безопасными.

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

Все задачи из примеров встречались нам ранее в программах BugBounty или на прошлых местах работы и воссозданы в тестовой среде.

Предлагаем вам принять участие в решении задач в формате  челленджа — для удовольствия и вдохновения. И очень хотим напомнить о важности безопасной разработки.

Читать далее

Надоели вредные привычки — читай этот текст

Level of difficultyEasy
Reading time16 min
Views41K

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

Читать далее

Библиотека для кэширования Caffeine: анализ кода

Reading time18 min
Views4.4K

То и дело, прожигая время за чтением reddit, я натыкаюсь на очередной пост, в котором упоминается метод S3 FIFO и говорится, что он лучше LRU (вытеснение реже всего используемых значений) — потому, что даёт более низкий процент промахов кэша. Видные компании, в частности, RedPandas, Rising Wave и Cloudflare уже внедрили S3 FIFO у себя на различных мощностях, что только подогрело мой интерес к нему. Кэши — чертовски интересная тема, а по работе мне приходится сильно полагаться на работу с кэшами при обслуживании нескольких сервисов. Так что я был уверен, что рано или поздно мне потребуется протестировать S3 FIFO или, как минимум, удостовериться, что я понимаю ключевые идеи, заложенные в этой технологии.

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

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

Читать далее

Пользовательская документация: как мы применили к ней лучшие мировые практики

Level of difficultyEasy
Reading time12 min
Views5.7K

Привет, Хабр! Я Костя Макушев, работаю техническим писателем в подразделении ИТ-Инфраструктуры Т-Банка. В этой статье расскажу, какие проблемы возникли с пользовательской документацией наших продуктов и какие подходы мы начали применять, чтобы эти проблемы решить.

Статья будет полезна всем, кто занимается и интересуется документацией: техническим писателям, владельцам продуктов, менеджерам, тимлидам.

Читать далее

Как мы ускоряли Android-сборку «селлера»

Level of difficultyMedium
Reading time11 min
Views3.3K

Всем привет! Меня зовут Женя, я руководитель отдела разработки «Аккаунт» в мобильном приложении для продавцов платформы Ozon Seller. Поделюсь нашим опытом работы над улучшением скорости сборки Android-проекта.

Скорость сборки проекта напрямую влияет на time to market продукта и (внезапно) удовольствие от процесса разработки. Если каких-то 50 лет назад время компиляции могло доходить до нескольких дней, и это считалось нормальным, то сейчас даже лишняя пара минут сборки проекта в Android Studio может заставить понервничать. Чтобы сберечь здоровье себе и CI, скорости сборки проекта нужно уделять внимание. Нетерпеливые читатели могут сразу посмотреть итоговую таблицу с результатами в конце статьи.

Читать далее

С заботой о комфортном просмотре: как команда VK справляется с высокой нагрузкой на видеоплеер на Android-устройствах

Level of difficultyMedium
Reading time15 min
Views1.5K

По итогам четвёртого квартала 2024 года только в VK Видео количество суточных просмотров выросло до 2,7 миллиарда, а месячная аудитория — до 72,2 миллиона человек. Часть этих просмотров приходится на Android-устройства.

Меня зовут Егор Баженов. Я Android-разработчик в команде VK Видео. В этой статье расскажу о специфике работы видеоплееров в Android-сервисах с большой нагрузкой, возможных ошибках и способах их исправления.

Читать далее

Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS

Level of difficultyMedium
Reading time5 min
Views1.3K

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

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

Читать далее

Information

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