Pull to refresh
-2
0
Send message

Как работает радиоинтерфейс в GSM-сетях

Reading time21 min
Views246K


Думаю, многие когда-либо задумывались над тем, как работают сотовые сети. Ведь мы пользуемся мобильными телефонами почти каждый день. Количество абонентов увеличивается с каждым днем, так же как и площади сетевого покрытия… На смену старым стандартам приходят новые, растут и «аппетиты» пользователей мобильного интернета. Если Вас интересует, как все это работает, добро пожаловать под кат! Поскольку инфраструктура сотовых сетей довольно велика, а ее описание может занять целую книгу, в данной статье мы остановимся на Um-интерфейсе, с помощью которого наши телефоны взаимодействуют с оборудованием оператора, а также другими абонентами.

Осторожно, злая собака много картинок!
Читать дальше →
Total votes 59: ↑58 and ↓1+57
Comments29

Deep Linking для мобильных приложений

Reading time8 min
Views137K
На WWDC 2015 инженеры компании Apple заявили, что пересмотрели подход к Deep Linking, в прошлом году компания Google анонсировала App Index — как новый взгляд на глубинные ссылки, в начале 2015 года в мире мобильной разработки заговорили о контекстных Deep Links. Что это за инструмент и как с ним работать применительно к iOS — расскажу в этой статье.

Что это?


Один из способов увеличения конверсии при продвижении IT-продукта — уменьшение барьеров для достижения пользователями искомой цели. В мобильной разработке эта проблема еще актуальней. При использовании e-mail, push или sms-рассылок с информацией о промо-акциях упрощение доступа к функционалу приложения просто необходимо. В такой ситуации просто запуск приложения из внешнего источника — не решение, ведь промо-акция — это конкретное спец.предложение в конкретном разделе. Чтобы после запуска приложения пользователю не пришлось по нему бродить, искать и раздражаться, нужен дополнительный инструмент, предопределяющий навигацию. И такой инструмент есть.
Deep Linking (глубинное связывание) — технология, благодаря которой пользователь может перемещаться между приложениями в заранее определенные разделы.


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

Разработка через тестирование в iOS

Reading time11 min
Views26K

Содержание:


  • Разработка через тестирование – что это?
  • Три закона TDD
  • Примеры применения
  • Преимущества и недостатки
  • Литература и ссылки


Разработка через тестирование – что это?


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

Мартин Фаулер



Читать дальше →
Total votes 18: ↑12 and ↓6+6
Comments10

Компиляция iOS приложений для Windows Store

Reading time2 min
Views23K


В апреле этого года на конференции //Build был сделан очень интересный анонс, который показал возможность компиляции и сборки ObjectiveC кода для Windows Store. С радостью хочу сообщить что теперь эта технология и инструменты стали публичными, вы можете уже сейчас загрузить компоненты сборки ObjC/iOS приложений для Visual Studio 2015 и собрать приложение для Windows Store.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments67

Записки iOS программиста о его молотках, кувалдах и микрометрах

Reading time20 min
Views32K
В один прекрасный момент, когда на собеседованиях меня уже убеждали, что я senior iOS developer — у меня возникло ощущение, что я уперся. Пишу похожий код, решаю задачи похожими способами и ощущение, что непонятно, куда развиваться дальше. Я думаю, с этой проблемой сталкивался не один я — нехваткой новых идей, концепций, направлений. Я бы хотел рассказать вам о тех инструментах и фреймворках, которые помогли преодолеть мне это ощущение.

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


Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments13

Подробно о свойстве float

Reading time4 min
Views214K
Правильное использование CSS свойства float может стать непростой задачей даже для опытного верстальщика. В этой статье собраны варианты применения float, а также некоторые ошибки, с наглядными примерами.

Читать дальше →
Total votes 153: ↑140 and ↓13+127
Comments89

Разработка кроссплатформенного приложения с помощью Ionic Framework

Reading time12 min
Views84K
image

