Aнонс: Lightweight Sciter binding for .NET
От: Аноним  
Дата: 25.10.08 10:37
Оценка:
Возможно кому-то окажется полезным, а кто-то захочет принять участие.

Это маленькая и простая для использования (однако по возможностям практически не уступающая обертке HTMLayout из проекта Nabu).
В отличии от Nabu обертка построена над Sciter.

Основная идея — GUI оставить Скайтеру. Получать уведомления от Скайтера о событиях и предавать Скайтеру данные для изображения.

Скайтер может общаться с Хостом (Вашей программой) путем вызова метода view.callback либо определения behavior:script-host для любого из элементов и далее вызова метода xcall этого елемента. Второй метод более естественный, так как не ограничивает кол-во аргументов и позволяет вызывать функцию хоста по символьному имени.

Кода Скайтер вызывает Хост происходит событие CallHost в котором доступны аргументы и можно вернуть значение.

Хост может общаться со Скайтер посредством фукций Call (вызов функции Скайтера) и Eval.

Параметры и возвращаемые значения конвертируются между типами .NET и Скайтер автоматически (хотя и есть определённые ограничения)

Спасибо ребятам из проекта Nabu. Их работа позволила мне за 3-4 часа создать эту обёртку.

Текущая версия — это первый взгляд (оценка того, стоит или нет использовать эту технологию), поэтому пока в исходных текстах отсутствует корректная обработка ошибок, возвращаемых Скайтер API (дело будущего). Кто будет использовать имейте это в виду.

Ссылка проекта: http://code.google.com/p/sciternet/

--
Вадим Белобородов
sciter .net
Re: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.10.08 11:03
Оценка:
Здравствуйте, Аноним, Вы писали:

Куча заметок, не в порядке важности, а как в голову пришло


A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Империя наносит ответный удар :-)
От: vabe  
Дата: 25.10.08 11:56
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


A>Куча заметок, не в порядке важности, а как в голову пришло



A>

Не коим образом не хотел кого-то обидеть или задеть. Именно Вам я и высказал благодарность, за проект Nabu с помощью которого (в том числе с помощью копи-пасте за 3-4 часа создал этот код). Спасибо Вам еще раз (если 2 ранее не достаточно).

Честно признать про лицензию не задумывался. Возможно не прав. Поправьте.

AnkhSVN глючит, согласен. Но меня устраивает.

Спасибо, что поделились Вашим мнением как надо называть файлы. Но я пока буду называть так-как мне удобно.

Еще раз повторю, это эксперимент на предмет исследования технологии. Я не претендую на конечный продукт. Это взгляд на проблему, которой может поможет еще кому-то. Возможно что-то не так. (Вспомните Вашу первую реализацию Nabu.Forms.Html это-ли не был АД?)

Суть подхода — убираем Ваш краeугольный КАМЕНЬ HtmlTag — получаем легкую обертку. Это ли не решение? GUI-для Скайтер, остальное для .NET?

Как хост взаимодействует со Скайтером? У контрола Sciter есть метод Call. В Скайтере определяем функцию SuperNiceFunction. И вызываем ее: var rerVal = Control.Call("SuperNiceFunction", arg1, arg2, arg3)

Что удивительно, пока регистрировал свой код на google, обнаружил замечательнейший проект, которой покрывает 2 подхода (с "КРАЕУГОЛЬНЫМ КАМНЕМ" и без него). Ссылка: http://code.google.com/p/expemerent/
Re[3]: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.10.08 12:42
Оценка:
Здравствуйте, vabe, Вы писали:

V>Не коим образом не хотел кого-то обидеть или задеть.


Ты не обидел и не задел, прости если показался груб. Ещё одному HTMLayout'овцу я всегда рад

V>Честно признать про лицензию не задумывался. Возможно не прав. Поправьте.


Ну вот надо подумать.

V>AnkhSVN глючит, согласен. Но меня устраивает.


Просто Visual SVN дают на халяву, так что why not?

V>Спасибо, что поделились Вашим мнением как надо называть файлы.


Это стандарт .Net, а не мнение.

V>Еще раз повторю, это эксперимент на предмет исследования технологии. Я не претендую на конечный продукт. Это взгляд на проблему, которой может поможет еще кому-то. Возможно что-то не так. (Вспомните Вашу первую реализацию Nabu.Forms.Html это-ли не был АД?)


Первая реализация была говно.
Даже сейчас не всё шикарно. Скажем HtmlTag штука тяжёлая и сомнительной архитектурной красоты, но ничего лучше я не придумал пока. Попытки декомпозиции пока что были исключительно неудачными. W3C DOM model и реалии DOM IE/Mozilla заставляют думать, что видно у HtmlTag судьба такая

V>Суть подхода — убираем Ваш краeугольный КАМЕНЬ HtmlTag — получаем легкую обертку. Это ли не решение? GUI-для Скайтер, остальное для .NET?


Спорное утверждение. Скажем надо уметь вставлять .Net элементы управления. Меня об этом часто просят, вот скоро видимо руки дойдут сделать. То есть только возможностей HTML для GUI вообще говоря не хватает.

V>Как хост взаимодействует со Скайтером? У контрола Sciter есть метод Call. В Скайтере определяем функцию SuperNiceFunction. И вызываем ее: var rerVal = Control.Call("SuperNiceFunction", arg1, arg2, arg3)


Не, интересно из Sciter позвать что-то .Net.

V>Что удивительно, пока регистрировал свой код на google, обнаружил замечательнейший проект, которой покрывает 2 подхода (с "КРАЕУГОЛЬНЫМ КАМНЕМ" и без него). Ссылка: http://code.google.com/p/expemerent/


userstvo странная личность. Он до того сделал мёртвый Си++ проект lua-app представлявший собой Lua скрипт прикрученный к HTMLayout. Мне эта тема была интересна в какой-то момент, я ему писал (15 июня 2008), он мне даже не ответил. Сейчас вот expemerent. Видимо у человека навязчивая идея сделать такую же штуку как скайтер, но другую. Большого смысла для .Net я в этом не вижу, попытки сотрудничества прекратил.

