Могу ли я добиться этого в HTML5 + других веб-технологий? - PullRequest
2 голосов
/ 08 марта 2011

Почти 6 месяцев назад я задал вопрос о stackoverflow " Программное обеспечение для анализа журналов? "

Пожалуйста, посмотрите на этот вопрос, прежде чем читать дальше.

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

Я хотел проявить инициативу, разработать что-то и открыть его после его завершения.

Ранее я работал над написанием быстрого и грязного фрагмента кода на c ++, который генерировал бы файл с разделителями табуляции (например, csv, но разделенный табуляцией), который я позже открыл в Excel.

Я не удовлетворен моим кодом на С ++ по следующим причинам: 1. Это полностью зависит от Excel, чтобы просмотреть выходной файл позже.2. Поскольку пользовательский интерфейс не задействован, писать его командную строку нелегко.3. Из-за кривой обучения командной строки, ее не так много для других членов команды (и для всего мира).

По вышеуказанным причинам (и еще нескольким) я подумывал разработать это каквеб-решение.Таким образом, я могу поделиться рабочим экземпляром со всеми.

Я имею в виду веб-решение, похожее на это:

  • Пользователь сможет предоставить журнал вводафайлы с помощью HTML5 File API.
  • И тогда пользователь, вероятно, сообщит формат отметки времени, связанной с каждым файлом журнала.
  • После этого javascript будет обрабатывать эти файлы журналов в виде смешанного HTML-вывода в таблице.

Я всего лишь новичок в веб-технологиях.Поэтому мне нужна ваша помощь в определении того, будет ли это наилучшим способом решения этой проблемы?

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

Спасибо за ваш вклад.

РЕДАКТИРОВАТЬ: Основано на комментариях ниже Raynos

@bits Вы понимаете, что браузеры не предназначены для обработки больших объемов данных.Был stackoverflow.com/questions/4833480/…, который показывает, что это может вызвать проблемы.

Мне кажется, что делать это в браузерах - не лучшее предложение.Вероятно, мне стоит изучить бэкэнд-решения.Есть идеи или предложения?

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

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

Загрузка файла будет включать

<input id="upload" type="file">

Вместе с фрагментами javascript

$("#upload").change(function(files) {
    var files = this.files;
    for (var i = 0; i < files.length; i++) {
        (function() {
            var file = files[i]; 
            var reader = new FileReader;
            reader.onload = function(e) {
                var text = reader.result;
                console.log(text);
            };
            reader.readAsText(file);
        }());
    }
});

Смотрите в прямом эфире пример .

Итак, у вас есть весь текствам просто нужно поработать над парсером.Я надеюсь, что это немного помогает.

Что касается разметки различий, я бы предложил что-то вроде:

<table>
 <!-- one tr per unique timestamp -->
 <tr>
  <!-- one td/textarea per file -->
  <td> <textarea /> </td>
  <td> <textarea /> </td>
 </tr>
 ...
</table>

Я бы порекомендовал сделать этот шаблон и использовать движок шаблонов для выполнения некоторых тяжелых работ.

Допустим, мы хотим использовать jquery-tmpl .

Вот пример, чтобы вы начали .(Я трачу ноль времени на то, чтобы он выглядел хорошо. Это ваша работа).

Все, что осталось, - это генерировать данные JSON для вставки в шаблон.

Таким образом, при вводе вашего файла у вас должен быть массив fileTexts где-нибудь.

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

var fileTexts = [file];
var regex = new RegExp("(timestampformat)(.*)");

for (var i = 0; i < fileTexts.length; i++) {
    var text = fileTexts[i];
    var records = text.split("\n");
    for (var j = 0; j < records.length; j++) {
        var match = regex.exec(records[j]);
        addToTimestamps(match[1], match[2], i);
    }
}

function addToTimestamps(timestamp, text, currFileCount) {
    console.log(arguments);
    // implement it.
}

Согласно примеру .

Это основные строительные блоки.Получите данные из File API.Манипулируйте данными в нормализованном формате данных, затем используйте какой-либо инструмент рендеринга для формата данных.

2 голосов
/ 08 марта 2011

Это было бы довольно легко сделать с помощью JavaScript.Вы упомянули выше, используя html5 файл api, и это отличное место для начала ( html file api ), вы можете использовать ненавязчивый javascript для запуска обратного вызова при загрузке файла.Внутри обратного вызова вы можете использовать любую из замечательных библиотек шаблонов javascript для создания таблицы элементов из загруженного файла.Затем при последующих загрузках файлов вы можете динамически чередовать их в таблицу, используя их временную метку.Обнаружение метки времени с помощью регулярных выражений js было бы довольно простым и достаточно эффективным, если бы вы использовали скомпилированную форму.

Это довольно высокий уровень ответа на вопрос, и если у вас есть какие-либо вопросы относительно конкретных деталей,Буду рад ответить и на них.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...