Search
Write a publication
Pull to refresh
23
0
Send message

Newsstand app. Создание iOS журнала

Reading time9 min
Views9K
Последнее время я занимался разработкой iOS версии одного бумажного журнала. Собственно, это и есть попытка раскрыть сию тему.

Начну со вступления. Что же такое Newsstand? Откуда возникла такая сущность и во что она превратилась? Размышляя, пришел к следующему: это версия журнала, обернутая в iOS программу, отличается от pdf просто невменяемым размером. Одна из причин — огромная куча картинок. Однако, эта куча и создает глянец iOS журнала. Причиной же появления идеи Newsstand, я так понимаю, была позиция Apple, относительно прав собственности на некий контент. Т.е. была задача честно (часто платно) распространять периодику, да так, чтоб ее было трудно копипастить. Эти ребята с задачей справились — полагаю нету электронного издательства с большим денежным оборотом, чем Newsstand (если так можно сказать).
Читать дальше →

Интеграция Facebook SDK (iOS) в мобильные free-to-play игры

Reading time8 min
Views8K
imageМобильный free-to-play уже практически не обходится без использования социальных сетей в играх. Социальные сети обеспечивают то, что называют виральностью (от англ. viral – вирусный, т.е. способный распространяться как вирус, от одного человека к другому), что позволяет привлекать новых игроков с минимальными затратами. В данной статье мы поделимся опытом интеграции Facebook в игры Alawar на платформе iOS.
Читать дальше →

Создание кастомного UIActivity для публикации фото и текста в социальной сети ВКонтакте

Reading time4 min
Views15K
Во время работы над очередной версией приложения возникла задача сделать публикацию фото в социальной сети ВКонтакте через стандартный контроллер UIActivityViewController.

image

Поиск в сети дал следующие результаты:
  1. Готовой реализации не обнаружено
  2. Есть официальное sdk ВКонтакте: содержит механизмы авторизации, работы с картинками, но не имеет готового класса для загрузки через UIActivityViewController
  3. Есть документация Apple для создания кастомного UIActivity

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

Многопоточная Core Data

Reading time4 min
Views26K
Как известно, Core Data является мощным Apple фреймворком для управления объектным графом. На Хабре немало статей о Core Data, тем не менее, многопоточность освещена достаточно слабо, а, как мне кажется, вопросом о том как правильно ее реализовать, задавался почти каждый.
Читать дальше →

Imagine Cup 2014: путь к победе

Reading time8 min
Views5.3K


Дорогой читатель, в этой статье мы решили рассказать тебе о нашем проекте [self tune]. За последние полтора года мы прошли большой путь от идеи до стартапа. Пусть мы окончательно еще не запустились, но у нас уже есть какой-никакой результат — победа в российском финале Imagine Cup 2014 в категории «Инновации». Путь этот был очень извилистый и проходил по очень ухабистой дороге. Надеемся, что тебе понравится наша история и ты тоже вдохновишься на свершения в сфере IT-стартапов.
Читать дальше →

Сети для самых маленьких. Часть девятая. Мультикаст

Reading time51 min
Views701K

Наш умозрительный провайдер linkmeup взрослеет и обрастает по-тихоньку всеми услугами обычных операторов связи. Теперь мы доросли до IPTV.
Отсюда вытекает необходимость настройки мультикастовой маршрутизации и в первую очередь понимание того, что вообще такое мультикаст.
Это первое отклонение от привычных нам принципов работы IP-сетей. Всё-таки парадигма многоадресной рассылки в корне отличается от тёплого лампового юникаста.
Можно даже сказать, это в некоторой степени бросает вызов гибкости вашего разума в понимании новых подходов.

В этой статье сосредоточимся на следующем:




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

Откуда «мыло» в WPF и как с ним бороться

Reading time21 min
Views83K


Это руководство для WPF-разработчиков, стремящихся добиться максимально чёткой картинки в своих приложениях. Графическая система WPF до мозга костей векторная, но конечным результатом её работы по-прежнему является растр. Если не уделить этому факту должного внимания, можно столкнуться с различными сортами «мыла» — паразитными артефактами растеризации. В такой ситуации важно не терять присутствия духа, причины их возникновения вполне рациональны, а методы борьбы достаточно просты и эффективны.
Читать дальше →

