Re[4]: Openoffice...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 29.04.10 19:21
Оценка:
Здравствуйте, Vamp, Вы писали:

KV>>Я не радуюсь неудачам опенсорса и не являюсь его противником. Просто тут кое-кто с пеной у рта доказывал, что ОО не хуже MSO и я совсем чуточку радуюсь его неправоте.

V>Хуже, лучше — понятия субъективные. Кому то лучше, кому-то хуже.

Дык я за себя-то и говорю.

KV>>Но также, лично я, вижу несколько вещей в идеологии открытого ПО и его сторонниках, которые несовместимы с понятием "качественный продукт". Причем, чем дальше в лес, тем толще партизаны, тем сильнее проявляются эти вещи и влияют на развитие окрытого ПО не в самую лучшую сторону. Но это — тема отдельного серьезного разговора, вообще-то.

V>Ну так давай об этом и поговорим

Ок, постараюсь сформулировать позицию ASAP.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[5]: Openoffice...
От: Vamp Россия  
Дата: 29.04.10 19:33
Оценка:
KV>Дык я за себя-то и говорю.
Да, но конструктивная дискуссия в таком раскладе невозможна в принципе.

KV>Ок, постараюсь сформулировать позицию ASAP.

Ну, АСАП не обязательно
Да здравствует мыло душистое и веревка пушистая.
Re[4]: Openoffice...
От: neFormal Россия  
Дата: 29.04.10 20:01
Оценка:
Здравствуйте, Sheridan, Вы писали:

F>> S>бджалд,

F>> чочочо?. мат на моём rsdn?. да ещё и с безумными грамматическими ошибками?.
S>А както мамут высказался, мне и понравилось. Очень хорошее слово. Явно нехорошее, но в то же время произнести трудновато. Следовательно произносится сие слово только когда ну совсем нехорошо.

тебя линуксу тоже во дворе научили мальчики?.
...coding for chaos...
Re[5]: Openoffice...
От: Sheridan Россия  
Дата: 29.04.10 20:02
Оценка: :))
Приветствую, kochetkov.vladimir, вы писали:

k> Это ж на каком уровне абстракции должны быть эти фильтры, ...

k> И, боюсь, что если бы я таки-разработал такую систему "фильтрации", то на ближайшие несколько лет необходимости зарабатывать на существование просто не было бы

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

Если бы все думали как ты ("ой, это сложно, значит — невозможно"), то никаких бы netflow не было бы.
avalon 1.0rc3 rev 306, zlib 1.2.3 (17.12.2009 01:06:14 MSK +03:00)(Qt 4.6.0)
Matrix has you...
Re[5]: Openoffice...
От: Sheridan Россия  
Дата: 29.04.10 20:04
Оценка:
Приветствую, neFormal, вы писали:

F> S>А както мамут высказался, мне и понравилось. Очень хорошее слово. Явно нехорошее, но в то же время произнести трудновато. Следовательно произносится сие слово только когда ну совсем нехорошо.


F> тебя линуксу тоже во дворе научили мальчики?.


Линуксу я научился сам. Вот этими вот руками...
avalon 1.0rc3 rev 306, zlib 1.2.3 (17.12.2009 01:06:14 MSK +03:00)(Qt 4.6.0)
Matrix has you...
Re[3]: Openoffice...
От: ambel-vlad Беларусь  
Дата: 29.04.10 20:14
Оценка: 1 (1)
Здравствуйте, kochetkov.vladimir, Вы писали:

AV>>Слабенький какой-то вброс. Я могу написать тебе подобных историй про Management Console, что несколько дней будешь читать.


KV>Я тебе даже больше скажу. Я потом еще и несколько дней на них отвечать буду, а ты, я надеюсь, мне. Потом подтянется местная публика... Йоу, у нас теперь есть чем тут заняться на ближайший месяц


KV>Я в смысле, ты пиши давай, раз есть что, а там посмотрим, кто сколько дней чего читать будет.


Начну с банальностей.
1. Создаем не сильно навороченное дерево. Когда кол-во узлов станет приближаться к полутысяче начинаются регулярные вылеты консоли. Причем вылеты в unmanaged dll.
Про быстродействие и говорить уже нечего.

