Search
Write a publication
Pull to refresh
26
0
Янчишин Руслан @r_ii

Разработчик

Send message

Обратная совместимость в iOS SDK

Reading time5 min
Views5.4K

Apple никогда официально не заявляла о несовместимостях между разными версиями своих OS. И всё же каждый крупный релиз они что-то меняют в ядре операционки — фиксят баги и привносят новые. И иногда именно фикс багов, с которыми все привыкли жить, добавляет новых трудностей – в iOS 3 ты не задумываясь добавлял 20 пикселей там, где iOS 4 добавляет их сама, и в итоге твоя модальная вьюшка уезжает на 20 лишних пикселей вверх.

Но это не самая страшная разновидность несовместимостей – их можно продебажить, пофиксить и выпустить новый билд. Также легко устраняется, например, ставшее уже традиционным изменение стандартного контрола для проигрывания видео – в каждой новой iOS Apple что-то добавляет, модифицирует, причём полностью забивая на старый интерфейс без всяких там deprecated за пару версий до выпиливания – так, например, в iOS 3 он был обычной вьюшкой от UIView, а в iOS 4 стал резко вью-контроллером, а старая MPMoviePlayerView исчезла.

Но это тоже подвластно дебагеру, на форумах можно за 10 секунд найти готовый гибридный код фикса такой, что код будет работать везде.

Но относительно новая iOS 5 принесла ещё больше неожиданностей. Об этом свидетельствует хотя бы тот факт, что в последних релизах популярных айфон-приложений обязательно присутствует строчка “Fixed iOS 5 issues” – средний пользователь айпада находит примерно по 10 апдейтов приложений каждый день. Ниже я расскажу о неочевидной проблеме обратной совместимости iOS 4 и iOS 5, с которой мне пришлось столкнуться на своей шкуре и сполна хлебнуть горя.
Читать дальше →

С чего начать изучение Windows Installer?

Reading time7 min
Views56K
Installer pic Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
Читать дальше →

Зачем бить, если можно засасывать!?

Reading time2 min
Views1.6K
image

Именно такая идея пришла мне в голову, гуляя с детьми в парке. Наверняка каждый видел в парке детскую игру, в которой тебе дается молоточек и надо бить по головам зайчиков или кротов, которые выходят из 6-7 дырок. Я бы, честно говоря, ее даже не заметил, что тот звук, который издает данный аппарат, заставляет невольно повернуть в его сторону. Какие-то непонятные китайские фразы и к тому же очень громкие. Как раз в этот период времени требовалась свежая идея для мобильной игры. Задача состояла в том, чтобы придумать идею игры для iPhone с минимальными трудозатратами, т.к. по плану очередная игра должна была быть опубликована в Apple AppStore в этом году.
Читать дальше →

О том, как я на Android Market пошел

Reading time6 min
Views4.5K
Здесь уже было несколько статей о первых шагах на маркете, и каждая вызывает интерес. Во всяком случае, у меня. И я подумал, что не лишним будет поделиться банальной, в общем-то, историей о еще одном случае. Я не собираюсь в этой статье пиарить свое приложение, а намерен рассказать о некоторых аспектах жизни проекта в первый месяц и способах его продвижения, доступных каждому. Ну и немного лирики, разумеется…
Читать дальше →

Мой опыт разработки/продвижения/поддержки. Perfect Ear

Reading time8 min
Views5.4K
Здравствуйте, коллеги,

наконец-то у меня дошли руки написать немного о своем опыте на примере моего главного на сегодняшний день приложения Perfect Ear (в русском маркете известного как Абсолютный Слух).

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

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

В конце приведу некоторые цифры.

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

ARM выпустила Development Studio 5 Community Edition — среду разработки для Android

Reading time1 min
Views8.7K
Вчера ARM выпустил среду разработки для Android — ARM Development Studio 5 Community Edition, учитывающую особенности микропроцессоров ARM, прелесть которой заключается в том, что эта версия стала бесплатной, в отличие от ранее представленной коммерческой версии. Конечно, выпущенная среда CE содержит ограниченный функционал коммерческой версии, однако же все основные инструменты для написания и отладки кода присутствуют в полной мере — включая стандартный SDK (Software Development kit) и набор NDK (Native development kit).

Среда разработки представляет из себя кастомизированный Eclipse, сама разработка ведется на С++.

Утвердается, что программы, написанные при помощи среды разработки ARM при аналогичных условиях работают в 4 раза быстрее, чем Java-код, запущенный в аналогичных условиях и написанный в Eclipse при помощи ADT от Google.

Доступны версии для Windows и Linux. Страница продукта находится здесь.

Первый опыт разработки для Apple iOS (IP-калькулятор)

Reading time3 min
Views5.9K


Хочу поделиться своим опытом разработки приложения для iOS (IP-калькулятор). Опыт нельзя назвать успешным, тем интереснее, и, надеюсь, полезнее будет мой пост для начинающих разработчиков.
Читать дальше →

Малоизвестные особенности Java

