ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
prof.js
ECMAScript 262-5th based JavaScript
       Dynamic TypeSystem.
 with Trace and Profiling functions
Prof.js
Prof.js
Prof.js
Prof.js
Prof.js
Prof.js
Prof.js
Prof.js
Prof.js
function mm_each(data, // @arg Object/Function/Array/Hash: data
                 fn) { // @arg Function: callback function
                       // @help: mm.each
                       // @desc: each object
//{@debug
    mm.allow(data, "Object/Function/Array/Hash");
    mm.allow(fn,   "Function");
//}@debug

    typeof data.each === "function" ? data.each(fn)
                                    : Object_each(data, fn);
}
Prof.js
function mm_each(data, // @arg Object/Function/Array/Hash: data
                 fn) { // @arg Function: callback function
                       // @help: mm.each
                       // @desc: each object
//{@debug
// mm.allow(data, "Object/Function/Array/Hash");
// mm.allow(fn,    "Function");
//}@debug

    typeof data.each === "function" ? data.each(fn)
                                    : Object_each(data, fn);
}




//{@debug
prof.add(
    "mm.each(data:Object/Function/Array/Hash, fn:Function"
);
//}@debug
Prof.js
Aspect-Oriented Programming)
Prof.js
?
    ¨C
    ¨C
    ¨C
    ¨C
        ?
        ?
?
    ¨C
?
    ¨C
mm.each = function() {
    switch (ÒýÊý¤ÎÊý) {
    case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    }
    console.group("évÊýÃû");

     var now = Date.now();
     var rv = org_mm_each.apply(mm, arguments);
     _tm[path].time += (Date.now() - now);
     _tm[path].count++;

     console.groupEnd();
     mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ");
     return rv;
};
mm.each = function() {
    switch (ÒýÊý¤ÎÊý) {
    case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    }
    console.group("évÊýÃû");

     var now = Date.now();
     var rv = org_mm_each.apply(mm, arguments);
     _tm[path].time += (Date.now() - now);
     _tm[path].count++;

     console.groupEnd();
     mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ");
     return rv;
};
mm.each = function() {
    switch (ÒýÊý¤ÎÊý) {
    case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    }
    console.group("évÊýÃû");

     var now = Date.now();
     var rv = org_mm_each.apply(mm, arguments);
     _tm[path].time += (Date.now() - now);
     _tm[path].count++;

     console.groupEnd();
     mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ");
     return rv;
};
mm.each = function() {
    switch (ÒýÊý¤ÎÊý) {
    case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ");
    }
    console.group("évÊýÃû");

     var now = Date.now();
     var rv = org_mm_each.apply(mm, arguments);
     _tm[path].time += (Date.now() - now);
     _tm[path].count++;

     console.groupEnd();
     mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ");
     return rv;
};
?
    ¨C
    ¨C
?
      ¨C
      ¨C

// ¥é¥¤¥Ö¥é¥ê(lib)¤ÎAPI¤ÎÐÍÇéˆó¤òµÇåh
prof.add(
    'lib.fn1()',
    'lib.fn2(a:Integer/String = ",", b:Object):Object',
    'lib.fn3(...:Mix):Array',
    'lib.fn4(a:Mix):Boolean'
);
// ¥Í¥¤¥Æ¥£¥Ö¥ª¥Ö¥¸¥§¥¯¥È¤Î„ӵĤÊÐÍ¥Á¥§¥Ã¥¯¤â¿ÉÄÜ
prof.add(
    'String#hoge(a:Mix,b:Mix,c:Mix):String'
);
<script src=/slideshow/profjs/14966767/"debug/prof.js"></script>
<script src="mm.js"></script>
<!-- mm.js ¤Ï
  mm.allow ¤Ç„ӵĤÊÐÍ¥Á¥§¥Ã¥¯¤òʹ¤¦ˆöºÏ¤Ë±ØÒª -->

<script>
prof.add("¡­");
</script>
? mofmof.js
   ¨C http://code.google.com/p/mofmof-js/


? prof.js
   ¨C http://code.google.com/p/mofmof-
     js/source/browse/trunk/js_src/debug/prof.js

More Related Content

What's hot (19)

