2012年12月9日

moodle 2.4升級記錄

把moodle從2.3升到2.4,正式把moodle做到跨雲處理,也把mahara架起來。
今天搞定moodle 2.4的儲存倉庫dropbox google docs google picas....也搞定mahara moodle....正式把學校的moodle邁入跨雲端處理。展嘉的文件幫不少忙(感恩!!)....冬天裡,算是暖暖的.....
值 得一提的是我從moodle 2.3升級到moodle 2.4時,不能把檔案蓋過去,系統會偵測到有兩個版本的moodle,然後就掛掉了,還好升級前有做好備份的工作。看文件才知,只能複製 config.php,其他的plugin ...要升級成功後再上傳到相關目錄,再做一次plugin 升級。給大家參考了。

試出moodle如何匯入pop3或是google apps帳號了,在文件上沒有說,原來在一個欄位是auth填入pop3或是googaps,而passwd則要填入not cached,至於其他的就照說明文件即可匯入pop3或是google apps的資料。相信很多人的學生信箱是用google apps而moodle有安裝google apps的plugin,這樣就可以從校務行政系統匯出相關欄位,做好csv檔後再用最高權限匯入,這樣學生可以免收信認證,和輸入相關欄位,對於三年級 學生在使用moodle上有相檔的幫助。

這個是我做的csv檔需要者可以下載來用
https://docs.google.com/open?id=0Bz6-J_NwALFBQmI1eThVd2hkS2M

2012年11月26日

xampp in ezgoX 啟用xmlrpc

在xampp 中想啟用xmlrpc,預設值是未啟動的。
如果是在ubuntu下想啟動php支援xmlrpc

指令apt-get install php5-xmlrpc,
修改php.ini把;extension=php_xmlrpc.dll前面的;號拿掉
重新啟動apache

在xampp中做法就比較麻煩。
1. apt-get install php5-xmlrpc
2.找到xmlrpc.so(可能在/usr/lib/php5/20090626+lfs)拷貝到/opt/lampp/
lib/php/extensions/no-debug-non-zts-20090626
3.把xmlrpc.so改成可執行檔
chmod +x xmlrpc.so
4.移除系統的xmlrpc
apt-get purge php5-xmlrpc
5.修改/opt/lampp/etc/php.ini,增加一條extension="xmlrpc.so"同時確定extension=php_xmlrpc.dll這一條前面有;號
6.重新啟動lampp
這樣就可以看到xampp支援php5-xmlprc


2012年11月21日

python讀取網頁資料

開始學python,看了一些文件,有看沒有懂,只知它很強,但每次出錯卻不知如何下手。
看了人家的範例,自己做做看,今天終於有點進展了。
ezgoX裡面就有python,但要讀取網頁資料仍少了些套件,建議把lxml和pyquery裝起來。
讀取網頁程式,參考:http://nopython.blogspot.tw/2011/11/pyquery.html
程式碼只要3行就可以把網頁抬頭讀進來
from pyquery import PyQuery as pq
d = pq(url='http://163.20.160.197')
print (d('title').text())
 自己變化,看到讀網頁中哪個html標簽,例如p或是.....
 出來是在終端機,有點難看,所以找一個gui把它包起來,參考:http://www.yiibai.com/python/python_gui_programming.html
 以下是文字框程式碼
from Tkinter import *

def onclick():
   pass

root = Tk()
text = Text(root)
text.insert(INSERT, "Hello.....")
text.insert(END, "Bye Bye.....")
text.pack()

text.tag_add("here", "1.0", "1.4")
text.tag_add("start", "1.8", "1.13")
text.tag_config("here", background="yellow", foreground="blue")
text.tag_config("start", background="black", foreground="green")
root.mainloop() 
 
 我把程式改成這樣
####顯示中文 
#-*- coding: utf-8 -*-
###呼叫視窗 
from Tkinter import *

def onclick():
   pass

root = Tk()
text = Text(root)
 ####取得網站資料
from pyquery import PyQuery as pq
q = pq(url='http://www.wdps.ntpc.edu.tw/index.php')

###插入文字及屬性
text.insert(INSERT, q('title').text())
text.insert(END, "")
text.pack()
text.tag_add("a14", "1.0", "1.4")
text.tag_add("a183", "1.8", "1.13")
text.tag_config("a14", background="yellow", foreground="blue")
text.tag_config("a183", background="black", foreground="green")
root.mainloop()
 

2012年11月16日

圖片改解析度dpi

最近有需求,要把螢幕擷圖改解析度300dpi(列印或出書),難不成每個圖都要進gimp轉解析度後再存檔嗎,有快一點的方法嗎?有當然是指令,可是有人看到指令就....,但我還是把指令列一下
convert  -density 300  a.png b.png

於是今天花一點時間寫了一個sh(只幫忙改png和jpg),把它做一點效果。使用時先把圖檔放在一個資料夾中,執行指令ch_dpi.sh,如果不帶資料夾參數,會讓使用者選擇資料夾,再幫你改dpi和尺寸。
檔案原紿碼如下:
#!/bin/bash
if [ "$1" == "" ];then
        ch_size=$(zenity --entry --text=變更圖片大小例如:1024x768,空白則不改變)
        if [ "$ch_size" == "" ];then
                show_ch_size=""
        else
        show_ch_size="-size "$ch_size
        fi

        ch_dir=$(zenity --file-selection --directory)

        if [ "$ch_dir" == "" ];then
                zenity --info --text=取消轉換
        else
                cd $ch_dir
                for i in *.png
                do
                        convert $show_ch_size -density 300 $i $i
                done
                for i in *.jpg
                do
                        convert $show_ch_size -density 300 $i $i
                done
                zenity  --info --text=轉換完成
        fi
