конвейер
Конвейер для ActionScript3 от Евгения Потапенко - Флэш Потрошитель - flash, flex, air, swf, flv, fla, ruby, mxml, as, video, 3d, игры, dvd ripper, flash player, soul catcher
флэш, флекс, пекс
Флэш Потрошитель ru | en
Введите условия поиска
Flash Ripper
Flexipedia
Отправить форму поиска
MTASC для Flash 9: haXe компилирует приложения для Flash Player 9. Началось!
... и
Кодирование 8-битных PNG-картинок в Actionscript3 »
12.Июль.2007
Конвейер для ActionScript3 от Евгения Потапенко
Евгений Потапенко признался, что уже месяца два как выложил ActionScript3-версию своего класса Conveyor, ставшим для многих незаменимым помощником во флэш-программировании.
По ссылке - отличнейшая статья конвейер исходники.
Писал Rost, 12 Июль 2007 23:16
Найдены баги:
А я своим пользуюсь ;)
nouba™. 13 Июль 2007 9:20
очень понравилось:
"Далее. Garbage Collector ну просто зверь. Удаляет из памяти работающие анонимные конвейеры с большой охотой."
;)
The Helmsman™. 13 Июль 2007 12:30
Конвейер для зарабатывания денег от Евгения Потапенко...
Иван™. 13 Июль 2007 22:54
Забавно, как часто одни конвейер те же мысли независимо приходят разным людям :)
Dan™. 17 Июль 2007 11:06
Как-то не верится в перпективность этого подхода на больших командных проектах...
ManowaR™. 17 Июль 2007 11:59
Если сделать компилятор, который будет использовать конвееры прозрачно, то это будет гораздо лучше традиционного подхода.
Особенно на больших командных проектах.
Dan™. 18 Июль 2007 11:01
можно подробнее о компиляции? ;) звучит немного нелепо.
по поводу больших проектов... тоже не понял ;)
Евгений Потапенко™. 18 Июль 2007 12:54
На AS 2.0 пишем:
class Foo {
function bar() {}
}
а компилятор это превращает в
Foo.prototype.bar = function() {}
Прозрачное использование прототипов.
Ничто не мешает сделать компилятор, который будет превращать
function roll() {
startRоulette();
var result = sendRollRequest();
stopRоulette(result.num);
animateWinNumber(result.num);
animatePayout(result.payout);
}
в конвеер.
Скорее всего, подребуется какое-то ключевое слово, чтобы сказать, что функция "блокирующая", то есть выполнится не сразу, конвейер спустя какое-то время, в течение которого исполнение дальше не происходит.
Пока не прийдёт ответ от сервера, считается, что выполняется sendRollRequest конвейер stopRоulette ждёт своей очереди.
Разве это не более читабельно конвейер интуитивно понятно, чем масса событий конвейер их обработчиков, да ещё конвейер с делегированием методов?
Dan™. 19 Июль 2007 13:16
а, понял, трансляция (генерация) кода....
для меня лично данный код менее читабельный, так как не показывает реальную логику работы приложения.
Если есть интерес в придумывании своих языков конвейер кодогенерации, посмотрите jetbrains MPS.. это пока бета конвейер для джавы (генерится пока только в джаву). Очень увлекательно. Для AS не применимо, но сознание расширяет.
Евгений Потапенко™. 19 Июль 2007 14:27
Вот ещё пример (сильно утрированный).
Пишем:
function foo() {
// что-то делаем до логина
this.sendLoginRequest(this.username, this.password);
// что-то делаем после логина
}
Компилятор делает из этого нечто вроде такого:
function foo() {
// делаем что-то до логина
var c = new BlockingCall(this, this.sendLoginRequest, [this.username, this.pass]);
c.onComplete = function() {
// делаем что-то посел логина
}
}
Т.е. разбивает функцию на две части, сам прописывает обработку события, сам оформляет функцию sendLoginRequest так, чтобы она делала не просто return, конвейер вызывала onComplete конвейер т.д.
В результате код получается на порядок чище конвейер разработчик освождается от рутины.
Dan™. 19 Июль 2007 15:15
Вот ещё пример (сильно утрированный).
Пишем:
function foo() {
// что-то делаем до логина
this.sendLoginRequest(this.username, this.password);
// что-то делаем после логина
}
Компилятор делает из этого нечто вроде такого:
function foo() {
// делаем что-то до логина
var c = new BlockingCall(this, this.sendLoginRequest, [this.username, this.pass]);
c.onComplete = function() {
// делаем что-то посел логина
}
}
Т.е. разбивает функцию на две части, сам прописывает обработку события, сам оформляет функцию sendLoginRequest так, чтобы она делала не просто return, конвейер вызывала onComplete конвейер т.д.
В результате код получается на порядок чище конвейер разработчик освождается от рутины.
Dan™. 19 Июль 2007 15:16
угу, выглядит как эмуляция потоков исполнения конвейер их остановки в AS, идея старая, конвейер я о ней писал в первой статье. Зашибись конечно, но честно говоря не понимаю зачем.
А что код получается чище - опять же могу поспорить, для меня код читабельный - в первую очередь отображающий реальное положение дел, конвейер в вашем коде, то что поток остановится - не очевидно, что код будет выполнен после ответа сервера - тоже из кода не видно, по мне лучше уж использовать конвейер, тут есть логика исполнения, которая видна из кода, плюс AS3 в котором есть куча преимуществ, так как там делегирование встроенное.
если есть идея - добро пожаловать, реализуйте, покажите, можно будет пощупать. конвейер так... это праздные разговоры, о том как было бы хорошо иметь такие-то возможности.
Евгений Потапенко™. 19 Июль 2007 15:30
> для меня лично данный код менее читабельный,
> так как не показывает реальную логику работы
> приложения.
Как раз таки прекрасно видна последовательность действий.
Что после чего следует.
> конвейер в вашем коде, то что поток остановится - не
> очевидно, что код будет выполнен после ответа
> сервера - тоже из кода не видно
В других языках народ как-то не особо с этим парится. Напротив, неблокирующие вызовы, которые возвращаются сразу, конвейер исполняются когда-то потом чаще становятся причинами ошибок.
А когда пишут
sleep(100)
прекрасно понимают, что на 100 милисекунд выполнение приостановится.
Или пишут:
if (socket.connect(...)) {
socket.send(...);
}
и прекрасно понимают, что отправка произойдёт только после соединения.
В AS для этого приходится писать несколько фукнций конвейер присваивать из в обработчики событий.
В результате логика оказывается сильно размазана.
> для меня код читабельный - в первую очередь
> отображающий реальное положение дел
Чтобы чётко отображать реальное положение дел необходимо писать на Flasm :)
Но почему-то многие считают, что чем выше уровень абстракции, тем лучше код.
Dan™. 20 Июль 2007 10:23
так никто не лишает вас возможности такой подход реализовать, вам нравится - вперед :)
а по другим языкам, я уже достаточно долго пишу на джаве 95 процентов своего рабочего времени, 5 процентов флекс, серверную часть, там где многопоточность дикая, так вот сделал там я конвейер конвейер это решило огромное количество проблем, конвейер с производительностью конвейер с логикой. Хотя казалось бы остановил поток конвейер "все читабельно".
в общем тут вопрос больше вкуса,
а к вашему посту - "сделайте - посмотрим" как я уже говорил
Евгений Потапенко™. 20 Июль 2007 11:40
кстати, как я понял
sleep(100)
if (socket.connect(...)) {
socket.send(...);
}
из джавы во всяком случае код похож,
так вот, за sleep(100) обычно отрубают руки по плечи, конвейер
if (socket.connect(...)) {
socket.send(...);
}
это пример "из учебника", когда пишут серьезное приложение с сокетом, такой подход работы с потоками конвейер сокетами просто не используется, ибо опять же нужно руки отрубать по майку, гляньте MINA - event driven куда эффективнее конвейер понятнее.
а когда плюс конвейер - так вообще сказка, поверьте.
и флейм этот нужно закрывать, хотите поболтать добро пожаловать - mail собака potapenko com
Евгений Потапенко™. 20 Июль 2007 12:04
Критерий тут, возможно, такой. - Можно ли использовать такие приложения как, например, Enterprise Architect, совместно с подобным конвейером.
Поясню. Enterprise Architect позволяет создавать, используя UML, различные модели будующего приложения, конвейер потом применять Reverse Code Engineering, с возможностью генерации кода в том числе конвейер на ActionScript 2.0
Цитата на счет возможностей создания кода
http://sparxsystems.com.au/products/ea_features.html
" Fully template driven code generation engine - modify inbuilt templates or write your own from scratch
Add additional target languages
Syntax highlighted source code editor with quick "save and synch" capability
Inbuilt support for C++, Java, C#, VB.Net, Visual Basic, Delphi, PHP, Python and ActionScript
Support for CORBA also available as free plug-in"
*******
Раз заявлено о "Fully template driven code generation engine", стало быть - нужно это конвейер реализовать, соответствующие templates.
Кому-то, может, конвейер ActionScript 1 кажется достаточно высокоуровневым, конвейер кому-то, может, конвейер ассемблер - верх торжества над компьютером.
Но, согласитесь, на AS1 создать большое конвейер робастое приложение невозможно. Мы упремся в сложность. Как раз со сложностью конвейер призваны бороться все более конвейер более высокоуровневые абстракции конвейер языки программирования.
Ну конвейер какая замечательная получается тут возможность - создать "высокоуровневые" UML-модели, сгенерировать потом за мгновение - одновременно код для двух различных клиентов - на Flash конвейер на Java (область применения может быть конвейер как desktop-приложение, конвейер не только web).
Так что, Евгений, такая прекрасная возможность - создать templates для Enterprise Architect конвейер этим увенчать разработку.
А если возможностей (желания) особо нет, то, может быть, Constantiner, сможет все проанализировать конвейер создать такие templates. Знаний то хватает.
Я просто пока, на данную минуту, не могу сообразить, как это сделать, Reverse Code Engineering для конвейера - БЕЗ использования таких templates. Но может нужно просто подумать/разобраться?
Но, все же, раз конвейер написан на AS3, без создания новых templates все равно никак не обойтись.
Может быть кто-то еще хочет в лучах славы погреться - создать эти templates?
Одно важно замечание. Как упростить. В Java существует поддержка вызовов native-методов, написанных на C.
И достаточно широко используется.
Конечно же Enterprise Architect не будет генерировать код на С конвейер поддержку его в Java, при создании Java-приложения по объектной модели, описанной на UML.
Т.е., по аналогии, часть конвейера, которая, может быть, не совсем "объектная" - вынести ее в фиксированную часть кода в шаблонах.
Критерий тут, возможно, такой. - Можно ли использовать такие приложения как, например, Enterprise Architect, совместно с подобным конвейером.
Поясню. Enterprise Architect позволяет создавать, используя UML, различные модели будующего приложения, конвейер потом применять Reverse Code Engineering, с возможностью генерации кода в том числе конвейер на ActionScript 2.0
Цитата на счет возможностей создания кода(http://sparxsystems.com.au/products/ea_features.html):
" Fully template driven code generation engine - modify inbuilt templates or write your own from scratch
Add additional target languages
Syntax highlighted source code editor with quick "save and synch" capability
Inbuilt support for C++, Java, C#, VB.Net, Visual Basic, Delphi, PHP, Python and ActionScript
Support for CORBA also available as free plug-in"
*******
Раз заявлено о "Fully template driven code generation engine", стало быть - нужно это конвейер реализовать, соответствующие templates.
Кому-то, может, конвейер ActionScript 1 кажется достаточно высокоуровневым, конвейер кому-то, может, конвейер ассемблер - верх торжества над компьютером.
Но, согласитесь, на AS1 создать большое конвейер робастое приложение невозможно. Мы упремся в сложность. Как раз со сложностью конвейер призваны бороться все более конвейер более высокоуровневые абстракции конвейер языки программирования.
Ну конвейер какая замечательная получается тут возможность - создать "высокоуровневые" UML-модели, сгенерировать потом за мгновение - одновременно код для двух различных клиентов - на Flash конвейер на Java (область применения может быть конвейер как desktop-приложение, конвейер не только web).
Так что, Евгений, такая прекрасная возможность - создать templates для Enterprise Architect конвейер этим увенчать разработку.
А если возможностей (желания) особо нет, то, может быть, Constantiner, сможет все проанализировать конвейер создать такие templates. Знаний то хватает.
Я просто пока, на данную минуту, не могу сообразить, как это сделать, Reverse Code Engineering для конвейера - БЕЗ использования таких templates. Но может нужно просто подумать/разобраться?
Но, все же, раз конвейер написан на AS3, без создания новых templates все равно никак не обойтись.
Может быть кто-то еще хочет в лучах славы погреться - создать эти templates?
Одно важно замечание. Как упростить. В Java существует поддержка вызовов native-методов, написанных на C.
И достаточно широко используется.
Конечно же Enterprise Architect не будет генерировать код на С конвейер поддержку его в Java, при создании Java-приложения по объектной модели, описанной на UML.
Т.е., по аналогии, часть конвейера, которая, может быть, не совсем "объектная" - вынести ее в фиксированную часть кода в шаблонах.
P.S. Вообще, наверное, до того, как разработчики не реализуют поддержку генерации кода на AS3, смысла от такого шаблона будет немного. Но, это можно узнать - может быть поддержка AS3 вот-вот будет добавлена.
Про то, что поддерживается именно AS2 - написано у них вот тут:
http://sparxsystems.com.au/products/ea.html
Евгений Н.™. 22 Июль 2007 1:28
Ой, Ctrl-C/Ctrl-V сработало не так, получилось дублирование, не заметил.
Прочтите P.S. в конце предыдущего поста.
Евгений Н.™. 22 Июль 2007 1:34
Прочитал еще список последних фич
http://sparxsystems.com.au/products/ea_history.html
В разделе "Changes and fixes for Build 814" говорится, что "Increased range of embedded elements that can be created through automation interface."
А в разделе "Summary of features for Enterprise Architect - > Code Engineering" написано про С.
Так что один из путей упрощения угадал верно.
Евгений Н.™. 22 Июль 2007 2:18
в ЕА уже давно есть поддержка AS3 в любую сторону, но есть пару ошибок в темплитах кода для генирации AS3 файлов, где-то я видел как их править но уже не помню - смысл такой
1. неверно проставляются импорты (нужно их перенисти в тело пакета)
2. при генирации интерфейса генерирует видимостьего методов (приват/паблик) на что ругаеться компилдтор.
А вообще отличный инструмент, я им регулярно пользуюсь!
__i™. 22 Июль 2007 21:25
Все верно, AS 3 есть. Я до этого в плотную не занимался такими вещами.
У кого-нибудь под рукой есть ссылочка на исправленные теймплейты по AS3, или может в текущей версии (7) они уже исправлены?
И что тут за опция в разделе настроек генерации AS-кода: Collection Classes - ?
Жмем F1, открывается Help, в нем просто перечислены пункты в этом окне. Хм...
Евгений Н.™. 22 Июль 2007 22:12
Нажал F1 в диалоговом окне "Collection Classes", хелп показывается с подробным описанием. Вопрос снимается.
Евгений Н.™. 22 Июль 2007 22:17
Соседние записи:
MTASC для Flash 9: haXe компилирует приложения для Flash Player 9. Началось!
... и
Кодирование 8-битных PNG-картинок в Actionscript3 »
Примечания:
Статус документа: в процессе
2002-2007 Производство: Рост Прибыли · О проекте ·
Подписка на новости (RSS)
разделы
анкетирование
фарфор
рассылка корреспонденция
купить электроэнцефалограф
5004.13 (крышка)
заказать микроавтобус
прамышленый альпинизм
уничтожитель
100 девчонка одна лифт
спецобувь
факсимиле
диспетчеризация
подготовка ielts
культура танго
время владимир
меховой холодильник
лечение зарубежом
сканер штрихкодов
мачта флагшток
дюпон краска
асбест хризотиловый
эфирный антенна locus
облицовка электрокамин
пвс
лечение слух
кулер комп
бахила производитель
электроинструмент метабо
свойство краска
измеритель температры
купить пк
автономный электроснабжение
8800 gold
lucent definity
холодильник норд
нард скачать
доставка
купить nokia 8910
подбор эмаль
многотарифные электросчетчик
северский доломит
комнатный перегородка
газонокосилка elmos
сейфовые ячейка
купить яйцеварку
анимация 3d график
измеритель температры
силуэт слименд лифт
фарфор
очки защитный
программа шифрование данный
конвейер