Всем привет! Не так давно в одном из комментариев я пообещал написать вводную статью для быстрого знакомства с возможностями Ionic Framework (далее IF). Стараюсь сдерживать свои обещания. Для начала мне хотелось бы выложить список ссылок, которыми часто пользуюсь при разработке с помощью IF:


Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments17

Создание view с анимацией изменения свойства

Reading time9 min
Views11K
Одной из типовых задач при разработке приложений под iOS является создание кастомных элементов UI, в том числе иногда может потребоваться анимировать изменения значения какого-либо из свойств. В статье рассматривается процесс создания подкласса UIView, имеющего свойства, значения которых можно изменять с анимацией. Простой пример: необходимо отрисовывать круговой прогресс с возможностью анимировать изменение цвета и значения в пределах от 0 до 1.


Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments3

Атака Telegram за 2^64 операций, и почему суперзлодею она не нужна

Reading time9 min
Views72K
Прошлой весной мы с Juliano Rizzo (@julianor) придумали криптографическую атаку на «секретный» чат MTProto из Telegram, которая может быть осуществлена приблизительно за 2^64 операций. Атака осуществляется с позиции человека посередине на серверах Telegram.

Сообщения, отправляемые пользователям вне секретного чата, сохраняются на серверах Telegram таким образом, что позволяют компании просматривать содержимое сообщений и передавать их третьим лицам. Так происходит всегда, если беседы могут перемещаться между устройствами (например между телефоном и компьютером). Эти чаты не являются приватными, то есть пользователи должны быть очень внимательны, чтобы случайно не отправить инкриминирующую информацию или картинки без включения секретного чата. Групповые чаты к тому же вообще не используют ent-to-end шифрование. Более того, когда кто-нибудь входит в такой чат, он сразу получает доступ к ранее отправленным несекретным сообщениям. Мы к этому вернемся чуть позже.
Читать дальше →
Total votes 74: ↑72 and ↓2+70
Comments86

История участия в конкурсе «Летающие роботы». Часть 1

Reading time14 min
Views19K

Предисловие


В 2013 году с целью популяризации робототехники в России и создания среды программистов и инженеров, ориентированных на данную тематику компания КРОК (г.Москва) организовала конкурс «Летающие роботы». Наша команда «iKar» (3 человека из Барнаула и 1 из Москвы) участвовала в 2013 году (конкурс «Улететь и вернуться») и 2014 году («Догнать и перегнать Крок») не победила, но добилась неплохих результатов.

1. С чего все началось или условия конкурса


Будучи по профессии программистом 1С, нередко приходится пользоваться форумом forum.mista.ru. Один из моих друзей-коллег первым заметил объявление на тему «Кому лимон» и предложил участвовать.

Условия конкурса выглядели заманчиво: необходимо было построить или купить летающего робота и научить его перемещаться/ ориентироваться в помещении-полигоне, автоматически взлетать и садиться и распознавать посадочные маркеры. Срок на всю работу 1 год, а приз — 1 миллион рублей.



Имелся опыт построения вертолетов и квадрокоптеров, как для хобби, так и для профессионального применения в аэрофотосъемке. Было много вопросов по поводу различных настроек, ПИД коэффициентов, кода и алгоритмов полетных контроллеров. Используя мотивацию конкурса, можно было глубоко во всем разобраться.

С детства была мечта заниматься робототехникой, участие в конкурсе позволило сделать первые шаги в данном направлении. Вера в собственные силы, «правое» дело и «вкусный» приз, сделали свое дело, весь семейный бюджет плюс доступные кредитные средства, были направлены на постройку «бюджетного» робота-беспилотника и поездку в Москву на конкурс.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments10

Не нужно бояться Core Data

