Js Sites

JavaScript Garden http://bonsaiden.github.com/JavaScript-Garden/

dailyjs http://dailyjs.com/

howtonode http://howtonode.org/

 

http://blog.mixu.net/2011/02/02/essential-node-js-patterns-and-snippets/

介紹 nodejs 的一些 pattern ,js 基本的物件使用,非同步 flow 的控制。

另外寫一個我原本想像物件的用法。

var f1 = new Flow();
f1.add(a);
f1.add([b,c]);
f1.run(function() {
	console.log('done');
});

var f2 = new Flow([a,b,c]);
f2.run(function() {
	console.log('done');
});

Excel 將數個 sheets 依 sheet 名稱切割

生活智慧王…

時常匯資料,每次各學校給的資料都不一樣…問題百出,這次的課題是他把要分開存的 excel 全部都存到同一個 xls 且分好幾個 sheet 要怎麼辦勒~

用下面這個 vba 來執行,就會依照不同的名稱存檔與來源相同的資料夾內囉。

excel 2007 開啟 vba 在選單 excel 選項的地方 開啟 開發人員頁籤~就能跑了…


Sub Macro1()
Dim sh As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each sh In Sheets
sh.Copy
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xlsx"
.Close
End With
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "完成"
End Sub

Syntax highlight office

GAE 傳檔案

由於有許多各方面的額度限制,所以要額外使用 blob service 來處理,比較不會發生逾時錯誤。

不過需要開啟付費的服務才能使用此api(開啟以後還是有一些免費額度可以使用)

http://code.google.com/appengine/docs/python/tools/webapp/blobstorehandlers.html#BlobstoreUploadHandler

那要怎麼跟 django 接在一起勒

google 食譜告訴你… http://appengine-cookbook.appspot.com/recipe/blobstore-get_uploads-helper-function-for-django-request/

example : http://blog.sserrano.com/post/479962742/blobstore-upload-with-django-form-validation-example

如果沒有信用卡可以開啟服務來測~

那可以考慮透過下面兩個方案來處理,用 java 的 sdk 來寫~都是在將檔案切割成數個檔,來突破 1MB 傳輸單頁面的限制,可以達到單檔10MB。

https://github.com/honzasterba/bigblobae

http://code.google.com/p/google-file-service/

這個經過實際測試是可以運行的。而且運作的還不錯~

Nodejs MySQL ORM Module sequelizejs

thechangelog 的介紹

sequelizejs 官網

github http://github.com/sdepold/sequelize

可以定義結構,同步資料庫,新增修改刪除,join資料表。

是目前我看過 nodejs orm 模組裡面最完整且介面設計蠻容易的。

且 github 上此類型較多人追蹤的專案。

//database connection
var sequelize = new Sequelize('database', 'username', 'password', {
host: "my.server.tld",
port: 12345
})
//define struct
var Project = sequelize.define('Project', {
title: Sequelize.STRING,
description: Sequelize.TEXT
})

//insert
var project = new Project({
title: 'my awesome project',
description: 'woot woot. this will make me a rich man'
});
project.save();
//where
Project.find({ title: 'aProject' }, function(project) {
  // project will be the first entry of the Projects table 
  //with the title 'aProject' || null
})
//join
Project.hasMany('member')