也不必再打主控密碼了(輸入過的話)

這是 Firefox chrome url 用的 bookmarklet。

我註冊都沒在記密碼的。自動登入失靈的時候,只好打開 Firefox 的「已存密碼」然後找個地方(例如搜尋列)把密碼抄一遍,再複製、貼上表單登入。

要是哪天我被盜帳號,原因就是螢幕擷圖給別人,恰好密碼就在搜尋列吧。為甚麼這麼麻煩,都是「已存密碼」不能右鍵複製的緣故啊。

  1. 於是,把這支 bookmarklet 加入書籤 → 複製已存密碼(右鍵選單)
  2. 打開「已存密碼」(chrome://passwordmgr/content/passwordManager.xul)
  3. 點剛剛加入的書籤。
  4. 就可以開右鍵選單,複製或顯示密碼了。多選也有效。

原始碼拆開如下:

// 應於 chrome://passwordmgr/content/passwordManager.xul 執行
if( ! netscape.security.PrivilegeManager.isPrivilegeEnabled('UniversalXPConnect') || ! document.getElementById('signonsTree') ) {
 alert('操作失敗:\n\n請於下述 URL 執行這支 bookmarklet:\nchrome://passwordmgr/content/passwordManager.xul\n\n');
 return;
}

window.leqPasswordPicker = {

 clipboardHelper: Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper),

 init: function(){

   if( ! document.getElementById("leqPasswordPicker_menupopup") ) {

     var popupset = document.createElement("popupset");

       var menupopup = document.createElement("menupopup");
       menupopup.setAttribute('id', 'leqPasswordPicker_menupopup');

         var menuitem = document.createElement("menuitem");
         menuitem.setAttribute('oncommand', 'leqPasswordPicker.show();');
         menuitem.setAttribute('label', '顯示密碼');

         var menuitem2 = document.createElement("menuitem");
         menuitem2.setAttribute('oncommand', 'leqPasswordPicker.copy();');
         menuitem2.setAttribute('label', '複製密碼');

     menupopup.appendChild(menuitem);
     menupopup.appendChild(menuitem2);
     popupset.appendChild(menupopup);

     document.getElementById('signonsTree').getElementsByTagName('treechildren')[0].setAttribute('context', 'leqPasswordPicker_menupopup');
     document.getElementById('SignonViewerDialog').appendChild(popupset);
   }

 },

 show: function(){
   var selections = GetTreeSelections(signonsTree);
   if (selections.length > 0) {
     var txt = [];
     for (var s = 0 ; s < selections.length ; s++) {
       var i = selections[s];
       txt.push(
           '網 站:' + signonsTreeView.getCellText(i,signonsTree.columns[0])
         + '\n使用者:' + signonsTreeView.getCellText(i,signonsTree.columns[1])
         + '\n密 碼:\n\t' + signonsTreeView.getCellText(i,signonsTree.columns[2]) + '\n'
       );
     }
     alert( txt.join('\n') );
   }
 },

 copy: function(){
   var selections = GetTreeSelections(signonsTree);

   if (selections.length > 0) {
     var txt = [];
     for (var s = 0 ; s < selections.length ; s++) {
       var i = selections[s];
       txt.push( signonsTreeView.getCellText(i,signonsTree.columns[2]) );
     }
     this.clipboardHelper.copyString( txt.join('\n') );

     // 送一個 copy 事件,這段可以不用
     var evt = document.createEvent("HTMLEvents");
     evt.initEvent('copy', true, true);
     document.getElementById('signonsTree').getElementsByTagName('treechildren')[0].dispatchEvent(evt);
   }
 }

};

leqPasswordPicker.init();

這篇私人了。

節日(圖來自 openclipart.org)

一直願意上班,卻遲遲沒有行動的狀態怎麼改變的。

首先是一個不錯的工作機會(跟著人情一起)到來。
不是強迫、不是急就章的;就是有個職缺不錯,也還適合。

我有貢獻,可以得意地睡不著覺;沒有特別表現、仍受眷顧時,感到幸福,但是緊張。

於是主要契機可說是不好意思拒絕,覺得自己極可能去報到。

這樣近乎跳過了「求職」過程;
雖然能力所及當願做,但如果事情不是自找的,將來承受痛苦的能力恐怕要打折扣。

接著也許是次要動機:要報到的猶豫,比投履歷的猶豫更加猶豫……
一直打算找工作,現在讓我不用找工作,卻還是跟興趣靠不攏——好像說你時間都白費了。
實在不願這麼想,因為我過得還不錯。

再來很抱歉老提崔健,實在是 12/03 才遇上這事,就發現一首之前不曾注意的歌「投機份子」,在習慣多慮,卻必須切換成有機會、趕緊逮著的心態時,聽這歌詞真有無法壓抑的激動。後續也是帶著這份心情去面試,即使不算動機,也是很大的推力。

最後報告求職結果,幸福但緊張地,總算符合小小期望,在 12/25 以前上班了。
街坊聽了大概要搖頭,差點踩到退伍三年滿的達成線。

預設的按鈕外觀

小小東西放上 Google Code 有點抱歉。

試想一個 overflow-x 且高度很大的 box,想水平捲動,捲軸卻在畫面外(下方),怎麼辦?

hScrollBtns 在元素左右加上按鈕,用來操作水平捲動。這方法應該比 自動捲動 或 設法移動捲軸 容易接受。

詳細請至專案首頁 (Google Code) 參考,可支援 ie 6 不過 CSS 要改改。


Demo

$('#hScrollBtnsDemoBox').hScrollBtns({step:4, speed:6, safeHeight:300});

hScrollBtns Demo box:

box height:


醒獅睏寶圖(風獅爺睡覺)

醒獅睏寶圖(風獅爺睡覺)

(小時候畫的圖,放棄所有權利)

類似功能的 plugin,也許這才是你要的: HoverScroll jQuery PluginjQuery Smooth Div Scroll by Thomas Kahn

Legacy DM 一部分

上次崔健來台是 2007 海洋音樂祭,那時我剛迷上老崔,還不熟悉;現在每首深刻了,時間更加飛快。

唱到第二次安可我著實急了、喊啞了,再返場也沒幾首,花房姑娘那吉他就彈了下去…… 演完覺得太短,不夠滿足。


今晚聲音蠻大,配上老崔咬牙切齒的欠揍聲音,哈哈我超愛的。

印象最深的是寬容,聽到嘴角抽動淚汪汪;
還有上次沒演的撒點野假行僧,雖然沒古箏古琴,但比起 DVD 所見,效果讓人驚喜,1800 看這兩首也值得了。


setlist:

  1. 城市船夫 - 這開頭好。上次首曲是『飛了』,沒這首特異,顯得專場比較大膽安排
  2. 紅旗下的蛋
  3. 從頭再來 - 早期的歌有點太歡樂,好像唱遊課會玩的音樂,聽 89 的錄音也感嘆好天真啊
  4. 一無所有
  5. 寬容 - 發出奇怪的聲音,我眼淚都要掉下,跟後面有人偷笑形成對比
  6. 藍色骨頭 - 以下『給你一點顏色』三部曲,看完立刻增加身為一位樂迷的完成度
  7. 紅先生
  8. 迷失的季節
  9. 快讓我在這雪地上撒點兒野 - 我人在第二排,看不到後面是不是玩得比我顛,想在背後寫「撞我」
  10. 飛了 - 聽過 live 版後便一直期待這前奏
  11. 混子 - 海洋的時候我就驕傲地記住這一針見血的歌詞。這次沒介紹牛 B,反正湊合就那意思啦
  12. 假行僧 - 腦中疑似有古箏的聲音,這樣也很好
  13. 一塊紅布 -「因為我最知道你的痛苦」怎麼聽都肅然起敬
  14. 超越那一天 - 上次這首台下有雜音。這回老崔說他們是中國搖滾,我們才是臺灣搖滾,不曉得算溝通麼
  15. 解決(返場)- 這唸得還真是特別不清楚
  16. 新長征路上的搖滾 - 喔呵這回沒有叫大家玩蹲蹲了 ,不然還挺怕的
  17. 盒子(返場) - 造反聽啥都行,革命就聽老崔吧
  18. 花房姑娘

除了像一把刀子常演的沒演外,『時代的晚上』居然沒唱時代的晚上…… 我們應該至少再喊一輪安可才對。

SiteLauncher 1.6.0

新完成圖

才寫完 1.5 自訂 就出了 1.6,更新資訊見官網

  1. 更快、更省(記憶體)。
  2. 所有 shortcut 都能自訂圖示。
  3. 可新增工具列按鈕「Launch」,會在按鈕下方開 Launcher 畫面。
  4. 加強 shortcut 分組控制,例如垂直顯示(原為水平排列,更新後還得自己調回來……)
  5. 可選擇將新分頁開在目前分頁旁邊。
  6. 改善選項視窗對小螢幕的支援。
  7. 其他改進與修正。

舊文FireGestures 自訂滑鼠手勢的命令(不意外地)失效了,需改為:

sitelauncherLauncher.mode = sitelauncherLauncher.s_p.launcher;
sitelauncherLauncher.show();

新增這個腳本手勢 → SiteLauncher

2009-11-06: 與套件作者聯繫,他說改為下面這個比較好,以後也不會變來變去:

sitelauncherLauncher.invokeLauncherMode();

新增這個腳本手勢 → SiteLauncher


或者這個,跟「Launch」按鈕效果一樣,不保證開在畫面中央:

sitelauncherLauncher.invokeLauncherFromButton();

新增這個腳本手勢 → SiteLauncher (FromButton)


另外若啟用 shortcut 分組,會出現無法刪除的預設組(Main group)把 1.5.0 無分組的 shortcut 擺在裡面;如果 1.5.0 使用者將這些 shortcut 擺在最前,就會因為多了分組標題,而在 Launcher 上方多出一塊空間。

可藉 userChrome.css 隱藏之,第二行是用來縮小組間間距:

row.sitelauncherGroupRow:first-child {display:none;}
row.sitelauncherGroupRow hbox {padding:4px !important; margin:0 !important;}