Search
Write a publication
Pull to refresh
2
0
Send message

Отладка NDK и JNI под Android

Reading time2 min
Views17K
В данной статье речь пойдет об отладке кода под Android.
За последнее время произошло много подвижек в этом направление. Появился Android Studio, google добавило поддержку отладки нативного кода в eclipse.
Если необходимо отладить только Java, то Android Studio покроет ваши потребности полностью.
Если необходима отладка с++ или Java кода то ADT Bundle со встроенным Eclipse опять же поможет решить вашу проблему.
Если вкратце
  • Дать понять Eclipse что проект содержит нативную часть(Add native support)
  • Убедиться что в команде сборки стоит NDK_DEBUG=1
  • Нажать Debug as Android Native Application

на некоторых девайсах реобходимо еще и поставить в манифесте debuggable в true
Но если необходимо отлаживать jni код, где попеременно работают c++ и Java функции, то вам этот способ не подойдет, потому-что в зависимости от выбранного способа отладки(Android Native Application, Android Application) работает отладка либо с++ либо java кода.
О том как отлаживать смешанный код пойдет речь далее в статье.
Читать дальше →

Перехват вызовов функций нативных библиотек в Android приложениях

Reading time4 min
Views13K

Для чего это нужно


Я часто сталкивался с необходимостью отлаживать Android приложения, использующие нативный код. Иногда мне было нужно перехватить вызовы к bionic (libc), иногда к .so-шкам, к которым исходного кода у меня не было. Иногда приходилось включать в свои приложения чужие .so, к которым не было исходников и надо было подкорректировать их поведение.

Итак, как сделать LD_PRELOAD в Android?
Читать дальше →

Семейный бизнес в сфере IT

Reading time6 min
Views123K
image

Предисловие


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

Я никоим образом не претендую на роль авторитета или человека, умудренного жизненным опытом. Наоборот, я понимаю, что наша компания находится в самом начале своего пути развития. Однако, какую-то часть этого пути мы уже прошли. Я просто хочу поделиться собственным опытом и надеюсь, что это поможет начинающим предпринимателям совершить меньше ошибок.
Читать дальше →

Секреты скорости Swift

Reading time8 min
Views35K
С момента анонса языка Swift скорость была ключевым элементом маркетинга. Еще бы – она упоминается в самом названии языка (swift, англ. — «быстрый»). Было заявлено, что он быстрее динамических языков наподобие Python и Javascript, потенциально быстрее Objective C, а в некоторых случаях даже быстрее, чем C! Но как именно они это сделали?

Спекуляции


Несмотря на то, что сам язык предоставляет огромные возможности для оптимизации, у нынешней версии компилятора с этим не все в порядке, и получить хоть какие-то успехи в тестах производительности стоило мне немало сил. В основном это происходит из-за того, что компилятор генерирует массу излишних действий retain-release. Думаю, что это быстро поправят в следующих версиях, но пока мне придется говорить о том, благодаря чему Swift может быть потенциально быстрее Objective C в будущем.

Более быстрая диспетчеризация методов


Как известно, каждый раз, когда мы вызываем метод в Objective C, компилятор транслирует его в вызов функции objc_msgSend, которая занимается поиском и вызовом нужного метода в рантайме. Она получает селектор метода и объект, в таблицах методов которого производится поиск непосредственного куска кода, который будет обрабатывать этот вызов. Функция работает очень быстро, но зачастую делает куда больше работы, чем действительно нужно.

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

С другой стороны, в 99.999% случаев вы не будете врать компилятору. Когда объект объявлен как NSView *, это либо непосредственно NSView, либо дочерний класс. Динамическая диспетчеризация необходима, а вот настоящая пересылка сообщений практически не нужна, но природа Objective C заставляет всегда использовать самый «дорогой» вид вызовов.
Читать дальше →

От Objective-C к Swift. Рекомендации