Understanding Python decorators
Understanding Python decoratorsUnderstanding Python decorators
Understanding Python decorators
JosipKatalinic
?
[170510 4??]C?? A?
[170510 4??]C?? A?[170510 4??]C?? A?
[170510 4??]C?? A?
arundine
?
Convert bilangan
Convert bilanganConvert bilangan
Convert bilangan
Hanifu Al-Klantingy
?
How
HowHow
How
AimanNour
?
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Lo?c Knuchel
?
??????????????????????????????
?????????????????????????????? ??????????????????????????????
??????????????????????????????
knangsmiley
?
§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó, C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3
§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó,  C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó,  C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3
§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó, C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3
Platonov Sergey
?
Effective java Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍ
Effective java   Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍEffective java   Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍ
Effective java Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍ
Kane Shih
?
6. separation, namespace, error
6. separation, namespace, error6. separation, namespace, error
6. separation, namespace, error
Vahid Heidari
?
6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó
6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó
6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó
DEVTYPE
?
Project
ProjectProject
Project
taufiq26
?
The Flavor of TypeScript
The Flavor of TypeScriptThe Flavor of TypeScript
The Flavor of TypeScript
Dmitry Sheiko
?
Form Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansForm Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeans
Aldila Putri
?
Understanding Python decorators
Understanding Python decoratorsUnderstanding Python decorators
Understanding Python decorators
JosipKatalinic
?
[170510 4??]C?? A?
[170510 4??]C?? A?[170510 4??]C?? A?
[170510 4??]C?? A?
arundine
?
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Lo?c Knuchel
?
??????????????????????????????
?????????????????????????????? ??????????????????????????????
??????????????????????????????
knangsmiley
?
§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó, C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3
§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó,  C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó,  C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3
§¡§Ý§Ö§Ü§ã§Ö§Û §¬§å§ä§å§Þ§à§Ó, C++ §Ò§Ö§Ù §Ú§ã§Ü§Ý§ð§é§Ö§ß§Ú§Û, §é§Ñ§ã§ä§î 3
Platonov Sergey
?
Effective java Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍ
Effective java   Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍEffective java   Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍ
Effective java Õªßx—lÄ¿·ÖÏí 2 - ·ºÐÍ
Kane Shih
?
6. separation, namespace, error
6. separation, namespace, error6. separation, namespace, error
6. separation, namespace, error
Vahid Heidari
?
6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó
6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó
6.1 §º§Ñ§Ò§Ý§à§ß§í §Ü§Ý§Ñ§ã§ã§à§Ó
DEVTYPE
?
The Flavor of TypeScript
The Flavor of TypeScriptThe Flavor of TypeScript
The Flavor of TypeScript
Dmitry Sheiko
?
Form Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansForm Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeans
Aldila Putri
?

Viewers also liked (18)

¥¢¥Û¥í©`¥È¥ë¥¨¥ó¥¸¥Ë¥¢¤«¤é¼û¤¿ÌØÐí
¥¢¥Û¥í©`¥È¥ë¥¨¥ó¥¸¥Ë¥¢¤«¤é¼û¤¿ÌØÐí¥¢¥Û¥í©`¥È¥ë¥¨¥ó¥¸¥Ë¥¢¤«¤é¼û¤¿ÌØÐí
¥¢¥Û¥í©`¥È¥ë¥¨¥ó¥¸¥Ë¥¢¤«¤é¼û¤¿ÌØÐí
uupaa
?
Certificates rugby tat
Certificates rugby tatCertificates rugby tat
Certificates rugby tat
Onno Hansen-Staszy¨½ski
?
EF presentation 1 - Paris meeting
EF presentation 1 - Paris meetingEF presentation 1 - Paris meeting
EF presentation 1 - Paris meeting
Onno Hansen-Staszy¨½ski
?
EF FCP presentation - Rugby meeting
EF FCP presentation - Rugby meetingEF FCP presentation - Rugby meeting
EF FCP presentation - Rugby meeting
Onno Hansen-Staszy¨½ski
?
Certificates gdynia tat
Certificates gdynia tatCertificates gdynia tat
Certificates gdynia tat
Onno Hansen-Staszy¨½ski
?
Interactive didactics
Interactive didacticsInteractive didactics
Interactive didactics
Onno Hansen-Staszy¨½ski
?
Dissemination nl
Dissemination nlDissemination nl
Dissemination nl
Onno Hansen-Staszy¨½ski
?
From Kinkara Tea
From Kinkara TeaFrom Kinkara Tea
From Kinkara Tea
John_Cowper
?
EF FCP workshop - Rugby conference
EF FCP workshop - Rugby conferenceEF FCP workshop - Rugby conference
EF FCP workshop - Rugby conference
Onno Hansen-Staszy¨½ski
?
Identifeye ar game documentation 12-14
Identifeye ar game documentation 12-14Identifeye ar game documentation 12-14
Identifeye ar game documentation 12-14
Onno Hansen-Staszy¨½ski
?
Identifeye ar game documentation 8-11
Identifeye ar game documentation 8-11Identifeye ar game documentation 8-11
Identifeye ar game documentation 8-11
Onno Hansen-Staszy¨½ski
?
Talk @bramalkema 031214
Talk @bramalkema 031214Talk @bramalkema 031214
Talk @bramalkema 031214
Onno Hansen-Staszy¨½ski
?
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
uupaa
?
JavaScript And Debug
JavaScript And DebugJavaScript And Debug
JavaScript And Debug
uupaa
?
X3
X3X3
X3
uupaa
?
Paris meeting TAT - Minutes
Paris meeting TAT - MinutesParis meeting TAT - Minutes
Paris meeting TAT - Minutes
Onno Hansen-Staszy¨½ski
?
Flow.js
Flow.jsFlow.js
Flow.js
uupaa
?
Pokolenie F
Pokolenie FPokolenie F
Pokolenie F
Onno Hansen-Staszy¨½ski
?

