Pull to refresh
27
0
Богдан Орлов @KAIIIAJIOT

iOS Разработчик

Send message

Контроллер «Virt2real», или просто — Виртурилка

Reading time15 min
Views192K
— Ты пил пиво, — тихо заговорил Джо. — Плохо работал консервный нож.
Ты сказал, что сам смастеришь консервный нож, побольше и получше. Это я и есть.
Генри Каттнер, «Робот-зазнайка»


UPD> Начат сбор предзаказов habrahabr.ru/post/163865

Кто-бы мог подумать, что мы своими руками сможем разработать такую красавицу и умницу. Мало того — не просто разработать на бумаге, а ещё и получить десяток работающих образцов.

Картинка Для Привлечения Внимания


Пролог


Давным-давно мы с коллегой начали заниматься управлением через Интернет всякими штуковинами типа вебкамер и маленьких машинок. Чуть позже у нас появились ездящие девайсы посерьёзнее, способные нести на борту свой контроллер и ёмкую батарею. К тому же я увлёкся всякими летающими штуковинами — самолётами и коптерами, что внесло дополнительную лепту в список хотелок.

Не покидала мысль о том что хорошо бы сделать видео не «вид сбоку или сверху», а вид с борта девайса, от первого лица. То что самолётчики/коптеристы называют FPV. Было это примерно пару лет назад. Пробовали ставить на машинку аналоговую камеру и передатчик, принимали видео на ТВ-тюнер, далее отдавали на видеосервер для раздачи рулящим машинками. Но сразу всплыли нюансы — одновременно можно транслировать только 3-4 видеопотока, иначе появляются наводки с одного канала на другой. Плюс дороговизна такого решения, плюс проблемы с разрешёнными частотами, плюс паршивое качество картинки с постоянно появляющимися помехами… В общем, попробовали и забили на это дело. К тому же, возможностей управляющего контроллера (тогда всё было сделано на базе всем известной Ардуинки) начало нехватать. Стали искать другие варианты, чтоб было недорого, дёшево, удобно и практично. Но имеющиеся в продаже (за границей, само собой и с довольно высокой стомостью) на тот момент железки для нужд не подходили. Одни умели всё кроме видео, другие умели только видео, но не позволяли подключать периферию, и т.д. и т.п.

Читать дальше →
Total votes 234: ↑231 and ↓3+228
Comments210

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 4

Reading time23 min
Views150K

Этой весной, Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

Один из студентов лекции записывал и выложил транскипт. В данном хабратопике я перевожу четвертое занятие. Редактор Astropilot.

Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments13

Анализ вовлеченности мобильных пользователей

Reading time2 min
Views6.4K
22 октября американская аналитическая компания Flurry выпустила очередной отчет, посвященный изучению пользовательской вовлеченности. На Хабре уже мелькал голый перевод статьи, но мы в компании решили его проанализировать и в этом посте поделимся результатами.

По данным, полученным при изучении более 230 000 приложений, зарегистрированных в системе, была построена «матрица вовлеченности»: все приложения разделены на категории и ротированы в зависимости от частоты использования в неделю и % пользователей, которые продолжают пользоваться приложением по истечении 90 дней.

image

Как видно из таблицы, наилучшими показателями вовлеченности обладают приложения, имеющие социальную составляющую (социальные сети и многопользовательские игры, знакомства и различные im-сервисы), что и неудивительно. В зависимости от типа приложений, американские аналитики даже рекомендуют оптимальный вид монетизации. Так для приложений с высокой частотой использования, но небольшим процентом возвращений (квадранты II и III) — это платные приложения и in-app purchase, а для приложений с высокой долей возвратов (I и IV) — рекламная модель.

Но даже больший интерес, на наш взгляд, представляют не сами эти данные, а сравнение их с аналогичным отчетом компании за 2009 год.
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments4

Ваш фонарик может отправлять SMS: еще один повод обновить ваши устройства до iOS 6

Reading time3 min
Views40K


Сегодня я не буду рассказывать вам, как устроена система безопасности iOS 5. И мы не будем собирать крохи информации через недокументированные возможности. Мы просто отправим SMS из приложения без ведома пользователя.

Читать дальше →
Total votes 93: ↑85 and ↓8+77
Comments72

Разбираемся с autorotation в iOS 6

Reading time8 min
Views26K
Привет, друзья!

Если вы создаете приложения для гаджетов от Apple, то наверняка в курсе, что недавно произошло обновление iOS до версии 6.
Наравне с другими новыми функциями Apple внесла изменения в механизм autorotation.
На всякий случай напомню, что autorotation — это механизм, позволяющий использовать устройство как в портретной (вытянутой в высоту), так в альбомной (растянутой в ширину) ориентации, а также изменять эту ориентацию при повороте устройства.
image
Если в вашем приложении контент отображается в обеих ориентациях (а особенно если на некоторых экранах вам нужно запретить поворот) — готов поспорить, что у вас уже возникли некоторые вопросы.
Если же вы не используете функцию изменения ориентации экрана — разницы могли и не заметить. Однако знание того, как в iOS6 работает autorotation, в любом случае будет полезно и пригодится в будущем.
Читать дальше →
Total votes 36: ↑32 and ↓4+28
Comments15

