Модульность исходников для использования отдельных частей

Хотите говорить о Far и не знаете, куда обратиться?
Post Reply
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 4 times

Модульность исходников для использования отдельных частей

Post by techie »

Far Manager стал опенсурсным. Это хорошо. Хорошо лично для меня, как давно сменившего платформу с винды. В самой винде я ни о чем не скучаю, а вот некоторые инструменты Far хотел бы портировать для личных целей. Благодаря BSD лицензии теперь есть шанс, но он всё же слишком мизерен, т.к. я не знаю С++ (только Python) и с трудом ориентируюсь в исходниках. Но и то и другое поправимо. Кроме того, я не замахиваюсь на то, чтобы портировать весь Far. Есть только один действительно серьёзный вопрос - насколько тесно различная функциональность Far связана?


Для примера.
Я хочу использовать часть Far, которая делает рекурсивный поиск по файлам. Что мне нужно для того, чтобы заюзать эти функции? Допустим, конечная цель, это консольная утилита, которая ждёт ввода маски, и выводит список найденных файлов на экран. Проблемы, которые я вижу:

1. Поиск идёт в отдельном процессе
2. Функции поиска выводят нечто куда-то

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

По второму пункту, на какие ещё абстракции завязана функция поиска файлов? В каком виде отдаётся результат? Возможно ли скомпилировать программу с этой функцией, заткнув системные виндовые вызовы аналогичными из моей системы? Возможно ли сгенерировать binding (например, с помощью shiboken), чтобы получить возможность дёргать эту функцию через Python.


Я на самом деле не уверен, что это вообще мне нужно. Возможно, только в академических целях. Но такая модульность имеет одно полезное свойство - она даёт возможность покрыть API тестами. Более того, тестировать части по отдельности мелкими прожками (в т.ч. написанными на Python) без перекомпиляции.
User avatar
citRiks
Posts: 1527
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 458 times
Been thanked: 93 times

Модульность исходников для использования отдельных частей

Post by citRiks »

Я тоже обожаю "академические цели", поэтому прокомментирую, пусть даже и через десятилетие :)
Насколько знаю я, порывшись в исходниках ФАРа.
Экспортировать внутреннюю кухню (в DLL) относительно легко, но НЕБЫСТРО.
2.) А есть другие задачи гораздо приоритетнее.
3.) Если кому-то это сильно надо, тот может написать плагин который будет делать automation с выводом в любой требуемый формат.
Плагин может быть написан уже на Питоне, ДотНете, Паскале, Луа, С++.

Насчет самой целесообразности.
Затрудняюсь представить себе что в ФАРе может представлять ценность само по себе вне контекста самого ФАРа.
Поиск файлов например не представляет собой ничего замечательного по сравнению с кучей других утилитит.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 4 times

Модульность исходников для использования отдельных частей

Post by techie »

Способ организации кода в виде независимых частей - совсем не академическая, а практическая цель. Задача здесь уменьшить количество контекста требуемого для определённой функциональности. Например, поиск можеет быть заменён запусков fd и передачей результата в панель. Здесь интересно, какие возможности отвалятся, какие экстра вызовы делает Far при нативном поиске, насколько просядет производительность, время ответа.
User avatar
citRiks
Posts: 1527
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 458 times
Been thanked: 93 times

Модульность исходников для использования отдельных частей

Post by citRiks »

techie, в прынципе могу согласится, озвученные цели имеют смысл.
но в чем смысл говорить об этих или других благородных пожеланиях,
когда, например, панельный фильтр можно только через UI задaвать? :facepalm:
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Post Reply

Return to “Обсуждение Far Manager”