Reading time4 min
Views142K
Готовясь к собеседованию, я решил освежить память да и вообще поискать каверзные и малоизвестные нюансы языка Java. Выборку пяти наиболее интересных на мой взгляд моментов я вам и предлагаю.

Вот уже подоспела и вторая часть статьи.


1. Нестатические блоки инициализации.

Всем, я думаю, известно, что в Java существуют статические блоки инициализации (class initializers), код которых выполняется при первой загрузке класса.

class Foo {
	static List<Character> abc;
	static {
		abc = new LinkedList<Character>();
		for (char c = 'A'; c <= 'Z'; ++c) {
			abc.add( c );
		}
	}
}


Но существуют также и нестатические блоки инициализации (instance initializers). Они позволяют проводить инициализацию объектов вне зависимости от того, какой конструктор был вызван или, например, вести журналирование:

class Bar {
	{
		System.out.println("Bar: новый экземпляр");
	}
}


Такой метод инициализации весьма полезен для анонимных внутренних классов, которые конструкторов иметь не могут. Кроме того, вопреки ограничению синтаксиса Java, используя их, мы можем элегантно инициализировать коллекцию:

Map<String, String> map = new HashMap<String, String>() {{
	put("паук",  "арахнид");
	put("птица", "архозавр");
	put("кит",   "зверь");
}};


Очень даже мощное средство, не находите?

JFrame frame = new JFrame() {{
	add(new JPanel() {{
		add(new JLabel("Хабрахабр?") {{
			setBackground(Color.BLACK);
			setForeground(Color.WHITE);
		}});

		add(new JButton("Торт!") {{
			addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent event) {
					System.out.println("Хабрахабр - торт!");
				}
			});
		}});
	}});
}};


Остальные четыре пункта под катом.
Читать дальше →

Фоновая подгрузка списков

Reading time2 min
Views11K
При загрузке больших списков из медленного источника (например HTTP запрос) нет смысла загружать весь список сразу, особенно если пользователю потребуется лишь небольшое количество данных (результаты поиска, новостные статьи). В этом случае целесообразно реализовать постраничную подгрузку списка. В этой статье показан простой способ с использованием footer view контрола ListView. Подразумевается, что у нас уже есть список и его адаптер, который загружает элементы (пусть несколько первых, или весь) используя например ассинхронный HTTP запрос. Удобнее вынести запрос данных в отдельный класс, в котором добавить возможность подгрузки очередной страницы.

План действий


  1. Подготавливаем layout для элемента сообщения о процессе загрузки
  2. Подготавливаем контрол ListView
  3. Добавляем в адаптер списка код запуска загрузки следующей страницы
  4. Обрабатываем результат загрузки очередной страницы

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

Барьеры памяти и неблокирующая синхронизация в .NET

Reading time7 min
Views62K

Введение


В этой статье я хочу рассказать об использовании некоторых конструкций, применяющихся для осуществления неблокирующей синхронизации. Речь пойдёт о ключевом слове volatile, функциях VolatileRead, VolatileWrite и MemoryBarrier. Мы рассмотрим, какие проблемы вынуждают нас воспользоваться этими языковыми конструкциями и варианты их решения. При обсуждении барьеров памяти вкратце рассмотрим модель памяти .NET.
Читать дальше →

Продвижение приложений iPhone и Android: опыт раскрутки Filmoteka

Reading time3 min
Views13K
image

Всем привет! Пока разработчики отдыхали и готовились к новому рабочему сезону мы подготовились к запуску новой услуги – Продвижение приложений iPhone, iPad, Android через публикации новостных анонсов и обзоры на ИТ-порталах и в тематических блогах. Услуга охватывает как русскоязычные, так и англоязычные ресурсы. Желание поучаствовать в эре “золотой лихорадки” в Apple Store и Android Market не давало мне покоя уже год, но хотелось сначала попробовать раскрутить несколько мобильных приложений и предложить новую услугу уже с реальными примерами результата, чтобы не быть голословным.

Первым мобильным приложением, которое мне довелось анонсировать в Рунете, стал каталогизатор фильмов Filmoteka для iPhone и Android. Программа рассчитана только на русскоязычного пользователя и распространяется бесплатно как мобильный клиент каталогизатора фильмов для Windows – All My Movies. Приложение синхронизируется с каталогизатором на настольном компьютере, позволяя кинолюбителю иметь каталог своих фильмов всегда под рукой на домашнем компьютере и в смартфоне iPhone или Android.

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

Как ускорить эмулятор Android на 400%

Reading time5 min
Views143K
Последние несколько месяцев я работал над SDK для Android, входящим в платформу управления контентом Nuxeo. Особенно много работы было в последнее время, с приближением официального релиза SDK. Я хочу поделиться несколькими практическими советами по поводу разработки под Android, в частности тестирования и эмуляции. Уже после нескольких дней разработки я понял, что работа с эмулятором Android — не сахар, потому что он чудовищно медленный.

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

