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

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

Send message

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

Level of difficultyEasy
Reading time4 min
Views4K
В новом дайджесте рассказываем как банки живут в заблокированном App Store, как создать UI-конструктор с помощью Compose Multiplatform, исследуем новый фреймворк внедрения зависимостей для Android и портируем кроссплатформенную С++ игру на iOS, изучаем Google Firebase Studio и многое другое. Заходите!

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

Google инструкция по промпт инжинирингу или как правильно писать запросы (краткий перевод)

Level of difficultyEasy
Reading time8 min
Views34K

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

Дальше будет небольшая выжимка и перевод с помощью ChatGPT.

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

Что такое Промпт-инжиниринг?

Большая Языковая Модель(БЯМ) работает, предсказывая наиболее вероятную последовательность слов (или «токенов»), следующую за вашим вводом. Когда вы пишете запрос, вы, по сути, задаете начальную точку и направление для этого процесса предсказания. Промпт-инжиниринг включает в себя:

Читать далее

Восстанавливаем повреждённый Linux через chroot

Reading time4 min
Views9.6K

Доводилось ли вам раскупоривать системник с Linux, который не грузится ни в какую – даже  после того, как вы убедились в корректности настроек BIOS и в том, что никаких серьёзных аппаратных ошибок в машине нет?

Если да – то вам просто необходимо изучить chroot. Он станет для вас настоящей палочкой-выручалочкой.

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

Этот метод я нащупал только после того, как Linux более десяти лет был моей рабочей лошадкой (спасибо, Мэтт !). Поэтому у меня есть основания полагать, что этот метод очень полезен и заслуживает вашего внимания. Надеюсь, этим постом мне удастся помочь тем, кому не доставало такого рассказа.

Читать далее

Как коммитить так, чтобы ваш код принимали мейнтейнеры: путь одного героя

Level of difficultyEasy
Reading time11 min
Views12K

Всем привет, меня зовут Юрий Пузыня, я занимаюсь развитием платформы документации Diplodoc в Yandex Infrastructure, которую мы пару лет назад выложили в опенсорс. И сегодня я расскажу лёгкую историю невероятного везения в опенсорсе.

Мой первый коммит как контрибьютора в опенсорс‑проект был смёржен спустя два с половиной года мной же в качестве мейнтейнера этого проекта. И в чём тут история успеха — спросите вы. Но давайте я расскажу всё по порядку.

Читать далее

Многопоточность в мобильных приложениях: руководство для QA-инженеров

Level of difficultyEasy
Reading time7 min
Views4.8K

Всем привет! Меня зовут Ира, я руковожу отделом тестирования мобильной платформы в Ozon Tech. Наш отдел занимается разработкой инструментов для автоматизации тестирования мобильных приложений Ozon и тестированием внутренних библиотек.

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

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

Читать далее

Как работает ptrace в Linux и зачем он тебе

Level of difficultyEasy
Reading time5 min
Views8.4K

Привет, Хабр! Сегодня у нас на столе инструмент, о котором многие слышали, но мало кто использовал по-настоящему — ptrace.

С ptrace можно подключаться к чужим процессам, читать и менять их память, перехватывать системные вызовы — и даже вежливо убрать sleep 9999.

Читать далее

Как мы создаем параметризованные автотесты с JUnit 5

Level of difficultyEasy
Reading time6 min
Views761

Параметризованные автотесты — это удобный инструмент, который помогает тестировать программное обеспечение быстрее и эффективнее. Вместо написания множества однотипных тестов с разными входными данными, можно использовать один тестовый метод, подставляя в него разные параметры. Это упрощает код и делает его более удобным в поддержке. JUnit 5, популярный фреймворк для тестирования Java-приложений, предлагает множество возможностей для работы с параметризованными тестами, делая процесс тестирования гибче и удобнее.

Подробности

Выгорание — норма, если ты без доспехов. Разбираемся, как выжить в «пламени дракона»

Reading time8 min
Views3.4K

Привет, Хабр! Меня зовут Асия, и начать хочу сразу со своей истории. С первой работы я практически сбежала через восемь месяцев. Начинала бодро и с большими надеждами, но выгорела еще на первых неделях. Сейчас понимаю, что причиной было тотальное расхождение реальности с моими карьерными ценностями. Из всей этой истории я вынесла урок: сначала пойми, какие задачи тебе нравятся, а какие забирают энергию, где вообще твой лимит прочности. И уже потом выстраивай отношения с работой.

С тех пор дела у меня пошли лучше. Пять лет назад я пришла в МТС. Руковожу направлением по обучению и адаптации персонала, провожу карьерные консультации по ротации и стараюсь сделать так, чтобы сотрудники ходили на работу с радостью. Сегодня хочу поделиться своим опытом: перечислю пять причин, которые, по моим наблюдениям, чаще всего ведут к выгоранию. И расскажу, как мы в МТС стараемся не повторять эти сценарии. Надеюсь, будет полезно!

Читать далее

Это путь воина: как я выучил Python и Go с помощью Цеттелькастена и кому точно не рекомендую метод

Level of difficultyEasy
Reading time9 min
Views51K

Привет, Хабр! Меня зовут Дмитрий, я работаю в YADRO. Я прошел большой путь в самостоятельном изучении языков программирования: от SQL до Go. Сначала я вообще не документировал процесс обучения, затем стал вести заметки по «академическому» принципу — писал конспекты, как в университете. Пока не открыл древовидную систему хранения данных, которая лежит в основе метода Цеттелькастен. 

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

Читать далее

Как освоить Linux за 64 часа, и почему я инвестировал в этот проект 1.5 года своей жизни

Level of difficultyMedium
Reading time17 min
Views64K

Привет, Хабр! Меня зовут Павел, и я расскажу вам о том, как можно быстро выйти из Матрицы освоить Linux. Мне повезло принять участие в крутом проекте по разработке учебного курса для службы каталога ALD Pro, которую Астра создала на замену MS Active Directory, и об этой истории мне хотелось бы вам поведать.

Увидеть, насколько глубока кроличья нора

Код, теория и практика: подборка книг по NLP

Reading time6 min
Views4.7K

Привет! Это Никита Малыхин, Tech Lead в команде AdTech в Центре Big Data МТС. В прошлый раз я поделился подборкой книг о нейронных сетях и рекомендательных системах. В 2к25 поиск практических советов по NLP в книгах может выглядеть как сизифов труд, ведь это одно из самых быстроразвивающихся направлений в ML. Тем не менее, сегодня будет втораячасть подборки — на этот раз сфокусируемся на материалах по естественному языку и книгам с практическими советами по машинному обучению. Хорошие специалисты в этой сфере на вес золота, а книги как раз помогают прокачать навыки. Все будет по делу, с примерами и практикой. Поехали!

Читать далее

Демоприложения: как жить, когда у вас 90+ application-модулей

Level of difficultyMedium
Reading time15 min
Views2.7K

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

В предыдущей статье основной акцент был на сокращении времени сборки и синхронизации кода с Android Studio. Но так уж выходит, что, решая одну проблему, мы порождаем другие. Если раньше был один единственный application module, к которому подключались все остальные модули для сборки в конечный артефакт(apk, aab), то сейчас таких модулей стало приблизительно на 90 больше.

Меня зовут Роман Заремба и я расскажу, как мы ушли от кода интеграции в application-модулях, пересмотрели базовые решения, придумали подход collector + initializer, перешли на библиотеку App Startup, избавились от нее и стали использовать стандартный Java ServiceLoader.

Читать далее

Что делает перечисления (enum) в Rust такими мощными?

Level of difficultyMedium
Reading time4 min
Views2.9K

На примерах попробую показать, почему enum в Rust это несколько больше, чем обычно принято считать. Рассмотрю расширенное использование enum в типовых ситуациях. Сразу забегая вперед скажу, что в рамках статьи я не затрагиваю паттерны и мэтчинг.

Первое, что приходит в голову, когда речь заходит об enum, — это идея: «А давайте заменим все константы на enum». :) Желание логичное, давайте на него посмотрим...

Читать далее

Собираем и запускаем минимальное ядро Linux

Level of difficultyHard
Reading time9 min
Views15K

Однажды на работе техлид порекомендовал мне проштудировать книгу Understanding the Linux Kernel Бове и Чезати. В ней рассмотрена версия Linux 2.6, сильно не дотягивающая до более современной версии 6.0. Но в ней явно ещё много ценной информации. Книга толстая, поэтому на её изучение мне потребовалось немало времени. Занимаясь по ней, я решил настроить такую среду разработки, в которой я мог бы просматривать и изменять новейшую версию ядра Linux — чтобы было ещё интереснее.

Есть и другие статьи, в которых рассказано, как собрать ядро Linux. Но в этой статье я немного иначе организую и подаю информацию.

Читать далее

Разбираемся как работать с wine на Unix-based системах

Level of difficultyMedium
Reading time40 min
Views21K

Давно хотели научиться работать с Wine в Linux или Mac Для запуска Windows приложений? Мой обзор-гайд для вас. Я в подробностях расскажу о том как запускать прилоежния, дебажить их, решать проблемы и покажу различные wine-loaders для работы.

Читать далее

Четыре книги Нассима Талеба — фундамент адекватности в мире хаоса

