星期一, 3月 30, 2009

jQuery 1.2.x 升級 1.3.x 需注意

1.Selector
取input標籤name為go的值
$("input[@name=go]").val(); //原本在 jQuery 1.2.x 上是可行的'
$("input[name=tag]").val(); //但1.3.x後要把@拿掉,不然會出錯

其他原本有加@都要去掉,像[@selected][@checked]等

p.s
[attribute]: 有指定的屬性
[attribute=value] :屬性值為value
[attribute!=value] :屬性值不含value
[attribute^=value] :屬性開頭字串為value
[attribute$=value] :屬性結尾字串為value
[attribute*=value] :屬性值包含value

remark: [attribute=value]與[attribute*=value]看起來很像,但還是有不同
一個是完全符合,一個是有包含,有看到有人寫後者是取多個,應該是不正確的

remark:
不知為何 用[name='test']時,如果全是span是ok的
但如果有個<a name=test>或input 就會只找到這一個

另外
$("XmlParentNode XmlChildNode[name='xx']").xx <==這樣用 好像會找錯
$("XmlParentNode").find("XmlChildNode[name='xx']").xx 才會找對


References:
3 Quick Steps for a Painless Upgrade to jQuery 1.3

星期六, 3月 28, 2009

jQuery取browser值

$(document).height();
$(window).height();

字面上看來window應是視窗的高,document是body的高
但測試後,window的高會比document小
太奇怪了
而且最大化視窗,兩個值還是一樣的...
要再研究


ps.如果是IFrame,值都會比較小

搞清楚clientHeight, offsetHeight and scrollHeight

透過jQuery取高(寬),有三個
1.height()
2.innerHeight() //不含border,padding
3.outerHeight() //包含border,padding及hidden elements

另外javascript本身取document.body有
  • clientHeight
  • offsetHeight
    offsetHeight是自身元素的高度
    *ie7不支援
  • scrollHeight
    scrollHeight是 自身元素的高度+隐藏元素的高度。

其實還是不太懂...

*DIV設Height:100% 沒反應
當在網頁裡多了以下的宣告
就會造成height的100%無效
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4>/strict.dtd">

查了一下
重點是因為body沒有height屬性,所以加入下面這行就可以啦

References
clientHeight、offsetHeight 和 scrollHeight
花点时间搞清top、postop、scrolltop、scrollHeight、offsetHeight

星期五, 3月 27, 2009

常用的正規表達示-統計

  • 統計字串中內某字元或字串出現次數
    /*
    * JavaScript 
    * 找出cloudchen有幾個c
    */
    var str =  "cloudchen"
    var find = "c";
    var reg = new RegExp(find,"g")
    var result = str.match(reg);
    var count = (result)?result.length:0;
    console.log('共:%d次',count);
    reference: JavaScript 統計字串中內某字元或字串出現次數
  • 統計字串中內某字元或字串出現次數
    去-,:,空白,由於"-"是保留字,所以在前面要加\
    //C#.Net
    System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"[:|\-| ]");
    string datetime = "2009-01-02 03:04:05";
    datetime = reg.Replace(datetime, "");
    Console.WriteLine(datetime); //輸出20090102030405
    .Net的Regex位於System.Text.RegularExpressions之下

References:
Regular Expression (RegExp) in JavaScript 還可以直接測試
regular language 說明表格

星期四, 3月 26, 2009

如何做行銷計劃

1.動機:告訴別人 為何要做
  • 因為有新產品 (New Product)
  • 因為有新市場 (New Market)
  • 取代舊的Plan

2.分析
分析易有主、客觀認知,如非洲人不穿鞋
分析工具
  • SWOT分析
  • BGC,界定定位

3.製訂行銷策略
4P,6P(People,Procedure)

4.日程表/Budget
甘特圖

星期三, 3月 18, 2009

jQuery的BlockUI