Лично моё мнение, что с приходом CSSS! скайтер вообще потерял для .Net какой-либо интерес. Бизнес-логика на двух разных языках — зло. Я даже VB.Net с C# не смешиваю, а тут какой-то TIScript. Динамическая компиляция есть, ASP.Net-образный препроцессор генерирующий HTML сделать — пара пустяков. Я такое написал за день и ещё пару дней прикручивал разные наворотки (см Nabu.Text.Template*). Лично для меня use case вообще не очевиден. То есть если без фанатизма "хачу GUI на Sciter", то я не понимаю почему нельзя или сложнее тоже самое сделать на C#. Не восприми как наезд "гы-гы, ты сделал никому не нужную вещь", у меня опыт быть может и большой, быть может даже и больше чем у других, но специфический, от этого не убежать, и я какие-то вещи могу не понимать. Иногда Андрей что-то делает что я просто не понимаю, он мне говорит, объясняет, как об стенку горох В конце концов я просто принимаю его решения как обстоятельство. Так что давай подумаем можем ли мы продуктивно сотрудничать, куда кому развиваться и что надо от нас народу.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Империя наносит ответный удар :-)
От: vabe  
Дата: 25.10.08 13:43
Оценка:
Здравствуйте, adontz, Вы писали:

A>Не, интересно из Sciter позвать что-то .Net.


1) В .NET: реакция на событие CallHost
(В параметре события доступно какой метод (или если угодно какое это событие) надо обработать, какие переданы аргументы и какое будет
возвращаемое значение.
2) В Sciter
Первый способ — view.callback(channel, p1, p2)
Второй способ — <widget #host style="behavior:script-host" /> и self#host.xcall("FuncName", p1,....pX)

A>Лично моё мнение, что с приходом CSSS! скайтер вообще потерял для .Net какой-либо интерес. Бизнес-логика на двух разных языках — зло. Я даже VB.Net с C# не смешиваю, а тут какой-то TIScript. .....


Но Вы уже сделали шаг от Вашего утверждения (Бизнес-логика на двух разных языках — зло). Вы используете 1) HTML 2) CSS — уже 2 языка, один для разметки, другой для стилей. Если Вы используете базы данных, то еще и SQL. Делаете свои — шаблоны, опять таки что-то вроде языка(Еще один?).

В конечном итоге применение различных языков в проектах это просто необходимость так-как один конкретный язык слишком ограничен для своевременного создания с минимальными затратами коммерческого решения.

Представление данных для пользователя — это скорее не бизнес логика, а ее визуализация. Она может отличаться для разных пользователей одного проекта, для разных проектов (для разных заказчиков) с одинаковой бизнес логикой. Помимо разработки, возникает еще одна проблема при предложении программного продукта компаниям, работающим в конкурирующей области. Они, например, отказываются сотрудничать (или прекращают), если узнают, что аналогичные решения Вы, как разработчик, предлагаете их конкурентам. В этом случае простой способ избежать этого — зарегистрировать новое юридическое лицо и "натянуть на программу новое лицо". В случае со Sciter натягивание нового "лица" становиться простым, при этом "лицо" может быть таким, что "не узнает родная мама".

В конечном итоге у меня ряд ребят которые работали в области WEB приложений (HTML,JavaScript) и ничего не знают про С#, а подход со Sciter мне дает возможность использовать их навыки в новой области.
Re[5]: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.10.08 14:02
Оценка:
Здравствуйте, vabe, Вы писали:

A>>Лично моё мнение, что с приходом CSSS! скайтер вообще потерял для .Net какой-либо интерес. Бизнес-логика на двух разных языках — зло. Я даже VB.Net с C# не смешиваю, а тут какой-то TIScript. .....


V>Но Вы уже сделали шаг от Вашего утверждения (Бизнес-логика на двух разных языках — зло). Вы используете 1) HTML 2) CSS — уже 2 языка, один для разметки, другой для стилей. Если Вы используете базы данных, то еще и SQL. Делаете свои — шаблоны, опять таки что-то вроде языка(Еще один?).


Да, но на HTML и CSS я не бизнес-логику описываю.

V>В конечном итоге у меня ряд ребят которые работали в области WEB приложений (HTML, JavaScript) и ничего не знают про С#, а подход со Sciter мне дает возможность использовать их навыки в новой области.


Ах вот оно как. Так может продуктивнее было бы взять Nabu как есть и добавить качественную обёртку над TIScript, которая бы за счёт Reflection (включая кодогенерацию), внедряла бы в скрипт произвольные объекты .Net? Собственно, почему бы не взять, в конце концов, JavaScript.Net если аудитория — веб-разработчики?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Империя наносит ответный удар :-)
От: vabe  
Дата: 25.10.08 14:29
Оценка:
Здравствуйте, adontz, Вы писали:

A>Да, но на HTML и CSS я не бизнес-логику описываю.


Так и я не предлагаю. Меджу Sciter и Хостом существует "контракт" или API, по которому они обмениваются необходимыми данными и событиями. Sciter рисует на экране. Хост решает остальное.

V>>В конечном итоге у меня ряд ребят которые работали в области WEB приложений (HTML, JavaScript) и ничего не знают про С#, а подход со Sciter мне дает возможность использовать их навыки в новой области.


A>Ах вот оно как. Так может продуктивнее было бы взять Nabu как есть и добавить качественную обёртку над TIScript, которая бы за счёт Reflection (включая кодогенерацию), внедряла бы в скрипт произвольные объекты .Net? Собственно, почему бы не взять, в конце концов, JavaScript.Net если аудитория — веб-разработчики?


Продуктивнее чем что? Чем то-что уже написано за 4 часа и реализует основную идею и функционально достаточно(возможно пока написано не совсем красиво)?

Может поступить так (в опозицию Вашему предложению) — взять идею и сделать ее красивой в реализации?

Что касается обертки над TIScript, если Вам это интересно, то посмотрите на проект userstvo (про которого Вы не очень уважительно высказывались, как мне показалось). У него она уже есть, возможно не такая, как Вы указали. Можно написать класс на С# и использовать его в TIScript. Этот уникальный человек реализовал надстройки в одном коде над HTMLayout и Sciter (старой версии) одновременно. Поистине титанический и красивый труд (хотя и смахивает на Сизифов).
Re[4]: Империя наносит ответный удар :-)
От: c-smile Канада http://terrainformatica.com
Дата: 25.10.08 17:32
Оценка:
Здравствуйте, adontz, Вы писали:

A>Первая реализация была говно.

A>Даже сейчас не всё шикарно. Скажем HtmlTag штука тяжёлая и сомнительной архитектурной красоты, но ничего лучше я не придумал пока. Попытки декомпозиции пока что были исключительно неудачными. W3C DOM model и реалии DOM IE/Mozilla заставляют думать, что видно у HtmlTag судьба такая

V>>Суть подхода — убираем Ваш краeугольный КАМЕНЬ HtmlTag — получаем легкую обертку. Это ли не решение? GUI-для Скайтер, остальное для .NET?


A>Спорное утверждение. Скажем надо уметь вставлять .Net элементы управления. Меня об этом часто просят, вот скоро видимо руки дойдут сделать. То есть только возможностей HTML для GUI вообще говоря не хватает.


Для sciter.net обертки (могу кстати сайт такой отдать в хорошие руки).
Создание control'ов делается путем написания
type Control: Behavior { }

в sciter.

V>>Как хост взаимодействует со Скайтером? У контрола Sciter есть метод Call. В Скайтере определяем функцию SuperNiceFunction. И вызываем ее: var rerVal = Control.Call("SuperNiceFunction", arg1, arg2, arg3)


A>Не, интересно из Sciter позвать что-то .Net.


Host в принципе должен контролировать вызовы UI.
Идея единственного view.callback (UI <-> BL gate) представляется разумной.

A>Лично моё мнение, что с приходом CSSS! скайтер вообще потерял для .Net какой-либо интерес. Бизнес-логика на двух разных языках — зло. Я даже VB.Net с C# не смешиваю, а тут какой-то TIScript. Динамическая компиляция есть, ASP.Net-образный препроцессор генерирующий HTML сделать — пара пустяков. Я такое написал за день и ещё пару дней прикручивал разные наворотки (см Nabu.Text.Template*). Лично для меня use case вообще не очевиден. То есть если без фанатизма "хачу GUI на Sciter", то я не понимаю почему нельзя или сложнее тоже самое сделать на C#. Не восприми как наезд "гы-гы, ты сделал никому не нужную вещь", у меня опыт быть может и большой, быть может даже и больше чем у других, но специфический, от этого не убежать, и я какие-то вещи могу не понимать. Иногда Андрей что-то делает что я просто не понимаю, он мне говорит, объясняет, как об стенку горох В конце концов я просто принимаю его решения как обстоятельство. Так что давай подумаем можем ли мы продуктивно сотрудничать, куда кому развиваться и что надо от нас народу.


По ряду технических причин DOM в Sciter представлен лучше чем в htmlayout DOM .NET.
Например каждый мой внутренний html::view регистрирует себя как GC callback — т.е. у меня проблема сильных/слабых references не стоит.
Технически изоляция UI name/memory space и BL/DL name/memory space это good thing (tm) — разные времена и ритмы жизни.
Т.е. я бы не был столь категоричен про "потерял для .Net какой-либо интерес".
Я бы скорее говорил про ".Net потерял для Sciter какой-либо интерес" но эту пестню я уже спел не раз
Re: Aнонс: Lightweight Sciter binding for .NET
От: vabe  
Дата: 25.10.08 17:32
Оценка:
Поскольку есть проект http://code.google.com/p/expemerent/ (надстройка для .NET над Sciter и HTMLayout вместе), где можно УЖЕ реализовать аналогичную идею
анонс потерял актуальность (как и необходимость в таком проекте). Проект удален с GOOGLE.
Re[5]: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.10.08 17:58
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>По ряду технических причин DOM в Sciter представлен лучше чем в htmlayout DOM .NET.

CS>Например каждый мой внутренний html::view регистрирует себя как GC callback — т.е. у меня проблема сильных/слабых references не стоит.

Собственно, я забыл анонсировать, но мне удалось эту проблему достаточно просто решить. То есть того кошмара с reference counting больше нет.

CS>Технически изоляция UI name/memory space и BL/DL name/memory space это good thing (tm) — разные времена и ритмы жизни.

CS>Т.е. я бы не был столь категоричен про "потерял для .Net какой-либо интерес".
CS>Я бы скорее говорил про ".Net потерял для Sciter какой-либо интерес" но эту пестню я уже спел не раз

Не, ну Андрей, это не серьёзно Sciter не покрывает возможностей .Net Framework. Про средства разработки и говорить не приходится. HTML Layout Engine это да, актуально, этого нет. Более того, по объективным причинам библиотеки типа HTMLayout или AGG на .Net писать не стоит. Но ещё один скрипт, когда есть DLR? Да ну, нафиг.

Дело даже не в интеропе с unmanaged библиотекой, не в удобстве способа взаимодействия и не в синтаксисе. Дело в том, что при хостинге скрипта, штуки типа CAS делают жизнь радостной. Blizzard внедряя Lua в World of Warcraft перелопатили половину стандартной библиотеки, выкинули некоторые модули, порезали другие. Всё ради того, чтобы аддоны не хакали компьютеры пользователей. Знал бы ты как я намучался с этим кастратом... А в .Net надо 15 минут чтобы вручную настроить AppDomain по своему усмотрению. TIScript не так уж плохо, но зачем? Сейчас, ничто мне не мешает использовать C#, VB.Net, Managed JScript, Boo, IronPython, IronRuby, кучу других языков, даже смешивать их и точно знать, что не будет AV, других багов, что ни один язык не прочтёт файл с диска С и что соединяться они могут только с my-cool-script-host.org:4951, что у них одни и те же региональные настройки. К тому же это всё компилируется. Не, хостить unmanaged скрипт нет абсолютно никакого резона.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Империя наносит ответный удар :-)
От: vabe  
Дата: 25.10.08 18:49
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, c-smile, Вы писали:


CS>>По ряду технических причин DOM в Sciter представлен лучше чем в htmlayout DOM .NET.

CS>>Например каждый мой внутренний html::view регистрирует себя как GC callback — т.е. у меня проблема сильных/слабых references не стоит.

A>Собственно, я забыл анонсировать, но мне удалось эту проблему достаточно просто решить. То есть того кошмара с reference counting больше нет.


