好久沒更新了
來報告下這一年來我都做了些什麼吧,以下簡誌:

2月 想優化及穩定wenku8 app3 - 4月 百無聊頼4月某日 想出了p2p CDN4 - 5月 百無聊頼5月中荀 某幾天 以nodejs + mongo DB實作 -> BotanicalFramework的誔生5月 早期測試跟app的修改5月 發現沒有VS2012的清況下很難開發,於是想更加有效率地開發wenku8 app6 - 9月 工作很忙9月下荀 想出了SimpleCI10月 製作SimpleCI的web界面10月上荀 想運用從留寫下來的資源拼湊,發現不可行 -> BotanJs的誔生11月下荀 實作BotanJs12月 百無聊頼

我就這樣陷入了無比可怕的依頼性連鎖中去了……(還有對不起我有在偷懶

首先簡略地說一下正在做什麼還有什麼是需要完成的好了。

SimpleCI


如果各位知道github的話,應該都知道Travis CI吧。Travis CI功能強大,而這是自家土製服務,蠻好玩的。
我想實現在linux 環境下實行C#的CI,當然編繹機器還是會用windows的。


流程概要:

1. 在git commit、git push之後,於伺服器端設定了git hook,將該commit的sha記下來。
(這個步驟是用bash編的。)

2. 與此同時,排程器cron會定期檢查是否有新的commit需要處理,然後將編繹工作根據清況分配給不同的機器。第一張圖片就是不同項目的例表(現在只有wenku8就是了)。
(這裡花了點時間,需要架設source machine跟build machine,因為編繹器是windows,所以橋接方面有點棘手。)

而上圖中所見的就是CI的web界面,簡單展示了項目列表和編繹報告。

由說明書開始!

web界面是由node.js + mongodb推動的,而機器之間的溝通協定則用python寫的。(而python也是從這裏剛開始學)

然後理所當然的,我遇到困難了。

是從前留下來的遺物……也就是現在正把持著這個blog的js library。實在是寫的亂七八亂,可擴張性太低。所以重新想個辦法,就是接下來介紹的項目:

BotanJS - API Service


不是Service API嗎,怎麼反過來了?沒有反過來,這正是「API Service」。

其實Aaron兄一直納悶為什麼不肯用jquery呢?很可惜我依然說服不了他。

我在這一年來在公司工作中也發現了幾個問題,jquery太容易寫了,沒有人專門負責編js。其結果就是一堆沒有組織的源碼,各人就各一坐島。

其中一點主要是想另立門戶。我覺得Js於web上來說一直被人小看了。根據經驗,很多生產上的源碼都是直接編出來的,結構頗為雜亂。也許是考慮到Js大都跟Html綁在一起,要換的話就整個換掉,無須組織。又或者覺得Js本來是一種「輕鬆」的語言,不必太用心隨便誰也可以勝任。

說來到底Js是這樣設計的,還是jquery的誔生帶來先入為主的觀念?

我不否認js是一種輕鬆的語言,但我就是有那麼一點不羈;我覺得不費吹灰之力編出來的東西通常都沒有經過深思熟慮,就像畫畫時沒有考慮遮住了的地方,單一個部分看沒問題,可是整體上就是不對勁。當然結果來看是可行的,可是支撐這個功能的背後感覺不是一個整體,這正是我糾姞之處。

BotanJS的宗旨有別於jquery的概念,從整體的完整性上出發。做法就是引入import/export跟namespace(原來不叫import的,後來發現這做法很有python味,索性就拿來用了)。

簡單來說就是規定編寫規則:

// JQuery flavor
// A. init
$.ready(function(){
    // Module
    var module = $.<module>( target );
    // Element manipulatian
    $( selector ).doSomething().doMoreThings();
});


// BotanJs flavor

// 27 January, 2015
// 這個不行
// // 這是我個人喜歡的入口方法,如何init看個人喜好,BotanJs不會干涉。
// <!--body onload="BotanJS.import('project').init()"-->

// 用這個
<script>window.onload=function(){BotanJS.import('project').init()}</script>
<body>
(function()
  var ns = __namespace("project.section");
  var proj = __import("projoct");
  var module = __import("module");
  // 此處"Dandelion"為預設的package
  var Dand = __import("Dandelian");

  var init = function (){
     var element = Dand.id("things");
     doMoreThings( doSomethings( element ) );
  };

  proj.regInit( init );
})();

做法比jquery繁複多了,這連我自己都覺得很沒說服力呀(掩面)。不過當編寫的規模變大時,我還是覺得BotanJs的方式有其優勝之處的。

詳細請等待我住後的文章。

BotanicalFramework(暫定)


這是nodejs上一個簡單的web framework,以捨棄php為動機(加上Aaron兄正斬掉重錬這個blog的後台的php framework進度太慢)編出來的試作品,目前正在推動SimpleCI跟wenku8的p2p CDN。而兩者也是試作品,所以是試作品上的試作品!(握拳)

BotanJs的整合工作於聖誔節算是完成了,再來就是向上回溯。

是SimpleCI的web界面!



PS:
寫blog實在太費神了,這篇花了我三個小時…
鳴哦,是我寫得慢麼?
Profile picture
斟酌 鵬兄
Sun Dec 28 2014 19:26:32 GMT+0000 (Coordinated Universal Time)
Last modified: Tue Dec 20 2016 15:00:54 GMT+0000 (Coordinated Universal Time)
Comments
No comments here.
Do you even comment?
website: 
Not a valid website
Invalid email format
Please enter your email
*Name: 
Please enter a name
Submit
抱歉,Google Recaptcha 服務被牆掉了,所以不能回覆了