在西元2007年08月20日, 一個值得紀念的一天, 因為主機及我的部落格隨著閃電而去, 真是無限感概, 也從中得到了一個時常被遺忘的經驗, 那就是常常要關心自己的電腦並且常常做一下資料備份...XD
話說當天凌晨, 一陣轟然巨響的雷聲, 在天空中響起, 當然沒有吵起我, 吵起我的是兩台主機同時"嗶"一聲, 讓我不由得毛骨悚然, 天啊~~上個月的事件不會再發生吧, 上次這樣過後, 主機的檔案系統就出了問題, 是很用力的把他救回來, 那又是一段往事了, 不過看到他只開了一次機就不再重開後, 心裡也安然了許多, 不多說...就再繼續睡了..XD
一如往常工作, 到了下午, 突然主機在乾妹"樺樺"進去收信時, 造成主機大LAG後, 我的主機就完全沒反應了, 天啊!! 真的發生了..
一回到家, 直接衝到主機前關心他, 發現他硬碟燈一直在不斷快閃, 心想~~不會吧...閃了一下午??....這樣不是不妙..而是非常不妙了....就只有進入系統下了強制關機指令, 結果無效...只有忍痛把電拔掉(因為機體溫度已經好高了)...果然重開機..馬上就過熱警示, 拆下來拿到冷氣前花了五分鐘把他吹冷, 再重開機...情況一樣...一直沒有方法解決, 用了 single mode來修復...也顯示說無壞軌, 到底是怎麼了呢!?
經過五六次的重開後..終於在開機BOOT時就掛了...唉!! 該來的還是要來, 跑不掉了...拆下硬碟拿到Window系統上利用Explorer2fs來查看內容, 無法讀取....再利用R-Studio修復, 救回了不少東西(在此也要喇叭一下R-Studio真的好用)...
就在昨晚, 買了新材料回來換, 把整台重整後, 下載了最後的FedoraCore7來安裝, 開始的重灌之路, 人家系統Crash重灌Windows是家常便飯, 但是重灌Linux是一個大工程, 尤其又是FC7, 只能自己摸...這個日子就漫長了...到目前為止恢復的服務也只有WWW, MAIL, DNS, FTP, SAMBA而已..還有好多項還沒裝回來...包含網站..論壇...天啊....真是讓我好好的上了一課, 資料一定要勤備份~~~~
目前進度想慢慢先把Blog恢復, 不過內容已經不想再PO了..就讓他隨風而逝吧~~~
請老天祝福我早日完成這個大任務~~~~
ps. 光想到魔獸公會的DKP...我就已經想自殺了...哇啊啊啊~~~~
今天在新專案上寫上一個跑馬燈公告程式...因為舊式的 marquee 實在不符合效益..而且訊息也必須是即時讀取的動態公告才是..所以就用Javascript寫了一支程式..當然了, 為了可以不斷去資料庫抓取資料及重覆迴圈, 就得要用到 setTimeout的程序來運行嘍..程式原碼如下...
====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var newRand;
var msg = new Array("台股開盤勁揚139點 攻上9200點", "中信金:兆豐金股票四年內賣光光", "台新銀:全力推動與彰銀換股", "公營事業成功轉型 台肥鎖定藍金產業 賣水也賣保養品");
var num = msg.length;
showData();
function getRandom() {
var ranNum= Math.floor(Math.random() * num);
return ranNum;
}
function showData() {
seq = 0;
showObj.innerHtml = '';
newRand = getRandom();
Scroll();
setTimeout("showData()", changetime );
}
function Scroll() {
showObj.innerHTML = msg[newRand].substring(0, seq);
seq++; seq++;
setTimeout("Scroll()", interspeed );
}
====================================================
結果一運行...ㄟ..好了...沒什麼問題..但是...偶然按出工作管理員後..發現CPU佔用率居然一開始就45%...第二迴圈一開始就變成98%了...哇....而且顯示的速度也變快了...真慘...經過一番測試, 才發現似乎是setTimeout在搞鬼 查詢資料結果 嗯..似乎大家也有這些問題..而且只要把IE縮下來又正常了..但是..事情不能就這樣算了..因為如果使用者一直停在這一頁, 過了一段時間, 會因為程序不斷佔用而造成系統 crash , 所以開始了Debug之旅...首先...找到了一篇有關於setTimeout的教學...(筆者都會了..= =)..讀了其中的內容..找到了一個似乎可以解決的方法..就是 clearTimeout 的形式, 真是如獲至寶, 立刻改寫程式碼如下:
====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var newRand;
var nextShow;
var showing;
var msg = new Array("台股開盤勁揚139點 攻上9200點", "中信金:兆豐金股票四年內賣光光", "台新銀:全力推動與彰銀換股", "公營事業成功轉型 台肥鎖定藍金產業 賣水也賣保養品");
var num = msg.length;
showData();
function getRandom() {
var ranNum= Math.floor(Math.random() * num);
return ranNum;
}
function showData() {
if (showing || nextShow) {
clearTimeout(showing);
clearTimeout(nextShow);
}
seq = 0;
showObj.innerHtml = '';
newRand = getRandom();
Scroll();
nextShow = setTimeout("showData()", changetime );
}
function Scroll() {
showObj.innerHTML = msg[newRand].substring(0, seq);
seq++; seq++;
showing = setTimeout("Scroll()", interspeed );
}
====================================================
修改完再次運行, 嗯...發現顯示速度正常了, CPU佔用率也一直保持在38%...果然如筆者所猜測一樣..所以問題就解決了, 原來...程式的收尾也是很重要的, 在設計師的一念之間, 會方便到許多人的使用, 多了數行程式碼, 也將會使您的程式更加完善, 所以筆者再將本次經驗詳實記錄下來, 也可以供以後查閱嘍...cccc
最後為了要在同一頁不變換的狀態下, 重新讀取最新公告..所以加入了PHPRPC的程式碼, 把亂數取陣列資料改到server端讀取, 每次只讀回一筆最新的亂數資料即可...也可以節省在頁面reload時所再必須讀取的資料量...最後完成的程式碼為:
====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var msg;
var nextShow;
var showing;
var num;
showData();
function showData() {
if (showing || nextShow) {
clearTimeout(showing);
clearTimeout(nextShow);
}
rpc.rpc_getData("news", function(msg) {
seq = 0;
showObj.innerHtml = '';
Scroll();
nextShow = setTimeout("showData()", changetime );
});
}
function Scroll() {
showObj.innerHTML = msg.substring(0, seq);
seq++; seq++;
showing = setTimeout("Scroll()", interspeed );
}
====================================================
嗯...Javascript 還有許多筆者未探知的世界...現在開始運用也不會太晚..就怕沒有開始...^^
坐而論 ---> 起而行!!