一些想法與建議

442 views
Skip to first unread message

Hsiao-Ting Yu

unread,
Sep 4, 2011, 11:05:39 AM9/4/11
to pcmanfx
是的,我一直都是 pcmanfx 的隱藏 Commiter... XDDDD
看了一些文章跟最近的新變更,我這裡有一些想法和建議:

== 協作與管理層面 ==

1. Switch from SVN to Git。Git 在各種層面上,對於多人協作的專案而言都好用太多了...
Google Code 現在也開始支援 Git 了,所以考慮把主要的原始碼 Repository 移到 Git 吧...

我自己則是因為習慣用 GitHub,所以 Fork 了一份到 https://github.com/littlebtc/pcmanfx-kai
還沒開始動工,只是把 u881831 大大的 pref_test branch 原封不動移過去...

2. 統一 Filename schemes
modules/ 的部份看第三點
其他的可以考慮按照 Mozilla 原始碼的慣例全部用 mixedCase.js。

3. Move most of the JavaScript to modules/
JavaScript code modules 可以減少多餘的 Loading,像 ansiparser.js 啦、drawutils.js
那些東西都適合移到 modules/
然後用 Components.utils.import 去 Load 他

檔案名稱可以考慮改跟 Mozilla 原始碼的慣例一致,例如AnsiParser.jsm、DrawUtils.jsm
附檔名要 .js 或 .jsm 我覺得隨意,雖然我喜歡 .jsm
我的話是改成 .jsm 後,另外搭配 Vim modeline,讓 Vim happy 一點...

值得注意的是,換用 Code Modules 之後沒有 DOM,所以 window 和 document 裡頭的東西不能用
e.g. setTimeout(但這個還好,AMO 自動審核會叫你改用 nsITimer),不過應該都有 Workaround

至於 JS 方面的 Convention,我覺得現在就做得不錯了,沒有特別改善的必要...

== 功能方面 ==

1. 選項方面

Per-site config 部分有沒有機會改成「當直接進入選項方塊時,可以新增任意站台」的形式?
我沒有細看 Code,但覺得好像這件事情並不簡單
而當點右鍵進入選項時,自動開一個新站台config後跳到那個設定也不錯...

ondialogaccept 時儲存的作法不錯,It even works on OSX(OSX 中選項沒有確定取消按鈕喔 XD)
但 OSX 的另外一個難題是他「理論」上要 instant apply,不過我想就不管吧 ||||||

2. 字體方面

可以考慮跟 Nally / PCMan X 一樣中英文分別設置嗎?
我會這麼想主要是因為 Firefox Mac 下預設長這樣子:
http://i.imgur.com/v0SCY.png

同時,有沒有可能在安裝時根據 OS 自動選擇預設字體設定?
(Nally 的預設是 LiHei Pro 22 + Monaco 18)

目前當兵中沒時間細改,先把看到的小地方丟出來...

PCMan

unread,
Sep 4, 2011, 12:10:38 PM9/4/11
to pcm...@googlegroups.com
1. 支持轉移到 git,我自己也都是用 git,做 branching/merging 超方便
2. 不建議使用太多 js module,雖然效能很棒,但是會喪失 portability
事實上,我還希望可以減少對 firefox only 的元件的依賴,你注意看我大部分的 .js,我原本在寫的時候大多都還是保持 portable 的語法。這樣做的目的是,如果我們可以把 firefox only 的東西隔離在少數檔案內,剩下的部份都 portable,那基本上我們可以有 Google Chrome 的版本! (不過有個地方好像有寫到 const 這個非標準的關鍵字,移植時要換成 var)
Google Chrome 完全有支援 Html5 canvas,而且 V8 engine 的 performance 很好,轉移過去絕對值得,而且跑起來應該會很接近原生程式。唯一一個沒解決的問題,只剩下 Chrome 沒有支援 Raw TCP socket,所以用 Javascript 做 Telnet 就不可能了。
但是,這個問題其實有解:
Flash 有支援 raw TCP socket, 而 Chrome 有內建 flash,所以透過這些 wrapper,是可以在 chrome 裡面用 javascript 連 telnet (我還沒實地測試但是理論上絕對可行)
所以,只要有時間,其實把現有程式移植到 Chrome 是完全可能的,就看有沒有人有興趣。只要可以把 preference 的部份隔離開,適度的封裝,剩下的部份幾乎可以原封不動搬到 Chrome,有興趣的高手可以試試。

2011/9/4 Hsiao-Ting Yu <sst.d...@gmail.com>

u881831

unread,
Sep 5, 2011, 12:45:23 PM9/5/11
to pcmanfx
我對Git 不是很熟悉,
看了一些文件後我覺得Git 比svn 方便很多,
我也贊成轉移到Git 。


On 9月5日, 上午12時10分, PCMan <pcman...@gmail.com> wrote:
> 1. 支持轉移到 git,我自己也都是用 git,做 branching/merging 超方便
> 2. 不建議使用太多 js module,雖然效能很棒,但是會喪失 portability
> 事實上,我還希望可以減少對 firefox only 的元件的依賴,你注意看我大部分的 .js,我原本在寫的時候大多都還是保持 portable
> 的語法。這樣做的目的是,如果我們可以把 firefox only 的東西隔離在少數檔案內,剩下的部份都 portable,那基本上我們可以有
> Google Chrome 的版本! (不過有個地方好像有寫到 const 這個非標準的關鍵字,移植時要換成 var)
> Google Chrome 完全有支援 Html5 canvas,而且 V8 engine 的 performance
> 很好,轉移過去絕對值得,而且跑起來應該會很接近原生程式。唯一一個沒解決的問題,只剩下 Chrome 沒有支援 Raw TCP socket,所以用
> Javascript 做 Telnet 就不可能了。

> 但是,這個問題其實有解:http://code.google.com/p/jssockets/http://matthaynes.net/blog/2008/07/17/socketbridge-flash-javascript-s...


> Flash 有支援 raw TCP socket, 而 Chrome 有內建 flash,所以透過這些 wrapper,是可以在 chrome 裡面用
> javascript 連 telnet (我還沒實地測試但是理論上絕對可行)
> 所以,只要有時間,其實把現有程式移植到 Chrome 是完全可能的,就看有沒有人有興趣。只要可以把 preference
> 的部份隔離開,適度的封裝,剩下的部份幾乎可以原封不動搬到 Chrome,有興趣的高手可以試試。
>

> 2011/9/4 Hsiao-Ting Yu <sst.dre...@gmail.com>


>
>
>
>
>
>
>
> > 是的,我一直都是 pcmanfx 的隱藏 Commiter... XDDDD
> > 看了一些文章跟最近的新變更,我這裡有一些想法和建議:
>
> > == 協作與管理層面 ==
>
> > 1. Switch from SVN to Git。Git 在各種層面上,對於多人協作的專案而言都好用太多了...
> > Google Code 現在也開始支援 Git 了,所以考慮把主要的原始碼 Repository 移到 Git 吧...
>

> > 我自己則是因為習慣用 GitHub,所以 Fork 了一份到https://github.com/littlebtc/pcmanfx-kai


> > 還沒開始動工,只是把 u881831 大大的 pref_test branch 原封不動移過去...
>
> > 2. 統一 Filename schemes
> > modules/ 的部份看第三點
> > 其他的可以考慮按照 Mozilla 原始碼的慣例全部用 mixedCase.js。
>
> > 3. Move most of the JavaScript to modules/
> > JavaScript code modules 可以減少多餘的 Loading,像 ansiparser.js 啦、drawutils.js
> > 那些東西都適合移到 modules/
> > 然後用 Components.utils.import 去 Load 他
>
> > 檔案名稱可以考慮改跟 Mozilla 原始碼的慣例一致,例如AnsiParser.jsm、DrawUtils.jsm
> > 附檔名要 .js 或 .jsm 我覺得隨意,雖然我喜歡 .jsm
> > 我的話是改成 .jsm 後,另外搭配 Vim modeline,讓 Vim happy 一點...
>
> > 值得注意的是,換用 Code Modules 之後沒有 DOM,所以 window 和 document 裡頭的東西不能用
> > e.g. setTimeout(但這個還好,AMO 自動審核會叫你改用 nsITimer),不過應該都有 Workaround
>
> > 至於 JS 方面的 Convention,我覺得現在就做得不錯了,沒有特別改善的必要...
>
> > == 功能方面 ==
>
> > 1. 選項方面
>
> > Per-site config 部分有沒有機會改成「當直接進入選項方塊時,可以新增任意站台」的形式?
> > 我沒有細看 Code,但覺得好像這件事情並不簡單
> > 而當點右鍵進入選項時,自動開一個新站台config後跳到那個設定也不錯...
>

新增任意站台的部分,
架構上是很容易實作,
不過如何新增就比較麻煩了。
使用textbox 是最簡單的方法,
不過要是使用者輸入錯誤的網址就有可能出現無法預期的錯誤,
要是用匯入書籤的方式新增的話就是如何篩選書籤的問題了。

另外原先的設計就是由右鍵進入選項時就自動開一個新站台設定並跳過去,
不過我想對不希望使用個別站台設定的使用者而言應該不希望自動新增,
(雖然只要多按一個移除按鈕就和沒有自動新增一樣)
也許這邊可以做成一個選項?

> > ondialogaccept 時儲存的作法不錯,It even works on OSX(OSX 中選項沒有確定取消按鈕喔 XD)
> > 但 OSX 的另外一個難題是他「理論」上要 instant apply,不過我想就不管吧 ||||||
>

windows 下就是用ondialogaccept套用設定,
Linux 下沒有確定按鈕所以ondialogaccept沒有作用,
所以就在每個XUL 元件加了oncommand 之類的參數立即套用。
(windows 下oncommand 呼叫的函式寫成自動跳出不執行)
因為這邊是偵測firefox 的instant apply 設定而不是作業系統,
所以我之前猜想OSX 應該可以立即套用,
不過因為我手上沒有OSX 所以不知道那邊的狀況怎樣,
請問可以描述一下那邊的行為嗎?

Hsiao-Ting Yu

unread,
Sep 11, 2011, 12:43:31 PM9/11/11
to pcm...@googlegroups.com

PCMan於 2011年9月5日星期一UTC+8上午12時10分38秒寫道:
1. 支持轉移到 git,我自己也都是用 git,做 branching/merging 超方便
:)
2. 不建議使用太多 js module,雖然效能很棒,但是會喪失 portability
我不覺得會有 Portability 的問題

如果要移到 JS Module,幾乎把 <script> 改成 Components.utils.import 之後就做完了 XD
其他東西幾乎都可以不用動(除了像 conn.js 要把  closeConfirm 拿掉)

而且移到 Module 之後也許可以完全把 DOM 抽離整個主要的 JS Code 裡
這樣 Port 到 CommonJS 之類的平台的話也會更方便...
 

Hsiao-Ting Yu

unread,
Sep 11, 2011, 12:48:08 PM9/11/11
to pcm...@googlegroups.com


u881831於 2011年9月6日星期二UTC+8上午12時45分23秒寫道:

新增任意站台的部分,
架構上是很容易實作,
不過如何新增就比較麻煩了。
使用textbox 是最簡單的方法,
不過要是使用者輸入錯誤的網址就有可能出現無法預期的錯誤,
要是用匯入書籤的方式新增的話就是如何篩選書籤的問題了。

另外原先的設計就是由右鍵進入選項時就自動開一個新站台設定並跳過去,
不過我想對不希望使用個別站台設定的使用者而言應該不希望自動新增,
(雖然只要多按一個移除按鈕就和沒有自動新增一樣)
也許這邊可以做成一個選項?

應該講現在的 UI 讓我有點困惑,為什麼我單獨進去選項時無法新增站台 XD
所以才會有之前的那些想法。

您所提的問題我其實好像也沒有好解答 @@
還是說,記錄使用者的站台連線歷史,顯示連線過的站台?這樣做也許不錯?
 

> > ondialogaccept 時儲存的作法不錯,It even works on OSX(OSX 中選項沒有確定取消按鈕喔 XD)
> > 但 OSX 的另外一個難題是他「理論」上要 instant apply,不過我想就不管吧 ||||||
>

windows 下就是用ondialogaccept套用設定,
Linux 下沒有確定按鈕所以ondialogaccept沒有作用,
所以就在每個XUL 元件加了oncommand 之類的參數立即套用。
(windows 下oncommand 呼叫的函式寫成自動跳出不執行)
因為這邊是偵測firefox 的instant apply 設定而不是作業系統,

所以我之前猜想OSX 應該可以立即套用,
不過因為我手上沒有OSX 所以不知道那邊的狀況怎樣,
請問可以描述一下那邊的行為嗎?

如果您是偵測 Firefox 的 instantApply 的話應該會 Work。
我等等看一下 Source code。

Mac 的情況也是沒有確定取消按鈕(甚至沒有「關閉」)。

u881831

unread,
Oct 19, 2011, 1:10:00 PM10/19/11
to pcmanfx

On 9月12日, 上午12時48分, Hsiao-Ting Yu <sst.dre...@gmail.com> wrote:
> u881831於 2011年9月6日星期二UTC+8上午12時45分23秒寫道:
>
> > 新增任意站台的部分,
> > 架構上是很容易實作,
> > 不過如何新增就比較麻煩了。
> > 使用textbox 是最簡單的方法,
> > 不過要是使用者輸入錯誤的網址就有可能出現無法預期的錯誤,
> > 要是用匯入書籤的方式新增的話就是如何篩選書籤的問題了。
>
> > 另外原先的設計就是由右鍵進入選項時就自動開一個新站台設定並跳過去,
> > 不過我想對不希望使用個別站台設定的使用者而言應該不希望自動新增,
> > (雖然只要多按一個移除按鈕就和沒有自動新增一樣)
> > 也許這邊可以做成一個選項?
>
> 應該講現在的 UI 讓我有點困惑,為什麼我單獨進去選項時無法新增站台 XD
> 所以才會有之前的那些想法。
>
> 您所提的問題我其實好像也沒有好解答 @@
> 還是說,記錄使用者的站台連線歷史,顯示連線過的站台?這樣做也許不錯?

這部分目前我也沒有什麼好的想法,
我這邊就先修改了addSite() 讓它可以直接新增任意站台。

>
> > > > ondialogaccept 時儲存的作法不錯,It even works on OSX(OSX 中選項沒有確定取消按鈕喔 XD)
> > > > 但 OSX 的另外一個難題是他「理論」上要 instant apply,不過我想就不管吧 ||||||
>
> > windows 下就是用ondialogaccept套用設定,
> > Linux 下沒有確定按鈕所以ondialogaccept沒有作用,
> > 所以就在每個XUL 元件加了oncommand 之類的參數立即套用。
> > (windows 下oncommand 呼叫的函式寫成自動跳出不執行)
> > 因為這邊是偵測firefox 的instant apply 設定而不是作業系統,
>
> 所以我之前猜想OSX 應該可以立即套用,> 不過因為我手上沒有OSX 所以不知道那邊的狀況怎樣,
> > 請問可以描述一下那邊的行為嗎?
>
> 如果您是偵測 Firefox 的 instantApply 的話應該會 Work。
> 我等等看一下 Source code。
>
> Mac 的情況也是沒有確定取消按鈕(甚至沒有「關閉」)。

我發現有幾個元件的立即套用沒有處理好,
editable menulist 必須再加上 onchange 才能正確處理,
我已經在r130修正了。

>
>
>
>
>
>
>
> > > 2. 字體方面
>
> > > > 可以考慮跟 Nally / PCMan X 一樣中英文分別設置嗎?
> > > > 我會這麼想主要是因為 Firefox Mac 下預設長這樣子:
> > > >http://i.imgur.com/v0SCY.png
>
> > > > 同時,有沒有可能在安裝時根據 OS 自動選擇預設字體設定?
> > > > (Nally 的預設是 LiHei Pro 22 + Monaco 18)
>
> > > > 目前當兵中沒時間細改,先把看到的小地方丟出來...

最近我新增了一些偏好設定:

來訊通知
pcmanx的通知視窗在滑鼠點通知視窗以外的地方就會消失,
直接點通知視窗時會套到有來訊的分頁;
我目前的實作是點通知視窗後通知視窗會消失,
點其他地方沒有動作。
點通知視窗跳到來訊分頁是很容易實作,
不過點其他地方關閉通知視窗似乎不容易實作,
在不能立刻關閉通知視窗的情況下實作跳到來訊分頁是恰當的嗎?

彩色複製貼上
彩色複製的資料沒有儲存在系統剪貼簿,
這時候貼上的函式就會貼彩色複製的資料,
當系統剪貼簿變更時貼上的函式就會貼系統剪貼簿資料,
目前監聽系統剪貼簿的功能只是在系統剪貼簿放一個罕見的字串,
然後貼上時偵測是否還是這個字串,
不知道有沒有更好的方法?
另外為了處理不同編碼BBS 之間的複製貼上,
所有字串複製時先轉Unicode 然後貼上時再根據各自的編碼轉成ANSI,
一字雙色就先移到該字前方並用一個wiki標示為保留的控制碼(*[...50m)做記號,
之後再根據這個記號轉回來。
因為這個字串只在內部存取不會跑到系統剪貼簿所以應該不會對外部程式造成影響。
如果這樣不好我會再想其他方法解決。

除此之外我將一些pcmanx的一些小設定移植過來,
此外選取後自動複製是模擬Linux 的行為,
不過還沒做到完全相容,
如果在隱藏的文字視窗觸發選取事件之類的能夠實作出這個功能嗎?
畫面變動後保留選取文字的功能是為了兼容目前的實作和pcmanx的行為,
目前的實作在畫面捲動時畫面的選取區會亂跑,(複製時還是複製在原來區域的文字)
這邊我修正成每次畫面變動後重新更新所有字元的屬性,(沒有重繪螢幕)
因為termsel.js的一些問題這邊修正的程式碼變得比較複雜。
這裡為了不影響效能預設值設成畫面變動後取消選取區。

另外在PTT 上有人提到2.50版的速度變慢了,
還有人說是因為取消緩存的關係,
我自己測試的結果是和有緩存的相比只有在很舊的電腦上2.50才看的出來變慢,
(XP sp3 - P4 2.4GHz 1G RAM 2003年製造,測試環境為PTT 信箱資源回收桶按下方向鍵不放)
在新電腦上2.50會快一些,
不知道還有沒有其他人有比較過?

WM

unread,
Oct 19, 2011, 8:50:05 PM10/19/11
to pcmanfx

以中鍵關閉的話如何?

我在Linux上Firefox 7不覺得有明顯變慢。

u881831

unread,
Oct 29, 2011, 2:09:37 PM10/29/11
to pcmanfx

On 10月20日, 上午8時50分, WM <wander...@gmail.com> wrote:

> > 來訊通知
> > pcmanx的通知視窗在滑鼠點通知視窗以外的地方就會消失,
> > 直接點通知視窗時會套到有來訊的分頁;
> > 我目前的實作是點通知視窗後通知視窗會消失,
> > 點其他地方沒有動作。
> > 點通知視窗跳到來訊分頁是很容易實作,
> > 不過點其他地方關閉通知視窗似乎不容易實作,
> > 在不能立刻關閉通知視窗的情況下實作跳到來訊分頁是恰當的嗎?
>
> 以中鍵關閉的話如何?
>

其實內建的API 沒有提供這個功能,
如果直接開
chrome://global/content/alerts/alert.xul
是可以做到各種控制,
要做成什麼效果可能需要再討論。


之前提到移植到Google chrome 計畫,
主要的問題是google的安全性政策不允許擴充套件建立任意的 socket 連線,
另外的問題還有攔截所有 telnet 開頭的URI 還有編碼轉換等等。

socket連線的部分,
HTML5 的 web socket 技術可以直接用 javascript 建立連線,
不過因為安全性的考量新版已經加入禁止任意TCP 連線的機制,
在 Google chrome 13 以及之前的版本才能用。
範例:http://jsterm.com/
在Google改變想法之前只能使用外掛來連線,
flash socket也因為安全性的考量也有不少限制:
http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html
http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html
很麻煩而且效能似乎很差;
JAVA不能在擴充套件內使用,
http://code.google.com/p/chromium/issues/detail?id=30258
至於Google的新技術Native Client 的話我不是很清楚,
但是這邊這樣寫:
http://code.google.com/intl/zh-TW/chrome/nativeclient/faq.html
The following kinds of code may be hard to port:
Code that does direct TCP/IP or UDP networking. For security reasons,
Native Client is restricted to the networking otherwise available in
the browser.
目前我覺得比較可行的方案就是像之前的plugin一樣使用不能跨平台的NPAPI 了。

註冊telnet協定的話也許要等到這個完成:
http://code.google.com/p/chromium/issues/detail?id=86115

除了這兩個功能以外我想其他的功能只要肯花時間都實做的出來,
但是因為 Google chrome 的API 很少,
非常多的功能只能靠 HTML 5 來實作,(例如複製貼上)
編碼的部分先不管GB2312等其他的編碼,
因為不大可能有其他技術內建包含UAO 的編碼轉換,
只能使用自己做的編碼表。

我這邊將目前的程式碼移植到 Google chrome 裡面。
沒有連線模組,為了測試功能我把輸入直接導到輸出;
沒有註冊telnet協定,我使用了類似Tonberry for chrome的方式開啟頁面。
主要的功能包括
鍵盤直接輸入、輸入法輸入、純文字複製貼上(包含 UAO)
等等都重新調整過可以正常使用了,
其他不影響測試的功能有的能用有的不能,
另外為了方便測試\x00到\x7f的不可見字元都可以直接從鍵盤輸入。
因為我沒有開發NPAPI 的經驗,
希望其他有經驗的朋友可以幫忙開發連線模組,
或是有其他想法的也可以嘗試看看,
我想以這個套件為基礎應該可以很容易的進行開發測試。
https://docs.google.com/leaf?id=0B-K9h3GKW2VGZjBiNzE3ZmQtZGZkNi00MzAzLTk4NjktOTUxOTQ3ZGU1NGYz

P.S. 最後有要轉移到 git嗎?

PCMan

unread,
Oct 29, 2011, 11:48:30 PM10/29/11
to pcm...@googlegroups.com
2011/10/30 u881831 <u88...@hotmail.com>
我個人是舉雙手贊成 GIT,但是要看其他開發者的意見,至少我現在不常有空弄這些,也沒在寫 code
這種問題...我想誰有在寫 code,就誰決定吧 XD 畢竟寫 code 的人,才是主要在用版本控制系統的人,
至於 socket,WebSocket 是不能連 TCP 的,
我觀察這個 issue 很久了,因為我其實很想做 Chrome 版本 XD
個人還是會建議先試用 Flash socket,畢竟網路上有現成的包裝好的,
效能的話,flash 應該是不可能會差才對...建議先試試看,真的是不行,再走 NPAPI
畢竟如果要依賴 NPAPI...那用原本的 pcmanx plugin 就好了,也沒必要用 javascript 重寫了。
這個版本當初的出發點,就是想看看能否盡量用 js,如果又要走回 NPAPI 就比較沒意思了,
而且會比較不好維護

真的要寫 NPAPI,可參考 chromeFTP

另外,NPAPI 有舊版跟新版,pcmanx plugin 是用舊 API
新的API實作方式有點不太一樣,好像也不用 xpt file,開發時需要注意版本。

Cheers!

Ett Chung

unread,
Oct 30, 2011, 10:39:17 PM10/30/11
to pcm...@googlegroups.com
用flash作還有很多限制.

我這邊提供一些目前試的結果:

先在這邊抓 bbsfox-chrome.7z 這個檔
https://skydrive.live.com/?cid=e4b2ca268a0a8c82#!/?cid=e4b2ca268a0a8c82&sc=documents&uc=1&id=E4B2CA268A0A8C82%21373
解壓縮到硬碟.

設定flash的權限:
http://i.imgur.com/qYyOo.png
http://i.imgur.com/fD91u.png
http://i.imgur.com/RBLAw.png
http://i.imgur.com/LZqWF.png

全部都弄好就可以連了.
但是即使如此, 包成crx一樣會不能連. 原因不明(有進去把套件最後安裝的地方設為信任也沒用).
flash的一些初始化還是會失敗.
我也沒多少時間再弄下去了,
目前只有把big5-->utf8編碼轉換弄好而已.
UAO部份用的是之前 0.1.8 r40 plugin 裡面的那套.

如果覺得flash可行的話, 我再看看怎麼解決flash包成crx後不能用的問題.
至於Native Client的話, 限制跟flash差不多. 而且要每個平台都編.

就算chrome還沒有提供註冊protocol, 提供一個工具鈕叫出BBS網頁的background,
然後頁面上弄個下拉選單讓使用者選站台其實也可以.
--
Ett Chung

u881831

unread,
Oct 31, 2011, 12:44:18 PM10/31/11
to pcmanfx
我把這個連線模組包進去之後,設好權限之後還是和網頁開啟一樣可以連。
我已經把我原來放檔案的網址更新成包含連線模組的檔案
https://docs.google.com/leaf?id=0B-K9h3GKW2VGZjBiNzE3ZmQtZGZkNi00MzAzLTk4NjktOTUxOTQ3ZGU1NGYz
我在windows 和openSUSE下測過了都可以連,
openSUSE下要從這個網頁才能設定權限:
http://www.macromedia.com/support/documentation/tw/flashplayer/help/settings_manager04a.html#119065
至於要設定的網址是:
chrome-extension://kakincoohepfppgfdfhdbjpmhbelkiho
我在錯誤主控台也有寫出來,
開啟錯誤主控台的快捷鍵GC和FX一樣都是Ctrl+Shift+J

其實要用flash socket比較正規的方法應該是架 socket policy file server:
http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html
http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html
當每次flash 要連線時就會去連這個server以及連線目標和連線來源的port 843,
之間還要等timeout 所以我之前才會覺得用這個方法效能不好。
目前用開發者模式使用舊版本Flash 安全策略是可以連線,
不過我覺得的要釋出給一般使用者時繼續使用開發者模式似乎不大好。

另外如果要開發bbsfox的GC版,
GC在輸入法輸入注音符號時還會一直送出input 事件導致程式無法正常處理,
從compositionstart開始到compositionend結束不管input 事件就正常了,
GC內建的快速鍵像是Ctrl+J不會送出keypress事件所以不會被程式處理,
複製貼上只能用html 5處理所以要整個重寫,
詳細的部份可以看我放出的檔案。

至於那個僅限UAO 部份的u->b轉換表是我很久以前做的,
如果需要僅限UAO 部份的b->u轉換表再跟我說吧,
我可能要想一下我當初是怎麼作的。
另外那個flash 似乎是自己編譯的,
如果有空的話希望能夠自訂callback的函數名稱路徑,
並且能夠把錯誤訊息丟到javascript裡面顯示。
這個是PCMan 提供的網址裡提到flash socket的修改版:
http://code.google.com/p/ionel-whatever-code/
可以處理新版的Flash 安全策略,
也可以將詳細的錯誤訊息丟出來。


On 10月31日, 上午10時39分, Ett Chung <ettool...@gmail.com> wrote:
> 用flash作還有很多限制.
>
> 我這邊提供一些目前試的結果:
>
> 先在這邊抓 bbsfox-chrome.7z 這個檔https://skydrive.live.com/?cid=e4b2ca268a0a8c82#!/?cid=e4b2ca268a0a8c...
> 解壓縮到硬碟.
>
> 設定flash的權限:http://i.imgur.com/qYyOo.pnghttp://i.imgur.com/fD91u.pnghttp://i.imgur.com/RBLAw.pnghttp://i.imgur.com/LZqWF.png


>
> 全部都弄好就可以連了.
> 但是即使如此, 包成crx一樣會不能連. 原因不明(有進去把套件最後安裝的地方設為信任也沒用).
> flash的一些初始化還是會失敗.
> 我也沒多少時間再弄下去了,
> 目前只有把big5-->utf8編碼轉換弄好而已.
> UAO部份用的是之前 0.1.8 r40 plugin 裡面的那套.
>
> 如果覺得flash可行的話, 我再看看怎麼解決flash包成crx後不能用的問題.
> 至於Native Client的話, 限制跟flash差不多. 而且要每個平台都編.
>
> 就算chrome還沒有提供註冊protocol, 提供一個工具鈕叫出BBS網頁的background,
> 然後頁面上弄個下拉選單讓使用者選站台其實也可以.
>

> u881831 <u881...@hotmail.com> 於 2011年10月30日上午2:09 寫道:
>
>
>
>
>
>
>
>
>
> > 之前提到移植到Google chrome 計畫,
> > 主要的問題是google的安全性政策不允許擴充套件建立任意的 socket 連線,
> > 另外的問題還有攔截所有 telnet 開頭的URI 還有編碼轉換等等。
>
> > socket連線的部分,
> > HTML5 的 web socket 技術可以直接用 javascript 建立連線,
> > 不過因為安全性的考量新版已經加入禁止任意TCP 連線的機制,
> > 在 Google chrome 13 以及之前的版本才能用。
> > 範例:http://jsterm.com/
> > 在Google改變想法之前只能使用外掛來連線,
> > flash socket也因為安全性的考量也有不少限制:
> >http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html

> >http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files....

> >https://docs.google.com/leaf?id=0B-K9h3GKW2VGZjBiNzE3ZmQtZGZkNi00MzAz...

Ett Chung

unread,
Oct 31, 2011, 4:03:05 PM10/31/11
to pcm...@googlegroups.com
針對chrome的改動你弄的比我完整很多,我短時間也沒空改BBSFox的版本,所以我那邊問題還很多,
我好像把當初編swf的那個工具移掉了,所以現在也不知道怎麼加callback的設定進去,
不過你那邊既然可以動了,就先用原本的好了,反正應該不影響開發,
我過兩天再把工具裝回去重編。

另外就是新舊版本的Flash 安全策略有啥差異嗎?
我這邊沒有用啥開發者模式也是連得好好的呀,還是有啥東西要加?

像是Security.loadPolicyFile(xmlsocket://) 之類的...
看了ionel-whatever-code的內容,似乎也沒看到啥安全性的設定在code裡面?
--
Ett Chung

Ett Chung

unread,
Oct 31, 2011, 9:09:16 PM10/31/11
to pcm...@googlegroups.com
我callback改好了,原始碼放在這邊:
https://docs.google.com/open?id=0B81XGeToS9L-MTIyNDIyMzEtMWFiNS00MGM4LThhODAtNzhmOWM1MjU2MDhk
編的工具是Flash Builder,Adobe官網抓的只有30天試用,不過不影響使用,
基本上編出swf後就可以移掉了,我還沒裝回去,不過你也可以先裝。

我的改動:
(1)加入設定callback的部份,
this.socket.setCallback("connect", "你的callback位置");
this.socket.setCallback("disconnect", "你的callback位置");
this.socket.setCallback("recieve", "你的callback位置");
this.socket.setCallback("ioerror", "你的callback位置");
this.socket.setCallback("securityerror", "你的callback位置");

(2)ioerror 和 securityerror 的部份多傳出一個error的字串,所以本來的onerror 要改成
類似 soc_error: function(str){ ... } 這樣

我還是很喜歡純文字模式的顯示模組,
之前在Firefox上寫的CSS3控制顯示的部份只需要再一點修改就可以整個套用到chrome上,
你的sample對BBSFox之後移植到chrome非常有用,等我有空就會來試看看,謝謝。

另外就是,我建議由你或PCMAN開一個新的google code project來放這個pcmanfx for chrome的專案,
這樣之後上傳原始碼應該會比較方便 :)。

--
Ett Chung

u881831

unread,
Nov 8, 2011, 11:30:44 AM11/8/11
to pcmanfx
最近補強了一些功能:

讀取寫入PCMan Novus 的.ans檔案:
因為目前不支援PCMan Novus 的包含ANSI彩色的複製貼上,
這邊提供一個管道和PCMan Novus 及其相容的ANSI繪圖程式交換資料。
在有文字被選取時寫入檔案的內容就是選取區,
沒有選取區時則會下載整篇文章的內容,
下載文章時可按任意鍵中斷。

自動回訊:
所有的回訊都是第一次出現提示字串時自動丟出,
每次連線只丟一次,
更改上述設定的功能已經在程式碼內部實作,
但是偏好設定視窗的介面還沒有修改這些參數的介面,
整個自動回訊的偏好設定介面可能需要重新設計以支援更多組回訊字串。

滑鼠瀏覽:
基本上這部分是參考BBSFOX和pcmanx-gtk2 而實作出來的。
簡易模式就是模仿PCMan Novus 的功能,
左鍵進入中鍵退出滾輪上下,
其他PCMan Novus 的滑鼠功能,
像是右鍵加滾輪就由下面滑鼠手勢的部分負責;
一般模式就是模仿pcmanx-gtk2 的功能,
區域的定義我在pcmanx-gtk2 那邊找不到圖,
抱歉這邊先借用BBSFOX的圖:
http://forum.moztw.org/download/file.php?id=10505
http://forum.moztw.org/download/file.php?id=10506
另外在選單模式(如PTT 的主功能表)則是
最上方和最下方兩行以及畫面左方區域為左方向鍵,
這部分和pcmanx-gtk2 不同最上方和最下方兩行為Enter ,
其餘的部分為進入列表,
這邊包含了BBSFOX的一些改進所以和pcmanx-gtk2 並不完全一樣;
進階模式包含BBSFOX的一些進階功能的區域設定,
像是同主題瀏覽等等,
區域定義請見BBSFOX的說明。
至於高亮標示滑鼠所在區域的部分需要動到顯示模組,
這部分將在下面說明。

滑鼠手勢
這部分也是參考BBSFOX實作出來的。
因為這個套件的選取是自己偵測滑鼠事件然後更新畫面,
要是自己實作手勢並且關閉其他套件會使程式變得太複雜。
這邊使用了外部套件FireGestures來實作滑鼠手勢的功能,
因為要讓手勢執行BBS 的動作就一定需要自訂手勢腳本的功能,
如果有其他夠流行而且支援自訂手勢腳本的套件請提出來,
之後我應該會去實作那個套件的支援。
此外這是PCMan Novus 支援的手勢:
http://www.ptt.cc/bbs/PCman/M.1190981697.A.A21.html
按鍵控制的手勢FireGestures只支援右鍵加滾輪,
左鍵加滾輪和長按滑鼠FireGestures不支援,
這邊目前也因為程式碼會變得很複雜而沒有實作。
還有偏好設定視窗的手勢產生器在一般網頁的動作沒有做成下拉選單,
這是因為這部分似乎只能自己手動複製一份在這個套件裡,
要是FireGestures更新版本可能會產生問題。
這邊用了一個文字輸入區域提供輸入FireGestures的內建命令,
這個命令可以在FireGestures選項裡編輯手勢就可以看到。
至於要在一般網頁使用非內建的手勢就需要自己編輯程式碼了,
一般而言在這邊產生腳本的最後面貼上一般網頁用的腳本就可以了,
不過我不能保證這樣做一定可以正常工作,
也許還會需要除錯。

至於顯示相關的因為會更改到系統核心,
基於程式架構和執行速度上的考量我還沒有實作,
以更改字型為例,
基本上只要在doDrawChar裡面根據ch.isLeadByte 加上
this.ctx.font = "??px ANYFONT";
偏好設定視窗載入chrome://mozapps/content/preferences/fontbuilder.js
之後用FontBuilder.buildFontList('big5', 'monospace', someMenulist);
就可以了,
不過可能需要考量可讀性和執行速度的衝擊。

接下來我會將時間放在移植Google Chrome 套件,
包含重寫右鍵選單、讓來訊通知以及彩色複製貼上的功能復活,
還有工程浩大的偏好設定,
我想應該會花很多時間。
FX這邊如果有人有好的想法的話請丟到上來。


On 10月20日, 上午1時10分, u881831 <u881...@hotmail.com> wrote:
>

> 最近我新增了一些偏好設定:


>
> 來訊通知
> pcmanx的通知視窗在滑鼠點通知視窗以外的地方就會消失,
> 直接點通知視窗時會套到有來訊的分頁;
> 我目前的實作是點通知視窗後通知視窗會消失,
> 點其他地方沒有動作。
> 點通知視窗跳到來訊分頁是很容易實作,
> 不過點其他地方關閉通知視窗似乎不容易實作,
> 在不能立刻關閉通知視窗的情況下實作跳到來訊分頁是恰當的嗎?
>

WM

unread,
Nov 8, 2011, 9:59:58 PM11/8/11
to pcmanfx
我是覺得在偏好設定讓使用者知道更改字型就是改Firefox設定的等寬字型就好。

另外非常期待Novus的滑鼠瀏覽。

On 11月9日, 上午12時30分, u881831 <u881...@hotmail.com> wrote:
> 最近補強了一些功能:
>
> 讀取寫入PCMan Novus 的.ans檔案:
> 因為目前不支援PCMan Novus 的包含ANSI彩色的複製貼上,
> 這邊提供一個管道和PCMan Novus 及其相容的ANSI繪圖程式交換資料。
> 在有文字被選取時寫入檔案的內容就是選取區,
> 沒有選取區時則會下載整篇文章的內容,
> 下載文章時可按任意鍵中斷。
>
> 自動回訊:
> 所有的回訊都是第一次出現提示字串時自動丟出,
> 每次連線只丟一次,
> 更改上述設定的功能已經在程式碼內部實作,
> 但是偏好設定視窗的介面還沒有修改這些參數的介面,
> 整個自動回訊的偏好設定介面可能需要重新設計以支援更多組回訊字串。
>
> 滑鼠瀏覽:
> 基本上這部分是參考BBSFOX和pcmanx-gtk2 而實作出來的。
> 簡易模式就是模仿PCMan Novus 的功能,
> 左鍵進入中鍵退出滾輪上下,
> 其他PCMan Novus 的滑鼠功能,
> 像是右鍵加滾輪就由下面滑鼠手勢的部分負責;
> 一般模式就是模仿pcmanx-gtk2 的功能,
> 區域的定義我在pcmanx-gtk2 那邊找不到圖,

> 抱歉這邊先借用BBSFOX的圖:http://forum.moztw.org/download/file.php?id=10505http://forum.moztw.org/download/file.php?id=10506

u881831

unread,
Nov 15, 2011, 11:21:08 AM11/15/11
to pcmanfx
Google chrome 擴充套件的部分除了偏好設定外的架構大致上確定了,
並且拿掉不需要的部分大幅縮減套件大小。


已完成的部分:

PCMan 圖示按下去後彈出一個小提示視窗,
可以選擇要連線的站台。
這邊可以暫時代替書籤的功能,
等到registerProtocolHandler 完成才有辦法使用完整的書籤功能。

同樣也是因為沒有registerProtocolHandler 的關係,
網址列的部分(實際上叫Omnibox )能夠做的就是新增一組搜尋引擎,
當輸入關鍵字telnet後按下TAB 就會進入這個搜尋引擎,
直接按Enter 就直接進PTT ,
也可以按方向鍵下選擇內建的站台,
如果想連沒有內建的站台可以直接輸入網址然後按Enter ,
舉例來說是:
(完全空白)telnet TAB bbs.kkcity.com.tw ENTER TAB(帳號密碼)
因為硬是套用搜尋引擎來模擬網址列所以需要再按TAB 取得焦點。

複製貼上的部分整個改寫之後已經不會因為焦點跑掉而失去功能,
包含ANSI彩色的複製貼上也可以使用了。
讀寫PCMan Novus .ans檔案則是使用了一般網頁的上傳和下載的功能,
上傳時左上角會出現上傳檔案的區塊,
然後就是一般網頁上傳檔案的流程。
因為安全性因素無法直接使用javascript開啟選擇檔案視窗,
雖然有可能用一些特殊的技巧直接開啟檔案視窗,
不過現階段這並不是很重要必須立刻解決的問題。
寫入的時候則是把檔案放在新分頁,
如果是.ans就直接啟動GC的下載管理員,
如果是.txt就直接在分頁顯示內容,
然後可以使用GC的另存網頁存到想要的地方,
這邊同樣也是因為安全性問題沒辦法多做些什麼只能全部交給GC處理。

編碼轉換的部分使用了
Ett Chung <etto...@hotmail.com>
包含在Flash 檔案的功能,
除了UAO 新增字碼需要自行處理外,
使用系統編碼表不但可以降低套件大小而且還可以支援GB等其他編碼。

鍵盤直接輸入和輸入法輸入的部分,
自從上一版以來沒有做太大的更動,
這邊主要的問題是輸入焦點跑掉的問題,
和FX不一樣HTML頁面和Omnibox 等元件各有個的焦點,
使用javascript只能改變頁面內的焦點,
當焦點跑到Omnibox 或其他元件時就只能讓使用者手動改變焦點了。

焦點跑掉最常見的情況是使用右鍵選單時,
右鍵選單和頁面是屬於不同的元件有不同的焦點,
我自己測試的結果當右鍵選單關閉時有時候會無法輸入有時候可以,
有沒有選擇選單的項目和使用的作業系統似乎會影響焦點是否會跑掉。
禁用GC的選單然後用DIV 拼出自己的選單應該可以解決這個問題,
不過這樣一來一些GC選單的功能應該沒辦法用Javascript啟動,
而且自己的右鍵選單也有可能和其他的套件衝突。

另外包含callback的flash 檔案不知道為什麼不能用,
就算不使用loadPolicyFile也是一樣,
不過現階段不影響開發先擱著。


尚未完成的部分:

偏好設定(包含來訊通知等功能)
這部分會優先完成

支援手勢套件
一些常用的手勢套件
Gestures for Chrome
Smooth Gestures
Mouse Stroke
似乎都支援自訂腳本,
所以應該都能夠做整合,
雖然有extension之間溝通的API 不過不知道這些套件有沒有支援,
目前的構想是建立一個包含腳本的文字欄位或是直接下載腳本檔案,
不過這部分等偏好選項完成之後才會去弄。

搜尋引擎的部分,
目前我還不知道如何讀取GC搜尋引擎的列表,
如果最後沒有辦法讀取就在偏好選項設定自己的搜尋引擎,
這邊同樣也不會優先完成。

如果有人知道如何解決上面提到的問題麻煩幫忙一下。

另外也可以預期有人會希望選取區反白和延展畫面至全螢幕的功能,
這兩個功能本身和瀏覽器沒有直接關係也不算難做,
只是要如何寫才能維持程式碼可讀性的問題。


最後是關於把程式碼丟到VCS 的問題,
目前預定在偏好設定完成後就丟出來。
我個人傾向於在pcmanfx 的project 新開一個branch,
我在處理這些程式碼的時候都盡量相容於FX內建API ,
小幅修改pcmanfx 這邊的程式碼後,
核心的程式碼應該可以直接套用在兩種套件上。
這樣之後大部分的更新都可以直接套用。

不過要放在哪還是要看大家的意見,
看看有多少人對開發GC版本有興趣,
如果有興趣開發的人都偏好GIT 的話也許就新開一個專案用GIT ,
有興趣開發的人麻煩出個聲。

至於程式碼整理的部分,
可能還要再討論看看抽離DOM 做CommonJS之類的情況要怎麼處理。


On 11月9日, 上午12時30分, u881831 <u881...@hotmail.com> wrote:

> 最近補強了一些功能:
>
> 讀取寫入PCMan Novus 的.ans檔案:
> 因為目前不支援PCMan Novus 的包含ANSI彩色的複製貼上,
> 這邊提供一個管道和PCMan Novus 及其相容的ANSI繪圖程式交換資料。
> 在有文字被選取時寫入檔案的內容就是選取區,
> 沒有選取區時則會下載整篇文章的內容,
> 下載文章時可按任意鍵中斷。
>
> 自動回訊:
> 所有的回訊都是第一次出現提示字串時自動丟出,
> 每次連線只丟一次,
> 更改上述設定的功能已經在程式碼內部實作,
> 但是偏好設定視窗的介面還沒有修改這些參數的介面,
> 整個自動回訊的偏好設定介面可能需要重新設計以支援更多組回訊字串。
>
> 滑鼠瀏覽:
> 基本上這部分是參考BBSFOX和pcmanx-gtk2 而實作出來的。
> 簡易模式就是模仿PCMan Novus 的功能,
> 左鍵進入中鍵退出滾輪上下,
> 其他PCMan Novus 的滑鼠功能,
> 像是右鍵加滾輪就由下面滑鼠手勢的部分負責;
> 一般模式就是模仿pcmanx-gtk2 的功能,
> 區域的定義我在pcmanx-gtk2 那邊找不到圖,

> 抱歉這邊先借用BBSFOX的圖:http://forum.moztw.org/download/file.php?id=10505http://forum.moztw.org/download/file.php?id=10506

u881831

unread,
Nov 15, 2011, 12:06:31 PM11/15/11
to pcmanfx
附帶一提,
已封裝的檔案放到之前提到的同一個連結
https://docs.google.com/leaf?id=0B-K9h3GKW2VGZjBiNzE3ZmQtZGZkNi00MzAzLTk4NjktOTUxOTQ3ZGU1NGYz
不須登入可以直接下載,
如果需要舊版本可以在登入後在''檔案''->''顯示修訂版本紀錄''抓到。
.crx檔案只是開頭多了一些資訊的zip 格式檔案,
直接解壓縮就可以看到原始碼。

另外Google code有地方可以放只有committers可以抓的檔案嗎?
.crx檔案開頭多的部分放的是套件ID資訊,
必須用同一個金鑰檔案才能包出同樣ID的套件,
我覺得把那個.pem金鑰檔案放在那個地方比較方便,
當然之後要用新的ID或是沿用我現在的ID都可以。

> Ett Chung <ettool...@hotmail.com>

WM

unread,
Nov 15, 2011, 8:28:54 PM11/15/11
to pcmanfx
我是比較想看到搬到Github,然後開個pcman-bbs的Organization帳號,大概像這樣:

pcman-bbs
--pcman-windows
--pcmanx
--pcmanfx
--pcmancr
--pcman-bbs.github.com

因為pcman已經是個人帳號了,所以用pcman-bbs,也不會跟PCManFM搞混。
不過這也要pcman-windows跟pcmanx的人願意搬過來才行XD

On 11月16日, 上午1時06分, u881831 <u881...@hotmail.com> wrote:
> 附帶一提,
> 已封裝的檔案放到之前提到的同一個連結https://docs.google.com/leaf?id=0B-K9h3GKW2VGZjBiNzE3ZmQtZGZkNi00MzAz...

PCMan

unread,
Nov 15, 2011, 9:47:36 PM11/15/11
to pcm...@googlegroups.com
用google也很好,github 沒有提供 bug tracker 以及其他功能
如果要用,那 project page 應該主要還是放在 google 會比較好
只有 git 用外部 repo

2011/11/16 WM <wand...@gmail.com>

WM

unread,
Nov 16, 2011, 2:21:00 AM11/16/11
to pcmanfx
Google Code 現在有支援git。

github今年四月後也有bug tracker了。
https://github.com/blog/831-issues-2-0-the-next-generation

而且github還附贈pages,可以搭建專案網頁。

因此我贊成開發搬到github,但可保留原先的Google Code,給一般使用者報issue。

On 11月16日, 上午10時47分, PCMan <pcman...@gmail.com> wrote:
> 用google也很好,github 沒有提供 bug tracker 以及其他功能
> 如果要用,那 project page 應該主要還是放在 google 會比較好
> 只有 git 用外部 repo
>

> 2011/11/16 WM <wander...@gmail.com>

u881831

unread,
Nov 18, 2011, 1:52:29 AM11/18/11
to pcmanfx
pcman lite/combo
pcmanx
這兩個程式是用c++ 寫的,
兩個的程式碼也不大一樣。
和PCMan for FX, GC 這兩個套件相同核心的情況不一樣,
我是覺得沒有那麼必要把那兩個程式和這兩個套件放在一起。

另外在程式碼放出來之前要先解決授權的問題,
GPL 授權的話,
作為基底的pcmanfx 也是GPL 所以沒有問題,
程式碼內附上license.txt 這也很容易,
至於flash 的部分可能要請 Ett Chung宣告一下授權,
另外從GPL 授權條件來看還需要舊版的flash 原始碼,
(因為新版的似乎不會work所以目前為止都是用舊版)
這部分可能要麻煩 Ett Chung提供一下最原始的版本。

除此之外還有什麼問題我沒考慮到的?

Ett Chung

unread,
Nov 20, 2011, 9:40:55 PM11/20/11
to pcm...@googlegroups.com
Flash 部份用GPL授權就可以了,
新版應該是沒問題的呀,
你說的新版是指11月3號寄給你的版本嗎?
我記得我有包一個pcmanfx-gc_modify.7z 出來測耶,
如果還是不行,我這兩天有空再檢查看看好了。

另外,檔案儲存的部份也可以用flash,畢竟用下載的方式比較不直覺,
不過這邊就要再開新的save file相關的介面出來讓javascript使用,
這邊我有查了一些資料,大概知道寫法,我有空會加進去。
--
Ett Chung

u881831

unread,
Nov 21, 2011, 4:47:44 AM11/21/11
to pcmanfx

On 11月16日, 上午12時21分, u881831 <u881...@hotmail.com> wrote:

> Ett Chung <ettool...@hotmail.com>

偏好設定的部分也完成了,
同樣的已封好的檔案放在
https://docs.google.com/leaf?id=0B-K9h3GKW2VGZjBiNzE3ZmQtZGZkNi00MzAzLTk4NjktOTUxOTQ3ZGU1NGYz

使用方式基本上和pcmanfx 的一樣,
除了下面這幾點外:

自動登入:
GC沒有記憶密碼的api ,
所以這邊只使用明碼儲存使用者帳號密碼。

來訊通知:
內建彈出視窗不會消失必須由使用者自行關閉,
這是因為GC版和FX版一樣都只使用內建API 的功能,
雖然GC和FX都有提供直接控制彈出視窗的方法。
GC沒有直接發出聲音的api ,
但是有提供文字轉語音的api ,
這邊使用這個api 實作訊息提示音。
另外因為Linux 下這個api 尚未實作,
所以請Linux 的使用者不要開啟這個選項。

另外這邊新增的站台也會出現在點圖示之後的彈出視窗裡。

附帶一提,
因為這套件使用瀏覽器的等寬字型來顯示BBS 畫面,
而GC的預設等寬字型不會隨著介面語言改變,
所以安裝後直接開的結果英文字和符號會太寬或太窄,
把GC的等寬字型設成細明體之類的等寬東亞字型就解決了。

已知問題和尚完成的功能:

flash 效能:
這邊的連線模組部分和FX直接使用內建API 不一樣,
因為多了一層flash 和javascript之間的溝通,
再加上後來又透過flash 讀取big5編碼表,
顯示效能變得更差,
基本上LAG 多少和電腦配備有關,
以我的單核心電腦來說,
FX版相當流暢,
GC瀏覽網頁還算快但是 BBS的LAG 相當明顯,
自動重連的速度也很慢。
另外使用開發者模式也不算是好的方法,
這等於要求使用者放棄檢查這個套件的安全性。
不過正規的方法可以參考這個網址:(簡體中文)
http://flash006.com/309
這對使用者來說遠比使用開發者模式還要不方便,
而且至少要等
xmlsocket://kakincoohepfppgfdfhdbjpmhbelkiho:843
三秒的timeout 。
由 Ett Chung提供的新版swf 已經成功的整合進來了,
新版有這部分的實作可以讓有興趣開發的人參考。

註冊telnet協定:
因為GC註冊telnet的功能尚未完成,
所以只能用其他的手段完成書籤和網址列的功能,
所以會出現一些奇奇怪怪的問題,
並且還要按照GC搜尋引擎的規則打要連的網址。

焦點跑掉:
GC一旦焦點跑出網頁本身後就不能用javascript抓回來,
舉例來說頁面到omnibox 或是反過來都是不可能的。
右鍵選單雖然不會像一開始那樣所有頁面都跑出來,
但是焦點跑掉的問題沒辦法解決,
只能讓使用者每用一次右鍵選單就多點一次。

介面文字翻譯潤飾以及外觀調整:
文字翻譯基本上直接從pcmanfx 複製過來還沒改過,
CSS 從官方教學網站等複製過來後也還沒做整體性的調整,
所以有不少地方配色不搭或是太大太小看不清楚等等。

搜尋引擎:
支援手勢套件:
顯示模組的增強:
如果使用自己的搜尋引擎而不是GC的就有辦法實作,
其他的部分以及介面調整也沒有什麼技術上的問題,
因為我之後比較忙暫時不會再弄這些東西,
有興趣開發的人可以以這套件為基礎繼續開發。
因為到目前為止沒有人表態要參與開發,
程式碼我先放在pcmanfx 的一個branch中,
有權限改的人可以直接改,
沒有權限的人可以把程式碼複製到其他地方,
套件ID沒有寫死在程式碼內,
用GC隨機產生的ID就可以用了。

u881831

unread,
Dec 4, 2011, 3:58:37 AM12/4/11
to pcmanfx
關於檔案儲存的部分,
我不知道用flash 做出來的效果怎樣,
不過我覺得像是.ans檔案啟動GC的下載管理員應該還OK,
因為GC也可以讓下載管理員每次儲存檔案時詢問位置;
不過像是.txt或是.htm之類的瀏覽器就直接顯示,
這就很不方便了,
如果是PHP 之類的下載檔案只要在HTTP header 改MIME類型就可以了。
如果不在乎多按一次滑鼠的話,
用GC限定的a.download就可以下載任何副檔名的檔案。
http://html5-demos.appspot.com/static/a.download.html

另外我覺得這個套件目前比較值得做的是效能最佳化,
前一陣子我找了幾台電腦來測試效能,
Q8200 & 4G RAM & CPU內建顯卡還有點頓,
I7-860 & 8G RAM & GTX 550 Ti 就跟FX內的速度差不多了,
我不知道大家測試的結果是怎樣,
不過我覺得目前這樣的系統需求似乎有點嚴苛。
我最近找時間看了一點文件,
Flash 的效能似乎還有最佳化的空間,
http://www.ptt.cc/bbs/Flash/M.1264142177.A.617.html
舊版的Flash Builder 就叫做flex builder,
不過我不知道新版有沒有做效能最佳化就是了。
目前的架構是使用者輸入的每個英文字母都會呼叫一次flash 的callback函式,
big5中文則是兩次,
伺服器回傳的資料則是以陣列格式傳遞給javascript函式而不是字串格式,
同樣的一個英文字母一個陣列元素而big5中文兩個,
我不知道這實際上對效能有沒有影響,
如果有flash 高手看到的話麻煩解惑一下。

如果要改的話javascript和actionscript都支援 escape() 和 unescape() ,
再不然用JSON做陣列和字串之間的轉換應該也可以。

很抱歉最近還是沒有時間動程式,
雖然javascript那邊也是有一些地方可以最佳化,
不過我想應該不會有太大的效能改進。


On 11月21日, 上午10時40分, Ett Chung <ettool...@gmail.com> wrote:
> Flash 部份用GPL授權就可以了,
> 新版應該是沒問題的呀,
> 你說的新版是指11月3號寄給你的版本嗎?
> 我記得我有包一個pcmanfx-gc_modify.7z 出來測耶,

> 如果還是不行,我這兩天有空再檢查看看好了。*
>
> *另外,檔案儲存的部份也可以用flash,畢竟用下載的方式比較不直覺,


> 不過這邊就要再開新的save file相關的介面出來讓javascript使用,
> 這邊我有查了一些資料,大概知道寫法,我有空會加進去。
>

u881831

unread,
Jan 1, 2012, 6:50:58 AM1/1/12
to pcmanfx
最近的更新主要是錯誤修正和效能調整,
新增的功能就只有Linux 選取區域的複製貼上,
在預設的狀態下就可以直接使用,
不過要是選了滑鼠瀏覽之類的功能滑鼠中鍵就沒有貼上的功能。
這邊加上了一個滑鼠中鍵貼上主剪貼簿的功能,
在Linux 下意義不大主要是給WIndows 用的,
因為Windows 就只有一種剪貼簿而已。

GC的部分除了來自Firefox 版的更新外,
偏好設定介面做了一些小調整;
下載文章的實作也改寫成直接下載而不是顯示在新分頁;
效能方面我把所有做過big5和utf8之間轉換的字存進記憶體,
之後就不會重複使用flash 查詢。
因為分頁或整個GC關掉之後這些緩存就會消失,
我想隱私方面大概不會有問題....大概吧。
就速度而言在絕大部分的情況下應該接近一開始將整個轉換表放進去的版本,
以我電腦的情況來說,
和bbsfox的GC版比較起來整體速度差不多,
不過目前版本會在換頁時會隨機出現延遲的情況,
bbsfox的GC版不會,
我猜測這也是先前有人提出在低階電腦會有嚴重Lag 的問題,
當然不管是bbsfox的GC版本還是這邊的GC版的速度都沒有辦法和FX的版本比。

另外在flash 安全性設定沒有設好時,
會彈出一個警告視窗,
不過必須要連線超過九秒之後才會出現,
這是flash 的內部設定沒有辦法改。
抱歉這邊打錯的應該是CTRL+SHIFT+J才是正確的快捷鍵。
老實說設定安全性不是正規的方法,
只是為了相容舊版flash 的暫時性措施而已,
Adobe Flash 的安全性一直都是一個很大問題,
要是再爆出一個bug 說不定這個暫時性措施就沒了。
編碼轉換這邊似乎是沒麼安全性問題應該還好,
對我而言使用有安全性疑慮的功能就不是什麼完美的方案。
最好的方法應該是像FX一樣使用瀏覽器本身的API ,
安全性問題就完全由瀏覽器控管。
我想這個GC版做為一個technical demonstration 應該是有存在價值,
能移植的差不多都移植了,
之後應該就只會整合來自FX的更新了。

另外我想要問一下這邊的issue tracer和wiki pages能給branch裡面的版本用嗎?
是不是只要註明版本就可以了?
雖然我每次更新都會包可以直接安裝的檔案不過似乎都沒有人回報問題。
issues目前幾乎沒人用先不管,
GC版本因為技術上的限制安裝後需要先做一些麻煩的設定才能連線,
我想有必要做一個使用說明或是FAQ 的頁面,
我目前是希望能夠放在這邊的wiki pages。
GC版本我是希望能夠像之前的pcmanx plugin 一樣共用主專案大部分的程式碼,
所以就放在這邊的專案下面,
如果各位覺得放在這邊不好的話就另開專案吧。

不知道各位有沒有什麼建議?

WM

unread,
Jan 1, 2012, 9:49:34 PM1/1/12
to pcmanfx
在一起!在一起!

方便想要用的人好找到就好。

Reply all
Reply to author
Forward
0 new messages