Ещё один пример теста на проникновение из собственной практики

Reading time4 min
Views49K
Доброго времени суток, уважаемые читатели. Давно я не писал примеров по пен-тесту из собственной практики, пора это исправить. Как раз имеется один заказ, после выполнения которого прошло уже достаточно времени, и клиент разрешил опубликовать информацию в сети, но, естественно, без упоминания названия предприятия, имён его сотрудников и т. д. Чтоб не отнимать много времени постараюсь изложить всё кратко, без воды.
Читать дальше →

Payler: PCI DSS аудит пройден!

Reading time3 min
Views5.8K
image

Дорогие друзья!

Продолжаем знакомить вас с новостями Payler и спешим рассказать, пожалуй, о самом важном событии для нас — прохождении аудита PCI DSS. Подготовка к этому знаменательному событию шла целых три месяца и вот, буквально на прошлой неделе, завершилась процедура двухдневного аудита от известной датской компании Fortconsult. Теперь ждём детальный отчет и сертификат, а пока хотели бы поделиться с вами полученным опытом.

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

Почему NSURLSession лучше, чем NSURLConnection

Reading time10 min
Views40K


iOS 7 официально вышла в сентябре, тогда Apple предоставила разработчикам новый способ работы с сетью — NSURLSession. Это достаточно фундаментальная вещь, потому в случае необходимости поддержки iOS 6 и ниже, распараллеливать код относительно версии системы будет крайне проблематично. Но тем не менее, время идет, и уже сейчас по разным данным от 75 до 85 процентов пользователей перешло на последнюю iOS, потому я бы советовал попробовать NSURLSession уже в следующем проекте.

По замыслу Apple, NSURLSession должна сменить NSURLConnection, и тут действительно возникает вопрос: «а зачем все это надо?» Потому сразу плюсы по сравнению с NSURLConnection:
  1. Загрузка и отправка данных в бэкграунде
  2. Возможность останавливать и продолжать загрузку
  3. Мы можем использовать блоки и делегаты одновременно, так, например, блоки используем для получения данных и обработки ошибок, а делегатный метод — для прохождения аутентификации
  4. У сессии есть специальный конфигурационный контейнер, в который можно уложить все нужные свойства для всех тасков(запросов) в сессии, а также, например, хэдеры для всех запросов в сессии
  5. Можно использовать приватное хранилище для куков, кэша и прочего
  6. Получаем более строгий и структурированный код, в отличие от набора беспорядочных NSURLConnection

Подробности и примеры

Кружок по программированию для школьников

Reading time4 min
Views64K
image

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

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

Размещение заказов у китайских поставщиков

Reading time7 min
Views118K

Основано на реальных событиях: «Mini-Desktop своими руками»


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

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

Знакомство с шейдерами на примере GPUImage

Reading time12 min
Views31K


В этой статье я собираюсь описать разработку приложения для iphone, которое будет в реальном времени обрабатывать видео с камеры устройства. Для этого мы будем использовать GPUImage фреймворк, напишем собственный шейдер на OpenGL ES и попробуем разобраться в том, что представляют из себя фильтры для обработки изображений.
Читать дальше →

Быстрая, экономная, устойчивая…

Reading time10 min
Views61K

Если вам понадобится алгоритм сортировки массива, который:
  • Работал бы гарантированно за O(N*log(N)) операций (обменов и сравнений);
  • Требовал бы O(1) дополнительной памяти;
  • Был бы устойчивым (то есть, не менял порядок элементов с одинаковыми ключами)