Level of difficultyEasy
Reading time5 min
Views22K

Нассим Талеб — гениальный современный экономист, математик, философ и писатель. Его творчество оказало колоссальное (позитивное) влияние на моё отношение к жизни.

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

В каждой книге вас ждёт много математики и статистики, юмора, философии (сугубо практичной), а также истории из личного опыта автора и его окружения. А в качестве мета‑сообщения они несут мощный заряд рационального подхода к жизни, который я бы сформулировал так: «единственное, чему стоит верить — это своим глазам».

Читать далее

Расширение возможностей веб-сервера при помощи WASM на примере Angie

Level of difficultyHard
Reading time19 min
Views3K

Наверное, не секрет, что одна из причин популярности nginx — это развитая экосистема сторонних модулей. Модули позволяют не просто настраивать какие-то детали обработки запроса, но и глубоко изменять поведение сервера.

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

Теперь в этот набор добавляется ещё и модуль WASM, который мы разработали для нашего веб-сервера Angie (здесь и далее ссылки на нашу документацию). Зачем понадобился WASM на сервере, чем нас не устраивают существующие методы расширения и что в итоге получилось?

Данная статья — транскрипт выступления Владимира Хомутова на конференции HighLoad++. Владимир с 2012 года разработчик nginx, а с 2022 разработчик Angie.

Читать далее

Как я «ломал» DeepSeek

Reading time10 min
Views12K

В своей предыдущей статье[1] я уже рассказывал, как начал свое знакомство с искусственным интеллектом (ИИ). Тогда это был ChatGPT, а теперь — китайский DeepSeek[2].

Общение с DeepSeek происходит без посредников, что делает его более удобным и доступным. Раньше за использование ChatGPT приходилось платить или, например,  задавать не более трёх вопросов в сутки. А с DeepSeek можно спрашивать сколько угодно и о чём угодно, не тратя ни копейки. Правда, есть опасения, что бесплатная подписка может закончиться, и тогда доступ к сервису будет закрыт. Также ходят слухи о возможных проблемах с «нежелательными» запросами.

Так уж жизнь повернулась, что для меня в автоматном программировании (АП) возникла пауза.  Но мне бросить АП все равно что перестать дышать. А потому просто произошла задержка дыхания или просто передышка. Меня это не сильно огорчило, т.к. я по-прежнему пользуюсь АП, вдыхая полной грудью его возможности. Даже в текущей ситуации.

Тем не менее, я кинулся, так сказать, «во все тяжкие». Мне предложили заняться «умными домами» и я согласился. Новая область, новые интересы, новое приложение своих сил. Короче, – «движуха»! Мы, ведь, все мечтаем о чем-то подобном – не так ли? А еще обещали мотивировать, что немаловажно в наше меркантильное время. Вспомним хотя бы размер виртуальной средней зарплаты по России и средний размер пенсий...

Сейчас я только рад случившемуся. Раньше было скучновато. Иногда взбадривало общение на Хабре, а теперь «поддает жару» искусственный интеллект. И хотя я предполагал что-то подобное, но не ожидал, что это произойдет столь быстро, так бурно и с таким эффектом. Китайский ИИ стал коллегой, советчиком, а, порой, и собеседником, помогая освоить новую область программирования. При этом я по-прежнему не согласен с глашатаями, предрекающими замену программистов, но уверен, что квалификацию многих из них он повысит точно. Я убедился в этом на своём опыте.

Читать далее

Построение высоконагруженного WebSocket-сервера на Kotlin + Ktor: архитектура и лучшие практики

Level of difficultyMedium
Reading time24 min
Views3.1K

WebSocket-сервер на Ktor – это эффективное решение для реального времени, позволяющее держать тысячы двунаправленных соединений без создания потоков на каждое подключение. Благодаря корутинам Kotlin Ktor упрощает реализацию WebSocket-коммуникаций в реальном времени (Ktor 101: Efficient JVM HTTP Toolkit | The IntelliJ IDEA Blog). В данной статье мы разберём архитектуру такого сервера, использование корутин и каналов для масштабируемой обработки сессий, поддержку комнат (чатов, игровых лобби, сигналинга), управление состоянием клиентов (heartbeat, реконнекты), масштабирование на несколько узлов, интеграцию с внешними сервисами, а также приведём примеры кода и практические советы из боевого опыта.

Читать далее

Прятки в пикселях: методы встраивания тайных посланий в видеопоток

Reading time10 min
Views6.9K

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

Мы детально рассмотрим технические особенности каждого метода: от классической замены наименее значащего бита до современного алгоритма Куттера-Джордана-Боссена.

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

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

Читать далее

Information

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