2012年8月22日 星期三

FreeRDP 一套基於Linux的遠端桌面連線利器

今天晚上翻了一下,有什麼新奇的好玩意。

居然發現了讓我眼睛為之一亮的專案。

FreeRDP

此專案採取Apache  License 2.0授權

目前可運行於Linux,Mac,OpenBSD,FreeBSD,Solaris

此專案前身為rdesktop,在2012年的1月正式的實現了一大部分的RDP 7.1 協定包括了

  • RemoteFX
  • RemoteApp
  • Clipboard Redirection
  • Multimedia Redirection
  • Disk Redirection
  • Parallel Port Redirection
  • Serial Port Redirection
  • Printer Redirection
  • Smartcard Redirection
  • Sound Redirection
  • Network Level Authentication (NLA)

 以上部份翻譯於wiki[1]

此專案再搭配上xrdp,似乎可以通吃掉所有環境。XDD

筆者目前使用的桌機為 Mint 13 (Ubuntu 12.04),

所以直接

sudo aptitude install  freerdp

即可安裝完成

(指令安裝,等過一陣子再補...  balala)

安裝完畢後,可直接

xfreerdp yourserverip : port

就可以直接連入,我只能說沒用過這麼順的rdp協定在Linux上
感覺十分的順暢。

連入Ezilla的Windows主機,相當的順暢可以正常播放影片
至於聲音部份,據FreeRDP網頁[2]上 表示
  • Windows 2008 R2: audio and video playback redirection must be enabled manually.
  • Windows 7 Ultimate/Enterprise: works out of the box.
必須為此兩種系統才可以正常運作,小J我手頭上剛好沒有這樣的機器可以做測試。
等之後,整理出更多機器時再來做測試。(ps 注意 windows 2008需要再手動設定喔)

然後我迫不及待的用上我碩士班時候,最愛用的xrdp[3]專案安裝於Ezilla的Ubuntu虛擬機器中,



附上FreeRDP團隊於Linux中利用FreeRDP遠端至Windows主機上打電動的情形。
這實在太酷太美好了。(幹麼不用Wine呢 XDD) 


玩起來相當的流暢,但其底下運作也只是透過VNC,我想是內網速度相當"美好"的關係。

此專案中還有一個亮點 "Remmina"
一個運行於Linux可利用多種連線協定(如RDP,VNC,SSH..balala)


容小J之後再介紹!!

[3] https://github.com/FreeRDP
[4] http://manpages.ubuntu.com/manpages/maverick/man1/xfreerdp.1.html


筆記
command xfreerdp 詳細參數 [4]
xfreerdp  -x l -a 32 --rfx --no-tls --no-nla -u youraccount -p yourpassword --plugin rdpdr --plugin cliprdr --data disk:youraccount:/home/anywhere -- your connect server :  port


FreeRDP-webconnect
FreeRDP-webconnect(Windows Version)
安裝後 執行 FreeRDP資料夾中的 Start commandline in bin directory 捷徑
記得若是使用Windown Vista以上的版本 , 請按右鍵選擇使用系統管理者權限執行。


鍵入 cd "C:\Program Files (x86)\FreeRDP-WebConnect"

再鍵入 bin\wsgate.exe -c  etc/wsgate.ini

完成後 請開啟你的瀏覽器

鍵入您的Server IP Address 就可以看到


依序鍵入要連入的機器,使用者帳號,使用者連入密碼。

就可以快樂在的網頁中享受RDP連線了,當然 此時也可以提供給其他網頁的使用者使用!!

2012年8月20日 星期一

TUI 撰寫與 i18n(internationalization)

1. TUI


 TUI 全名為 Text-based_user_interface , 其示意圖如下圖般。
其目標旨於提供使用者,透過簡易的介面,便可將軟體設定或安裝。

2. i18n

 i18n 全名為 internationalization (國際化) 由於i至n中間有18個字母 所以簡稱i18n。由於軟體的推廣,最重要的除了宣傳外,當然親切的介面使用與當地語言的支持是相當重要的。
為了考慮這一點。 將軟體的使用者介面語言做重新打包,再將這些文件交由他人來翻譯,來提升使用者的使用經驗。


----

TUI


在純shell script 環境 使用的是 dialog
Ubuntu 預設會安裝,而最小安裝的CentOS則必須額外安裝此package。

yes_no


textbox


inputbox


MENU


yesno



 
#!/bin/bash
dialog --yesno "提示資訊這邊將會顯示於" 5 40
if [ $? -eq 0 ]; then
    echo "accpet"
else
    echo "cancel"
fi

=== textbox ===
 

#!/bin/bash
dialog --textbox /etc/hosts 5 40
if [ $? -eq 0 ]; then
    echo "accpet"
else
    echo "cancel"
fi


=== inputbox ===
 

#!/bin/bash
dialog --backtitle ezilla --inputbox "顯示資訊" 10 75 "預設文字編輯框內容" 2> $HOME/dialog_tmp
text=`cat $HOME/dialog_tmp`
echo You input "$text".
echo $text


=== MENU ===
 

#!/bin/bash
INPUT=$HOME/tmp_INPUT
dialog --clear --backtitle "ezilla" --title "[主選單]" --menu "你可以透過上下箭頭按鈕, 或是選單的第一個英文字母作為熱鍵 ,也可選用 數字鍵 1-9 去選擇所需的選項" 15 50 4 \
Client-Intsall "安裝Ezilla-Client" Uninstall "移除Ezilla專案" Exit "離開" \
2>"${INPUT}"
echo `cat $INPUT`



i18n


由於 自由軟體軟體推廣是件不容易的事情,為了要更多使用者來使用自由軟體。所以必須提供親切的介面外,
最好能提供多國語言體系,來讓使用者能夠快速上手其環境。

由於這樣的原因,所以GNU推出了gettext 來提供國際化與本地化使用。透過將gettext將程式中的文本額外獨立出一個檔案,
針對此檔案來做翻譯.來做到不需重新撰寫程式,甚至不需重新編譯便能支援多國語系。


該如何使用gettext呢
透過底下範例來做介紹。


首先先撰寫shell script 再需要多國語系的部份使用 gettext 作為關鍵指令
例如可以這樣寫
 

#!/bin/bash
TEXTDOMAIN=hello
TEXTDOMAINDIR=/home/jonathan/work/locale
export TEXTDOMAIN TEXTDOMAINDIR

str=`gettext "hello!"`
echo $str

將此script 存成hello.sh.
接下來則是製作翻譯檔
 
 xgettext -o hello.po hello.sh 
此為翻譯檔內容檔案
 

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-01-05 16:48+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: \n"
"MIME-Version: 1.0\n"
#注意此行需要新增字元集 "原先為CHARSET ->更改為 UTF-8"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: hello.sh:5
msgid "hello!"
msgstr "您好!"
添加需本地化的翻譯內容後,則必須翻譯成二進位檔.
附檔名為.mo
 
msgfmt -o hello.mo hello.po

值得注意的是TEXTDOMAIN變數,若此變數為hello 則必須存hello.mo
最後將此二進位檔存於TEXTDOMAINDIR變數所設定的路徑下,
但必須新建相關目錄,若使用中文則必須新建zh_TW 資料夾,底下並再建立LS_MESSAGES,
在此案例中 , TEXTDOMAINDIR為 "/home/jonathan/work/locale"
 

mkdir -p /home/jonathan/work/locale/zh_TW/LC_MESSAGES
cp hello.mo /home/jonathan/work/locale/zh_TW/LC_MESSAGES
 
./LANG=EN.UTF8 ./hello.sh



 
./LANG=zh_TW.UTF8 ./hello.sh




TUI + i18n example
 
#!/bin/bash
TEXTDOMAIN=my_First
TEXTDOMAINDIR=/home/jonathan/work/locale

export TEXTDOMAIN TEXTDOMAINDIR

dialog --yesno "`gettext "This My First i18n Shell Script!!!"`"  10 60
if [ $? -eq 0 ]; then

        echo "accept"
else
        echo "cancel"

fi


----
[http://www.linuxjournal.com/article/2807]
[http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/localization.html]
[http://mywiki.wooledge.org/BashFAQ/098]
[http://bash.cyberciti.biz/guide/A_menu_box]
[http://phorum.study-area.org/index.php?topic=23568.0]
[http://blog.roodo.com/rocksaying/archives/15333309.html]
[http://fanqiang.chinaunix.net/a4/b8/20010527/110000258_b.html]

2012年8月9日 星期四

Chrome 滑鼠手勢 Smooth Gestures

我....對 Smooth Gestures 這套軟體又愛又恨
google官方web上已經將這套移除了

因為他會追蹤私密資訊, 但原作者說那程式碼不是他寫的..

我是懶惰鬼 ,

沒辦法 我沒有這套我無法正常工作..


 提供兩個據說無毒無害的.crx安裝檔

 直接下載後 拉至擴充功能頁面安裝即可、

 至於為何不用Gestures for Chrome 其原因很簡單..

用不順阿 我不爽他卡卡的感覺!!!

  Smooth Gestures


會害怕資料被洩漏的不要用阿~~ 我真的是懶惰到不行的資訊小咖- - 2012 / 09 / 26 更新連結

Mint 13 cinnamon maya 安裝完設定

Mint 13 cinnamon


個人安裝環境
Dell T5500
CPU: Intel(R) Xeon(R) CPU  E5620  (4cores * 2cpu)
Memory : 14GB
Disk : Dell Raid 6ri
          OCZ ssd RAID 0 System Disk 240GB
          Seagate 15k  RAID0  Data Disk 600GB

  1. 更新
  2. 中文輸入法安裝
  3. 顯示卡與多螢幕設定
  4. Virtual Box安裝
  5. 修正無法直接進入系統錯誤(來不及載入根目錄)
  6. 類 Mac OS 的 docks extensions 安裝


更新


安裝完設定 由於使用 作為資料存放碟 /home /root 各分割了320g 和 250g的硬碟 安裝完成後 首先 執行
  sudo  aptitude update ; sudo aptitude upgrade
將系統更新最新的版本

中文輸入法安裝


aptitude install gcin
安裝後執行
gnome-session-properties



照上頭設定後,開機時便會自動載入 gcin 輸入法 接下來執行將語言設定成為中文,並把鍵盤輸入法改成gcin

gnome-language-selector

理論上你就可以看到令人感動的中文輸入法了 ps. 如果你有中文化需求,記得將漢語(中文拉到最上面) 這樣一來 ,很多系統介面將會被中文化。 然後,接下來 依照個人需求 將gcin 中的用不到的輸入法刪除(此部份 不詳述,有問題者可提問)

顯示卡與多螢幕設定

由於此台電腦配有nvidia Quadro 600 所以就安裝一下Nvidia 的 driver 此部份 mint Linux 中配有 額外驅動程式安裝 超級便利的安裝各種顯卡驅動 讓你可以快速體驗到mint的特效。 透過
jockey-gtk

 隨意挑一個做安裝吧:) 


由於個人使用需求 , 需安裝virtual-box ,作為該死的IE only網頁 和 開萬惡的 M$ office 使用

Virtual Box安裝

我是由官網上安裝最新版本, 直接到Virtual-Box Download 或者,利用下列整理好的網址作下載
下載最新版本。 Virtual-box 4.1.18 版本安裝
Oracle_VM_VirtualBox_Extension_Pack
.deb 直接點兩下 交由Package Installer做安裝即可
安裝完成後 再安裝 VirtualBox_Extension 來提供USB2.0功能
ps 虛擬機內若無此需求,可不裝VirtualBox_Extension_Pack 但筆者認為有備無患!!
安裝完成後
sudo usermod -Ga vboxusers 你的帳號
則可以用一般帳號正常使用usb裝置 (記得要先logout 再login才會正常喔:)

修正無法直接進入系統錯誤(來不及載入根目錄)

由於這台電腦相當的快,居然導致/目錄尚未被載入就開進去grub載入了 所以才會造成找不到硬碟的情況 請設定 /etc/default/grub中將
sudo  vi /etc/default/grub
RUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#改成
GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=60 quiet splash"
(此處我原先還以為是UUID的錯誤,其實不然 . 慚愧- -||


類 Mac OS 的 docks extensions




  cinnamon extensions

 將CinnaDock下載回來, 然後將其解壓縮
#這邊以中文版為例,如果用英文版的 我相信你應該都會用..
cd /home/your-username/下載/
unzip PKWH-PWYC-MZGS.zip -d  docks
cd docks
cp -r cinnadock@in-progress.org ~/.local/share/cinnamon/extensions/
sudo cp org.cinnamon.extensions.cinnadock.gschema.xml /usr/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
#然後logout  再重新登入後 剩下最後一步,你將會看到docks-extension
cinnamon-settings
#點選extensions 然後勾勾起來
 
接下來你就會看到dock extensions 再螢幕上出現 按下滑鼠中鍵 根據您的需求設定他出現的位子與出現的方式:) 待續