Pull to refresh
36
0
Send message

Python backup, часть 3

Reading time1 min
Views1.1K
Третья версия скрипта-бэкапа на питоне :) На этот раз архив с файлами для бэкапа не создаётся. Вместо этого файлы с одного места (исходные папки) перемещаются в другое место (папки с бэкапами) как есть. Для реальной работы, когда в день может поменяться всего пара десятков файлов, это гораздо выгоднее. DropBox будет загружать лишь эти несколько файлов, вместо громадного архива.

Вообще-то мне кажется что что-то такое уже должно существовать, тем более для линукса :) С другой стороны бэкап был написан не потому что такого ещё нет, а что бы лучше узнать питон.

Теперь алгоритм такой. Берём исходную папку («лево»), создаём папку в выходной папке («право»), копируем слева-направо только изменившиеся папки/файлы, удалённые слева папки/файлы удаляем и справа. При этом справа будет создана папка, отображающая полный путь до папки слева.

Например, исходная папка d:\projects\python, папка назначения — d:\dropbox\backup, тогда реальная папка назначения будет такой — d:\dropbox\backup\d_\projects\python.

Всё остальное осталось от предыдущих версий — файлы-списки toBackup.lst, ignore.lst, extra.lst.

Скрипт вот: pastebin.ca/1590195

Скриншотик:
Free Image Hosting at www.ImageShack.us
Total votes 5: ↑4 and ↓1+3
Comments4

My escape(html)

Reading time4 min
Views1.3K
Цель поста — покритикуйте.

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

Замечание. В моём блоге в базе всегда хранится никак не обработанный оригинал пользовательского ввода. Задача функции — сделать из этого ввода html, пригодный для отображения. В простейшем случае функция может вызываться во время отображении контента (в шаблоне или view). Для улучшения производительности можно завести отдельное поле в базе, которое будет результатом работы функции экранирования, и будет обновляться во время обновления контента.

Итак, философия функци:
Читать дальше →
Total votes 8: ↑5 and ↓3+2
Comments7

Magento, подписка на новости во время чекаута

Reading time6 min
Views1.8K
Оу, оказывается здесь даже есть целый один пост про разработку под Magento. Мне тоже есть что сказать. Интересно, будет ли это кому-нибудь интересно…

Итак, задача — добавить галочку «Получать новости» к одному из шагов чекаута (checkout — «проход через кассу»).


Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments10

Простой самодельный бэкап данных 2 (Python + DropBox)

Reading time5 min
Views1.6K
Новая версия скрипта для бэкапа (оригинал). Или другая версия…

Логика работы с файлами-списками не поменялась. Поменялся только параметр скрипта — теперь это имя архива без расширения, скрипт сам добавит .tar.gz.

Новое:
  • Создание архива переместилось из внешнего архиватора внутрь скрипта. Создаётся tar.gz архив.
  • Все пути теперь системо-зависимы, т.е. скрипт должен работать на линуксах тоже

Кроме приятного нового, повились неприятный минус — скрипт стал жрать кучу памяти.

Сделать сжатый архив с помощью модуля tarfile не вышло. Архив создаётся и сжимается, но внтури архива пути почему-то съезжают.

Т.е. нужно создать архив d:\dropbox\my dropbox\backup\backup.tar.gz, он там появляется. Но если открыть этот gz архив, tar архив будет глубоко внутри по пути dropbox\my dropbox\backup\backup.tar. Т.е. полный путь до данных получается такой: d:\dropbox\my dropbox\backup\backup.tar.gz\dropbox\my dropbox\backup\backup.tar\.... В принципе с этим можно жить, но некрасиво…

Поэтому сделал по-другому — сначала создаётся tar архив без сжатия со всеми файлами, затем он сжимается. Вот в этом месте функции, сжимающей архив, он, архив, передаётся целиком, т.е. весь файл весом несколько сот Мб засасывается в память.

Надо бы ещё покопать в эту сторону и найти лучшее решение…
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments3

Джаббер чат на веб-странице

Reading time3 min
Views32K
Прочитав пост на хабре про онлайн чат для сайта через джаббер, мне стало интересно — а как оно работает и как такое можно сделать самому, без готовых приложений. В итоге у меня получилась очень простая заготовка «чата для сайта через джаббер». К сожалению у меня нет выделенного сервера с линуксом для тестов, поэтому был использован локальный компьютер с Win7 (и сервером Apache).

Как это вообще должно работать: пользователь заходит на сайт, и видит окошко, куда можно разговаривать. После того как пользователь послал сообщение, оно прилетает на указанный джаббер аккаунт. Получатель этого сообщения может написать ответ и оно придёт посетителю сайта.
Что для этого нужно:
  • Jabber сервер, можно публичный, можно локальный. Я выбрал Openfire и установил его локально. Сервер должен поддерживать Bosh — XEP-0124: Bidirectional-streams Over Synchronous HTTP, об этом чуть позже.
  • JS библиотека, которая будет реализовывать джаббер-клиент на сайте. Я взял Strophe. Это достаточно низкоуровневая библиотека, в которой нет функций типа «ПослатьСообщение(Куда, Текст)». Для достижения нужных действий нужно вручную составлять команды джаббер серверу (в XML). Удобные средства для создания XML в Strophe есть :)
Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments19

Простой самодельный бэкап данных (Python + DropBox)

Reading time6 min
Views10K
Бэкапы я не делал давно. Было лень, да и данные я не терял уже несколько лет. Но недавно задумался об этом и решил-таки сделать что-то такое, что резервно сохраняло бы то, что не очень хочется потерять. Просто что бы скучно не было, и немного попрактиковаться.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments8

Information

Rating
Does not participate
Location
Иркутская обл., Россия
Date of birth
Registered
Activity