Заметки на полях с сайта TouchDev.ru http://touchdev.ru/shorts TouchDev.ru — лучшая информация по разработке программ для iPhone, iPod Touch, Mac OS X Проблемы с архивами в Lion http://touchdev.ru/shorts/3258 <p class="hyphenate">Проблемы с&nbsp;тем, что&nbsp;не&nbsp;появляются архивы в&nbsp;Lion в&nbsp;Xcode 4.1? У&nbsp;меня тоже были. Сегодня случайно наткнулся на&nbsp;решение. </p> <ul><li class="hyphenate">Идем в&nbsp;настройки билда<span class="sbrace"> </span><span class="hbrace">(</span>тыкаем в&nbsp;проект, там&nbsp;нужную закладку).</li><li class="hyphenate">Включаем все&nbsp;параметры<span class="sbrace"> </span><span class="hbrace">(</span>All, не&nbsp;Basic).</li><li class="hyphenate">Ищем параметр <span class="monospacedText donthyphenate">Skip Install</span>.</li><li class="hyphenate">Меняем его&nbsp;на&nbsp;<span class="monospacedText donthyphenate">NO</span>.</li></ul> <p class="hyphenate">После этого у&nbsp;меня билд появился в&nbsp;инспекторе<span class="sbrace"> </span><span class="hbrace">(</span>ну, когда я&nbsp;его&nbsp;собрал еще&nbsp;раз). В&nbsp;последнем пункте рекомендуют <span class="monospacedText donthyphenate">YES</span>, но&nbsp;у&nbsp;меня, почему-то сработало <span class="monospacedText donthyphenate">NO</span>. </p> Mon, 28 Mar 2011 20:39:50 GMT Показать маршрут куда-нибудь http://touchdev.ru/shorts/3161 <p class="hyphenate">Считал, что&nbsp;маршруты, в&nbsp;отличие от&nbsp;точек, MapKit показывать не&nbsp;умеет<span class="sbrace"> </span><span class="hbrace">(</span>не&nbsp;смотря на&nbsp;то,&nbsp;что&nbsp;это&nbsp;умеют Google Maps). Сегодня выяснил, что&nbsp;это&nbsp;не&nbsp;так. Точнее не&nbsp;совсем так. Маршрутов как&nbsp;не&nbsp;было, так&nbsp;и&nbsp;нет. Но&nbsp;если попросить открыть URL&nbsp;следующего вида:</p> <pre class="brush: obj-c;"> [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?saddr=Current Location&amp;daddr=123 Main St,Ottawa,ON"]]; </pre> <p class="hyphenate">То&nbsp;откроется не&nbsp;Safari, как&nbsp;можно предположить, а&nbsp;приложение Maps, которое попробует построить маршрут. Естественно, возникают проблемы с&nbsp;прокладкой маршрута в&nbsp;России, но&nbsp;это&nbsp;уже&nbsp;другой вопрос.</p> Fri, 18 Feb 2011 08:04:30 GMT Статьи по разработке на Java http://touchdev.ru/shorts/2380 <p class="hyphenate">В&nbsp;свете выхода <a href="http://www.computerra.ru/interactive/571458/">моего интервью</a> про&nbsp;Windows Phone 7&nbsp;в&nbsp;Компьютерре, нужно бы&nbsp;собрать статьи про&nbsp;разработку тут. Платформа хорошая, почему нет? :)</p> <p class="hyphenate">Итак. Дальше&nbsp;— серия статей, посвященная Java для&nbsp;серверов. На&nbsp;Mac&nbsp;OS&nbsp;X&nbsp;все&nbsp;это&nbsp;тоже есть и&nbsp;работает. Читайте, если интересно. Статьи были опубликованы в&nbsp;великолепном журнале LinuxFormat, за&nbsp;2007 год.</p> <table cellspacing="0" cellpadding="0" border="0" class="wikiTable"><td class="wikiTableCell"><a href="/2381.upload" class="resourceLink">j2ee_1.pdf</a></td><td class="wikiTableCell">«Адресная книга»<span class="sbrace"> </span><span class="hbrace">(</span>сервлеты)</td><td class="wikiTableCell">февраль 2007</td></tr><td class="wikiTableCell"><a href="/2382.upload" class="resourceLink">j2ee_2.pdf</a></td><td class="wikiTableCell">«Телефонная книга»<span class="sbrace"> </span><span class="hbrace">(</span>JSP)</td><td class="wikiTableCell">март 2007</td></tr><td class="wikiTableCell"><a href="/2383.upload" class="resourceLink">j2ee_5.pdf</a></td><td class="wikiTableCell">Все на&nbsp;базу!»<span class="sbrace"> </span><span class="hbrace">(</span>JDBC)</td><td class="wikiTableCell">июнь 2007</td></tr><td class="wikiTableCell"><a href="/2384.upload" class="resourceLink">j2ee_8.pdf</a></td><td class="wikiTableCell">«А я<span class="sbrace">&nbsp;</span><span class="hbrace">(</span>кс)?»</td><td class="wikiTableCell">август 2007</td></tr><td class="wikiTableCell"><a href="/2388.upload" class="resourceLink">j2ee_9.pdf</a></td><td class="wikiTableCell">«Перекличка серверов»</td><td class="wikiTableCell">сентябрь 2007</td></tr><td class="wikiTableCell"><a href="/2385.upload" class="resourceLink">j2ee_10.pdf</a></td><td class="wikiTableCell">«Почтовый сервис»</td><td class="wikiTableCell">октябрь 2007</td></tr><td class="wikiTableCell"><a href="/2386.upload" class="resourceLink">j2ee_11.pdf</a></td><td class="wikiTableCell">«Struts, великий и&nbsp;ужасный»</td><td class="wikiTableCell">ноябрь 2007</td></tr><td class="wikiTableCell"><a href="/2387.upload" class="resourceLink">j2ee_12.pdf</a></td><td class="wikiTableCell">«Экстракт кофе»<span class="sbrace"> </span><span class="hbrace">(</span>EJB 3)</td><td class="wikiTableCell">декабрь 2007</td></tr></table> Tue, 30 Nov 2010 21:00:00 GMT Как настроить поиск любимого гаджета или «найди меня» http://touchdev.ru/shorts/2516 <p class="hyphenate">Как&nbsp;многие из&nbsp;вас&nbsp;знают, с&nbsp;появлением новой прошивки у&nbsp;владельцев свежих аппаратов появилась возможность использовать сервис поиска устройства, отправки на&nbsp;него сообщений и&nbsp;удаления контента. В&nbsp;этой коротенькой заметке я&nbsp;расскажу как&nbsp;это&nbsp;все&nbsp;настроить. Итак, нам&nbsp;надо активировать на&nbsp;устройстве учетную запись Mobile Me.&nbsp;Для&nbsp;этого мы&nbsp;идем в&nbsp;настройки учетных записей.</p> <div class="imageDivCenter"><img src="/2522.upload" class="imagePreview" width="440" height="334"/><div class="imageTitle">Картинка для&nbsp;тех&nbsp;кто&nbsp;забыл где&nbsp;это</div></div> <p class="hyphenate">Выбираем аккаунт Mobile Me,&nbsp;вводим данные своей учетной записи<span class="sbrace"> </span><span class="hbrace">(</span>с&nbsp;помощью которой Вы&nbsp;покупаете приложение, зарегистрированы в&nbsp;Game Center), соглашаемся с&nbsp;лицензионным соглашением. После чего, появляется собственно возможность включить функцию «Найти iPhone».</p> <div class="imageDivCenter"><a target="_blank" href="/2523.upload"><img src="/2523.thumbnail" class="imagePreview" width="200" height="101"/><div class="imageTitle">Включение сервиса</div></a></div> <p class="hyphenate">Теперь достаточно зайти на&nbsp;me.com с&nbsp;компьютера, с&nbsp;помощью все&nbsp;той&nbsp;же&nbsp;учетной записи, чтобы увидеть примерное местоположение устройства, отправить на&nbsp;него сообщение, заблокировать или&nbsp;стереть все&nbsp;данные.</p> <p class="hyphenate">При&nbsp;отправке сообщения на&nbsp;телефон, mobile me&nbsp;отправляет информацию на&nbsp;почту<span class="sbrace"> </span><span class="hbrace">(</span>к&nbsp;которой относится ваш&nbsp;Apple Id), что&nbsp;сообщение доставлено.</p> <div class="imageDivCenter"><a target="_blank" href="/2524.upload"><img src="/2524.thumbnail" class="imagePreview" width="200" height="146"/><div class="imageTitle">Экран Mobile Me,&nbsp;сообщение на&nbsp;телефоне и&nbsp;сообщение в&nbsp;почте</div></a></div> Mon, 22 Nov 2010 21:00:00 GMT Как сделать красивую кнопку "Отмена" http://touchdev.ru/shorts/2498 <p class="hyphenate">Только что&nbsp;попалась задачка, которая не&nbsp;решалась обычными методами, даже достаточно извращенными. Есть <span class="monospacedText donthyphenate">UISearchBar</span>, там&nbsp;есть спец-поле для&nbsp;показа/скрывания кнопки<span class="slaquo"> </span><span class="hlaquo">«</span>Отмена», есть даже спец-метод, который это&nbsp;делает с&nbsp;анимацией.<span class="slaquo"> </span><span class="hlaquo">«</span>То, что&nbsp;нужно»&nbsp;— воскликнул я,&nbsp;и&nbsp;послал правильное сообщение…</p> <p class="hyphenate">Хорошо, сказала система, но&nbsp;мы&nbsp;кнопку тебе задизейблим, если курсор не&nbsp;в&nbsp;поле ввода.<span class="slaquo"> </span><span class="hlaquo">«</span>А?» —&nbsp;спросил я.&nbsp;Как&nbsp;так? Надо ее енейблить взад!</p> <p class="hyphenate">Гугление номер раз&nbsp;привело к&nbsp;подсказке. <span class="monospacedText donthyphenate">UISearchBar</span> не&nbsp;работает по-человечески без&nbsp;<span class="monospacedText donthyphenate">UISearchDisplayController</span>. Ок,&nbsp;контроллер уже&nbsp;есть, перекорячиваем его&nbsp;быстренько в&nbsp;нужный. Сделали. Ура, оно&nbsp;работает! Но&nbsp;теперь некрасиво. Почему?</p> <p class="hyphenate">Дело в&nbsp;том, что&nbsp;в&nbsp;программе у&nbsp;меня красивый серый навигейшн-бар. А&nbsp;если я&nbsp;меняю <span class="monospacedText donthyphenate">tintColor</span> для&nbsp;бара поиска, то&nbsp;и&nbsp;кнопка тоже его&nbsp;меняет и&nbsp;получается белый текст на&nbsp;сером фоне, что&nbsp;и&nbsp;не&nbsp;смотрится, и&nbsp;вообще бе.</p> <p class="hyphenate">Пошел я&nbsp;гуглить номер два. Долго гуглил, непросто это&nbsp;оказалось. Но&nbsp;вдруг случилось чудо! Я&nbsp;набрел на&nbsp;страничку <a href="http://claaslange.de/2010/schnipsel/create-a-good-looking-gray-uisearchbar/">Create a&nbsp;good looking gray UISearchBar</a> разработчика с&nbsp;непроизносимым и&nbsp;неискабельным на&nbsp;сайте названием. Где&nbsp;он&nbsp;пишет, что&nbsp;для&nbsp;того, чтобы сделать серый бар&nbsp;с&nbsp;красивой темной кнопкой, нужно<span class="sbrace"> </span><span class="hbrace">(</span>следите за&nbsp;руками):</p> <ul><li class="hyphenate">Сделать поисковому бару стиль Default и </li><li class="hyphenate">прописать tintColor с&nbsp;прозрачностью 0<span class="sbrace">&nbsp;</span><span class="hbrace">(</span>!).</li></ul> <p class="hyphenate">Я&nbsp;сделал это&nbsp;в&nbsp;Interface Builder'е, уверен, что&nbsp;можно и&nbsp;руками. Чудеса! Но&nbsp;это&nbsp;работает! Спасибо непонятному товарищу и&nbsp;гуглу, как&nbsp;водится.</p> Mon, 15 Nov 2010 21:12:59 GMT Для скриншотов без теней http://touchdev.ru/shorts/2409 <p class="hyphenate">Простая и&nbsp;полезная команда. </p> <pre class="brush: plain;">defaults write com.apple.screencapture disable-shadow -bool true &amp;&amp; killall SystemUIServer</pre> Tue, 26 Oct 2010 13:00:49 GMT Коммуникации и презентации http://touchdev.ru/shorts/2157 <p class="hyphenate">Знаете, чем&nbsp;обычный разработчик<span class="slaquo"> </span><span class="hlaquo">«</span>оттуда», в&nbsp;смысле, из-за рубежа отличается от<span class="slaquo"> </span><span class="hlaquo">«</span>нашего»? Коммуникабельностью и&nbsp;аккуратностью. Культурой общения. Такое впечатление могло у&nbsp;меня сложиться потому что&nbsp;я&nbsp;читаю тамошних лучших, а&nbsp;местных&nbsp;— разных, но,&nbsp;посмотрев на&nbsp;объемы хорошего в&nbsp;англоязычном и&nbsp;русском сегментах интернета, трудно не&nbsp;прийти к&nbsp;этому выводу. Почему так&nbsp;сложилось?</p> <p class="hyphenate">Во-первых, история. Русскоязычный интернет&nbsp;— это&nbsp;двухтысячные. Это&nbsp;сразу сравнительно быстрые модемы, богатый инструментарий<span class="sbrace"> </span><span class="hbrace">(</span>HTML, IE&nbsp;Marquee…), сложная ситуация с&nbsp;культурой общения в&nbsp;стране. В&nbsp;Америке интернет появился сильно раньше, во&nbsp;время отсутствия графики. Текст и&nbsp;только текст. У&nbsp;нас&nbsp;было ФИДО, у&nbsp;них, кроме этого&nbsp;— новости Usenet и&nbsp;gopher. Мы&nbsp;пользовались HTML, а&nbsp;они&nbsp;его&nbsp;создавали. В&nbsp;результате они&nbsp;научились работать с&nbsp;текстом, а&nbsp;мы&nbsp;—&nbsp;спамить.</p> <p class="hyphenate">Во-вторых, мышление. Возвращаясь к&nbsp;разработчикам, наши ориентированы внутренний процесс. Чтобы алгоритм был&nbsp;хороший, чтобы написать круче, чем&nbsp;Васька-сосед. Этому учат у&nbsp;нас&nbsp;в&nbsp;школе и&nbsp;институте. На&nbsp;уроках и&nbsp;лекциях, и&nbsp;когда эти&nbsp;умения удается применить&nbsp;— получается хорошо. Но&nbsp;в&nbsp;новомодных<span class="sbrace"> </span><span class="hbrace">(</span>как тогда, так&nbsp;и,&nbsp;отчасти, сейчас) условиях рынка нужно не&nbsp;только хорошо написать, но&nbsp;и&nbsp;оформить правильно. Рассказать о&nbsp;себе. Проще говоря, продать.</p> <p class="hyphenate">В&nbsp;результате разработчики в&nbsp;массе своей не&nbsp;умеют говорить. Не&nbsp;умеют писать на&nbsp;человеческом языке, часто при&nbsp;этом виртуозно владея языком программирования. Не&nbsp;умеют создавать грамотные презентации, причем не&nbsp;только не&nbsp;умеют, но&nbsp;и&nbsp;не&nbsp;понимают, зачем это&nbsp;нужно.</p> <p class="hyphenate">Про&nbsp;презентации вообще хочется сказать отдельно. Во&nbsp;всем мире PowerPoint используется черти-как. Это&nbsp;общеизвестно. Но&nbsp;у&nbsp;нас&nbsp;примеров хороших презентаций просто не&nbsp;найти. Не,&nbsp;вру. Хороших парочка есть у&nbsp;меня, например, <a href="http://touchdev.ru/news/119">наша с&nbsp;Мишкой про&nbsp;интерфейсы для&nbsp;iPhone</a>. Но&nbsp;и&nbsp;она&nbsp;не&nbsp;дотягивает до&nbsp;«отличная презентация, на&nbsp;которой можно учиться». А&nbsp;когда учиться не&nbsp;на&nbsp;чем, увы, и&nbsp;не&nbsp;учатся. До&nbsp;кучи, и&nbsp;там, где&nbsp;бы&nbsp;научить рассказывать<span class="sbrace"> </span><span class="hbrace">(</span>защиты выпускных квалификационных, дипломных работ)&nbsp;— никого сам&nbsp;рассказ не&nbsp;волнует совершенно. Волнует, выполнены ли&nbsp;формальные признаки? Денег сколько уплачено? Ну,&nbsp;и&nbsp;смешная игра в<span class="slaquo"> </span><span class="hlaquo">«</span>а&nbsp;я&nbsp;скопировал и&nbsp;меня не&nbsp;поймали» процветает вовсю.</p> <p class="hyphenate">Плохо это. Я&nbsp;со&nbsp;временем возьмусь за&nbsp;просвещение в&nbsp;этих вопросах, пока хотя бы&nbsp;в&nbsp;компании, где&nbsp;я&nbsp;работаю, с&nbsp;этим разобраться. Но,&nbsp;может быть, мне&nbsp;кто-нибудь поможет? Я&nbsp;знаю, грамотные люди есть. Давайте объединимся что-ли.</p> Sat, 11 Sep 2010 22:16:41 GMT Миниобзор прошивки 4.2 для iPad http://touchdev.ru/shorts/2132 <p class="hyphenate">Итак, на&nbsp;мероприятии 1&nbsp;сентября, анонсировали прошивку 4.2&nbsp;для&nbsp;iPad. На&nbsp;данный момент обещано следующее:<br/></p><div class="imageDivCenter"><img src="/2133.upload" class="imagePreview" width="625" height="436"/></div> <ul><li class="hyphenate"><i>многозадачность</i>, уже&nbsp;знакомая пользователям iPhone 3GS&nbsp;и&nbsp;4;</li><li class="hyphenate"><i>папки</i>, тоже знакомые всем, поставившим 4&nbsp;прошивку, даже на&nbsp;iPhone 3G;</li><li class="hyphenate"><i>печать</i>. Возможность легко печатать документы и&nbsp;картинки и&nbsp;документы по&nbsp;сети;</li><li class="hyphenate"><i>AirPlay</i>. Использование нового TV&nbsp;или&nbsp;специальных колонок и&nbsp;наушников для&nbsp;прослушивания музыки/просмотра видео с&nbsp;iPad. Те,&nbsp;кто&nbsp;смотрели трансляцию&nbsp;— видели как&nbsp;это&nbsp;бывает;</li><li class="hyphenate"><i>Гейм-центр</i>. Система достижений, призов, мультиплеера и&nbsp;прочего игрового взаимодействия и<span class="slaquo"> </span><span class="hlaquo">«</span>меряния» между игроками, которая, скорее всего, как&nbsp;минимум, сильно потеснит остальные игровые системы для&nbsp;iOS&nbsp;устройств;</li><li class="hyphenate"><i>Улучшенная почтовая система</i>. Общий Inbox, цепочки сообщений, загрузка прикрепленных файлов, вобщем большинство читателей уже&nbsp;знают, что&nbsp;имеется в&nbsp;виду;</li><li class="hyphenate">Поиск в&nbsp;Safari;</li><li class="hyphenate"><i>Дополнительная поддержка для&nbsp;enterprise</i><span class="sbrace"> </span><span class="hbrace">(</span>больших корпораций), часть из&nbsp;которых описана в&nbsp;<a href="http://touchdev.ru/documents/1790">статье на&nbsp;нашем сайте</a>;</li><li class="hyphenate"><i>Дополнительные устройства</i>. Поддержка устройств для&nbsp;людей с&nbsp;ограниченными возможностями, в&nbsp;частности дисплеев с&nbsp;алфавитом Брайля;</li><li class="hyphenate"><i>Языковые дополнения</i>. Арабский, греческий и&nbsp;другие нужные вам&nbsp;языки и&nbsp;клавиатуры.</li></ul> <p class="hyphenate">Резюмируя, можно сказать, что&nbsp;в&nbsp;ноябре iPad догонит iPhone по&nbsp;количеству полезных нововведений, а&nbsp;мы&nbsp;надеемся еще&nbsp;раньше увидеть все&nbsp;это&nbsp;в&nbsp;разделе сайта Apple для&nbsp;разработчиков.</p> Fri, 03 Sep 2010 21:06:40 GMT Купить iPhone 4 в Америке http://touchdev.ru/shorts/1840 <p class="hyphenate">Когда iPhone 4&nbsp;только появился в&nbsp;продаже, мне&nbsp;очень захотелось его&nbsp;купить&nbsp;— да,&nbsp;да,&nbsp;прямо сейчас, он&nbsp;же&nbsp;такой клевый! Казалось бы,&nbsp;находясь в&nbsp;Америке купить новинку проще простого&nbsp;— идешь в&nbsp;магазин, проводишь кредиткой и&nbsp;вуаля! Одна проблема&nbsp;— AT&amp;T. Проще всего купить iPhone за&nbsp;$200 долларов с&nbsp;двухлетним контрактом. Но&nbsp;у&nbsp;меня уже&nbsp;есть симка AT&amp;T, за&nbsp;которую платит мой&nbsp;работодатель. И&nbsp;вторая, за&nbsp;которую мне&nbsp;придется платить из&nbsp;своего кармана около $100&nbsp;в&nbsp;месяц, мне&nbsp;не&nbsp;нужна.</p> <p class="hyphenate">Нет&nbsp;проблем, специально для&nbsp;таких как&nbsp;я&nbsp;есть возможность купить<span class="slaquo"> </span><span class="hlaquo">«</span>iPhone 4&nbsp;No&nbsp;Contract». Однако, и&nbsp;для&nbsp;нее&nbsp;нужно иметь договор с&nbsp;AT&amp;T, зарегистрированный на&nbsp;<b>мое</b> имя. Моя&nbsp;же&nbsp;симка, повторюсь, формально принадлежит не&nbsp;мне. Кстати, сейчас эту&nbsp;опцию убрали&nbsp;— думаю, не&nbsp;в&nbsp;последнюю очередь потому, что&nbsp;для&nbsp;большинства людей слова<span class="slaquo"> </span><span class="hlaquo">«</span>No&nbsp;Contract» обозначают именно отсутствие контракта, а&nbsp;не&nbsp;его&nbsp;обязательное наличие.</p> <p class="hyphenate">И&nbsp;вот, я&nbsp;прихожу в&nbsp;салон AT&amp;T и&nbsp;задаю им&nbsp;ключевой вопрос: так&nbsp;как&nbsp;же&nbsp;мне&nbsp;купить себе айфон? Заключите контракт, отвечают мне. Ну&nbsp;ладно, думаю я,&nbsp;можно же&nbsp;всех обмануть&nbsp;— заключить контракт, получить айфон за&nbsp;$200, потом разорвать контракт. Начинаю узнавать: сначала надо заплатить столько-то за&nbsp;активацию, потом 200&nbsp;баксов за&nbsp;айфон, потом минимум 70&nbsp;за&nbsp;первый месяц, если не&nbsp;повезет, то&nbsp;и&nbsp;за&nbsp;второй, поскольку если разорвать контракт раньше, чем&nbsp;через 30&nbsp;дней, то&nbsp;устройство нужно вернуть. Потом 310&nbsp;долларов за&nbsp;досрочное расторжение контракта. По&nbsp;ходу дела, возьмут еще&nbsp;долларов 500&nbsp;залога, его&nbsp;вернут, но&nbsp;тем&nbsp;не&nbsp;менее. Итого: надо заплатить минимум $700&nbsp;и&nbsp;огрести кучу потенциальных проблем.</p> <p class="hyphenate">В&nbsp;конце концов я&nbsp;не&nbsp;выдержал и&nbsp;пошел в&nbsp;магазин Apple на&nbsp;пятой авеню искать справедливости. Я&nbsp;нашел там&nbsp;продавца, показавшегося мне&nbsp;опытным, и&nbsp;сказал ему: <br/>—&nbsp;Чувак, смотри, у&nbsp;меня есть карточка, на&nbsp;ней&nbsp;есть деньги. И&nbsp;у&nbsp;меня очень простая задача&nbsp;— я&nbsp;хочу купить ваш&nbsp;новый айфон. Вы&nbsp;ведь его&nbsp;для&nbsp;этого и&nbsp;выпустили? Так&nbsp;как&nbsp;я&nbsp;могу это&nbsp;сделать, чтобы без&nbsp;заморочек с&nbsp;контрактом?<br/>—&nbsp;I'm&nbsp;sorry,&nbsp;— сказал мне&nbsp;продавец,&nbsp;— you&nbsp;can't do&nbsp;this.</p> <p class="hyphenate">Давайте остановимся на&nbsp;секунду: вышел новый гаджет и&nbsp;я&nbsp;<b>не могу его&nbsp;купить</b>? You're fucking kidding me!</p> <p class="hyphenate">При&nbsp;всей моей лояльности к&nbsp;Apple, это&nbsp;уже&nbsp;перебор. Понятно, что&nbsp;фанаты типа меня могут в&nbsp;итоге купить айфон в&nbsp;Европе или&nbsp;Канаде<span class="sbrace"> </span><span class="hbrace">(</span>что я&nbsp;и&nbsp;сделал), но&nbsp;большинство потенциальных покупателей пожмет плечами и&nbsp;купит какой-нибудь Android, которых развелось как&nbsp;тараканов. Чем&nbsp;дальше, тем&nbsp;чаще пишут о&nbsp;том, что&nbsp;доля Apple на&nbsp;рынке коммуникаторов рано или&nbsp;поздно должна начать падать, и&nbsp;в&nbsp;итоге Apple отойдет на&nbsp;свою привычную позицию&nbsp;— гаджеты премиум-класса, с&nbsp;долей рынка процентов в&nbsp;10.</p> <p class="hyphenate">И&nbsp;я&nbsp;надеюсь, что&nbsp;если Apple таки продолбает самый большой в&nbsp;мире рынок техники&nbsp;— американский&nbsp;— кто-нибудь скажет Джобсу: «I'm sorry, buddy».</p> Tue, 31 Aug 2010 13:26:34 GMT Как русифицировать кнопку Cancel в UISearchBar http://touchdev.ru/shorts/1800 <a name="1"><h2>Как&nbsp;русифицировать кнопку Cancel в&nbsp;UISearchBar </h2></a> <p class="hyphenate"><b>Задача</b>. Дан&nbsp;UISearchBar со&nbsp;стандартной кнопкой Cancel. К&nbsp;сожалению, нет&nbsp;никаких<span class="slaquo"> </span><span class="hlaquo">«</span>стандартных» средств изменить текст на&nbsp;ней. Тем&nbsp;не&nbsp;менее, требуется это&nbsp;сделать без&nbsp;привлечения дополнительных<span class="slaquo"> </span><span class="hlaquo">«</span>наклеек», которые закроют собой текст Cancel, а&nbsp;напишут поверх что-нибудь еще.</p> <p class="hyphenate"><b>Общая методика решения</b>. UISearchBar состоит из&nbsp;кучи UIView, вложенных друг в&nbsp;друга. Прогоним все&nbsp;по&nbsp;рекурсии, разберемся, кто&nbsp;из&nbsp;потока<span class="slaquo"> </span><span class="hlaquo">«</span>дочерних» UIView является искомой кнопкой и&nbsp;сменим ее&nbsp;текст.</p> <p class="hyphenate"><b>Исходный код</b><br/></p><pre class="brush: obj-c;"> void nStaticReplaceStringInView(UIView * view, NSString * haystack, NSString * needle) { // Рекурсивный перебор всех UIView for(int i=0; i&lt;[view.subviews count]; i++) { nStaticReplaceStringInView([view.subviews objectAtIndex:i], haystack,needle); } // Поисковой блок: проверка, отвечает ли текущая UIView на собитие titleForState:. Если да - это кнопка if([view respondsToSelector:@selector(titleForState:)]) { //Если текущая метка кнопки - haystack, то ... if(NSStrEq([view titleForState:UIControlStateNormal] , haystack)) { // то сделай текущую метку needle [view setTitle: needle forState: UIControlStateNormal]; } } } </pre> <p class="hyphenate"><b>Пример использования</b><br/></p><pre class="brush: obj-c;"> nStaticReplaceStringInView(searchBar, @"Cancel", @"Отмена"); </pre> Fri, 20 Aug 2010 16:52:16 GMT Ошибка из-за просроченного сертификата http://touchdev.ru/shorts/1118 <p class="hyphenate">Столкнулись с&nbsp;такой проблемой как&nbsp;<span class="monospacedText donthyphenate">Error launching remote program: security policy error</span>. Приложение удачно ставилось на&nbsp;iPhone/iPod, при&nbsp;запуске выдавалась ошибка, что&nbsp;время действия Provisioning Profile’а истекло. <div class="imageDivCenter"><img src="/1117.upload" class="imagePreview" width="300" height="41"/></div> Генерирование нового Provisioning profile’a и&nbsp;заливка его&nbsp;в&nbsp;XCode и,&nbsp;собственно на&nbsp;iPhone, ни&nbsp;к&nbsp;чему не&nbsp;привела&nbsp;— сообщение продолжало вылезать, и&nbsp;работа остановилась до&nbsp;нахождения лучших решений. Удаление всех профилей, кроме нового, на&nbsp;iPhone’е тоже ничего не&nbsp;дало.</p> <p class="hyphenate">Немного помучавшись, в&nbsp;результате нашли проблему:<br/>Зайдя в&nbsp;Organizer в&nbsp;ХСode, можно увидеть примерно следующее:<br/> <br/><div class="imageDivCenter"><img src="/1116.upload" class="imagePreview" width="800" height="581"/></div></p> <p class="hyphenate">То&nbsp;есть всего один из&nbsp;установленных профилей просрочен. Удаление просроченного профиля из&nbsp;Organizer’a решает данную проблему.</p> <p class="hyphenate">P.&thinsp;S.&nbsp;На&nbsp;скриншоте показаны только не&nbsp;просроченные профили, однако он&nbsp;дает понимание того, как&nbsp;бы&nbsp;выглядел список профилей, если бы&nbsp;хотя бы&nbsp;один из&nbsp;них&nbsp;был&nbsp;просрочен ;)</p> <p class="hyphenate">P.P.&thinsp;S.&nbsp;На&nbsp;самом деле причин и&nbsp;решений у&nbsp;этой<span class="sbrace"> </span><span class="hbrace">(</span>Error launching remote program: security policy error) проблемы может быть несколько. Однако, в&nbsp;нашем случае это&nbsp;всего лишь просроченный provisioning profile.</p> Thu, 19 Aug 2010 09:16:30 GMT GCD и музыка http://touchdev.ru/shorts/1552 <p class="hyphenate">На&nbsp;WWDC традиционно много треков играет. Во&nbsp;время ключевых презентаций и&nbsp;событий, просто пока зал&nbsp;заполняется/народ расходится. Не&nbsp;говоря уже&nbsp;о&nbsp;том, что&nbsp;есть Bash, на&nbsp;который приглашается всем в&nbsp;США&nbsp;известная группа<span class="sbrace"> </span><span class="hbrace">(</span>а&nbsp;за&nbsp;ее&nbsp;пределами, обычно, неизвестная никому) и&nbsp;зажигает.</p> <p class="hyphenate">Добрые люди собрали музыку, которая играла в&nbsp;этот раз: <a href="http://notundernda.com/WWDCMusic.html">notundernda.com/WWDCMusic.html</a></p> <p class="hyphenate">Ну,&nbsp;и,&nbsp;чтобы было по&nbsp;теме, я&nbsp;таки разобрался в&nbsp;GCD. И&nbsp;почти&nbsp;— в&nbsp;блоках. Это&nbsp;очень круто. Настолько круто, что, видимо, я&nbsp;буду это&nbsp;использовать везде. В&nbsp;Objective-C/Cocoa&nbsp;— напрямую, в&nbsp;остальных местах&nbsp;— активно искать аналоги, благо точно есть.</p> Sat, 26 Jun 2010 11:52:00 GMT Разработка-туллзы http://touchdev.ru/shorts/1480 <p class="hyphenate">Сегодняшние сессии были посвящены инструментам для&nbsp;разработчика. То&nbsp;есть те,&nbsp;на&nbsp;которые я&nbsp;попал. Послушал про&nbsp;тестирование интерфейсов<span class="sbrace"> </span><span class="hbrace">(</span>и,&nbsp;наверное, еще&nbsp;схожу в&nbsp;лабу, поспрашиваю вопросы) и&nbsp;внимательнейшим образом посмотрел на&nbsp;обзорную по&nbsp;Xcode 4.&nbsp;Xcode третьей версии я&nbsp;искренне<span class="sbrace"> </span><span class="hbrace">(</span>но&nbsp;тихо) ненавижу всей своей душой. Когда JetBrains объявили про&nbsp;то,&nbsp;что&nbsp;делают IDE&nbsp;для&nbsp;Objective-C, прыгал до&nbsp;потолка. Но&nbsp;на&nbsp;WWDC Apple превзошли себя. Повторюсь, вся&nbsp;информация за&nbsp;рамками киноута&nbsp;— конфиденциальна, но,&nbsp;судя по&nbsp;всему, ждать осталось недолго<span class="sbrace"> </span><span class="hbrace">(</span>что такое полгода, именно столько, судя по&nbsp;дичайшему количеству багов, осталось им&nbsp;еще&nbsp;до&nbsp;хотя бы&nbsp;первой беты, когда мы&nbsp;уже&nbsp;сколько мучаемся с&nbsp;второй и&nbsp;третьей версией? Пять лет?) и&nbsp;ждать есть чего.</p> <p class="hyphenate">Переработано все. Не&nbsp;знаю, с&nbsp;нуля ли,&nbsp;но&nbsp;абсолютно все. Уже&nbsp;известный нам&nbsp;LLVM встал на&nbsp;положенное ему&nbsp;место, LLDB заменил старенький gdb, полностью переработан интерфейс, проведена громадная работа над&nbsp;теми же&nbsp;шорткатами, интегрирован Interface Builder и&nbsp;много, много всего остального. Может быть, даже стоило назвать это&nbsp;не&nbsp;Xcode, а&nbsp;как-нибудь иначе, но&nbsp;Apple достаточно старательно подбирает названия сразу и&nbsp;не&nbsp;меняет их&nbsp;просто так.</p> <p class="hyphenate">Нововведения получил и&nbsp;Instruments, тул&nbsp;для&nbsp;отлова утечек памяти и&nbsp;профайлинга. Пожалуй, за&nbsp;пределами Java это&nbsp;самый аккуратный тул&nbsp;такого рода. По&nbsp;мощности он&nbsp;тоже радует. Например, появился deferred-режим профайлинга, если кто&nbsp;понимает.</p> <p class="hyphenate">То&nbsp;есть разработчикам досталось, может быть, даже больше всякого, чем&nbsp;обычным пользователям. Ну,&nbsp;и&nbsp;хорошо. Конференция же&nbsp;для&nbsp;разработчиков.</p> <p class="hyphenate">Я&nbsp;даже было начал беспокоиться за&nbsp;IntelliJ CIDR, но,&nbsp;что-то мне&nbsp;подсказывает, что&nbsp;Apple хоть и&nbsp;поворачиваются к&nbsp;разработчикам правильной стороной, все-равно пока слишком Think Different, чтобы пересилить опыт разработки ребят из&nbsp;JetBrains. Ну,&nbsp;и&nbsp;задачи перед Xcode стоят чуть более грандиозные, а,&nbsp;значит, и&nbsp;сделать их&nbsp;сложнее<span class="sbrace"> </span><span class="hbrace">(</span>читай дольше). Так&nbsp;что&nbsp;жду&nbsp;оба&nbsp;продукта с&nbsp;громадным нетерпением. </p> Thu, 10 Jun 2010 23:44:17 GMT АйПэд и еще раз айпэд http://touchdev.ru/shorts/1476 <p class="hyphenate">Вот&nbsp;и&nbsp;завершился второй день конференции. Завершился большим количеством разных событий. Во-первых, я&nbsp;себе таки купил айпэд<span class="sbrace"> </span><span class="hbrace">(</span>в&nbsp;магазине оставался почти последний, они&nbsp;расходятся мгновенно, а&nbsp;3g&nbsp;версию я&nbsp;в&nbsp;глаза не&nbsp;видел, и,&nbsp;видимо, не&nbsp;увижу). Просто понял, что&nbsp;разрабатывать под&nbsp;него буду<span class="sbrace"> </span><span class="hbrace">(</span>и&nbsp;заказы есть, и&nbsp;своих мыслей появилось море) и&nbsp;вдруг четко осознал, что&nbsp;я&nbsp;с&nbsp;ним&nbsp;буду делать. Что&nbsp;именно&nbsp;— расскажу потом, а&nbsp;пока обратно к&nbsp;конференции. Конкретных вещей рассказывать нельзя, там&nbsp;все, кроме киноута под&nbsp;NDA, но&nbsp;общие слова можно.</p> <p class="hyphenate">Пишу я&nbsp;это&nbsp;все&nbsp;с&nbsp;айпэда же,&nbsp;из&nbsp;новокупленного Pages. Тоже оказывается очень даже ничего штука. К&nbsp;клавиатуре нужно привыкнуть, то,&nbsp;что&nbsp;запятой нет&nbsp;—&nbsp;это&nbsp;вообйще эпик фейл, но&nbsp;в&nbsp;целом очень все&nbsp;хорошо.</p> <p class="hyphenate">Начал слушать полезные сессии. Про&nbsp;дизайн приложений под&nbsp;айпэд, про&nbsp;редактирование видео прямо на&nbsp;айфоне, про&nbsp;общие вещи<span class="sbrace"> </span><span class="hbrace">(</span>то&nbsp;же&nbsp;самое изменение разрешения и&nbsp;как&nbsp;с&nbsp;ним&nbsp;работать), появившиеся в&nbsp;айпэде, айфоне 4&nbsp;и&nbsp;iOS&nbsp;4.&nbsp;Все&nbsp;очень полезно. Еще&nbsp;хочу завтра попробовать добраться до&nbsp;людей, занимающихся Xcode, и&nbsp;поболтать с&nbsp;ними. Получится или&nbsp;нет&nbsp;—&nbsp;пока не&nbsp;знаю, но&nbsp;хочу.</p> <p class="hyphenate">Познакомился с&nbsp;рубистом, вместе поковыряли Xcode 4.&nbsp;Xcode 4&nbsp;пока даже не&nbsp;бета. Баг&nbsp;на&nbsp;баге сидит и&nbsp;бегом погоняет. Но&nbsp;перспективы&nbsp;— огого. Я&nbsp;даже минут десять опасался за&nbsp;JetBrains CIDR, но&nbsp;вроде успокоился. Заодно товарища просвятил про&nbsp;RubyMine.</p> <p class="hyphenate">В&nbsp;остальном все&nbsp;то&nbsp;же.&nbsp;Завтра новый день, не&nbsp;с&nbsp;утра, но&nbsp;до&nbsp;вечера. Будем дальше заправляться знаниями. Ждите следующих выпусков.</p> Wed, 09 Jun 2010 08:09:44 GMT Первый день WWDC 2010 http://touchdev.ru/shorts/1473 <p class="hyphenate">Я&nbsp;только что&nbsp;вернулся, прослушав Keynote и&nbsp;две&nbsp;сессии после него. Было сказано много интересного, все&nbsp;рассказывать нельзя, но&nbsp;большая часть&nbsp;— доступна. Пересказывать сухие факты не&nbsp;буду, да&nbsp;и&nbsp;можно посмотреть в&nbsp;<a href="http://touchdev.ru/live/1266">трансляции</a>, лучше свои мысли обо&nbsp;всем этом расскажу.</p> <p class="hyphenate">Итак, сначала очередь. Это&nbsp;полнейшее безумие. Я&nbsp;пришел туда за&nbsp;4&nbsp;часа<span class="sbrace"> </span><span class="hbrace">(</span>в&nbsp;6&nbsp;утра). Очередь опоясывала половину Moscone West. Это, наверное, метров 800.<span class="slaquo"> </span><span class="hlaquo">«</span>Нетрудно подсчитать», что&nbsp;люди стояли там&nbsp;часов с&nbsp;12ти ночи, ну,&nbsp;то&nbsp;есть, с&nbsp;прошлого вечера.</p> <p class="hyphenate">Когда нас&nbsp;запустили&nbsp;— все&nbsp;было хорошо. Постояли, поговорил с&nbsp;человеком из&nbsp;TransGaming. Очень душевно поговорили, он&nbsp;пожаловался на&nbsp;то,&nbsp;что&nbsp;графическая подсистема у&nbsp;Apple до&nbsp;недавнего времени была сделана ужасно, я&nbsp;пожаловался на&nbsp;Xcode. В&nbsp;общем, нормально так. Выяснилось, что&nbsp;WiFi работает отлично на&nbsp;Mac, но&nbsp;плохо&nbsp;— на&nbsp;iPhone. В&nbsp;эту&nbsp;же&nbsp;проблему врезался потом Стив Джобс на&nbsp;выступлении.</p> <p class="hyphenate">Уровень организации&nbsp;— в&nbsp;очередной раз&nbsp;подавляет. Я&nbsp;не&nbsp;знаю, через сколько тысяч лет&nbsp;мы&nbsp;дойдем до&nbsp;таких же&nbsp;конференций. В&nbsp;России это&nbsp;просто невозможно. Все&nbsp;четко, вежливо, понятно, удобно, продуманно. Я&nbsp;на&nbsp;это&nbsp;обращаю внимание, потому что<span class="slaquo"> </span><span class="hlaquo">«</span>контраст». Вообще можно не&nbsp;задумываться, все&nbsp;само собой будет правильно и&nbsp;хорошо.</p> <p class="hyphenate">Про&nbsp;Keynote уже&nbsp;все&nbsp;рассказали. Мне&nbsp;удалось пообщаться с&nbsp;корреспондентом НТВ, прессе дали подержать телефон. Говорит, что&nbsp;ощущения непередаваемые, так&nbsp;круто. Верится легко, а&nbsp;некоторые вещи вроде гироскопа и&nbsp;афигенного экрана&nbsp;— выносят мозг. Сколько всего можно сделать с&nbsp;этими вещами… Потом, на&nbsp;сессии про&nbsp;мультимедиа и&nbsp;графику показывали техно-демку игры<span class="sbrace"> </span><span class="hbrace">(</span>диаблоподобный слэшер). Графика&nbsp;— на&nbsp;уровне<span class="slaquo"> </span><span class="hlaquo">«</span>больших» машин. С&nbsp;антиалиазингом, со&nbsp;сложными шейдерами. А&nbsp;местами даже «лучше, чем&nbsp;в&nbsp;винде», так&nbsp;как&nbsp;это&nbsp;очень хорошо интегрировано с<span class="sbrace">&nbsp;</span><span class="hbrace">(</span>removed because of&nbsp;NDA) …&nbsp;в&nbsp;общем, поверьте, на&nbsp;этом экране и&nbsp;с&nbsp;использованием мощи A4,&nbsp;мы&nbsp;скоро увидим новое поколение игр&nbsp;и&nbsp;богатых на&nbsp;графику приложений. Богатых настолько, насколько сейчас не&nbsp;делает никто и&nbsp;ни&nbsp;на&nbsp;одной мобильной платформе.</p> <p class="hyphenate">В&nbsp;Safari поразили Extensions. Вроде фигня фигней. Но&nbsp;когда показали, что&nbsp;с&nbsp;их&nbsp;помощью можно делать… Я&nbsp;теперь даже думать в&nbsp;сторону Firefox и&nbsp;Chrome не&nbsp;буду, теперь для&nbsp;Safari будет все, что&nbsp;нужно. Причем, учитывая возможности и&nbsp;легкость создания, это<span class="slaquo"> </span><span class="hlaquo">«</span>все» будет еще&nbsp;и&nbsp;красиво. Экстаз? Ну,&nbsp;где-то так.</p> <p class="hyphenate">Что&nbsp;еще&nbsp;сказать бы&nbsp;такое? Много гиков в&nbsp;одном месте создают какое-то особое биополе. Это&nbsp;действительно чувствуется. Получается странно. Посмотрим, насколько. И&nbsp;очень жаль, что&nbsp;дальше особо рассказать ничего не&nbsp;получится, ибо&nbsp;NDA&nbsp;и&nbsp;все&nbsp;такое. Постараюсь как-то это&nbsp;аккуратно обходить. Хотя, с&nbsp;другой стороны, все&nbsp;эти&nbsp;подробности интересны только гикам. А&nbsp;они&nbsp;и&nbsp;так&nbsp;все&nbsp;тут. Так&nbsp;что&nbsp;вот&nbsp;:)</p> Tue, 08 Jun 2010 03:26:23 GMT