Search
Write a publication
Pull to refresh
10
0
Кирилл Клебанов @Headmast

User

Send message

Бесплатный редактор шрифтов на HTML5

Reading time1 min
Views49K
Всё больше полезных программ удаётся портировать на открытые веб-технологии. До сих пор среди них не было редактора шрифтов. Теперь есть: Glyphr.



Профессиональный софт для проектирования шрифтов — это сложные и дорогие программы. В отличие от них, интерфейс Glyphr вполне доступен для каждого желающего, а само приложение совершенно бесплатно.
Читать дальше →

Результаты единого рейтинга mobile-разработчиков 2014

Reading time3 min
Views8.7K
Привет, Хабр! Сегодня мы анонсируем результаты первого единого рейтинга разработчиков мобильных приложений. Ранжирование производилось только по агентскому сегменту — компаниям, разрабатывающим приложения на заказ.

image

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

Кстати, в процессе подготовки мы обнаружили довольно любопытный факт. В отличие от игроков из других digital-сегментов (веб-студий, сеошников, агенств контекстной рекламы и пр.) — значительное количество компаний, занимающихся разработкой приложений на заказ, имеют полноценную англоязычную версию сайтов и зачастую указывают ее «по умолчанию». Таким образом, российские mobile-разработчики гораздо более ориентированы на сотрудничество с западными компаниями, чем их коллеги из других сегментов рынка.

Расскажем чуть подробнее о первой десятке компаний нашего рейтинга:
Читать дальше →

Делегаты и события в .NET

Reading time26 min
Views241K
От переводчика. Судя по своему опыту, а также по опыту знакомых коллег-программистов, могу сказать, что для начинающего разработчика среди всех базовых функций языка C# и платформы .NET делегаты и события являются одними из наиболее сложных. Возможно, это из-за того, что необходимость делегатов и событий на первый взгляд кажется неочевидной, или же из-за некоторой путаницы в терминах. Поэтому я решил перевести статью Джона Скита, рассказывающую о делегатах и событиях на самом базовом уровне, «на пальцах». Она идеальна для тех, кто знаком с C#/.NET, однако испытывает затруднение в понимании делегатов и событий.

Представленный здесь перевод является вольным. Однако если под «вольным», как правило, понимают сокращённый перевод, с упущениями, упрощениями и пересказами, то здесь всё наоборот. Данный перевод является немного расширенной, уточнённой и обновлённой версией оригинала. Я выражаю огромную благодарность Сергею Теплякову aka SergeyT, который внёс неоценимый вклад в перевод и оформление данной статьи.


Люди часто испытывают затруднения в понимании различий между событиями и делегатами. И C# ещё больше запутывает ситуацию, так как позволяет объявлять field-like события, которые автоматически преобразуются в переменную делегата с таким же самым именем. Эта статья призвана прояснить данный вопрос. Ещё одним моментом является путаница с термином «делегат», который имеет несколько значений. Иногда его используют для обозначения типа делегата (delegate type), а иногда — для обозначения экземпляра делегата (delegate instance). Чтобы избежать путаницы, я буду явно использовать эти термины — тип делегата и экземпляр делегата, а когда буду использовать слово «делегат» — значит, я говорю о них в самом широком смысле.
Читать статью

События C# по-человечески

Reading time6 min
Views500K

Невозможно, просто взять и вникнуть в этот глубокий смысл, изучая События (event) в просторах базового и, на первый взгляд, бесконечного C#.

Когда я изучал События (не в рамках .NET!), потратил много сил, чтобы, наконец-то, разобраться, как они устроены и должны конструироваться. Поэтому, я решил опубликовать свою методику понимания структуры пользовательского события, коим представляется ключевое слово event в С#.
Не буду цитировать и без того замученную MSDN, а постараюсь объяснить понятно и доступно.
Читать дальше →

Руководство по работе с Apple Push Notification Service

Reading time13 min
Views270K
Статья представляет собой вольный перевод руководства по работе с Apple Push Notification Service сайта raywenderlich.com и некоторые мои дополнения.

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

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

Вопросы на собеседование middle/senior iOS Developer

Reading time4 min
Views129K
Все мы ходили/ходим на собеседования. Каждый раз при подготовке к очередному собеседованию просматриваем основные темы, вспоминаем вопросы, которые нам задавали в предыдущие разы, или вопросы, которые сами задавали. Ниже хочу представить основные вопросы, которые часто (основано на личном опыте) можно получить на собеседовании на должность middle/senior iOS Developer. Так сказать, шпаргалка. Заодно можно проверить свой уровень знания платформы.
Список вопросов

Избавляемся от строковых констант в Objective-C

Reading time5 min
Views14K
Магические константы в коде — зло. Строковые константы в коде — еще большее зло.
И вроде бы от них никуда не денешься, они повсюду:

1) При загрузке объектов из xib-ов:
MyView* view = [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] lastObject];

MyViewController* controller = [MyViewController initWithNibName:@"MyViewController" bundle:nil];

