在chrome的捷徑裡面加上 --always-authorize-plugins 可以不會顯示那個警告.
u881831 <u88...@hotmail.com> 於 2014年6月12日 下午10:37 寫道:現在windows 下非Google商店的extension 都不能用了,--
http://blog.chromium.org/2014/02/make-sure-to-get-your-extension-in.html
windows 的使用者目前有兩個暫時的替代方案:
第一個是用開發者模式載入未封裝的extension ,
主程式pcmanfx-gc-0.0.5.170.crx解壓縮載入後,
pcmanfx-gc-socket-0.0.1.170.crx不需解壓直接安裝,
(socket app是屬於apps不是extension 所以暫時沒有被禁)
所以只要在socket app內填入未封裝extension 的id就能和原來一樣使用了,
(未封裝extension 的id是隨機的)
不過每次打開GC時都會跳出警告要你停用未封裝的extension ;
第二個方法是用群組原則安裝套件,
這個方法本來是給大公司或教育機構的網管用的,
我們這邊要另外找一個網路空間放.crx和描述安裝資訊的.xml,
xml 的格式和下面網頁所用的一樣。
https://developer.chrome.com/extensions/autoupdate
這部分我還沒有弄,
假設這部分的網址是
https://pcmanfx.googlecode.com/files/pcmanfx-gc-update.xml
https://pcmanfx.googlecode.com/files/pcmanfx-gc-latest.crx
xml 的內容是
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='kakincoohepfppgfdfhdbjpmhbelkiho'>
<updatecheck codebase='https://pcmanfx.googlecode.com/files/pcmanfx-gc-latest.crx' version='0.0.5.170' />
</app>
</gupdate>
另外pcmanfx-gc-latest.crx 的manifest.json 也要加入
"update_url": "https://pcmanfx.googlecode.com/files/pcmanfx-gc-update.xml",
日後更新版本時才會自動更新。
使用者端似乎是先裝完群組原則範本後,
http://allgoogletesting.blogspot.tw/2013/10/install-chrome-group-policy-api-on-windows.html
(非官方網頁)
按照下面的說明在本機群組原則編輯器裡面修改,
http://dev.chromium.org/administrators/policy-list-3#ExtensionInstallForcelist
這邊要填入的值是
"kakincoohepfppgfdfhdbjpmhbelkiho;https://pcmanfx.googlecode.com/files/pcmanfx-gc-update.xml"
缺點是要解除安裝必須要到本機群組原則編輯器裡面修改。
因為我還沒試過所以還不知道這個方法行不行,
有興趣而且也有適當網頁空間的人可以試一試。
u881831於 2014年2月22日星期六UTC+8下午5時27分43秒寫道:...
u881831於 2014年1月17日星期五UTC+8上午2時20分05秒寫道:
PCMan於 2014年1月15日星期三UTC+8下午2時08分32秒寫道:2014/1/12 u881831 <u88...@hotmail.com>今年開始Google開始剔除NPAPI 的外掛程式了,我這邊按照先前PCMan 的想法先弄一個packaged app處理socket,加上自動啟動和隱藏UI後使用者體驗的部分算是可以接受了。你太厲害了,我之前試驗一下弄不出來就沒弄了居然真的被你做出來了!!!剛試用過,相當棒!太厲害了!BTW, 那個 about 頁面改一下吧,其實現在大部份都是你做的了把你自己的名字放前面吧,我的丟下面就好 :)只是像這樣在GC的安全性機制打洞,不只是上傳google play 可能會被刪除,將來版本的GC會不會對這個動作設限也不知道。我之前有私下 mail chrome developers 問相關問題沒有獲得這方面的保證。google play 的條款並沒有禁止這種應用套件之間互相溝通,也是chrome 允許的合法機制,而非用 plugin 繞過我倒是覺得可以上架看看,如果真的不允許,再來看怎麼弄上架費用我可以負責出我想這個版本應該能撐個一兩年吧。如果撐不住,我還有想好三個備案1. 開發 pepper API 為底的 plugin,專門提供 TCP socket 連線功能給 javascript。plugin 只做 socket 操作,這樣開發應該不難。2. 用 node.js 寫一個小 proxy server,讓使用者另外下載安裝,跑在 localhost。於是,chrome 套件是連 http://localhost/, 然後由 server 轉用 raw socket 連外,兩者之間訊息用 json 互傳即可,都 js 寫起來應該很簡單。缺點是,server 接收到BBS站更新畫面,好像沒有好方法可以主動通知我們的 client? 如果用 websocket 而不是 http,這問題就沒了,但 node.js 弄 websocket 似乎比較麻煩?3. 徵求善心人士提供一台 proxy server 讓我們連 http 轉 socket (例如某些學術網路)1. PPAPI 外掛程式也會被 GC 的安全性限制影響,不能直接建立 socket 。
2. 網路上 node.js & websocket 應該有不少現成的程式,
直接從那邊改的話應該不會太困難。
只不過這個方法需要另外裝本機應用程式,
這部分可能會讓部分使用者卻步。
3. 基於安全的理由,我想應該不會有網管會同意不特定的使用者進行不受限制的連線,(不限 IP 和 port )
而且基本上學網是不能架 open proxy 的。
我想等到真的被 GC 封鎖的時候應該是好幾年後了,
也許到時候還有其他新方法可以用。除了從svn 下載外,封裝好的主程式可以從這邊下載:處理socket的app 除了從svn 下載外,還可以從這邊下載:https://drive.google.com/file/d/0B-K9h3GKW2VGb3dUdjlvRXBvcjQ這個app 有白名單的設計,白名單預設是空的所有套件都不能使用。套件和app 都裝好之後,第一次使用前請手動啟動app ,出現設定視窗後請手動填入主程式的套件ID。主程式的套件ID可以在GC的擴充功能設定頁找到。技術上將填入套件ID的動作寫死在程式碼裡面是很容易,不過目前這個套件還是處於開發中的狀態,所以在安全性的考量下,我就設計成必須手動填入名單,這樣的話其他開發者應該可以直接把這個app 套用在他們修改過的程式,另外像是ssh 等不同功用的套件應該也能直接用這個app 進行開發。之後如果要上架,還是直接寫死比較安全,以免被濫用。這樣似乎比較不會有安全上的疑慮除此之外 socket app 這邊可能還需要一些調整,
目前的版本在 GC 升級重開的時候會自動 launch app ,
然後就彈出 app 的設定視窗。
我這邊有寫當所有 GC 瀏覽器視窗關閉時關閉 app,
似乎是因為 GC 關閉的過程是 non-blocking 的,
所以設定視窗還是會彈出來。
雖然可以暫時設定成 launch app 時不彈出視窗,
只是我覺得使用者手動 launch app 時至少出現一個視窗會比較好。
不過我最近比較忙,接下來可能要到春節才有時間處理了。
Google似乎開始緊縮擴充套件政策了:
https://sites.google.com/a/chromium.org/dev/developers/extensions-deployment-faq
目前我們這邊是使用者手動安裝,
不是弄一個可以自動更新的網址,
所以暫時沒有影響,
不過將來也許還是會被限制。
目前比較大的問題算是暫時解決了,
在socket.js 開頭填入PCMan 套件的ID就能直接綁定不讓使用者更改,
其他的像是整理程式碼之類的短時間內應該不會去弄,
也許我們可以開始考慮在Chrome Web Store上架了。
因為我之後可能沒有辦法繼續開發,
所以我沒有打算用我個人的帳號上架。
我想也許可以建立一個公用帳號,
不過因為我沒有將套件上架的經驗,
我不知道這樣做會不會出問題,
像是信用卡號設定等等,
這邊可能要大家一起討論後再決定。
然後看是要用什麼名子上架,
再將about 頁面改一下應該就可以上架了。
u881831於 2013年5月16日星期四UTC+8下午2時19分12秒寫道:
PCMan於 2013年4月11日星期四UTC+8下午1時14分56秒寫道:我終於找到一個有趣的方法可以繞過 GC 的限制
透過 Chrome messaging APIs
這裡有範例
https://github.com/GoogleChrome/chrome-app-samples/tree/master/messaging
extension 和 packaged apps 之間可以互相呼叫
所以我可以把主程式放在 extension 內,
並且建立一個 helper app 專責處理 TCP connection
當 extension 開了新分頁,要建立連線時,
傳送一個訊息到 packaged app,由 app 進行 socket 操作,
然後把結果以 response 回傳給 extension
就可以完全繞過 GC 的限制,而且只用純 javascript
我有實際試過,這個方法是可以從 extension call app 內的 socket API
pcman 套件內呼叫 chrome.socket.* 的地方很少,
只要稍做封裝,把這幾個 calls 改成 messages 轉發到另一個 helper app
再從 helper app 內代為呼叫 chrome.socket 並且傳回結果給 extension
就可以實現了。而且剛好因為 socket API 都是 async 的方式,
和 messaging API 完全一樣,所以實現起來非常簡單。
基本上,只會用到 extension to app 單向的簡單訊息傳輸
如果有必要,甚至 helper app 也可以反向傳訊息呼叫 extension
例如要求 extension 開啟 new tab
唯一的缺點是,helper app 需要使用者手動執行,
因為新版 GC 已經取消 packaged app 的 background_page 了,
看起來必須手動啟動才行,好像不能從 extension 內呼叫起動?
any ideas?
如果需要手動執行helper app的話使用者體驗可能會很差,
而且為了處理多個BBS 分頁的情況,
程式架構會變得很複雜。
如果讓helper app藉由extension 的background_page 開啟瀏覽器分頁,
應該就不會有剛剛那些問題。
只是這樣做的話,
和現在的版本比起來就只有不用寫自己的分頁介面,
沒有辦法使用像是瀏覽器書籤之類的元件,(使用flash 的舊版本已經有這個功能)
和現有的版本比起來似乎沒有好上多少。
不知道大家有沒有什麼意見?
另外在FX版本上最近有一些變更,
首先在未啟用Direct2D的windows 電腦上,
FX 21 不再有ClearType (anti-aliasing) 效果。(影響範圍未確認)
應該只有較舊的電腦會受影響,
這邊應該不會去處理。
再來是Firegestures從1.7.1 起不會在xul 頁面的canvas元件上面作用,
https://github.com/gomita/firegestures/commit/14a6d0fdd4c44c198b16c8f07df5c3ea1e42689e
也就是說pref_test 這個branch的手勢功能必須在畫面邊緣才會啟動。
因為這邊不可能修改Firegestures的程式碼,
所以可能的處理方式就是把GC版本的獨立手勢功能移植回來,
不過目前GC版本的手勢功能還很陽春,
而且和其他手勢套件的衝突也是一個很麻煩的問題;
再不然就是把xul 介面改成html,
只是這樣要大改程式架構所以應該不會這麼做。
關於這部分不知道大家有沒有什麼意見?
2013/3/14 u881831 <u88...@hotmail.com>:
> 因為GC的限制只有做成獨立視窗才能使用socket api。
> 事實上不只是界面和瀏覽器主視窗分開,
> 獨立視窗和主視窗之間的資料傳遞也有很嚴格的限制。
> 我想應該是安全的考量吧,
> 一般網頁不可以進行不受限的TCP 連線。
>
> 我之所以會不想繼續開發這個版本也是因為這個限制。
> 另外如果要公開發布的話,
> 我想至少要有像pcman lite和pcmanx的分頁,
> 用html元件拼出分頁的界面其實不算太麻煩,
> 只是程式架構可能要大改才能同時進行多個連線,
> 我想我應該不會去處理這個部份。
>
>
> PCMan於 2013年3月14日星期四UTC+8下午12時39分34秒寫道:
>>
>> BTW, 我想問,
>> 有沒有什麼方法可以把那個BBS視窗塞到 chrome 的分頁裡面?
>> 在我這裡測試是自己獨立的視窗,這是刻意的嗎?
>>
>> 2013/3/14 PCMan <pcma...@gmail.com>:
>> > 非常感謝你的努力維護,
>> > 我本來發起這個專案,其實也是半實驗性質,
>> > 希望做為類似程式的參考,
>> > 事實上這幾年在醫院工作,我自己已經沒上BBS了,
>> > 不知道現在實際還在使用BBS的人口有多少?
>> > 但不管怎麼說,有一個這樣的專案展示 javascript 新技術,
>> > 還是很有意義的,所以還是很感謝你所做的開發.
>> > BTW, 我們要不要把你完成的 chrome 版,
>> > 公開發布出去?例如 web store?
>> >
>> >
>> > 2013/3/13 u881831 <u88...@hotmail.com>:
>> >>
>> >>
>> >> u881831於 2013年1月20日星期日UTC+8下午8時36分07秒寫道:
>> >>>
>> >>> GC 24 已經在幾天前出了,
>> >>> socket API已經包含在內,
>> >>> 而且不需要開實驗性擴充功能 API,
>> >>> 也就是說安裝完就能立刻使用了。
>> >>>
>> >>> 不過這個API 只能用在新的packaged app,
>> >>> 舊的(legacy packaged apps)除了不能用右上角的icon外基本上和extension 一樣,
>> >>> 不過新的packaged app和GC主介面是完全分開的,
>> >>> app 內的資源不能在GC主程式開啟,
>> >>> 而app 除了影音檔案外不能開啟外部網頁資源。
>> >>> 他們似乎是想防止比較危險的API 被主程式調用,
>> >>> 像是socket和直接存取本機硬碟的API 等等。
>> >>>
>> >>> 所以要用這個API 的話就不能使用GC的分頁和網址列,
>> >>> 想要使用分頁的話要用html元件自己組,
>> >>> 另外新的packaged app為了提升安全性和效能停用了一些API
>> >>> http://developer.chrome.com/apps/app_deprecated.html
>> >>> 有很多同步的API 不能用必須改用非同步的版本,
>> >>> 像是之前用來儲存偏好設定的localStorage就不能用了。
>> >>> 事實上新的packaged app還在發展中,
>> >>> http://developer.chrome.com/apps/api_index.html
>> >>> API 數量只有extension 的一半,
>> >>> http://developer.chrome.com/extensions/api_index.html
>> >>> 還有一些未解決的問題像是在擴充功能頁開啟偏好設定會出錯等等。
>> >>> (app 內資源只能在app window開啟)
>> >>> 將來可能會有更好用更強大的API 出現。
>> >>>
>> >>> 我這邊有先試著把pcmanfx GC版改成新的packaged app,
>> >>> https://docs.google.com/file/d/0B-K9h3GKW2VGbUJrWHJZSkVOTTQ/edit
>> >>> 主要是把同步的API 改成非同步的版本,
>> >>> app 一定需要的128*128 圖示我是從pcman novus 原始碼裡面的.ico轉的,
>> >>> 所以很抱歉app 做成桌面捷徑後圖示很模糊。
>> >>> 至於偏好設定那邊問題很大,
>> >>> 除了主介面因為上述的問題只能在右鍵選單開啟,
>> >>> localStorage要改成其他非同步API 造成整體架構需要大改,
>> >>> 目前的狀況是:
>> >>> 程式開啟時花0.5 秒等待偏好設定載入後再連線,
>> >>> 沒有observer所以每隔1 秒檢查設定是否變更,
>> >>> 也因為這樣我只有用一般的文字輸入欄位輸入網址,
>> >>> 沒辦法直接抓出站台列表並弄出快捷按鈕。
>> >>>
>> >> 最近將偏好設定系統做了一些調整,
>> >> 解決了上面提到的那些偏好設定系統產生的問題,
>> >> 這邊使用了GC 20+新增的datalist元件取代原來版本的Omnibox 網址列,
>> >> 和原來版本一樣可以自動補完站台的網址也可以列出站台列表。
>> >> 站台列表以前一樣會自動抓存在偏好設定內的站台。
>> >> 下載網址還是:
>> >> https://docs.google.com/file/d/0B-K9h3GKW2VGbUJrWHJZSkVOTTQ/edit
>> >>
>> >> 因為我不認為繼續開發這個版本有太大的意義,
>> >> 之後可能不會再維護。
>> >> 目前這個版本算是有把原有功能完全移植過去了,
>> >> 應該可以作為開發類似程式的參考。
>> >>
>> >>>
>> >>> 目前這個版本拖進擴充功能分頁之後就能直接用了,
>> >>> 不像先前使用flash 的版本除了需要安裝額外的外掛還有作一堆設定,
>> >>> 但是這個版本不能使用GC主程式的介面,
>> >>> 也不能直接開啟網頁,
>> >>> 從目前的API 來看這個版本再發展下去最多也只是另一個pcman lite或pcmanx,
>> >>> 除了跨平台外沒什麼繼續開發下去的意義。
>> >>> 圖示和一些deprecated API的修正我已經傳到SVN 了,
>> >>> 至於這個版本我先不上傳SVN ,
>> >>> 希望大家可以發表一下看法,
>> >>> 看看這個版本最後要怎樣。
>> >>>
>> >>>
>> >>> u881831於 2012年12月13日星期四UTC+8上午1時34分53秒寫道:
>> >>>>
>> >>>> 今天修正了兩個問題,
>> >>>> 修復不同分頁間包含ANSI彩色碼的複製貼上;
>> >>>> 還有Linux 下使用文泉驛字型時文字下方被切掉,
>> >>>> 微米黑的情況比正黑輕微。
>> >>>> 這次修正改用垂直置中的方式描繪文字,
>> >>>> 微米黑有在正中央但是正黑還是有一點偏高,
>> >>>> 比較正確的作法是量字高然後改變行高,
>> >>>> 因為會大量修改顯示模組所以暫時用置中的方式處理。
>> >>>> (附帶一提正黑的一些big5符號為全寬字而微米黑為半寬字,所以正黑的ANSI圖表現較好)
>> >>>>
>> >>>> 這邊稍微總結一下待辦事項:
>> >>>>
>> >>>> socket api
>> >>>> GC 24 stable釋出後再處理。
>> >>>>
>> >>>> 以下的部分比較重要但是工程浩大所以暫時不會處理:
>> >>>>
>> >>>> registerProtocolHandler
>> >>>> 如果一直沒辦法實作的話,
>> >>>> 可能要把BBS 及GC一般網頁的所有telnet的超連結改成套件網址。
>> >>>>
>> >>>> 無法從網址列取得焦點
>> >>>> 可能要實作自己的網址列,
>> >>>> 在這個情況下把架構從套件改成APPS會比較好,
>> >>>> 另外改成APPS的話需要128*128 的icon。
>> >>>>
>> >>>> 右鍵選單項目藏在子選單內
>> >>>> 這邊可能也是需要用html元件實作出自己的選單,
>> >>>> 這樣也能解決Linux 下需要雙擊右鍵才能打開選單。(和手勢功能相衝)
>> >>>>
>> >>>> 以下是一些小問題也是暫時不會處理:
>> >>>>
>> >>>> 自訂手勢
>> >>>> 工程浩大....
>> >>>>
>> >>>> 訊息通知視窗不會自動消失
>> >>>> 可能需要實作自己的通知視窗,
>> >>>> 另外Linux 下如果要使用訊息通知音可能需要安裝TTS 聲音套件,像是
>> >>>>
>> >>>>
>> >>>> https://chrome.google.com/webstore/detail/us-english-female-text-to/pkidpnnapnfgjhfhkpmjpbckkbaodldb
>> >>>>
>> >>>> 加密自動登入的帳號密碼
>> >>>> 對telnet這種未加密連線而言沒有太大意義,
>> >>>> 因為目前沒有內建API ,
>> >>>> 自己實作加密的話意義不大。
>> >>>>
>> >>>> 列出GC內的搜尋引擎
>> >>>> 目前只有使用google搜尋BBS 內的關鍵字,
>> >>>> 不能使用縮網址還原之類的搜尋引擎,
>> >>>> 可能還是要另外實作自訂搜尋。
>> >>>>
>> >>>> 存取本機檔案系統的文件
>> >>>> 因為安全上的限制目前使用上下傳的方式存取本機文件,
>> >>>> 用起來很不方便,
>> >>>> 可能要等GC實作專供套件的API 。
>> >>>> 我覺得我們不應該使用繞過安全性限制的方法,
>> >>>> 將來那個方法被封住的可能性很高。
>> >>>>
>> >>>> 非同步的unicode 轉ansi相容編碼
>> >>>> big5使用內建編碼表所以沒有這個問題,
>> >>>> gb2312等其他編碼也只能看看之後有沒有想到更好的方法。
>> >>>>
>> >>>> 文字翻譯說明文件等等
>> >>>> 等到主要問題解決再處理。
>> >>>>
>> >>>>
>> >>>> u881831於 2012年11月30日星期五UTC+8上午2時05分34秒寫道:
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> u881831於 2012年10月30日星期二UTC+8上午12時03分54秒寫道:
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> u881831於 2012年10月26日星期五UTC+8下午9時50分43秒寫道:
>> >>>>>>>
>> >>>>>>> 前幾天我先寫出一個的GC版本的說明文件:
>> >>>>>>>
>> >>>>>>> http://u881831.blogspot.com/2012/10/bbs-addon-for-google-chrome.html
>> >>>>>>> 一般使用者只需要看最後一段的安裝方法就可以了。
>> >>>>>>>
>> >>>>>>> 關於GC版本的圖示,
>> >>>>>>> 目前16x16 的圖示檔我直接拿firefox 版的用,這邊應該沒有問題;
>> >>>>>>> 48x48 的我把PCMan novus 網站上的 logo.gif 轉成PNG 來用,之後也許會出問題;
>> >>>>>>> 128x128 的我沒有放所以套件安裝時的提示視窗就沒有套件的圖示。
>> >>>>>>> Google Chrome 對圖示的規定如下:
>> >>>>>>> https://developers.google.com/chrome/web-store/docs/images
>> >>>>>>> 不過我覺得暫時不需要遵守那邊的規定,
>> >>>>>>> 等以後有打算上架的時候再看看有沒有人要畫,
>> >>>>>>> 目前應該可以用類似這邊的圖檔:
>> >>>>>>> http://moon.cse.yzu.edu.tw/~s922254/pcman_icons/
>> >>>>>>> 不知道有沒有人有48x48 和128x128 大小的原始檔案?
>> >>>>>>>
>> >>>>>>> 另外關於偏好設定的程式碼,
>> >>>>>>> 因為FX內建API 不是很方便,
>> >>>>>>> 所以有一些地方的程式碼變得很冗長,
>> >>>>>>> 如果把整個架構重作,
>> >>>>>>> 像GC版本一樣用localstorage配合JSON儲存設定,
>> >>>>>>> 應該可以大幅簡化程式碼,
>> >>>>>>> 不知道大家有沒有什麼意見?
>> >>>>>>> 我可能會先實作在GC版本,
>> >>>>>>> 如果OK的話再弄到FX branch ,
>> >>>>>>> 最後 trunk 先整合偏好設定系統,
>> >>>>>>> 已實作偏好設定就再說。
>> >>>>>>>
>> >>>>>>>
>> >>>>>> 似乎大家沒有意願改掉Content Preference的偏好設定系統,
>> >>>>>> 我這邊先維持原技術只重構程式碼:
>> >>>>>> 在主程式和設定介面裡面,
>> >>>>>> 偏好設定的細節部分交給偏好設定的核心處理;
>> >>>>>> 把使用Content Preference API的部分獨立出來,
>> >>>>>> nsILoginManager 的部分也獨立出來,
>> >>>>>> 這樣偏好設定的核心部分就可以FX和GC共用;
>> >>>>>> 和設定介面元件的互動程式碼也獨立出來,
>> >>>>>> 其他的部分基本上可以跨瀏覽器共用。
>> >>>>>> 至於站台管理的部分新增了一些功能:
>> >>>>>> 現在可以在設定介面直接新增任意的站台,
>> >>>>>> 也能刪除預設站台,(實際上是將預設站台的設定重設回預設值)
>> >>>>>> 核心內部也實作了把從站台A 的設定複製到站台B ,
>> >>>>>> 不過使用者介面的部分還沒實作複製的按鈕。
>> >>>>>>
>> >>>>>> 除了偏好設定系統,
>> >>>>>> 也有一些部分需要重構才能做到跨瀏覽器共用,
>> >>>>>> 不過我短時間內應該還不會去處理。
>> >>>>>>
>> >>>>>> P.S. FX的舊站台設定不相容於新版,
>> >>>>>> 請備份之後再升級,
>> >>>>>> 升級後請移除站台列表中所有站台再新增。
>> >>>>>>
>> >>>>>>
>> >>>>>>>
>> >>>>>>> PCMan於 2012年10月9日星期二UTC+8下午10時23分58秒寫道:
>> >>>>>>>>
>> >>>>>>>> 2012/10/9 u881831 <u88...@hotmail.com>:
>> >>>>>>>> >> PCMan於 2012年10月3日星期三UTC+8上午11時58分46秒寫道:
>> >>>>>>>> >>>
>> >>>>>>>> >>> 2012/10/2 u881831 <u88...@hotmail.com>:
>> >>>>>>>> >>> > socket API看起來應該可以替代現有的flash 連線,
>> >>>>>>>> >>> > 雖然標experimental的API 依然需要使用者作一些設定才能用,
>> >>>>>>>> >>> > 不過跟現在的flash 相比還是好很多,
>> >>>>>>>> >>> > 而且這個API 將來也有可能去掉experimental標籤。
>> >>>>>>>> >>>
>> >>>>>>>> >>> 我也覺得很有可能,都已經給這麼多範例了,還有人開始在利用這個做 extension
>> >>>>>>>> >>> 但是他的使用方法和 Fx 的差異不小,可能我們需要包裝一下
>> >>>>>>>> >>> 弄一個我們自己的 socket class,把 Fx 和 GC 的差異封裝起來
>> >>>>>>>> >>>
>> >>>>>>>> >>> > 不過我想還是等這個API 進stable channel後再來實作會比較好。(似乎是GC23)
>> >>>>>>>> >
>> >>>>>>>> > 周末的時候試了一下,
>> >>>>>>>> > GC23雖然可以認出manifest裡面的socket的權限,
>> >>>>>>>> > 但是因為這個API 限定dev channel 才能使用所以無法執行,
>> >>>>>>>> > 看來到stable channel能用為止還有得等。
>> >>>>>>>>
>> >>>>>>>> 對,但至少未來當 flash 完全不能用的時候,socket API 應該已經成熟
>> >>>>>>>>
>> >>>>>>>> > 另外這個文件似乎還沒跟上程式碼的變化:
>> >>>>>>>> > https://developer.chrome.com/apps/app_network.html#connecting
>> >>>>>>>> > 這邊有該文件Reviewer的意見:
>> >>>>>>>> > https://chromiumcodereview.appspot.com/10908045
>> >>>>>>>> >
>> >>>>>>>> > 也就是說UDP 範例程式碼所使用的onEvent 似乎已經被棄用,
>> >>>>>>>> > https://chromiumcodereview.appspot.com/10273016
>> >>>>>>>> > 目前看到的範例套件都沒有使用這個功能,
>> >>>>>>>> > 所以我們可能需要想一想FX內監聽socket事件的函式要怎麼移植。
>> >>>>>>>> >
>> >>>>>>>> > 我直接執行範例套件得到一些初步的結論:
>> >>>>>>>> >
>> >>>>>>>> > onStartRequest
>> >>>>>>>> > 應該可以直接由連線的callback函式確認result >= 0 後直接呼叫。
>> >>>>>>>> >
>> >>>>>>>> > onDataAvailable
>> >>>>>>>> > 只能用setInterval 或是其他方法不斷的呼叫read,
>> >>>>>>>> > 當有資料時再呼叫這個函式。
>> >>>>>>>> > 這部分對程式效能有非常重大的影響,
>> >>>>>>>> > 間隔太長的話反應很慢,
>> >>>>>>>> > 太短的話主程式呼叫函式次數太多可能會拖慢速度,
>> >>>>>>>> > 可能要仔細想一想要怎麼做。
>> >>>>>>>>
>> >>>>>>>> 這個不會很困難,當 socket.connect() 之後,在 connect Callback 裡面,
>> >>>>>>>> 呼叫 readNext(); // 在下面定義
>> >>>>>>>>
>> >>>>>>>> function readNext() {
>> >>>>>>>> socket.recv(id, 4096, readCallback);
>> >>>>>>>> }
>> >>>>>>>>
>> >>>>>>>> 然後定義
>> >>>>>>>> function readCallback(readInfo) {
>> >>>>>>>> if(readInfo.resultCode > 0) {
>> >>>>>>>> onDataAvailable(readInfo.data);
>> >>>>>>>> setTimeout(0, "readNext()"); // 利用 setTimeout 0 秒
>> >>>>>>>> }
>> >>>>>>>> }
>> >>>>>>>>
>> >>>>>>>> 這樣就可以了,不需要 setInterval()。
>> >>>>>>>> 每次讀取完一次資料,就再讀下一次,直到 resultCode = -15,就斷線。
>> >>>>>>>> 如此可以簡單模擬出原來的架構,而且效能搞不好不差?
>> >>>>>>>> 可以試試看
>> >>>>>>>>
>> >>>>>>>> > onStopRequest
>> >>>>>>>> > 根據socket API的文件,
>> >>>>>>>> > 我們只能從read和write 的回傳狀態碼得知是否已斷線,
>> >>>>>>>> > 要是已經斷線的話WriteInfo 會是{bytesWritten: -15} ,
>> >>>>>>>> > ReadInfo是{data: ArrayBuffer, resultCode: -15},
>> >>>>>>>> > 至於連線中而且沒有新資料的時候resultCode是-1。
>> >>>>>>>> > 同樣的這個也需要不斷的呼叫read或write 。
>> >>>>>>>> >
>> >>>>>>>> > 總而言之,以目前API 的功能應該可以取代原有的flash socket,
>> >>>>>>>> > 但是目前這個API 似乎還沒成熟,
>> >>>>>>>> > 也許之後resultCode會變動或是出現更好的監聽socket事件的方法。
>> >>>>>>>> > 我覺得至少要到stable channel能夠使用後再實作比較有意義,
>> >>>>>>>> > 現在實作的話有可能會碰到API 改變而需要大幅改寫程式碼的情況。
>> >>>>>>>> > 不過要是有人想要先試試看的話,
>> >>>>>>>> > 應該可以由官方範例以及這邊提供的資訊做出完整的功能。
>> >>>>>>>> >
>> >>>>>>>> >>>
>> >>>>>>>> >>> >
>> >>>>>>>> >>> > 目前使用Flash 實作的功能除了socket外還有編碼轉換,
>> >>>>>>>> >>> > 雖然編碼轉換的功能應該可以直接用內建的PPAPI flash ,
>> >>>>>>>> >>> > 不過flash 內似乎也沒有直接的轉換API ,
>> >>>>>>>> >>> > 轉換的功能也是用數個API 組合出來,
>> >>>>>>>> >>> > 再加上flash 和javascript之間的資料傳遞,
>> >>>>>>>> >>> > 所以目前的編碼轉換很慢。
>> >>>>>>>> >>>
>> >>>>>>>> >>> 你要轉換什麼編碼?如果是 big5 to Unicode, 我記得我們有寫過啊?
>> >>>>>>>> >>> 那個 unicode 補完支援,不就有對照表可以查?
>> >>>>>>>> >>> Firefox 裡面用 js 實做不會很慢喔,GC 應該只會更快
>> >>>>>>>> >>> 需要的話我可以來做這塊。
>> >>>>>>>> >>> 還是你講的是不一樣的東西?
>> >>>>>>>> >>
>> >>>>>>>> >> 我弄這邊的目的主要是轉換gb等非big5編碼,
>> >>>>>>>> >> 目前的套件已經實作了這個功能。
>> >>>>>>>> >> 所以我在想有沒有辦法完全捨棄flash 但是保留現有的功能,
>> >>>>>>>> >> 如果使用純HTML的話我想應該會有效能的提升吧。
>> >>>>>>>> >>
>> >>>>>>>> >> 目前我試出的方法最大的問題是unicode 轉Big5的函式是asynchronous,
>> >>>>>>>> >> 不過套件裡有用到u2b 的就貼上彩色文字以及純文字貼上鍵盤輸入兩個地方,
>> >>>>>>>> >> 都是要往socket送資料,
>> >>>>>>>> >> 這個動作本來就是asynchronous。
>> >>>>>>>> >> 因為我之前有做編碼轉換結果的緩存,
>> >>>>>>>> >> 所以當緩存裡面找不到的時候進行asynchronous轉換並終止函式,
>> >>>>>>>> >> 每隔一小段時間重送,
>> >>>>>>>> >> 等到轉換結果進緩存再將資料送到socket就可以了。
>> >>>>>>>> >> 也就是說即使使用asynchronous u2b轉換也不需要大改程式架構,
>> >>>>>>>> >> 不過如果可以用synchronous 轉換的話程式架構會比較簡潔易讀。
>> >>>>>>>> >>
>> >>>>>>>> >> 至於Big5的話因為要支援UAO 所以一定要內建編碼表,
>> >>>>>>>> >> 所以就不需要考慮這些問題,
>> >>>>>>>> >> UTF8編碼的話單就轉換而言很容易只是termbuf 架構要改。
>> >>>>>>>> >>
>> >>>>>>>> >>> > 我這邊有想到用HTML本身的API 組合出編碼轉換的方法,
>> >>>>>>>> >>> > 不過速度上可能不會比現在快。
>> >>>>>>>> >>> > 不知道大家有沒有更好的方法?
>> >>>>>>>> >>> > 還是沿用現有的flash API ?
>> >>>>>>>> >>> >
>> >>>>>>>> >>> > 除了上面這些,目前還有一些待改善的問題,
>> >>>>>>>> >>> > 在支援GC本身書籤後我之前做的下拉選單就沒有存在必要了;
>> >>>>>>>> >>> > registerProtocolHandler 沒有進展而omnibox keyword 有很多問題,
>> >>>>>>>> >>> > 弄成APP 然後在web 頁面用html元件拼出自己的網址列,
>> >>>>>>>> >>> > 也許會有比較好的使用者體驗?
>> >>>>>>>> >>>
>> >>>>>>>> >>> 這也是一個選項,先求功能正確,再求完美整合啊
>> >>>>>>>> >>>
>> >>>>>>>> >>> > 右鍵選單似乎只能控制個別套件的子選單,
>> >>>>>>>> >>> > 而且那個API 的目的似乎是要服務所有HTML頁面,
>> >>>>>>>> >>> > 就我們的需求而言,
>> >>>>>>>> >>> > 似乎禁用原有選單然後用HTML元件拼出右鍵選單才是比較正確的做法?
>> >>>>>>>> >>>
>> >>>>>>>> >>> 同意,而且我們應該不太需要原本右鍵選單裡面的功能。
>> >>>>>>>> >>>
>> >>>>>>>> >>> > 還有一些比較不重要的問題:
>> >>>>>>>> >>> > 右鍵搜尋的部分我還找不到API 來實作;
>> >>>>>>>> >>> > 訊息通知音目前使用tts 實作,但是Linux 下沒有tts 可以用,
>> >>>>>>>> >>> > 其他類似軟體都是用在extension內放mp3 等檔案,
>> >>>>>>>> >>> > 也許我們可以把開放版權的聲音檔案包進這個套件?
>> >>>>>>>> >>> 這是很合理的作法,聲音檔案去 pidgin / libpurple 裡面抓現成的就好了,
>> >>>>>>>> >>> 很容易解決
>> >>>>>>>> >>>
>> >>>>>>>> >>> > 自動登入的帳號密碼目前也還沒找到比較安全的儲存方法。
>> >>>>>>>> >>> 個人覺得不需要,在畫面上寫清楚是明碼儲存就好了。
>> >>>>>>>> >>> telnet 本來就是毫無安全性的東西,密碼輸入也是以明碼送出到網路,
>> >>>>>>>> >>> 有心人要竊取非常容易。
>> >>>>>>>> >>> 再者,如果有人可以進你的電腦,開啟你的設定檔來看密碼,
>> >>>>>>>> >>> 那他還有什麼其他不能做的事?甚至可以裝 key snooper,
>> >>>>>>>> >>> 看 BBS 密碼算小事了。
>> >>>>>>>> >>
>> >>>>>>>> >> 附帶一提我之前提到的右鍵搜尋是指列出GC內建的所有搜尋引擎,
>> >>>>>>>> >> 然後將選取的文字用選中的搜尋引擎搜尋,
>> >>>>>>>> >> 目前GC內建的搜尋引擎除了Google自己外還有Yahoo!和Bing,
>> >>>>>>>> >> 而目前的套件只是開一個新分頁而已:
>> >>>>>>>> >> http://www.google.com/search?q=%s
>> >>>>>>>> >> 沒有辦法抓取其他搜尋引擎。
>> >>>>>>>> >>
>> >>>>>>>> >>> > 下面是剛剛提到純HTML的編碼轉換:
>> >>>>>>>> >>>
>> >>>>>>>> >>> > big5char.htm
>> >>>>>>>> >>> >
>> >>>>>>>> >>> > <html>
>> >>>>>>>> >>> > <head>
>> >>>>>>>> >>> > <meta http-equiv="Content-Type" content="text/html;
>> >>>>>>>> >>> > charset=utf-8"/>
>> >>>>>>>> >>> > <script type="text/javascript" src="big5char.js"></script>
>> >>>>>>>> >>> > <title>Big5 code converter</title>
>> >>>>>>>> >>> > </head>
>> >>>>>>>> >>> > <body>
>> >>>>>>>> >>> > <!-- Necessary elements for u2b api -->
>> >>>>>>>> >>> > <form id="u2b_form" action="u2b.htm" target="u2b_frame"
>> >>>>>>>> >>> > accept-charset="big5">
>> >>>>>>>> >>> > <input type="hidden" id="u2b_ustr" name="u2b_ustr">
>> >>>>>>>> >>> > </form>
>> >>>>>>
---
這是 Google 網上論壇針對「pcmanfx」群組發送的訂閱通知郵件。
如要取消訂閱這個群組並停止接收來自這個群組的郵件,請傳送電子郵件到 pcmanfx+u...@googlegroups.com。
如需更多選項,請前往:https://groups.google.com/d/optout。
--
Ett Chung
...>
...