Тонкая настройка параметров Qemu не слишком помогла — скорость работы эмулятора осталась медленной, возможно именно поэтому большинство разработчиков предпочитает использовать реальные устройства, подключенные по USB.

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

Android UI Patterns: Dashboard

Reading time6 min
Views12K
imageПосле моей недавней статьи несколько человек поинтересовались в личке как сделать Dashboard. Dashboard является одним из основных UI паттернов для Android, подробней о которых Вы можете прочесть здесь. Поиск по хабру подсказал как можно реализовать QuickAction диалоги и ActionBar. В этой статье я расскажу как легко сделать свой Dashboard.
Читать дальше →

Automatic Reference Counting: часть 1

Reading time7 min
Views32K
Здравствуйте, коллеги.

Давно читаю блоги и статьи зарубежных разработчиков под iOS. И на днях попалась любопытная, довольно подробная статья об Automatic Reference Counting от разработчика по имени Mike Ash.
Статья довольно большая, потому перевод, сделанный мною, рискну разбить на несколько частей. Надеюсь, что уложусь в 2 части.
Часть первая

Исследование: 20% разработчиков игр для App Store получают 97% всех денег

Reading time7 min
Views13K


19 сентября я запустил опрос среди разработчиков игр для iOS с целью получить статистику по доходам как можно большего числа из них. Стояла задача сформировать реалистичную картину сегодняшнего состояния рынка и поделится этой информацией с сообществом. Меня к этому подвигло обилие статей, описывающих ситуацию в крайностях: “Разработчик сколотил миллионы на iOS играх!” или же “Игра заработала $0 в App Store”.

С мыслью получить объективное состояние дел, 19 сентября 2011 года я запустил семидневный опрос, в котором приняло участие 252 разработчика.
Читать дальше →

Делаем простейший сборщик ошибок для Android

Reading time3 min
Views28K
При разработке приложения неизбежно приходится сталкиваться с ошибками в коде и/или окружении. И очень печально когда подобные ошибки встречаются не на тестовом телефоне/эмуляторе а у живых пользователей. Еще печальнее если это не ваш друг бета-тестер и толком никто не может объяснить что и где свалилось.

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

Что же делать? На помощь приедет возможность языка Java обрабатывать исключения (Exceptions), в том числе и непойманные (unhandled).

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

Правильный Singleton в Java

Reading time4 min
Views437K
Уверен, каждый из читателей, знает что такое шаблон проектирования “Singleton”, но не каждый знает как его программировать эффективно и правильно. Данная статья является попыткой агрегирования существующих знаний по этому вопросу.

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

Неблокируемая очередь сообщений для двух потоков

Reading time3 min
Views4.4K
Несколько лет назад, при работе над своим небольшим игровым проектом, у меня возникла необходимость реализовать передачу сообщений от одного потока другому. В ходе поисков вариантов решения появилась идея реализовать неблокируемую очередь.

Подробности под катом.
Читать дальше →

Получаем бесплатный SSL сертификат

Reading time4 min
Views517K
Привет, хабр!

О StartSSL я узнал от небезызвестного lissyara, в связи с чем ему очень благодарен.

Для начала расскажу, что же за зверь это. Как известно, SSL сертификаты выдаются центрами сертификации, чьи корневые сертификаты хранятся в хранилище сертификатов браузера\ОС (либо другого ПО, использующего SSL). Цена на большинство сертификатов зашкаливает, и платить приходится за каждый сертификат. Но у StartSSL весьма интересный подход — сами сертификаты у них бесплатные, вы платите только за проверку вашей личности.

Так же не может не радовать наличие русскоязычной поддержки.
Читать дальше →

От Дублина до Сингапура: история разработки iPad приложения

Reading time5 min
Views4.7K
Привет хаброчеловек!

На днях я выпустил детское приложение-раскраску для iPad Colorific. Разработка затянулась на год, но теперь, когда основная работа завершена, я хочу поделиться некоторыми вынесенными из всей этой истории уроками.



«Баловаться» с Cocoa я начал примерно полгода спустя после того, как у меня появился белый iMac G5 20" в 2005 году. Тогда я потратил на него я почти всю свою месячную зарплату. После 4-х лет на Slackware и Debian Linux макось (на тот момент Tiger) была как глоток свежего воздуха. Дальше баловства дело не заходило. Написал пару утилит для себя на Cocoa, поэксперементировал с AppleScript и отложил это дело в долгий ящик.

В следующий раз я открыл XCode, когда Apple зарелизил свой SDK. Я был полон энтузиазма, ведь они пошли примерно тем путем, о котором я говорил друзьям. Мне всегда не нравилась «анархия» в J2ME разработке, и казалось, что Apple должен пойти по пути Brew от Qualcomm, только сделать это не так «топорно». Собственно всё — среда разработчика XCode, Instruments и App Store казались мне просто идеалом того, как дожен выглядеть мобильный SDK. У меня был совсем небольшой опыт на заре J2ME, и мы даже не могли мечтать о такой инфраструктуре.

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

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity