星期日, 10月 07, 2012

「ARCH LINUX」 Ram Disk

前些日子,
聽了朋友述說RamDisk 的好處,
害我手癢也想弄弄看,而又剛好買了SSD,想說來個大重灌。
抓了2012 9月 最新的arch linux 發現,安裝方法似乎改變了。
以往的簡單選擇畫面消失了,取而代之的是終端機。

安裝變得更簡單了,比起以前的藍色可怕的畫面好多了。

裝好後發現,其實archlinux 預設就有開ramdisk 了,
所以就不需要去煩惱裝的問題了。


的文章後,小弟也把 復原和備份的功能加入。

小弟只備份 /tmp/cake_ramDisk 自己的資料夾而已。

在/etc/rc.local.shutdown 加入
#!/bin/bash
#
# /etc/rc.local.shutdown: Local shutdown script.
#
PATH=/lib/init:/bin:/sbin
## bank radisk
rm /RAMDISK_bak.tar
tar -C /tmp/cake_ramDisk -cf /RAMDISK_bak.tar .
chmod 777 /RAMDISK_bak.tar
echo "OK."
##---------bank radisk
在/etc/rc.local 加入
#!/bin/bash
#
# /etc/rc.local: Local multi-user start-up script.
#
PATH=/lib/init:/bin:/sbin
mkdir /tmp/cake_ramDisk
chmod 777 /tmp/cake_ramDisk
if [ -f /RAMDISK_bak.tar ]
then
echo -n "Restore tmpfs(/tmp) from /RAMDISK_bak.tar..."
tar -C /tmp/cake_ramDisk -xf /RAMDISK_bak.tar
echo "OK."
fi

之後馬上把eclipse 放入,就可以快快樂樂的打android 了。


假日到台中情人橋去看看,
剛好遇到夕陽黃昏,
雖然橋在整修,
不過還是很多人來此地。



星期日, 8月 12, 2012

「Arch」 關於更新 glibc 問題

官方:http://www.archlinux.org/news/the-lib-directory-becomes-a-symlink/

最近更新 的GLIBC問題,由於它把/lib 都轉移到 /usr/lib 目錄下,
導致更新出現無法更新的現象,小弟太急着更新,結果忘記 第二條的 pacman -Su
之後重開機,系統就缺東缺西,圖形界面也進不去,網路卡也抓不到,天阿。


  1. 放入 LIVE CD,掛載 硬碟至 /mnt 目錄
  2. 鏈接網路後 #pacman -Syur /mnt --ignore glibc  更新。
  3. 之後在進行  #pacman -Sur /mnt不過這時出現  glibc  /lib exists in filesystem  的錯誤。
  4.  查看/lib目錄下的檔案是否都屬於glibc  ,# find /lib -exec pacman -QO -- {} +
    1. 把除了 glibc 的套件移除或者都更新。
    2. 讓/lib 裡面只剩下 glibc
  5. 離開 live CD
  6. 進入系統後大概還是一樣,把 /lib/modules 資料夾直接刪除。
  7. 這次更新glibc 應該就沒問題了 #pacman -S glibc
  8. 再重新裝一次linux 核心  #pacman -S linux
  9.  這後reboot 後 ,皆大歡喜。

8月的草屯 還是依然美麗。

星期三, 7月 04, 2012

「PHP CI」Form Validation

關於CI的單表驗證
網站介紹的很詳細:http://codeigniter.com/user_guide/libraries/form_validation.html


1.建立規則


