Pull to refresh
7
0
Андрей Абакумов @ScratchBoom

User

Send message

Основы безопасности операционной системы Android. Native user space, ч.2

Reading time8 min
Views43K

Вступление


Сегодня я продолжу рассматривать безопасность на уровне немного выше ядра. Во второй части мы рассмотрим, откуда появляются system.img, userdata.img и cache.img, а также как обеспечивается безопасность в Native user space.
Всем кому интересно, добро пожаловать!
Читать дальше →

Основы безопасности операционной системы Android. Native user space, ч.1

Reading time8 min
Views99K

Вступление


В этой статье я попробую рассмотреть безопасность чуть-чуть повыше ядра, а именно: как работает безопасность в Native user space. Мы коснемся темы процесса загрузки операционной системы и рассмотрим структуру файловой системы Android. Как я уже говорил, я не очень силен в Linux, поэтому если заметите неточности, то исправляйте — меня научите и статью улучшите. Так как эта тема довольно обширная, я решил разбить её на две части. В первой части мы рассмотрим процесс загрузки операционной системы и особенности файловой системы. Всем кому интересно, добро пожаловать!
Читать дальше →

Баланс в играх жанра Tower Defense (часть 1)

Reading time7 min
Views69K
В данной статье речь пойдет о принципах вычисления баланса в нашей игре жанра Tower Defense (TD), которую мы выпустили летом 2012г. для платформ iOS и Android. Мы расскажем, c какими сложностями и ограничениями пришлось столкнуться, каков был ход мыслей геймдизайнера при выборе того или иного решения, и как был получен конечный результат.

Достижения игры
1. побывала в топ6 и топ7 в категориях US Appstore;
2. занимала топ1 категорий и топ7 overall в RU Appstore;
3. «письмо счастья» от Apple;
4. 425 000 закачек;
5. 5 звезд (средняя оценка для всех магазинов);
6. множество положительных комментариев;
7. обзоры на ведущих мировых мобильных порталах.


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

Как две недели?!

Reading time2 min
Views106K
Как это вам надо две недели на эту задачу? Что, правда? Вот на эту элементарную формочку с тремя полями и двумя кнопками? Две недели? Да вы надо мной издеваетесь, наверное! Давайте разбираться.

Что? Нужна ли валидация данных при вводе? Ну, конечно, нужна! И вообще, вот это поле лучше разбить на два, так понятнее. А вот в это добавить маску. А вот это — заменить на выпадающий список. Где брать варианты для этого списка? В базе на сервере, конечно. Как это их там нет? А, ну да, это же в другом проекте они у нас были… Ну, значит надо добавить. Взять там и добавить сюда. Сейчас я дам вам контакт разработчика того проекта — обсудите с ним. Он, правда, у нас уже не работает, но я думаю, вполне можно спросить что и как — он расскажет, скорее всего.

Мы всё обсудили? Нет? Что ещё?
Читать дальше →

Вычисление оптического потока методом Лукаса-Канаде. Теория

Reading time7 min
Views58K

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

Если мы хотим узнать на сколько тот или иной объект объект сместился по отношению к его же положению на предыдущем кадре за то время, которое прошло между фиксацией кадров, то скорее всего в первую очередь мы вспомним про оптический поток (optical flow). Для нахождения оптического потока можно смело воспользоваться готовой протестированной и оптимизированной реализацией одного из алгоритмов, например, из библиотеки OpenCV. При этом, однако, очень невредно разбираться в теории, поэтому я предлагаю всем заинтересованным заглянуть внутрь одного из популярных и хорошо изученных методов. В этой статье нет кода и практических советов, зато есть формулы и некоторое количество математических выводов.
Читать дальше →

Немного о клеточных автоматах

Reading time5 min
Views56K

На хабре уже много-много-много раз писали про игру «Жизнь». Совсем недавно была удивительная статья Жизнь на плоскости Лобачевского. Но игра «Жизнь» является частным случаем т. н. клеточных автоматов. Существует много других клеточных автоматов совсем не похожих на игру «Жизнь», но тем не менее очень интересных. Про некоторые из них и хочется рассказать здесь.

Начнём с того, что рассмотрим ряд клеток, в которых, кроме одной, находятся нули:

... 0  1  0  0  0  0  0  0 ...

Рассмотри следующее правило, заменяем число в клетке на сумму этого числа и соседа слева. Получим следующую серию состояний:

... 0  1  0  0  0  0  0  0 ...
... 0  1  1  0  0  0  0  0 ...
... 0  1  2  1  0  0  0  0 ...
... 0  1  3  3  1  0  0  0 ...
... 0  1  4  6  4  1  0  0 ...
... 0  1  5 10 10  5  1  0 ...
... 0  1  6 15 20 15  6  1 ...

Не сложно увидеть, что это — треугольник Паскаля. А теперь вместо обычного сложения будем использовать сложение по модулю два. Известно (и даже недавно рассказывалось в хабрастатье Треугольник Серпинского и треугольник Паскаля), что получится дискретный аналог треугольника Серпинского:

... 0  1  0  0  0  0  0  0 ...
... 0  1  1  0  0  0  0  0 ...
... 0  1  0  1  0  0  0  0 ...
... 0  1  1  1  1  0  0  0 ...
... 0  1  0  0  0  1  0  0 ...
... 0  1  1  0  0  1  1  0 ...
... 0  1  0  1  0  1  0  1 ...

Интересно? Читаем дальше!
Читать дальше →

Реализация системы скинов в Android-приложении или смена цветовой гаммы в один клик

Reading time6 min
Views14K
Приветствую всех хабравчан!

Совсем недавно реализовывала интересную, на мой взгляд, задачу в андроид приложении и решила поделится опытом с вами.
Задача заключается в следующем: смена цветовой гаммы приложения по одному клику. Так называемая реализация скинов для приложения.

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

Пара слов об интернационализации приложений

Reading time12 min
Views46K
Я давно регулярно читаю Хабр и заметил, что здесь довольно мало внятных статей о локализации ПО, ориентированных на разработчиков. По своему опыту управления проектами локализации я могу сказать, что локализация — это не только перевод строк и адаптация приложения к контексту той или иной страны, но и постоянное противоборство (в идеальных случаях — равноправное взаимодействие) с разработчиками.
В этой статье я постараюсь на примере показать, как можно создать так называемый localization-friendly code, то есть, организовать ресурсы таким образом, чтобы существенно облегчить локализацию приложения, снизив избыточные временные и финансовые затраты.
Сразу же оговорюсь, что речь пойдёт в первую очередь об интернационализации, то есть, об учёте всех лингвистических особенностей на этапе разработки. Если же ресурсы вашего проекта изначально не подразумевали локализацию, а впоследствии вы решились на неё, то их «затачивание» под локализацию может выйти намного дороже, чем доход от неё.



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

Что плохого в работе на результат

Reading time11 min
Views217K
Все чаще приходится слышать: "Работай на результат!"

"Работай на результат!" — кричит начальник подчиненному, чтобы заставить этого тупого неповоротливого кретина, принятого в команду по протекции, приносить хоть какую-то пользу общему делу.

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

"Обязательна ориентированность на результат!" — напишет пожилая кадровичка «ГорАвиаВагонМорСтроя» в требования к кандидату на должность помощника бухгалтера, будучи уверенной в том, что раз все так пишут, то и ей надо.

"Наш девиз — Работа на Результат!" — именно так, с двумя Большими Буквами для большего пафоса пишет на корпоративном сайте очередной говноконторы-однодневки молоденькая девочка-всё-в-одном, гордо именующая себя помощником руководителя по связям с общественностью. И этот самый руководитель, даже не знающий, что секретутка это, оказывается, ни больше ни меньше, целый его помощник, тоже употребит эту фразу на фуршете в городской администрации с целью создать себе рекламу в среде местных бюрократов.

Культ карго. Мало кто из произносящих эту фразу может внятно объяснить, какой смысл в неё вкладывается. Люди верят в неё, как в волшебную формулу, заклинание, они пихают её куда ни попадя, надеясь, что она придаст им уникальность, выделит их из толпы таких же неудачников. Организации, Компании, конторы да и откровенные «шараги» не мыслят себя без этого лозунга. Как же это, «Рога и копыта» работают на результат, а мы, что, хуже?



А хуже ли?
Осторожно! Тентакли под катом!

Как я свое бесплатное приложение для Android платным делал

Reading time3 min
Views20K
В середине 2011 года я опубликовал свое второе приложение в Android Market. Приложение — достаточно простое, нацелено на российский рынок (точнее, даже на один единственный город), сезонное. Что самое важное — аналогов такого приложения в Android Market'e в то время не было.
Приложение было, конечно же, бесплатным. Бесплатное, но с рекламой, которую можно было отключить через in-app purchase. За год на рекламе и на отключениях рекламы мне удалось заработать $18.63. Было принято решение сделать приложение платным. О том, как я это делал — далее.
Читать дальше →

Миллион загрузок в месяц или как сделать хороший старт на Google Play

Reading time5 min
Views33K
Всем привет,



Сначала хотел озаглавить топик «Миллион загрузок в месяц или как сделать хороший старт на Google Play на примере одной игры», но потом решил, что это слишком длинно. Тем не менее, сегодня я буду говорить о своей последней игре. Не только потому, что мне хочется немного ее прорекламировать (хотя и это тоже, чего скрывать), но и потому что каждый запуск новой игры индивидуален и без «привязки к местности» рассказывать, наверное, было бы не совсем правильно.
Читать дальше →

Как я нахожу время?

Reading time7 min
Views106K

На фотографии изображен автор оригинального поста, Стив Клабник, со своим отцом
Стив Клабник широко известен в кругах рубистов. Он является контрибьютором во множество Open Source проектов, в том числе Ruby on Rails, Draper, Resque, Rails API, занимается преподаванием программирования и консалтингом в рамках JumpstartLab, пишет книги, увлекается политикой и без устали пишет в свой Твиттер.

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

Приезжал в Москву в рамках Rails Club Moscow 2012 с докладом о Hypermedia API и зарекомендовал себя хорошим профессионалом и очень продуктивным человеком. По слухам, он умудряется разбирать пулл реквесты в самолете, на сцене, во время выступления, и даже на групповых фото.

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

Мне часто задают вопрос: «Как ты находишь время?». Чаще всего речь идет об open source, иногда о книгах, изредка — о других вещах. Обычно я уклонялся от ответа чем-нибудь вроде: «Блин, не знаю, просто беру и нахожу». Но этот ответ не слишком полезен. Да и мне было интересно, смогу ли я справляться со временем еще лучше. Так что я немного порефлексировал, и вот как я нахожу время:
Читать дальше →

Ликбез по типизации в языках программирования

Reading time12 min
Views532K
image

Эта статья содержит необходимый минимум тех вещей, которые просто необходимо знать о типизации, чтобы не называть динамическую типизацию злом, Lisp — бестиповым языком, а C — языком со строгой типизацией.

В полной версии находится подробное описание всех видов типизации, приправленное примерами кода, ссылками на популярные языки программирования и показательными картинками.
Читать дальше →

Язык vs инструмент

Reading time6 min
Views14K
Мир разработчиков программного обеспечения разделен на два лагеря. Знатоки языков поют дифирамбы мощи высокоуровневого программирования — функциям высшего порядка, метапрограммированию, аспектно-ориентированному программированию, рефлексии и т.д. Знатоки инструментов имеют хорошие навыки использования утилит для сборки и отладки, документирования и автодополнения, рефакторинга и тестирования. Знатоки языков склоняются к использованию для разработки текстовых редакторов типа emacs, vim или подобных — они хорошо подходят для почти любых языков, включая новые. Знатоки инструментов выбирают IDE, такие как Visual Studio, Eclipse, или IntelliJ, включающих в себя целые наборы специализированных средств разработки.



Новые языки программирования, такие, к примеру, как Laszlo или Groovy, и новые расширения языков, такие как AOP, обычно доступны только для использования средствами универсального текстового редактора, пока не получат полноценную поддержку в какой-нибудь IDE. Спустя какое-то время, если язык действительно «выстрелил», эта поддержка, несомненно, появится. Это происходит не потому, что сделать нужный инструментарий слишком сложно. Это происходит потому, что вложение усилий в разработку языка и вложение усилий в разработку средств для него находятся в несколько ортогональных плоскостях и порой даже вытесняют друг друга. И вот почему.
Читать дальше →

Фазированные антенные решетки

Reading time3 min
Views56K
На хабре уже есть статья, посвященная антеннам. Продолжая тему, хочу рассказать хабраобществу о принципах работы фазированных антенных решеток (ФАР). ФАР нашли широкое применение в радиолокационных комплексах, противоракетной обороне, космической связи; применение в гражданских объектах (коммерческих) затруднено сложностью изготовления и дороговизной. Возможно кто-то заинтересуется тематикой и придумает эффективное применение ФАР для коммерческого применения.
Читать дальше →

Основные проблемы влияющие на производительность вычислительного ядра и приложения и методы их решения компилятором

Reading time12 min
Views17K


Продолжаю разговор об оптимизации приложений, начатый здесь в посте «Существует ли простая оценка качества оптимизации приложения?»

Про процессоры можно говорить много и подробно и, наверняка, среди читателей Хабра есть масса людей споcобных на такие разговоры. Но моя точка зрения на процессор сугубо прагматичная. Поскольку меня интересует производительность приложения, через призму производительности процессора, то мне достаточно понимания базовых принципов работы вычислительного ядра. А также методов, которые существуют, чтобы на эти базовые принципы воздействовать. Буду я ориентироваться на архитектуру Intel64. Это вызвано тем, что в нашей команде анализа производительности мы занимаемся анализом работы оптимизирующего компилятора Intel, в основном, именно для этой архитектуры. На рынке вычислительных систем для высокопроизводительных вычислений эта и совместимые архитектуры занимают львинную долю, поэтому большинство проблем производительности имеет довольно общую природу. Давайте я коротко перечислю те основные проблемы и возможности, которые определяют производительность ядра и вычислительной системы и предложу короткий список различных оптимизаций, призванных влиять на эти проблемы.

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

Jelastic плагин для Eclipse

Reading time2 min
Views6.8K
imageВсем привет!
Хотим поделиться с хабрасообществом последними новостями: теперь облачная платформа Jelastic интегрирована с Eclipse IDE. Cпециальный плагин для Eclipse делает разработку Java EE веб-приложений на платформе Jelastic гораздо удобнее: сейчас можно развернуть приложение в облако прямо из Eclipse и не переключаться постоянно между IDE и браузером. Известно, что Eclipse лежит в основе деятельности многих Java-разработчиков, так что надеемся, что они по достоинству оценят это нововведение. Также доступны такие полезные функции, как управление (запуск, остановка и т.д.) пользовательской средой и доступ к серверным логам.

Давайте вкратце рассмотрим, как установить плагин и как использовать его основной функционал.
Читать дальше →

Основы саунддизайна: киберпанк в Древнем Египте

Reading time16 min
Views10K

Введение


Недавно был опубликован топик, по результатам обсуждения которого я решил написать эту статью. Мы разберём основы саунддизайна, используя два метода синтеза звука (а именно: субтрактивный и FM) на примере создания подходящего тембра для следующей мелодии. В результате у нас получится вот что.
Я сразу хочу предупредить: после прочтения этой (как и любой другой) статьи вы не станете крутым саунддизайнером — это целая профессия, требующая долгого и упорного изучения. Цель этой статьи — показать, как вообще всё это происходит. Я постараюсь продемонстрировать ход моих мыслей, дать некоторые базовые знания насчёт основных компонентов синтезатора и покажу пару интересных приёмов. Надеюсь, это вдохновит вас двигаться дальше — именно для этой цели в конце статьи я привёл краткий список того, что следует почитать, если тема покажется интересной.
Читать дальше →

Существует ли простая оценка качества оптимизации приложения?

Reading time7 min
Views10K
image

Тише едешь дальше будешь...? Оценка производительности.



Больше 7 лет я занимаюсь анализом производительности в составе группы Performance Analysis новосибирского отделения Интел. Мы работаем над улучшением производительности различных приложений, а точнее, ищем способы, с помощью которых ее смог бы улучшить наш компилятор. За это время накопился полезный опыт, который, на мой взгляд, был бы интересен посетителям уважаемого Хабра. Речь в данном случае будет идти не об алгоритмической оптимизации приложений, а о различных модификациях приложений без принципиального изменения их алгоритмов. Понятно, что алгоритмические оптимизации программы тоже имеют право на жизнь, но это совсем другая задача.

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

Information

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