else
        cd $1
                for i in *.png
                do
                        convert $show_ch_size -density 300 $i $i
                done
                for i in *.jpg
                do
                        convert $show_ch_size -density 300 $i $i
                done
                zenity  --info --text=轉換完成

fi
 下載這個檔案:
https://docs.google.com/open?id=0Bz6-J_NwALFBQWwwdEJCVUtNYTg

2012年11月9日

Raspberry Pi超顏

我是這樣做出來的:
1.下載新的img檔案,下載網址:http://www.raspberrypi.org/downloads ,裡面有很多種版本,我是用2012-10-28-wheezy-raspbian.zip這一個,新的版本應該都可以,之前我用7/05日的怎麼做都失敗。
2.重做sd卡
3.放入 Raspberry Pi中,在第一次啟動時,會要求設定,超頻位置在:

4.設定開機啟動desktop


 5.設定時區:

 選亞洲

選台北


6.重新開機。完成

5.如何知道它是跑1G呢,我進入終端機執行下列指令
##切換最高權限
sudo -s
##安裝lshw
apt-get install lshw
##查看硬體
lshw
得到如下圖




2012年10月15日

ezgoX kazam出問題解決方法

個人測試結果:
  是因為kazam和openshot、kdenlive的檔案相沖,解決方法:
1.查看套件庫來源檔
sudo vim /etc/apt/sources.list
如果最後一行 有
deb http://free.nchc.org.tw/ezgo-core/ ezgo-lucid main
請把它刪除掉

2.重新取得套件庫
sudo apt-get update

3.徹底移除openshot和kdenlive
sudo apt-get purge openshot kdenlive

4.重新安裝openshot kdenlive
sudo  apt-get install openshot kdenlive gir1.2-appindicator3-0.1 gstreamer-tools

這樣kazam就應該不會出現錯誤訊息了。

2012年9月28日

youtube影片加字幕-純手工

想在youtube影片加上字幕,他的檔案是純文字檔,但需有特定格式
以下是我的字幕檔內容(第一行是開始時間,結束時間,第二行是字幕文字,每個字幕間要有一行空隔)

00:00:00.00,00:00:04.00
粉蝶產卵的過程

00:00:05.00,00:01:45.00
1/10慢動作播放

00:01:46.00,00:02:00.00
正常動作播放














2012年9月26日

應用程式或行動載具專屬gmail密碼

現在很多應用程式或是行動載具都會用到google gmail認證,有沒有想過,行動載具掉了時,別人有可能經由行動載具取得你在google上的資料,有人說改密碼就好了,如果你有十種行動載具或是應用程式會用到(現在的時代非常有可能),那為了一個行動載具,而要去九個地方改,不是很不方便?原來google早就幫大家想好了。
你可以到應用程式專用密碼(要登入google),進去裡面

http://www.google.com/url?q=https%3A%2F%2Fwww.google.com%2Faccounts%2Fb%2F0%2FIssuedAuthSubTokens

會看到如下圖,你可以為你的行動載具取得一組加密過的密碼,輸入後一樣可以取用google資料,而某一個行動載具不用了,可以取消該組密碼,那台行動載具就不能再用你的google帳號進入,而其他行動載具則不受影響,這項措施可真是週到。

2012年8月8日

tuxpaint中文輸入問題解決方式

看了仲佑的文章,可以解決tuxpaint中文輸入問題,做個記錄
http://yowlab.shps.kh.edu.tw/wordpress/?p=628

原文:

cd /usr/share/tuxpaint
mv fonts fonts.bak (把負責字型的部份備份起來)
mkdir fonts; cd fonts
cp -Rp ../fonts.bak/locale . (把有關語系的部份複製過來)
ln -s /usr/share/fonts/TTF/chinese/uming.ttc . (引用系統的中文字型,明體)
ln -s uming.ttc default_font.ttf (將 uming.tcc 替代成 預設字型)

照做,失敗,原來我沒有他的字型,改了一下用文泉驛米黑體代替
cd /usr/share/tuxpaint
    mv fonts fonts.bak (把負責字型的部份備份起來)
    mkdir fonts; cd fonts
    cp -Rp ../fonts.bak/locale . (把有關語系的部份複製過來)
    ln /usr/share/fonts/truetype/wqy/wqy-microhei.ttc .  (引用系統的文泉驛米黑字型)
    ln -s wqy-microhei.ttc default_font.ttf   (將 wqy-microhei.ttc 替代成 預設字型)
測試了一下,OK。感謝仲佑。

2012年8月2日

kubutnu下的網路芳鄰安裝程式

請注意:此方法測試環境為kubutnu12.04其他作業系統未測試
有許多老師在詢問使用ezgo如何可以讓學生可以快速交作業或是取得老師分享的 資料,感謝基隆市蘇仕文老師高雄仲佑老師新北市保太老師提供方法,改寫了一下程式,做一個網路芳鄰連線程式,目前只提供samba和ftp連線方式,由於 ssh連線方式變化太大,個人功力不足,敬請見諒。
首先想要連線的主機請老師或是資訊組長要設定讓學生連線的方式及設定分享資料,及學生帳密。最簡單也是最不建議使用的是在教師機上在資料夾上按下滑鼠右鍵/屬性,設定分享,這個有安全性問題,如果臨時開啟記得使用完後要把分享關閉。
下載
http://dl.dropbox.com/u/32125023/inst_samba_content.sh

http://dl.dropbox.com/u/32125023/smb.png 

 用最高權限執行學生端安裝程式inst_samba_content.sh,執行完會在桌面有一個網路芳鄰的連線圖示,學生按兩下即可連上老師主機(設定正確的話),連線後會要求輸入學生帳密(除非你的主機是非常開放的,非常放相對不安全)。這個檔案可以拷到其他帳號的桌面中來使用。

2012年7月31日

kubuntu家目錄之我見

剛轉換成kubutnu,它的家目錄顯示方式,個人不太習慣,於是想了一下用這種方式來減少適應期。
我去編輯選單,編輯程式選單,在附屬應用程式中新曾一個指令,叫家目錄,指令是dolphin,起始位置是~/,選擇家目錄圖示,按下滑鼠右鍵把它放到面板上,這樣來的感覺和ezgo9一樣,至於kubuntu的式在家目錄中如果檔案數多時會是一個困擾,滑桿很長,很找檔案。

我想高手或許可以用新增元件的方法直接做到才是。

2012年7月21日

kubuntu下快速啟動konsole

剛轉過來kubuntu,因為常要用到終端機,每次要需要用滑鼠點好幾下,有點麻煩,研究了一下,找到一個方法可以沿用ubuntu下的用法。
設定/系統設定,找到捷徑與手勢,


在預先動作中按下左下方的編輯/新信/全域捷徑/指拎/網址。增加一個"終端機"的項目,觸發器中按下鍵盤Ctrl+Alt+T(如果是筆電有可能會出現Crtl+Alt+T被pad占用,不理它,強占回來),動作頁簽中輸入konsole,最後按下套用,就可以用快速鍵啟動終端機。

同樣的方法可以設定Ctrl+Printscreen為螢幕擷圖(視窗),不能設定為Alt+PrintScreen,因為QT不支援這個按鍵,而動作是shutter -w。

2012年6月28日

買axer的Ultrabook s5 系列千萬要小心

要買Ultrabook s5 ssd 256GB的筆電,千萬別選axer的因為個人覺得他設計有重大缺失,客服也無法改進。造成個人資料損失只能自認倒楣。因為它稱有256BG的ssd,結果是用兩個128GB的硬碟做raid 0,這是非常危險的手法,它這樣做了別以為你的資料存在D碟,如果系統掛了(其中一個碟損壞)你還可以把資料救出來,這麼大的公司會做出這麼危險的設計真的令人百思不解,向客服反應還說raid不能移除,這台機器是在筆電中算十分貴的,而這麼離譜的設計真是拿消費者當"白X",上網站反應,該公司的網站(反應意見頁面)竟然是IE only,真的是又敗給它。難怪會被咬一口的水果打得很難看。國內的廠商真的能挺嗎?
廠商無法重視消費者的資料觀念是對的?
號稱256GB的硬碟結果是128+128有無詐欺之虞?
客服反應無法解決問題就擺涼放著?
說SSD多強,個人測試開機要約20秒,和ezgo ubuntu用一般硬碟開機相差無幾,個人還沒測試,網友用ezgo ubuntu+ssd硬碟開機只需十秒左右。

2012年6月20日

google 氣象 api php

google氣象不錯,想把氣象資料取出用php程式語法分析,參考一些網站,自己也試做了二個方案。
方案一:
編輯一個php檔內容如下
<!DOCTYPE html lang="zh-TW"> 
<?php
$xml = simplexml_load_file('http://www.google.com/ig/api?weather=,zh-tw,wind,25023382,121458812');
$information = $xml->xpath("/xml_api_reply/weather/forecast_information");
$current = $xml->xpath("/xml_api_reply/weather/current_conditions");
$forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
?>
用$current[0]->icon['data']取出天氣圖示,$current[0]->condition['data']取出文字說明,$current[0]->humidity['data']取出濕度,$current[0]->wind_condition['data']取出風向。
這樣取出的資料有些會是英文的,需要寫一個function來轉,因為是html5語法所以瀏覽器需要有支援才能看到。

方案二:
參考網址:
http://jindauang.wordpress.com/2011/04/01/google-%E5%A4%A9%E6%B0%A3-api-%E5%88%A9%E7%94%A8php%E6%8D%89%E5%8F%96/

裡面有可以下載的範例檔,參考修改之。
我修改好的如下(比原做者多抓出現在氣象資料):
<?php
    include_once('LIB_http.php');
    include_once('LIB_parse.php');
    //$city='Taipei';
    //$file=http_get('http://www.google.com/ig/api?hl=zh-tw&weather=' . $city,'');            //取得指定城市天氣狀況的xml檔
    //取出當地天氣用經緯度想用城市請把上一條解除
    $file=http_get('http://www.google.com/ig/api?hl=zh-tw&weather=,zh-tw,wind,25023706,121458851');

    //25.023706,121.458851
    //$afile=$file;
    //取出現在氣象
    $afile=parse_array($file['FILE'],'<current_conditions>','</current_conditions>');
    $temp=0;
    foreach($afile as $afilet){
    $afilet=mb_convert_encoding($afilet,'utf8','big5');
    $wind[$temp]=get_attribute(return_between($afilet,'<wind_condition ','/>',EXCL),data);        //儲存風速
    $humidity[$temp]=get_attribute(return_between($afilet,'<humidity ','/>',EXCL),data);        //儲存濕度
    $temp_c[$temp]=get_attribute(return_between($afilet,'<temp_c ','/>',EXCL),data);        //儲存溫度
    $condition_now[$temp]=get_attribute(return_between($afilet,'<condition ','/>',EXCL),data);        //儲存文字   
    $icon_now[$temp]=get_attribute(return_between($afilet,'<icon ','/>',EXCL),data);        //儲存圖示
    $temp+=1;
    }
    echo "現在氣象:<img align='middle' alt='".$condition_now[0]."' src='http://www.google.com".$icon_now[0]."'>".$condition_now[0]." 溫度:".$temp_c[0]."°C ".$humidity[0]." ".$wind[0]."<br>";

    //取出未來預測氣象
    $file=parse_array($file['FILE'],'<forecast_conditions>','</forecast_conditions>');
   
    $temp=0;
   
    //透過foreach取得當週的天氣狀況
    foreach($file as $filet){
        $filet=mb_convert_encoding($filet,'utf8','big5');
        $day[$temp]=get_attribute(return_between($filet,'<day_of_week ','/>',EXCL),data);    //儲存星期
        $low_c[$temp]=get_attribute(return_between($filet,'<low ','/>',EXCL),data);            //儲存最低溫
        $high_c[$temp]=get_attribute(return_between($filet,'<high ','/>',EXCL),data);        //儲存最高溫
        $condition[$temp]=get_attribute(return_between($filet,'<condition ','/>',EXCL),data);        //儲存天氣狀況
        $icon[$temp]=get_attribute(return_between($filet,'<icon ','/>',EXCL),data);        //儲存天氣圖
        $temp+=1;
       
    }
    //var_dump($day);
    //var_dump($low_c);
    //var_dump($high_c);
    //var_dump($condition);
//秀出一週天氣
for ($i=0;$i<count($day);$i++){
    //$humidity
    echo "[".$day[$i]."<img align='middle' alt='".$condition[$i]."' src='http://www.google.com".$icon[$i]."'>".$low_c[$i]."‪°C‬-".$high_c[$i]."‪°C".$show_wind."]";

}
echo "<br>氣象資料來源:<a href='http://www.google.com/ig/api?hl=zh-tw&weather=,zh-tw,wind,25023356,121458793' target='_blank'>google api</a>";
?>
我改好的檔案下載網址:https://docs.google.com/open?id=0Bz6-J_NwALFBN3AwOWJHVzNuaHM

至於如何取得自己想秀出的位置經緯度,可以使用google map進階功能,可以得知經緯度,把小數點去掉就可以了。

2012年5月15日

moodle 1.9x認識webm

webm是很棒的開放影音串流格式,可惜moodle 1.9x不認識它,找了好久終於找到解決方法了,原來是要把檔案的type設定好。
我的做法:
修改moodle資料夾下的lib資料夾中的filelib.php(修改前先備份)。
找到ogv檔位置,大約是在407行,在後面加上一條
'webm' => array ('type'=>'video/webm', 'icon'=>'video.gif'),
存檔,這樣moodle 1.9x就會認識webm的檔案是video的檔案,而瀏覽器就會自動使用預設播放器播放。IE會怎樣就不知了。

2012年5月14日

clipbucket新增html5 player

clipbucket是opensource的影音平台,可以支援高解析度影音。
在自建player自己遇到問題,爬文許久,得到一絲解答,在此做一記錄。
要支援hmtl5 video 需要有mp4或是ogv或是webm這幾個檔案,而mp4在clipbucket上只要影音解析度到一定標準時會自動把影片轉mp4,可是firefox和Opera瀏覽器不支援,所以必需要server轉ogv檔
在/includes/classes/conversion/ffmpeg.class.php的 1078行左右(
找到
                       if(file_exists(TEMP_DIR.'/output.tmp'))
                        {
                                $output = $output ? $output : join("", file(TEMP_DIR.'/output.tmp'));
                                unlink(TEMP_DIR.'/output.tmp');
                        }
之後),加入下列
$ogvcommand = $this->ffmpeg." -i ".$this->input_file." -b 1200k -acodec libvorbis -vcodec libtheora -f ogg ".ereg_replace(".mp4",".ogv",$this->hq_output_file);
系統會把上傳的檔案有高解析度的影片,時會自動轉ogv檔。




自己新增一個player,可以參考:
http://docs.clip-bucket.com/adding-new-player

它有一定規定,可以下載其範例檔來改
http://www.longtailvideo.com/players/jw-flv-player/

其中檔至少頭要有(當然要多記也可)
  <?php
/*
 Player Name: JW Player v5
 Description: Jw player for clipbucket from longtail.com
 Author: Arslan Hassan
 ClipBucket Version: 2
 Plugin Version: 1.0 - JW 5
 Website: http://clip-bucket.com/
*/

?>

然後要有function,內容參考
http://docs.clip-bucket.com/adding-new-player

自己開始也看不懂內容,研究許多發現一點,是我們可以改的
找到return $swfobj->code;,這是函式回去的地方,在這之前加入我們需要的影音語法就好了