2) При работе с CoreData:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"MyCoreDataClass" inManagedObjectContext:moc]];
[request setSortDescriptors:@[ [[NSSortDescriptor alloc] initWithKey:@"someProperty" ascending:NO] ]];

3) Если вы используете KVO, то строки появляются и тут:
[self addObserver:someObservedObject 
       forKeyPath:@"someProperty"
          options:(NSKeyValueObservingOptionNew |  NSKeyValueObservingOptionOld) 
          context:nil];

4) Ну и KVC:
NSInteger maxValue = [[arrayOfMyClassObjects valueForKeyPath:@"@max.someProperty"] intValue];

5) Но даже если CoreData вы предпочитаете работу с SQLite напраямую, xib-ами вы брезгуете, то вот такой код вам должен быть знаком:
[self.tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];

6) Ну и когда Apple представила миру Storyboard — это было замечательно, если-бы не одно но:
[self performSegueWithIdentifier:@"MySegue" sender:nil]

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender {
   if ( [segue.identifier isEqual:@"MySegue"] );
}

Вы видите проблему? Она состоит в том, что компилятор никак не проверяет содержимое строк, поскольку не знает (да и не может в принципе знать), что в них содержится. И если вы опечатаетесь или измените значение соответствующих полей в xcdatamodel / xib / storyboard / переименуете property, то ошибка вылезет не на стадии компиляции, а в рантайме, и отловить и исправить ее будет дольше и дороже.
Так что-же можно сделать?
Читать дальше →

Как команда технарей свою студию создавала. Опыт первых месяцев. Достижения, фейлы, умозаключения…

Reading time9 min
Views138K

Уверен, многих технарей посещала идея создания своего бизнеса. Вот и у нас в определенный момент все звёзды сложились так, что казалось — это беспроигрышный вариант: сильная техническая команда, откуда ни возьмись появились менеджеры, готовые продавать наши услуги, есть даже пара проектов на старт. Грех не попробовать. И мы рискнули. Фактически всё надо ставить с нуля.
Читать дальше →

Мобильные приложения будущего

Reading time5 min
Views31K

Дисклеймер


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

Смена парадигмы использования мобильных приложений


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

В будущем приложения выйдут далеко за пределы существующих мобильных устройств, а понимание мобильных устройств значительно расширится. Мобилизация ожидает не только телевизоры, игровые консоли, умные часы и Google Glass, большинство отраслей промышленности и непроизводственной сферы будут использовать приложения вместо десктопного программного обеспечения. «Мобильным» станет мир вокруг нас.
Читать дальше →

Жизнь как 8-битная игра: Руководство

Reading time5 min
Views263K
Press Start
Жизнь — игра, в которую играют буквально все. Эта статья — ваше руководство.

Основы

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

Об утечках памяти в iOS и методах борьбы с ними

Reading time3 min
Views7.1K
Среди проектов, над которыми мы работаем, пожалуй, нет ни одного, в котором было бы всё в порядке с памятью. Этот пост я посвящу рассказу о том, как бороться с данным видом проблем.

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

Для начала давайте определимся, что такое утечки. Утечки — выделенные, но не освобождённые области памяти, на которые нет указателя. Всё это выглядит достаточно несерьёзно, у iPhone куча оперативной памяти, а обычное приложение занимает в лучшем случае 2 Мб. На деле всё не так радужно: приложение может использовать до 3мб, а дальше начинают возникать memory warning, соответственно, ОС пытается освободить те области, которые считает «ненужными». Попросту говоря, удаляет невидимые в данный момент элементы интерфейса, а это не только некрасиво, но и может привести к падению приложения. «Зомби» — уже освобождённые (убитые) области памяти, к которым пытается обратиться программа, что также приводит к падению приложения.
Читать дальше →

Как пользоваться утилитой Instruments в Xcode

Reading time16 min
Views64K

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

Помимо улучшения вашего приложения путем добавления в него всяких «завитушек», есть одна вещь, которую все хорошие разработчики должны сделать со своим кодом – обработать его утилитой Instruments!

Это руководство покажет вам, как использовать наиболее важные особенности утилиты под названием Instruments, которая поставляется вместе с Xcode. Она позволит вам проверить свой программный код на наличие проблем с производительностью, утечкой памяти и других проблем.
Читать дальше →

9 главных тенденций рынка мобильных приложений в 2013 году

Reading time2 min
Views21K


Известный сервис аналитики App Annie выпустил традиционный отчет о рынке мобильных приложений в 2013 году.
Ушедший год стал большой вехой для всей индустрии мобильных приложений, готовя почву для новых интересных возможностей в 2014 году.

Хочу привести основные тезисы доклада, которые, надеюсь, помогут вам принимать правильные решения в новом году:
Тренды в картинках

Полезные факты о языке программирования Objective-C

