分類
Javascript

Javascript已強大到可以執行linux

這篇是在 zdnet 看到的:

http://www.zdnet.com.tw/news/software/0,2000085678,20149826,00.htm

利用 javascript 模擬 pc 執行 linux , 因為 javascript 的處理能力已經相對強大了, 可以跑模擬 pc 後執行 linux, 網址在這裡:

http://bellard.org/jslinux/

這樣看起來, 一般 develper 使用的 javascript 還真是用不了他的功能的 1/10 吧, 看來, 愈來愈強大的 javascript engine 可以做更多更多的事了!

分類
.net

C# Operator ??

今天看到這個 operator ?? , 雖然可以了解前後文他的功能, 不過還真是第一次看到.

於是查了一下, 在 msdn 上的說明:

http://msdn.microsoft.com/en-us/library/ms173224.aspx

這個運算子的應用情境如下:

string mytest = "";
if(Request.QueryString["test"]==null){
  mytest = "";
}else{
  mytest = Request.QueryString["test"];
}

若在取得變數時, 會有 null 的狀況, 又要給定預設值時, 可以利用上面程式碼, 不過是不是又臭又長呢? 可以利用這個運算子 ?? 來簡化, 如下:

string mytest = Request.QueryString["test"] ?? "";

當然, 和三元運算子的寫法同義, 只是上面的 ?? 更精簡一些:

string mytest = Request.QueryString["test"] == null ? "" :  Request.QueryString["test"];

相關閱讀:
http://demo.tc/Post/414

分類
Database

MySQL的Log

在 MySQL 運行時, 若想要了解執行時期, 對資料庫下達指令的狀況, 可以利用 my.ini 中的參數來達成, 在 [mysqld] 中多加一行 log=路徑/檔名, 再重起服務即可.

這個目的對於在追蹤應用程式執行指令很有幫助, 不過若是繁忙系統下, 很可能會有大量的資料, 而難以閱讀, 建議使用在開發環境, 再執行對應的 application 記錄下來的 log 就會單純許多, 以方便追蹤.

在 MSSQL 中可以利用 SQL Profiler 來達成, 不過 MySQL 無法過濾那麼多資訊, 只能整個記錄下來. 記得這些操作對於系統效能都會有一定的衝擊, 開起來之後, 記得要關掉, 否則將會影響效能.

另外還有一個好用的參數, 就是一樣在 [mysqld] 中, 加一行 log_slow_queries=路徑/檔名, 這個將會讓系統記錄執行時間較長的 query, 也方便做效能調校及追蹤使用, 預設是執行時間超過 10秒的會被記錄下來, 參數是 long_query_time 可以參考:

http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_long_query_time

這兩種方式分別做完整記錄及長時查詢記錄, 對於想要了解資料庫執行時期的問題及效能調校, 都可以提供不少幫忙.

相關閱讀:
http://blog.wabow.com/archives/54

分類
Javascript

表單上傳檔案取得檔名問題

在前端網頁上, 若要上傳檔案, 是利用一個 <input type=file>的標籤來進行的, 這個 UI 看起來的長像在不同瀏覽器會有不同的結果, 也因為這樣, WEB DESIGNER 常常需要做一些設計來美化及一致化這個長相.

這篇文章不是在討論這個上傳檔案的長相, 而是要探討在前端程式碼取出上傳檔案的名稱, 這個也在不同的瀏覽器有不同的結果, 尤其新的瀏覽器又增加了一些特異功能. (如隱藏路徑)

這樣一來, 若是要對上傳檔案名稱欄位取出做一些判斷的話, 可要注意這些狀況的差異, 這裡寫了個小程式, 取出 <input type=file>的值, 在不同瀏覽器下可以測出不同的結果, 連結在這裡:

http://sample.diary.tw/25

我們以上傳 C:\test\1.txt 為例, 在不同瀏覽器下的結果如下:

IE9:
Firefox 4.01
Google Chrome 5:
Safari 5:
從上面畫面的結果來看, 發現 IE9 及 Google Chrome 會有含路徑的檔名, 但會隱藏路徑, 而 Firefox 4.01及 Safari 5則只會出現檔名而已, 不會有路徑, 而 IE6, IE7, IE8 的狀況則是 IE8 會像 IE9 一樣, 但 IE7, IE6 則是真實的檔案路徑, 如下:

IE6:
IE7:
IE8:
這樣就清楚啦!

分類
好用軟體

Firefox更新到4.01

今天工作的電腦上的 Firefox 3.6.17 提出要更新到 4.01 的版本, 於是就更新下去了, 原本是打算 3.6 和 4.0 並存, 先不更新, 再另外裝一個 4.0, 不過既然 Firefox 已將 4.0 放到 3.6.17 版本的更新之後, 所以就乾脆升級了.

還好常用的 Addons 都相容或有更新相容於 4.0 的版本, 包含一個 theme 是 classic compact 也都相容 (classic compact 資訊可以參考: https://diary.tw/archives/698), 這樣更新下來還蠻愉快的.

之所以更新, 是因為在更新宣傳上的比 3.6 版本速度快 6倍, 如下圖:

不用錢這件事應該大家都同意, 不過快 6倍的速度更讓人興奮啊, 因為現在的網頁對於瀏覽器的需求愈來愈高, 都是一堆 css 和 javascript 及 jQuery, 瀏覽器更需要的是速度. 不過對於全新外觀我可是敬謝不敏, 因為也都是抄 google chrome 的, 而且把分頁放在上頭還真是不習慣, 不過都可以調整回原來的長相, 所以就沒問題了!

接下來就要好好體驗他的快 6倍的效能, 來試試看囉!

分類
程式技術

在TEXTAREA中的換行符號

這篇文章是因為發現一個很有意思的問題, 在 TEXTAREA 中的換行, 對於不同瀏覽器, 會送出不同的換行符號.

目前實測的狀況是 IE7, IE8 會送出 %0D%0A, 而 IE9 會和一般瀏覽器一樣送出 %0A.

這個狀況會影響的問題可能不大, 不過若是會用到換行排版的程式, 相信會有很大的影響, 這個在使用上要留意有這樣的問題.

繼續閱讀:
http://zh-tw.w3support.net/index.php?db=so&id=1155678

分類
程式技術

如何從外部載入網頁上使用的字型

這個其實很久以前的 CSS 就支援了. 這是一個利用 CSS 指令的方式來設定外部字型, 使用的方式如下:

@font-face {
  font-family: "font-name";
  src: url("http://xxx.com/abc.ttf");
}

.font1{
  font-family: "font-name";
}

如此一來, 便能在 html 中使用指定的字型了. 不過這個方式使用在英文字型比較理想, 若是中文字型的話, 還得等待用戶下載一個超大的字型檔(中文字小則4~5MB, 大則 20MB都有), 光等待下載的時間可能就讓用戶受不了了.

網路上可以找到不少免費的中英文字型, 利用這樣的方式, 可以更方便地更換網頁上的字型, 讓字型的應用更彈性, 不過中文還真的沒有什麼好方法可以解決.

相關閱讀:
http://blog.bobchao.net/2009/06/35-4b-font-face.html

免費字型:
http://isvincent.pixnet.net/blog/post/31012343
http://www.freegroup.org/2009/09/free-chinese-fonts-hdzb/
http://briian.com/?p=290

分類
Database

使用TABLESAMPLE方式取樣

先弄清楚, 這個 TABLESAMPLE 是用來做以”頁(page)”為單位的取樣方式, 和所謂的隨機不同, 不過在超大型資料表上, 若要快速地取出一部分的資料, 可以應用這樣的方式來達成.

支援 MS SQL 2005 以上的版本, 使用方式很單純, 只需要在查詢指令的 table 之後加上 TABLESAMPLE 子句即可, 如下:

TABLESAMPLE [SYSTEM] (sample_number [ PERCENT | ROWS ] )
[ REPEATABLE (repeat_seed) ]

範例如下:
使用 percent百分比:

USE AdventureWorks2008R2 ;
GO
SELECT FirstName, LastName
FROM Person.Person
TABLESAMPLE (10 PERCENT) ;

或是指定筆數:

USE AdventureWorks2008R2 ;
GO
SELECT FirstName, LastName
FROM Person.Person
TABLESAMPLE (100 ROWS) ;

要特別注意的是, 由於是以 page 為單位, 所以取出的資料只是約略的 page 內容物組合而成的, 不過若是對於超大內容的 table 來說, 比較如下兩個指令:

SELECT TOP 100 * FROM TABLE1 ORDER BY NEWID()

SELECT TOP 100 * FROM TABLE1 TABLESAMPLE(1 PERCENT) ORDER BY NEWID()

效率上會有很大的差異(當然是後者會快很多), 不過若是有 WHERE 條件下, 就不適合使用 TABLESAMPLE 了, 因為是無法以指定的條件來取出資料, 但仍可以下達 WHERE 子句, 是指取出的 TABLESAMPLE 內容, 再過濾的資料, 如下:

SELECT * FROM TABLE1 TABLESAMPLE(1 PERCENT) WHERE FIELD1 > 5000

記得是先取出 sample data 後再過濾的行為, 所以極有可能沒有資料發生, 使用上要特別留意.

官方資料: http://technet.microsoft.com/zh-tw/library/ms189108.aspx
繼續閱讀: http://sharedderrick.blogspot.com/2011/04/tablesample.html

分類
Javascript

IE9的釘選網站功能

微軟已於3月正式推出IE9了, 其中 IE9 的 pinned site 功能很有意思, 將 IE9 和 Windows 7的介面整合在一起, 實作的方式不難, 只需要在網頁上加幾行 meta data tag 就可以了, 可以參考保哥的這篇文章:

http://blog.miniasp.com/post/2010/09/21/IE9-Pinning-and-JumpLists-on-your-website.aspx

這裡只需要用到 html 即可.

不過若是想要做到動態增加的方式來進行 pinned site 功能的設定呢? 可以參考保哥的這篇:

http://blog.miniasp.com/post/2011/04/08/IE9-Pinned-Sites-Defining-Jump-List-Category-and-Adding-Items.aspx

利用 javascript 程式碼來操作即可, 相信是很容易上手的!

相關資料請參考:

http://msdn.microsoft.com/zh-tw/ie/gg315439 釘選網站 (Pinned Sites):Windows 7 桌面系統與 Internet Explorer 9 的整合

http://msdn.microsoft.com/en-us/library/gg491738.aspx Introduction to Pinned Sites

分類
Blog服務

利用facebook的comments做網頁的留言功能

利用 facebook 的 social plugins 中的 comments 來做網頁的留言是很方便的, 使用的方式很簡單, 只需要到 facebook 的 developer 網站取得產生的程式碼即可, 連結在此:

http://developers.facebook.com/docs/reference/plugins/comments/

其實程式碼的內容也很容易理解, 如下:

<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><fb:comments href="example.com" num_posts="2" width="500"></fb:comments>

其中的 div fb-root 是放留言的地方, 而後面的 script 才是程式的重點, 而最後的 fb:comments 則是一些參數, 其中的 href 就是留言的網址, 而 num_posts 則是在網頁上要出現最後幾則留言, width 就是這個 div 要給定的寬度.

可以參考這頁顯示的結果: http://sample.diary.tw/flickrset/ 這樣就能方便大家利用 facebook 來討論這個網頁了, 真是方便又好用的 plugin 啊.

[2011/4/15]
放好了之後一直覺得怪怪的, 因為都是英文的介面, 雖然功能及留言內容都不影響, 但其實是因為這個 facebook comments 有語系的關係, 要調整的部分很單純, 就是原來引用的 js url中有出現 en_US 改為 zh_TW 即可, 這樣一來, 介面就會變成是繁體中文了, sample 頁上也做了調整了, 可以再連去看看囉.

不過有趣的是上方的那個讚的功能, 由於沒有語系的影響, 所以在中文用戶下就會出現中文, 英文用戶下自動也會出現英文, 就沒有語系的問題了. 該”讚”的 social plugin 的語法可以由這裡取得: http://developers.facebook.com/docs/reference/plugins/like/ , 除了讚-即like外, 還有推-recommend 可供選擇應用.