2. MMC используется AppDomain. Сама работает в одном домене. А snap-in'ы грузит в другие сборки. Это сделано для того, чтобы вылет одного snap-in не выносила остальные. В одной сборке можно хранить несколько snap-in. Теперь попробуй угадать как будут загружаться эти несколько snap-in. Если в один msc-файл добавляется несколько snap-in разных типов, то будут ли они грузиться в один домен или в разные? Если в один msc-файл добавляется несколько snap-in одного типа, то будут ли они грузиться в один домен или в разные? Попробуй угадать, прежде чем читать дальше. Правильные ответы: 1 — разные домены, 2 — один. Интересно было бы увидеть обяснение в чем заключается различие в этих ситуациях.

3. Продолжим тему нескольких экземпляров snap-in одного типа. Никаких идентификаторов snap-in найти не удалось. То есть если мы где-то (например, в реестре) сохраним настройки каждого экземпляра. Как при загрузке snap-in разобраться где чьи настройки?

4. Продолжим тему настроек. Кто-то скажет, что нечего хранить настройки абы где, а пользоваться предоставленными механизмами. Да, Management Console предусматривает механизм сохранения настроек каждого из snap-in. В документации честно написано, что если выставить флажок, что данные snap-in изменились, то вызывается функция в которой я могу отдать данные для сохранения настроек. Все классно. Вот только в документации забыли написать, что если в msc-файле есть аттрибут LogicalReadOnly равный true, то плевала консоль на все эти флажки. И никто не будет беспокоить snap-in по этому поводу, пусть этот флажок в каждой второй строке устанавливается.

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

5. Вернемся к настройкам. Положим разобрались мы с LogicalReadOnly и настройки у нас сохраняются. Где они хранятся? Правильно. C:\Users\%USERNAME%\Application Data\Microsoft\MMC\. В этом каталоге находится файлик совпадающий с именем нашего msc-файла. А что будет если в системе окажется два продукта, которые имеют msc-файлы с одинаковым именем? Далее еще веселее. Что будет если мы снесем продукт, а потом поставим заново? Правильно, все старые данные подымутся. Что не есть правильно. Кто-то может сказать, что если нас не удовлетворяет такое поведение, то при uninstall надо самим удалять файлики с настройками. У кого удалять?

6. Про документацию предпочту помолчать. Ибо "обнять и плакать". Больше сказать нечего.

Есть еще куча всего. Но там уже нужно хотя бы немного описывать детали. Если кого-то заинтересует, то могу как-нибудь поделиться.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Openoffice...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 29.04.10 20:33
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Приветствую, kochetkov.vladimir, вы писали:


k>> Это ж на каком уровне абстракции должны быть эти фильтры, ...

k>> И, боюсь, что если бы я таки-разработал такую систему "фильтрации", то на ближайшие несколько лет необходимости зарабатывать на существование просто не было бы

S>А в чем сложность? Не знаю как ты, но я примерно представляю как все это должно выглядеть.

S>Разбивай задачу на атомарные действия (найти человека (клиентский комп), найти скачивание файла...). По необходимости дописывай новые атомы. А затем из атомов составляй запрос, подставляя нужные параметры.

Да, конечно можно наваять декларативный DSL, описывающий критерии отбора и искомые отношения между отбираемыми данными, можно вообще его с SQL содрать или преобразовывать логи в реляционные таблицы с правильной структурой (компьютеры-пользователи-сессии-запросы-хосты и т.п.), а уже потом использовать обычный SQL и не выеживаться с DLS... Можно много чего сделать, но за рамки скрипта, который нужен пару раз в месяц, это по-моему уже выходит.

S>Если бы все думали как ты ("ой, это сложно, значит — невозможно"), то никаких бы netflow не было бы.


Блин, ну вот опять ты делаешь выводы из того, что я не утверждал. Я не говорю, что это невозможно. Я лишь сказал, что это весьма востребованная на рынке система (как мне кажется, могу ошибаться), достаточно сложная и требующая совершенно иной уровень трудозатрат по сравнению с одноразовыми скриптами. Возможно ей и стоило бы заняться, но не в рамках решения повседневных задач, а в качестве отдельного проекта. В рамки повседневных задач она не вписывается хотя бы из-за временных ограничений, накладываемых сроками решения этих задач.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Openoffice...
От: DOOM Россия  
Дата: 29.04.10 20:40
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Он есть, но закрыт за семью NDA. Я не отмазываюсь, и рад бы это обсудить с тобой, но правда не могу Скажем так, через SOC сейчас проходят данные ээээ... с другого уровня абстракции, нежели логи ISA. И этого для задач мониторинга ИБ пока хватает. А для остального и придумали нас