CS>>Технически изоляция UI name/memory space и BL/DL name/memory space это good thing (tm) — разные времена и ритмы жизни.

CS>>Т.е. я бы не был столь категоричен про "потерял для .Net какой-либо интерес".
CS>>Я бы скорее говорил про ".Net потерял для Sciter какой-либо интерес" но эту пестню я уже спел не раз

A>Не, ну Андрей, это не серьёзно Sciter не покрывает возможностей .Net Framework. Про средства разработки и говорить не приходится. HTML Layout Engine это да, актуально, этого нет. Более того, по объективным причинам библиотеки типа HTMLayout или AGG на .Net писать не стоит. Но ещё один скрипт, когда есть DLR? Да ну, нафиг.


Действительно, переборщил. Sciter хорош с С++. Но так-ли хорош С++?

A>Дело даже не в интеропе с unmanaged библиотекой, не в удобстве способа взаимодействия и не в синтаксисе. Дело в том, что при хостинге скрипта, штуки типа CAS делают жизнь радостной. Blizzard внедряя Lua в World of Warcraft перелопатили половину стандартной библиотеки, выкинули некоторые модули, порезали другие. Всё ради того, чтобы аддоны не хакали компьютеры пользователей. Знал бы ты как я намучался с этим кастратом... А в .Net надо 15 минут чтобы вручную настроить AppDomain по своему усмотрению. TIScript не так уж плохо, но зачем? Сейчас, ничто мне не мешает использовать C#, VB.Net, Managed JScript, Boo, IronPython, IronRuby, кучу других языков, даже смешивать их и точно знать, что не будет AV, других багов, что ни один язык не прочтёт файл с диска С и что соединяться они могут только с my-cool-script-host.org:4951, что у них одни и те же региональные настройки. К тому же это всё компилируется. Не, хостить unmanaged скрипт нет абсолютно никакого резона.


Microsoft поставляет Вам расширения для автоматизации действий в виде командных файлов вместе с операционной системой (как Blizzard — Lua для World of Warcraft). Но ведь не приходи в голову
запускать любой CMD файл, который можно скачать из Интернет?
Re[7]: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.10.08 19:18
Оценка:
Здравствуйте, vabe, Вы писали:

V>Действительно, переборщил. Sciter хорош с С++. Но так-ли хорош С++?


Для написания некоторых типов библиотек и приложений Си++ не просто хорош, он уникален.

V>Microsoft поставляет Вам расширения для автоматизации действий в виде командных файлов вместе с операционной системой (как Blizzard — Lua для World of Warcraft). Но ведь не приходи в головузапускать любой CMD файл, который можно скачать из Интернет?


Под Вистой? Почему бы и нет? Если что, будет rights elevation запрос. Идея, что программа изначально обладает всеми правами пользователя себя не оправдала. Идея что библиотека обладает всеми правами процесса — тоже. Microsoft активно внедряет идеологию "все мои потомки — засранцы" и это здорово. Я пишу программу, выкладываю SDK и точно знаю что ни один из aддонов написанных кем бы то ни было не украдёт у пользователя пароль ICQ. Ну разве не прелесть?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Aнонс: Lightweight Sciter binding for .NET
От: c-smile Канада http://terrainformatica.com
Дата: 25.10.08 19:45
Оценка:
Здравствуйте, vabe, Вы писали:

V>Поскольку есть проект http://code.google.com/p/expemerent/ (надстройка для .NET над Sciter и HTMLayout вместе), где можно УЖЕ реализовать аналогичную идею

V>анонс потерял актуальность (как и необходимость в таком проекте). Проект удален с GOOGLE.

А чего так круто?
Re[6]: Империя наносит ответный удар :-)
От: c-smile Канада http://terrainformatica.com
Дата: 25.10.08 20:47
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, c-smile, Вы писали:


CS>>По ряду технических причин DOM в Sciter представлен лучше чем в htmlayout DOM .NET.

CS>>Например каждый мой внутренний html::view регистрирует себя как GC callback — т.е. у меня проблема сильных/слабых references не стоит.
A>Собственно, я забыл анонсировать, но мне удалось эту проблему достаточно просто решить. То есть того кошмара с reference counting больше нет.

CS>>Технически изоляция UI name/memory space и BL/DL name/memory space это good thing (tm) — разные времена и ритмы жизни.

CS>>Т.е. я бы не был столь категоричен про "потерял для .Net какой-либо интерес".
CS>>Я бы скорее говорил про ".Net потерял для Sciter какой-либо интерес" но эту пестню я уже спел не раз

A>Не, ну Андрей, это не серьёзно Sciter не покрывает возможностей .Net Framework. Про средства разработки и говорить не приходится. HTML Layout Engine это да, актуально, этого нет. Более того, по объективным причинам библиотеки типа HTMLayout или AGG на .Net писать не стоит. Но ещё один скрипт, когда есть DLR? Да ну, нафиг.


"Ай опьять за рибу гроши..."

Это .NET не покрывает возможностей Sciter. Я абсолютно серьёзно.

By default VM алоцирует 2mb+2mb памяти на heap. И например scide за эти пределы и не выходит (7.8mb в памяти). Для сравнения Programmer's notepad (pnotepad.exe) в памяти 3.8mb. Т.е. фактически затраты по памяти это и есть мой преаллоцированный хип (4mb) для скрипта.

Компактность это design goal. Например у тебя elem.attributes это аллоцированный объект в heap (GC и все такое)
а у меня attributes, style, state это просто value (this, interfaceRef). И так далее.
Меньше требований по памяти — менее критичные требования к GC — более простая/компактная имплементация — выше скорость работы (начальная загрузка и в runtime).

Короче, это все зело философично.

"Sciter не покрывает возможностей .Net Framework" — "нонсенс твои слова есть". .Net Framework не покрывает все воможности C++, Windows, Apache, you name it. Нужна возможность добавить ту или иную функциональность (embeddability) и все будет нормально.

"Про средства разработки и говорить не приходится". Тоже спорное утверждение.
Если тебе для имплементации некоей вселенской абстракции требуется пара-тройка классов вместо одной функции то да, появляется потребность в intellisense и class tree. К слову в своих проектах (htmlayout,sciter) я не использую указанные фичи. Как-то нет потребности. Хватает голимого VS6.

