2012年10月30日 星期二

JForthBlocks--Include Forth sourcecode file

Jimmy's papa已做好include積木,可引入並執行Forth檔,同時也加入註解"\"積木,為了JForthBlocks的Web環境,註解"\"積木花了不少時間修正,適應由積木產生的註解字串,而非只有來自檔案內容的註解

隨著JForthBlocks收錄的積木(Forth words)越來越多,Jimmy's papa實在很擔心會一時疏忽讓bug住了進來,有了include積木,Jimmy's papa就可以寫一些測試案例(Test Case)隨時測試
寄件者 scratchlab02
請直接將積木XML,貼至XML編輯區,便可見上圖出現的積木
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="text_cquote" notchtype="LEFT_RIGHT" inline="false" x="1121" y="1274"><title name="STRING">./forth/testcase.f</title><value name="NEXTWORD"><block type="utility_include" notchtype="LEFT_RIGHT" inline="false"></block></value></block><block type="text_backslash" notchtype="LEFT_RIGHT" inline="false" x="1118" y="1316"><title name="STRING">Jimmyscratchlab 附註 執行測試案例</title></block></xml>
目前testcase.f的檔案內容
\ 試印出 99 乘法表 
: x 9 for cr r@ 9 for dup r@ * 2 .r space next drop next ; x

2012年10月29日 星期一

[Javascript] XMLHttpRequest同步與非同步取檔

在本機未使用Web Server的情況下測試網頁Javascript程式,若需要讀取檔案,以Web File API需搭配INPUT tag但只限本機檔案, Jimmy's papa也測試過
var file=File(path) //insecure exception
但會產生insecure例外

如果要讀取網頁路徑下的檔案,則需借助AJAX,也就是運用XMLHttpRequest物件
    var xmlhttp,fname;  
    if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest();    
    if (xmlhttp == null) alert("Your browser does not support XMLHTTP.");
    /*異步時,在open與send之前用這段程式碼*/
    //xmlhttp.onreadystatechange = function() {
    //    if (xmlhttp.readyState==4) {
    //        alert(xmlhttp.responseText);}}
    xmlhttp.open("GET", fname, false);//false為同步,true為異步
    xmlhttp.send(null);
    /*同步時,在open與send之後用這段程式碼*/
    if (xmlhttp.status == 200 || xmlhttp.status == 0) { //0為本機開檔 
        alert('xmlhttp.status '+xmlhttp.status);
        alert(xmlhttp.responseText);  
    }else{  
       alert(xmlhttp.statusText);}  

2012年10月27日 星期六

將Forth當做Web Script?

底下兩段程式碼,可看到已經有人把Ruby與Processing移植到Web,將各自的指令語法或原始碼檔夾入HTML標籤,做為Web Script執行

由於現今Javascript已然成為Web Assembly,或許許多常見的程式語言皆可如此

<script type="text/ruby">
#class Foo; def initialize; @foo = 'whee'; end; end; f = Foo.new; f
Time.now
</script>
<script src="/processing.js"></script>
<canvas datasrc="blendColor.pjs" width="200" height="200"></canvas>


Jimmy's papa在想,如果其他程式語言都能成為網頁腳本,那對Forth來說應該也不成問題呀!

<script type="text/forth">
/ 試印出 99 乘法表
: x 9 for cr r@ 9 for dup r@ * 2 .r space next drop next ; x
</script>
或是
<script type="text/forth" src="/9x9.f"></script>
不過想歸想,實作時或許會遇到很多有趣的挑戰吧!!