А ISA значит не за 7-ю NDA

DOO>>ТКП на Symantec SIM + Symantec DLP не прислать?


KV>Хотя, если под рукой есть готовое предложение (чтоб тебя не напрягать лишний раз), которое ты можешь прислать — кинь плс, лично мне было бы интересно глянуть.

На самом деле нет... Высоковат класс системок, чтобы типовое ТКП держать... Но в целом связка интересная (хотя не идеальная) — как раз для ловли инсайдеров Все ищу возможность на ком-нибудь ее испытать


KV>Дык я и не утверждаю, что в MSO все хорошо. Я говорю о том, что в ОО еще хуже.

Дык от задачи зависит... ИМХО, разработчики writer'а больше думали об опытных пользователях, чем разработчики word'а.

DOO>>Ну вы хоть Sawmill купите... А так — конечно, не предназначен

KV>Да BIIS вполне себе справляется. А задачи глянуть в логи за сегодня прямо сейчас, возникают не так часто, чтобы можно было серьезно говорить о вложении каких-либо средств в это.
Ну ты ж сказал, что это не просто глянуть здесь и сейчас — а инсайдера поймать, понимаешь...
Re[2]: Openoffice...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 29.04.10 20:44
Оценка:
Здравствуйте, Wolverrum, Вы писали:

W>OO 3.1 (winxp) проглотил в секунду за милую душу (оно и понятно из картинки — почему), дал ошибку о превышении кол-ва строк

W>http://files.rsdn.ru/44501/oo31.jpg

W>OO 3.1 (ubuntu 9.10) жевал ~2 минуты, импортировал все:

W>http://files.rsdn.ru/44501/%d0%a1%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-big.csv%20-%20OpenOffice.org%20Calc.jpg

Кстати, а почему поведение разное? x86/x64?

W>Наверное, файл мелкий, и версия не та?


Оно у меня действительно падало, и есть подозрение, что падало оно не только из-за объема лога, но и из-за объема содержимого ячеек. Попробуй сгенерировать такой же файл, но в котором, хотя бы в одном из столбцов (а лучше, в нескольких) будет не менее 2048 символов на каждую строчку.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Openoffice...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 29.04.10 20:44
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, kochetkov.vladimir, Вы писали:

KV>>Наброс окончен, спасибо за внимание. Жду аргументов о том, что OO под эти задачи не предназначен и что домохозяйки логи прокси на нем парсить не будут

M>Домохозяйки парсить будут в gnumeric из состава Gnome Office,


О! Попробую, как только до работающего линукса дотянусь.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Openoffice...
От: Antikrot  
Дата: 29.04.10 20:47
Оценка:
Здравствуйте, Sheridan, Вы писали:

k>> Это ж на каком уровне абстракции должны быть эти фильтры, ...

k>> И, боюсь, что если бы я таки-разработал такую систему "фильтрации", то на ближайшие несколько лет необходимости зарабатывать на существование просто не было бы
S>А в чем сложность? Не знаю как ты, но я примерно представляю как все это должно выглядеть.
от примерного представления до реализации ооочень далеко. я пока не видел таких всеумеющих "скриптов" со сроком жизни хотя бы год, а я их много видел

S>Разбивай задачу на атомарные действия (найти человека (клиентский комп), найти скачивание файла...). По необходимости дописывай новые атомы. А затем из атомов составляй запрос, подставляя нужные параметры.

молодец, изобрёл sql кстати, в чём отличие от фильтра в excel-е? кроме NIH естественно.

S>Если бы все думали как ты ("ой, это сложно, значит — невозможно"), то никаких бы netflow не было бы.

замени "невозможно" на "нерационально"

и почему некоторые в одном месте пытаются решить сразу все проблемы на свете, а в другом кричат что весь функционал фотошопа мало кому нужен?
Re[3]: Openoffice...
От: Wolverrum Ниоткуда  
Дата: 29.04.10 21:03
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Кстати, а почему поведение разное? x86/x64?

Сам лишь сегодня об этом узнал