"Но ещё один скрипт, когда есть DLR". Начать с того что DLR еще нет по хорошему.
И вообще я не понимаю зачем мне в одном и том же memory space одновременно IronRuby, IronPython, CLR, Interop и прочая...
Желаю видеть мух отдельно от чахахбили. То же самое про UI, логику и DAL.
Re[7]: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.10.08 21:29
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Это .NET не покрывает возможностей Sciter. Я абсолютно серьёзно.

CS>By default VM алоцирует 2mb+2mb памяти на heap. И например scide за эти пределы и не выходит (7.8mb в памяти). Для сравнения Programmer's notepad (pnotepad.exe) в памяти 3.8mb. Т.е. фактически затраты по памяти это и есть мой преаллоцированный хип (4mb) для скрипта.
CS>Компактность это design goal. Например у тебя elem.attributes это аллоцированный объект в heap (GC и все такое)
CS>а у меня attributes, style, state это просто value (this, interfaceRef). И так далее.
CS>Меньше требований по памяти — менее критичные требования к GC — более простая/компактная имплементация — выше скорость работы (начальная загрузка и в runtime).

У .Net GC многопоточный и основан на поколениях, а не mark&sweep, так что его запуск не тормозит программу, так что тут как раз TIScript в пролёте. value типы в .Net есть, аргумент мимо кассы. Насчёт требований по памяти... .Net приложения, конечно, любят выделять память впрок, но легко эту лишнюю память отдают ОС при необходимости, так что никакой такой катастрофы с памятью нет.

CS>"Sciter не покрывает возможностей .Net Framework" — "нонсенс твои слова есть". .Net Framework не покрывает все воможности C++, Windows, Apache, you name it. Нужна возможность добавить ту или иную функциональность (embeddability) и все будет нормально.


Ну возможности Windows .Net Framework не покрывает, потому что это ОС и, скажем, Kernel API и не должны быть доступны. Кроме того есть достаточно удобный Interop. Что, разве stdlib покрывает все возможности Windows?

Си++ язык, зачем его сравнивать с библиотекой? Возвожности CRT и STL .Net Framework покрывает.

Что касается Apache, есть WCF — полноценный веб-хостинг не хуже IIS. Собственно, считай, что это IIS 7.0

CS>"Про средства разработки и говорить не приходится". Тоже спорное утверждение.

CS>Если тебе для имплементации некоей вселенской абстракции требуется пара-тройка классов вместо одной функции то да, появляется потребность в intellisense и class tree. К слову в своих проектах (htmlayout,sciter) я не использую указанные фичи. Как-то нет потребности. Хватает голимого VS6.

На проектах от 3х человеко-месяцев отсутствие IntelliSence сказывается значительно. У меня друг в 1С шурует, там тоже на IntelliSence большей частью забили. Жутко неудобно.

CS>"Но ещё один скрипт, когда есть DLR". Начать с того что DLR еще нет по хорошему.


CLR есть, значит CAS и прочие прелести налицо.

CS>И вообще я не понимаю зачем мне в одном и том же memory space одновременно IronRuby, IronPython, CLR, Interop и прочая...


Тебе — незачем, проекту в целом, на которым работает много людей, вполне может быть надо. Ядро пишут одни, расширения — другие, возможно на другом языке. Обычное дело в большом проекте.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Aнонс: Lightweight Sciter binding for .NET
От: vabe  
Дата: 25.10.08 23:03
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, vabe, Вы писали:


V>>Поскольку есть проект http://code.google.com/p/expemerent/ (надстройка для .NET над Sciter и HTMLayout вместе), где можно УЖЕ реализовать аналогичную идею

V>>анонс потерял актуальность (как и необходимость в таком проекте). Проект удален с GOOGLE.

CS>А чего так круто?


Так не жалко, поскольку ничего особого и не было... Была идея — попробовал, вроде работает. Обнаружил, что обёртка (для идеи) уже есть.

Зачем плодить одинаковый код и тратить время?

Другое дело, что как-бы попроще "завернуть" в Sciter из .NET перечислимые данные (не в смысле emum-ов). Что-то вроде virtual-grid и data-source.
Получается немного накладно конвертировать длинные массивы в JsonValue для передачи их в качестве параметров (конечно, можно попробовать получать данные частями с помощью вызова функций .NET из Sciter). Вроде логично выглядит, если мы в Sciter передаем данные, то эта передача должна быть максимально оптимизирована. Если у Вас есть какие-нибудь идеи. С удовольствием их выслушаю.

Кстати, если кому-то нужен http://code.google.com/p/expemerent/ исправленный для текущей версии Sciter, я могу поделиться.
Re[3]: Aнонс: Lightweight Sciter binding for .NET
От: vabe  
Дата: 25.10.08 23:25
Оценка:
О.. Сообщение прошлое пропало. Придется повторить....


Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, vabe, Вы писали:


V>>Поскольку есть проект http://code.google.com/p/expemerent/ (надстройка для .NET над Sciter и HTMLayout вместе), где можно УЖЕ реализовать аналогичную идею

V>>анонс потерял актуальность (как и необходимость в таком проекте). Проект удален с GOOGLE.

CS>А чего так круто?


Так если есть уже реализация, зачем повторять? Тем более, что реализация не самоцель. Цель эффект от реализации

Тольк вот есть еще одна проблема. Как эффективно работать с большим кол-вом данных? Передавать их массивами немного накладно. На мой взгляд есть 3 варианта.

1) Отказаться от длинных списков и просматривать страницами (вызывая из Sciter функции .NET)? Заказчики не в восторге от постраничного просмотра...
2) Как-то оптимизировать передачу данных из .NET в Sciter (что-бы не было конвертирования .NET->JsonValue всего массива при передаче)?
3) Вернуть в Sciter возможность создания элементов управления через HWND как в HTMLayout (или оно там есть, просто в другом месте?) и создать легкие обертки для них.
(по сути-то нужен только Grid с возможностью сортировки и фильтрации, ну может Tree)

Какие-нибудь другие интересные идеи?
Re[8]: Империя наносит ответный удар :-)
От: c-smile Канада http://terrainformatica.com
Дата: 26.10.08 02:43
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, c-smile, Вы писали:


A>У .Net GC многопоточный и основан на поколениях, а не mark&sweep, так что его запуск не тормозит программу, так что тут как раз TIScript в пролёте. value типы в .Net есть, аргумент мимо кассы. Насчёт требований по памяти... .Net приложения, конечно, любят выделять память впрок, но легко эту лишнюю память отдают ОС при необходимости, так что никакой такой катастрофы с памятью нет.


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

Я доходчиво концепт изложил?

CS>>"Sciter не покрывает возможностей .Net Framework" — "нонсенс твои слова есть". .Net Framework не покрывает все воможности C++, Windows, Apache, you name it. Нужна возможность добавить ту или иную функциональность (embeddability) и все будет нормально.


A>Ну возможности Windows .Net Framework не покрывает, потому что это ОС и, скажем, Kernel API и не должны быть доступны. Кроме того есть достаточно удобный Interop. Что, разве stdlib покрывает все возможности Windows?


Вот. Ключевое слово Interop. Interop это бездна в которой тонут все усилия по безопасности (все макаки, см. выше, считают своим долгом чего-нить непотребное засунуть). Не... ну надо делать все из из себя такое managed и оставлять Interop чтобы потом куча умельцев прямо из UI туда лезла.

Между BL/DAL и UI должен быть один gate с простым протоколом "дай данные"/"на тебе данные" — нечто типа http ajax шлюза — чтобы можно было бы зерна от плевел отличать. UI как правило statefull а BL/DAL сугубо функционально stateless — разные времена жизни объектов — разные политики GC и пр.

A>Си++ язык, зачем его сравнивать с библиотекой? Возвожности CRT и STL .Net Framework покрывает.


А детерминирванный С++ очень себя хорошо чувствует на logic layer где он свободен от многопарадигмной каши UI.
Связка SciterUI + С++ на самом деле более устойчивая чем просто "C++ везде" — достаточно глянуть в WTL чтобы ощутить "сиротство как блаженство".
То же самое и про "С# везде" — ну не может чистый OOP язык быть одинаково хорошим и для UI и для логики.

HTMLayout вот получил CSSS! не от хорошей жизни. Все что можно сделать в нём можно сделать и средствами Nabu.
Но руки тянутся к CSSS!, да? По простой собственно причине — UI это просто набор мелких штук типа "enable this when click on that". Мутить
твердотельные классы на каждый такой пук просто технически неоправдано.

A>Что касается Apache, есть WCF — полноценный веб-хостинг не хуже IIS. Собственно, считай, что это IIS 7.0


Кул. Вот там .NETу и место. Там ему хорошо.

CS>>"Про средства разработки и говорить не приходится". Тоже спорное утверждение.

CS>>Если тебе для имплементации некоей вселенской абстракции требуется пара-тройка классов вместо одной функции то да, появляется потребность в intellisense и class tree. К слову в своих проектах (htmlayout,sciter) я не использую указанные фичи. Как-то нет потребности. Хватает голимого VS6.

A>На проектах от 3х человеко-месяцев отсутствие IntelliSence сказывается значительно. У меня друг в 1С шурует, там тоже на IntelliSence большей частью забили. Жутко неудобно.


IntelliSense это строгая типизация. Не все задачи в неё одинаково хорошо укладываются.
IntelliSense это удобно, но это понижение порога вхождения со всеми вытекющими. Когда развитие задачи "выходит на редан" то IntelliSense приходится отключать ибо тормозит — быстрее напечатать.

CS>>И вообще я не понимаю зачем мне в одном и том же memory space одновременно IronRuby, IronPython, CLR, Interop и прочая...


A>Тебе — незачем, проекту в целом, на которым работает много людей, вполне может быть надо. Ядро пишут одни, расширения — другие, возможно на другом языке. Обычное дело в большом проекте.


Ну дык и я о том — есть UI его пишем в терминах легко модифицируемо настраиваемых HTML/CSS/Script ибо это величина переменная по определению.
Но есть и логика — некий черно-ящичный-конечный-автомат подключенный к безобразию UI через контролируемый шлюз. И неважно находятся эти UI и логика внутри одного процесса или разнесены по сетке — принципы должны быть те же. Layers придуманы не на пустом месте.

Вот такие пироги.

c-smile, дежурный по палате инженер-проктолог.
Re[9]: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.10.08 09:17
Оценка:
Здравствуйте, c-smile, Вы писали:

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

CS>Я доходчиво концепт изложил?

Да, я только не понял почему System.Object тупая макака, а вот объект TIScript — индивид с интеллектом.

CS>Вот. Ключевое слово Interop. Interop это бездна в которой тонут все усилия по безопасности (все макаки, см. выше, считают своим долгом чего-нить непотребное засунуть). Не... ну надо делать все из из себя такое managed и оставлять Interop чтобы потом куча умельцев прямо из UI туда лезла.


Причём тут безопасность? Выключаем через CAS интероп и никто его не сможет использовать. Делов то.

CS>Между BL/DAL и UI должен быть один gate с простым протоколом "дай данные"/"на тебе данные" — нечто типа http ajax шлюза — чтобы можно было бы зерна от плевел отличать. UI как правило statefull а BL/DAL сугубо функционально stateless — разные времена жизни объектов — разные политики GC и пр.


BL и DAL не stateless, потому что транзакция. Хорошо, когда тебе удаётся запихать транзакцию целиком в вызов BL из UI, но такое бывает редко. Кроме того, твой подход приводит к дублированию данных, двойному перерасходу памяти и невозможности использования bindable коллекций.

CS>То же самое и про "С# везде" — ну не может чистый OOP язык быть одинаково хорошим и для UI и для логики.


А кто сказал, что C# — чистый ООП? У C# куча декларативных возможностей.

CS>HTMLayout вот получил CSSS! не от хорошей жизни. Все что можно сделать в нём можно сделать и средствами Nabu.

CS>Но руки тянутся к CSSS!, да? По простой собственно причине — UI это просто набор мелких штук типа "enable this when click on that". Мутить твердотельные классы на каждый такой пук просто технически неоправдано.

Для меня дело не в лени, а в single responsibility. Если надо сделать что-то специфичное для UI — я там и сделаю. Красивая анимация — CSSS!, проверка корректности введённых значений — C#. Каждому своё.

A>>На проектах от 3х человеко-месяцев отсутствие IntelliSence сказывается значительно. У меня друг в 1С шурует, там тоже на IntelliSence большей частью забили. Жутко неудобно.

CS>IntelliSense это строгая типизация. Не все задачи в неё одинаково хорошо укладываются.

У 1С достаточно строгая типизация, просто, например, параметры метода не типизированы, объект переданный в метод теряет информацию о типе и что делать с параметром не ясно совсем.

CS>IntelliSense это удобно, но это понижение порога вхождения со всеми вытекющими. Когда развитие задачи "выходит на редан" то IntelliSense приходится отключать ибо тормозит — быстрее напечатать.


Когда у тебя 2-3 тысячи классов, ты просто не помнишь что печатать, хотя и догадываешься, ибо предметная область и naming style. Я сам, в своих же программах написанных пол-года, год назад чуть-чуть блуждаю. То есть в принципе понятно что оно и как, но помнить всю иерархию я не в состоянии. Всякие Go to definition, Find References и проч. рулят немеряно.

A>>Тебе — незачем, проекту в целом, на которым работает много людей, вполне может быть надо. Ядро пишут одни, расширения — другие, возможно на другом языке. Обычное дело в большом проекте.


CS>Ну дык и я о том — есть UI его пишем в терминах легко модифицируемо настраиваемых HTML/CSS/Script ибо это величина переменная по определению.

CS>Но есть и логика — некий черно-ящичный-конечный-автомат подключенный к безобразию UI через контролируемый шлюз. И неважно находятся эти UI и логика внутри одного процесса или разнесены по сетке — принципы должны быть те же. Layers придуманы не на пустом месте.

В .Net контролируемым шлюзом является observable model, какой-нибудь IBindingList. В Си++ родных событий нет и механизм не прижился.
На самом деле такой шлюз очень удобен, я полностью контролирую все действия UI, могу отменить любое изменение или скорректировать его, с одной стороны. С другой стороны меня не принуждают к формату хранения, коллекция даже не обязательно должна быть целиком в памяти. Я использую это на практике, реально пишу на порядок меньше кода, чем с ручным перекидыванием данных в UI и обратно. Описывается всё тоже замечательно.
MyDataGrid.DataSource = MyCollection;

Он сам вытянет элементы, спросит у коллекции ReadOnly и если да, то спрячет кнопку Add New.
Собственно, если взять Nabu.Collections.BindingListEx вместо стандартного, то там вообще можно творить чудеса
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Aнонс: Lightweight Sciter binding for .NET
От: ecinunice  
Дата: 26.10.08 19:21
Оценка:
Здравствуйте, vabe, Вы писали:

V>Кстати, если кому-то нужен http://code.google.com/p/expemerent/ исправленный для текущей версии Sciter, я могу поделиться.


Если не сложно, поделитесь; модификацию для WM делали?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[5]: Aнонс: Lightweight Sciter binding for .NET
От: vabe  
Дата: 26.10.08 19:59
Оценка:
Здравствуйте, ecinunice, Вы писали:

E>Здравствуйте, vabe, Вы писали:


V>>Кстати, если кому-то нужен http://code.google.com/p/expemerent/ исправленный для текущей версии Sciter, я могу поделиться.


E>Если не сложно, поделитесь; модификацию для WM делали?


Для WM нет. Там нет реализации для Sciter на WM (только для HTMLayout). Судя по всему HTMLayout не сильно изменился, поэтому код возможно будет работать и с обновленными версиями.
Re[6]: Aнонс: Lightweight Sciter binding for .NET
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.10.08 20:04
Оценка:
Здравствуйте, vabe, Вы писали:

V>Для WM нет. Там нет реализации для Sciter на WM (только для HTMLayout). Судя по всему HTMLayout не сильно изменился, поэтому код возможно будет работать и с обновленными версиями.


Сложно быть не должно. Лично я упёрся только в отсутствие маршалинга для ANSI строк. В итоге родилось такое
    public sealed class MarshalCF
    {
        unsafe public static string PtrToStringAnsi(IntPtr ptr)
        {
            byte* lpStart = (byte*)ptr;
            byte* lpEnd = lpStart;

            for (; *lpEnd != 0; ++lpEnd)
            {
            }

            Decoder decoder = Encoding.ASCII.GetDecoder();
            char[] buffer = new char[decoder.GetCharCount(lpStart, (int)(lpEnd - lpStart), true)];

            fixed (char* lpBuffer = buffer)
            {
                decoder.GetChars(lpStart, (int)(lpEnd - lpStart), lpBuffer, buffer.Length, true);
            }

            return new string(buffer, 0, buffer.Length);
        }

        unsafe public static IntPtr StringToHGlobalAnsi(string value)
        {
            Encoder encoder = Encoding.ASCII.GetEncoder();

            fixed (char* lpValue = value)
            {
                int stringLength = encoder.GetByteCount(lpValue, value.Length, true);
                IntPtr lpString = Marshal.AllocHGlobal(stringLength);

                encoder.GetBytes(lpValue, value.Length, (byte*)lpString, stringLength, true);

                return lpString;
            }
        }
    }

Используйте на здоровье
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[7]: Aнонс: Lightweight Sciter binding for .NET
От: vabe  
Дата: 26.10.08 20:14
Оценка:
Здравствуйте, adontz, Вы писали:

A>Сложно быть не должно. Лично я упёрся только в отсутствие маршалинга для ANSI строк. В итоге родилось такое


Спасибо. Ваш код я видел давно (с той поры как он на google). Дело не в проблеме написания обертки,
кроме того в вышеупомянутом проекте есть обертка над HTMLayout для WM. Дело в целесообразности SCITER для WM
и в том, что на terrainformatica последний sciter для WM датирован осенью 2007 года (который по части API кардинально
отличается от текущей версии)
Re[8]: Aнонс: Lightweight Sciter binding for .NET
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.10.08 20:25
Оценка:
Здравствуйте, vabe, Вы писали:

V>Спасибо. Ваш код я видел давно (с той поры как он на google).


У меня зарождается мания преследования. Всё-то он видел...

V>Дело в целесообразности SCITER для WM


