iPhone , iPad , iPod как стать под них разработчиком.

Пока одни думаю как произвести ремонт iphone — потому что хватило мозгов сделать update до ios 5 на jailbreak’нутом iphone. Другие пытаются заниматься вполне нормальной разработкой под ios. Apple как обычно в своем стиле что относиться и к разработке — хочешь стать разработчиком — гони 99 баксов. Но это ещё не все — надо мас ось . Т.е хочешь по хорошему разрабатывать под ios — покупай мак , покупай типа лицензию разработчика . И тогда, только тогда можно скачать среду разработки xcode. Сразу говорю от Xcode — никуда не деться (легкими путями по крайне мере). Это зло и но будет.
Но не будем о грусном — обходиться это просто и почти легально. Макось можно крутить на виртуальной машине. Для создания виртуальных машин есть несколько программ: Virtual Box , VMware . Рекомендую Virtual box — так он компактнее и бесплатный . VMware тоже можно использовать — но там установочные файл весят около 400 метров(в 4 раз больше чем Virtual box) и халявная лицензия на 2 месяца только =(. Далее надо качать образ Mac OS X . С этим особых проблем нет — находиться довольно хорошо даже яндексом. Скачивать надо версию больше 10.6.6 . Потому что на 10.6.6 Xcode 4.2 не ставиться. Вот где скачать Xcode 4.2 — я не в курсе — у меня он скачан легально.
Всего этого вполне достаточно чтоб начать разработку под iOS — тестировать. Можно даже тестировать готовые приложения на jailbreakнутых iphone’ах/ipad’ах.

Как создать сертификаты и разрабатывать под phonegap — я расскажу  в следующем посте

Работа с камерой на Android

Android обычно идет на смартфонах. А у смартфонов есть камера. Насколько мне помнится API для работы с камерой появляется с 8 уровня API — это соответствует Android версии 2.2. Для этого в AndroidManifest.xml в секции указываем Далее чтоб приложение могло использовать камеру — надо это указать в AndroidManifest.xml примерно так:

Этих настроек будет вполне достачно чтоб использовать камеру. Надо сделать import android.hardware.Camera; После этого можно создавать объект камеры и получать с него изображение.
От камеры требуется в основном получать превью , и сообственно фотографировать. В официальной документации по разработке под android это раздел довольно запутан. Я же предлагаю делать все проше и для этого я даже создал специальный класс. Работать с ним просто :
в layouts/main.xml надо создать FrameLayout. На нем в дальнейшем будет показываться превью картинки. Для того чтоб особо не париться с превью я сделал класс: скачать его можно здесь (CameraPreview.java) Далее его надо подключить: import [Название вашего приложения].CameraPreview; Использовать так:

// В основной класс добавляем 2 переменные
private Camera mCamera;
private CameraPreview mPreview;

// В функцию где начинаем отображать превью добавляем

mCamera = CameraPreview.getCameraInstance(); // Получаем экземпляр камеры

// Создаем экземпляр класс предпросмотра
mPreview = new CameraPreview(this, mCamera);
// Получаем элемент на котором будем показывать превью
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
// Добавляем превью на элемент — после этого там будет показывать превью с камеры.
preview.addView(mPreview);

Картинку с камеры получать ещё проше: mCamera.takePicture(null, null, callback_function);
callback_function принимает в качестве параметра данные уже закодированные как jpeg — остается только сохранить их в файл.

Ко всему выше написаному могу сказать одно — когда разрабатываете под Android и вообще всегда делайте копии. Для создания копий исходников рекомендую использовать системы контроля версий SVN или GIT их так же можно использовать для ведения копий флешке на Android устройствах. Rom Android устройства можно копировать различными программами например : скачать rom manager premium . Но нечто не спасет от кривых рук , и физического воздействия на устройство — все эти меры могут только понизить вероятность потери ваших разработок.

Android / Создание веб-приложения

Создать веб приложение для Android просто. Официальная документация(http://developer.android.com/guide/webapps/index.html) говорит что можно делать двумя путями: на стороне пользователя( client-side application ) разработка с Android SDK и установка на девайс пользователя как .apk. И типичное веб приложение — которое крутиться в браузере. Так как гораздо лучше с точки зрения — доступа для юзера первый вариант. Делается это просто : запускается и создает проект для android.
Открываем файл: /res/layout/main.xml — это визуальная отображение формы. Перетащите на него из палитры компонентов — webview , он находиться во вкладке composite. И если посмотреть исходный код /res/layout/main.xml  должно получиться что-то вроде:
Читать далее

Safari / Используйте поддерживаемые типы содержания и фунции iOS

Оригинал: http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW15

Знайте о функциях которые вы получили бесплатно в Safari на iOS через использование типов контента и элементов которые обединяться для предствление содержания веб-страниц для для небольших портативных устройств с сенсорными экранами. В частности Safari на iOS обрабатывает типы контента такие как видео и PDF файлы отлично от Safari на настольном компьютере. Safari на iOS так же способно предпоказывать типы контента и запускать другие приложения для отображения типа документа если это возможно. Следуя по ссылка такие как номера телефонов ваш веб контент может запускать приложения тоже. Читать далее

Safari / Используйте поддерживаемые Javascript’ом окна и диалоги

Стив Джобс умер , акции Apple ведут себя довольно странно — и не поймешь падают они из-за смерти Джобса или из-за того что iPhone 5 откладывается =) Хотя китайцы уже давно выпустили iPhone 5 =) А вообще специалисты по раскрутке сайтов посчитали бы что я переоптимизировал первый абзац на тему APPLE =) Но сообственно продолжю медленно и верно переводить доку по safari на iOS. Потому что мне ещё не раз придется сталкнуться с iOS и Safari , Джобс как Ленин — он умер но дело его живет.
Читать далее

Safari / Проверка размера вебстраниц

http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW5

Вы можете проверить размер ваших вебстраниц используя Веб Инспектор Safari как описано в Оптимизации время загрузки (“Optimizing Download Time” ) в Инструкция пользователя Safari для веб-разработчиков (“Safari User Guide for Web Developers”) или сохранив вашу веб страницу как веб архив. Полный размер веб архива — размер веб страницы и всех и связанных с ней ресурсов. Следуйте этим шагам что создать веб архив:
1. Выберите Файл -> Сохранить как
2. Введите имя файла в текстовом поле Сохранить как.
3. Выберите Веб-Архив из выпадающего меню Форматы
4. Нажимите сохраниить

На Mac OS X, проверьте размер веб архива используя либо Finder или Terminal. Обычно страницы до 30 Мб прекрасно работают на iOS
Читать далее

Safari / Известные пределы ресурсов в iOS

iOS славиться своими ограничениями , приложения только из App Store, DRM . По этому сегодня очередной перевод про ограничения iOS. И вообще я призываю пользовать Android и Symbian. Из производителей рекомендую например тот же Sony ericsson. У них есть своя ОС для старых телефонов — со своими фишка и андроид для новых телефон. Но все таки есть какое какие ограничение поэтому : разблокировка Sony ericsson

Перевод:

http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW5

Прекрасная производительность ваших веб-страниц на настольном компьютере не является гарантией что такая же производительность будет и на iOS. Помните что iOS использует EDGE(медленная скачивание , долгое время ожидания ответа) , 3G (быстрое скачивание, долгое время ожидания ответа) и wifi (быстрое скачивание, малое время ответа) для соединения с Интернетом. Поэтому вам надо минимизировать размер ваших вебстраниц. Включая не используемые или ненужные изображения, css и Javascript в ваше вебстранице не благоприятно влияют на производительность вашего сайта на iOS
Потому что память доступная на iOS ограничена — существую ограничения которые она может обработать:

  • Максимальны размер для декодирования GIF , PNG и TIFF изображений 3 мегапикселя
  • То есть, убедитесь, что ширина * высоту < = 3 * 1024 * 1024. Обратите внимание, что декодированный размер гораздо больше, чем закодирован размер изображения.
  • Максимальный размер декодируемый размер для JPEG 32 мегапикселя с использованием подвыборки
  • JPEG изображения могут быть до 32 мегапикселей за счет подвыборки, которая позволяет JPEG изображениям для декодирования до размера, который имеет 1 / 16 количества пикселей. JPEG изображений размером больше, чем на 2 мегапикселей с подвыборкой, то есть декодируется в уменьшенном виде. JPEG подвыборки позволяют пользователю просматривать изображения с новейших цифровых камер.
  • Максимальный размер для тега canvas 3 мегапикселя
  • По умолчанию ширина и длина тега canvas 150х300 пикселей
  • Один файл ресурса должен быть меньше 10 Мб
  • Это лимит применим к HTML, CSS , Javascript или непотоковым ресурсам
  • Время выполнение Javascript  лимитровано 10 секундами для каждой точки входа верхнего уровня
  • Если скрипт выполняется более 10 секунд Safari на iOS останавливает выполнение скрипта в случайном месте вашего кода , что может вызвать непредвиденные последствия.
  • Это ограничение накладывается потому что выполнение Javascript’а может блокировать главный поток браузера и пока скрипт работает пользователь не может взаимодействовать с вебстраницей.
  • Читайте Отладка (Debugging http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/DebuggingSafarioniPhoneContent/DebuggingSafarioniPhoneContent.html#//apple_ref/doc/uid/TP40006515-SW1 )  для того чтоб отлаживать javascript на iOS
  • Максимальное число открытых документов одновременно — 8.
  • Заметка для iOS: в iOS 1.1.4 и раньше время выполнения Javascript ограничено 5 секундами и размером в 10 Мб. Так же ограничение на размер тега canvas аналогично Safari для настольных систем.

Заметка для iOS: в iOS 2.2.1 и раньше сумма всех фреймов должна быть меньша 2 мегапикселей — это ширина * длина * количество фремов <=2*1024*1024 . В iOS 3.0 и позднее ограничение действует на один фрейм постоянно.

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

Safari / Использование функции безопасности

Оригинал: http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW5

Safari на всех платформах использует одинаковую SSL реализацию для предоставления безопасного соединения точка-точка. Шифрование предотвращает прослушивание при использование беспроводного соединения через Wi-fi , 3G или EDGE. В Safari поддерживает:

  • SSL 2, SSL 3 и TLS со множеством часто используемых шифров
  • RSA с ключом более 4096
  • HTTPS

Замечание для iOS:Обратите внимание, что Diffie-Hellman протокол, DSA ключи, и самоподписанные сертификаты недоступны в IOS.

Safari / Следуйте хорошим методам веб дизайна.

Перевод: http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW5

Вам следует следовать устоявшимся правилам веб дизайна. В этом раздел рассматривает несколько основных правил которые критичны для Safari. Читайте Разработка веб страниц : Лучшие методы (Web Page Development: Best Practices http://developer.apple.com/internet/webcontent/bestwebdev.html ) более подробного изучения метода дизайна вебстраниц.

Добавляейте DOCTYPE декларацию в ваши HTML файлы
Добавление в начало ваших HTML файлов декларации DOCTYPE говорит браузеру с использование какой специфиации парсить вашу вебстраницу. Смотрите HTML начало (HTML Basic http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/IntroductiontoHTML/IntroductiontoHTML.html#//apple_ref/doc/uid/TP40002080-SW1) для того что знать как это делать .

  • Разделяйте ваш HTML , CSS , и Javascript в разные файлы

    Ваша вебстраницы более модернизируемые если вы разделяете содержимое страницы в различные файлы для разметки, представления и взаимодействия.

  • Используйте хорошо структурированный HTML

    Вы увеличиваете кросс-платформенную совместимость прогоня ваши HTML файлы через валидатор. Вам следует исправить общие проблемы такие как забытые кавычки , забытые закрывающие теги, неправильная вложенность, неправильный регистр букв, напривльный DOCTYPE. Смотрите http://validator.w3.org или используйте валидатор из вашего инструментария веб-разработчика.

  • Будьте браузеро независимыми

    Страйтесь не использовать строку User-Agent для того чтоб выяснить какой браузер сейчас запушен. Вместо этого прочтите Определение Обьектов (Object Detection http://developer.apple.com/internet/webcontent/objectdetection.html ) для того чтоб узнать как определить поддерживает ли браузер конкретный обьект , свойство или метод и прочитайте Определение WebKit на Javascript (http://trac.webkit.org/wiki/DetectingWebKit ) чтоб знать как узнавать конкретные версии WebKit’а. Так же используйте W3C стандартный метод доступа к обьектам на странице — это getElementByID(«elementID»). Только в крайнем случае используйте строку user_agent , как описано в разделе «Использование Safari User_Agent»(Using the Safari User Agent String” http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3) для детектирования Safari на IOS.

Читайте “HTML Начало” (HTML Basics http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/IntroductiontoHTML/IntroductiontoHTML.html#//apple_ref/doc/uid/TP40002080-SW1) и “CSS начало” (CSS Basics http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/IntroductiontoCSS/IntroductiontoCSS.html#//apple_ref/doc/uid/TP40005041-SW1) для того чтоб писать структурированные HTML и добавлять CSS в существующий HTML.

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

Шаблоны или Манипулирование DOM на Jquery.

Есть тест на эту тему: http://jsperf.com/2dom-manipulation-js-templating-vs-programatic-jquery .  Занимется это тест следующим: «What is faster, generating elements on the fly using jQuery appends and generator or using javascript templates.»( Что быстрее , генерация элементов DOM на лету используя jQuery дополнение и генерация используя javascript шаблоны).  И судя по всему быстрее во всех браузерах именно javascript шаблоны. Причем javascript шаблоны — быстрее более чем в 2 раз почти на всех браузерах.