Определение доминирующих цветов: Python и метод k-средних

Reading time2 min
Views38K

Assorium

На Хабре публиковалось несколько статей с алгоритмами и скриптами для выбора доминирующих цветов на изображении: 1, 2, 3. В комментариях к тем статьям можно найти ссылки ещё на десяток подобных программ и сервисов. Но нет предела совершенству — и почему бы не рассмотреть способ, который кажется самым оптимальным? Речь идёт об использовании кластеризации методом k-средних (k-means).
Читать дальше →
Total votes 59: ↑54 and ↓5+49
Comments17

2400 иконок флагов под свободной лицензией

Reading time1 min
Views90K


Самая большая коллекция флагов: 2400 пиктограмм размерами 16×16, 24×24, 32×32, 48×48 и 64×64. Есть государственные флаги всех стран, плюс бонусы: Англия, Абхазия, Нагорный Карабах, Красный крест, Южная Осетия, Сомалиленд, флаг Марса, НАТО и проч.

Все иконки в двух вариантах: стандартный и глянцевый.

Скачать:
www.gosquared.com/download/pixels/flags.zip

Лицензия MIT (GPL-совместимая), разрешает использование иконок в коммерческих проектах.
Total votes 93: ↑84 and ↓9+75
Comments30

Git up и все все все

Reading time2 min
Views26K
Комманда git up (аналог svn up) добавляется так:
git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop'

git up при надобности ныкает все ещё незакоммиченные изменения в stash, обновляет локальную ветку до свежайшей и восстанавливает локальные изменения назад. В том числе переносит ещё неотправленные локальные коммиты в самый конец, делая историю линейной как в Subversion, т.е. избегая лишних веток и merge-коммитов.
Читать дальше →
Total votes 98: ↑88 and ↓10+78
Comments64

Как я решил потихоньку учить питон, а попал в дебри CS188.1x Artificial Intelligence

Reading time7 min
Views98K

Привет Хабр, или введение


image

Расскажу свою небольшую предысторию.

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

Не могу сказать, что я уже был в программистах, но образование получил 3 года назад по специальности «Информационные системы и технологии» в Военмехе. А судьба занесла в схемотехники-электронщики еще во времена универа. Раньше спасали частые командировки на объекты (пока молод и холост — интересно), а последний год все окончательно надоело.
Читая Хабр, выбрал себе Python.
Читать дальше →
Total votes 68: ↑59 and ↓9+50
Comments30

Специальный шрифт для нахождения ошибок после OCR

Reading time1 min
Views16K
Сообщество Distributed Proofreaders («Распределённые корректоры») больше десяти лет занимается сканированием книг для проекта «Гутенберг». Сотни добровольцев помогают вычитывать тексты и исправлять ошибки.

После автоматического распознавания чаще всего ошибки встречаются в символах, которые похожи друг на друга, как I, l и 1, O и 0, и так далее. Если пользоваться обычным шрифтом вроде Times, то такие ошибки можно и не заметить. Поэтому для проекта Distributed Proofreaders был создан специальный шрифт, в котором «похожие» символы как можно сильнее отличаются друг от друга.


Читать дальше →
Total votes 49: ↑39 and ↓10+29
Comments62

Овертаймим? А как насчет результатов?

Reading time6 min
Views88K
Вашему вниманию перевод статьи старшего преподавателя Гарвардской Школы Бизнеса Роберта Позена (Robert Pozen), They Work Long Hours, but What About Results?, опубликованной в The New York Times 6 октября 2012.

image
5 часов вечера. Работая быстро, вы завершили все свои задачи и хотите домой. Но пока никто из ваших коллег не ушел, что заставляет вас остаться еще на пару часов, попусту тратя время в интернете и перечитывая почту. Зато никто не подумает что вы — лентяй.

Суровая реальность заключается в том, что эффективность зачастую не вознаграждается. Я часто сталкивался с этим когда работал в адвокатской конторе в Вашингтоне. Благодаря моему опыту я мог быстро ответить на вопросы клиентов, сэкономив время себе и им. Но так как моя контора (как и большинство адвокатских контор) имела почасовую оплату, моя эффективность работала против меня.
Читать дальше →
Total votes 86: ↑75 and ↓11+64
Comments94

Жизненный цикл ViewController в iOS6

Reading time4 min
Views8.9K
Некоторые из вас, возможно, заметили, что viewControllers больше не запрашивают viewWillUnload и viewDidUnload в iOS6. Это происходит потому, что контроллеры больше не выгружают свои представления (view) автоматически.
Ваша первая мысль может быть «Окей, как я могу вручную выгрузить мое представление при предупреждении о недостатке памяти (low memory warning)? Это выглядит, как шаг назад.»
Затем вы ищите ответы и пишите что-то вроде:

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    if([self isViewLoaded] && ![[self view] window]) {
        [self setView:nil];
    }
}

Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments16

