Arm1.ru

Итоги года 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, аудио

Есть Есть Есть в клубе DA:DA 12 декабря 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

  1. Для xib-файлов для View выставить Size: Freeform. Тогда интерфейс на всю высоту экрана растянется. Если надо всё кастомно - то можно выставить для вида размер для 3.5-дюймового экрана или 4-дюймового и программно нужный подставлять.
    Оптимизация ios-приложения для экрана iPhone 5
  2. Самое главное - добавить стартовую картинку для 4-дюймового экрана. Без неё апп почему-то думает, что экран маленький. И да, если раньше никакой стартовой картинки не использовалось - теперь походу придётся.
    Оптимизация ios-приложения для экрана iPhone 5

Как оно со 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 comments

Alai 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