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年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月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年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   ##執行安裝指令