在html5 video影音語法是(請參考網頁http://www.w3schools.com/html5/html5_video.asp
<video width="320" height="240" controls="controls">
  <source src="movie.mp4" type="video/mp4" />
  <source src="movie.ogg" type="video/ogg" />
 Your browser does not support the video tag.
</video>
由於firfox和 Opera不支援mp4所以我們的語法變成判斷系統是否有ogv檔,
有ogv檔用html5來播放,而mp4和flv檔用embed來播放。
至於有哪些變數可用可以用print_r($data)來看$data是一個陣列,裡面會傳回很多資料。
 
 
  $swfobj->title = $data['vdetails']['title'];
  $swfobj->description = $data['vdetails']['description'];
  $swfobj->username = $data['vdetails']['username'];
  $swfobj->views = $data['vdetails']['views'];
  $swfobj->datecreated = $data['vdetails']['datecreated'];
    $swfobj->width = $data['width'];
    $swfobj->height = $data['height'];
    $swfobj->filename = $data['vdetails']['file_name']; 
 
  if(file_exists('/webdata/web/video/files/videos/'.$swfobj->filename.".ogv")){
   //如果ogv檔存在就用html5播放
?>
   <video width="<?php echo $swfobj->width;?>" height="<?php echo $swfobj->height;?>" controls="controls">
     <source src="<?php echo BASEURL.'/files/videos/'.$swfobj->filename; ?>.mp4" type="video/mp4" />
     <source src="<?php echo BASEURL.'/files/videos/'.$swfobj->filename; ?>.ogv" type="video/ogg" />
     如果你看到不到影片請使用支援html5的瀏覽器,建議使用<a href="http://moztw.org/">Firefox</a>或是chrome瀏覽器.
   </video> 
   抬頭:<?php echo $swfobj->title;?><br>
   內容:<?php echo $swfobj->description;?><br>
   上傳者:<?php echo $swfobj->username;?><br>
   觀看次數:<?php echo $swfobj->views;?><br>
   影片日期:<?php echo $swfobj->datecreated;?><br>
   下載檔案:<a href="<?php echo BASEURL.'/files/videos/'.$swfobj->filename; ?>.ogv" target="_blank">ogv</a>/<a href="<?php echo BASEURL.'/files/videos/'.$swfobj->filename; ?>.mp4" target="_blank">mp4</a>
<?php
       
  }else{
   //embed播放
   if(file_exists('/webdata/web/video/files/videos/'.$swfobj->filename.".mp4")){
?>
<embed src="<?php echo BASEURL.'/files/videos/'.$swfobj->filename; ?>.mp4" width="<?php echo $swfobj->width;?>" height="<?php echo $swfobj->height;?>"></embed>
   抬頭:<?php echo $swfobj->title;?><br>
   內容:<?php echo $swfobj->description;?><br>
   上傳者:<?php echo $swfobj->username;?><br>
   觀看次數:<?php echo $swfobj->views;?><br>
   影片日期:<?php echo $swfobj->datecreated;?><br>

<?php

   }else{
?>
<embed src="<?php echo BASEURL.'/files/videos/'.$swfobj->filename; ?>.flv" width="<?php echo $swfobj->width;?>" height="<?php echo $swfobj->height;?>"></embed>
   抬頭:<?php echo $swfobj->title;?><br>
   內容:<?php echo $swfobj->description;?><br>
   上傳者:<?php echo $swfobj->username;?><br>
   觀看次數:<?php echo $swfobj->views;?><br>
   影片日期:<?php echo $swfobj->datecreated;?><br>
<!--
   <script type="text/javascript" src="<?php echo PLAYER_URL; ?>/es_player/jwplayer.js"></script>
<div class="player_container" id="container">
   <script type="text/javascript">
   jwplayer("container").setup({
   flashplayer: "<?php echo PLAYER_URL; ?>/es_player/player.swf",
   file: "<?php echo BASEURL."/files/videos/".$swfobj->filename; ?>.flv",
   height: "<?php echo $swfobj->height;?>",
   width: "<?php echo $swfobj->width;?>"
});
   </script>
-->
<?php   }  
  }
  
到這裡已經解決大部分問題,剩下一個問題,就是按下hq按鈕會沒有影片,個人覺得,hq按鈕已經不重要了,因為系統當初可能是為了讓使用者有高低解析度可以選擇而設定的,但因
swf的問題造成不支援flash的平台會不能播放,所以當採用html5後高低解析度問題已不必
要我採用的方是是到styles裡把它註解掉。
找到自己的styles(我用cbv2new所以是在/styles/cbv2new/layout),
編輯watch_video.html,找到 <span id="hq" class="hq_button_cont">這一行,約在第17行。
把它用<!--註解掉,一直到</a>-->(18-20行註解掉)
這樣就不會有hq按鈕給使用者按。
大致OK,這樣沒有炫麗的player,但可以做到完全跨平台。個人功力不足,只能做到此,暫時解決問題。

2012年5月12日

錄音效卡聲音軟體-Audio Recorder for Linux

在Linux下如何把音效卡播出的聲音錄下來,在國教院時看紹裳主任demo,這招在教學上會有用,查了一下資料,原來軟體叫做Audio Recorder,爬了一下文。參考網址:
http://www.omgubuntu.co.uk/2011/03/audio-recorder-for-linux-easily-record-audio-streams-to-mp3/

https://launchpad.net/~osmoma/+archive/audio-recorder
做法加入套件來源庫


ubuntu 12.04
deb http://ppa.launchpad.net/osmoma/audio-recorder/ubuntu precise main 
deb-src http://ppa.launchpad.net/osmoma/audio-recorder/ubuntu precise main 
 
還要加入金鑰1024R/5139BD61
再做安裝sudo apt-get updatesudo apt-get install audio-recorder


ubuntu 12.10 13.04
 
sudo apt-add-repository ppa:osmoma/audio-recorder
sudo apt-get update && sudo apt-get install audio-recorder 
 
 
安裝好後在影音中就會多一個audio-recorder程式,這個程式可以很容易的把音效卡播出的聲音錄下來,
看是要存成什麼檔案格式就自己決定了。 

一不小心就把它中文化好了
中文化檔案
下載後用最高權限放到 /usr/share/locale/zh_TW/LC_MESSAGES/中
就會有中文了。
 

2012年4月26日

moodle作業圖檔顯示縮圖


有老師提到moodle很好用,但如果在改作業時能有圖檔可以用縮圖來顯示,可以減少老師多按好多滑鼠,在需要的時候再按就好了。研究了一下moodle,只完成一半。
怕忘記先記下能做的事。

程式位置:moodle 1.9版的位是在moodle目錄中的mod目錄中有一個叫assignment資料夾,這裡是放作業的程式位置,其中type/upload是進階上傳的程式而type/uploadsingle是上傳一個檔案的位置(2.x版相同)。

修改過程:
1.修改mod/assignment/type/uploadsingle/assignment.class.php
 大概在27行
$ffurl = get_file_url("$filearea/$file");
之後加入程式碼:

//modify by estea

$bfile=array_pop(explode (".", $file));
            $bfile=strtolower($bfile);
            if(strtolower($bfile=="jpg" or $bfile=="png" or $bfile=="gif" or $bfile=="svg")){
                $showimg="<img src='".$ffurl."' alt='picture' width='50'> ";
                }

把下一行
                   $output = '<img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.
                            '<a href="'.$ffurl.'" >'.$file.'</a><br />';
改成
                   $output = '<img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.
                            '<a href="'.$ffurl.'" >'.$showimg.$file.'</a><br />';
再後面再加上
//###modify end
這樣就上傳單檔時如果附檔名是jpg gif png svg的就會用縮圖顯示,其中svg是特別加上去的如果瀏覽器不支援html5就有可能會顯示不出來。

2. 修改mod/assignment/type/upload/assignment.class.php
 大約在310行找到
$ffurl = get_file_url("$filearea/$file");
在下面增加
            ####modify  by estea####
            $bfile=array_pop(explode (".", $file));
            $bfile=strtolower($bfile);
            if(strtolower($bfile=="jpg" or $bfile=="png" or $bfile=="gif" or $bfile=="svg")){
                $showimg="<img src='".$ffurl."' alt='picture' width='50'> ";
                }else{$showimg="";}

                   $output .= '<a href="'.$ffurl.'" ><img class="icon" src="'.$CFG->pixpath.'/f/'.$icon.'" alt="'.$icon.'" />'.$file.'</a>&nbsp;';
改成
                   $output .= '<a href="'.$ffurl.'" ><img class="icon" src="'.$CFG->pixpath.'/f/'.$icon.'" alt="'.$icon.'" />'.$showimg.$file.'</a>&nbsp;
在後面增加一行
//###modify end
這樣進階上傳就會有縮圖出現

而moodle 2.x版程式語法複雜多了,在不能力不足只找到一個可以改的地方。
修改mod/assignment/type/uploadsingle/assignment.class.php檔案
大約在45行找到
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment/submission/'.$submission->id.'/'.$filename);
在下面增加
            //###modify estea 101/04/26
            $bfile=array_pop(explode (".", $filename));
            $bfile=strtolower($bfile);
            if(strtolower($bfile=="jpg" or $bfile=="png" or $bfile=="svg" or $bfile=="svg")){
                $showimg="<img src='".$path."'alt='picture' width='50'> ";
                }

                   $output .= '<a href="'.$path.'" ><img class="icon" src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" alt="'.$mimetype.'" />'.s($filename).'</a><br />';
改為
                   $output .= '<a href="'.$path.'" ><img class="icon" src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" alt="'.$mimetype.'" />'.$showimg.s($filename).'</a><br />';
 再增加一行
            //### modify end
這樣在評分上傳單一檔案時就會有縮圖。
不想改想直接用改好的,檔案放在討論區
https://groups.google.com/forum/?hl=zh-TW&fromgroups#!topic/free_tpc/0XFRCgoX8Rs

2012年4月20日

ezgo網路硬碟小程式

在ezgo下常有人無法使用網路硬碟,這幾天稍微亂想了一下,把要用文字介面的指令,做了一些調整,這樣可以避掉剛開始使用的初學者的困擾。說穿了就是一個指令而已。
 nautilus smb://IP
這個小程式幫忙做了桌面啟動圖示。
使用者要自行在smbserver.txt中輸入網路硬碟伺服器IP。
然後執行inst_samba_content.sh安裝程式。
程式下載位置:
https://groups.google.com/group/free_tpc/attach/d858daeb9fc42274/samba.zip?part=4&authuser=0

2012年4月4日

rsync備份資料

一直想做卻沒空寫記錄,今天把它做個記錄。
linux下一直有很強的備份工具rsync。在現今nas server不算是難事時,rsync可以快速的幫我們做到異地備援的方式。

在ubuntu下只要一條指令sudo apt-get install rsync就安裝好了
 到google中搜尋rsync教學,就有一堆文章。

參數說明
rsync --help
man rsync


我有一個想法是,建三個資料夾,在備份時先把第二個來rsync到第三個資料夾,再把第一個資料夾rsync到第二個,最後再把想備份的rsync到第一個資料夾,這樣就會有三個時間的備分檔。當我的備份資料夾是用nas server的nft或是iscsi掛起來,這樣就是異地備援了,加上rsync有所謂增量備援方式,可以花最少時間在做備分動作。

我寫了一個myrsync.sh內容大致如下(做好記得chmod +x變成可執行)
 #!/bin/sh
date >b.txt
/usr/bin/rsync-avzP --delete  /buckup/b02/ /buckup/b03
/usr/bin/rsync-avzP --delete  /buckup/b01/ /buckup/b02
/etc/init.d/mysql stop
 /usr/bin/rsync -avzP --delete /var/lib/mysql /buckup/b01

/usr/bin/rsync -avzP --delete /webdata/moodledata /buckup/b01
/usr/bin/rsync -avzP --delete /webdata/web /buckup/b01
/etc/init.d/mysql start

我試了一下第一次份3.3G也花不到2分鐘。--delete就是備份有異動的檔案,vP可以不用因為那是顯示過程和進度,如果是在背景做也看不到還會更快些,若是除錯則是有用的。a是檔案模式,z是壓縮資料。

接下來就是把這個sh用crontab中(每週備份一次)
vim /etc/crontab

0 1 * * 0 root /home/ezgo/myrsync.sh

這樣就會有三週的備份資料,如果想備4週就自己加吧。
最後提醒一下這是檔案的備份,別忘了還有資料庫!以mysql為例,資料夾位置是在/var/lib/mysql/,在備份前要停止mysql(/etc/init.d/mysql stop),再rsync資料夾,做完後就重啟mysql (/etc/init.d/mysql start)

2012年4月1日

dns ipv6設定備忘錄

網路上有很多文章都在寫dns的正解與反解,卻是很多人都看不懂,或者做不出來。自己也摸索很久,把一些自己認為該記的記下來和自己曾犯的錯誤,以免日後自己再次犯錯。
1.正解:從英文->數字
2.反解:從數字->英文

在linux會用到的指令
nslookup
dig
ifconfig

你要弄懂的
1.ip的意思:在ipv4時它是由4組數字組成,每個數字不會超過255,在ipv6時則變成網段+mac,每組由4個文字(可以是數字和英文),中間用:分開
2.你自己管的網段在哪裡:以目前ipv4來說大校多數是一個C網段,也就是說前3組數字是你不能動的,第4組才是你可以設定的,而ipv6時則是上面給你的網段是不能動的,後面則是接mac或是你要自己設定(現在好像是L3 switch會自動發ipv6的ip,而發的原則多數是用網段+mac)

例如:我現在這台電腦的ipv4和ipv6是什麼,可以用ifconfig來看
eth0      Link encap:Ethernet  HWaddr f2:2c:08:0a:b7:83 
          inet addr:163.20.108.6  Bcast:163.20.108.255  Mask:255.255.255.0
          inet6 addr: 2001:288:2263:5:f02c:8ff:fe0a:b783/64 Scope:Global
          inet6 addr: fe80::f02c:8ff:fe0a:b783/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21974328 errors:0 dropped:513198 overruns:0 frame:0
          TX packets:27783475 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:10528998034 (10.5 GB)  TX bytes:39513685412 (39.5 GB)
          f2:2c:08:0a:b7:83是網卡的mac。163.20.108.6是ipv4的ip,2001:288:2263:5:f02c:8ff:fe0a:b783是ipv6,你有沒有注意到ipv6的後半段是mac。

接下來要知道要設定dns要用到哪些東西?
1.安裝套件,在ubuntu指令是
sudo apt-get update
sudo apt-get install bind9  

2.要設定哪些檔案,以ubuntu而言,在/etc下有一個資料夾bind9,這裡管理所有設定。很多文件都會叫你去設定named.conf,然而你打開文件卻只看到短短幾個字。

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.logging";
很多人到這裡就不知所錯了,稍微注意一下,有沒有看到include這幾個字?會寫程式的人就知道原來它去呼叫幾個檔案(/etc/bind/named.conf.options,/etc/bind/named.conf.local,/etc/bind/named.conf.default-zones,/etc/bind/named.conf.logging),再仔細看你會用到的是/etc/bind/named.conf.local這個檔案,如果你不喜歡它可以改,這也就是為什麼有人用他自己方法設定也可以,因為在這裡改了。

接下來 /etc/bind/named.conf.local這個檔案要記些什麼:
1.檔然是zone,就是你的整個dns記錄表,從最上層到自這一層
2.localhost(這個地方有時可以省略,因為系統常會自動幫你設定,因為localhost就是127.0.0.1 和::1 我看過有些系統是安裝起來時就被include進來)
3.你的正解設定和反解設定。
/etc/bind/named.conf.local裡我記下重要地方,多數設定可以抄網路文章

//163.20.108網段的反解設定
zone "108.20.163.in-addr.arpa" {
     type master;
     file "/etc/bind/zones/rev.108.20.163.in-addr.arpa";
};

//wdps.ntpc.edu.tw網段正解設定
zone "wdps.ntpc.edu.tw" {
        type master;
        file "/etc/bind/zones/wdps.ntpc.edu.tw.db";
        };

//公文管理轉址新北市公文管理設定
zone "doc-manage.tpc.gov.tw" {
    type forward;
    forwarders { 203.72.153.5; 172.18.1.1; };
};

// ::1 的反解檔
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."{
     type master;
     file "/etc/bind/zones/localhost.rev";
};