Транзакции в MongoDB

Reading time5 min
Views54K
image MongoDB — замечательная база данных, которая становится все популярнее в последнее время. Все больше людей с SQL опытом начинают её использовать, и один и первых вопросов, который у них возникает: MongoDB transactions?.

Если поверить ответам со stackoverflow, то все плохо.

MongoDB doesn't support complex multi-document transactions. If that is something you absolutely need it probably isn't a great fit for you.
If transactions are required, perhaps NoSQL is not for you. Time to go back to ACID relational databases.
MongoDB does a lot of things well, but transactions is not one of those things.
Но мы не поверим и реализуем транзакции (ACID*) основанные на MVCC. Ниже будет рассказ о том, как эти транзакции работают, а тем, кому не терпится посмотреть код — добро пожаловать на GitHub (осторожно, java).

Пост не о MongoDB, а о том, как использовать compare-and-set для создания транзакций, а durability обеспчивается ровно в той степени, в которой её обеспечивает хранилище.
Читать дальше →
Total votes 52: ↑43 and ↓9+34
Comments35

Хлеб Маркуса и YAGNI

Reading time17 min
Views45K
imageНедавно в нашей новостной ленте появились два Героя, программисты-пекари – Борис и Маркус. Борис – хороший человек и перфекционист, а Маркус – очень скромный и серый программист, не желающий выделяться. Оба стремятся к лучшему и хотят быть полезными. Но кажется, что Маркус не очень старался.
Это новая ветка – продолжение. Сегодня сюжетная линия коснется только Маркуса. Он – главный герой.
Итак, история под катом.
Читать дальше →
Total votes 89: ↑79 and ↓10+69
Comments47

Почему нужно 1000 раз подумать, прежде чем использовать noSQL

Reading time6 min
Views79K
Зачем я пишу эту статью? Во-первых я хотел бы внести свой вклад в понимание людьми сути nosql и того, почему выбирать такой тип хранилища нужно осознанно. Во-вторых, я буду рад встретить единомышленников, противников и, возможно, подискутировать. А если Вам понравилась эта статья, то буду рад услышать вопросы, которые можно раскрыть более подробно в новых статьях:)

Несмотря на то, что nosql решений сейчас тьма, люди неохотно переходят на новые типы хранилищ. Правильно ли это? На мой взгляд – да. И я постараюсь сказать почему, на примере разных nosql хранилищ, которые встретились на моём профессиональном пути.
Читать дальше →
Total votes 153: ↑131 and ↓22+109
Comments130

Как разработать свой фоторедактор для iOS. Отчет по конкурсу ВКонтакте

Reading time5 min
Views24K

Привет всем хабражителям и интересующимся!
Вчера (внезапно) случился конец сдачи проектов на первый этап еще одиного славного конкурса фоторедакторов для iOS от ВКонтакте. И в этой статье я хочу поделиться приобретенным опытом, рассказать о граблях и проблемах, с которыми я столкнулся при разработке своей версии сего продукта.
Читать дальше →
Total votes 65: ↑54 and ↓11+43
Comments31

Как два программиста хлеб пекли

Reading time5 min
Views260K


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

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →
Total votes 380: ↑348 and ↓32+316
Comments328

Восстановление расфокусированных и смазанных изображений. Повышаем качество

Reading time5 min
Views210K
Представляю вашему вниманию заключительную статью из трилогии «Восстановление расфокусированных и смазанных изображений». Первые две вызвали заметный интерес — область, действительно, интересная. В этой части я рассмотрю семейство методов, которые дают лучшее качество, по сравнении со стандартным Винеровским фильтром — это методы, основанные на Total Variaton prior.
Также по традиции я выложил новую версию SmartDeblur (вместе с исходниками в open-source) в которой реализовал этот метод. Итоговое качество получилось на уровне коммерческих аналогов типа Topaz InFocus. Вот пример обработки реального изображения с очень большим размытием:


Читать дальше →
Total votes 355: ↑352 and ↓3+349
Comments86

Взломать Wi-Fi за… 3 секунды

Reading time2 min
Views2M
Какой человек не любит халявы? Практически все ее просто обожают, и я не исключение. Вдохновленный статьей «Взломать Wi-Fi за 10 часов» я достал из недр харда BT5, скачанный ранее, и записал его на болванку. Результат не заставил себя ждать, и первый пароль был получен на следующее утро. И понеслась…
Читать дальше →
Total votes 133: ↑112 and ↓21+91
Comments63

NoSQL базы данных: понимаем суть

Reading time9 min
Views574K
В последнее время термин “NoSQL” стал очень модным и популярным, активно развиваются и продвигаются всевозможные программные решения под этой вывеской. Синонимом NoSQL стали огромные объемы данных, линейная масштабируемость, кластеры, отказоустойчивость, нереляционность. Однако, мало у кого есть четкое понимание, что же такое NoSQL хранилища, как появился этот термин и какими общими характеристиками они обладают. Попробуем устранить этот пробел.


Читать дальше →
Total votes 137: ↑133 and ↓4+129
Comments75

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Registered
Activity