Reading time11 min
Views34K
Давно подметил, что среди многих своих коллег по цеху присутствует некоторая подозрительность и даже в некотором роде неприязнь к Core Data, причем некоторые к фреймворку даже и не притрагивались. Чего уж там, и я в начале своего пути освоения новой платформы относился к нему предвзято, пойдя на поводу у подобных комментариев. Но не стоит поддаваться предрассудкам и мифам, не потрогав продукт самостоятельно. Тем из нас, кто пошел «против системы», но еще не постиг инструмент полностью, я и посвящаю эту статью. На основе небольшого примера, основанного на реальной задаче разработки мобильного клиента нашей социальной сети Мой Мир, я хочу рассказать о некоторых «подводных» камнях и заострить внимание начинающего разработчика на важных моментах оптимизации использования Core Data. Предполагается, что читающий уже имеет представление, для чего нужны основные элементы Core Data (NSManagedObjectContext, NSPersistentStoreCoordinator и т.д.) и хотя бы поверхностно ознакомлен с API.

Наш кейс: необходимо разработать приложение, позволяющее хранить и структурировать большой объем фотографий с различной метаинформацией о них. Для этого нам потребуется Core Data… и все.

Core Data rulezzz!
Читать дальше →
Total votes 55: ↑41 and ↓14+27
Comments27

Биндинги в Swift. Делаем первые шаги к MVVM

Reading time11 min
Views28K
Доброго времени суток. Эта статья будет полезна тем, кто устал изо дня в день бороться с изменяемостью данных в интерфейсе, тем, кто еще не знает о существовании MVVM, и тем, кто сомневается, что данный паттерн можно успешно применять на практике при разработке iOS приложений. Заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments17

Разработка Air Native Extensions (ANE) для OS X

Reading time13 min
Views6.6K
Привет всем хаброюзерам. Хотел бы поделиться опытом создания нативных расширений для OS X.

AIR — просто потрясающая в своей кроссплатформенности среда. Пока дело не доходит до использования каких-то уникальных для платформы фишек. Именно с этой проблемой я столкнулся, когда передо мной была поставлена задача превратить браузерную flash-игру в десктопную для OS X. Всё это с использованием среды AIR мной было сделано за несколько часов и я не буду описывать этот процесс, так как в гугле на эту тему полно информации. Самое интересное началось тогда, когда появилась необходимость подключить к игре различные сервисы Apple, такие как GameCenter, In-App-Purchase и т.д. И здесь я столкнулся с трудностями. Дело в том, что есть куча готовых ANE, в том числе и бесплатных. Но вся беда в том, что все эти решения работают только для iOS. Для OS X же нет ни то, что готовых библиотек, но даже информацию по созданию этих библиотек приходилось собирать по крупицам с пары-тройки интернет ресурсов многолетней давности, постоянно натыкаясь на какие-то подводные камни или даже айсберги.

Сейчас же я хочу собрать все накопленные знания и опыт в одном месте и поделиться с вами, чтобы хоть немного уменьшить ту боль, через которую вам придётся пройти, если всё таки вы тоже решитесь на создание нативных библиотек для мака. Хотя после четырёх разработанных расширений для OS X они не кажутся такими уж сложными и мудрёными.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments2

Чат вконтакта в качестве терминала

Reading time3 min
Views24K
Вдохновлённый постом «Простой диспетчер задач с веб-интерфейсом, написанный на языке GO для Unix-систем включая Android», языком Go и утилитой simple status, я решил написать в качестве забавного эксперимента чат-бота для социальной сети Vkontakte со схожим функционалом.

Почему выбор пал на чат-бота и социальную сеть? Кроме очевидного just for fun имеются и практические выкладки:
  • Не нужны дополнительные телодвижения для доступа к приложению, запущенном на компьютере с динамическим ip или находящимся за роутером.
  • Доступ к Вконтактике есть практически везде – достаточно иметь при себе телефон с доступом в интернет.
  • Вопрос о реализации аутентификации на уровне конечного приложения практически отпадает.

Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments1

Анализ алгоритмов аудиоаналитики

Reading time13 min
Views29K
Разработки Синезис не ограничиваются одной лишь видеоаналитикой. Мы занимаемся и аудиоаналитикой. Вот о ней-то мы и хотели сегодня вам рассказать. Из этой статьи вы узнаете о наиболее известных аудиоаналитических системах, а также алгоритмах и их специфике. В конце материала – традиционно – список источников и полезных ссылок, в том числе аудиобиблиотек.