Reading time3 min
Views23K
Я уже 2 года занимаюсь разработкой приложений под iOS и в этой статье мне захотелось представить те факты, которые показались мне интересными и полезными. Буду рад, если вы так же поделитесь своими знаниями в комментариях. В следующей статье хотелось бы собрать подобные факты о Foundation Kit.

.m


Расширение .m (message) ввели для того чтобы выделить ключевую особенность Objective-С. По сути, мы не вызываем методы у класса, мы отправляем сообщение объекту, после чего происходит диспетчеризация в ходе которой диспетчер методов Objective-C ищет нужный класс и вызывает у него необходимый метод.

NS


Префикс NS обозначает Next Step. Он возник еще в те времена, когда не было Cocoa, а фрейворк назывался NextSTEP и был продуктом NeXT Software. Apple купила эту компанию в 1996 году и чтобы не нарушать обратную совместимость кода продолжила использовать этот префикс.

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

Не дразните программиста

Reading time4 min
Views168K
Подходит к концу очередная рабочая неделя. Не знаю, как у вас, а у меня эта неделя, что называется, — не задалась. Потрачена куча энергии и нервных клеток, и никакого движения вперед. Переносить стрессовое состояние на выходные мне очень не хочется, поэтому я решил взять короткую паузу и немного развеяться.

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

Разработка одной игры — новый заход, Ч2

Reading time14 min
Views10K
Skippy's photoВот и пришло время продолжить рассказ об увлекательном хобби — геймдеве — разработке казуальных игр.
Ранее в статье я рассказал о первой своей игре под Андроид, которая подтолкнула меня пересмотреть подход в этапах создания и продвижения мобильного приложения. Сегодня я хочу поделится тем, к чему же я все-таки пришел после своего первого опыта и рассказать о создании новой, кросспалтформенной игры под Android и iOs, так же по дороге была сделана html5 и Tizen версия, но обо всем по порядку…
Читать дальше →

О чем НЕ говорят разработчики или 7 любимых выражений программистов

Reading time5 min
Views90K
Друзья! Мы все очень любим (или не любим) поговорить о шаблонах проектирования. Лично я их сильно недолюбливаю, т.к. большинство из них достаточно очевидны для более или менее опытного разработчика, а шаблонность мышления еще никому в жизни не помогала.

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

В повседневной жизни я стараюсь не употреблять слово «программист». Оно для меня несет негативный оттенок и сразу вспоминаются 90-е, когда кого только программистами не называли. Они и картриджи у принтеров меняли и бабушкам-бухгалтерам помогали их первый комп осваивать. Помните это нетленное «Ты же программист!»? В общем дискредитировало себя это слово.

Я как-то привык своих людей называть разработчиками (developers) и для меня программист — это эдакий антипод разработчика. Ну и с годами опыта я познал большое количество антипаттернов для хорошего разработчика, пользоваться которыми он должен как можно реже. Чем реже я их слышу, тем я счастливее. Итак, приступаем.

001. А у меня на компе работает


Эта фраза знакома всем, кто хотя бы несколько месяцев работает в индустрии и просто должна быть исключена из лексикона любого разработчика. Чувак, если ты отправляешь на тестирование код, который не работает у тебя на компе, то тебе не место в профессии! По определению у тебя на компе код всегда работает. Разве может быть иначе? А не работает он у тестировщика, клиента, да кого угодно, потому, что ты не учел какие-то нюансы, различия в окружении, данных, погоде на Марсе и твоя задача выяснить, что именно и исправить, а не пытаться сразу откосить и доказать свою невиновность. Нет ничего страшного в том, что ты чего-то не учел. В моей практике бывали случаи учесть которые мог бы только… Да никто не мог бы!

Больше паттернов!

Добавление Admob в Unity3d и вывод поступивших денег с PayPal на банковский счет в России

Reading time2 min
Views25K
Все уже знают что 17 сентября 2013 года при помощи PayPal можно выводить поступившие на него деньги, на счета в отечественных банках. Но по этому вопросу возникает много споров. На практике оказалось всё очень просто.
Мы рассмотрим вариант как выводить деньги в России для частного (физического) лица.

Для начала Вам нужно указать счет в Российсом банке и указать кто его владелец — Частное или Юридическое лицо.
Читать дальше →

Как я хотел убежать от Admob. История про рекламные сети

Reading time7 min
Views55K


Спойлер
От судьбы не убежишь


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

Не AdMob-ом единым. Обзор интересных рекламных сетей и не только

Reading time9 min
Views68K
При разработке игр или приложений у каждого девелопера возникают вопросы о монетизации. Естественно сразу же приходит на ум AdMob, хотя таких систем намного больше, и возможно, в некоторых случаях имеет смысл даже отказаться от него. Ведь баннерная реклама обычно достаточно навязчива и “бьет наугад”, куда интересней более персонализированная реклама, в таком случае и рекламодатель, паблишер и самое главное конечный пользователь останутся в выигрыше.
Мы составили список необычных рекламных систем, которые могут помочь разработчикам в монетизации их приложений. А также краткий обзор услуг и цен для рекламодателей.

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

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity