PowerShellFar — PowerShell host и автоматизация Far Manager

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

PowerShellFar — PowerShell host и автоматизация Far Manager

Postby NightRoman » Thu 18 Jan, 2007 06:49

Тут обсуждаем плагин PowerShellFar.
Связанная тема: обсуждение FarNet.

PowerShellFar scripts created by other authors: search.php?keywords=PSF&fid%5B%5D=56&sf=titleonly&sr=topics
Last edited by NightRoman on Thu 20 Jan, 2011 15:24, edited 4 times in total.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Fri 02 Feb, 2007 15:35

В последнем анонсе версии 1.0.8 я упомянул, что эта версия уже похожа на первоначальную задумку. Пока знаю одну проблему (у себя) - если редактор запущен модально из PowerShell кода, то из него уже PowerShell код (пока) не вызовешь. Это я в ближайшие дни поправлю (не для всех случаев, но будет вполне практично).

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

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Postby mugz » Mon 05 Feb, 2007 08:19

Мне кажется несколько избыточным использовать PowerShell для скриптов для редактора.

Мила PowerShell синтаксиса, как мне кажется, в том, что оно похоже на стандартные шеллы: вызов всяких экзешников выглядит как родной, но сравнения и проч - явно сделаны в качестве инородного элемента.

например зачем использовать PSh чтобы просто сделать отступ в редакторе:

Code: Select all

for($i = 0; $i -lt $tabSize; ++$i) {
    if ($text[$i] -ne ' ') { break }
}
if ($i -lt $text.Length) {
    $line.Text = $text.Substring($i)
}


Вместо:

Code: Select all

for(i=0; i<tabSize; ++i)
    if (text[i]!=' ')
         break;
if(i<text.Length)
     line.Text = text.Substring[i];   


User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 09:45

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

PowerShell вообще избыточен, сколько лет без него прекрасно обходились. Но: и применение .NET как такового избыточно - все на С\С++ можно делать и лишние метры фреймворка не грузить и вспомогательные планины, обеспечивающие доступ к Far.

Это дело вкуса. И удобства. И скорости разработки. Особенно задач-однодневок, а то и одно-разок. PowerShell cкрипты для некоторых задач удобнее и реально экономят общее время разработки и оперативного внесения изменений (говорю за себя).

Меня не коробит синтаксис операторов сравнения абсолютно, хотя и необычен, и предпочел бы я тоже "нормальный". Но это ж просто синтаксис. Ну вот в WSH .js скриптах нормальные операторы, но не прижился у меня этот инструмент и все тут - его возможностей явно не хватает, тут никакой синтаксический сахар не поможет. Кстати, в команде разработчиков PowerShell этот спор об операторах шел пару лет, и на таком синтаксе все же остановились не случайно (почему - не в курсе).

Вопрос производительности PowerShell - это да, может быть критично для некоторых операций. В этом случае перекинуть скрипт на .NET язык - пустяковое дело (но уже убедившись, что он делает то, что нужно и нужен как таковой). Кстати, хотелось бы жалобы про производительность услышать, если есть, что именно тормозит, кроме "все" :) и первой загрузки сессии PowerShellFar.

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Postby mugz » Mon 05 Feb, 2007 09:53

NightRoman wrote:Скриптов можно наделать тонны и никуда их не грузить, использовать только по необходимости - в случае с .NET кодом так не выйдет (напрямую).


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

NightRoman wrote:Это дело вкуса. И удобства. И скорости разработки. Особенно задач-однодневок, а то и одно-разок. PowerShell cкрипты для некоторых задач удобнее и реально экономят общее время разработки и оперативного внесения изменений (говорю за себя).

Меня не коробит синтаксис операторов сравнения абсолютно, хотя и необычен, и предпочел бы я тоже "нормальный".


Какое конкретно ты преимущество получаешь от PSh по сравнению, скажем, с JS.NET? За чято ты платишь таким синтаксисом?

Но это ж просто синтаксис. Ну вот в WSH .js скриптах нормальные операторы, но не прижился у меня этот инструмент и все тут - его возможностей явно не хватает, тут никакой синтаксический сахар не поможет. Кстати, в команде разработчиков PowerShell этот спор об операторах шел пару лет, и на таком синтаксе все же остановились не случайно (почему - не в курсе).


