由於一些原因,
緊急做了這個網頁,
做到早上五點根本沒甚麼睡就要去上班了。
拿了網路上免費的範本,
還找個免空丟網頁,
沒想到做完根本沒人看...
為了發洩只好貼來這裡!
http://peggy-lin.host22.com/
背景照片全都是自己拍的,
丟給新海城app轉圖,
畫素是有點差但整體來說還可以看!
但在其他平台背景就是無法縮放,
在電腦就可以!
查了很久說是跟fixed有關,
好像也不是一時半刻可以解決的事,
只好先放棄!
然後作品集讓我搞超久,
想要拿之前簡報裡面放的gif,
沒想到存檔下來竟然不能動,
查了一下說是要存成html,
但我2010版的不能存啊!
只好上網找可以轉檔的網頁,
千辛萬苦才存好gif,
結果放到網頁上排版很醜,
因為作品集那塊整個呈現都是用bootstrap的套件來用,
然後一時之間竟然找不到可以調的樣式,
只好放棄!
果然太久沒碰網頁,
css3一堆都看不懂,
要一直查一直查,
原本竟然妄想從頭做一個網頁!
真是想不開
廢文
2017年3月23日 星期四
2016年9月29日 星期四
四週年卡片-可達鴨爆炸盒
四周年,花了中秋連假四天在做,我以為一天就可以做完,但我完全忽略它機關有點多,雖然不難但有點費時,而且只要有可達鴨圖案的地方都要手繪然後剪下貼上,煩都煩死了!弄出來沒有比網友們的還好玩還精緻,但手殘的我可以弄成這樣我已滿足!
45度角很重要,因為正面太蠢了看不出來是可達鴨
另外一側也很完美
打開蓋子散開後的樣子,很不想把照片放第一層,但是設計錯誤...
上方有口袋可以抽出可達鴨圖案卡片
右方可以抽拉可達鴨的圖片,可達鴨憨憨三連拍表情
左方可以拉他的三根毛,就會看到變態的表情和腳璞,這個機關可是有夠難做的...
左方第二層,是拍立得造型
可以抽拉出可達鴨照片,其實應該是要放本人合照,但是設計錯誤...
右方第二層,也有小口袋可以抽出卡片
下方第二層,設計成像相框一樣,可以抽出來換一片放
最後做完發現是無意義的東西,而且重要寫字的地方好少...雖說我寫完第一行之後就發呆了半小時,完全不知道要寫甚麼,最後就以廢文結束了。
2015年1月31日 星期六
2015年1月22日 星期四
Vector 類別與 Array 類別的比較
如果可能,請盡量使用 Vector 類別,而非 Array 類別。(跟c++差好多)
Vector 類別比 Array 類別能更快速地讀取與寫入存取。
簡單的基準測試可顯示 Vector 類別優於 Array 類別的益處。下列程式碼顯示 Array 類別的基準測試:
var coordinates:Array = new Array(); var started:Number = getTimer(); for (var i:int = 0; i< 300000; i++) { coordinates[i] = Math.random()*1024; } trace(getTimer() - started); // output: 107
下列程式碼顯示 Vector 類別的基準測試:
var coordinates:Vector.<Number> = new Vector.<Number>(); var started:Number = getTimer(); for (var i:int = 0; i< 300000; i++) { coordinates[i] = Math.random()*1024; } trace(getTimer() - started); // output: 72
此範例可進一步最佳化,方法是將特定的長度指定給向量並將其長度設定為固定:
// Specify a fixed length and initialize its length var coordinates:Vector.<Number> = new Vector.<Number>(300000, true); var started:Number = getTimer(); for (var i:int = 0; i< 300000; i++) { coordinates[i] = Math.random()*1024; } trace(getTimer() - started); // output: 48
如果沒有事先指定向量的大小,則會在向量用盡空間時增加向量的大小。每次增加向量的大小時,就會配置新的記憶體區塊。而向量目前的內容會複製到新的記憶體區塊中。但這些額外的配置和資料複製作業將妨礙效能。上述程式碼藉由指定向量的起始大小來最佳化效能。不過,此程式碼並無法最佳化可維護性。若同時要改進可維護性,請在常數中儲存重複使用值:
// Store the reused value to maintain code easily const MAX_NUM:int = 300000; var coordinates:Vector.<Number> = new Vector.<Number>(MAX_NUM, true); var started:Number = getTimer(); for (var i:int = 0; i< MAX_NUM; i++) { coordinates[i] = Math.random()*1024; } trace(getTimer() - started); // output: 47
請盡可能嘗試使用 Vector 物件 API,因為其執行速度較快。
2015年1月20日 星期二
2014年11月26日 星期三
連接池(Connection Pool)介紹
對於資料庫的概念實在很不熟,還在想pool是甚麼,游泳池嗎.....
轉貼下Wallace Hu 寫的介紹,
轉貼下Wallace Hu 寫的介紹,
Connection Pool Introduction
Connection Pool(連線池) 是一種資料庫連線管理的機制,它介於應用程式與資料庫之間;
集中管理資料庫的連線,能有效提升應用程式存取資料庫的效能及減少連線的錯誤。
為什麼要有Connection Pool呢?
如圖一,一般沒有使用Connection Pool的程式,當需要存取資料庫時,
便要建立一個直接與DB相連的連線(Physical Connection)。
此做法比較不好的地方在於:
1.資料庫連線的建立成本是昂貴的,故當有許多Thread都需要建立connection時,
其資源的耗費是龐大的。
2. 一個成本昂貴的connection在程式使用完後,馬上就被Close掉,在使用上並沒有達到效益極大化。
3. 程式中請求建立的總連線數可能超過DB允許的連線數而發生Exception。
4. 程式中關於connection的使用若有不恰當的地方,如Statement或Connection沒有close,
並沒有額外的機制提供保護。
當然目標若只是建立小型的AP,可預期的連線數也不多時;其實是不需要Connection Pool的。
而若目標是建立能處理同時間大量連線請求的AP時,Connection Pool就是不可或缺的機制了。
AP中加入Connection Pool後,其運行機制如圖二所示。程式啟動時,
Connection Pool會先跟DB建立好連線(連線數可設定),並且keep住這些連線;
當程式需要使用Connection時,pool便會將手上可用的Connection借給程式,
程式使用完後再歸還給Pool即可。
使用Connection Pool的好處有:
1. Pool會keep住與DB的連線。程式需要使用時跟pool要即可。
不用再重複地跟DB建立連線然後又釋放掉。
2. 可設定與DB最大的連線數,避免超過DB所能負擔的連線數。
3. Pool可幫忙驗證Connectin是否還正常,若不正常時,便再與DB建立好的正常連線,
確保程式取得的Connection都是正常可使用的。
4. 額外功能的提供。如幫忙檢查Connection State或幫忙關閉Statement等。
不同的Connection Pool其額外提供的功能當然也會有所不同。
集中管理資料庫的連線,能有效提升應用程式存取資料庫的效能及減少連線的錯誤。
為什麼要有Connection Pool呢?
如圖一,一般沒有使用Connection Pool的程式,當需要存取資料庫時,
便要建立一個直接與DB相連的連線(Physical Connection)。
圖一 Application_without_ConnectionPool
|
1.資料庫連線的建立成本是昂貴的,故當有許多Thread都需要建立connection時,
其資源的耗費是龐大的。
2. 一個成本昂貴的connection在程式使用完後,馬上就被Close掉,在使用上並沒有達到效益極大化。
3. 程式中請求建立的總連線數可能超過DB允許的連線數而發生Exception。
4. 程式中關於connection的使用若有不恰當的地方,如Statement或Connection沒有close,
並沒有額外的機制提供保護。
當然目標若只是建立小型的AP,可預期的連線數也不多時;其實是不需要Connection Pool的。
而若目標是建立能處理同時間大量連線請求的AP時,Connection Pool就是不可或缺的機制了。
AP中加入Connection Pool後,其運行機制如圖二所示。程式啟動時,
Connection Pool會先跟DB建立好連線(連線數可設定),並且keep住這些連線;
當程式需要使用Connection時,pool便會將手上可用的Connection借給程式,
程式使用完後再歸還給Pool即可。
圖二 Application_with_ConnectionPool
|
1. Pool會keep住與DB的連線。程式需要使用時跟pool要即可。
不用再重複地跟DB建立連線然後又釋放掉。
2. 可設定與DB最大的連線數,避免超過DB所能負擔的連線數。
3. Pool可幫忙驗證Connectin是否還正常,若不正常時,便再與DB建立好的正常連線,
確保程式取得的Connection都是正常可使用的。
4. 額外功能的提供。如幫忙檢查Connection State或幫忙關閉Statement等。
不同的Connection Pool其額外提供的功能當然也會有所不同。
在node.js裡使用node-mysql middleware 的基本query用法
node-mysql 下載及使用。
初始設定
var mysql = require('mysql'); var DATABASE = 'xpec'; var TABLE ='member'; var connection = mysql.createConnection({ host : 'localhost', user : 'aaa', password : 'xpec', database : 'xpec' });基本查詢表格印出表格內容
//connection.query()已經建立連建,不用再寫connection.connect() connection.query('SELECT * FROM ' + TABLE, function(err, results){ if(err) throw err; console.log(results); }); connection.end(); //結束連線table插入資料
connection.query('INSERT INTO ' + TABLE +' SET ? ',{User: 'jjjj', Psd:'123'},function(err, result){ console.log(result.insertId); }); connection.end();修改update table資料
connection.query('UPDATE ' + TABLE + ' SET ' + 'Psd=? WHERE id=?',['45645646',1],function (err,result){ if(err){ console.log(err); }else{ console.log(result.affectedRows); } });刪除table資料
connection.query('DELETE FROM ' + TABLE + ' WHERE id = ? ',[3] ,function(err, result){ if(err){ console.log(err); }else{ console.log(result.affectedRows); } });
訂閱:
文章 (Atom)