//2001:288:2263/48
//  ipv6的反解檔
zone "3.6.2.2.8.8.2.0.1.0.0.2.ip6.arpa" {
     type master;
     file "/etc/bind/zones/200102882263.rev";
};
比較討厭的是反解,它不是直接用數字而是要把數字相反過來,例如163.20.108的反解要寫成108.20.163.in-addr.arpa,而ipv6就更難懂了,但做法一樣把網段反過來,2001:288:2263就變成了3.6.2.2.8.8.2.0.1.0.0.2.ip6.arpa
再來有沒有看到每一段都有一個file ".......";這就是告訴電腦某一個網段設定你去找file "..."中的檔案。
所以你把/etc/bind/named.conf.local設定好了後還要去建構裡面的每個file ""中的檔案。

以正解為例,我的是/etc/bind/zones/wdps.ntpc.edu.tw.db,裡面內容大致是
@      IN      SOA     ntpdc.wdps.ntpc.edu.tw. u10.wdps.ntpc.edu.tw. (
;// Do not modify the following lines!
                                                        2006081401
                                                        28800
                                                        3600
                                                        604800
                                                        38400
 )

@      IN      NS              ntpdc.wdps.ntpc.edu.tw.
mail.wdps.ntpc.edu.tw.      IN      MX     40       mail.wdps.ntpc.edu.tw.
wdps.ntpc.edu.tw.    IN    MX    50    mail.wdps.ntpc.edu.tw.
ntpdc              IN      A       163.20.108.1
media        IN    A    163.20.108.6
...
紅色字的地方要注意,這是你向上層註冊時用的主機名稱,很多單位在經歷多年多任資訊組,這個名稱都不見了,文件也未留下,個人遇過,都設定沒問題,但解析起來就是怪怪的,因為當上層要問你這層時會用它的設定,也就是紅色字那台,而你又沒設定這一台,解析起來就怪怪的。
A是ipv4主機
AAAA是ipv6主機
mx是郵件
CNAME是別名


