Pull to refresh

Comments 38

Прочел с удовольствием. Статья очень интересная. Но… как быть с безопасностью самой софтины и отловом ошибок?
1) Безопасность — надо иметь продуманный API который просто не позволит сделать лишнего :)
2) А с отловом ошибок в чем проблема? IronPython.Hosting.PythonEngine будет бросать исключения — а там уже можно реагировать как нужно. Сообщать пользователю, вести лог etc.
1) Думаю, без явного указания пермишшинов для загружаемых в хост-среду сборок не обойтись. Иначе макросы-«злоумышленники» смогут безнаказанно и к БД обращаться, и диски форматировать, и по сетке данные гонять…
Автору спасибо. Наглядный пример преимуществ .NET платформы.

Было бы воообще замечательно если бы еще продемонстрировали пример создания примитивного API хотябы из нескольких команд…
Могу добавить — хотя тут ничего нет сложного. Просто вместо прямого обращения к свойству textBox.Text будет использоваться класс-посредник. Будет что то вроде TextProcessor.Text, а textBox на форме будет private.
А то сейчас можно сделать например так: textBox.Hide() — и поля ввода не будет :) что не есть хорошо.
Спасибо за интересный материал.

Интересно будет подумать о таком подходе для создания расширений ASP.NET сайтов. Некие пользовательские скриптики. В принципе всё то же самое, только API надо очень детально прописывать и заботится о безопасности сильнее.
Все таки не будем путать — для ASP.NET сайтов пользователи будут использовать клиентские технологии — типа JavaScript. Хотя думаю IronPython можно прикрутить через Silverlight контрол :) — но это уже извращение конечно…
Боюсь вы меня привратно поняли. JS — это исключичтельно на клиенте. А я говорю про сервер. Макросы, которые будут расширять функциональность сайта.

Применительно к соц. сетям — будет искать людей схожими с вами по интересам, или которые читают те же блоги, что и Вы. Да много чего можно придумать, главное что бы API приложения позволяло производить эти хитрые поисковые операции.

У фейсбука есть похожий механизм — facebook applications

Так вот я говорю о подобном.
Да, я действительно не так понял :)

Можно дополнить статью применением IPy для расширения возможностей сайта :)
Нет, нет. SL + IPy это красота :)
Я просто не так понял комментарий — я думал предлагается создавать клиентские скрипты для ASP.NET сайтов на IPy.
Подобный подход используется, кстати в Miranda IM и очень успешно. Там в качестве плагина можно установить mBot, подсунуть Миранде php5ts.dll (дллка от PHP) и писать скрипты используя API от Миранды.
Ничо, нормально.
<grammar nazi>
Слово «макрос» в единственном числе — «macro».
Во множественном числе — «macros». Не «macroses»! :)
en.wiktionary.org/wiki/macro
</grammar nazi>
а с дебагом и IDE для IronPyton как? можно ли это в Visual Studio писать (что бы синтакс подсвечивался и выпадали автодополнения) и дебажить?
UFO landed and left these words here
UFO landed and left these words here
Ну вот по поводу среды для IPy на основе Visual Studio — у меня не слишком хорошие впечатления остались. Как то странно работает IntelliSense. А особо кроме него и подсветки мне ничего не нужно от среды :)
Сейчас действительно нет хорошей IDE для IronPython. Будем надеятся, что с выходом релизной сборки ситуация изменится.
UFO landed and left these words here
UFO landed and left these words here
Если речь о dynamic — это не то. Это шаг к «утиной типизации» — но от необходимости компиляции не избавляет.
Для этих целей еще существует проект Python for .NET. Можете ли что нибудь сказать про него? В чем преимущества/недостатки перед IronPython?
Python.NET позволяет просто получить из стандартного питона доступ к .NET сборкам. IronPython — это реализация языка Python для .NET, интерпретатор написан на C# и представляет собой обычную сборку, которую можно подключить к своим проектам и использовать.
Спасибо! Очень полезно. Недавно задался вопросом, как реализовать скриптовую систему, думал уж, что придется делать через Reflection. Теперь знаю, как лучше)
Статья хорошая, но не о ней хочу спросить. Вот у Вас в C# коде есть место, где при создании нового пункта меню с очередным макросом, свойству присваивается значение: { MacrosFileName = file };
Как описание это возможности найти в MSDN? По «new» не вижу ничего похожего.
Это возможность C# 3.0, если не ошибаюсь. Суть в том, что можно в фигурных скобках у конструктора задавать значения для свойств создаваемого класса. Например:

Button btn = new Button()
{
Content = «This is a button»,
Width = 100,
Height = 50
};

Так же, можно инициализировать значения в списке, например new List() { 1, 2, 3 };
В примере с List — это инициализация массива. Так же можно делать для new int[] {1,2,3}

При создании объекта можно в фигурных скобках инициализировать поля — new Object1() { Field1 = value }. Как совершенно верно было отмечено, это особенность C# 3.0
А, это хабр есть угловые скобки)) Короче, здесь List — это список интегеров.
Да понял про суть. Я просто хотел бы почитать про это в MSDN, но не могу найти, где такое описано.
Спасибо большое за статью! Не удалось ли Вам нормально подключить System.IO?
import clr
clr.AddReference(«System»)
from System.IO import *
так импорт отрабатывает, но всякие StreamReader-ы не доступны
явно укзать from System.IO import Directory — ругается, что не может подключить имя Directory
IPy юзаю версии 2.01, кстати, там хостить слегка по-другому надо, чем у Вы написали.
Only those users with full accounts are able to leave comments. Log in, please.