Gnome – Menu 修復方法
Apr
因為要刪除一個亂碼顯示的 Menu Item, 居然把 Gnome 的 Application Menu 給弄壞了。Places 跟 System 兩個 Menu 都還可以動作,就只有點了 Application 沒有任何動作,”Main Menu” 編輯程式執行起來也沒作用,想必是選單資料檔被改壞了。結果變成只能用 Alt-F2 來執行程式了。從 Google 找到一個解答,最簡單的修復法是把系統的 Menu 複製一份到使用者的設定來,直接下一行指令:
cp /etc/xdg/menus/applications.menu ~/.config/menus/
收隊。
簡報時的口頭禪
Mar
這次所參加的這個專案,PI Team 的每個人都有上台簡報或是作為講師的機會,在會後我們特別對於主講人有一個意見回饋的小討論,就是讓 PI Team 的每一個成員在會後對主講人上課時的表現優缺點做點評 (又稱:殘酷舞台,是的,團隊中每個人輪流扮演著滅絕師太),這時發現每個人都會有不同的口頭禪,我自己的口頭禪是「那…」,「…這些東西…」,平常在對話的時候不會出現的口頭禪,在當講師的時候可能因為緊張的關係都冒出來了,將自己的課程錄下來以後,重新看過一次就會發現這些口頭禪聽起來非常奇怪,下次真得好好的注意一下怎麼來改善這個情況。
這次的專案很難得可以有這樣的 On Job Training 的機會,讓自己可以學一些在平常學不到的項目。以後其他上課的機會如果不做錄影的話,也可以試著用錄音筆錄下來在課程後聽聽看,看看是不是有進步。
DV -> AVI -> DivX (MPEG-4)
Mar
這一次加入的新專案在最近很密集的進行訓練課程,這些課程在上一次專案進行的時候並沒有留下任何的課程記錄,而這些課程又是我覺得很有價值的,導致上次我在專案結束前加入作 SR/SA 階段時非常後悔沒上到這些課 (大大的跟主管抱怨了好幾次),所以建議這次的 PM 讓我把課程內容用 DV 記錄 下來。當然也間接的讓這次專案進行時我自己的工作 Loading 增加很多,因為自己帶的 DV (SONY DCR-TRV22) 並不是新式使用光碟片或是硬碟的機種,而是稍微老一點的 DV 帶機種,所以每次錄完都需要將帶子上的影音轉一份到電腦上。
這部分的工作我找到了 Michael Carr 寫的一個叫做 DVIO 的工具,它的檔案只有 32K,執行後把 firewire (1394) 線接好,在 DV 上直接執行放影的動作,就可以把 DV 帶上的資料存到電腦上轉為 AVI 檔。不過一捲 LP 模式錄好的 90 分鐘帶子轉完有 20GB 左右,還得要經過壓縮,所以我就找了 DivX 官網的 DivX Converter (Google 一下就可以有優惠碼,填入後可以用優惠價註冊),使用 DivX 壓縮到8xxMB 大小 (極少失真壓縮真是 DivX 的強項呀)。
只不過這些轉檔的時間約是 1:1:1 (整體是 1:2 的時間) 也就是說 90 分鐘的帶子要花 90 分鐘轉為大 AVI,接著另外再花 90 分鐘左右把大 AVI 轉為 DivX 格式的小檔,還真不是普通的辛苦。
(如果哪位知道不需要 1:1 轉檔的工具,麻煩留言說說心得)
再來是某些檔案得作剪接的工作,下載了兩個工具都是 1:1 方式,也就是要邊播放才能剪,後來發現另一個工具 SolveigMM AVI Trimmer 可以不用邊播邊剪,所以提升了剪片的速度。
話說回來,雖然這樣作的過程是非常辛苦的,不過專案完成後可以保有知識資料 (Knowledge Management),以後加入專案的人不需要講師再上一次課 (顧問費省了),只要花時間把影片內容看一看,搭配學習的 PowerPoint 檔案,就可以很快的進入狀況,也為沒在專案中的人留下了知識記錄,辛苦的過程還是值得的呀。
A Try – Safari 4 beta
Mar
Apple 的 Safari 先前在版本 3 Beta 的時候就已經裝過了,結果因為 Bug 實在太多所以用不到一天就很火大的把它給移掉了,兩天前看到一篇文章在比較各家瀏覽器的 JavaScript,發現 Chrome 跟 Safari 4 的速度排在前兩名,先前 Chrome 也是因為諸多的問題所以裝完沒多久就移除,最近在使用 Google 各個 Service 與自己的 Blog (WordPress) 時發現到用 IE 或 Firefox 的速度並不是很理想,歸納出是因為 Javascript 執行速度的原因,因而在看到這篇文章後興起了再給 Safari 一次機會的念頭。很快的下載並安裝,用了半天實在對它很滿意,從現在起就多使用它,以後有甚麼其它的問題再來廣播一下。
我並不是 Firefox 的忠實粉絲,實際上我的電話裡跟 Linux OS 中還裝著 Opera,我對於 FF 的愛好其實只有一個原因是 “Open”,各家的瀏覽器有其優點,但 IE 除了 ActiveX (ATM 轉帳) 外,實在是沒有甚麼讓人值得留戀的地方,多試試其它選擇總是好的。
PS. 如果有使用 Safari 4 beta 有碰到甚麼問題的朋友,可以留言互相討論一下。
Ubuntu 使用 apt-get 出現 GPG error 解法
Mar
最近更新的時候都會出現:
W: GPG error: http://ppa.launchpad.net intrepid Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 6AF0E1940624A220
解法詳見:
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=13150&forum=2&post_id=68933
這樣子應該就可以了。
FON La Fonera to DD-WRT
Feb
準備把 FON 的 La Fonera 隨身帶著,在外頭的時候當成一台隨身 AP 可以共用一個網路接頭,所以就興起了把 La Fonera 刷為 DD-WRT 的念頭,先前已經有把 Buffalo WHR-HP-G54 刷為 DD-WRT 的經驗,但是在找 FON 刷法的時候碰上了不少的釘子,主要是因為有太多的刷法,所以每個人的說法都不一樣,而官方的刷法又是比較舊的版本,最後找到了 maTT cHEn 紀錄的 這一篇 我個人認為是一推資料裡最詳盡的,照著操作下去差不多三十分鐘就可以搞定了。
唯一的不同點是要把 FON 的 Firmware 回復到舊的版本,這個部分很簡單,只要 Reset 鍵按久一點然後拔除電源重新開機就可以了。至於刷機的時候要用到的程式,其實包成一包比較容易使用,解壓的時候只要解到同一個目錄下即可。我把安裝 V24 所需要的檔案包了一包,有需要的朋友請自行取用。
Downgrade the browser
Feb
前一陣子看到專家的安全警告,要大家放棄 IE6 全面改用 IE7 以上的版本,或者是乾脆使用 FireFox,公司裡很多 Portal 的標準是 IE,XP 中的瀏覽器也早就換成了 IE7,平常都是使用 FireFox 瀏覽網頁,在使用 ATM 服務或公司內的 Portal 才會用 IE。不過最近出現了怪事,IE7 中的 Pop-up blocker 並沒有開啟,某些需要開新視窗的功能也有把新視窗開起來,但是所有新開視窗都沒有讀資料,出現空白新視窗,所有的網站都一樣,甚至將安全性設到最低,或者是把網站加入 Trust Sites 也沒有辦法解決,最近也忙到找 Root cause 的時間都沒有,只好暫時把 IE7 回復到 IE6 了。
回復的方法很簡單,在新增移除程式裡將程式移除就可以了,官方網頁上有另一個方法,是直接執行反安裝的程式,看來 IE7 本身並 “不一定” 能靠一般的移除來解決,要看當初是怎麼安裝的了。如果有移除成功的朋友,別急著瀏覽網頁,記得先作一次 Windows Update 的更新動作,因為有一些 IE6 的 Patch 在這個時候是還沒有上完全的。
等有空再升級一次,看看問題可不可以經由降級->再升級的方式解決。
Magic programming course
Feb
如果有一門神奇的程式設計課程,讓你學個幾天就可以寫網站程式,達成你的創業夢,有沒有讓人很心動?這真的是一個會讓人下巴掉下來的課程,就算學費要個幾萬兩,也一定一大堆人擠破頭也要去上,一整個就是老鼠會在唬人的招數。工作這幾年,也算是閱程式碼無數,看過很多高學歷人才,號稱有兩三年的程式設計底子,寫出來的程式就像是學生在教作業,或者說是小孩子辦家家酒,拿寫程式當作兒童遊戲所寫出來的的程式碼。要會寫程式沒這麼難,但是要寫出一個『堪用』的程式卻不是那麼簡單。也許是我對『堪用』這個詞的標準比該講師來的高吧,
在作 Code Review 的時候,我習慣把有問題的程式分幾大類 Issue:
1.Maintainability
2.Performance
3.Bug
4.Security
不是寫出現在可以動的程式就可以了,要想你的程式在上線後有多少使用者,要經過多少次的改版,多少人一起維護,沒有經過上述的檢驗,現在可以動,不表示一個月後還可以動,在你的機器可以動,不表示換一台機器就可以動。
(詞窮了)
如果新手上過那神奇的課程,並且真的可以寫出堪用的網站服務,麻煩寫個評論指教一下,我還真想學學那神乎其技的教學方法,這樣也不枉我這幾年修煉的技術,開幾門課就可以讓銀子嘩啦啦的流進門。
PS. 說實在話,創業者學寫程式還不如學學怎麼做 Paper prototyping。
Lightweight Rich Text Editor 的 Postback 問題
Feb
在上一篇 Lightweight Rich Text Editor (RTE / WYSIWYG) plugin for jQuery 中曾經提到:如果曾在此 Editor 上切換 html/css 時, 其接收方式就必須改為 Request.Form 的方式接收, 原因為何呢?? 我們必須先去瞭解此 Editor 切換 html/css 的方式以及 Post 時的狀況…
該 Editor 使用方式非常簡單, 只需使用下列源碼即可(假設已經有個 class 為 rte 的 textarea )
| =====[ Code Start / JavaScript (MSIE 5.5 DOM), with (Jscript) Windows Script Host ]===== |
| $(‘.rte’).rte({ css: ‘default.css’, controls_rte: rte_toolbar, ontrols_html: html_toolbar }); |
請自行下載該源碼, 以下將節錄部分源碼加以說明…
| =====[ Code Start / JavaScript (MSIE 5.5 DOM), with (Jscript) Windows Script Host ]===== |
| lwRTE.prototype.enable_design_mode = function() { // …. 省略 if($(self.textarea).attr(‘name’)) self.iframe.title = $(self.textarea).attr(‘name’); var content = $(self.textarea).val(); $(self.textarea).hide().after(self.iframe).remove(); self.textarea = null; // …. 省略 } |
self.textarea 為一 Element, 就是第一段以 $(’.rte’) 方式傳入的 textarea; 而 self.iframe 也是一個 Element, 將是 HTML 編輯器的編輯區塊…
lwRTE.enable_design_mode 的作用是將 Editor 變更為 HTML 編輯模式…
請注意上段源碼的 $(self.textarea).hide().after(self.iframe).remove();,
源碼會先將 self.textarea 的 name attribute 存放於 self.iframe 的 title attribute 中…
然後把 self.textarea 隱藏後, 在該 Element 後面插入 self.iframe, 再將 self.textarea 移除… 請注意是移除不是隱藏喔…
我們再看另一段源碼…
| =====[ Code Start / JavaScript (MSIE 5.5 DOM), with (Jscript) Windows Script Host ]===== |
| lwRTE.prototype.disable_design_mode = function(submit) { var self = this; self.textarea = (submit) ? $(‘<input type=”hidden” />’).get(0) : $(‘<textarea></textarea>’).width(‘100%’).height(self.height).get(0); // …. 省略 if(self.iframe.title) self.textarea.name = self.iframe.title; // …. 省略 if(submit != true) { $(self.iframe).remove(); self.iframe = null; self.activate_toolbar(self.textarea, self.toolbars.html); } } |
在lwRTE.disable_design_mode的作用是將 Editor 變更為純文字的編輯模式…
此函示中, 會依 submit 來決定是新增 HiddenField 還是 TextArea, 並將新增 Element 中的 name attribute 設定為 self.iframe 的 title attribute, 當 Postback 時, 才能將其 html 內容回傳…
在重複切換 html/css 多次後, 將會造成 self.textarea 多次 create & remove, 所以當 Postback 後, Server Side 會收到多份以原 textarea 為 name 以及同樣 name 的 HiddenField 資料…
不曉得原因為何, 但如果 jQuery 有確實 remove element 的話, 照理來說是不應該會有這種情況發生, 但為解決這個問題, 所以必須使用在上一篇提到的方法 Request.Form, 因為在ASP(ASP.NET)中, POST 收到的資料, 如果 name 相同的話, 將會以 Array String (string1, string2, …) 的方式傳送, 所以必須以Request.Form 的方式加以接收並擷取…
而擷取資料的方式為 :
| =====[ Code Start / C Sharp (Include .NET Framework 2.0) ]===== |
| string[] arr = Request.Form.GetValues(TextBox1.UniqueID); Label1.Text = arr[arr.Length - 1]; |
為何擷取最後一個的值, 因為 lwRTE 所插入的 HiddenField 是插入在原有 TextArea 的後面, 所以取最後一個才是正確的 html 內容
以上說明, 希望能幫到需要的人…
Lightweight Rich Text Editor (RTE / WYSIWYG) plugin for jQuery
Feb
幾年前因工作需求, 必須使用 HTML Editor WebControl, 找了幾個 3thParty Control, 都無法完全符合需求, 而且最重要的一點, 因為都要付費…
所幸翻出 M$ 提供的 HTML Editor 範例, 自行修改成符合工作需求的 WebControl, 修改完後卻發現非百分百相容於 Firefox, 鴕鳥心態一起, 乾脆不理 Firefox 的 User, 畢竟是企業內部使用, 可以利用行政命令強制使用IE…
直到個人所經營的 BicycleMap 也必須用到 HTML Editor, 而也因為這個 HTML Editor 常常被車友罵到臭頭, 痛定思痛, 花個幾天時間找到了 Lightweight Rich Text Editor (RTE / WYSIWYG) plugin for jQuery, 並修改部分功能, 如多檔上傳等功能…

此Plugin的使用方式非常簡單, 只要對 JavaScript & jQuery 有相當程度的瞭解, 即可馬上上手…
而用在 ASP.NET 中的方式, 簡直無技巧可言, 只需放入一個 MultiLine 的 TextBox, 再加上一段 jQuery 語法的 JavaScript Code 即可使用…
Postback 後, Server 端的接收方式, 直接讀取該 TextBox.Text 即可收到其內容, 但須注意的是, 如果曾在此 Editor 上切換 html/css 時, 其接收方式就必須改為 Request.Form 的方式接收, 否則會收到兩份以上的內容, 其原因容後再敘…
加了一個新硬碟
Feb
在觀望許久之後,昨天沒事一個人到光華去晃晃,發現現在硬碟的價格非常的低,1TB 容量的大概跟網拍上面差了五六百元,所以就買了一個 1TB 的裝到 Server 上放資料,型號是: WD Caviar Green (WD10EADS) 1TB/32MB/SATA/3Gb per second,主要是 Home Server 使用,所以低電耗是必要的項目,再來因為我的 Server 都是放在自己房間裡,所以低噪音也是一個必要項目,加上價格等等的因素加起來,大概這一顆硬碟是首選了。
裝在 Ubuntu Server 上選擇的檔案系統是 Reiserfs (我其它的都用穩定快速的 ext3),主要是當 File Server,存放的文件量比較大,而且大多是一些小文件,當然一些多媒體文件也會放在上面,試一下 Reiserfs 是不是有傳說中的那麼好。把一些本來已經作好的 Base VM 檔放在上面,還有備分資料也多了一個地方可以放,光搬這些檔案就花了不少的時間。然後發現以前硬碟小的時候燒了好多的 CD/DVD 片子,現在找了一些常用的把它們壓成 ISO 放在 Server 上方便取用。
原來比較小的兩個資料碟也從 Server 上卸了下來(降噪/降能耗),果然睡覺時的環境安靜了許多。