Prof.js

  • 1. prof.js ECMAScript 262-5th based JavaScript Dynamic TypeSystem. with Trace and Profiling functions
  • 11. function mm_each(data, // @arg Object/Function/Array/Hash: data fn) { // @arg Function: callback function // @help: mm.each // @desc: each object //{@debug mm.allow(data, "Object/Function/Array/Hash"); mm.allow(fn, "Function"); //}@debug typeof data.each === "function" ? data.each(fn) : Object_each(data, fn); }
  • 13. function mm_each(data, // @arg Object/Function/Array/Hash: data fn) { // @arg Function: callback function // @help: mm.each // @desc: each object //{@debug // mm.allow(data, "Object/Function/Array/Hash"); // mm.allow(fn, "Function"); //}@debug typeof data.each === "function" ? data.each(fn) : Object_each(data, fn); } //{@debug prof.add( "mm.each(data:Object/Function/Array/Hash, fn:Function" ); //}@debug
  • 17. ? ¨C ¨C ¨C ¨C ? ? ? ¨C ? ¨C
  • 18. mm.each = function() { switch (ÒýÊý¤ÎÊý) { case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); } console.group("évÊýÃû"); var now = Date.now(); var rv = org_mm_each.apply(mm, arguments); _tm[path].time += (Date.now() - now); _tm[path].count++; console.groupEnd(); mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ"); return rv; };
  • 19. mm.each = function() { switch (ÒýÊý¤ÎÊý) { case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); } console.group("évÊýÃû"); var now = Date.now(); var rv = org_mm_each.apply(mm, arguments); _tm[path].time += (Date.now() - now); _tm[path].count++; console.groupEnd(); mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ"); return rv; };
  • 20. mm.each = function() { switch (ÒýÊý¤ÎÊý) { case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); } console.group("évÊýÃû"); var now = Date.now(); var rv = org_mm_each.apply(mm, arguments); _tm[path].time += (Date.now() - now); _tm[path].count++; console.groupEnd(); mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ"); return rv; };
  • 21. mm.each = function() { switch (ÒýÊý¤ÎÊý) { case 3: mm.allow(arguments[2], "2·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 2: mm.allow(arguments[1], "1·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); case 1: mm.allow(arguments[0], "0·¬Ä¿¤ÎÒýÊý¤ÎÐÍ"); } console.group("évÊýÃû"); var now = Date.now(); var rv = org_mm_each.apply(mm, arguments); _tm[path].time += (Date.now() - now); _tm[path].count++; console.groupEnd(); mm.allow(rv, "‘ø¤ê‚Ž¤ÎÐÍ"); return rv; };
  • 22. ? ¨C ¨C
  • 23. ? ¨C ¨C // ¥é¥¤¥Ö¥é¥ê(lib)¤ÎAPI¤ÎÐÍÇéˆó¤òµÇåh prof.add( 'lib.fn1()', 'lib.fn2(a:Integer/String = ",", b:Object):Object', 'lib.fn3(...:Mix):Array', 'lib.fn4(a:Mix):Boolean' ); // ¥Í¥¤¥Æ¥£¥Ö¥ª¥Ö¥¸¥§¥¯¥È¤Î„ӵĤÊÐÍ¥Á¥§¥Ã¥¯¤â¿ÉÄÜ prof.add( 'String#hoge(a:Mix,b:Mix,c:Mix):String' );
  • 24. <script src=/slideshow/profjs/14966767/"debug/prof.js"></script> <script src="mm.js"></script> <!-- mm.js ¤Ï mm.allow ¤Ç„ӵĤÊÐÍ¥Á¥§¥Ã¥¯¤òʹ¤¦ˆöºÏ¤Ë±ØÒª --> <script> prof.add("¡­"); </script>
  • 25. ? mofmof.js ¨C http://code.google.com/p/mofmof-js/ ? prof.js ¨C http://code.google.com/p/mofmof- js/source/browse/trunk/js_src/debug/prof.js