HTMLayout на WM есть, Lua в C++ проекте для покетов я видел. Думаю moSciter не такая уж бесполезная штукенция.

V>и в том, что на terrainformatica последний sciter для WM датирован осенью 2007 года (который по части API кардинально отличается от текущей версии)


О, посмотри сколько мы просили 64итный билд HTMLayout Каждая новая платформа это сложно и я Андрея в этом очень хорошо понимаю. Мне вот, элементарно, NT и CE версию поддерживать сложно, постоянно ломаю билды. А ещё, бывает, 2005 студия у кого-то...
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[9]: Aнонс: Lightweight Sciter binding for .NET
От: vabe  
Дата: 26.10.08 20:54
Оценка: +1
Здравствуйте, adontz, Вы писали:

V>>Дело в целесообразности SCITER для WM

A>HTMLayout на WM есть, Lua в C++ проекте для покетов я видел. Думаю moSciter не такая уж бесполезная штукенция.

Я немного не досказал мысль — целесообразности обертки для .NET над moSciter для WM. Там итак все плохо с ресурсами. Судя по всему
его надо использовать как есть (на C или С++)
Re[10]: Aнонс: Lightweight Sciter binding for .NET
От: c-smile Канада http://terrainformatica.com
Дата: 26.10.08 21:40
Оценка:
Здравствуйте, vabe, Вы писали:

V>Здравствуйте, adontz, Вы писали:


V>>>Дело в целесообразности SCITER для WM

A>>HTMLayout на WM есть, Lua в C++ проекте для покетов я видел. Думаю moSciter не такая уж бесполезная штукенция.

V>Я немного не досказал мысль — целесообразности обертки для .NET над moSciter для WM. Там итак все плохо с ресурсами. Судя по всему

V>его надо использовать как есть (на C или С++)

Сгласный я. Кузнец на том сеновале нам не нужен.
Re[10]: Империя наносит ответный удар :-)
От: c-smile Канада http://terrainformatica.com
Дата: 27.10.08 04:16
Оценка:
Здравствуйте, adontz, Вы писали:

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

CS>>Я доходчиво концепт изложил?

A>Да, я только не понял почему System.Object тупая макака, а вот объект TIScript — индивид с интеллектом.


Чего стоит твоему GC вот эта макака?
http://www.java2s.com/Code/CSharp/2D-Graphics/GradientLabelHost.htm
простое же дело в принципе — label с gradient. Но вот этой лэйбочке нужно только для работы 7(семь) gc-able и disposable объектов.
Для встраивания в IDE еще пара классов нужна. Итого получаем требование иметь супер-GC за для просто порисовать.

Я про это.

CS>>Ну дык и я о том — есть UI его пишем в терминах легко модифицируемо настраиваемых HTML/CSS/Script ибо это величина переменная по определению.

CS>>Но есть и логика — некий черно-ящичный-конечный-автомат подключенный к безобразию UI через контролируемый шлюз. И неважно находятся эти UI и логика внутри одного процесса или разнесены по сетке — принципы должны быть те же. Layers придуманы не на пустом месте.

A>В .Net контролируемым шлюзом является observable model, какой-нибудь IBindingList. В Си++ родных событий нет и механизм не прижился.

A>На самом деле такой шлюз очень удобен, я полностью контролирую все действия UI, могу отменить любое изменение или скорректировать его, с одной стороны. С другой стороны меня не принуждают к формату хранения, коллекция даже не обязательно должна быть целиком в памяти. Я использую это на практике, реально пишу на порядок меньше кода, чем с ручным перекидыванием данных в UI и обратно. Описывается всё тоже замечательно.
A>
A>MyDataGrid.DataSource = MyCollection;
A>

A>Он сам вытянет элементы, спросит у коллекции ReadOnly и если да, то спрячет кнопку Add New.
A>Собственно, если взять Nabu.Collections.BindingListEx вместо стандартного, то там вообще можно творить чудеса

Ну дык!

Мега-проблема с универсальными компонентами — универсальное решение всегда избыточно для каждой конкретной задачи.
Всегда найдется частное решение которое будет эффективнее универсального.
Т.е. в принципе не существует, скажем, идеального грида. В каждом частном случае нужно нечто свое.
Всё что можно универсализировать здесь это дать систему кубиков (DOM/CSS) и дать способ их и их событий связывать по-всякому.
Re[11]: Империя наносит ответный удар :-)
От: adontz Грузия http://adontz.wordpress.com/
Дата: 27.10.08 04:51
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Чего стоит твоему GC вот эта макака?

CS>http://www.java2s.com/Code/CSharp/2D-Graphics/GradientLabelHost.htm
CS>простое же дело в принципе — label с gradient. Но вот этой лэйбочке нужно только для работы 7(семь) gc-able и disposable объектов.
CS>Для встраивания в IDE еще пара классов нужна. Итого получаем требование иметь супер-GC за для просто порисовать.
CS>Я про это.

В .Net всё сводиться либо к unmanaged GDI+, либо к, по сути, тоже unmanaged WPF. То есть твою аргументацию я на 100% принимаю, но и в Майкрософте не дураки

CS>Мега-проблема с универсальными компонентами — универсальное решение всегда избыточно для каждой конкретной задачи.

CS>Всегда найдется частное решение которое будет эффективнее универсального.
CS>Т.е. в принципе не существует, скажем, идеального грида. В каждом частном случае нужно нечто свое.
CS>Всё что можно универсализировать здесь это дать систему кубиков (DOM/CSS) и дать способ их и их событий связывать по-всякому.

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

Так что лучше бы тебе дать людям мегарешение "от автора", гении не все. А где украсть, я уже сказал
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[10]: Aнонс: Lightweight Sciter binding for .NET
От: adontz Грузия http://adontz.wordpress.com/
Дата: 27.10.08 04:55
Оценка:
Здравствуйте, vabe, Вы писали:

V>Я немного не досказал мысль — целесообразности обертки для .NET над moSciter для WM. Там итак все плохо с ресурсами. Судя по всему его надо использовать как есть (на C или С++)


Честно говоря, в скорость рендеринга HTMLayout я на покетах упирался гораздо чаще, чем в скорость работы .Net CF. А вот write once, run everywhere некоторую категорию разработчиков всегда привлекало.
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.