PHPfilesDataStorage. NoSQL-база данных на файлах

Позавчера пришла в голову идея написать для phpMyEngine файловый вариант хранения данных.
Ведь не всегда нужна большая БД (Mongo например), особенно на сайтах-визитках с 3-10 страницами.
В итоге родился отдельный продукт <filesDataStorage>, чем-то напоминающий MongoDB :)

Страничка на GitHub — github.com/xmcdbx/filesDataStorage

Читать дальше
  • +5
  • xmcdbx
  • 26 октября 2010, 12:33

Разработка ПОтопик-ссылка [pure C] Преобразование целого числа в строку

Сегодня на stackoverflow.com был интересный вопрос: I recently read a sample job interview question: Write a function to convert an integer to a string. Assume you do not have access to library functions i.e., itoa(), etc… How would you go about this? Как же нам все таки преобразовать int в char* без использования каких-либо сторонних библиотек в том числе и stdlib?

WineОптимизируем работу полноэкранных игр в Wine

Итак
wine game.exe
поехали…

Примерно так чаще всего пользователи запускают win-игры с помощью wine.
А можно и по другому… Читать дальше

The GTK+ Projectтопик-ссылка gtk+ Печать изображения

В этом посте хоелось бы рассказать как с помощью gtk+ printing api можно распечатать какое-либо изображение. Для работы с средствами печати в gtk+-2.0 существует достаточно удобное api, называемое gtk+ printing api. Далее мы рассмотрим как с помощью данного api отправить на печать изображение.

Блог им. mih-beaverNetboot.me - сетевая установка систем и запуск LiveCD.

Наткнулся на забавный сервис по сетевой установке систем.

Для работы необходимо загрузить небольшой установочный образ, и выбрать из меню нужную систему, LiveCD или образ для тестирования и восстановления системы. Доступны такие Linux дистрибутивы как Fedora, Debian, OpenSUSE, Ubuntu, кроме того есть FreeBSB 7.2. Также есть возможность загрузить образы с boot.kernel.org — там достаточно большой выбор систем.

Под катом несколько картинок.
Читать дальше

Блог им. 4ybakaСшиваем панорамы

Сам я фотографией не особо интересуюсь, уж извините. Однако приходилось пару раз соединять кадры для панорамы… Поэтому о том, насколько нынче просто сшивать несколько фотографий в одну — ни могу не рассказать. Речь пойдет о программе Hugin, которая доступна для Windows, Linux и MacOS. То, что я не особо дружу с фотоаппаратом может быть даже и плюсом, потому как если у меня вышел такой результат на простой мыльнице (Canon A630), то значит ее может использовать любой любитель.
Читать дальше

Блог им. JenyayOutwiker

Всем привет.

Решил тоже поделитсья своей опенсорсной программой. Долгое время я подбирал для себя программу для хранения заметок в виде дерева. Программ таких уйма, но в каждой что-то мне не нравилось. Основными пожеланиями в таких программах было: чтобы они хранили заметки в виде директорий на диске, а не в одном файле базы и возможность прикрепления многих файлов к каждой странице. И вот три месяца назад начал делать свою программу — OutWiker. Сейчас она имеет версию 1.0 alpha 3.

Читать дальше

Блог им. FloppyБесплатные программы для восстановления информации с отформатированных разделов.

Дело в том, что когда юзер удаляет файл/папку/etc стирается лишь информация о положении файла на носителе.

Я бы эту статью и не написал, если-бы не ситуация, которая со мной приключилась:
Из-за неакуратности (даже не спрашивайте почему и как—стыдно) я отформатировал локальный диск.

Читать дальше

AndroidПодборка open source приложений для Android.

Android сам построен на программном обеспечении с открытым исходным кодом. Хотя многие приложения в Market'е свободны, зачастую это не видно. Иногда разработчик указывает это в описании, но к сожалению не всегда.

Конечно здесь описаны не все open source программы: я не могу знать все, а про что-то мог просто и забыть. Все приложения есть на маркете.
Читать дальше

ПаранойяО шифровании разделов винчестера с использованием ключа на USB-флешке на *ubuntu и debian