W>>Наверное, файл мелкий, и версия не та?

KV>Оно у меня действительно падало, и есть подозрение, что падало оно не только из-за объема лога, но и из-за объема содержимого ячеек. Попробуй сгенерировать такой же файл, но в котором, хотя бы в одном из столбцов (а лучше, в нескольких) будет не менее 2048 символов на каждую строчку.

То был файл 57Мб / 8 колонок / 1млн строк
Я уже заинтересовался в потугах "завалить" — родил файл 125Мб / 6 колонок / 1.2 млн строк (реально загрузилось 1048576) + конвертация данных с дату
Загрузилось даже быстрее! (минута от силы)
В общем, кажется, что у ОО как-то нелинейно возрастает время обработки csv файла в зависимости от кол-ва колонок, и от входной кодировки. Размер входной строки для парсинга и наличие преобразования типа данных, насколько вижу, роли не играют.

Ща попробую на очень длинных строчках с парой десятков колонок.
Re[3]: Openoffice...
От: Wolverrum Ниоткуда  
Дата: 29.04.10 21:53
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Оно у меня действительно падало, и есть подозрение, что падало оно не только из-за объема лога, но и из-за объема содержимого ячеек. Попробуй сгенерировать такой же файл, но в котором, хотя бы в одном из столбцов (а лучше, в нескольких) будет не менее 2048 символов на каждую строчку.


big2.csv ~920+ Мб. "Парыдесятковколоночек" — что-то не получилось: на виртуалке столько свободных гигабайт не оказалось
a = '"' + ("0123456789ABCDEF" * 100) + '"'
b = "#{a},#{a},#{a},#{a},#{a},#{a}\n"
1.upto(100000) { |i|
    $stdout.write(b)
}

После примерно 3 минут работы:


Попробовал еще такой вариант (~610Мб, 1 поле, зато длины 3+ кб)
a = '"' + ("0123456789ABCDEF" * 200) + '"'
1.upto(200000) { |i|
    $stdout.write(a + "\n")
}

Примерно за полторы минуты загрузило.


В общем, ощущение, что описанная проблема скорее всего характерна
для конкретной связки Windows7 (насколько помню, у вас именно она) или NT6+ и OO3.2/win

Как-то так
Re[4]: Openoffice...
От: Wolverrum Ниоткуда  
Дата: 29.04.10 21:58
Оценка:
Здравствуйте, Wolverrum, Вы писали:

W>big2.csv ~920+ Мб. "Парыдесятковколоночек" — что-то не получилось: на виртуалке столько свободных гигабайт не оказалось

В смысле, тестовый файл генерился под виртуальной виндой, а испытывался уже на убунтовой сборке опенофиса
Re[3]: Openoffice...
От: Anton Batenev Россия https://github.com/abbat
Дата: 29.04.10 22:21
Оценка: :)
Здравствуйте, kochetkov.vladimir, Вы писали:

k> Оно у меня действительно падало, и есть подозрение, что падало оно не только из-за объема лога, но и из-за объема содержимого ячеек. Попробуй сгенерировать такой же файл, но в котором, хотя бы в одном из столбцов (а лучше, в нескольких) будет не менее 2048 символов на каждую строчку.


1258014 строк * 2048 символов = 2.4GB (а у тебя 718 метров). Пробуем соблюсти число строк и объем. Генератор:

<?php

$s1 = str_repeat("1234567890", 80);

for ($i = 0; $i < 1258014; $i++)
    echo strval($i) . "\t\"" . $s1 . "\"\n";

?>


Файл получился размером 972M. Открываем его в ОО — он сразу предложил нужные разделители (кодировка здесь не актуальна). Жмем "ОК". Начали в ~01:35, закончили в ~01:42 с сообщением об ошибке "Превышено максимальное число строк. Строки, превышающие заданное число, не были импортированы!". Жмем "ОК", смотрим количество строк: 1048575.

Железо: CPU T1400@1.73GHz, 1GB RAM

P.S. Во время конвертации спокойно читаем RSDN, т.к. занято всего одно ядро из двух, а 972 метра почти влезут в оперативку без интенсивного свопинга (хотя 200 метров оно все же откушало).

P.P.S. На работе часто приходится анализировать логи под несколько гигабайт. Твой способ "через эксель" позабавил

