![](https://habrastorage.org/storage2/cc0/8f0/f83/cc08f0f839e868ebac68683bfdac6698.png)
Виталий @s0Lread-only
Пользователь
Жизненный цикл ViewController в iOS6
4 мин
8.9KПеревод
Некоторые из вас, возможно, заметили, что viewControllers больше не запрашивают viewWillUnload и viewDidUnload в iOS6. Это происходит потому, что контроллеры больше не выгружают свои представления (view) автоматически.
Ваша первая мысль может быть «Окей, как я могу вручную выгрузить мое представление при предупреждении о недостатке памяти (low memory warning)? Это выглядит, как шаг назад.»
Затем вы ищите ответы и пишите что-то вроде:
Ваша первая мысль может быть «Окей, как я могу вручную выгрузить мое представление при предупреждении о недостатке памяти (low memory warning)? Это выглядит, как шаг назад.»
Затем вы ищите ответы и пишите что-то вроде:
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
if([self isViewLoaded] && ![[self view] window]) {
[self setView:nil];
}
}
+13
Математика с фиксированной точкой в Marmalade SDK
4 мин
4.7KНе так давно на хабре был пост «Погружаемся в 3D с помощью Marmalade SDK», который оставил у меня достаточно много вопросов. В первую очередь это касалось магических шестнадцатиричных чисел, которые передавались в функции, т.е. вычислений с фиксированной точкой. В интернете достаточно плохо описана эта тема, поэтому пришлось экспериментировать. Если интересно — добро пожаловать под кат.
+15
Совместная акция RIM и Marmalade для разработчиков игровых приложений
1 мин
22KКомпании RIM и Marmalade объявили о старте акции, позволяющей разработчикам получить бесплатно планшет PlayBook и ограниченную по сроку мультиплатформенную лицензию на SDK. Единственное условие — выпустить своё игровое приложение для планшета канадской компании.
![image](https://habrastorage.org/getpro/habr/post_images/5bb/b7b/65f/5bbb7b65f690db8dfd851bc8021c4ba6.jpg)
![image](https://habrastorage.org/getpro/habr/post_images/5bb/b7b/65f/5bbb7b65f690db8dfd851bc8021c4ba6.jpg)
+5
Работать с AdMob в России станет проще с 1 октября 2012 года
2 мин
6.6KДля российских разработчиков мобильных приложений, использующих AdMob в качестве средства монетизации есть хорошие новости. С 1 октября вступает в силу новая инструкция ЦБ РФ О ПОРЯДКЕ
ПРЕДСТАВЛЕНИЯ РЕЗИДЕНТАМИ И НЕРЕЗИДЕНТАМИ УПОЛНОМОЧЕННЫМ
БАНКАМ ДОКУМЕНТОВ И ИНФОРМАЦИИ, СВЯЗАННЫХ С ПРОВЕДЕНИЕМ
ВАЛЮТНЫХ ОПЕРАЦИЙ…
В это инструкции, в отличие от устаревшего документа, явно присутствуют термины «оферта» и «публичная оферта».
ПРЕДСТАВЛЕНИЯ РЕЗИДЕНТАМИ И НЕРЕЗИДЕНТАМИ УПОЛНОМОЧЕННЫМ
БАНКАМ ДОКУМЕНТОВ И ИНФОРМАЦИИ, СВЯЗАННЫХ С ПРОВЕДЕНИЕМ
ВАЛЮТНЫХ ОПЕРАЦИЙ…
В это инструкции, в отличие от устаревшего документа, явно присутствуют термины «оферта» и «публичная оферта».
+10
«Концепты» на C++
2 мин
14KВсем доброго времени суток.
Придумано и написано под влиянием некоторых публикаций Страуструпа на тему концептов в C++.
Захотелось мне однажды необычного — сделать так, чтобы нешаблонные функции/методы на C++ могли принимать в качестве аргумента любой объект, имеющий определенный набор методов, примерно так:
Причем сделать это не используя наследование от базового класса.
Как это можно сделать, читайте под катом.
Придумано и написано под влиянием некоторых публикаций Страуструпа на тему концептов в C++.
Захотелось мне однажды необычного — сделать так, чтобы нешаблонные функции/методы на C++ могли принимать в качестве аргумента любой объект, имеющий определенный набор методов, примерно так:
void fn(VectorWrapper<int> x)
{
for (size_t i = 0; i < x.size(); ++i)
{
doSomething(x[i]);
}
}
::std::vector<int> sv;
QList<int> qv;
OtherSuperVector<int> ov;
fn(sv);
fn(qv);
fn(ov);
Причем сделать это не используя наследование от базового класса.
Как это можно сделать, читайте под катом.
+5
Почта России — новые хотелки за 10 миллиардов
2 мин
77K![image](https://habrastorage.org/getpro/habr/post_images/c52/803/edb/c52803edb7ec05308d9d8dd22cad8a34.jpg)
В конце октября в Госдуму поступит проект закона «О почтовой связи», в котором говорится о создании «Единой Электронной Почтовой Системы», благодаря которой граждане и предприятия получат официальные электронные почтовые ящики.
Борис Оникул (автор идеи), курирующий почтовую отрасль, заявил: " «Почта России» гарантирует, что только вы сможете получить персональный электронный адрес и пароль от почтового ящика, предъявив паспорт. Также «Почта России» сможет гарантировать защиту от несанкционированного доступа к персональному почтовому ящику".
+128
Сравнение методик обзора кода
7 мин
25KДумаю, многие разработки знакомы с понятием code review или обзор кода по-русски (также данный термин переводят как просмотр кода, инспектирование кода или рецензирование кода – далее, для единообразия, будет использоваться вариант «обзор кода»). Недавно я столкнулся с необходимостью «разложить по полочкам» и классифицировать знания по этой теме. Результат – данная статья. Надеюсь, она окажется полезной, а также поможет внедрить обзоры кода в свой производственный процесс тем, кто только об этом задумывается.
![wtf per minute](https://habrastorage.org/storage2/7af/34c/305/7af34c30564864dc56070bf91e5f0e47.jpg)
Обзор кода является одним из наиболее эффективных методов поиска и устранения дефектов программы. Обзоры проводятся человеком, что позволяет находить широкий класс ошибок, в том числе с трудом детектируемых или вообще не детектируемых автоматическими средствами. Безусловно, обзор кода, не отменяет использование анализаторов кода или других методик обнаружения ошибок, например, unit-тестирования. К сожалению, не существует метода, который один обеспечил бы обнаружение всех дефектов программы (в исследованиях эффективность обзора кода обычно оценивается как 30-50% обнаруженных ошибок в приложении).
![wtf per minute](https://habrastorage.org/storage2/7af/34c/305/7af34c30564864dc56070bf91e5f0e47.jpg)
Обзор кода является одним из наиболее эффективных методов поиска и устранения дефектов программы. Обзоры проводятся человеком, что позволяет находить широкий класс ошибок, в том числе с трудом детектируемых или вообще не детектируемых автоматическими средствами. Безусловно, обзор кода, не отменяет использование анализаторов кода или других методик обнаружения ошибок, например, unit-тестирования. К сожалению, не существует метода, который один обеспечил бы обнаружение всех дефектов программы (в исследованиях эффективность обзора кода обычно оценивается как 30-50% обнаруженных ошибок в приложении).
+16
Магия TestFlight, или Подробнее о технологиях Configuration Profile и URL Scheme
4 мин
8.2KНа Хабре уже были статьи про TestFlight (вот тут и тут), но в них речь шла главным образом про его использование и интеграцию/автоматизацию в процесс сборки. А мне всегда было интересно, как это работает изнутри:
• Как происходит сбор идентификаторов устройств? (Если вам непонятно, зачем собирать UDID’ы, пройдите по ссылкам выше)
• Как приложение устанавливается по переходу по ссылке?
• Как создается иконка на Home Screen?
• Все это хаки или легальные способы?
Если вы хотите построить свой TestFlight c блэк-джеком и всем остальным или просто интересуетесь, как сделано что-то из вышеперечисленного, – прошу под кат.
• Как происходит сбор идентификаторов устройств? (Если вам непонятно, зачем собирать UDID’ы, пройдите по ссылкам выше)
• Как приложение устанавливается по переходу по ссылке?
• Как создается иконка на Home Screen?
• Все это хаки или легальные способы?
Если вы хотите построить свой TestFlight c блэк-джеком и всем остальным или просто интересуетесь, как сделано что-то из вышеперечисленного, – прошу под кат.
+18
Обзор инструментов для визуального сравнения и разрешения конфликтов слияния
6 мин
138KНа хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.
![diff and merge](https://habrastorage.org/storage2/97c/706/85e/97c70685e8ffa404bacb3d59bed1f20e.jpg)
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.
Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
![diff and merge](https://habrastorage.org/storage2/97c/706/85e/97c70685e8ffa404bacb3d59bed1f20e.jpg)
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.
Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
+39
Исследуем iOS SDK и используем недокументированные API
19 мин
33KИз этой главы, да и из всей этой книги понятно, что самые лакомые куски программирования под iOS включены в публичные фреймворки, но не в SDK. Неофициальная политика Apple насчет этого проста: вы можете всё это использовать, но только на свой страх и риск. Ваш код может сломаться при следующем обновлении прошивки. Вам самим придётся искать компромисс между риском и прибылью.
Erica Sadun, The iPhone Developer's CookBook
Оригинал
As you’ve seen in this chapter, and throughout this book, some of the nicest bits of iPhone programming are included in the public iPhone frameworks but not in the SDK. Apple’s unofficial policy on this is clear:You can use these items in your programs, but you do so at your own risk.Your code may break at each firmware release. Striking the balance between risk and reward is up to you.
Дисклеймеры
- Приведенные здесь куски кода работают на обычных iPhone (включая 4S) и iPad (включая new iPad) и не требуют jailbreak.
- Все решения написаны и протестированы на iOS 5. Все решения также протестированы на совместимость с iOS 4.3, т.е. работают с iOS 4, если не сказано обратное. Основная часть статьи была написана до выхода iOS 6, так что приведенные решения не тестировались на совместимость с iOS 6.
- Использование недокументированных API может привести к тому, что ваше приложение не допустят в AppStore. А может и не привести :-)
Для тех, кому интересно, как Apple опрделяет использование приваетных API:«Как Apple узнаёт, что ты используешь приватные API?»
- Apple может изменить реализацию вместе со следующим релизом iOS, и в вашем коде что-то сломается. Впрочем, это решаемо, и ничем принципиально не отличается от реализации обратной совместимости для документированных API. Ниже я рассмотрел эту проблему чуть подробнее.
- Я не могу гарантировать, что у найденных мной API нет побочных эффектов. Используйте на свой страх и риск.
- Лицензионное соглашение Apple Developer Program запрещает реверс-инжинеринг iOS.
- Статья в процессе доработки. Конструктивная критика приветствуется!
Краткая инструкция по поиску в SDK
Допустим, вам нужно сделать что-то, выходящее за рамки официальной документации.
+49
Как я принимал участие в IndieGala и что из этого извлек
3 мин
7.8K![image](http://dg-lab.com/gallery/i_31.png)
Наверняка многие слышали про так называемые «бандлы» — мероприятия, организаторы которых собирают несколько различных игр в один пак и продают по системе Pay What You Want. Вырученные в итоге деньги делятся между разработчиками, организаторами и благотворительными компаниями. Наиболее ярким представителем компании-организатора бандлов является Wolfire Games с их популярнейшим Humble Indie Bundle. Кроме того, существуют такие бандлеры как Indie Royale и Indie Gala. Своим опытом в сотрудничестве с Indie Gala я и хотел бы с вами поделиться.
Если вам интересно то, как можно свою включить игру в бандл, как происходит организация данного события и, конечно же, процесс выплаты разработчикам, прошу под кат.
+50
Sublime Text 2
12 мин
306K![](https://habrastorage.org/storage2/898/18a/54a/89818a54a520ae4ab74a879071642193.png)
Sublime Text 2 — это платный текстовый редактор, написанный на C++, который:
- Работает в Linux, OS X и Windows
- Обладает приличной скоростью работы
- Приятным интерфейсом (включая всевозможные анимации)
- Гибко настраиваем (правда, не в GUI, а в json-конфигах)
- Имеет множество плагинов, число которых растёт как на дрожжах
- Поддерживает VIM-режим
- Использует fuzzy-поиск
+181
«Игрушечная» картография или 3D карты своими руками
4 мин
11KОколо полутора лет назад на Хабре был размещен пост про уникальные карты китайского поисковика Baidu (для тех, кто не видел, вот он: http://habrahabr.ru/post/115107/). Я был поражен тем, насколько кропотливо, детально и красиво эти карты сделаны, поэтому однажды мы, вместе с группой товарищей, решили разобраться в процессе создания Baidu-карт и сделать собственные карты всего мира, которые выглядели бы так же круто. Под катом много картинок, раскрытие секрета Baidu-подобных карт и то, что получилось у нас.
![](https://habrastorage.org/storage2/bae/263/1a7/bae2631a79c04e16916679b8c3b92441.jpg)
![](https://habrastorage.org/storage2/bae/263/1a7/bae2631a79c04e16916679b8c3b92441.jpg)
+190
Коаны о программировании
4 мин
36KОт переводчика: The Codeless Code — сборник побасенок о философии программирования. Побасенки в сборнике разные — некоторые весьма кровожадные, некоторые достаточно хардкорные с технической точки зрения (родной язык автора — Java), но встречаются очень емкие. Представляю вам перевод семи наиболее полюбившихся мне историй, остальные 30+ (новые добавляются каждую неделю) можно найти на сайте.
Три дня и три ночи мастер не появлялся из своей кельи. На четвертый день монахи отправили послушника проведать его.
Мастер был занят созерцанием диаграммы потоков данных. Послушник узнал в ней второстепенную деталь обширной системы, поддержкой которой занимались монахи. Поклонившись, послушник поинтересовался, над чем работает мастер.
Мастер ответил: «Здесь есть изъян, и я размышляю, как лучше его исправить.»
Пустяк
Три дня и три ночи мастер не появлялся из своей кельи. На четвертый день монахи отправили послушника проведать его.
Мастер был занят созерцанием диаграммы потоков данных. Послушник узнал в ней второстепенную деталь обширной системы, поддержкой которой занимались монахи. Поклонившись, послушник поинтересовался, над чем работает мастер.
Мастер ответил: «Здесь есть изъян, и я размышляю, как лучше его исправить.»
+227
Как облегчить себе жизнь в Xcode. Shortcuts, tips&tricks
2 мин
60K![image](https://habr.com/images/px.gif#%3D%22http%3A%2F%2Fimg267.imageshack.us%2Fimg267%2F7510%2Flearnhowtotypefast.jpg%22)
Эффективная работа в любой IDE, да и не только в IDE, определяется в немалой степени тем, как много вы используете клавиатурных сокращений и всяческих фич, призванных облегчить вашу жизнь.
В этом посте я попытаюсь поделиться тем, что знаю и использую сам, что накопалось в сети но так же очень рассчитываю на вашу помощь. Поделитесь своими находками и трюками. По результатам думаю сделать какой-то PDF, вроде известного Xcode-рам pdf c шорткатами от Colin Wheeler (не знаете? тогда вот линк)
+9
От инженера до руководителя. Часть 1: Чувство справедливости
9 мин
35KРаботая продолжительное время инженером-программистом, я собирал помимо опыта и знаний ещё недовольство и замечания к рабочему процессу и начальству в частности. Каждый раз, когда я сталкивался с проблемой, я думал над тем, как мог бы я её решить и что я могу сделать в этой ситуации. Что-то удавалось сделать, а что-то разбивалось об процесс и руководящий аппарат. И каждый раз проблема и её решения откладывались мной, с осознанием того, что если бы у меня были нужные рычаги, уж тогда-то я смог бы изменить и сделать так, как правильно. Я даже сформировал ментальную систему, которую, впрочем, поленился формализовать на бумаге. Царящая вокруг меня несправедливость была для меня хоть и сокрытым, но комком в горле, превращающимся в камень на душе. Я ожидал шанса и возможности всё накопленное реализовать и поправить, и однажды возможность подвернулась.
Будьте осторожны в своих желаниях — они сбываются!
![](https://habrastorage.org/storage2/f29/7f0/ff8/f297f0ff8b4dd2de7fbbb686bfe51d0f.png)
Так и случилось, что мне предложили нежданно-негаданно руководящую должность, оценившую мои таланты и навыки и позволяющую реализовать свои амбиции. Беседа с менеджером закончилась в лучших традициях “Ты теперь начальник — управляй”. И теперь мне предстояло воплощать в себе лучезарный и кристально-чистый светоч справедливости и делать людей счастливыми, нести слово и байт людям. Однако, почти сразу же оказалось, что это несколько сложнее, чем мне казалось ранее, что угол зрения на проблемы снизу и сверху несколько различается, и родной код оказался приветливее громадины проблем и забот. Поэтому сейчас я решил наконец-то оформить свои догмы на бумаге от лица исполнителя и с призмы начальника. Вряд ли я скажу что-то новое, кроме того, что уже до меня написано в хороших книгах, за исключением примеров из практики и шуток с прибаутками, поэтому либо пролистывайте сразу, либо добро пожаловать под кат.
Будьте осторожны в своих желаниях — они сбываются!
![](https://habrastorage.org/storage2/f29/7f0/ff8/f297f0ff8b4dd2de7fbbb686bfe51d0f.png)
Так и случилось, что мне предложили нежданно-негаданно руководящую должность, оценившую мои таланты и навыки и позволяющую реализовать свои амбиции. Беседа с менеджером закончилась в лучших традициях “Ты теперь начальник — управляй”. И теперь мне предстояло воплощать в себе лучезарный и кристально-чистый светоч справедливости и делать людей счастливыми, нести слово и байт людям. Однако, почти сразу же оказалось, что это несколько сложнее, чем мне казалось ранее, что угол зрения на проблемы снизу и сверху несколько различается, и родной код оказался приветливее громадины проблем и забот. Поэтому сейчас я решил наконец-то оформить свои догмы на бумаге от лица исполнителя и с призмы начальника. Вряд ли я скажу что-то новое, кроме того, что уже до меня написано в хороших книгах, за исключением примеров из практики и шуток с прибаутками, поэтому либо пролистывайте сразу, либо добро пожаловать под кат.
+114
Конвертация PNG24/32 в PNG8 с сохранением прозрачности
1 мин
14K![](https://habrastorage.org/storage2/59f/118/182/59f11818229f4f2973854df3be96e842.png)
Открылся веб-сервис TinyPNG, на котором можно быстро конвертировать полноцветные PNG24 в индексные PNG8 с сохранением альфа-прозрачности. Сайт работает на известных open source утилитах, так что квантование палитры можно сделать и без него, но здесь это просто удобнее.
+64
Видео: Стив Джобс на D8 (2010 год)
1 мин
1.1KПеревод
Приветствую, хабровчане!
Если вы помните, 2010 год был очень богат на события: это и презентация первого поколения iPad, и пропажа прототипа iPhone 4 в калифорнийском баре, и суициды на заводах Foxconn, и война с компанией Adobe по поводу отсутствия в платформе iOS технологии Flash. Журналисты Wall Street Journal не смогли проигнорировать эти вопросы, и по каждому из них Стиву пришлось держать ответ.
Если вы помните, 2010 год был очень богат на события: это и презентация первого поколения iPad, и пропажа прототипа iPhone 4 в калифорнийском баре, и суициды на заводах Foxconn, и война с компанией Adobe по поводу отсутствия в платформе iOS технологии Flash. Журналисты Wall Street Journal не смогли проигнорировать эти вопросы, и по каждому из них Стиву пришлось держать ответ.
+30
Пишем эмулятор приставки ч2, или немного о CHIP16
12 мин
6.2KВ предыдущей своей небольшой заметке я описывал принцип построения эмулятора старой игровой платформы CHIP-8 из далеких 70-х. Здесь же речь пойдет о своего рода наследнице – CHIP16. Итак, что же такое CHIP16?
CHIP16 – “вымышленная” игровая приставка, которой никогда не существовало в “железе”. Всю спецификацию на нее разрабатывали (-ют) энтузиасты с одного англоязычного форума. Смысл в том, чтобы максимально упростить написание эмулятора, иметь хорошую документацию и поддержку комьюнити. Тем самым позволяя даже новичкам в программировании создать полностью рабочий эмулятор с нуля на фактически любом языке программирования. Сразу оговорюсь, что здесь я не буду приводить примеры кода эмулятора, цель – просто рассказать об этой платформе. И да, конечно все Just for fun!
![](https://habrastorage.org/storage2/76e/9c3/622/76e9c36222f5fe612d68dcc8a2779f2a.png)
+54
Информация
- В рейтинге
- Не участвует
- Откуда
- Воронеж, Воронежская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность