llivejo: (Default)
2008-04-09 11:21 am

Google App Engine

[livejournal.com profile] avva написал, что Гугл открыл App Engine — инфраструктуру для веб-приложений. Что это значит?

Допустим, вас, как веб-программиста, интересует только ваше веб-приложение. Но для того чтобы оно работало, приходится использовать — плюс настраивать и обслуживать! — кучу других вещей: вебсервер, SQL-сервер, дальше программистское )
llivejo: (Default)
2007-03-14 06:27 pm

Bin packing problem (0)

Терпел я, терпел, но похоже эта штуковина переросла тему одного поста. Итак, встречайте:

Bin packing problem - Intro

Понадобилось мне забэкапить на DVD-болванки залежи фото, музыки, фильмов и прочей фигни на своем файл-сервере. Больше шести сотен гигабайт, между прочим. Место занимает, а стереть жалко. Но хотя бы с RAID5 на незарезервированные (JBOD) разделы перенести можно будет при наличии бэкапов, а часть и поудалять насовсем. Болванок накупил, благо что те по 15 рублей стали.

А тут трабл - как бэкапить? Выделять файлы/каталоги кучками, приблизительно влазящими на болванки, мне решительно не хотелось. Не то чтобы я пожалел немножечко денюжков™ на лишние DVD-R, просто делать это руками 670/4.7 = 143 раза посчитал неразумным и недостойным программиста занятием.

Админ бы нашел готовую программу для бэкапов, а программист написал бы свою. Ура, я программист! Ведь я могу написать python-скрипт для автоматической выборки групп файлов и генерации ISO-образов, чтобы потом только болванки в резак толкать...

Сказано - сделано. В процессе написания программы возник вопрос: а по какому, собственно, алгоритму надо выбирать файлы, чтобы они плотно улеглись в болванки, дабы не пропадало зря свободное место?.. Ну, думаю, можно наверное просто решить проблему "в лоб" - тупо попробовать все возможные перестановки файлов и выбрать те, где "хвосты" меньше. Фиг-то там: число возможных перестановок оказалось числом Стирлинга второго рода, полный перебор оказался неподъемной задачей даже для небольшого числа файлов/каталогов.

Ладно, думаю. Полез глубже - а проблема-то давно сформулирована. Встречайте: Bin packing problem (по-русски Задача об упаковке в контейнеры). NP-hard, между прочим. Однако придуманы неплохие эвристические алгоритмы...

Продолжение следует (про чтение научных трудов, про FirstFit и BestFit, про генетические алгоритмы и прочую лабуду)
llivejo: (Default)
2006-10-04 02:03 pm
Entry tags:

всё уже сделано до нас

Нашел прекрасный питоновский модуль для обхода каталогов: path.
Шаманские пляски с os.walk упрощаются многократно:
                                                                      
import path
d = path.path('.')
for name in d.walkfiles('*.tmp'):
    name.remove()
Это я файловое хранилище из koi8-r в utf8 перевожу. Universal Encoding Detector тоже очень пригодился - кое-что в win-1251 попадается. Скриптик попозже выложу.
llivejo: (Default)
2006-06-01 09:16 pm
Entry tags:

война с программами

Согласно RFC 3986, все не-ASCII-составляющие URI должны приводиться к UTF-8 и затем перекодироваться в допустимые, путем преобразования всего неформатного в буквы-байты с процентами. А так как lj tags являются составляющими URI, то их нужно преобразовывать.

Вот, пытаюсь научить мой любимый LJ-клиент делать это для русских тегов…