反解設定
@ IN SOA ntpdc.wdps.ntpc.edu.tw. sysadm.dns.wdps.ntpc.edu.tw. (
                        2011040701;
                        28800;
                        604800;
                        604800;
                        86400
)
@                    IN    NS     ntpdc.wdps.ntpc.edu.tw.
1        IN      PTR      ntpdc.wdps.ntpc.edu.tw.
......
反解就是把ip對應英文注意後面最好有.結束。

ipv6反解
$ORIGIN 3.6.2.2.8.8.2.0.1.0.0.2.ip6.arpa.
@ IN SOA dns.wdps.ntpc.edu.tw. root.dns.wdps.ntpc.edu.tw. (
                        2006081401;
                        28800;
                        604800;
                        604800;
                        86400;
)

@                    IN    NS     ntpdc.wdps.ntpc.edu.tw.
6.d.7.5.a.2.e.f.f.f.9.2.c.0.2.0.5.0.0.0.3.6.2.2.8.8.2.0.1.0.0.2.ip6.arpa.    IN    PTR    www.wdps.ntpc.edu.tw.
......

$ORIGIN 3.6.2.2.8.8.2.0.1.0.0.2.ip6.arpa.這一段是什麼,紅色就是你的網段反過來寫的。
我怎麼知道是"6.d.7.5.a.2.e.f.f.f.9.2.c.0.2.0.5.0.0.0.3.6.2.2.8.8.2.0.1.0.0.2.ip6.arpa."這一段呢?要慢慢反寫也可以,我發現一個方法可以快速知道,就是先把正解寫好,用nslookup指令查詢
nslookup
>set type=aaaa
>www.wdps.ntpc.edu.tw
 這個時候電腦會告訴你www.wdps.ntpc.edu.tw的ipv6位址是2001:288:2263:5:20c:29ff:fe2a:57d6,你再問電腦2001:288:2263:5:20c:29ff:fe2a:57d6是誰
