今天在海賊王的卡通,看到其中的一句對白,覺得超經典的!
人何時才算死亡?
不是子彈經過心臟的時候. 不是群醫束手無策的時候,
.......而是被世人遺忘的時候.
熱門文章
-
之前一直没有較徹底的方式將原本在mysql中Latin1的資料內容轉成utf8, 後來終於找到了解決方案,轉貼於此,以免忘記,感謝原作者(不知何許人)的分享. 原文出自: http://www.j2h.tw/bbs/bbs16/150.html 從MySQL4.0升級至...
2011年4月25日 星期一
查詢Ubuntu的版本的几個方法.
收集一些查詢版本的方法:
uname -a這是查linux版本的指令.它會回覆如下的訊息:
Linux bcsopen1 2.6.35-28-server #50-Ubuntu SMP Fri Mar 18 18:59:25 UTC 2011 x86_64 GNU/Linux
lsb_release -a這是查LSB模組的方法,但它會帶出ubuntu的版本資訊如下:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick
cat /etc/issue
這是查ubuntu版本的簡易法
Ubuntu 10.10 \n \l
2011年4月23日 星期六
Ubuntu 10.04 視窗最大化/最小化/關閉 按鈕位置修改為右上角(原本預設為左上角)
Ubuntu 10.04 視窗最大化/最小化/關閉 按鈕位置修改:
Ubuntu 10.04 視窗最大化/最小化/關閉 按鈕位置修改為右上角(原本預設為左上角)
- 按下Alt + F2
- 輸入 gconf-editor 並按執行.
- 找尋:/apps/metacity/general/button_layout
- 修改設定值 key value (預設為close,minimize,maximize:)改為 menu:minimize,maximize,close
tar + 增量
tar + 增量為了增量備份利用 tar 的 -g參數
tar -cf backup_`date +%F`.tar -g backup_`date +%F`.snapshot /path/source/
首次執行時,會將source這目錄(即整個source裡的資料)作成tarball檔,
並在daily-snapshot-file檔案裡記錄時間點,
第二次執行時,根據daily-snapshot-file裡的時間點,與在現執行時的時間點,
檢查是否有變動的資料,有更新便只把更新檔案的作成tarball檔,並更新daily-snapshot-file裡的時間點,
無更新時也會有tarball檔產生,但裡面無資料,而daily-snapshot-file的時間點也會作變動。
假如source裡還有目錄的話,它是同理的。
並在daily-snapshot-file檔案裡記錄時間點,
第二次執行時,根據daily-snapshot-file裡的時間點,與在現執行時的時間點,
檢查是否有變動的資料,有更新便只把更新檔案的作成tarball檔,並更新daily-snapshot-file裡的時間點,
無更新時也會有tarball檔產生,但裡面無資料,而daily-snapshot-file的時間點也會作變動。
假如source裡還有目錄的話,它是同理的。
如果持續作這動作,可能要考慮寫個script來針對snapshot這檔作置換一下,
因為每執行一次,照著`date +%F`的話,時間點會從新計算,
範例:
cp backup_20051221.snapshot backup_20051221.snapshot.old
tar -cf backup_20051222.tar -g backup_20051221.snapshot /path/source
mv backup_20051221.snapshot backup_20051222.snapshot
使用 find 來作輔助找出昨天到現在時間裡的檔案作成 tarball
tar -cf data.tar `find /path/* -mtime -1 ! -type d -print`
-mtime -1
-1表示前一天。
! -type d
或者是
-type f
如果沒加這個參數,它會把/path/底下的目錄的裡的全部資料(包含舊的)都備出來
-print
表示標準輸出,每個檔有路徑且一行一行列出。但路徑要看find指令後面接什麼路徑,
如果為./path,輸出的路徑就成./xxx/data.txt,如果為/path/*,輸出的路徑就成/path/data.txt,
並注意 find後面接的路徑,如果為/path/,則交給tar後,產生的檔案會與為/path/*產生的不同,
而/path/*的才是正確的,/path/所產生的tarball會多出一倍的容量。
-1表示前一天。
! -type d
或者是
-type f
如果沒加這個參數,它會把/path/底下的目錄的裡的全部資料(包含舊的)都備出來
表示標準輸出,每個檔有路徑且一行一行列出。但路徑要看find指令後面接什麼路徑,
如果為./path,輸出的路徑就成./xxx/data.txt,如果為/path/*,輸出的路徑就成/path/data.txt,
並注意 find後面接的路徑,如果為/path/,則交給tar後,產生的檔案會與為/path/*產生的不同,
而/path/*的才是正確的,/path/所產生的tarball會多出一倍的容量。
比較兩種方式,當搭配了crontab時,
使用 find的方式,需要去計算在crontab裡排程的時間與-mtime參數的時間之間的差距,
假如排程每七日執行一次,而-mtime就要設定為-8。
使用 tar -g的方式,就不用去管時間差距,到時排程一執行,它會自動去讀daily-snapshot-file裡與現在的時間差。
其它範例
使用 find的方式,需要去計算在crontab裡排程的時間與-mtime參數的時間之間的差距,
假如排程每七日執行一次,而-mtime就要設定為-8。
使用 tar -g的方式,就不用去管時間差距,到時排程一執行,它會自動去讀daily-snapshot-file裡與現在的時間差。
其它範例
比這時間還新的檔案做 tar,不過用這方法不準,會參雜其它日期的
tar -N "20050909" -cf data.tar /path/
依date參數%Y/%m/%d產生出來的現在時間,的四天前做tar
如果現在時間為2005-12-04,要tar作2005-10-22天後的日期,"4 days ago"改為"43 days ago"
tar -jcvf /path/aletw.bz2 --newer-mtime `date -d "4 days ago" +%Y/%m/%d` /path
2008/01/22 單純使用 tar 依日期作差異的話它會把空目錄也 tar 進來,所以還是搭配 find 吧
find 目錄 -mtime -1 ! -type d -print > include.txt
tar zcvf xxx.tar.gz -T include.txt
Read more: http://ssorc.tw/rewrite.php/read-261.html#ixzz1KJb4lyUc
fw: 談談 ufw
談談 ufw
由 wilun 在 四, 12/02/2010 - 18:20 發表
Ufw
目錄 [隱藏]
1 前言
2 命令語法
2.1 啟動 ufw 服務
2.2 關閉 ufw 服務
2.3 阻擋外部進來的服務
2.4 開啟預設提供服務的Port
2.5 狀態查詢
3 設定檔
4 外部連結
前言
目錄 [隱藏]
1 前言
2 命令語法
2.1 啟動 ufw 服務
2.2 關閉 ufw 服務
2.3 阻擋外部進來的服務
2.4 開啟預設提供服務的Port
2.5 狀態查詢
3 設定檔
4 外部連結
前言
ufw 是一個 iptables 的前端設定程式,其名稱為 Uncomplicated Firewall 的簡稱,意謂著「不複雜的防火牆」設定,它的製作目的在於讓一般人很容易的設定 iptables。
要強調的是 ufw 只是一個簡單的 iptables 前端設定工具,無法完全取代 iptables 的所有設定,若想做更複雜的 firewall 設定,還是得回到 iptables 層面。
命令語法
啟動 ufw 服務
# sudo ufw enable
關閉 ufw 服務
# sudo ufw disable
阻擋外部進來的服務
# sudo ufw default deny
開啟預設提供服務的Port
# sudo ufw allow 20 //ftp-data
# sudo ufw allow 21 //ftp
# sudo ufw allow 22 //ssh
# sudo ufw allow 80 //www
...
狀態查詢
# sudo ufw status
設定檔
# sudo ufw enable
關閉 ufw 服務
# sudo ufw disable
阻擋外部進來的服務
# sudo ufw default deny
開啟預設提供服務的Port
# sudo ufw allow 20 //ftp-data
# sudo ufw allow 21 //ftp
# sudo ufw allow 22 //ssh
# sudo ufw allow 80 //www
...
狀態查詢
# sudo ufw status
設定檔
查看 ufw 是否啟動
# /etc/ufw/ufw.conf
#
# set to yes to start on boot
ENABLED=yes /* yes 為開啟,反之 no 則未開啟 */
ufw 規則儲存
/var/lib/ufw/user.rules
# /etc/ufw/ufw.conf
#
# set to yes to start on boot
ENABLED=yes /* yes 為開啟,反之 no 則未開啟 */
ufw 規則儲存
/var/lib/ufw/user.rules
網站來源http://wiki.ubuntu-tw.org/index.php?title=Ufw#.E9.98.BB.E6.93.8B.E5.A4.96.E9.83.A8.E9.80.B2.E4.BE.86.E7.9A.84.E6.9C.8D.E5.8B.99
CreMaker 的生活雜記:談談 ufw
http://cm-life.blogspot.com/2008/05/ufw.html
http://cm-life.blogspot.com/2008/05/ufw.html
有使用過 iptables 防火牆的朋友,相信都會認為這不是件 "好玩" 的事。在 ubuntu 8.04 中一個新的特性就是加入了 ufw 這個東東,它可以簡化 iptables 的設定。
ufw 是 Uncomplicated Firewall 的簡稱,意謂著 "不複雜的防火牆" 設定,ufw 是一個前端程式,骨子里仍然是 iptables,所以使用 ufw 就可以讓我們很容易的設定 iptables。
要強調的是 ufw 只是一個簡單的 iptables 前端定工具,無法完全取代 iptables 的有設定,所以若想做進一步複雜的 firewall 設定,還是得回到 iptables 層面。
另外,ufw 主要是針對由外網連至內部的設定,所以它不會影響你電腦連至外部的任何連結。
個人以為 ufw 適合以下兩個場合使用:
1. 簡單的防火牆設定
2. 個人使用的 desktop 設定
2. 個人使用的 desktop 設定
其實,ufw 的設定真的很簡單,看一下 man ufw 就大概了解其用法了,以下簡單的說明:
● ufw 的設定檔
在 /etc/ufw/ 這個目錄下有著 ufw 的設定檔,如 before.rules、after.rules、sysctl.conf、ufw.conf,另外還有 for ip6 的 before6.rule 及 after6.rules
before.rules、after.rules 及 sysctl.conf 一般照內定的值即可,不用特殊的設定,其詳細內容請自行參照 man ufw 中相關說明。
而 ufw.conf 是用來啟動或是關閉 ufw 之用的,里面就只有這樣的的內容:
# /etc/ufw/ufw.conf
#
#
# set to yes to start on boot
ENABLED=yes
ENABLED=yes
當我們使用 sudo ufw enable,這個檔案就會設為 ENABLE=yes,反之若是執行 sudo ufw disable 的話,這個檔案內容就是 ENABLE=no 了。
另外一個重要的檔案就是 /var/lib/ufw/user.rules 這個檔案了,我們使用 ufw 設定的防火牆內容都是放在這個檔案內(以下會說明)。
● ufw 的參數
不妨自行使用 ufw --help 來看看有那些參數可使用(如附圖一)。
附圖一
由於 ufw 位於 /usr/sbin/ 這個目錄之下,所以要設定時需使用 sudo ufw [參數] 這樣的語法。
介紹幾個重要的參數:
開啟(enable)或停止(disable) ufw
# sudo ufw enable[disable]
# sudo ufw enable[disable]
內定是允許或是禁止
# sudo default allow[deny]
# sudo default allow[deny]
個人建議先使用 sudo ufw default deny 將所有的由外連結至內的連結通通關掉,再使用 ufw allow 開放想開放的內容。
● 設定想開放的 protocol
格式約有以下幾種:
sudo ufw allow [開放的 protocal(port)]
ufw 會去參考 /etc/services 這個檔案的設定,如 smtp 的代號(port)是 25,www 的代號是 80,如果在 /etc/services 中無相關關設定,那麼可用代號(port no)來替代,如 vnc 的代號是 5900,在 /etc/services 中沒設定,我們可用:
# sudo ufw allow 5900
在 protocal 後可加上 tcp 或是 udp,如:
# sudo ufw allow 25/tcp
我們也可指定那些 ip 可連到本機的某個 protocol(port),如
sudo ufw alow proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
● 範例
若我們想開放本機的 80 及 53 給外部使用,不妨照以下設定:
為方便設定,少打一些 "ufw",所以先切換到 root
# sudo su
# sudo su
# ufw enable
# ufw default deny
# ufw allow 80
# ufw allow 53
# ufw default deny
# ufw allow 80
# ufw allow 53
顯示 ufw 設定(附圖二)
# ufw status
# ufw status
附圖二
● 刪除某一個 ufw 設定規則
ufw 雖然提供一個 delete 用來刪除某一項 ufw 設定規則,但個人覺得不是很好用,其實這些設定規則都放在 /var/lib/ufw/user.rules 這個檔案之中,所以直接改這個檔案是不是比較有效率呢?
修改後記得重新執行:
# sudo su
# ufw disable
# ufw default deny
# ufw enable
# ufw disable
# ufw default deny
# ufw enable
2011年2月23日 星期三
在Innovator的流程表單上加一個檢視Sign-off的頁箋
標準系統中,若是要檢視流程簽審的記錄,通常都必需自My InBasket中或該流程表單中先去檢視該表單的Workflow,然後在檢視Workflow的畫面上點擊View Sign-Off才能看到該記錄.
我自Innovator的Demo DB看到一個作法,它是將Sign-Off作成一個頁箋,放在流程表單中,使得檢視簽審記錄變得比較方便與快速,如圖:

在這兒將其作法貼出來供大家參考!
1) 建立一個Form,名為"Workflow Signoffs",並在其中加入二個HTML物件(calculate_html, result_iframe)
calculate_html的html內容如下(它的Field Physical: X=2,Y=0):
2) 在您的流程表單的ItemType上增加一個no related的Relationship,例如:名為wf1_signoff.(唯一別重複)
3) 編輯上個步驟建立的relationshiptype : wf1_signoff,並在其Relationship View頁箋中新增一條,Name欄指定world這個identity, Form欄指定步驟1所建立的workflow signoff.(如下圖),完成後, 存檔即可!
我自Innovator的Demo DB看到一個作法,它是將Sign-Off作成一個頁箋,放在流程表單中,使得檢視簽審記錄變得比較方便與快速,如圖:

在這兒將其作法貼出來供大家參考!
1) 建立一個Form,名為"Workflow Signoffs",並在其中加入二個HTML物件(calculate_html, result_iframe)
calculate_html的html內容如下(它的Field Physical: X=2,Y=0):
<script>
var Core_reportHTML = "<table/>";
function Core_loadProcessReport()
{
if (!document.item || !document.item.xml) return;
var reportHTML;
if (document.item.getAttribute("action")=="add")
{
reportHTML = top.aras.getResource("", "imports_core.no_workflow_signoffs_exist");
}
else
{
var q = new top.Item("tmp", "tmp");
q.loadAML("<Item type='Workflow' action='get' select='related_id(*)'>"+
"<source_id>"+document.item.getAttribute("id")+"</source_id>"+
"<related_id condition='is not null'/>"+
"</Item>");
q = q.apply();
if (q.getItemCount()==1)
{
var processItem = q.getItemByIndex(0).node.selectSingleNode("related_id/Item");
processItem.setAttribute("item_id_for_vote_now_link", document.item.getAttribute("id"));
var report = top.aras.getItemByKeyedName("Report", "Workflow Process History");
reportHTML = top.aras.runClientReport(report, "", processItem);
reportHTML = reportHTML.replace(/width=""/g, "");
reportHTML = reportHTML.replace(/height=""/g, "");
}
else
{
reportHTML = q.getErrorDetail() +"<br>"+ q.getErrorString() +"<br>"+ q.getErrorSource();
}
}
Core_reportHTML = reportHTML;
var ifr = document.getElementById("result_iframe_frame");
var d = ifr.contentWindow.document.open();
d.write(reportHTML);
d.close();
ifr.style.visibility = "visible";
}
window.attachEvent("onload", Core_loadProcessReport);
window.attachEvent("onload", expression_WorkflowSignoffs_setExpression);
window.attachEvent("onresize", expression_WorkflowSignoffs_setExpression);
function expression_WorkflowSignoffs_setExpression()
{
document.body.scroll = "no";
var field = document.getElementById('result_iframe_frame');
var isIE7 = (top.aras.Browser.version == 7);
field.width = isIE7? document.body.clientWidth+16 : document.body.clientWidth;
field.height = document.body.clientHeight-25;
}
</script>
<button type="button" onclick="top.aras.saveString2File(Core_reportHTML, 'export2Excel');" style="background-color:white;border:none;cursor:hand;">
<img src="../cbin/icons/16x16_icon_msExcel.gif" border='0' TITLE = "Export To Excel">
</button>
<button type="button" onclick="top.aras.saveString2File(Core_reportHTML, 'export2Word');" style="background-color:white;border:none;cursor:hand;">
<img src="../cbin/icons/16x16_icon_msWord.gif" border='0' TITLE = "Export To Word">
</button>result_iframe的html內容如下(它的Field Physical: X=0,Y=25): <iframe id="result_iframe_frame" frameborder="0"></iframe>2) 在您的流程表單的ItemType上增加一個no related的Relationship,例如:名為wf1_signoff.(唯一別重複)
3) 編輯上個步驟建立的relationshiptype : wf1_signoff,並在其Relationship View頁箋中新增一條,Name欄指定world這個identity, Form欄指定步驟1所建立的workflow signoff.(如下圖),完成後, 存檔即可!
2011年1月28日 星期五
Innovator AML datetime format.
Aras Innovator AML 正確的日期格式是 yyyy-mm-ddThh24:mi:ss,範例:2011- 01-28T16:37:30,中間有個 T 是關鍵字不能省略。
感謝Scott的指導!
2011年1月27日 星期四
Aras Innovator的Batch loader 匯入實體檔案
我實際試了一個檔案,是成功的!! 不但文件與File的都建立起來,連實體檔案也上傳完成!
AML如下:
-->
我實際試了一個檔案,是成功的!! 不但文件與File的都建立起來,連實體檔案也上傳完成!
AML如下:<!--
<Item type='Document' action='add'><item_number>@1</item_number> <name>@2</name><Relationships><Item type="Document File" action="add"><related_id><Item type="File" action="add"><actual_filename>@3</actual_filename> <filename>@4</filename><Relationships><Item type="Located" action="add"><related_id>67BBB9204FE84A8981ED8313049BA0 6C</related_id> </Item></Relationships></Item></related_id></Item></Relationships></Item>
doc_id doc_name act_fileName file_name我的匯入文字檔內容如下:
DOC-001 SampleDoc d:\test_import_pool\samplefile01.pdf samplefile01.pdf
我的匯入文字檔內容如下表.
重點有二個部份,一為@3為Actual file name,這個欄位一定要有,它是指檔案實際目錄所在,與檔名, 所以內容應該類似"D:\Doc\sample.file. pdf", 而@4則是檔名,需要再寫一次檔名(ex: "sample.file.pdf"
第二部份是Vault,也就是located,id不用改, 因為都是for Default Vault.所以related_id照舊,
web service在安裝Dropbox後,就不work了!?
今天公司的網頁主機,突然被告知不work了! 我測試內部連http://localhost是正常的,但是自其他電腦連入卻怎樣都連不到,網路部份也是正常,查看log發現外部連此Web網址時,壓根無任何訊息,這表示外部連80port時,根本未觸動到Web Service,這讓我以為firewell被更動到了!上去檢查一下設定是正常的,但是卻看到另一個訊息,那就是目前的active connetcion清單有一項是port 80 Dropbox connecting. 問題找到了,原來我昨天安裝的Dropbox竟然會佔用port 80! 把Dropbox結束掉,一切都回復正常了!
看Dropbox論譠上,官方回應dropbox會使用443與80port,這點倒是要注意,避免裝Dropbox在Web Server上,以免影響正常服務. 日後再找找看是否有解法,或是Dropbox是否有新版來修改這部份的設定!
看Dropbox論譠上,官方回應dropbox會使用443與80port,這點倒是要注意,避免裝Dropbox在Web Server上,以免影響正常服務. 日後再找找看是否有解法,或是Dropbox是否有新版來修改這部份的設定!
2011年1月22日 星期六
MySQL 資料庫中文亂碼的轉碼解決方案
之前一直没有較徹底的方式將原本在mysql中Latin1的資料內容轉成utf8, 後來終於找到了解決方案,轉貼於此,以免忘記,感謝原作者(不知何許人)的分享.
原文出自: http://www.j2h.tw/bbs/bbs16/150.html
從MySQL4.0升級至5.0。
首先把資料dump出來 。由於先前用4.0時我的資料是存成latin1,不管是Big5或是wordpress的UTF-8存進去後都是變成lantin1,所以dump出來後要用iconf或piconf把他轉成UTF-8,記得dump出來時要加上–default-character-set=latin1
如果原先是Big5的資料,像我的Coppermine Photo Gallery,dump出來後就直接把Big5轉成UTF-8即可
#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql
#piconv -f big5 -t utf8 output.sql >utf8.sql
如果原先是UTF-8的資料,像是wordpress,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8
#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql
#piconv -f utf8 -t big5 output.sql > big5.sql
#piconv -f big5 -t utf8 big5.sql >utf8.sql
接著MySQL5.0灌好後,MySQL的my.cnf設定檔內要加入以下設定
但也有看到資料說[mysqld]那邊加上 default-character-set=utf8跟 default-collation=utf8_general_ci後,一些舊的使用Big5編碼的php程式,又沒有加入連資料庫時指定的編碼方式的相關code的話,那些程式就會爛掉,所以目前我是沒有加上那兩行。
接著建立空的資料庫準備把dump出來的資料import進去,SQL語法應該類似下面這樣,要加上DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
我是用phpMyAdmin建立資料庫的,建立時”校對”要選utf8_general_ci
再來就是把剛剛dump出來後的sql檔在import進去了,這裡有兩點要注意的。
1.剛剛dump出來的sql檔如果原先是Big5里面會有一些像是許功蓋這些字後面會多了一個”\“,記得用文字編輯器把他消掉2.import進去時記得還要先修改一下dump出來的sql檔,在最前面加上
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
再來把每個資料表後面的
TYPE=MyISAM;
改成
ENGINE=MyISAM DEFAULT CHARSET=utf8;
都改好後就可以把他import進去了
#mysql -u帳號 -p 資料庫 < utf8.sql
不過以上實在有點麻煩,所以我把多餘的”/“消掉後,就直接用phpMyAdmin把他import進去了,import時記得文字編碼檔案要選utf8即可
順便記一下寫php時如是配合UTF-8的資料庫的話該注意,在真正送出query前要先加入以下三行
mysql_query(”SET NAMES ‘utf8‘”);
mysql_query(”SET CHARACTER_SET_CLIENT=utf8“);
mysql_query(”SET CHARACTER_SET_RESULTS=utf8“);
檢查語系的SQL語法
show variables like “%character%”;
原文出自: http://www.j2h.tw/bbs/bbs16/150.html
從MySQL4.0升級至5.0。
首先把資料dump出來 。由於先前用4.0時我的資料是存成latin1,不管是Big5或是wordpress的UTF-8存進去後都是變成lantin1,所以dump出來後要用iconf或piconf把他轉成UTF-8,記得dump出來時要加上–default-character-set=latin1
如果原先是Big5的資料,像我的Coppermine Photo Gallery,dump出來後就直接把Big5轉成UTF-8即可
#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql
#piconv -f big5 -t utf8 output.sql >utf8.sql
如果原先是UTF-8的資料,像是wordpress,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8
#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql
#piconv -f utf8 -t big5 output.sql > big5.sql
#piconv -f big5 -t utf8 big5.sql >utf8.sql
接著MySQL5.0灌好後,MySQL的my.cnf設定檔內要加入以下設定
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
但也有看到資料說[mysqld]那邊加上 default-character-set=utf8跟 default-collation=utf8_general_ci後,一些舊的使用Big5編碼的php程式,又沒有加入連資料庫時指定的編碼方式的相關code的話,那些程式就會爛掉,所以目前我是沒有加上那兩行。
接著建立空的資料庫準備把dump出來的資料import進去,SQL語法應該類似下面這樣,要加上DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
我是用phpMyAdmin建立資料庫的,建立時”校對”要選utf8_general_ci
再來就是把剛剛dump出來後的sql檔在import進去了,這裡有兩點要注意的。
1.剛剛dump出來的sql檔如果原先是Big5里面會有一些像是許功蓋這些字後面會多了一個”\“,記得用文字編輯器把他消掉2.import進去時記得還要先修改一下dump出來的sql檔,在最前面加上
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
再來把每個資料表後面的
TYPE=MyISAM;
改成
ENGINE=MyISAM DEFAULT CHARSET=utf8;
都改好後就可以把他import進去了
#mysql -u帳號 -p 資料庫 < utf8.sql
不過以上實在有點麻煩,所以我把多餘的”/“消掉後,就直接用phpMyAdmin把他import進去了,import時記得文字編碼檔案要選utf8即可
順便記一下寫php時如是配合UTF-8的資料庫的話該注意,在真正送出query前要先加入以下三行
mysql_query(”SET NAMES ‘utf8‘”);
mysql_query(”SET CHARACTER_SET_CLIENT=utf8“);
mysql_query(”SET CHARACTER_SET_RESULTS=utf8“);
檢查語系的SQL語法
show variables like “%character%”;
2011年1月18日 星期二
Ubuntu error GPG error: ... because the public key is not available: NO_PUBKEY 2EBC26B60C5A2783)
在Ubuntu更新管理員中,出現error如:GPG error: http://packages.medibuntu.org jaunty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 2EBC26B60C5A2783).
可以輸入以下的指令來獲取公鑰:
可以輸入以下的指令來獲取公鑰:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2EBC26B60C5A2783
訂閱:
文章 (Atom)