то вам, скорее всего, предложат ограничиться любыми двумя из этих трёх пунктов. И, в зависимости от вашего выбора, вы получите, например, либо сортировку слиянием (требует O(N) дополнительной памяти), либо пирамидальную сортировку (неустойчив), либо сортировку пузырьком (работает за O(N2)). Если вы ослабите требование на память до O(log(N)) («на рекурсию»), то для вас найдётся алгоритм со сложностью O(N*(log(N)2) — довольно малоизвестный, хотя именно его версия используется в реализации метода std::stable_sort().

На вопрос, можно ли добиться выполнения одновременно всех трёх условий, большинство скажет «вряд ли». Википедия о таких алгоритмах не знает. Среди программистов ходят слухи, что вроде бы, что-то такое существует. Некоторые говорят, что есть «устойчивая быстрая сортировка» — но у той реализации, которую я видел, сложность была всё те же O(N*(log(N)2) (по таймеру). И только в одном обсуждении на StackOverflow дали ссылку на статью B-C. Huang и M. A. Langston, Fast Stable Merging and Sorting in Constant Extra Space (1989-1992), в которой описан алгоритм со всеми тремя свойствами.

Так что же это за алгоритм?

250 строк кода, распознающих дату на русском языке

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



Пример и код в jsFiddle.
Читать дальше →

Blur в iOS7

Reading time2 min
Views31K
С седьмой версией iOS многие элементы UI стали выглядеть привлекательнее (см. Session 226, Implementing Engaging UI on iOS).

Например, теперь поп-оверы, большинство баров и алерты имеют размытый фон.



Что делать, если хочется добавить блюр в свой контрол, подскажет эта статья.
Читать дальше →

Dependency Injection в Objective-C с Магией и Кровью

Reading time5 min
Views16K

Разделения на MVC недостаточно


С каждым днем iOS приложения становятся все более громоздкими, в следствие чего одного MVC становится мало.

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

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

[[RequestManager sharedInstance] loadResourcesAtPath:@"http://example.com/resources" withDelegate:self];
// или
[[DatabaseManager sharedManager] saveResource:resource];

Этот подход используется во множестве проектов, но он имеет некоторые недостатки:

  • синглтон, который используется внутри тестируемого класса, тяжело заменить на mock-объект
  • по сути синглтон это глобальная переменная
  • с точки зрения SRP объект не должен контролировать свое Singleton'овское поведение

Первую проблему решить довольно просто — нужно использовать свойства:

@interface ViewController : UIViewController

@property (nonatomic, strong) RequestManager *requestManager;

@end

Но этот подход имеет другие минусы — теперь кто-то должен «заполнить» это свойство.
Магия Крови способствует решению этой проблемы.
О том как стать адептом

Советы начинающим iOS разработчикам

Reading time3 min
Views29K
Если не знаешь, надо не бояться, а узнавать.
Айн Рэнд “Атлант расправил плечи”



Добрый день, меня зовут Игорь Томич и я лектор курсов iOS-разработки и сооснователь онлайн курсов Master Up. Это мой первый пост в наш корпоративный блог, в котором я решил поделиться советами для начинающих iOS-разработчиков. Свое первое приложение для iOS я начал писать в начале 2009 года, а в мае 2012 году провел первый курс обучения по рарзработке под эту же платформу и к этому времени у меня скопилось достаточно “часто повторяемых ошибок” и путей их решения.
Читать дальше →

Стэнфордская нейросеть определяет тональность текста с точностью 85%, код отдадут в Open Source

Reading time2 min
Views33K
Sentiment analysis (по-русски, анализ тональности) — это область компьютерной лингвистики, которая занимается изучением эмоциональной окраски текстов, подробнее см. в статье Irokez’а. Это очень важное направление машинного обучения: анализ тональности нужен для лучшего «понимания» текстов, перевода с одного языка на другой.

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

Точность определения эмоций у лучших компьютерных программ до сегодняшнего дня составляла не более 80%. Группе учёных из Стэнфорда при участии небезызвестного Эндрю Нг удалось довести её до 85%, а при дальнейшем обучении рекурсивной нейросети точность вполне может повыситься до 95%, говорит один из авторов исследования. Заметим, что 95% — это будет абсолютно феноменальный результат, не все люди способы распознавать сарказм и определять тональность слов с такой точностью.
Читать дальше →

Оптимизация ключевых слов для приложений в App Store

Reading time3 min
Views30K
Сегодня, многие разработчики и большинство специалистов по продвижению мобильных приложений говорят об оптимизации ключевых слов для App Store. Хочу еще раз четко обозначить, что ASO в целом (длинную вводную статью про App Store Оptimization читать тут) и оптимизация ключевых слов в частности это не панацея. Но это обязательная вещь, которую вы можете освоить и выполнить самостоятельно, сэкономить кусочек маркетингового бюджета и радоваться примерно таким цифрам в статистике:



Ниже предлагаю конкретный пример в качестве инструкции:

Information

Rating
Does not participate
Registered
Activity