2008-07-10

Mysql錯誤訊息Out of memory

為了幫一個壞朋友搞他webmining的碩士論文,因為資料多達1400多萬筆,如果單純用文字檔來產生他要的dataset可能會讓人瘋掉,所以在初步整理後再把資料塞進mysql裡,my.cnf 也使用my-huge.cnf,再產生table的index讓查詢更為快速,要不然也是會讓等到不耐煩。
搞了半天終於可以比較快速的產生所要跑的資料,但是某一些資料還是會產生"Out of memory"的錯誤訊息,在網路上爬一下文之後,只要修改以下的地方就可以解決了。
my.cnf

[mysqld]
max_allowed_packet = 32M

2008-03-20

精簡版WinXP手動加安裝IIS

最近使用nLite弄了個精簡版XP給同事裝在EeePC上,結果我把IIS給拿掉了,但是她工作有時候又要使用,所以去找了手動安裝的方法:
  1. 編輯c:\windows\inf\sysoc.inf,在"[Components]"這段加入"iis=iis2.dll,OcEntry,iis2.inf,,7"
  2. 開始 -> 執行 -> CMD 開啟一個DOS視窗
  3. 假設你的CD-ROM磁碟機代號為"D:",請將WinXP原版CD放入執行下面兩行
    EXPand d:\I386\iis.dl_ c:\Windows\system32\setup\iis2.dll
    EXPand d:\I386\iis.in_ c:\Windows\inf\iis2.inf
  4. 控制台 -> 新增/移除程式 -> 新增/移除Windows元件 即可

2008-02-22

Debian Kernel Rebuild

最近因為工作需要必須挑一套Linux distribution,現在看得到的版本都像Window一樣得了豬頭症安裝後的容量越來越大,雖然安裝後不用再安裝其他的套件,但是也裝了不少用不到的東西進來,後來決定使用Debian,從過年前玩到現在又有一些東西又忘了.. =.=..
還是記一下好了...

1. Install the packages 'kernel-package' 、'fakeroot',若要使用make menuconfig 必須加裝 'libncurses5-dev'。
2. 其他可參考以下連結
Debian Kernel Building Mini-HOWTO

2008-02-05

Mplayer播HiNET線上廣播

最近又回來玩Linux,原因是有時候還是會用得到它,但是又討厭現在的套件又大又慢,裝了一堆我用不到的東西,機器也不行太爛,所以就挑了Debian。用4.0r2的版本比以前安裝簡單多了,即然裝起來了當然要找個東西來玩,所以把xorg也裝起來,原來在window的環境自己寫了一支小程式,專門用來收聽HiNET的網路收音機站台。想到在linux的上也有一個MPlayer可以支援不少東東的播放,所以就裝起來試試看,結果使用時一直要一個avisynth.dll,原來這個是網路上的一個個套件,抓來裝在window上再把MPlayer要的dll檔給它就可以了,但在用的過程上在檔名的部份要用大寫,但是附屬檔名要用小寫,怪怪的...
因為HiNET的網路收音機有設一些措施,所以造成直接使用MPlayer來連是不行用的,要配合firefox來使用,把MPlayer當成一個plugin就可以正常收聽了哦!!
http://avisynth.org/mediawiki/Main_Page

2008-01-07

使用網路安裝Fedora

工作上的原因,必須使用到Fedora,原本想裝新一點的版本,但是機器太舊所以機器上沒有DVD-ROM可用,因為Fedora7和8都只看到DVD的ISO沒看到CD的ISO檔,因此就把腦筋動到網路了。
  1. 首先到7或8版的Fedora/os/images下載boot.iso並燒成Boot CD,並拿來開機。
  2. 進入GRUB後選擇第2,安裝或升級(使用文字模式),因為試著用圖形介面裝,好像都不會動,不曉得是機器太慢造成還是怎樣就不了改了。
  3. 選擇使用安裝方式,我是選擇使用FTP。
  4. 輸入ftp site和欲安裝的Fedora Core的原始檔位置,找到某某版本的os目錄就對了
  5. 接下來就是一般正常的文字安裝了
