web-based shell ansi/vt100

ajaxterm

Python implement

shellinabox

http://shellinabox.googlecode.com

http://chunchaichang.blogspot.com/2011/04/shellinabox-linux-shell.html

貌似好用很多,只是我想改他但不是冠希…

介紹一下里面一個參數, –service,預設沒下等同於 –service /:LOGIN

這個參數的說明


SERVICE := <url-path> ':' APP
APP     := 'LOGIN' | 'SSH' [ : <host> ] | USER ':' CWD ':' CMD
USER    := 'AUTH' | <username> ':' <groupname>
CWD     := 'HOME' | <dir>
CMD     := 'SHELL' | <cmdline>

還蠻有趣的一個定義方式…,他讓你可以定義多種 shell ~

預設是一進去首頁 http://shell/ 就會預設登入該台伺服器的 /bin/login 並且開啟 shell。

記得加上 –css /usr/local/share/doc/shellinabox/white-on-black.css 改成習慣的黑色背景…

但是如果你想要用 ssh 登其他伺服器,可以設定一些其他的 APP,

例如 想要用 http://shell/mlwmlw 登 mlwmlw.org 就可以這樣下參數

–service /mlwmlw:SSH:mlwmlw.org –service /:LOGIN

而且也可以加入數個 service

但是…用 CentOS 好像指定 SSH 會有一個 bug 按照下文把

http://code.google.com/p/shellinabox/issues/detail?id=50

shellinabox/service.c 的 -oVisualHostKey=no 註解掉重編就能跑了。


$ /usr/local/bin/shellinaboxd --port 443 --cert /tmp \
  --css /usr/local/share/doc/shellinabox/white-on-black.css

other

想要用 node.js + websocket 實作一套..

目前已經用 libssh 寫了一個 node.js 的 module..還堪運作,配上 socket.io 來傳資料,接下來要瞭解一下 ansi 的 terminal code~在接上 shellinabox 寫好的 v100 的轉碼介面~

http://wiki.bash-hackers.org/scripting/terminalcodes 可以先看一下入門文章= =

Ansi/vt100 入門指引…

Ansi/Vt100 是比較常見通用的 控制碼 協定,好像在 bbs 跟 ssh 上都是用這個在表示的,這控制符號除了可以改變前景背景顏色,好像還可以表示滑鼠游標跟輸入游標等等的狀態。

tput 是 linux 上的一個指令,算是一種是用來查詢 終端符號 資料庫的指令,因為 terminal 的協定有很多種阿~每種的值都有點不一樣,但是他們的目的跟功能應該都大同小異的,所以這指令能偵測你現在終端用的協定幫你用字傳查出你想要的控制碼。

jquery checkbox tree

有幾套不錯的,這種類的 plugin 有幾個點可以比較,樣式、選擇後影響子節點的方式、維護。

描述一下關於這個套件需要實作的點。

  • 點上層下層應該被全選,下層全取消上層也會被取消。有相依關係。
  • 如果下層被沒有被全選,上層應要有中間的狀態,一般在安裝軟體套件會用框框表示。

但這種模式並不能滿足所有的需求,我的需求是我選了一個點以後,不一定要連動下面的層級,或者是選了一個點以後也不要連動上面的層級。依照這種都不需要連動的概念,實作上就完全沒辦法輔助到使用者。所以我想要用第三種狀態來表示一個概念,來修改一套既能不連動又可以輔助的 plugin。

使用概念如下圖:

單點包含下層全選,雙點只有下層取消,三點包含下層全取消。

一套是 http://code.google.com/p/checkboxtree/ 關於事件與設定的功能頗完整,但是沒樣式,沒特別要求就用他吧,簡單且完整性高,參數丟法不太喜歡。

另外一套是 checktree  http://project.yctin.com/checktree/

這個版本是經由第三方修改一些 bug 的因為原版沒維護了,裡面有寫歷史專案的追溯,不喜歡可以自己找原版。這版本有支援半選取的狀態,且有樣式,但輔助函式過少。

有個小 bug ,只有一個元素然後很多層的時候會發生半選取算法錯誤,因為要下而上觸發而不是由上而下~

125 行
$(this).parents(“ul”).siblings(“:checkbox”).change();

改成
$($(this).parents(“ul”).siblings(“:checkbox”).get().reverse()).change();

這套樣式與功能超多,因此略閒肥大,不是我的菜…但是介面可以參考。

http://wwwendt.de/tech/dynatree/doc/samples.html

表徵

平常看見一個現象,都會先想這個現象是偶然還是常態,用此猜測來推斷造成這個現象的原因。

當遇見一個陌生人,我會不斷的測量與猜測人要如何與之相處,是否適合接近~要避免與壞人交深。因此初次見面時的每個動作每句話都會影響人的觀感。但有時交談互動時只是表面,無法推測出這人真正的個性。

生活上會遇見許多事,事情是現象還是原因,應該需要好好釐清,才能找到問題的根源對症下藥。

當看房子第一次遇到房東這是一位陌生人,要觀察一間房子適不適合居住,除了房子本身以外與房東的相處也格外重要,可以觀察他如何帶你去看房子。如果有房客還在居住他是用何種方式來進入房間?是直接開門、先行通知、當下按門鈴?都可以猜出這房東對待訪客謹慎與尊重的程度,這種原則的問題特別能看出人的本質。因此也可以用探測的方式問一些怎麼處理一些房子修繕,與公共空間設備的處理方式等問題。
但人種是會防備,全部看起來都很好,也不一定代表真的沒問題,或許只是一齣戲~因次需要特別注意各種小細節,並儘量將之作為考慮的條件,不要太相信看到的一切都是特例,下次會更好…

一棟房子從外表評斷新舊,只能看磁磚跟牆面的老舊程度,所以要讓一棟房子看起來像新的,只需要全部重新鋪過磁磚,但…只要有任何一個小細節漏出,一切的偽裝就會逐漸瓦解。

a song

有時不經意的聽完一張專輯,不太會有什麼特殊的感受…

(一點反應都沒有,只是一張CD)

只是在某刻在街上、咖啡廳,突然間耳朵亮了起來,一首熟悉的旋律與語調旋過耳後,

突然無法憶起,但卻很想知道…,可能這首歌曾經深深卻不著痕跡的已經進入了妳的心底…