29 окт. 2012 г.

Objective-C. Макрос-оболочка к NSLog

Последнее время использую такой макрос, оборачивающий штатный NSLog в Objective-C:
#ifndef DLog
#ifdef DEBUG
#define DLog(_format_, ...) NSLog([NSString stringWithFormat:@"%s: %@", __PRETTY_FUNCTION__, (_format_)], ## __VA_ARGS__)
#else
#define DLog(_format_, ...)
#endif
#endif
Он автоматом добавляет к строке лога имя функции и номер строки в исходнике. Ну и заодно можно отключить логи одним андефайном. Заменить, например #ifdef DEBUG на #ifdef DEBUG1

UPD 2015-01-07:
Макрос постепенно перерос вот в такое:

#ifdef DEBUG
#define DLog( s, ... ) NSLog( @"%@%s:(%d)> %@", [[self class] description], __PRETTY_FUNCTION__ , __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#define DAssert(A, B, ...) NSAssert(A, B, ##__VA_ARGS__);
#define DLogv( var ) NSLog( @"%@%s:(%d)> "# var "=%@", [[self class] description], __PRETTY_FUNCTION__ , __LINE__, var ] )
#elif DEBUG_PROD
#define DLog( s, ... ) NSLog( @"%@%s:(%d)> %@", [[self class] description], __PRETTY_FUNCTION__ , __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#define DLogv( var ) NSLog( @"%@%s:(%d)> "# var "=%@", [[self class] description], __PRETTY_FUNCTION__ , __LINE__, var ] )
#define DAssert(A, B, ...) NSAssert(A, B, ##__VA_ARGS__);
#else
#define DLog( s, ... )
#define DAssert(...)
#define DLogv(...)
#endif
Интересно отметить: наткнулся в сети на вопрос почему именно _DLog_, а не, скажем, ALog, MLog?.. Оказывается, что в используемых на данный момент в Xcode фреймворках нет классов, начинающихся с DL. Потому это относительно безопасный префикс для избежания перекрытия классов.

18 окт. 2012 г.

Пробуемся в скорочтении

Около года назад я прошел курс скорочтения в центре развития Тетра в Одессе. Не скажу, чтобы я начал читать по тысяче слов в минуту, но скорость переваривания печатного текста возросла заметно. Беглый пробег по тексту с выхватыванием основных тезисов выполняется легко. Быстрее стал режим быстрого чтения, когда я читаю все слова, но не задумываюсь о них в момент прочтения. После просмотра слов (бычно это 1-2 средних абзаца) возникает картина, описанная в этих абзацах. Формальная скорость чтения выросла вдвое. После меня этот курс прошли мои сын и жена.

И вот теперь мы с супругой решили открыть свой семейный клуб, в котором тоже будем преподавать этот и другие курсы сходной тематики. Но уже в Киеве. Название придумали "Семейный клуб "САПИ"". Сайт озаглавили соответсвующе :) - www.sapi.com.ua.

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

Супруга кроме всего прочего увлекается методикой РейКи. Не то, чтобы философия, но своеобразный способ смотреть на мир и на себя в этом мире. Очень полезная штука для того, кто хочет разобраться в себе, как-то систематизировать свои отношения со вселенной и соседним подъездом.

Так что, будете у нас в Киеве - милости просим :) Угостим киевским тортом.

12 окт. 2012 г.

Онлайн ковертер RGB-CMYK

Понадобилось конвертировать растровую картинку из RGB в CMYK. Это нужно для типографской печати. На маке ничего для этого установленного нет. Нашелся онлайн конвертер. С выбором кучи профилей. Онлайн - в массы! :)

11 окт. 2012 г.

Однострочники: Быстрое криптование файлов в *x-системах


Напоминалка. Быстрое (рас)криптование файла из командной строки в системах, с установленным пакетом OpenSSL (практически все *x-системы).
#криптование
openssl enc -in <input_file_name> -out <output_file_name> -blowfish

#раскриптование
openssl enc -d -in <input_file_name> -out <output_file_name> -blowfish 
Для Mac OS, в частности Yosemite:
#криптование
openssl <cyphername, i.e. bf> -in <input_file_name> -out <output_file_name>

#раскриптование
openssl <cyphername, i.e. bf> -d -in <input_file_name> -out <output_file_name>

2 окт. 2012 г.

Free-lance.ru закручивает гайки

Сегодня пришла новость с free-lance.ru о том, что начиная со 2 октября сего года вся работа на ресурсе ведется только посредством инструмента СБР (безопасная сделка). В связи с этим любой обмен контактными данными на сайте запрещен.

Это очередная гайка, которой сервис ограничивает свободу своих пользователей. До этого были 3 бесплатных ответа на проект в месяц. До этого - еще что-то. Будет ли кто-то использовать после таких драконовских мер этот сервис - не знаю. Но одним пользователем у них стало меньше. Это точно.

Безопасная сделка совершенно неудобна для независимого разработчика, принося единственную выгоду (достаточно сомнительную) в том, что сервис гарантирует арбитраж между заказчиком и работником балдой. При этом от той же суммы сделки на руки разработчик получит процентов на 60 меньше - налог на то, налог на сё, комиссия сервиса... Да при этом еще и нужно зняться бумажной волокитой с оформлениями/регистрациями в России. Даже если фрилансер сидит в Молдове где-нибудь.

Но свято место пусто не бывает. Значит на оттекающих пользователях поднимется какой-то другой сервис.