你應該開始在網路上說謊嗎?

你應該開始在網路上說謊嗎?
原文在這裡: http://pccillin.pixnet.net/blog/post/31750516

其實應該換個方式說更容易理解一點, 你是否在網路上洩露太多隱私呢?

如同文章內容提到的, 你不太會和朋友提到自己的薪水, 但為什麼要在網路的資料上揭露呢? 其實這件事的本質回歸到一件事, 隱私的重要.

有時候, 或許會覺得這些資料不是太敏感或太重要, 或是少部分少部分的沒什麼影響, 但是有心人士(像是詐騙集團, 或是賣個人資料的公司), 因為有供給有需求的狀況下, 是很值得去挖出來賣的, 所以很可能拼拼湊湊得出來一定的資料.

說到這裡, 在原文內容也提到, 像是寵物名字叫多吉, 這些資料在網路上看得到, 但若落入有心人士眼裡, 是可以藉由這樣的方式來把帳號密碼重設而取得, 無論是要獲取個資, 或是取得該用戶的內容(文中提及的是裸照), 對用戶來說, 都是很大的損失.

適度的保護自己, 把不必要的個人資料保留不填, 在網路上也要謹言慎行, 這些事不是都在實體社會上一樣的嗎? 別把網路想得好像是另一個世界, 更可怕的是網路的資料是存放及保持時間更久呢.

也請參考之前的舊文章: https://diary.tw/archives/724

分類
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