Мне кажется, что это для того, чтобы всё органично укладывалось в существующую комстроку. То есть чтобы c:\windows\cmd.exe было вызовом cmd.exe а c:\windows\cmd.exe > test.txt было вызовом с перенаправлением.

Но зачем это в редакторе?

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Postby mugz » Mon 05 Feb, 2007 09:57

Дополнение: в свое время у меня была идея сделать некую надстройку над Far.Net, которая бы позволяла динамисески классифицировать объекты внутри фара и писать к ним методы.

Что-то типа:

Code: Select all

     <class name="CSharp" extends="SourceCode" where="extension == '*.cs'">
           <method name="block comment" language="JScript">
            function doIt(s)
            {
                   return s.replace(/^/g, '//');
            }
           
           </method>
     </class>

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 10:06

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

Как это сделать (в принципе) - я знаю, было бы время и руки бы дошли.

Какое конкретно ты преимущество получаешь от PSh по сравнению, скажем, с JS.NET? За чято ты платишь таким синтаксисом?

Про удобство вызова приложений (как из cmd) ты уже упомянул. Но это не главное для меня, главное .NET - вот это действительно революционно в PowerShell. Ну и то, что конвейер из объектов - это тоже класс.

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

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 10:09

надстройку над Far.Net, которая бы позволяла динамисески классифицировать объекты внутри фара и писать к ним методы.

Опять же - в случае с PowerShell никакая надстройка не нужна - эти возможности (добавить методы или свойства динамически) уже есть в PowerShell.

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Postby mugz » Mon 05 Feb, 2007 10:25

тут не имеются ввиду методы с точки зрения .NET а методы с точки зрения пользхователя - они могут показываться как пукты контествоно меню.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 10:38

тут не имеются ввиду методы с точки зрения .NET а методы с точки зрения пользхователя - они могут показываться как пукты контествоно меню.


Дошло, ясно. Но опять - надо надстройку делать и пользователю эти конфиги описывать и следовать некоторым новым правилам и т.д. Фреймворк начинает обрастать условностями.

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

В конечном счете это все равно дело вкуса.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 15:42

Обдумал я еще разок нашу дискуссию. Думаю, нет, ничуть не избыточно применять PowerShell для автоматизации редактора. Скрипты в редакторах - это очень даже обычная практика. А PowerShell - это один из мощнейших и удобнейших скриптовых языков на данный момент. Ответ вроде сам напрашивается.

Кстати, упомянутый пример кода с отступами в редакторе изначально у меня и был на C++ (вместе с авто-форматированием отступов). Перенес я их в PowerShell сначала просто в целях демонстрации и тестирования, а кончилось тем, что первоначальный C++ плагин я выбросил - мне смысла держать его просто нет - PowerShellFar я все равно использую, зачем мне лишнюю dll держать и грузить всякий раз? Разницы в производительности я не ощущаю (конечно, если прогнать в цикле и померять время, окажется, что теперь это делается в, скажем (не мерял), 100 раз медленнее, ну и что, я ж по команде эту операцию всегда делаю, а не в циклах).

Опять же со скриптами элементарно выделить и использовать в других скриптах общую функциональность (уже сделано: New-Editor-.ps1 New-Regex.ps1 Select-Menu-.ps1) - не надо думать ни о каких дополнительных библиотеках и прочих приседаниях. Нет-нет, скриптовый подход определенно имеет много плюсов. Наличие минусов - это нормально, никакой подход не может быть идеален. Но для не слишком объемных задач на PowerShell я пока реально серьезных минусов не вижу. Кроме того, насколько я знаю от разработчиков PowerShell на их форуме, MS эту технологию будут развивать и далее, производительность в том числе.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Postby t-rex » Mon 05 Feb, 2007 15:46

NightRoman
Круче FarMailScript нету :P

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 16:00

Ну я ж не говорил, что PowerShell самый крутой :)

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Postby t-rex » Mon 05 Feb, 2007 16:09

Чисто для интереса, скока памяти и CPU отнимает запущеный Far.NET плагин и ещё запущенный под ним скрипт PowerShell?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 16:15

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

А CPU как именно померять (я не мастак в этом)?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Postby NightRoman » Mon 05 Feb, 2007 16:21

Позапускал все скрипты, что есть в наличии, и запустил бесконечный цикл. Память 37 мегов, CPU 50% (показывает process explorer)


Return to “Обсуждение плагинов”

Who is online

Users browsing this forum: Google [Bot] and 11 guests