彙整

Archive for 2009 年 01 月

[C++] 多載(Overloading) 對於繼承上的一個小觀念

一月 25, 2009 發表迴響

看書看到的,我覺得很重要就先把它記下來,免得日後coding時,造成不必要的麻煩。 在C++中,多載(Overloading)的設計,可以讓我們不用寫很多且複雜的function.

但是,要記住,在繼承關係中,要做到父子類別的Overloading時,要稍微注意一下是否真的有Overloading?

例如:

今天有A、B兩個Class ,B繼承A(也就是A是B的父親)。A有fun()這個函數,B有fun(int i)函數。

當你在宣告B CLASS_B時,可別以為B這個Class同時有,fun(int i) 與 fun()這兩個函數喔!

因為多載的概念是基於多載函數必須在同一個類別內,所以當有兩個同樣名稱但是參數不同時,Compiler會視為重複定義了fun這個函數,編譯的時候就會出現錯誤!

這時候要怎麼做呢?有兩種解法:

1. 只要在B class內,宣告

using A::fun;

即可使用。

2. 如果Compiler不支援上面的方法,那麼就只好在B class中另外寫一個

void fun() {     A::fun(); }

即可達成!

類別:程式設計 標籤:

Backup MySQL with bash

一月 1, 2009 發表迴響

這是一個簡單的範例程式,用來備份mysql用的。

以下假設我的MySQL使用者帳號user密碼123database名稱為db1

backupmysql.sh:

=編輯開始=

#!/bin/sh
#Program:
#      This code backup MySQL database with date.
#      Author: Allen
#History:
#      2009/1/1

#take date
date=`date +%Y%m%d`

#database name
db_name=’db1
db_user=‘user
db_password=’123

mysqldump $db_name -u $db_user –password="$db_password" > 備份目錄/$db_name$date.sql

=編輯結束 =

然後將這支bash程式權限設定為 700 (chmod 700 backupmysql.sh)。

如果你要讓它定期幫你備份的話,加入crontab就好囉。

例如我要讓它每七天都幫我備份的話,只要加入以下:

#Allen: 每七天的01:00執行一次 backupmysql.sh ,自動備份資料檔案
0 1 */7 * * backupmysql.sh

類別:Linux&FreeBSD 標籤:

CentOS yum設定檔

一月 1, 2009 3 留言

最近Lab網頁主機替換,我為它裝上了CentOS 5.2,發現鳥哥網站寫的直接在mirrorlist加入&cc=tw 的方法對於學術網路的安裝與更新來說,實在太慢了。

研究了一下,終於將它換成對應到義守大學檔案伺服器的mirror。如此,連線速度就可以快很多倍囉!

以下是我的設定檔(位於/etc/yum.repos.d/CentOS-Base.repo):

[base]
name=CentOS-$releasever – Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&cc=tw
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://ftp.isu.edu.tw/pub/Linux/CentOS/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever – Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&cc=tw
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://ftp.isu.edu.tw/pub/Linux/CentOS/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever – Addons
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/addons/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons&cc=tw
gpgcheck=1
gpgkey=http://ftp.isu.edu.tw/pub/Linux/CentOS/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&cc=tw
gpgcheck=1
gpgkey=http://ftp.isu.edu.tw/pub/Linux/CentOS/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever – Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&cc=tw
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://ftp.isu.edu.tw/pub/Linux/CentOS/RPM-GPG-KEY-CentOS-5

Note: 由於沒有設定mirrorlist,萬一義守的檔案伺服器掛掉,可能就不能更新了。Orz…

類別:Linux&FreeBSD 標籤:
Follow

Get every new post delivered to your Inbox.