$config=array(  //設定驗證規則
         array(
         'field'=>'name',  //input的name
         'label'=>'帳號',     //設定名稱,在輸出錯誤訊息時出現的名稱
         'rules'=>'trim|required|min_length[4]|max_length[23]|xss_clean'  //驗證使用的規則
           ),
         array(
          'field'=>'passwd',
          'label'=>'密碼',
          'rules'=>'required|min_length[4]|max_length[25]|md5'
           ),  


2.設定規則
$this->CI->form_validation->set_rules($config);  
3.頁面POST回傳是否正確
$this->CI->form_validation->run()

他提供相當多的驗證規則,相當方便,可以少寫很多CODE。



星期六, 4月 07, 2012

「電影」讓子彈飛

[讓子彈飛 ]一部好看的電影。
即使在巧妙的詭辯,精心的布局,最後贏得了勝利 卻贏不回當初的簡單。

星期五, 3月 02, 2012

「archLinux」 Postfix 使用 Gmail smtp

最近需要用到 MailServer ,以前也沒有這個經驗,
純粹是PHP smpt 寄信速度的問題,最後選擇了 postfix。
文章參考
  1. http://sherlock.heroku.com/blog/2012/02/03/setting-up-postfix-to-use-gmail-as-an-smtp-relay-host-in-archlinux/ 
  2. archLinux WIki Postfix
「安裝 postfix」

    #pacman -S postfix

「設定」在 /etc/postfix/main.cf   加入

    # 設定 gmail
    relayhost = [smtp.gmail.com]:587

    # 啟用 tls 認證
    smtp_use_tls=yes

    # use sasl when authenticating to foreign SMTP servers
    smtp_sasl_auth_enable = yes

    # 設定密碼路徑
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

    # list of CAs to trust when verifying server certificate
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

    # eliminates default security options which are incompatible with gmail
    smtp_sasl_security_options =

 「建立」在 /etc/postfix/sasl_passwd  (即密碼檔案路徑)

     [smtp.gmail.com]:587  username:password

 「執行」建立資料庫檔案

    # postmap /etc/postfix/sasl_passwd

 「啟動服務」

    # rc.d start postfix

 「CodeIgniter」 使用 Email 類別

    $this->load->library('email');

    $config['protocol'] = 'sendmail';

    $config['mailpath'] = '/usr/sbin/sendmail';

    $config['charset'] = 'UTF-8';

    $this->email->initialize($config);

星期一, 9月 12, 2011

「arch linux」安裝 APACHE + Mercurial

沒記錄起來,下次就忘記了,記憶力越來越不可靠了。
「arch linux」安裝 APACHE + Mercurial

「Apache 」

「 Mercurial」
  • 安裝 Mercuial 
    • pacman -S mercurial
  • 查詢安裝位置,可以發現他的lib都放在 /usr/lib/python2.7/site-packages/mercurial/
    • pacman -Ql mercurial
  • 建立hgwebdir.cgi ,arch 沒有像ubuntu 有附 hgwebdir.cgi範例,最後找了老半天
    • python2.7 是對應 剛剛查的lib路徑裡面的python版本
#!/usr/bin/env python2.7
from mercurial import demandimport; demandimport.enable()
import cgitb
cgitb.enable()
import os
os.environ["HGENCODING"] = "UTF-8"
from mercurial.hgweb.hgwebdir_mod import hgwebdir
import mercurial.hgweb.wsgicgi as wsgicgi
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)

  • 之後建立 hgweb.config 
    • colletions 是你WEB的HG專案的位置,小弟是直接同步到Dropbox作備份了。
[collections] 
/home/cake/Dropbox/jeff/Project/ = /home/cake/Dropbox/jeff/Project/
[web]
style = gitweb
allow_push = *
push_ssl = false
#allow_read = cake
[trusted]
users = *
#groups = *
[hooks]
#changegroup = hg update

  • 建立好的2個檔案  hgwebdir.cgi  和 hgweb.config  需要在同個目錄,
    • 檔案位置 看喜歡放在哪裡都行,不過不要弄丟了,權限也要設好。
    • 小弟放在 /srv/hg/cgi-bin/

  •  建立虛擬目錄 編輯/etc/httpd/conf/httpd.conf 或者 你的設定檔
    • 目錄要按照CGI自己的放的位置
    • ^/hg(.*)  則是網址
    • AuthUserFile 使用者檔案
ScriptAliasMatch        ^/hg(.*)       /srv/hg/cgi-bin/hgwebdir.cgi$1
<Directory /home/cake/public_html/hg/cgi-bin/>
Options ExecCGI FollowSymLinks
AllowOverride None
AddHandler cgi-script .cgi
</Directory>
<Location /hg/>
 AuthType Digest
  AuthName "mercurial"
  #AuthDigestProvider file
  AuthUserFile /srv/hg/hgusers
</Location>


詳細參考:http://kevinjalbert.blogspot.com/2010/05/mercurial-setup-guide.html



2013 - 03/10 - 更新

關於APACHE CONFIG 設定 ,多那黃色的三行 就行跑。


<VirtualHost *>
ErrorLog "/srv/apache_error_git.log"
#cx   hgwebdir.cgi   /srv/hg/cgi-bin
#ScriptAlias /hg "/srv/hg/cgi-bin/hg.cgi"

ScriptAliasMatch ^/hg(.*) /srv/hg/cgi-bin/hg.cgi$1
<Directory  /srv/hg/cgi-bin/>
Options ExecCGI FollowSymLinks
AllowOverride None
AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    Satisfy all

</Directory>

<Location       /hg/>
 AuthType Digest
  AuthName "mercurial"
  #AuthDigestProvider file
  AuthUserFile /srv/hg/hgusers
</Location>

</VirtualHost>





星期五, 9月 09, 2011

「Arch Linux」安裝記錄

從去年 的Ubuntu 10.04  -> 10.10 -> 11.04 -> 11.10 beta1
用了一年,最後還是掛掉了,以及那個 隨時都會跑出 “回報錯誤”的該死小框框,
而且回報錯誤還要打密碼....
最後只好殺掉來 嘗試看看 arch linux。

[網路]
一開始安裝好後,是沒有pppoe 的功能,看了論壇之後得到了解答。
0.載入arch 的LIVE CD
1.掛載硬碟
mount /dev/sdaX /mnt/disk
2.ADSL上網 pppoe-setup pppoe-start
3.安裝pppoe ppp net-tool ,
pacman -r /mnt/disk -S rp-pppoe ppp

[配置]
1.安裝顯示卡(NVIDIA)

  • nvidia
    • pacman -S nvidia
  • 設定檔
    • nvidia-xconfig
2.安裝 滑鼠鍵盤
  • pacman -S xf86-input-keyboard
  • pacman -S xf86-input-mouse
3.安裝 dbus
  • pacman -S dbus
4.安裝音效卡
  • pacman -S alsa-utils
  • pacman -S alsa-oss
[設定檔]
1.編輯 /etc/rc.conf 修改DAEMONS,加入啟動
DAEMONS=(syslog-ng network dbus crond alsa)
[增加使用者]
adduser -m -s /usr/bin [YourUserNAME]
[群組] audio, lp,storage,vidieo,wheel,games,power,scanner

[安裝Gnome]

  • pacman -Syu gnome
  • pacman -S gnome-extra
  • pacman -S gdm

[IBUS]

  • pacman -S ibus
  • pacman -Ss ibus ,用搜尋 來看想裝的輸入法
  • 若安裝ibus-googlepingyin ,需要安裝 opencc 才可以轉繁體

[iBus 設定]
1.家目錄的 .bashrc
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

2.家目錄的 .profile
export XMODIFIERS=@im=ibus
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim
ibus-daemon -d -x -r

[網路 改用 networkmanager]
參考
https://wiki.archlinux.org/index.php/NetworkManager_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#Gnome.E7.8E.AF.E5.A2.83

  •  pacman -S network-manager-applet
  • pacman -S gnome-keyring
  • 在 rc.conf DAEMONS 取消network 增加 networkmanager
  •  修改 /etc/NetworkManager/NetworkManager.conf 
[main]
plugins=keyfile
[keyfile]
hostname=localhost

[載入硬碟]


[android SDK]

  • 啟動 adb 會說缺少一個 lib ,那個lib 需要安裝 32位元的lib,pacman 找的到。

[END]
感覺很好用,可以只裝用的到的軟體。