Итоги года 2012
Год был безумный. Насыщенный. Со всеми вытекающими.
comment commentsПро экранирование URL'ов изображений с русскими именами в Objective-C
Начало начальство у нас вставлять в новости у нас на портале изображения, названные русскими именами, вроде Фото-Ресторана.jpg.
Картинки из новостей у нас показываются в приложении, соответственно по этим URL'ам они в приложение и тянутся.
Соответственно приходит в приложение URL уже закодированный, например:
http://allcafe.ru/s/pic/news/!_2012/2012_12/%D0%A0%D0%B5%D1%81%D1%82%D0%BE%D1%80%D0%B0%D0%BD-Graf-in-%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3-%D0%B7%D0%B8%D0%BC%D0%BD%D1%8F%D1%8F-%D1%82%D0%B5%D1%80%D1%80%D0%B0%D1%81%D0%B0.jpg
В приложении используется класс AsynchronousUIImage, найденный мною около года назад в интернетах. Класс просто асинхронно загружает картинку с помощью NSURLConnection.
- (void)loadImageFromURL:(NSString *)anUrl {
anUrl = [anUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:anUrl]
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:30.0
];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
Собственно, в stringByAddingPercentEscapesUsingEncoding оказался затык. Т.к. URL'ы приходят уже экранированными, то, похоже, происходило повторное экранирование и картинка просто не загружалась. Ну а если не прописан из протокола NSURLConnectionDelegate метод connection:didFailWithError: - то это чревато падением приложения, с чем я и столкнулся.
Итог ковыряний забавен, если есть URL'ы с кириллицей - то экранировать их надо или на сервере перед отправкой в клиент, или в клиенте. Если экранировать и там, и там - то не работает. Если нигде не экранировать - то тоже не работает :)
Благо я справился на серверной стороне ничего не сломав и избежав срочного обновления клиента. На Android, кстати, такой проблемы нет.
comment commentsЕсть Есть Есть в клубе DA:DA 14 декабря 2012, аудио
Записал в 3-й раз концерт Есть Есть Есть.
Презентовали альбом Сатана в отпуске.
Фото для обложки щёлкнула Даша.
Трэк-лист:
01. Интро
02. Гомер
03. День Победы
04. Бродский night, Святки skit
05. Святки
06. Плёнка
07. Капитошки
08. Журналистовцы
09. Уже
10. Поэма героика
11. Сатана в отпуске
12. Весна
13. Резюме
14. Лиссабон
15. Палитра
16. Утка-маляр
17. Осень
Скачать (mp3, 320 kbps, 230 mb): Narod | Rutracker
comment commentsОптимизация iOS-приложения для экрана iPhone 5
-
Для xib-файлов для View выставить Size: Freeform. Тогда интерфейс на всю высоту экрана растянется. Если надо всё кастомно - то можно выставить для вида размер для 3.5-дюймового экрана или 4-дюймового и программно нужный подставлять.
-
Самое главное - добавить стартовую картинку для 4-дюймового экрана. Без неё апп почему-то думает, что экран маленький. И да, если раньше никакой стартовой картинки не использовалось - теперь походу придётся.
Как оно со Storyboard пока не знаю. И ещё мелкая полезность - если в коде надо определить - широкий ли экран или обычный, то можно а prefix.pch задефайнить:
#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
и проверять в коде:
if ( IS_WIDESCREEN == YES ) {
// юзать интерфейс для 4 дюймов
} else {
// юзать интерфейс для 3.5 дюймов
}
comment
comments
Есть Есть Есть - новый альбом «Сатана в отпуске»
Сатана в отпуске by Есть Есть Есть
Мои любимые Есть Есть Есть выпустили новый альбом. Ура!
И не забудьте купить.
comment commentsAlai Oli в Авроре, 1 декабря 2012, видео
Снял ещё небольшое видео за сценой, окончание концерта. Скорее так, на память, т.к. концерт был классный.
comment comments
FCKEditor и новый Firefox
FCKEditor поломался в новом Firefox при вставке его на стороне PHP. Проблема, как оказалось, в проверке версии браузера.
// FCKeditor\fckeditor_php5.php line around 57-60
else if ( strpos($sAgent, 'Gecko/') !== false )
{
$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
/* return ($iVersion >= 20030210) ; */ // should be replaced with:
return ($iVersion >= 10) ;
}
comment
comments