
Мобильная разработка за неделю #583 (7 — 13 апреля)

Разработчик мобильных приложений
Гугл выпустили простую и понятную инструкцию, как настраивать модель, как создавать промпты, что влияет на результат, и небольшие лайфхаки. Оригинал.
Дальше будет небольшая выжимка и перевод с помощью ChatGPT.
Промпт-инжиниринг — это навык создания эффективных входных данных (запросов), чтобы направлять эти мощные модели ИИ к генерации конкретных, точных и полезных результатов, которые вам нужны.
Что такое Промпт-инжиниринг?
Большая Языковая Модель(БЯМ) работает, предсказывая наиболее вероятную последовательность слов (или «токенов»), следующую за вашим вводом. Когда вы пишете запрос, вы, по сути, задаете начальную точку и направление для этого процесса предсказания. Промпт-инжиниринг включает в себя:
Доводилось ли вам раскупоривать системник с Linux, который не грузится ни в какую – даже после того, как вы убедились в корректности настроек BIOS и в том, что никаких серьёзных аппаратных ошибок в машине нет?
Если да – то вам просто необходимо изучить chroot. Он станет для вас настоящей палочкой-выручалочкой.
Например, мне пару недель назад удалось таким методом восстановить устройство Nanopore GridION, после того, как мне совершенно не помог официальный метод переустановки через .iso-файл образа. Поэтому я решил задокументировать проделанные шаги.
Этот метод я нащупал только после того, как Linux более десяти лет был моей рабочей лошадкой (спасибо, Мэтт !). Поэтому у меня есть основания полагать, что этот метод очень полезен и заслуживает вашего внимания. Надеюсь, этим постом мне удастся помочь тем, кому не доставало такого рассказа.
Всем привет, меня зовут Юрий Пузыня, я занимаюсь развитием платформы документации Diplodoc в Yandex Infrastructure, которую мы пару лет назад выложили в опенсорс. И сегодня я расскажу лёгкую историю невероятного везения в опенсорсе.
Мой первый коммит как контрибьютора в опенсорс‑проект был смёржен спустя два с половиной года мной же в качестве мейнтейнера этого проекта. И в чём тут история успеха — спросите вы. Но давайте я расскажу всё по порядку.
Всем привет! Меня зовут Ира, я руковожу отделом тестирования мобильной платформы в Ozon Tech. Наш отдел занимается разработкой инструментов для автоматизации тестирования мобильных приложений Ozon и тестированием внутренних библиотек.
До того как прийти в компанию, я занималась мобильной разработкой и знаю, какие вопросы задают разработчикам на собеседованиях. Про многопоточность разработчика точно спросят, но у QA-инженеров про работу процессов и потоков в мобильных приложениях мы, как правило, не спрашиваем. На мой взгляд, в этом имеет смысл разобраться, чтобы эффективно взаимодействовать с разработчиками и говорить с ними на одном языке.
В этой статье расскажу о том, как приложение работает «под капотом», что такое многопоточность, какие потоки бывают, и какие ошибки, связанные с реализацией многопоточности, могут возникать в приложении.
Привет, Хабр! Сегодня у нас на столе инструмент, о котором многие слышали, но мало кто использовал по-настоящему — ptrace.
С ptrace можно подключаться к чужим процессам, читать и менять их память, перехватывать системные вызовы — и даже вежливо убрать sleep 9999.
Параметризованные автотесты — это удобный инструмент, который помогает тестировать программное обеспечение быстрее и эффективнее. Вместо написания множества однотипных тестов с разными входными данными, можно использовать один тестовый метод, подставляя в него разные параметры. Это упрощает код и делает его более удобным в поддержке. JUnit 5, популярный фреймворк для тестирования Java-приложений, предлагает множество возможностей для работы с параметризованными тестами, делая процесс тестирования гибче и удобнее.
Привет, Хабр! Меня зовут Асия, и начать хочу сразу со своей истории. С первой работы я практически сбежала через восемь месяцев. Начинала бодро и с большими надеждами, но выгорела еще на первых неделях. Сейчас понимаю, что причиной было тотальное расхождение реальности с моими карьерными ценностями. Из всей этой истории я вынесла урок: сначала пойми, какие задачи тебе нравятся, а какие забирают энергию, где вообще твой лимит прочности. И уже потом выстраивай отношения с работой.
С тех пор дела у меня пошли лучше. Пять лет назад я пришла в МТС. Руковожу направлением по обучению и адаптации персонала, провожу карьерные консультации по ротации и стараюсь сделать так, чтобы сотрудники ходили на работу с радостью. Сегодня хочу поделиться своим опытом: перечислю пять причин, которые, по моим наблюдениям, чаще всего ведут к выгоранию. И расскажу, как мы в МТС стараемся не повторять эти сценарии. Надеюсь, будет полезно!
Привет, Хабр! Меня зовут Дмитрий, я работаю в YADRO. Я прошел большой путь в самостоятельном изучении языков программирования: от SQL до Go. Сначала я вообще не документировал процесс обучения, затем стал вести заметки по «академическому» принципу — писал конспекты, как в университете. Пока не открыл древовидную систему хранения данных, которая лежит в основе метода Цеттелькастен.
В этой статье расскажу, как порядок в заметках помогает лучше усваивать материал, кому подойдет Цеттелькастен или подобные методы и что лучше — простые конспекты или структурированные заметки.
Привет, Хабр! Меня зовут Павел, и я расскажу вам о том, как можно быстро выйти из Матрицы освоить Linux. Мне повезло принять участие в крутом проекте по разработке учебного курса для службы каталога ALD Pro, которую Астра создала на замену MS Active Directory, и об этой истории мне хотелось бы вам поведать.
Привет! Это Никита Малыхин, Tech Lead в команде AdTech в Центре Big Data МТС. В прошлый раз я поделился подборкой книг о нейронных сетях и рекомендательных системах. В 2к25 поиск практических советов по NLP в книгах может выглядеть как сизифов труд, ведь это одно из самых быстроразвивающихся направлений в ML. Тем не менее, сегодня будет втораячасть подборки — на этот раз сфокусируемся на материалах по естественному языку и книгам с практическими советами по машинному обучению. Хорошие специалисты в этой сфере на вес золота, а книги как раз помогают прокачать навыки. Все будет по делу, с примерами и практикой. Поехали!
С того момента, как Олег Шелякин рассказал про запуск демоприложений в проекте мобильного банка, большинство команд успело обзавестись своей собственной уютной демкой, и сейчас их количество приближается к 90.
В предыдущей статье основной акцент был на сокращении времени сборки и синхронизации кода с Android Studio. Но так уж выходит, что, решая одну проблему, мы порождаем другие. Если раньше был один единственный application module, к которому подключались все остальные модули для сборки в конечный артефакт(apk, aab), то сейчас таких модулей стало приблизительно на 90 больше.
Меня зовут Роман Заремба и я расскажу, как мы ушли от кода интеграции в application-модулях, пересмотрели базовые решения, придумали подход collector + initializer, перешли на библиотеку App Startup, избавились от нее и стали использовать стандартный Java ServiceLoader.
На примерах попробую показать, почему enum
в Rust это несколько больше, чем обычно принято считать. Рассмотрю расширенное использование enum
в типовых ситуациях. Сразу забегая вперед скажу, что в рамках статьи я не затрагиваю паттерны и мэтчинг.
Первое, что приходит в голову, когда речь заходит об enum
, — это идея: «А давайте заменим все константы на enum
». :) Желание логичное, давайте на него посмотрим...
Однажды на работе техлид порекомендовал мне проштудировать книгу Understanding the Linux Kernel Бове и Чезати. В ней рассмотрена версия Linux 2.6, сильно не дотягивающая до более современной версии 6.0. Но в ней явно ещё много ценной информации. Книга толстая, поэтому на её изучение мне потребовалось немало времени. Занимаясь по ней, я решил настроить такую среду разработки, в которой я мог бы просматривать и изменять новейшую версию ядра Linux — чтобы было ещё интереснее.
Есть и другие статьи, в которых рассказано, как собрать ядро Linux. Но в этой статье я немного иначе организую и подаю информацию.
Давно хотели научиться работать с Wine в Linux или Mac Для запуска Windows приложений? Мой обзор-гайд для вас. Я в подробностях расскажу о том как запускать прилоежния, дебажить их, решать проблемы и покажу различные wine-loaders для работы.
Нассим Талеб — гениальный современный экономист, математик, философ и писатель. Его творчество оказало колоссальное (позитивное) влияние на моё отношение к жизни.
В этой статье я хочу кратко познакомить читателей Хабра с четырьмя книгами этого рационалиста и показать, как практика успешной торговли на бирже привела автора к осмыслению принципов адекватности... и даже общественных законов этики.
В каждой книге вас ждёт много математики и статистики, юмора, философии (сугубо практичной), а также истории из личного опыта автора и его окружения. А в качестве мета‑сообщения они несут мощный заряд рационального подхода к жизни, который я бы сформулировал так: «единственное, чему стоит верить — это своим глазам».
Наверное, не секрет, что одна из причин популярности nginx — это развитая экосистема сторонних модулей. Модули позволяют не просто настраивать какие-то детали обработки запроса, но и глубоко изменять поведение сервера.
Помимо модулей, которые решают конкретные задачи, существуют модули, которые добавляют поддержку расширений на различных языках программирования: Perl, Lua, JavaScript и других.
Теперь в этот набор добавляется ещё и модуль WASM, который мы разработали для нашего веб-сервера Angie (здесь и далее ссылки на нашу документацию). Зачем понадобился WASM на сервере, чем нас не устраивают существующие методы расширения и что в итоге получилось?
Данная статья — транскрипт выступления Владимира Хомутова на конференции HighLoad++. Владимир с 2012 года разработчик nginx, а с 2022 разработчик Angie.
В своей предыдущей статье[1] я уже рассказывал, как начал свое знакомство с искусственным интеллектом (ИИ). Тогда это был ChatGPT, а теперь — китайский DeepSeek[2].
Общение с DeepSeek происходит без посредников, что делает его более удобным и доступным. Раньше за использование ChatGPT приходилось платить или, например, задавать не более трёх вопросов в сутки. А с DeepSeek можно спрашивать сколько угодно и о чём угодно, не тратя ни копейки. Правда, есть опасения, что бесплатная подписка может закончиться, и тогда доступ к сервису будет закрыт. Также ходят слухи о возможных проблемах с «нежелательными» запросами.
Так уж жизнь повернулась, что для меня в автоматном программировании (АП) возникла пауза. Но мне бросить АП все равно что перестать дышать. А потому просто произошла задержка дыхания или просто передышка. Меня это не сильно огорчило, т.к. я по-прежнему пользуюсь АП, вдыхая полной грудью его возможности. Даже в текущей ситуации.
Тем не менее, я кинулся, так сказать, «во все тяжкие». Мне предложили заняться «умными домами» и я согласился. Новая область, новые интересы, новое приложение своих сил. Короче, – «движуха»! Мы, ведь, все мечтаем о чем-то подобном – не так ли? А еще обещали мотивировать, что немаловажно в наше меркантильное время. Вспомним хотя бы размер виртуальной средней зарплаты по России и средний размер пенсий...
Сейчас я только рад случившемуся. Раньше было скучновато. Иногда взбадривало общение на Хабре, а теперь «поддает жару» искусственный интеллект. И хотя я предполагал что-то подобное, но не ожидал, что это произойдет столь быстро, так бурно и с таким эффектом. Китайский ИИ стал коллегой, советчиком, а, порой, и собеседником, помогая освоить новую область программирования. При этом я по-прежнему не согласен с глашатаями, предрекающими замену программистов, но уверен, что квалификацию многих из них он повысит точно. Я убедился в этом на своём опыте.
WebSocket-сервер на Ktor – это эффективное решение для реального времени, позволяющее держать тысячы двунаправленных соединений без создания потоков на каждое подключение. Благодаря корутинам Kotlin Ktor упрощает реализацию WebSocket-коммуникаций в реальном времени (Ktor 101: Efficient JVM HTTP Toolkit | The IntelliJ IDEA Blog). В данной статье мы разберём архитектуру такого сервера, использование корутин и каналов для масштабируемой обработки сессий, поддержку комнат (чатов, игровых лобби, сигналинга), управление состоянием клиентов (heartbeat, реконнекты), масштабирование на несколько узлов, интеграцию с внешними сервисами, а также приведём примеры кода и практические советы из боевого опыта.
За последние годы стеганография прошла путь от простых методов сокрытия информации до сложных алгоритмов, использующих особенности человеческого восприятия. В прошлой статье я разобрал основы стеганографии и методы атак на стегосисистемы, а сегодня расскажу о семи ключевых способах встраивания секретных данных в видеопоток.
Мы детально рассмотрим технические особенности каждого метода: от классической замены наименее значащего бита до современного алгоритма Куттера-Джордана-Боссена.
В статье я представлю математический аппарат для оценки эффективности различных методов, включая формулы расчета пропускной способности и критерии оценки стойкости к атакам. Также поговорим о том, как выбрать оптимальный метод под конкретные задачи.
Материал будет полезен разработчикам систем защиты информации, специалистам по обработке цифровых сигналов и всем, кто интересуется современными методами сокрытия данных в мультимедийном контенте.