Pull to refresh
9
0
Красковский Антон @grafic

User

Send message

Как собрать нативную библиотеку для Android

Reading time10 min
Views7.9K

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


image

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0

Jenkins для Android сборки, с помощью Docker

Reading time14 min
Views14K
Всем привет!

Я работаю андроид разработчиком, и не так давно мы столкнулись с некоторыми рутинными задачами на своем проекте, которые хотелось бы автоматизировать. Например у нас 5 разных flavor, для каждого из которых требуется загружать свой билд на fabric, иногда для разных тасок по несколько раз в день. Да эту задачу можно сделать и с помощью gradle таски, но хотелось бы не запускать этот процесс на машине разработчика, а делать это как-то централизовано. Или например автоматически заливать билд в google play в бету. Ну и просто хотелось поковырять CI систему. Что из этого получилось, и как мы это настраивали, зачем там Docker, далее в статье.


Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments16

Динамическое тестирование Андроид приложений

Reading time3 min
Views6.9K

Динамическое тестирование проводится с целью выявить уязвимости по время функционирования приложения. В данной статье хочу поделиться нескольким способамии тестирования приложения под Андроид. Также покажу как конфигурировать и настраивать оборудование. Кому интересно, добро пожаловать под кат.
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments5

Математика в Gamedev по-простому. Матрицы и аффинные преобразования

Reading time7 min
Views30K
Всем привет! Меня зовут Гриша, и я основатель CGDevs. Сегодня хочется продолжить тему математики в геймдеве. В предыдущей статье были показаны базовые примеры использования векторов и интегралов в Unity проектах, а сейчас поговорим о матрицах и аффинных преобразованиях. Если вы хорошо разбираетесь в матричной арифметике; знаете, что такое TRS и как с ним работать; что такое преобразование Хаусхолдера – то вы возможно не найдёте для себя ничего нового. Говорить мы будем в контексте 3D графики. Если же вам интересна эта тема – добро пожаловать под кат.


Читать дальше →
Total votes 31: ↑24 and ↓7+17
Comments24

Android Jetpack: превращаем приложения в ракеты

Reading time11 min
Views14K
Война… Война никогда не меняется. Так, война за красивый и работающий код идет постоянно. И на каждую сложную задачу рождается свое оружие: кто-то делает его под себя, а кто-то пользуется готовыми инструментами. Разработка под Android не исключение. На нашей конференции AppsConf 2018 мы обсудим, как и чем сейчас интереснее всего пользоваться, где можно споткнуться и что интересного есть в огромном арсенале средств разработки, который Google наконец начал приводить в порядок. Основные темы докладов можно посмотреть на нашем сайте, а пока мы попросили рассказать Google Developer Expert Дениса Неклюдова и Александра Смирнова о новом инструментарии Android Jetpack, который был представлен в мае этого года.


Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments0

Эффективная работа с SQLite на примере ICQ

Reading time9 min
Views29K
Как и во многих других приложениях, нам в мобильном ICQ приходится хранить достаточно много информации: сообщения, контакты и тому подобное. Когда количество запросов к этим данным достигает какого-то критического значения, приложение начинает тормозить. Долгий запуск, медленное открытие чата, медленная отправка сообщений, постоянные спиннеры — все это жутко напрягает. Чаще всего причиной тормозов является неудачная работа с данными. В статье я хочу поделиться нашим опытом рефакторинга структуры данных, оптимизации запросов и некоторыми удобными приемами для миграции.

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

Читать дальше →
Total votes 50: ↑46 and ↓4+42
Comments8

JNI: Подружим Java и C++

Reading time4 min
Views55K

Введение


Бывают моменты, когда в Java некоторые действия выполняются за пределами обычных Java-классов. Например, необходимо исполнить код, написанный на C/C++ или другом каком-нибудь языке.

В данной статье рассмотрим данный вопрос с практической точки зрения, а именно напишем простой пример взаимодействия кода Java с кодом C++, используя JNI. Статья не содержит чего-то сверхестественного, это скорее памятка для тех, кто с этим не работал.
Читать дальше →
Total votes 18: ↑13 and ↓5+8
Comments8

Осторожнее с копипастом: фингерпринтинг текста непечатаемыми символами

Reading time4 min
Views60K
Не хотите читать? Посмотрите демо.

Символы нулевой ширины — это непечатаемые управляющие символы, которые не отображаются большинством приложений. Н​апример, в э​то пред​ложение я вст​авил де​сять про​​белов н​улевой ширины, вы эт​о замет​или? (Подсказка: вставьте предложение в Diff Checker, чтобы увидеть местоположение символов!). Эти символы можно использовать как уникальные «отпечатки» текста для идентификации пользователей.


Безусловно, он может здесь быть. И вы никогда не догадаетесь

Зачем?


Ну, изначальная причина не слишком интересна. Несколько лет назад я с командой участвовали в соревнованиях по различным видеоиграм. У команды была приватная страничка для важных объявлений, среди прочего. Но в итоге эти объявления стали репостить в других местах, с издевательствами над командой, раскрывая конфиденциальную информацию и командную тактику.
Читать дальше →
Total votes 101: ↑101 and ↓0+101
Comments106

Как думать на SQL?

Reading time8 min
Views606K
Надо “SELECT * WHERE a=b FROM c” или “SELECT WHERE a=b FROM c ON *” ?

Если вы похожи на меня, то согласитесь: SQL — это одна из тех штук, которые на первый взгляд кажутся легкими (читается как будто по-английски!), но почему-то приходится гуглить каждый простой запрос, чтобы найти правильный синтаксис.


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


SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
  FROM books
  WHERE stock>(SELECT avg(stock)
    FROM books))
GROUP BY members.firstname, members.lastname;

Буэ! Такое спугнет любого новичка, или даже разработчика среднего уровня, если он видит SQL впервые. Но не все так плохо.


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

Читать дальше →
Total votes 54: ↑48 and ↓6+42
Comments166

Java с ассемблерными вставками

Reading time11 min
Views26K



Как известно, на любом языке можно писать, как на Java, а первая любовь джависта — это написание Garbage Collectors и JIT Compilers. С этим связано множество восхитительных вопросов, например: каким образом можно из управляемого кода напрямую работать с машинным кодом и ассемблером?


Кроме того, в этой статье будет небольшой пример на C#. В какой-то момент стало понятно, что нельзя всегда изучать одну Java. Рантаймы динамических языков используют общую теорию и на практике работают в рамках похожих проблем. Самый простой способ продвинуть свою работу — посмотреть, как там у соседей, и скопировать себе что-нибудь хорошее.


Теперь про ассемблер и машинный код. Зачем это нужно — вопрос открытый. Например, вы наслушались о Meltdown и хотите написать для него красивое API :-) Ну, и не надо забывать, что Oracle — не боги, поддержку того же AVX-512 добавили только в Девятке, прямое управление аппаратной транзакционной памятью не ложится на язык, часть стандартных методов можно реализовать лучше, чем это сделали в SDK и т.п. — у нас всегда есть с чем покопаться!

Читать дальше →
Total votes 74: ↑71 and ↓3+68
Comments32

Практика написания тестов. Лекция Яндекса

Reading time33 min
Views81K
С праздниками, друзья! Если вы не против научиться на каникулах чему-то новому, прочитайте лекцию Кирилла Борисова — разработчика систем авторизации Яндекса. Кирилл объясняет, как построить процесс тестирования Android-приложений, знакомит с современными инструментами и спецификой их использования.


— Прежде чем двинуться вперед, давайте устроим небольшой соцопрос. Кто из вас знает, что такое тесты? Кто пишет тесты? А кто знает, зачем он пишет тесты?
Total votes 38: ↑38 and ↓0+38
Comments24

Мобильные устройства изнутри. Разметка памяти, структура файлов описания и разметки памяти

Reading time19 min
Views37K

1. Введение


Как оказалось, разметка физической памяти мобильных устройств (МУ) это малоописанный раздел знаний, необходимых разработчику. Т.к. память существует во всех устройствах, созданных на основе микропроцессоров или микроконтроллеров, а их уже миллиарды, то это еще и очень-очень востребованный раздел знаний.

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

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

На основе таблиц описаний затем формируются файлы разметки памяти, которые в виде образов разделов прошиваются непосредственно в память МУ.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments7

Многопоточное программирование в Android с использованием RxJava 2

Reading time13 min
Views38K
Если вы новичок в общении с RxJava или пытались разобраться в этом, но не довели дело до конца, то ниже вы найдете для себя кое-что новое.

image
Оригинал статьи написан 29 ноября 2017. Перевод вольный.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments0

MediaCodec или понимаем как хотим

Reading time6 min
Views27K
С выходом Android 4.3 (API 18), Google привнесла долгожданный компонент под названием MediaCodec. Класс был открыт публике с выходом API 16, но для нормального использования и поддержки в Android системе требуется минимальный уровень API 18.

Материал рассчитан на опытного Android разработчика. Я попробую объяснить и показать примеры кодирования видео на лету с использованием Surface как входа и выхода потока данных. Если интересно, прошу под кат.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments5

Как работает Android, часть 1

Reading time8 min
Views216K


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

Читать дальше →
Total votes 92: ↑91 and ↓1+90
Comments51

У нас длинные руки: 7 зарубежных площадок, на которых можно найти удалённую работу

Reading time3 min
Views133K
Развитие телекоммуникационных технологий — это win-win для работодателей и работников: компании могут находить таланты по всему миру, а люди могут работать откуда угодно, лишь бы был Wi-Fi. И популярность удалённой работы лишь растёт. К примеру, согласно отчёту Gallup, в 2015 году 37% респондентов ответили, что работают удалённо частично или весь рабочий день. Это было на 7 процентных пунктов больше, чем в 2008. И нет причин считать, что эта тенденция сегодня изменилась.

Чем больше людей обращаются к подработке, фрилансу или удалённой работе на полную ставку, тем чаще возникает вопрос: где именно мне найти работу, которая позволит отказаться от поездок в офис? Предлагаем вашему вниманию семь зарубежных площадок, на которых можно найти удалённую работу.
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments35

Ночные контактные линзы для тех, кто не носит очки, но боится при этом коррекции

Reading time6 min
Views89K


Последний в нашем цикле коррекций зрения метод — это жёсткие контактные линзы для ночного использования. Они вторые по безопасности после очков. Условно самый безопасный метод коррекции — это однозначно очки (с прочными поликарбонатовыми линзами), потом — ReLEx SMILE и жёсткие ночные линзы, потом — femtoLASIK и ФРК, затем мягкие однодневные линзы, затем «варварские методы» — мягкие линзы длительного ношения и LASIK. Отдельно стоят факичные интраокулярные линзы и искусственные хрусталики — их лучше делать только по прямым медицинским показаниям (достаточно инвазивный метод для рефракционных показаний).

Главное преимущество ночных линз — клинически доказано, что они останавливают прогрессирующую миопию. Поэтому очень часто их назначают детям, когда глаз активно развивается. После 20 лет этот эффект на порядок уменьшается, но остаётся пара других плюсов.

Расплата за явные плюсы — высокая цена таких линз, необходимость строгой дисциплины и регулярный сон минимум по 7 часов.
Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments51

Android: динамически подгружаем фрагменты из сети

Reading time5 min
Views15K
В этой статье мы рассмотрим, как загружать классы (в том числе, фрагменты) из сети во время выполнения программы, и использовать их в своем Android-приложении. Область применения подобной технологии на практике — это отдельная тема для разговора, мне же сама по себе реализация данной функциональности показалась довольно интересной задачей.

Приступим.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments19

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

Reading time11 min
Views24K
Гостевая статья от участника Google I\O 2017 и одного из лидеров GDG Kazan — Артура Василова (@Arturka).

19 мая завершилась конференция Google I/O. По поему мнению, несмотря на то, что новых продуктов в этом году было представлено не так много, с технической точки зрения конференция получилась интересной.

Самым большим и интересным техническим обновлением лично для меня стали новые Architecture Components (не Android O, в котором мало чего интересного, и уж точно не Kotlin). Google сделал то, что должен был сделать уже очень давно — разработать стандарты архитектуры и предоставить их разработчикам. Что же, лучше поздно, чем никогда, и давайте разбираться с тем, насколько полезной может быть архитектура от Google.


Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments1

Основы TCP/IP для будущих дилетантов

Reading time11 min
Views469K
Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.

Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments63
1
23 ...

Information

Rating
Does not participate
Location
Курск, Курская обл., Россия
Date of birth
Registered
Activity