[Перевод] Шифрование SQLite с помощью SQLCipher (iOS/Mac)

January 22nd, 2011 No comments

Оригинал на английском (disclaimer: перевод вольный)

SQLite является самым распространенным средством  для хранения данных на iPhone со стабильным API и хорошей документацией. Очевидно, что не хотелось бы мешать код приложения с собственно шифрованием, а делать это как можно прозрачней.

Такую функциональность предоставляют SQLCipher и OpenSSL. Оба проекта замечательны своим открытым исходным кодом, а также поддержкой Mac/Windows/Linux.

Итак, что нам потребуется…

Read more…

Акселерометр в симуляторе

October 21st, 2010 No comments

Использование акселерометра в симуляторе http://builtby.me/2010/10/use-the-accelerometer-in-the-iphone-simulator/ Для отладки очень полезно

iOS Dev Promises

June 11th, 2010 No comments

Подробное ревью что же вкусного ждет разработчиков в iOS4

Categories: asides Tags: ,

Старые баги

June 10th, 2010 No comments

Выкладывая расширение, столкнулся со странной проблемой: несмотря на то, что был прописан правильный Content-Type, Safari открывал файл в текстовом виде. Что конечно же было не комильфо.

В процессе отладки выяснилось, что это все происходило из-за того, что по счастливой случайности переход строки в заголовках попадал на 256-ой или 257-ой баг. И сервер в этом случае добавлял дополнительный заголовок “X-Pad: avoid browser bug”.

Оказалось, что сервер обходил баг Netscape с версии 2.0 и до 4.0b2. И сей фикс со стороны сервера существует с 21 апреля 1997 года.

Каким образом этот невинный заголовок портил жизнь Safari я не знаю, но сама ситуация позабавила – современный браузер некорректно работал с файлом из-за серверного фикса бага в другом браузере 13 лет назад :)

Победить не удалось, пришлось обходить стороной – менять размер заголовков переименовыванием файла :)

Английская версия истории бага

Categories: Uncategorized Tags: , , ,

Visualize Us Safari Extension

June 10th, 2010 No comments

С выходом API для Safari свершилось моими же руками то, о чем так давно мечтал: постинг в visualize.us из контекстного меню.

Расширение и пару слов о нем (англ.)

Adium & iTerm 64 bit

December 3rd, 2009 No comments

В рамках постепенного переползания на 64 бита самодельные билды:
iTerm
Adium 1.5

Categories: software Tags: , , ,

PIL (Python Imaging) в Snow Leopard

October 15th, 2009 No comments

После перехода на Snow Leopard в Django перестали работать ImageField’ы. Причина оказалась в неработоспособном PIL’е, а точней в его привязке к libjpeg.
(типичное сообщение об ошибке:
ImportError: dlopen(/Library/Python/2.6/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
)

Решение проблемы частично описано здесь (english)
качаем отсюда:

tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
./configure --enable-shared --enable-static
make
sudo make install

Однако мне “повезло” и я оказался в числе тех, у кого это сразу не заработало – причина была в “зоопарке” установленных libjpeg’ов.
Итак, делаем следующее:
1. Смотрим все зависимости _imaging:
otool -L /Library/Python/2.6/site-packages/PIL/_imaging.so
2. Получаем что-то вроде:
/Library/Python/2.6/site-packages/PIL/_imaging.so:
/sw/lib/libjpeg.62.dylib (compatibility version 63.0.0, current version 63.0.0)

Дальше можно решить двумя способами:
а) удалить “зоопарковую” библиотеку (в моем случае – из /sw/lib и пересобрать все заново)
б) если удалять – не вариант, то можно перелинковать питоновский _imaging на правильную, свежесобраную библиотеку:
install_name_tool -change /sw/lib/libjpeg.62.dylib /usr/local/lib/libjpeg.62.dylib _imaging.so

После этого все должно работать :)

Categories: development Tags: , , ,

Python и полнотекстовый поиск (FTS) в sqlite

August 10th, 2009 No comments

Задача: получить поиск по всему тексту в питоне.

Качаем последний sqlite-amalgamation (основное отличие – вся библиотека в одном файле)
curl -O http://www.sqlite.org/sqlite-amalgamation-3.6.17.tar.gz

Распаковываем:
tar xzf sqlite-amalgamation-3.6.17.tar.gz

Переходим в sqlite-3.6.17:
Конфигурируем с включенным FTS3:
CFLAGS="-Os -DSQLITE_ENABLE_FTS3=1" ./configure

Билдим и устанавливаем
make
sudo make install

Проблема: нельзя заменить системную, т.к. у нас нет 64битного билда и поэтому некоторые программы, расчитывающие на системную будут вылетать.

Решение: используем свою собственную библиотеку только для питона:

Переходим в папку питона:
cd /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/

Изменяем линки в загрузочной библиотеке:
install_name_tool -change /usr/lib/libsqlite3.0.dylib /usr/local/lib/libsqlite3.dylib _sqlite3.so

Запускаем питон и проверяем:
python
Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.6.17'

Categories: development Tags: , ,