В установщике alternate-дистрибутива *ubuntu и debian есть возможность зашифровать раздел, но только паролем.
В инете я нашёл статью о шифровании с возможностью хранить ключ на флешке, но, к сожалению, с таким шифрованием система неправильно выходила из спящего режима — она просто запускалась с нуля, а не просыпалась в старое состояние.
В этой статье я расскажу, как сделать так, чтобы и шифрование было с ключом на USB-флешке, и спящий режим (hibernate) оставался работоспособным.
Неправильный выход из спящего режима происходил потому, что подключение swap-раздела происходило на слишком позднем этапе загрузки (а именно в swap сохраняется состояние системы при уходе в спящий режим). А слишком позднее подключение swap-раздела в свою очередь происходило поздно потому, что этот раздел зашифрован (а это обязательно, т.к. в памяти лежат ключи к подключённым зашифрованным разделам, и они могут попасть в swap, соответственно его тоже нужно шифровать).

  1. Итак, я начал с установки системы с alternate-диска ubuntu с обычным шифрованием (по паролю). Для debian тут подойдёт его стандартный установщик, т.к. он тот же, что и у ubuntu в alternate-диске.
    Я сделал шифрованный раздел, в нём LVM, а в нём раздел для /home и swap. Можно шифровать хоть корень, главное, чтобы был отдельный раздел /boot.
    На этом этапе установщик настраивает всё для работы шифрования и спящего режима.
  2. Делаем файл с ключом:
    # dd if=/dev/random of=/путь/к/файлу/с/ключом/на/флешке bs=1 count=256<br />
    Кстати, на флешке может быть только EXT3 или FAT. Другие ФС скрипт, который достаёт ключи на этапе загрузки (п7), не понимает.
    Ключу лучше назначить права 0400, иначе будет ругаться на безопасность.
  3. После этого в рабочей системе меняем парольный ключ на файловый с флешки:
    # cryptsetup luksAddKey /dev/наш_шифрованный_раздел /путь/к/файлу/с/ключом/на/флешке
  4. Проверяем количество ключей нашего раздела:
    # cryptsetup luksDump /dev/sda2<br />
    Должно быть два key slot'а, которые «ENABLED». Нулевой — это старый с паролем, первый — это наш новый с ключом в файле.
  5. Удаляем старый ключ:
    # cryptsetup --key-file /путь/к/файлу/с/ключом/на/флешке luksKillSlot /dev/наш_шифрованный_раздел 0
  6. Проверяем так же, как в п4, но теперь должен остаться только один key slot, который «ENABLED».
    Собственно сам ключ мы сменили, теперь нужно донастроить систему так, чтобы всё монтировалось как надо и спящий режим работал.
  7. В /etc/crypttab меняем запись о нашем зашифрованном разделе:
    Вместо none пишем путь к файлу ключа в таком вот виде: :
    Путь к устройству флешки берём так: идём /dev/disk/by-uuid/ и видим кучу ссылок с длинными буквоцифренными именами. Все эти ссылки ссылаются на винчестеры/флешки/.., и их разделы, которые есть в нашей системе. А имена их — это UUID'ы (типа уникального серийного номера). В результате путь вида "/dev/disk/by-uuid/7a5f666f-f018-4c29-b5b6-5ebecc777bf8" будет всегда указывать на один и тот же раздел моей флешки куда бы я её не воткнул. А чтобы злоумышленник смог её подменить, ему нужно, чтобы раздел на его флешке имел точно такой же UUID (правда, это не сложно). Если вы хотите, чтобы ваша флешка идентифицировалась не по UUID, а, например, по label раздела, тогда вам в /dev/disk/by-label. А если по имени устройства (например: ata-Hitachi_HTS541616J9AT00_SB0442SJEGB1RH), то в /dev/disk/by-id/.
    В результате должен получиться примерно такой путь:
    /dev/disk/by-uuid/7a5f666f-f018-4c29-b5b6-5ebecc777bf8:/keys/my.key<br />
    После опции «luks» добавляем путь к скрипту, который при загрузке в initramfs будет доставать наш ключ: keyscript=/lib/cryptsetup/scripts/passdev.
    В результате получим что-то вроде этого:
    sda2_crypt /dev/disk/by-uuid/731993e3-acd4-4ce8-9a5b-ccf8e5d074ef /dev/disk/by-uuid/7a5f666f-f018-4c29-b5b6-5ebecc777bf8:/keys/my.key luks,keyscript=/lib/cryptsetup/scripts/passdev
  8. Обновляем initramfs командой:
    # update-initramfs -u
  9. Перезагружаемся и наблюдаем, как всё монтируется автоматом при наличии флешки и не показывает даже сообщений об ошибке при её отсутствии (не знаю почему, но, ИМХО, так даже лучше =)).

UPD:
после примерно 4-х месяцев использования докладываю: всё работает, ничего не сломалось, остаётся только одна проблема: относительно большая нагрузка от шифрования — при интенсивном чтении/записи до трети моего celeron'а 1.4 ГГц.
На процессорах с аппаратной поддержкой aes (это Core2Duo и более поздние процы) вообще не заметно нагрузки от шифрования диска.

UPD: на хабре выложили очень похожую схему шифрования, но с целью шифровать сервер. Ценная мысль — ключ от сервера лучше всего держать где-то в интернетах, а если сервер заберут, ключ там можно испортить/удалить. Правда, не решена проблема с нагрузкой от шифрования, что для серверов весьма критично чаще всего.

UPD: systemd не умеет passdev, поэтому при обновлении debian до 8, надо остаться на sysvinit (как это сделать написано в официальной информации о выпуске), а при чистой установке, соответственно, перейти с systemd на sysv.
  • +7
  • Q2W
  • 23 января 2010, 14:38