All streams
Search
Write a publication
Pull to refresh
3
0

User

Send message
$crc = hash('md5', $content, true);

if (!isset($this->catalog[$crc . $stat['size']])) { // Если нет такого блока, то сохраняем

Плакала моя коллекция md5-коллизий :-(

А если серьёзно, по-моему дьявол-то в деталях. Остальные форматы показывают результаты хуже, потому что им-то еще разжать может потребоваться, а не только посчитать.

Корректнее было бы сравнивать не с ZIP и RAR, а с TAR.GZ, ведь вы по сути его и придумали.

Прогнал tar -z и sxb_test на двух вариантах — один синтетический: 10 мб /dev/urandom + симлинк на него, второй — wwwroot сайта размером в гиг.
На обоих тестах tar выиграл

А именно...
## Первый тест

vos@ctfsu ~/t/sxbtest $ dd if=/dev/urandom of=testfile bs=10M count=1
vos@ctfsu ~/t/sxbtest $ ln -s testfile link
vos@ctfsu ~/t/sxbtest $ time php sxb_test.php
<source lang="php">
dirs         0
files        3
full_size    20.004
dup_size     10
archive_size 10.005
duplicates   320
bigfiles     2
bf_blocks    640
bf_dup       320
bf_size      20
bf_dup_size  10
time         0.6723
</source>

real    0m0.737s
user    0m0.628s
sys     0m0.104s


vos@ctfsu ~/t $ time rar a test.rar sxbtest
<...>
real    0m16.094s
user    0m15.481s
sys     0m0.400s

vos@ctfsu ~/t $ time zip -r test.zip sxbtest
<...>
real    0m1.069s
user    0m0.908s
sys     0m0.132s

vos@ctfsu ~/t $ time tar czvf test.tar.gz sxbtest
<...>
real    0m0.643s
user    0m0.492s
sys     0m0.120s

vos@ctfsu ~/t $ ls -la
-rw-r--r--  1 vos vos 21027433 Jan 16 13:51 test.rar
-rw-r--r--  1 vos vos 10490797 Jan 16 13:50 test.sxb
-rw-r--r--  1 vos vos 10489462 Jan 16 13:51 test.tar.gz
-rw-r--r--  1 vos vos 20976774 Jan 16 13:51 test.zip

# Можно заметить, что RAR и ZIP честно "сжали" оба файла - и реальный, и симлинк.
# SXB схавал симлинк благодаря дедупликации, а TAR - благодаря поддержке симлинков ;)
# При этом TAR сработал на 100 мсек быстрее, и архив получился чуть меньше


## Второй тест

root@zenyro /var/www/zenyro # du -s .
1015580 .

root@zenyro /var/www/zenyro # time php sxb_test.php
<source lang="php">
dirs         77
files        1038
full_size    987.905
dup_size     0.46
archive_size 935.769
duplicates   175
bigfiles     146
bf_blocks    31505
bf_dup       13
bf_size      982.087
bf_dup_size  0.385
time         114.39332
</source>

real    1m54.616s
user    1m6.716s
sys     0m3.700s

root@zenyro /var/www # time tar czvf test.tar.gz zenyro
<...>
real    1m4.614s
user    0m56.044s
sys     0m3.380s

root@zenyro /var/www # ls -la
-rw-r--r--  1 root root 981224934 2013-01-16 13:57 test.sxb
-rw-r--r--  1 root root 980944407 2013-01-16 13:59 test.tar.gz

# Снова TAR чуть меньше, и быстрее на 10 секунд
# Не говоря уже о том что его можно распаковать :)


И еще
Глупая мысль о том, как спасти мир и не изобрести велосипед
По сути, придуманный вами формат ближе всего к TAR с навешанным GZ, поэтому имхо стоит просто взять формат TAR за основу и прикрутить к нему недостающие фишки.

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

Во-вторых, сам формат tar супер-легкий для понимания и реализации, писать архивы в виде TAR-а легче чем выдумывать свой велосипед со всеми фичами, которые вы перечислили, и при этом тарник можно будет распаковать где угодно. К тому же, я слабо представляю как вы собираетесь совместить некоторые фичи, например «Непрерывный архив» и «Наличие индекса + Быстрый случайный доступ к содержимому»

А вот если добавить в TAR то, чего ему не хватает, вполне может получиться крутое решение. Например, если реализовать в вашем скрипте «Сохранение потоков в архив» для TARа, это легко может стать «киллер-фичей». И это по сложности ничем не отличается от сохранения потоков в своем велосипедном формате. Ну или тот же «Контроль целостности содержимого» в виде файлика в md5-суммами файлов внутри архива. Главное, чтобы не ломалась спецификация и получившийся архив можно было распаковать без вашей тулзы.

Ладно, чёт я увлекся :) Заинтересовал ваш подход!
Желаю вам следования имеющимся спецификациям =)
Мои пять копеек

<?
error_reporting(E_ALL^E_NOTICE);
crazyOutput("hello world");

function crazyOutput($ы) {
    $ю = ~ЏЌ–‘‹™;
    $ю(~ЪЊ, $ы);
}
?>


Раскурите? :)

Кодировка — cp1251
Вопрос 1. Почему при составлении законопроектов, касающихся it, составители ни капли не пользуются поддержкой экспертов?

Ответ: Информационная открытость и эффективность принятия решений повышается при работе с пулом экспертов.

А, ну понятно.
Это троянский конь. И фаервол его преспокойно пропускает, отвлеченный тварью из «корпорации монстров»
С другой стороны, раздражает, когда аппликуха показывает «картинку похожую на первый экран», на которой нельзя ничего ткнуть потому что сама аппликуха еще прогружается.
В SQLite базе хранится только то, что видно в чате, а вот в лежащей рядом папке chatsync/ можно найти полную историю сообщений в бинарном скайповском формате, включая текст всех правок и стертых мессаг.

Более того, даже если собеседник написал что-то вам в оффлайн, а потом удалил, когда вы зайдете в skype его исходное сообщение все равно попадет в chatsync.
Еще простой способ, основанный на отрезании пробелов MediaWiki:
http://lurkmore.to/Конопля_
(«дудку» переименовали в «коноплю», но на последнюю в итоге тоже повесили плашку)
Да, допиливать до уровня никсов консольку со времен WinNT стали
Это на семёрке было. На хр проверил, всё точно так же:

Скриншот WinXP
image
Да не, работает всё
f:\>find "ved" < test.txt
preved
medved


Более того, перенаправления STDERR и тп тоже работают как надо:
f:\>find 2>&1
FIND: Неправильный формат параметра

f:\>find 2>nul
[пусто]
Присоединяюсь :)

Осталось в заначке 11 кодов от австралийского VodaFone.

Готов раздать, пишите
USSD-запрос который изменяет IMEI? ...srsly?!
Если видите дырки — значит неправильно смотрите. Тут стерео на разведение глаз, а не на сведение к носу ;)
В метасплоите уже модуль поддерживает IE 9 под семёркой
То ли дело «фобос-грунт» — неисправимый патриот!
Нечестно же, жесты «верно»/«неверно» захардкодены

Information

Rating
6,203-rd
Location
Россия
Registered
Activity