Смерть Symbian :(

Захожу я сегодня на Symbian Developer, а там! Вобщем, похоже, Нокия решила окончательно убить Symbian, т.к. проект закрывается 17 декабря сего года. Все что на нем есть сейчас можно будет заказать на CD. Тем не менее, на всякий случай, я исходники Symbian-a заначил.. Мало ли?

Да, Symbian SDK остается на сайте Nokia Developer, хотя основной акцент делается все же на QT SDK.

Но все равно грустно, единственная нормальная ОС для мобильных девайсов и тут такое. Эхх

Автосинхронизация с iSync

iSync – замечательное приложение позволяющее синхронизировать практически любой девайс с календарем и адресной книгой на локальном компьютере. По большому счету, у это приложения есть 2 недостатка причем если один из них обойти никак нельзя, то второй недостаток довольно легко обходится.
Во-первых, iSync работает только по Bluetooth. Похоже что тут ничего поделать нельзя, как это не печально. Во-вторых, iSync не умеет запускать синхронизацию по расписанию, но вот эта проблема решается довольно просто.
Заставить iSync синхронизировать календари и контакты самостоятельно можно 2-мя способами. Первый вариант это UNIX-way. Надо не так уж и много, написать небольшой AppleScript и задать расписание в cron.
Создаем iSyncAuto.scpt следующего содержания:

tell application "Finder"
set iSyncRunning to (number of items in (processes whose name is "iSync") is greater than 0)
tell application "iSync" to synchronize
tell application "iSync"
repeat while (syncing is true)
end repeat
if iSyncRunning is not true then
quit
end if
end tell

И добавляем в cton задачу:

crontab -e

* */6 * * * osascript path_to_script/iSyncAuto.scpt

Чтоб сильно не грузить батарею запускаем синхронизацию каждый 6-й час.

Но это сложный, не userfriendly и не Mac-way Теперь тоже самое, но по-Маковски.
Идем на сайт Apple и качаем приложение iSyncIt. Устанавливаем, запускаем, радуемся

О мобильных девайсах и глубине резкости

Убедившись в том что Андроид в целом и Motorola Milestone в частности просто говно несусветное, я задумался о возвращении на по-сути единственную приличную платформу для мобильных телефонов – Symbian. Как раз в конце прошлой недели я продал свой говнодроид и стал искать на что бы его заменить. iPhone отпал сразу, так как платить больше 1К долларов за телефон по моему мнению глупо, да и iOS на телефоне меня мягко говоря не вдохновляла.

Поиск вышел долгим и, похоже, я наконец-то решился – Nokia N8. Но тут речь даже не о самом телефоне, а том, что меня в нем удивило. Судя по тестовым снимкам из обзора на Mobile-review, Carl Zeiss просто творит чудеса! На снимках сделанных смартфоном(!!!) есть хоть какая-то, но глубина резкости!

Да и сам обзор реально доставляет, т.к. по мнению того идиота что его написал, наличие глубины резкости (“детализация предметов вокруг”, в оригинальном исполнении) это минус. И в тоже время немного грустно, ведь такие же идиоты пишут про политику, экономику, культуру…

Как подружить NSColor и NSUserDefaultsController

Почему-то, скорее всего из-за не внимательного изучения документации Apple, я был уверен что без каких-то особых приседаний не возможно сохранить NSColor в NSUserDefaultsController. Ну да, у NSUserDefaultsController есть поддержка только ограниченного количества количества типов, и на просторах интернета можно найти кучу решений по сохранению неподдерживаемых типов, таких как NSColor. Например сохранить в виде NSInteger или, еще более интересный вариант – в виде строки. В то же время, есть такой замечательный трансформер (как эту штуку правильно назвать по-русски?), NSUnarchiveFromData, который позволяет преобразовать любой тип, поддерживающий протокол NSCoding, в тип NSData, который в свою очередь может быть сохранен по средствам NSUserDefaultsController.
Например, для того чтобы привязать объект NSColorWell к NSUserDefaultsController

Даже код писать не надо:

private методы в Objective-C

Когда я только начал работать с Objective-C, мне очень не нравился тот факт, что в этом языке нет возможности объявить какой-либо метод класса приватным. Это действительно доставляет большое количество неудобств, т.к. пользователю класса приходится разбираться с большим количеством методов используемых для внутренних целей класса и совершенно ему не нужных. Continue reading