Reading time10 min
Views41K
Swift это новый язык программирования от компаний Apple, который она презентовала в этом году на WWDC. Вместе с языком программирования, Apple выпустила отличный справочник по языку Swift, который я рекомендую прочитать или ознакомиться с ним. Тем не менее, читать книгу это очень долго! Так что если у Вас нет много времени и Вы просто хотите узнать о новом языке Swift, то эта статья для Вас.

В данной статье я бы хотел поделиться некоторыми размышлениями по поводу перехода от Objective-C к Swift. Я постараюсь дать Вам несколько советов и указать на недостатки при разном подходе к обеим языкам. Поэтому без лишних отступлений, перейдем к самой статье.
Читать дальше →

Объединение нескольких видео в iOS с помощью AVMutableVideoComposition

Reading time5 min
Views4.9K
image Здравствуй, Хабр!
В одном из проектов мне понадобилось решить задачу объединения видео, в частности, пользователь мог поставить видео на паузу, после чего продолжить запись (количество итераций было неизвестно). Поэтому необходимо было найти способ для решения этой задачи доступными средствами. Конечно, в голову пришло два варианта, либо писать всё сразу в один файл, либо записывать в разные, а склеивать уже после сессии. Я решил остановиться на втором, а что из этого вышло, читайте под катом.
Подробнее

Домофонный мультиключ и всё про имитацию «таблеток»

Reading time9 min
Views526K
Да, это жутко избитая тема. Универсальный домофонный ключ «таблетку» делал наверное каждый второй, кто начинал изучать микроконтроллеры. В Интернете очень много и статей на эту тему, и готовых решений. Однако, интерес к этому угасать не перестаёт даже с массовым переходом на RFID. Это не удивительно, ведь многим хочется собрать такое устройство, которое выполняет не только весьма интересную задачу, но ещё и всегда с собой. К тому же оно не такое уж сложное в изготовлении.

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



Внимание! Этот ключ не позволяет нелегально проникать куда-либо. Это устройство лишь для того, чтобы носить один ключ вместо нескольких.
Хотя ничто не мешает вам записать в него универсальные коды открытия домофонов.

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

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

Reading time4 min
Views167K
«Право налогоплательщика избегать уплаты налогов с использованием всех разрешенных законом способов никем не может быть оспорено. Каждый имеет право вести свои финансовые дела таким образом, чтобы свести соответствующие платежи к минимуму…»
Дж. Сандерленд,
Судья Верховного Суда США


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

Машинное обучение для интеллектуализации ваших приложений

Reading time1 min
Views15K
Вводный доклад начального уровня о машинном обучении на конференции iForum'2014.

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

Для программистов, желающих стать распознавальщиками.



Auto Layout и UIScrollView. Как его готовить?

Reading time2 min
Views55K

В iOS 6 Apple представили замечательную возможность для вёрстки UI для iOS-приложений — Auto Layout. Но вот что удивительно, до сих пор очень немногие проекты используют эту возможность. А ведь это очень сильный инструмент, если с умом подойти к вёрстке UI, можно сэкономить очень много времени на подстраивании элементов для 3,5” и 4” экранов, портретно-ландшафтном расположении экрана и даже на универсальной вёрстке для iPhone и iPad.

И это всё не считая того, что скоро представят iPhone 6 и никто до сих пор точно не знает, какое там будет разрешение и какой экран. Лучше бы заранее подстраховаться.

В основном, тема Auto Layout довольно простая, и изучить её несложно. Но лично я столкнулся с большой проблемой при расположении элементов в UIScrollView. Я потратил немало времени и нервов на изучение того, как же правильно расположить элементы и указать размер контента для того чтобы ScrollView начал пролистываться.

Хоть и решение довольно простое, но на него не так просто выйти. В данной статье я бы хотел рассказать, как же всё-таки правильно готовить UIScrollView в Auto Layout.

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

Как научиться проходить собеседование в Google

Reading time14 min
Views14K

На этой неделе у нас выступала Ава Катушка — тренер в Verbetcetera.

Verbetcetera — буткамп для тех, кто хочет подготовиться к интервью в Большой пятерке — Google, Amazon, Facebook, Apple и Microsoft. Менторы Verbetcetera распределены по 5 странам, уже работают в компаниях-таргетах, знают все про специфику работы и требования к кандидатам на разных рынках.

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




Меня зовут Ава Катушка. Я училась в МФТИ, на факультете computer science, который называется ФИВТ. Мой третий курс был довольно сложным, у меня было много стресса, экзамены, навалились проблемы со здоровьем, семейные проблемы.

Я помню, я зашла в книжный магазин и увидела книгу «О чем мечтать». Мне стало интересно; я помнила, что когда-то о чем-то мечтала, но не помнила, о чем. Я раскрыла эту книгу, и прямо там, в «Библио-Глобусе», начала выполнять упражнения из этой книги. И оказалось, что я выполняла ожидания всех людей вокруг – моей семьи, учителей, кого угодно, кроме своих собственных. Я тогда сильно разозлилась. Мне стало интересно – чего же я, собственно, сама хочу. Позже я сидела в Парке Горького и думала об этом. Я поняла, что хочу путешествовать, хочу завести друзей – у меня была с этим проблема – и хочу с нуля написать свой вебсайт. И у меня, как по волшебству, в том году все начало сбываться.

Что тимлиду спросить о компании на собеседовании

Reading time5 min
Views23K

По мотивам своих собеседований, а также собеседований коллег и mentee, составил список вопросов от тимлида к компании, что стоит прояснить на собеседовании — что спросить собеседующего.

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

Каковы финансовые показатели компании?

Является ли компания прибыльной или тратит деньги инвесторов? Или даже до инвесторов ещё не дошло, и основатели пока платят из своего кармана? Как выглядит бизнесовый план развития?

Если компания имеет представительство в РФ, официальное ли (по ТК РФ) трудоустройство и полностью ли "белая" зарплата?

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

Расскажите про ваше понимание «хорошего тимлида»

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

Возможно, это понимание даже прописано в должностных инструкциях.

Где-то тимлид должен быть разработчиком (то есть, писать код) с минимальной общественной нагрузкой, где-то руководителем, где-то пытаться совместить.

Читать далее

Пульсоксиметр своими руками

Reading time5 min
Views35K

Во время самоизоляции я попытался сделать пульсоксиметр из того, что уже есть у меня в закромах




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

Компоненты:

  • Arduino Uno.
  • Датчик KY-039 – его можно собрать из двух резисторов и фотодиода.
  • Красный светодиод.
  • Резистор на 330 Ом – 2 шт.
  • Дисплей LCD 16x2 I2C.

Обновляем проекты Unity Android для совместимости с архитектурой ARM64

Reading time3 min
Views13K

Google предложил разработчикам обновить приложения для совместимости с архитектурой ARM64 в срок до 1 августа 2019 года, если они не соответствуют этим требованиям


Найдем и включим поддержку ARM64 в Unity


Для включения, откроем настройки File — Build Settings, далее — Player Settings для платформы Android. В открывшемся инспекторе, видим на вкладке Other settings раздел Configuration.
Читать дальше →

Аппаратное ускорение глубоких нейросетей: GPU, FPGA, ASIC, TPU, VPU, IPU, DPU, NPU, RPU, NNP и другие буквы

Reading time28 min
Views95K


14 мая, когда Трамп готовился спустить всех собак на Huawei, я мирно сидел в Шеньжене на Huawei STW 2019 — большой конференции на 1000 участников — в программе которой были доклады Филипа Вонга, вице-президента по исследованиям TSMC по перспективам не-фон-неймановских вычислительных архитектур, и Хенга Ляо, Huawei Fellow, Chief Scientist Huawei 2012 Lab, на тему разработки новой архитектуры тензорных процессоров и нейропроцессоров. TSMC, если знаете, делает нейроускорители для Apple и Huawei по технологии 7 nm (которой мало кто владеет), а Huawei по нейропроцессорам готова составить серьезную конкуренцию Google и NVIDIA.

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

Только в прошлом году в тему было вложено больше 3 миллиардов долларов. Google уже давно объявил нейросети стратегическим направлением, активно строит их аппаратную и программную поддержку. NVIDIA, почувствовав, что трон зашатался, вкладывает фантастические усилия в библиотеки ускорения нейросетей и новое железо. Intel в 2016 году потратил 0,8 миллиарда на покупку двух компаний, занимающихся аппаратным ускорением нейросетей. И это при том, что основные покупки еще не начались, а количество игроков перевалило за полсотни и быстро растет.


TPU, VPU, IPU, DPU, NPU, RPU, NNP — что все это означает и кто победит? Попробуем разобраться. Кому интересно — велкам под кат!
Читать дальше →

Учеба на частного пилота в Средиземье: переезд и жизнь в новозеландской деревне

Reading time6 min
Views40K


Всем привет!

Хочется поделиться довольно необычным опытом и дополнить замечательную статью bvitaliyg о том, как прийти в небо и стать пилотом. Расскажу о том, как я уехал в новозеландскую деревню под Хоббитоном, чтобы сесть за штурвал и научиться летать.
Читать дальше →

Истории IT юриста. Жизнь аутсорсинг бизнеса. Часть 1

Reading time8 min
Views24K


#ОТ АВТОРА
За свою карьеру я встречал много IT предпринимателей, помогал строить бизнес, решал проблемы. Видел взлеты и падения, успех и крах.

Смысл этой истории (и всех последующих в рубрике “Истории юриста”) рассказать вам о юридических аспектах и нюансах жизни отечественного IT бизнеса.

Представлюсь. Меня зовут Вячеслав Устименко, я основатель известной среди IT предпринимателей юридической компании и YouTube блогер.
Читать дальше →

Deep Learning — не только котики на мобилках или как мы производим дефектовку тележек локомотивов

Reading time5 min
Views24K

Буквально пару дней назад компания Aurorai передала в опытную эксплуатация систему распознавания дефектов и контроля состояния тележек для локомотивов Ермак. Задача нетривиальная и очень интересная, первым этапом которой было предложено оценить состояние тормозных колодок и ширины бандажа. Нам удалось решить задачу с точность до 1мм при скорости локоматива до 30 км/ч! Хочу отметить, что благодаря специфики можно было использовать “TTA (test-time augmentation)” – яркий пример kaggle-style хака из соревнований, который плохо ложится на прод и семантическую сегментацию на базе se_resnext50 encoder, которая даёт поразительный по точности результат в предсказании маски.

Вижу, значит существую: обзор Deep Learning в Computer Vision (часть 1)

Reading time17 min
Views31K
Компьютерное зрение. Сейчас о нём много говорят, оно много где применяется и внедряется. И как-то давненько на Хабре не выходило обзорных статей по CV, с примерами архитектур и современными задачами. А ведь их очень много, и они правда крутые! Если вам интересно, что сейчас происходит в области Computer Vision не только с точки зрения исследований и статей, но и с точки зрения прикладных задач, то милости прошу под кат. Также статья может стать неплохим введением для тех, кто давно хотел начать разбираться во всём этом, но что-то мешало ;)

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

О простых вещах-сложно. «Cпящая сталь». Чем смазать заржавевшие болты или Не WD-40 единым…

Reading time22 min
Views129K
Посвящается всем отчаявшимся и потерявшим надежду… открутить заржавевшую гайку!

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

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

Ну и, традиционно — не забудь закинуть в закладки, %USERNAME%, пригодится! :)


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

Information

Rating
Does not participate
Registered
Activity