可拖曳 - draggable
自己裝厲害,還自己載了jquery-ui
將blockui的div加上draggable
想想blockui怎麼可能沒有draggable功能
某天看blockui.js 發現了draggable:true;
才知道自己沒看注意demo就有教了
不過blockui的draggable也是依附在jquery-ui,自己載
$.blockUI({
 message: $("#mydiv"),
 draggable: true //加上這行囉
}


設定長寬高
$.blockUI({
 message: $("#mydiv"),
 css: {
 padding: 0,
 margin: 0,
 width: '30%',
 top: '30%',
 left: '25%',
 color: '#000',
 border: 'none',
 cursor: 'auto'
}

當blockUI裡的div或table有限定固定的width時
blockUI套件裡的外框已設定為30%
所以當畫面變大時,就有可能兩旁會有空白

這時就去blockui.js裡把這個拿掉就ok了
就有前幾行而已 很好找的
width: '30%',


錯誤
某些情況下 jQuery會發生錯誤

通常是在這一頁被轉頁後,又下了blockui的操作
錯誤發生在blockui.js裡的
function focus(back){
...
e.focus(); <===這裡...
}

看用catch抓住,再log起來吧...免得跳出錯誤訊息又要被老板唸了
function focus(back){
...
try {
e.focus();
}catch (ex) {
$.unblockUI(); //抓解開block...至少畫面還可以操作
}
}

星期一, 3月 16, 2009

jQuery的accordion 會亂閃亂跳動

利用accordion 完成選單後
click每個選項卻發現選項會跳動
看demo卻好好的
研究了一下 原來demo的html有這一句

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
...
</html>

星期五, 3月 13, 2009

JavaScript開檔 window.open 會跳ie視窗

一般用window.open("xxx.exe")即可
但都會先跳出個ie視窗 再問要不要下載、儲存
可利用ActiveXObject('WScript.Shell')就可以直接執行了
new ActiveXObject('WScript.Shell')).Run('test\\start.exe'); //執行位於test資料夾下的start.exe

完整的範例
< A href="javascript:(new ActiveXObject('WScript.Shell')).Run('test\\start.exe');void(0);"> click me < /a>


利用JavaScript轉址
之前有用過
window.href="http://xxx";
window.location.href="http://xxx";
不過有時都會沒反應
後來用
window.location = "http://xxx";
至少... 還沒問題..

星期四, 3月 12, 2009

如何讓光碟Autorun

autorun.ini
[autorun]
OPEN=xxxx.exe
ICON=yyyy.ico //光碟畫面的icon



如果是跑xxx.hta等,非win32應用程式
功能就像寫在.bat裡
[autorun]
shellexecute=Setup.hta

星期一, 3月 09, 2009

jqgrid 特殊技

設定
1.設定標題欄位高度
不知從那調,硬是拆html找出地方調
var tbTitle = $("#tbRecordList").parent().prev();
$(tbTitle).find("tr:first").find("div").css("height","18"); //12pt字型適用

2.硬將tbody的滑鼠改成"手指"
$("#tbRecordList tbody").css("cursor","pointer");

方法
1.排序

有兩種方法
1.$("#tablename").sortGrid('myname',true); //reload
//If the reload is set to true, the grid reloads with the current page and sortorder settings.
2.$("#tablename").setGridParam({sortname:'myname'}).trigger('reloadGrid');

2.隱藏欄位
使用者選擇
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:show_hide_columns

程式事先隱藏
jQuery("#tbRecordList").hideCol(["recordDate"]);



3.讓某欄位被選到
//setSelection(id,onsetselection) if true the event onSetRow is launched
jQuery("#tbRecordList").setSelection('1',true);


讓header text出現hint
目前還沒看到有什麼method可用
就先手動設定吧
jqgrid會利用建立時,所取的欄位名(name,不是index哦)
加上jqgh_來命名該header的span,如下
jQuery("#jqgh_test").attr("title", "This is title");

星期六, 3月 07, 2009

玩遊戲會重開機

就只有玩遊戲時才會發生
太神奇了
還以為是不是有什麼力量叫我該努力了 不要再玩了
上網查了一下

有人提到是是音效卡的問題
利用DirectX診斷工具
把音效的加速層級從"完全加速"改為"基本加速"
就沒有發生過當機了...

不過自己倒是...又發生了
又研究了一下
發現在同頁面有個「測試DirectSound」
就按了來試試
發現寫說不支援硬體加速
所以改成「沒有加速」
再試試囉

p.s如何啟動「DirectX診斷工具」
1. 按一下 [開始],然後按一下 [執行]。
2. 輸入 dxdiag,然後按一下 [確定]。
3. 在 [系統] 索引標籤上,記下 [DirectX 版本] 列所顯示的 DirectX 版本。
4. 在 [DirectX 檔案] 索引標籤上,檢查每個 DirectX 檔案的版本資訊。
5. 檢查完檔案版本之後,按一下 [結束]。

Reference
玩遊戲重開機~~
如何使用 DirectX 診斷工具

星期四, 3月 05, 2009

批評建議

  • 2011.1.12
    我覺得你們家不是個正常溫暖的家庭 回去面對的不是責罵就是碎念 或是面對一群根本沒有血緣關係的人 到處串門子 我覺得沒有意義

    重要的婚喪喜慶 節日 生日 我該配合回去的我都回去了
    你明明知道我不愛回去 每次我配合回去 你會說謝謝我回去 但之後 卻又會忘記這些 額外要求我要幹嘛幹嘛
    那個家庭是你的責任不是我的 我只需做到我該做的
    或許你會覺得我不孝順 但是你也知道以前我不是那麼不愛回去的人
    其實結婚前後 你爸 你妹 阿公阿嬤 對我都沒有改變 我很感激
    但是你媽變太多了 我很怕
    我真的很怕
    還有一堆婆媽阿姨 我很不喜歡
    但是你媽變太多了 我很怕
    我真的很怕
    還有一堆婆媽阿姨 我很不喜歡
    為什麼別人的媳婦面對的 是一個正常的家庭 就是家人 我卻還要面對 我永遠記不起來的外人
    再來 你回去 跟著你媽東奔西跑 有意義嗎 你要陪的是你爸 你阿公阿嬤
    但你有時候沒有說話的拳利 要跟著你媽辦一堆在我看來沒有意義的大事
    然後回來再跟我說 你沒有陪家人
    這樣對嗎
    最後我要說的是
    我不知道你到比幫我擋了多少
    但我覺得你"號稱長子 長孫" 但說話好像沒有分量
    你在幫我說話的時候 永遠一附站不住腳的感覺
    永遠像個小孩再跟爸媽說謊
    為什麼都沒有辦法理直氣壯
    我媽在我們結婚當天 就告訴你 要當個有肩膀的人
    你要扛起來啊
    為什麼不能說 我回來就好了 幹嘛每次都有帶她 的那種氣魄
    不是藉口
    我需要的不是藉口
    根本不用藉口
    就是"他回來幹嗎?" 我回來就好的那種態度
    我只能說 你每次都擋了7成 最後3成還是掃到我
    如果你講話有份量 還有三成會掃到我嗎
    有責任的時候 就說你是長子長孫大哥
    但說話一點分量都沒有
    像個孩子被擺布
    你都自以為長大了 處理得很好 擋了很多
    但在我看來還是不及格
    所以我很累
    我求你不要自以為長大了 趕快真正長大好嗎
  • 2009.3.5
    • R:Error Handling要加強
    • M:仔細檢查,再把結果給別人
    • A:遇到問題多討論,避免做白工
    • D:
      • PDCA要做好,規劃有做好,就不會有問題
      • 管理:溝通文件要做好
      • 態度要改進,不再是學生,錯了有人handle;商業軟體,要以滿足客戶為出發點,不是功能達到即可
  • 2008年工作回顧
    • 工作上的態度,有時表現失常,造成其他人心裡不舒服
    • 需加強底層的觀念,溝通技巧、態度可以再柔軟一些
    • 工作結果需多檢查再丟出來

    工作都1年了,還是這樣
    下個星期要壓光碟了,程式還會當

軟體專案管理

《人月神話》
《最後期限》
《與熊共舞》
《你想通了嗎?》

《溫伯格的軟體管理學》
如果《人月神話》是一種反思與沉澱,那麼《溫伯格的軟體管理學》就是軟體專案管理的最佳實務!

星期三, 3月 04, 2009

ClickOnce 和 Windows Installer 的比較

用了一陣子的ClickOnce
雖然已知ClickOnce有先天的限制
不過覺得相當簡單好用
所以下定決定要克服這些限制
卻也花了不少時間查別人如何做
雖然克服了一些 但距正規安裝落差還是一大段
最後還是放棄了
乖乖的去學InstallShield

鏈結有比較表
先天無法克服的...就不要硬拚了...
有做出來就還可偷笑一下...
做不出來不僅累了自己 還要被人定
ClickOnce 和 Windows Installer 的比較表

星期二, 3月 03, 2009

自定螢幕解析度

最近看LCD大降價 想台大螢幕的來取代17吋的LCD
聽信網路謠言說LCD螢幕16:10比較適合看網頁
於是乎 買了Philips 220CW 22吋大LCD

開始一看 最佳解析度 1680*1050 60Mhz
卻發現顯卡沒有此選項只有1600*1024 ...
那就1600*1024先開來看看吧
oh no~~~ 除了被壓成扁身外 居然連字都變糊的

把解析度調低至1280*800 才變清析
原想那就這樣吧 一向來逆來順受
可是實在不甘心 雖然LCD已經跟前陣子比較來便宜了許多
但是花了錢 卻只能用較低的解析度
明明畫面這麼大 桌面的圖示、字型都可以再小一點 不甘呀~~~
好吧 試著亂調不行、重灌LCD,顯示卡Driver都失敗

原廠軟體出動
實在是「有步想到無步」
拿出LCD廠都會附的沒用光碟
灌了原廠附的軟體

看到了一個Resolution 字眼應該滿像的
又看到說明有寫clear text... 就是這個啦
就給他按下去
果然....字變清析了...
ya 又讓我回抱這22吋的感動

再拚1680*1050
事隔1年多
雖然字已是清析 但依然不是 1680*1050
畫面還是被壓成1600*1024 圖都扁扁的 看了就覺得很"礙優"
想一想 沒有這個1680*1050 那是不是有軟體可以自定這個解析度
後來看到NVIDIA的軟體可以自定 不過我的顯卡是Ati的 慘念
最後找到PowerStrip這個軟體
我的22吋總算出現了最佳解析度.... 而且連字也是清析的..
嗚 好感動

Reference:
【教學】為繪圖卡及螢幕設定自訂解析度