最一開始是使用Fedora Core5的第一片安裝CD來線上安裝,但是拿來安裝7或是8版的,雖然設定過程順利,但是到了真正要安裝時是無法安裝的,會有錯誤產生。所以還是要使用同一個版本的安裝光碟或boot.iso來透過網路安裝才會正常,但是建議使用boot.iso來開機安裝並使用"文字模式",發現安裝的速度比圖形介面要快喲!

2008-01-02

FreeRadius + pam_pop3 多部mail server pop3認證

工作上需要用到radius來進行無線網路的帳號,可是又不想另外維護獨立的radius的帳號,第一是我太懶了,第二是太麻煩了,但是又還沒建置LDAP把帳號統一,所以把念頭打到了現行的mail server上,可以利用現成的帳號密碼來進行無線認證。
經過測試後發現使用FreeRadius+pam_pop3模組,依預設值的話只能針對一部mail server進行pop3的認證,問題來了,因為認證時可能會同時使用到兩部mail server,所以必須進行程式修改。
在網路上找到了資料,發現交通大學的"北台灣社區網路建置及分析"計劃已有相同的做法,但是沒有source code可供參考 >"<,只好自己挖糞塗牆了。 需要修改的部份有兩個,就是FreeRadius和pam_pop3,雖然交大的文件上說只要修改FreeRadius就可以符合需求,但測了半天覺得兩個都要改到,反正沒source code所以還是用自己的方法吧!
  • FreeRadius
    1. 作業系統FreeBSD-6.2-RELEASE
      > cd /usr/ports/net/freeradius
      >make install
    2. 解開原始檔進行修改
      > tar xvfj /usr/ports/distfiles/freeradius-xx.tar.bz2
    3. 修改rlm_pam.c
      > cd freeradius-xx/src/modules/rlm_pam
      > vi rlm_pam.c
      找到以下字樣的下面那段code把mark掉
      /*
      * FreeBSD 3.x doesn't have account and session management
      * functions in PAM, while 4.0 does.
      */
      if !defined(__FreeBSD_version) || (__FreeBSD_version >= 400000)
    4. 把修改過的FreeRadius重新包裝起來放回/usr/ports/distfiles把原檔覆蓋掉,再用port直接安裝省得麻煩
      > tar cvfj freeradius-xxx.tar.bz2 freeradius-xxx
      > cp freeradius-xxx.tar.bz2 /usr/ports/distfiles/freeradius-xxx.tar.bz2
      > cd /usr/ports/net/freeradius
      > make deinstall
      > make NO_CHECKSUM=yes install clean
    5. 修改radius的相關設定
  • pam_pop3
    1. 一樣使用port安裝並使用已經過patch的code來修改
      > cd /usr/ports/security/pam_pop3/
      > make install
      > cd ~
      > cp -r /usr/ports/security/pam_pop3/work/pam_pop3 .
    2. 修正 pam_pop3.c
      > cd pam_pop3
      > vi pam_pop3.c
      找到 char *pwprompt="Password: "; 在下面插入一行char delim[]="@";
      找到以下的code
      if (username==NULL)
      {
      if (pam_get_user(pamh,(const char **)&username,NULL)!=PAM_SUCCESS)
      {
      syslog(LOG_ERR,"Could not get username from libpam !");
      return result;
      }
      在下面接著以下這兩行
      username=strtok(username,delim);
      hostname=strtok(NULL,delim);
      這樣就可以把xxx@mail.abc.com.tw的格式正確的導到正確的伺服器囉!
    3. 手動compiler後再把原先安裝的pam_pop3.so檔覆蓋
      > make clean
      > cc -O2 -fno-strict-aliasing -pipe -march=pentiumpro -fpic -DPIC -Wall -c pam_pop3.c -o pam_pop3.o
      > ld -x --shared -o pam_pop3.so pam_pop3.o -lpam -lcrypt
      > cp pam_pop3.so /usr/local/lib/pam_pop3.so
    4. 在/etc/pam.d/ 新增一個檔名字叫radius,內容如下
      auth required /usr/local/lib/pam_pop3.so info pwprompt=Passwort: timeout=20