P.P.P.S. [troll mode on] Получается, ты наглядно продемонстрировал убогость винды и офиса [troll mode off]
avalon 1.0rc3 rev 317, zlib 1.2.3
Re[4]: Openoffice...
От: Sheridan Россия  
Дата: 29.04.10 22:51
Оценка:
Приветствую, Anton Batenev, вы писали:

AB> 1258014 строк * 2048 символов = 2.4GB (а у тебя 718 метров). Пробуем соблюсти число строк и объем. Генератор:....

ок, нагенерировал генератором

AB>....с сообщением об ошибке "Превышено максимальное число строк. Строки, превышающие заданное число, не были импортированы!".

Аналогично.
Отработало
13938 sheridan  20   0  806M  219M 80652 S  0.0 10.9  1:33.40  `- /usr/lib64/openoffice/program/soffice.bin -calc file.csv -splash-pipe=5

1:33 процессорного времени, реально это около трех минут.
Целиком процесс оо после всасывания файла выглядят так:
  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command                                                                                                               
13938 sheridan  20   0  806M  219M 80652 S  0.0 10.9  1:33.40  `- /usr/lib64/openoffice/program/soffice.bin -calc file.csv -splash-pipe=5                                           
13943 sheridan  20   0  806M  219M 80652 S  0.0 10.9  0:00.00  |   `- /usr/lib64/openoffice/program/soffice.bin -calc file.csv -splash-pipe=5
13942 sheridan  20   0  806M  219M 80652 S  0.0 10.9  0:00.00  |   `- /usr/lib64/openoffice/program/soffice.bin -calc file.csv -splash-pipe=5
13941 sheridan  20   0  806M  219M 80652 S  0.0 10.9  0:00.00  |   `- /usr/lib64/openoffice/program/soffice.bin -calc file.csv -splash-pipe=5
13940 sheridan  20   0  806M  219M 80652 S  0.0 10.9  0:00.00  |   `- /usr/lib64/openoffice/program/soffice.bin -calc file.csv -splash-pipe=5
13939 sheridan  20   0  806M  219M 80652 S  0.0 10.9  0:00.00  |   `- /usr/lib64/openoffice/program/soffice.bin -calc file.csv -splash-pipe=5


AB> Железо: CPU T1400@1.73GHz, 1GB RAM

AMD Athlon(tm) 64 X2 Dual Core Processor 3800+, 2Г оперативки

AB> P.P.S. На работе часто приходится анализировать логи под несколько гигабайт. Твой способ "через эксель" позабавил

Угу, я тоже поржал.
avalon 1.0rc3 rev 306, zlib 1.2.3 (17.12.2009 01:06:14 MSK +03:00)(Qt 4.6.0)
Matrix has you...
Re: Openoffice...
От: Anton Batenev Россия https://github.com/abbat
Дата: 29.04.10 22:53
Оценка: +3 :))) :))
Здравствуйте, kochetkov.vladimir, Вы писали:

k> Довольно часто, по долгу службы, мне приходится работать с логами корпоративного прокси


Но больше всего меня возмутил совсем другой момент:

k> Это ж на каком уровне абстракции должны быть эти фильтры, чтобы ими можно было задать что вот сейчас мне нужно найти пользователя, который зашел на mail.ru, создал черновик письма, потом зашел на depositfiles и что-то туда залил, потом открыл этот черновик изменил его (вставил ссылку на закаченный файл), после чего отправил письмо и отпрапортавал об этом по аьске?


А у вас после посещения сотрудниками сортира образцы попадают сразу в хранилище или сначала проводится анализ на бак-посев?
avalon 1.0rc3 rev 318, zlib 1.2.3
Re[5]: Немного об одноразовых скриптах
От: Alexey F  
Дата: 29.04.10 23:43
Оценка: 17 (9)
Здравствуйте, kochetkov.vladimir, Вы писали:

AF>>быстрее сделать руками, чем придумать скрипт;

KV>Именно поэтому. Если задача возникает нечасто и мне быстрее сделать ее руками, чем садиться за скрипт, то я делаю это руками, до тех пор пока... (см. "если").

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

Универсальные "всемогутеры" для одноразовой задачи не нужны.

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

что часто бывает меньше, чем просто:
время ручного выполнения задачи
.

За счёт этого время разработки скрипта сильно уменьшается — ведь все хитрые случаи можно:
Если идёт не редактирование, а поиск записи, сложную для скрипта запись можно включать в результат, обработав одним из вышеуказанных методов.

Одноразовые скрипты живут мало.

Одноразовый скрипт пишется на выброс. Значит, можно забыть многие правила, пренебречь концептуальной чистотой кода (к примеру, нужен отдельный метод, а мы лямбду написали и т.п.) — от него требуется простота ("настолько простой, что любому будет видно, что в нём нет ошибок" ©) и, собственно, работоспособность (иногда скорость выполнения, но тогда есть смысл соблюдать правила ).
Как результат — сокращается время написания.

Для одноразовых скриптов не подходит...

...ИМХО: всё то, что безвозвратно удаляет или искажает данные. Удаление файлов, запись в оригинальный файл (не копию).



К теме топика ещё в конце кусочек. А так далее идёт борьба с мельницами при помощи велосипедоварения (возможно, описываемая ниже идея — баян, но она упорно не гуглится и знакомые о ней ничего не знают )

Долой препятствия!


Можно делать так:
Я предлагаю пойти дальше. Скрипт может исполнятся из любого окна, в котором можно вводить текст и откуда можно скопировать данные! Хоть блокнот, хоть адресная строка браузера (концептуально; я предпочитаю исполнять скрипты, записывая их в Notepad++ или открытом окошке блокнота (совсем мелкие)).

Изобретаем велосипед с изменяемой геометрией колеса.

Для вышеуказанного нам потребуется менеджер горячих клавиш в возможностью повесить запуск программы на комбинацию (или multimedia-клавишу, если у кого есть на клавиатуре) и небольшая написанная нами программа.
На него мы повесим, во-первых, любимый текстовый редактор пошустрее (подсветка синтаксиса используемого скриптового языка — это плюс).
Программа, которую нужно написать, должна:
Когда где-то год назад мне захотелось сделать вышеуказанное, я состряпал страшненький прототип (C++ + WinAPI), который во время выполнения скрипта светил чёрным консольным окошком. Для ожидания, когда скопируется текст, был использован простой Sleep (лень тогда было делать, да ). И я до сих пор им пользуюсь (пришлось немного исправить в этом году, но это bugfix)! Выкладывать её, думаю, смысла нет, но в общих чертах опишу подводные камни:

Приделываем к велосипеду антикрыло.

В нагрузку у нас получился замечательный калькулятор, позволяющий считать где угодно . Единственное, что меня раздражало — приходилось писать:
print ( 2 + 2 * sin ( 2 ) )
# или:
print 2 + 2 * sin ( 2 )

вместо простого:
2 + 2 * sin ( 2 )

Так же появилась идея сделать предустановленный набор функций и, выбирая одну из них, преобразовывать выделенный текст. Сказано — сделано — уже скрипт на python (+PyQt) копировал выделенный текст и позволял преобразовать его одной из функций, доступных из меню с возможностью замены или сохранения результата в буфере обмена.
К примеру:
Выделяем:
'Container', 'container', False, 'j'

Выбираем в открывшемся по горячей клавише меню (клавиатурой, буквами, а не стрелочками ): "&cpp->&for each", результат вставляется на место выделения:
for ( Container::iterator j = container.begin (); j != container.end (); ++j ) {}

Или:
2+2*sin(2)

Горячая клавиша + x (пункт меню "&xeval") — результат:
3.81859485365

Алгоритм примерно такой:

Т.е. если в первом случае выделенный текст исполнялся как код, то во втором над выделенным текстом производятся заранее определённые манипуляции.

Дальнейшее облегчение скриптостроения.

Можно написать "библиотеку", в которую включать громоздкие и/или часто используемые операции. И подключать её, скажем, в stub-файле.
Для "меню" ("велосипед с антикрылом") у меня определены:

Для варианта с выполнением кода ("велосипед с изменяемой геометрией колеса") определено несколько функций, но пора их обновить — часть выкинуть, добавить новые

Грабли.

А куда без них?

Так было сделано у меня:
  Скрытый текст
В качестве подопытного выбран Python.
stub-файл:
# -*- coding: cp1251 -*-
from __future__ import print_function # привыкаю потихоньку к новому синтаксису
from __future__ import unicode_literals # важно! Иначе все строки с кириллицей придётся предварять 'u'.
import sys
sys.path.append ( r"D:\Development\bin\Python" )
import codecs, my, os, re, random
from math import * # :shuffle: не люблю писать math.sin
sys.stdout = codecs.getwriter ( 'cp1251' )( sys.stdout, errors = 'replace' ) # это workaround - из-за перенаправления вывода в pipe.
# 9 строк вниз для того, чтобы ошибки выводились со строки №10.


Параметры командной строки для программы:
clipboard_runner run-type wait-time template-file program [program-parameters]

run-type — с заменой или нет (-only_copy или -copy_to_place),
wait-time — время задержки в ms (для того, чтобы окно успело отреагировать, у меня 150),
template-file — имя/путь к stub-файлу,
program — что запускать (у меня — Python)
[program-parameters] — с какими параметрами запускать

Перенаправления stderr в stdout из консоли делается так (рекомендую сделать нормально, через WinAPI pipe или аналог ):
2>&1


У Qt (у меня меню с преднаписанными функциями на python + PyQt) есть фича: при закрытии содержимое буфера обмена не сохранится. Я делал так:
# Специально для того, чтобы в Windows сохранилось содержимое буфера обмена после
# закрытия программы:
app.sendEvent ( QApplication.clipboard (), QEvent ( QEvent.Clipboard ) )

где app — экземпляр QApplication.


Из велосипеда сделать автомобиль.

По-хорошему нужно было сделать программу с опциональным сохранением состояния (сохранение определённых функций on fly), подключающуюся к биндингу скриптового языка, нормальным GUI, кучей настроек, собственным менеджером горячих клавиш...

Создать opensource-проект, чтоли? Хотя, может, никому, кроме меня это не нужно .



Возвращаясь к исходной проблеме.

Телепат из меня фиговый. Скорее всего, формат лога сильно сложный, или время обработки его скриптом больше, чем время загрузки в Excel.
Но в бесконечно идеальном сферическом в вакууме мире, где скрипты на Python перемалывают гигабайты данных быстрее, чем бабочка машет крыльями, где в логе отдельным пунктом стоят имя пользователя и посещаемый им сайт, в этом случае (здесь
Автор: kochetkov.vladimir
Дата: 29.04.10
):

Это ж на каком уровне абстракции должны быть эти фильтры, чтобы ими можно было задать что вот сейчас мне нужно найти пользователя, который зашел на mail.ru, создал черновик письма, потом зашел на depositfiles и что-то туда залил, потом открыл этот черновик изменил его (вставил ссылку на закаченный файл), после чего отправил письмо и отпрапортавал об этом по аьске? Причем примерно в такой последовательности, т.к. сотрудников, работавших с теми же сайтами, но иначе было несколько?

я бы сделал фильтрацию скриптом вида:
with open ( r"D:\log.log", "r" ) as file :
    file.readline () # заголовок пропускаем
    for line in file :
        values = line.split ()
        # ...фильтрация...

по вхождению в определённое время (или пропустил бы это даже) и посещению файлов mail.ru и depositfiles и отправке сообщения icq. А уже потом руками среди меньшего числа записей хоть в том же Excel. Хотя раз уж Вы делали через Excel, это там сделать быстрее без промежуточных скриптов.
Re[7]: Openoffice...
От: Пацак Россия  
Дата: 30.04.10 01:19
Оценка: +3
Здравствуйте, Antikrot, Вы писали:

S>>Разбивай задачу на атомарные действия (найти человека (клиентский комп), найти скачивание файла...). По необходимости дописывай новые атомы. А затем из атомов составляй запрос, подставляя нужные параметры.

A>молодец, изобрёл sql кстати, в чём отличие от фильтра в excel-е? кроме NIH естественно.

— последовательной обработкой документа без необходимости держать его в памяти целиком
— потенциальной возможностью конвееризации действий (например просмотр в экселе уже отфильтрованных результатов)
Ку...
Re[2]: Openoffice...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 30.04.10 04:47
Оценка: +1
Здравствуйте, Anton Batenev,
AB>А у вас после посещения сотрудниками сортира образцы попадают сразу в хранилище или сначала проводится анализ на бак-посев?

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

И ты зря думаешь, что у вас в конторе данный процесс поставлен принципиально иначе

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.