• Трилатерация c помощью iBeacon

    • Tutorial
    В конце октября в Москве прошла конференция мобильных разработчиков #MBLTDev, на которой я рассказывал про трилатерацию с помощью iBeacon.

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


    Презентация
    Читать дальше →
  • Нейробиология и искусственный интеллект: часть вторая – интеллект и представление информации в мозгу

      Продолжение.

      Начало здесь: Нейробиология и искусственный интеллект: часть первая — ликбез,
      и здесь: Нейробиология и искусственный интеллект: часть полуторная – новости от Blue Brain Project.

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

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

      И как же интеллект связан с деятельностью нейронов?





      Читать дальше →
    • Особенности Swift

        В рамках Mobile Camp Яндекса наш коллега Денис Лебедев представил доклад о новом языке программирования Swift. В своем докладе он затронул особенности взаимодействия с Objective-C, рассказал про фичи языка, которые показались ему наиболее интересными. А также про то куда сходить на Github, и какие репозитории посмотреть, чтобы понять, что со Swift можно делать в реальном мире.

        Разработка Swift началась в 2010 году. Занимался ей Крис Латтнер. До 2013 процесс шел не очень активно. Постепенно вовлекалось все больше людей. В 2013 году Apple сфокусировалась на разработке этого языка. Перед презентацией на WWDC о Swift знало порядка 200 человек. Информация о нем хранилась в строжайшем секрете.


        Презентация и конспект доклада
      • Реализуем pull to refresh и infinite scrolling на Swift

          Возьмём за основу статью Знакомьтесь, Swift!, где показано как сделать простое приложение на Swift, и добавим туда такие известные и полезные штуки как pull to refresh и infinite scrolling используя встроенные возможности языка. Чтобы было еще интереснее, добавим немного асинхронности, иначе приложение будет каждый раз замирать на время обновления.


          Читать дальше →
        • 10 главных выводов, которые я сделал за Год Изучения Продуктивности

          • Translation
          Предисловие переводчика: В мире написано столько книг по личной эффективности и тайм-менеджменту, что берясь за этот перевод я безусловно задавал себе вопрос: «А есть ли здесь вообще что-то новое, ради чего эту статью стоит переводить, и главное читать»? Сначала мне казалось, что я ответил на этот вопрос «да», однако реальность оказалась несколько сложнее. 

          Сейчас я думаю, что сказать что-то новое человеку, который прочитал хотя бы 2-3 книги по тайм-менеджменту и личной эффективности практически невозможно. Однако существует огромная пропасть между тему, что люди знают, и тем, что люди делают. Поэтому если у вас уже есть какой-то багаж знаний по личной эффективности, я советую вместо вопроса «это что-то, чего я не знаю?» задавать другие вопросы:

          1. Согласен ли я с написанным?
          2. Если да, поступаю ли я так?
          3. Если нет, почему и что я могу сделать чтобы начать поступать правильно? 

          Уверен, так статья принесет вам гораздо больше пользы.

          Должен сказать, что я с огромным удовольствиям ходил по ссылкам в этой статье, особенно по тем, которые описывают эксперименты Криса (такие как переключение между 90-часовой и 20-часовой рабочими неделями). Поэтому я принял решение сохранить все эти ссылки в переведенной статье.

          Также хотел бы сделать замечание для любителей красивого русского языка. Я довольно долго думал, менять ли «продуктивность»  на более близкие родному уху «производительность» и «личную эффективность», но в итоге решил оставить всё как есть – главным образом из-за невозможности использования одного и того же слова в разных контекстах.

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

          Приятного чтения!
          Читать дальше →
        • Как мы разрабатывали приложение для Хабрахабра



            CleverPumpkin и TM начали предметные переговоры в сентябре 2013 года. На самом деле, беседы о создании приложения начались еще в декабре 2012 года в кулуарах общения Mofas и Boomburum, которые поддерживали дружеские отношения еще с давних времен (когда еще существовал форум palmz.in, и все увлекались кпк). Команда Хабра имела чёткое представление о желании своих пользователей — иметь мобильные приложения, но всё упиралось в отсутствие внешнего API.
            Мне интересно, что было дальше
          • Игра в прятки: кодогенерация против JSON

              Страшно подумать, но ещё каких-то десять лет назад разработка системы самого заштатного RPC была целым праздником в жизни разработчика. Болезненным и длительным праздником, как свадьба для лошади: голова в цветах, зад в мыле. Это было страшно увлекательно и одновременно невероятно запарно. Один выбор протокола чего стоил. Я уж не говорю о борьбе с могучими и чудовищными фреймворками, типа DCOM или CORBA. Реализация транспортного уровня вообще была уделом людей с длинными бородами.

              В наше счастливое время жизнь программиста под iOS должна быть легка и приятна. Транспорт давно перестал быть проблемой. А RPC? Легко: достаём из кобуры Apache Thrift или на худой конец Google Protocol Buffers и пожалуйста, с минимальным напряжением головного мозга готов и протокол, и сервер, и клиент. Подавляющему количеству приложений в AppStore только это и нужно: простой и понятный интерфейс к удаленным процедурам, желательно в приятных обертках из нативных классов, и такая же простая и понятная обработка ошибок. Всё.

              Но. К сожалению, и Thrift, и Protobuf заточены под одновременную разработку клиента и сервера. А такая удача случается в карьере программиста не часто.
              Читать дальше →
              • +17
              • 11.6k
              • 5
            • Избавление от привычек. Миф или вымысел?

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

                Не хватает силы воли начать новую жизнь, и вы каждый раз терпите неудачу? Успокойтесь, вы проиграли, изменить жизнь усилием воли нельзя.

                Однако мириться с этим немыслимо, с этим нужно что-то делать, и я хочу поговорить об этом.

                Сегодняшний пост написан под влиянием полезной книги Чарльза Дахигга "Сила привычки".
                Читать дальше →
              • Mobius: конференция про мобильный хардкор

                  Привет, хабровчане!

                  В пятницу, 14 марта в Санкт-Петербурге мы проведём конференцию для разработчиков мобильного ПО.

                  Что нас ждёт на конференции


                  • полтора десятка мощнейших докладов от экспертов по мобильной разработке;
                  • мастер-классы по самым актуальным технологиям разработки мобильного ПО;
                  • возможность закосить рабочий день пообщаться с коллегами и друзьями в неформальной обстановке;
                  • ну и расчленённый червяк :)




                  На конференции не будет


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



                  Читать дальше →
                  • +11
                  • 4.9k
                  • 6
                • Через звезды к терниям, или Как мечта о работе гейм-дизайнером превращается в суровые рабочие будни

                    Привет, это снова я – Мария Наместникова, гейм-дизайнер проекта Skyforge в Allods Team. Сегодня я решила красочно описать, чем на рабочем месте занимаются гейм-дизайнеры в крупных студиях.

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

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


                    Читать дальше →
                  • iOS оставляет ваш телефонный номер в заложниках

                      Бенджамин Стейн (Benjamin Stein), технический директор компании Mobile Commons, рассказывает о «худшем баге», с которым ему пришлось столкнуться в жизни. Это произошло после того, как Бен сменил iPhone на Android. Вскоре он заметил, что ему не приходят многие текстовые сообщения от контактов в адресной книги, а именно — от других пользователей iPhone.

                      Как выяснилось, если знакомый пытается послать сообщение, то iPhone автоматически отправляет его в фирменный чат iMessage, поскольку телефонный номер Бенджамина сохранился у них в кэше как номер с поддержкой iMessage. Естественно, сообщение не приходит на Android-устройство.
                      Читать дальше →
                    • Задания для разработчика Яндекс.Музыки для iOS

                      При заполнении анкеты на должность разработчика Яндекс.Музыки для iOS просят выполнить тестовые задания. Задания выложены в открытом виде, никакой просьбы не разглашать задания и не публиковать решения нет.

                      Приступим.
                      Читать дальше →
                    • Алгоритмы и структуры данных поиска. Лекции и курсы от Яндекса

                      • Tutorial
                      Сегодня мы завершаем новогоднюю серию постов, посвященных лекциям Школы анализа данных. Последний по порядку, но никак не по важности курс — «Алгоритмы и структуры данных поиска».

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

                      Мы учли то, о чём нас просили в комментариях к прошлым курсам — теперь при желании можно не только смотреть/скачивать лекции по отдельности, но и загрузить всё разом в виде открытой папки на Яндекс.Диске. Кстати — в предыдущих постах тоже появились такие же апдейты (вот ссылки для удобства: «машинное обучение», «дискретный анализ и теория вероятностей», «параллельные и распределённые вычисления»).



                      Лекции читает Максим Александрович Бабенко, заместитель директора отделения computer science, ассистент кафедры математической логики и теории алгоритмов механико-математического факультета МГУ им. М. В. Ломоносова, кандидат физико-математических наук.
                      Содержание курса, тезисы лекций и ссылки на видео
                    • Загрузка Reveal SDK с любыми приложениями

                        Вот в этом посте автор указал в качестве одного из применений Reveal App «знакомство с приложением, написанным другим разработчиком». Идея отличная, ведь, как известно, разобрать что-то чужое — отличный способ обучения. Изучать интерфейс можно чтобы принять чужую работу (если исходники по договору не положены), или отловить баг и отписаться автору приложения из App Store. Одно «но» — для подобных действий в приложение должен быть встроен Reveal SDK, что в production версии почти невероятно. И тут возникает причина поставить jailbreak, который позволит подгрузить нужный dylib (в нашем случае libReveal.dylib) с любым приложением (пока исключений не нашел).
                        Читать дальше →
                      • Паттерны ООП в примерах для iOS

                        • Translation
                        • Tutorial

                        От переводчика


                        Искали тут двух русскоязычных разработчиков — на iOS и на C++ под Windows. Видел десятки выполненных тестов. Разница в знании ООП между представителями двух платформ — огромная. На C++ обычно красивый расширяемый код, как само собой разумеющееся. На Objective C картина удручающая. Почти все iOS-кандидаты не знали ООП дальше своего носа NSString'ов и AppDelegate'ов.

                        Понятно, что плюсы учат по Страуструпу и «банде четырёх», а Objective C — больше по туториалам и Stack Overflow. Фастфуд-обучение не оставляет места на фундаментальные вопросы… Но такой разницы я не ожидал.

                        Поэтому я перевёл пост, в котором даны начальные сведения о шаблонах проектирования с примерами на iOS… «начальные»? Ага, значит, будет продолжение? Нет, не будет. Дальнейшие сведения вы получите из опыта, из попыток организовать процесс написания кода с помощью паттернов. Сначала не будет получаться, вероятно, фасад здания будет торчать из дымовой трубы, но потом придёт понимание, где какие приёмы реально помогают.

                        Качественная разработка ПО — творческий процесс, уникальный для каждой конкретной головы. Поэтому не существует общей инструкции: if (A and (B or C)) then use Pattern_N;
                        Как это нет инструкции? Что же делать?
                      • Сетевое кэширование в iOS. Введение

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

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

                          Итак, введение.
                          Читать дальше →
                        • Основы работы с IOKit. Тонкости программирования драйверов


                            В рамках поддержки блога разработки под Mac OS X, я представляю свою статью о низкоуровневой разработке под Mac OS X. Обычно тема разработки драйверов не столь популярна, однако и здесь Mac OS X выгодно выделяется из ряда прочих операционных систем. Да, писать драйвера для Mac O S X – просто! Проще чем когда-либо ранее!
                            Поехали
                          • ABC: Always Be Coding (не переставай программировать)



                            Как получить работу инженера?

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

                            # x = количество компаний, в которых ты проходил собеседования

                            # y = количество предложений о работе, которые ты получил

                            рейтинг = 100 * log(x) * y / x



                            Если твой рейтинг < 90, обязательно прочти это. Если > 120, возможно, тебе это не нужно, но, все равно прочти.

                            Читать дальше →
                          • Как распространять iOS приложения минуя AppStore

                            При создании мобильного приложения под iPad для одной крупной компании перед нами встал вопрос — как распространять данное приложение. Самый распространённый вариант — конечно, через AppStore.

                            Но данный вариант нам не подошел, так как приложение создавалось для работников компании, а не для общего пользования. Остался только второй вариант — Enterprise Program (подробнее о Developer Program и Enterprise Program).

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

                            Читать дальше →
                          • 19 команд ffmpeg для любых нужд

                            • Translation
                            • Tutorial
                            От переводчика:
                            Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


                            ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

                            1. Получение информации о видеофайле

                            ffmpeg -i video.avi
                            

                            2. Превратить набор картинок в видео

                            ffmpeg -f image2 -i image%d.jpg video.mpg
                            

                            Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

                            (примечание переводчика: мне больше нравится такой формат:
                            ffmpeg -r 12 -y -i "image_%010d.png" output.mpg
                            

                            здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
                            Читать дальше →