Осторожно: статья может долго грузиться — много картинок.
Автор: Михаил Антоненко.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments0

Поиск работы в международном масштабе: советы практика

Reading time7 min
Views39K


Данный пост переродился из ответа на вопрос «Как искать работу за границей?», заданный на Тостере. Когда ответ, подогреваемый интересом читателей, достиг размеров полноценной публикации, я решил отредактировать формат ответа и перенести её сюда.

Дисклеймер

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

Назад в 90-е или как отправить сообщение на пейджер через Java

Reading time9 min
Views72K
Прочитав заголовок, вы, наверное, немного удивились необычности задачи, которую я перед собой поставила. Однако, как ни странно, пейджеры до сих пор иногда могут пригодиться в жизни, даже несмотря на появившееся в последние 15 лет обилие других средств коммуникации. Один из частных случаев их применения — (около)медицинское учреждение, расположенное в железо-бетонном здании, глушащем WiFi и сигнал мобильного телефона. Обслуживающий персонал, тем не менее, должен каким-то образом получать сообщения о том, куда им надо срочно переместиться в случае чего. Для решения этой проблемы руководство учреждения в нашем случае поставило себе дорогую станцию и раздало всем сотрудникам пейджерА пейджеры, которые должны были среди прочих принимать наши сигналы. Соответственно, нашей (меня и моих коллег) задачей являлась их отправка.

Уже прошли те времена, когда для отправки текста на пейджер надо было сначала пообщаться с сонной девушкой с телефонного узла. Теперь достаточно дозвониться до станции и набрать номер абонента и сообщение в тоновом режиме. Арсенал при этом сильно ограничен: можно отправлять только цифры, символы * и #, иногда буквы ABCD. Но для передачи, скажем, номера комнаты или кода ошибки должно хватить. Это довольно сильно упрощает задачу и роднит её с другими — с дозвоном в общую переговорную комнату, например.

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

image
Читать дальше →
Total votes 52: ↑50 and ↓2+48
Comments24

Apple Metal API: в чем же фишка?

Reading time5 min
Views68K
imageНа WWDC 2014 всех нас ждал сюрприз: анонс нового графического 3D API под названием Metal. Но на этот раз мы имеем дело не с новым высокоуровневым API поверх OpenGL ES (как было в случае с Scene Kit), а с новым низкоуровневым API для рендеринга и вычислений, которое может служить заменой OpenGL в играх. По словам Apple, Metal может быть до 10 раз быстрее, чем OpenGL ES (точнее говоря — может генерировать вызовы отрисовки [draw calls; передача данных на GPU] в 10 раз быстрее) и доступен только на устройствах с iOS и процессором последнего поколения A7.

Этот анонс спровоцировал новую волну обсуждения и споров насчет необходимости появления новых графических API, которые должны (или не должны — кто знает) заменить OpenGL. Предлагаемый вашему вниманию пост не намерен участвовать в этой дискуссии – его целью является разъяснение того, чем все-таки Metal отличается от OpenGL ES, чьей заменой он является. Чтобы понять, что такого особенного (или же наоборот, ничего особенного) есть в Metal API, нам придется немного заглянуть под «капот» графических API и GPU.
Читать дальше →
Total votes 40: ↑35 and ↓5+30
Comments14

Давайте изобретать велосипеды

Reading time3 min
Views20K
Мотивации пост.



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

И правда, есть же матлаб. Любой может в два движения создать и обучить стандартную сетку одним из готовых стандартных и уже оптимизированных алгоритмов, обучить какой-нибудь страшно стандартной задаче классификации и всё у него будет хорошо. Тем более это актуально, учитывая что с 70-ых годов прошлого века в деле обратного распостранения ошибки не произошло ничего принципиально нового. А новые сетки уже тоже есть в матлабе.

В этом посте я постараюсь показать, почему нужно изобретать велосипед.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments38

Information

Rating
Does not participate
Registered
Activity