Как я могу предсказать размер файловой системы ISO 9660?

Попробовал почти тот же код в моем классе приложения, но он работал для меня, вызывался success ().

class MyApplication: MultiDexApplication() {
    override fun onCreate() {
        super.onCreate()
        val core = CrashlyticsCore.Builder()
            .build()
        Fabric.with(
            Fabric.Builder(this)
                .kits(Crashlytics.Builder().core(core).build())
                .initializationCallback(object: InitializationCallback<Fabric> {
                    override fun success(p0: Fabric?) {
                        Timber.d("InitializationCallback success")
                    }
                    override fun failure(p0: Exception?) {
                        Timber.d("InitializationCallback failure")
                    }
                })
                .build()
        )
        ...
    }
    ...
}

Проверьте эти

  • Проверьте io.fabric.ApiKey в вашем AndroidManifest.xml
  • Проверьте, возвращает ли contextProvider.invoke() соответствующий контекст
  • Попробуйте [114 ] в качестве контекста и увидеть, работает он или нет
6
задан Norman Ramsey 22 January 2009 в 15:05
поделиться

5 ответов

Спасибо за подробное обновление. Я удовлетворен, что Ваша текущая упаковывающая мусорное ведро стратегия довольно эффективна.

Относительно вопроса, "Точно, на каком количестве наверху упаковывает файловая система ISO 9660 для n файлов в общей сложности b байты?" существует только 2 возможных ответа:

  1. Кто-то уже записал эффективный инструмент для измерения точно этого. Быстрый поиск Google не поднял ничего однако, которое является обескураживающим. Возможно, что кто-то на ТАК ответит ссылкой на их сделанный в домашних условиях инструмент, но если Вы не получаете больше ответов в течение нескольких дней затем, это, вероятно, отсутствует также.
  2. Необходимо считать легко доступные спецификации ISO 9660 и создать такой инструмент сами.

На самом деле существует третий ответ:

(3) Вы действительно не заботитесь об использовании каждого последнего байта на каждом DVD. В этом случае захватите маленькое представительное небольшое количество файлов различных размеров (скажите 5), заполните их, пока они не кратные числа 2 048 байтов и помещают все 2^5 возможные подмножества через genisoimage -print-size. Затем соответствуйте уравнению nx + y = iso_size - total_input_size на том наборе данных, где n = количество файлов в данном шансе, для нахождения x, который является числом байтов издержек на файл и y, который является постоянной суммой издержек (размер файловой системы ISO 9660, содержащей файлы). Округлите в большую сторону X и Y и используйте ту формулу для оценки размеров файловой системы ISO для данного набора файлов. Для безопасности удостоверьтесь, что Вы используете самые долгие имена файлов, которые появляются где угодно в Вашем наборе для тестовых имен файлов и подвергают каждого отдельной иерархии каталогов, которая так же глубока как самая глубокая иерархия в Вашем наборе.

2
ответ дан 17 December 2019 в 02:34
поделиться

Я не уверен точно, как Вы в настоящее время делаете это - согласно моему поиску с помощью Google, "Bubblesearch" относится к способу выбрать упорядочивание объектов, которое находится в некотором смысле около жадного упорядочивания, но в Вашем случае, порядок добавляющих файлов к DVD не изменяет необходимые площади, таким образом, этот подход напрасно тратит время, рассматривая несколько различных заказов, которые составляют тот же набор файлов.

Другими словами, если Вы делаете что-то как следующее для генерации списка файлов кандидата:

  1. Случайным образом переставьте список файлов.
  2. При запуске с верхней части списка жадно выберите все файлы, которые Вы оцениваете, будет соответствовать на DVD, пока ничто больше не будет.

Затем Вы ищете пространство решения неэффективно - для любого заключительного набора кандидата n файлов, Вы потенциально рассматриваете весь n! способы произвести тот набор. Мое предложение:

  1. Вид все файлы в порядке убывания размера файла.
  2. Mark главный (самый большой) файл, как "включено" и удалите его из списка. (Это должно быть включено в некоторый DVD, таким образом, мы могли бы также включать его теперь.)
  3. Может самый верхний файл в списке быть включенным без (предполагаемого) размера файловой системы ISO, превышающего способность DVD? Раз так:
    • С вероятностью p (например, p = 0.5), отметьте файл, как "включено".
  4. Удалите самый верхний файл из списка.
  5. Если список теперь пуст, у Вас есть список кандидатов файлов. Иначе, goto 3.

Повторяйте это много раз и выбирайте лучший список файлов.

Предложение D Tyler также хорошо: если у Вас есть ~40000 файлов в общей сложности ~500Mb, который означает средний размер файла 12.5 КБ. ISO 9660 использует размер блока 2 КБ, означая, что те файлы тратят впустую в среднем 1 КБ дискового пространства или приблизительно 8% их размера. Так упаковка их вместе с tar сначала сохранит приблизительно 8% пространства.

2
ответ дан 17 December 2019 в 02:34
поделиться

Хорошие взгляды, J. Случайный. Конечно, мне не нужен каждый последний байт, это главным образом для забавы (и престиж за ланчем). Я хочу смочь ввести du в CD-ROM и имеют его очень близко к 4700000000.

Я посмотрел на спецификацию ECMA, но как большинство спецификаций это среднее болезненный, и у меня нет уверенности в моей способности разобраться в нем. Также это, кажется, не обсуждает расширения Rock Ridge, или если это делает, я пропустил его.

Я люблю Вашу идею № 3 и думаю, что буду нести его немного далее: я попытаюсь создать довольно богатую модель того, что продолжается, и затем используйте genisoimage -print-size в ряде filesets для оценки параметров модели. Затем я могу использовать модель, чтобы сделать мою оценку. Это - проект хобби, таким образом, он будет требовать времени, но я найду время для него в конечном счете. Я отправлю ответ здесь для высказывания, сколько потерь устраняется!

0
ответ дан 17 December 2019 в 02:34
поделиться

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

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

Так или иначе я предполагаю, что Вы уже рассмотрели их, или что мой ответ упускает суть.

1
ответ дан 17 December 2019 в 02:34
поделиться

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

Допущения:

  • все файлы содержат ровно 8,3 символа.
  • все файлы находятся в корневом каталоге.
  • таких расширений нет. как Joliet.

Формула:

174 + floor(count / 42) + sum( ceil(file_size / 2048) )
  • count - это количество файлов
  • file_size - размер каждого файла в байтах
  • результат - в 2048-байтовых блоках.

Пример сценария:

#!/usr/bin/perl -w
use strict;
use POSIX;

sub sum {
    my $out = 0;
    for(@_) {
        $out += $_;
    }
    return $out;
}

my @sizes = ( 2048 ) x 1000;
my $file_count = @sizes;

my $data_size = sum(map { ceil($_ / 2048) } @sizes);
my $dir_size = floor( $file_count / 42 ) + 1;
my $overhead = 173;

my $size = $overhead + $dir_size + $data_size;

$\ = "\n";
print $size;

I проверил это на дисках, содержащих до 150 КБ файлов, размером от 200 байт до 1 МБ.

1
ответ дан 17 December 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: