2012/10/31

[Linux] Git Repository 用 http 加上 mysql auth,再加上 gitweb

話說 svn 很好用,不過現在大家都用上 git 來處理自已的 code 了,所以我也想再更新一下之前寫的文章「SVN 跑 http 加上 MySQL auth」,這邊是用 svn 在 http 上面跑的,因為 auth 是在 mysql 上面做,所以可以很自由的 新增/刪除/修改 username,password 甚至是 group,接下來我們就是要沿用這段,讓 git 也可以在 http 上面跑,同時使用 mysql 的授權,再用 gitweb 這個套件就可以很方便的在 web 上面實現瀏覽、和 git 的 source code 管理。

ubuntu 底下,先來安裝套件:(LAMP 就不贅述了)
sudo apt-get install gitweb libapache2-mod-auth-mysql

這是我的 /etc/apache/conf.d/gitweb 設定:
Alias /git /home/git
Alias /gitweb /usr/share/gitweb


  Options FollowSymLinks +ExecCGI
  AddHandler cgi-script .cgi


    AuthBasicAuthoritative Off
    AuthMYSQL on
    AuthMySQL_Authoritative on
    AuthMySQL_DB auth
    Auth_MySQL_Host localhost
    Auth_MySQL_User admin
    Auth_MySQL_Password 12345678
    AuthMySQL_Password_Table clients
    AuthMySQL_Username_Field username
    AuthMySQL_Password_Field password
    AuthMySQL_Empty_Passwords off
    AuthUserFile /dev/null
    AuthMySQL_Encryption_Types Crypt_DES
    AuthType Basic
    AuthName "Restricted ZONE"
    Require valid-user


    AuthBasicAuthoritative Off
    AuthMYSQL on
    AuthMySQL_Authoritative on
    AuthMySQL_DB auth
    Auth_MySQL_Host localhost
    Auth_MySQL_User admin
    Auth_MySQL_Password 12345678
    AuthMySQL_Password_Table clients
    AuthMySQL_Username_Field username
    AuthMySQL_Password_Field password
    AuthMySQL_Empty_Passwords off
    AuthUserFile /dev/null
    AuthMySQL_Encryption_Types Crypt_DES
    # Standard auth stuff
    AuthType Basic
    AuthName "Restricted ZONE"
    Require valid-user


    DAV on
    AuthBasicAuthoritative Off
    AuthMYSQL on
    AuthMySQL_Authoritative on
    AuthMySQL_DB auth
    Auth_MySQL_Host localhost
    Auth_MySQL_User admin
    Auth_MySQL_Password 12345678
    AuthMySQL_Password_Table clients
    AuthMySQL_Username_Field username
    AuthMySQL_Password_Field password
    AuthMySQL_Empty_Passwords off
    AuthUserFile /dev/null
    AuthMySQL_Encryption_Types Crypt_DES
    AuthType Basic
    AuthName "Restricted ZONE"
    Require valid-user
上面都做完了,別人訪問你的 web 的時候,就會使用上 mysql auth 了。不過這邊 database 還沒建好,所以連進去應該會看到 Server Error 500 。 接著是 mysql 的 database auth 的內容:
DROP TABLE IF EXISTS `clients`;
CREATE TABLE `clients` (
  `username` varchar(25) NOT NULL DEFAULT '',
  `password` varchar(25) NOT NULL DEFAULT '',
  `groups` varchar(25) NOT NULL DEFAULT '',
  `email` varchar(256) NOT NULL DEFAULT '',
  PRIMARY KEY (`username`),
  KEY `groups` (`groups`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `clients` VALUES ('admin','djifjijigjgdi','admin','');
admin 預設我用上 test1234 ,所以你要修改的話就自已下 encrypt("abcd1234") 之類的來修改。 要換用 sha1 / mysql password 或其它加密方式,請記得跟上面 apache 的 conf 一起修改。 這邊下完我們已經可以使用 mysql 的帳密來訪問網頁了,不過還有一點點事情要做: 1. git repository 只能用 gitweb 訪問。要直接 git access 的話,需要再在 git 的 repository 那邊下:
 git update-server-info 
2. mysql 的帳密需要一個管理介面 (所以我留下了 /admin 的 location) 3. gitweb 預設的 theme 很醜 (修改 /etc/gitweb.conf 把 static 改成別的) 真的很懶,不想再打字了,所以我把整包放在這裡。 需要請自便,稍後我也會把 /admin 的部份再丟上來,那個部份現在還不完整。 --
參考資料
SVN 跑 http 加上 MySQL auth

2012/10/17

[軟體] VirtualBox 在 Windows 上面有夠慢

Fix Slow Windows Networking Problems When VirtualBox is Installed 看到的說明,看起來是 VirtualBox 的 Host Only 的 Driver 有問題的樣子,所以在 Windows 7 裡面,如果開了 Host Only 的部份,會因為這點讓整個 Guest OS 都跑很慢,所以在網路卡設定的地方把 Host Only 停用就可以讓 Guest OS 的速度回來了。

如果堅持要用 Host Only 就沒辦法用這招了。

2012/09/17

[Ubuntu][Linux] 底下安裝 Java VM (JRE) 的流程

話說最近需要在 Chrome 底下看遠端 CAM 的網頁,但是不會安裝 for Ubuntu Linux 的 JRE ,所以又跑去拜大神,問大神有沒有安裝的方法和步驟。(尤其是很久沒有用 firefox 了,所以連 plugin dir 在哪裡都不敢肯定。)

這邊使用的版本是 Google Chrome 21.0.1180.89
對照 Mozilla firefox 的版本是 Firefox 15.0.1

主要參考資料是 這邊 提到的方法,翻成中文是:
1. 移除 openjdk*
sudo apt-get purge openjdk*
2. 去 Oracle 官網 下載 JRE
3. 解開 jre 裡面的內容到 /usr/lib/jvm/jre1.7.0 底下
4. 更新 alternative 的連結
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.7.0/bin/java 0
5. 重新製作 plugin 的連結
sudo update-alternatives 
ln -s /usr/lib/jvm/jre1.7.0/lib/i386/libnpjp2.so ~/.mozilla/plugins/
當然 google-chrome 的 plugin 目錄是在 /opt/google/chrome 所以 chrome 的使用者要調整為:

sudo update-alternatives 
ln -s /usr/lib/jvm/jre1.7.0/lib/i386/libnpjp2.so /opt/google/chrome


這樣就瀏覽器重啟之後, JRE 就可以生效了。
--
參考資料:
* Ubuntu 12.04 底下安裝 Oracle JRE
* 驗證 JRE 是否正常工作的網址

2012/07/23

[Linux] Gnome 3 Gnome Terminal 找不到輸入法

這幾天在玩 gnome shell 時,發現 gnome shell 安裝完,"大概"是 gnome3 昇級 gtk3 的關係,所以 gtk immodule 有動到了,結果 gnome-terminal 開出來,右鍵的輸入法選單都是空的。

空白的輸入法選單



這個問題解法很簡單:
1. 新增一個檔案到 /etc/gtk-3.0/gtk.immodules ,內容是

"/usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules/im-xim.so"
"xim" "X Input Method" "gtk30" "/usr/share/locale" "ja:zh"

"/usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules/im-ibus.so"
"ibus" "iBus" "gtk30" "/usr/share/locale" "ja:zh"

"/usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules/im-gcin.so"
"gcin" "GCIN" "gtk30" "/usr/share/locale" "ja:zh"
2. 登出
3. 再登入

這樣就可以看到正常一點的輸入法選單了:
修正完的輸入法選單

--
* gtk.immodules 檔案內容須以空白相隔,如果不符合格式會出錯。可以參考我的設定檔

2012/07/22

[Linux] 在 Ubuntu 12.04 上面開始使用 Gnome Shell

在開始使用 Ubuntu 12.04 之後總是覺得 Unity 的介面少了點什麼。直到遇上 Gnome 3 + Gnome  Shell 之後才知道,原來 WM 的介面可以使用起來這麼方便有效率,而且也很重要的一點就是,可以更快更方便的修改。

一樣有面板,也一樣是預設用使用 nautilus 作為檔案總管。但是一切就從使用的習慣上開始不一樣。


和 unity 一樣呼叫了面板之後,系統會對當前正在使用的應用程式進行縮圖,效率比 unity 快上很多;左手邊就是常駐工具列 (dock) ,中間是我剛剛提到的應用程式的縮圖,右邊則是工作區的縮圖。面板上可以看到氣象套件提供的資訊,還有電力資訊,工作區資訊。

Unity 看起來就像是 Gnome Shell 的過渡時期的應用套件。可以很明顯地看得出來 Ubuntu 想把自已朝向 mobile device 或著保守的說是更向 touch panel 應用上前進。所以多了很多功能是配合 touch panel 在使用的。

--
參考資料及備忘:
ubuntu-12-04-改造指南 (安裝 Gnome 3 / Gnome Shell 的方法)

sudo add-apt-repository ppa:gnome3-team/gnome3
sudo add-apt-repository ppa:ricotz/testing


sudo apt-get update
sudo apt-get install gnome-shell # 安装Gnome-shell 桌面
sudo apt-get install gnome-shell-extensions # 安装extensions
sudo apt-get install gnome-tweak-tool # 安装配置工具

7-best-gnome-shell-extensions-install (安裝 Gnome Shell Extension)
* Gnome Shell Extension Weather 請務必安裝這個版本

sudo add-apt-repository ppa:xeked/gnome
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0B5C004838624188
sudo apt-get update


* gnome-shell-extension-weather 的 zh_TW mo 檔可以替換成這個檔案
只要下載完執行

sudo cp gnome-shell-extension-weather.mo /usr/share/locale/zh_TW/LC_MESSAGES/

就可以完成安裝作業。(沒辦法,原本沒有繁體中文的翻譯,又看不慣沒有中文,只好自已動手翻一下,還好並不多。)

2012/07/11

[Linux] 控制你的 Ubuntu 在 40% 的時候進行充電,充到 80% 就停止

之前寫過 iPad 在 Ubuntu 12.04 上充電 的文章,那時就很想問一個問題是:
如何讓 ipad 只充電到 50% 或 80% 這樣?(據說這樣電池壽命比較長?)

這個需求可以透過 Ask Ubuntu 上面 提供的方法得到解決,亦即安裝 tp-smapi-dkms 套件再自行設定

echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh

就可以控制你的 Ubuntu 在 40% 的時候進行充電,充到 80% 就停止。

[20120711 更新]: 這個方法只有 think pad 可以用。
--
參考文章:
http://askubuntu.com/questions/34452/how-can-i-limit-battery-charging-to-80-capacity 如何只充到 80% ?
http://antontw.blogspot.tw/2012/05/linux-ubuntu-1204-ipad2.html ipad2 在 ubuntu 上的充電方法
http://www.macuknow.com/node/1289 電池該如何充?

2012/06/15

[Linux][軟體] SSL handshake failed: SSL disabled due to library version mismatch

根據 這邊 的說法,遇到 svn 顯示 SSL handshake failed: SSL disabled due to library version mismatch 的時候,其實可以先用:

svn checkout --config-option servers:global:neon-debug-mask=511 $URL
來確認你的問題點在哪裡。

像我的問題點看起來很明顯是 libneon 的版本的問題,所以暫時還沒有解法 (好像可以先用 library path 的方式來處理,但是會有很多沿生的相依問題吧?)

所以暫時先不動好了,看看之後有沒有新的 svn server 給我玩再來處理好了。

--
參考資料
http://www.codeproject.com/Questions/261463/How-can-i-rectify-SSL-handshake-failed-Secure-conn

2012/06/05

[Linux] Grub-reboot not working

很久很久以前,寫過 一篇文章 提到 grub-reboot 不能用的問題,最近玩 Ubuntu 12 玩比較多,但工作上仍時常需要切換到 Windows 去,所以需要使用到 grub-reboot 的功能。結果一用之下竟然不能用,所以又去 Google 了一下,發現原來 Grub-Reboot 是需要先設成 default=saved 的。(參考這篇文章)

不過奇怪的是,我設完了之後,做過 update-grub 也還是不能用。
所以按 grub 的情況下去看 shell script 的動作,結果找到,原來 grub-reboot 是很簡單的去下:
grub-editenv list
grub-editenv set saved_entry=3
這樣開完機之後就會跳到 entry 3 去跑了。

唔 ... 只做這樣的動作,我的 grub 會聽話耶 ... 所以是 grub-reboot 這支 shell script 的問題啊?
暫且寫下這篇記錄這個問題,稍後有時候再回頭來看 shell script 怎麼了。
--
參考資料:
http://wiki.debian.org/GrubReboot

[Linux] 嫌 GCC 跑得慢嗎?想找人幫忙嗎?

一直都嫌 GCC 一台電腦跑起來很慢,所以想找別台機器一起來幫忙 build code 才不會那麼慢,果然 google 大神一下就給了答案,在 維尼熊的天空 找到一篇 icescream 可以參考使用的文章。不過因為時間久遠,Ubuntu / Debian 都變化了不少,所以有些 Config 不大一樣了,這篇特別標記一下:


Scheduler 要改在 /etc/default/icecc 裡面設定了,然後再
export PATH=/usr/lib/icecc/bin:$PATH
在 make -j6 的時候就可以開始使用分散式的 build procedure。
--
參考資料:
http://wayne0225.blogspot.tw/2009/01/icescream-compiler.html

2012/05/12

[Linux] Ubuntu 12.04 上給 iPad2 充電

iPad 在 Windows 上面充電可以參考 這邊 或 這邊 ,但是如果要在 Linux 上面充電,要花一點工夫。還好天天拜 Google 大神不是拜假的,Google 一下就可以找得到資料,這篇  iPad iPad2 Charge on Ubuntu 就有提到,怎麼在 Ubuntu 上面給 iPad 充電的方法:

Installation for iPad
sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev
wget --no-check-certificate https://github.com/downloads/mkorenkov/ipad_charge/ipad_charge_1.0.tar.gz
tar -xzf ipad_charge_1.0.tar.gz
cd ./ipad_charge_1.0
make
sudo make install
Installation for iPad2
sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev
wget --no-check-certificate https://github.com/downloads/mkorenkov/ipad_charge/ipad2_charge_1.0.tar.gz
tar -xzf ipad2_charge_1.0.tar.gz
cd ./ipad2_charge/
make
sudo make install

不過它上面寫的 udev 的 rules 不知道是過期了,還是怎樣,在 Ubuntu 12.04 上面不能正常工作,所以我又花了點工夫把 udev 的 rules 再改了一下,可以在這邊下載:

http://dl.dropbox.com/u/1117561/linux/95-ipad_charge.rules

加到你的 /etc/udev/rules.d/ 再重跑 /etc/init.d/udev 就可以正常為 iPad2 充電了。

--
更新:
* 20120612 發現 iphone 在 ubuntu 上面的充電截圖,現在看起來專業多了:

更新:
* 20120710 新增 iphone 3GS 的 usb id。
--
iPad 在 Windows 上面充電

2012/05/09

[軟體] MediaWiki 使用 phpmailer 實現用 gmail 寄信

這個標題還真拗口,簡單的說:

1. MediaWiki 很好用,可惜裡面 Email 的功能只能用傳統的 sendmail, php mail, smtp 功能。
2. phpmailer 很好用,可以用 gmail 的 smtp / ssl 寄信所以我們讓它 include 在裡面。
3. 最後再上一個 patch 修改 include/MailUser.php 就可以。

Patch 我放在
http://dl.dropbox.com/u/1117561/linux/UserMail.phpmailer.r115116.patch
--
參考資料:
http://www.gossamer-threads.com/lists/wiki/mediawiki/131400

2012/05/03

[Linux] Ubuntu 12.04 上的正妺輪播桌面

之前寫過 Ubuntu 上用 command line 更換桌面的方法,然後配合 shell script 就會把正妺時計一樣的效果弄到自已的桌面上。

當然會有效率和網路頻寬的問題,所以後來又做了一點修改,不過因為種種緣故,所以很久沒有更新自已的網䏯。



ChangeLog:
* 改用 http://www.bijint.com/ 的圖片來源
* 預設抓圖後存放到 $HOME/Public/clock 目錄底下,下次再輪到這張圖就不會去網路上抓了,這樣如果有不想看到的圖,也可以用這樣的方式替換掉。

Script 位址:http://dl.dropbox.com/u/1117561/linux/clock.sh
--
參考文章:
http://antontw.blogspot.com/2010/12/programminglinux-ubuntu.html

[Linux] Ubuntu 12.04 上使用 PPStream

Ubuntu 12.04 改了不少東西,PPStream 預設安裝完畢是不能播的,還好這是 Linux 系統,所以可以透過 shell script 簡單先包一層在外面,再來觀察到底是丟給了 mplayer 什麼參數。

經過觀察,在我的平台上面要修改給 mplyaer 的參數,把 -wid 拿掉才能播放。
如果有需要改 video output 或 audio output 的情況,大抵上都會一整個陷入煩人的狀態。

我嘗試了半天,只找到修改 /opt/pps/bin/mplayer 的方式讓 PPStream 暫時可以運作,不過整體情況仍然沒有很好,只是堪用而已。

因為我是包一層 shell script 在外面,然後 PPStream 呼叫 mplayer 可以動作,但是又留下一堆這層殼的屍體在那邊,所以需要再多花一點資源 ... (嘆)



暫時的處理方法是:
1. 下載這個 script: mplayer.sh
2. mv mplayer.sh /opt/pps/bin/mplayer
3. chmod +x /opt/pps/bin/mplayer

方法不好,不過先將就著用吧,如果有更好的處理請跟我說。
--
參考文章:
http://antontw.blogspot.com/2010/11/ubuntu-pps-for-linux-pps-for-linux.html

[Windows] 好用的小工具: AutoHotKey

做為一個 Linux 的愛好者,轉移到 Windows 上面的時候,往往難以適應 Windows 調整快捷鍵的方式,所以 google 了一下,結果發現很多人愛用的 "Auto Hot key"。不多說,就來給一個範例說明如何使用 Auto Hot key 來...