>2001:288:2263:5:20c:29ff:fe2a:57d6
電腦會回答你"6.d.7.5.a.2.e.f.f.f.9.2.c.0.2.0.5.0.0.0.3.6.2.2.8.8.2.0.1.0.0.2.ip6.arpa"查不到,而這一段就是你要留下來的。

2012年3月26日

Apache 內建的Web壓力測試工具

原來apache也有內建的壓力測試軟體,資料來源:
http://mepopedia.com/forum/read.php?135,416,416
使用指令ab或ab2即可
指令示範:
ab -k -c 1000 -n 1000 網址
 
參數說明: 
-k 是 HTTP 2.0 的 Keep Alive,在短時間的測試下 connection 有無 Keep Alive 差別不是很大。
-c 是指 concurrent,顧名思義其後的數字是「同時連線」的 connection 數。
-n 是指整個 test 的 request number,此處設為和 -c 一樣是指同時1000個人連線測完一次就中止。
 

2012年2月22日

ezgo上使用網路芳鄰

在ezgo上使用者要讀取網路芳資料,個人做法如下:
指令:
nautilus smb://IP/homes

說明:
nautilus是ubuntu中檔案總管指令
smb://IP/homes 是一串網址,以smb://做為通信協定,IP則是分享網路芳鄰那台電腦的IP也可以是domain,至於homes是網芳分享的名稱,linux個人資料夾通常都是用homes來命名。

如果要在桌面建立一個圖示給使用者連,則可以這樣做。
 1.在桌面上按下右鍵/建立啟動程式

2.輸入指令nautilus smb://IP



 至於開機時自動開啟網路芳鄰的做法,是[系統/偏好設定/啟始應用程式]

2012年1月28日

Scratch在Ubuntu上使用WeDo感應元件

在Ubutnu上要用Wedo感應元件,之前一直找不到驅動方式,這幾天再找了一下,終於看到文章。網址:
http://scratch.mit.edu/forums/viewtopic.php?id=70644
1.先下載Scratch-16.xo放在家目錄,下載網址:http://web.media.mit.edu/~jmaloney/scratch-xo/Scratch-16.xo
2.把它解壓縮,會有一個Scratch.activity資料夾
3.進入終端機,執行指令
cd Scratch.activity
sudo cp WeDoPlugin-disabled /usr/lib/scratch/Plugins/WeDoPlugin
sudo ./installWeDoRules.sh

指令說明:
cd Scratch.activity  ##進入目錄
sudo cp WeDoPlugin-disabled /usr/lib/scratch/Plugins/WeDoPlugin   ##用最高權限把WeDoPlugin-disabled拷貝到/usr/lib/scratch/Plugins/WeDoPlugin
sudo ./installWeDoRules.sh   ##執行安裝指令