2011-01-25 11:09

[Shell] backup mysql data by day (note)

  1. #!/bin/bash 
  2.  
  3. PATH=/bin:/sbin:/usr/bin:/usr/sbin 
  4. export PATH 
  5.  
  6. DATE=$(date +%Y%m%d) 
  7. TARGET=/root/my_backup 
  8. OPT="--opt -c -n -t --skip-triggers" 
  9. ID="root" 
  10. PW="1234" 
  11. DB="mydb" 
  12.  
  13. TMP=$TARGET/$DB.$DATE.bak.sql" 
  14. BAK=$TARGET/$DB.$DATE.bak.tgz" 
  15.  
  16. #==( Backup MySQL )======================================= 
  17. mysqldump -u$ID -P$PW $OPT $DB > $TMP 
  18. tar -zcf $BAK $TMP 
  19. rm $TMP 
  20.  
  21. exit 0 
2011-01-25 10:14

[Shell] 依據遠端清單進行目錄同步

這個任務的狀況是:
有些新的檔案會被加入,而舊的檔案會被移除,檔案的內容基本上是不會變動的,所以可透過檔名來進行同步。


檔案下載與錯誤處理:
這裡用 curl 來處理下載的問題,並且當發生錯誤時重試三次。
  1. #!/bin/bash 
  2. # download_file.sh 
  3.  
  4. PATH=/bin:/sbin:/usr/bin:/usr/sbin 
  5. export PATH 
  6.  
  7. LIMIT=3 # retry 3 times 
  8. LOCAL_PATH=$1 
  9. REMOTE_URL=$2 
  10. FILE_NAME=$3 
  11.  
  12. while [ $LIMIT \> 0 ] ; do 
  13.    #echo $REMOTE_URL/$FILE_NAME 
  14.    rm -f $LOCAL_PATH/$FILE_NAME.tmp 
  15.    curl -f -o $LOCAL_PATH/$FILE_NAME.tmp $REMOTE_URL/$FILE_NAME  > /dev/null 
  16.    if [ "$?" == "0" ]; then 
  17.        mv -f $LOCAL_PATH/$FILE_NAME.tmp $LOCAL_PATH/$FILE_NAME 
  18.        exit 0; 
  19.    fi 
  20.    LIMIT=$(($LIMIT-1)) 
  21. done       
  22.  
  23. exit 1; 


清單比較:
從遠端下載檔案清單與本地端的目錄進行比對,並處理刪除跟下載的動作。
  1. #!/bin/bash 
  2. # folder_sync.sh 
  3.  
  4. PATH=/bin:/sbin:/usr/bin:/usr/sbin 
  5. export PATH 
  6.  
  7. REMOTE_URL=http://remote_site/pics 
  8. REMOTE_LIST_URL=http://remote_site/pics/file.list 
  9. LOCAL_PATH=/var/www/pics 
  10.  
  11. # get remote list 
  12. REMOTE_LIST=$(curl -f $REMOTE_LIST_URL |tr -d '\r') 
  13. if [ "$?" != "0" ]; then  exit 1; fi 
  14.  
  15. # get local list 
  16. cd $LOCAL_PATH 
  17. LOCAL_LIST=$(ls -1) 
  18. if [ "$?" != "0" ]; then 
  19.    LOCAL_LIST="" 
  20. fi     
  21.  
  22.  
  23. # Check loacl file exists in the list 
  24. for ITEM in  $LOCAL_LIST ; do 
  25.    echo "$REMOTE_LIST" |grep "^$ITEM\$"  > /dev/null 
  26.    if [ "$?" != "0" ]; then 
  27.        # delete old file 
  28.        rm -f $ITEM  &> /dev/null 
  29.    fi 
  30. done 
  31.  
  32. # Check remote file exists in the list 
  33. for ITEM in  $REMOTE_LIST ; do 
  34.    echo "$LOCAL_LIST" |grep "^$ITEM\$"  > /dev/null 
  35.    if [ "$?" != "0" ]; then 
  36.        # download new file 
  37.        download_file.sh $LOCAL_PATH $REMOTE_URL $ITEM &> /dev/null 
  38.    fi 
  39. done 
  40.  
  41. exit 0; 
2011-01-24 16:29

[Shell] 透過版本編號與遠端的 package 同步

有一個的任務是要將一個用 tar 封裝的目錄從 server 端同步到 client 上,然後有機個考量點:
  • 必須確保 client 永遠都讀得到資料
  • 最小的資料中斷
  • 最小的硬碟存取
  • 必要的錯誤處理


建立 server 端的 package
  1. #!/bin/bash 
  2. # package_build.sh 
  3.  
  4. PATH=/bin:/sbin:/usr/bin:/usr/sbin 
  5. export PATH 
  6.  
  7. PROJECT_NAME=metadata 
  8. SOURCE_PATH=/var/projects 
  9. PORTING_PATH=/var/www 
  10.  
  11. PACKAGE_NAME=$PROJECT_NAME.$(/bin/date +%s) 
  12. OLD_PACKAGE=$(find $PORTING_PATH -name "$PROJECT_NAME.*.tgz") 
  13.  
  14. # Create Package 
  15. cd $SOURCE_PATH/$PROJECT_NAME 
  16. tar -zcf $PORTING_PATH/$PACKAGE_NAME.tgz ./* 
  17.  
  18. # Update version number to release 
  19. echo $PACKAGE_NAME > $PORTING_PATH/$PROJECT_NAME.latest 
  20.  
  21. # remove old version 
  22. #rm -f $OLD_PACKAGE 
  23.  
  24. echo -e "<< $PACKAGE_NAME package complete >>" 
  25. exit 0 


client 端的同步處理
  1. #!/bin/bash 
  2. # package_sync.sh 
  3.  
  4. PATH=/bin:/sbin:/usr/bin:/usr/sbin 
  5. export PATH 
  6.  
  7. REMOTE_URL=http://remote_site/ 
  8. TARGET_PATH=/var/www 
  9. PROJECT_NAME=metadata 
  10. PROJECT_PATH=$TARGET_PATH/$PROJECT_NAME 
  11.  
  12.  
  13. # get now version 
  14. NOW_VERSION=$PROJECT_NAME.0000000000 
  15. if [ -h "$PROJECT_PATH" ] && [ -d "$PROJECT_PATH" ]; then 
  16.    NOW_VERSION=$(readlink $PROJECT_PATH) 
  17. fi 
  18. echo -e 'NOW_VERSION' $NOW_VERSION 
  19.  
  20.  
  21. # get remote version  
  22. REMOTE_VERSION=$(curl -f $REMOTE_URL/$PROJECT_NAME.latest |tr -d '\r') 
  23. if [ "j$?" != "j0" ]; then  exit 1; fi 
  24. echo -e 'REMOTE_VERSION' $REMOTE_VERSION 
  25.  
  26.  
  27. # deff version, not deff goto exit. 
  28. if [ ! "$NOW_VERSION" \< "$REMOTE_VERSION" ]; then  exit 0; fi 
  29.  
  30.  
  31.  
  32. echo -e "Update package" 
  33.  
  34. # create now version folder 
  35. mkdir -p $TARGET_PATH/$REMOTE_VERSION 
  36. if [ "$?" != "0" ]; then  exit 1; fi 
  37.  
  38. # Download Package 
  39. cd $TARGET_PATH/$REMOTE_VERSION 
  40. curl -o $PROJECT_NAME.tgz $REMOTE_URL/$REMOTE_VERSION.tgz 
  41. if [ "$?" != "0" ]; then  exit 1; fi 
  42.  
  43. # Decompression Package 
  44. tar -zxf $PROJECT_NAME.tgz 
  45. rm -f $PROJECT_NAME.tgz 
  46.  
  47. # Update version link 
  48. cd $TARGET_PATH 
  49. ln -sfn $REMOTE_VERSION $PROJECT_NAME 
  50.  
  51. # remove old version 
  52. rm -rf $NOW_VERSION 
  53.  
  54. exit 0; 
2011-01-24 13:47

[Shell] 等待所有子程序結束

當在用 shell 開其他子程序時,通常會希望在所有程序結束時做一些處理,最簡單的方式就是用一支迴圈去等待其他子程序的結束,這裡用到 jobs 這個指令去檢查子程序是不是還在執行。

  1. #!/bin/bash 
  2.  
  3. PATH=/bin:/sbin:/usr/bin:/usr/sbin 
  4. export PATH 
  5.  
  6. # job msg log temp file 
  7. MSG_LOG=/tmp/job_log 
  8. rm -f $MSG_LOG 
  9.  
  10. # background job function 
  11. bg_job(){ 
  12.    JOB=$1 
  13.    sleep $JOB 
  14.    echo $JOB "End" >> $MSG_LOG 
  15. } 
  16.  
  17.  
  18. JOB_LIST=( 
  19.    "5" 
  20.    "6" 
  21.    "3" 
  22.    "4" 
  23. ) 
  24. # run all job 
  25. for FLASH in "${JOB_LIST[@]}" ; do  
  26.    bg_job $FLASH & 
  27. done 
  28.  
  29.  
  30. # Waiting for the end of all the job 
  31. while [ "j$(jobs -r)" != "j" ] ; do 
  32.    sleep 1 
  33. done 
  34.  
  35. # show job msg 
  36. cat $MSG_LOG 
  37. echo "<< bg_job all complete >>" 
  38.  
  39. exit 0; 
2011-01-20 13:49

[Windows 群組原則]中的設定

Windows 群組原則中的設定,雖然大部分都看不懂或者沒多大幫助,但是有些設定還蠻有用的。

開啟[群組原則]

開始/執行 -> gpedit.msc

電腦設定/系統管理範本/系統 -> 關閉自動播放
啟用這個設定可以讓隨身碟或光碟停用自動播放,避免被 autorun.inf 病毒攻擊,當然也關閉了那煩人的對話匡
電腦設定/系統管理範本/系統/指令碼 -> 非同步執行啟動指令碼
啟用這個設定可以讓開機載入軟體時稍微快一點,不用一個等一個的。
2011-01-19 16:38

[Regedit] Oracle 日期格式及語言編碼設定

上次用到時沒有記下來,結果忘記了,這次先把他記下來。

  1. Windows Registry Editor Version 5.00 
  2.  
  3. [HKEY_LOCAL_MACHINE\SOFTWARE\Oracle] 
  4. "NLS_LANG"="AMERICAN_AMERICA.UTF8" 
  5. "NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS" 
  6.  
  7. [HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ALL_HOMES\ID0] 
  8. "NLS_LANG"="AMERICAN_AMERICA.UTF8" 
  9. "NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS" 
  10.  
  11. [HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0] 
  12. "NLS_LANG"="AMERICAN_AMERICA.UTF8" 
  13. "NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS" 
2011-01-19 02:36

使用批次檔開關 Oracle 服務

因為在 NB 上灌了 Oracle 做開發用,可是每次開機都變得很慢,而且不是每天都會用到 Oracle,但常常開開關關服務真的很麻煩,索性找了一下批次檔開關服務的方法,寫了一個簡單的小工具,至少在處理這瑣碎的事可以快樂一點。

  1. @echo off 
  2.  
  3. set /p STATUS=Oracle Service status to [start/stop] :  
  4.  
  5. net %STATUS% "OracleMTSRecoveryService" 
  6. net %STATUS% "OracleOraHome92Agent" 
  7. net %STATUS% "OracleOraHome92TNSListener" 
  8. net %STATUS% "OracleServiceMYDB" 
  9.  
  10. pause 
2011-01-19 02:16

[Regedit] 在『我的電腦』右鍵加入系統功能選項

將下面的登錄碼複製到筆記本,檔名存成 options.reg 然後再執行檔案就可以了,如果有不要的功能將 "HKEY_LOCAL_MACHINE" 換成 "-HKEY_LOCAL_MACHINE" 就可以了。

  1. Windows Registry Editor Version 5.00 
  2.  
  3.  
  4. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Control] 
  5. @="控制台(&C)" 
  6. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Control\command] 
  7. @="rundll32.exe shell32.dll,Control_RunDLL" 
  8.  
  9. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr] 
  10. @="裝置管理員(&D)" 
  11. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr\command] 
  12. @="mmc.exe devmgmt.msc" 
  13.  
  14. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DiskMgmt] 
  15. @="磁碟管理" 
  16. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DiskMgmt\command] 
  17. @="mmc.exe DiskMgmt.msc" 
  18.  
  19. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\EventVwr] 
  20. @="事件檢視器" 
  21. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\EventVwr\command] 
  22. @="mmc.exe EventVwr.msc" 
  23.  
  24. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\FsMgmt] 
  25. @="共用資料夾" 
  26. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\FsMgmt\command] 
  27. @="mmc.exe FsMgmt.msc" 
  28.  
  29. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\GroupEdit] 
  30. @="群組原則" 
  31. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\GroupEdit\command] 
  32. @="mmc.exe gpedit.msc" 
  33.  
  34. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LusrMgr] 
  35. @="本機使用者和群組" 
  36. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LusrMgr\command] 
  37. @="mmc.exe LusrMgr.msc" 
  38.  
  39. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\PerfMon] 
  40. @="效能" 
  41. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\PerfMon\command] 
  42. @="mmc.exe PerfMon.msc" 
  43.  
  44. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Regedit] 
  45. @="登錄檔編輯器" 
  46. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Regedit\command] 
  47. @="regedit" 
  48.  
  49. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Service] 
  50. @="服務(&F)" 
  51. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Service\command] 
  52. @="mmc.exe services.msc" 

2011-01-19 01:38

[MySQL] mysqldump & mysql command for UTF-8 database

最近在 windows 上匯出/匯入資料庫時遇到 UTF-8 編碼問題,奇怪之前在 linux 上執行從未遇到的說,原來 default-character-set 是 latin1,所以在匯出/匯入時要指定成 UTF-8 就沒問題了。

匯出資料庫
  1. PATH=C:\wamp\bin\mysql\mysql5.5.8\bin 
  2.  
  3. REM export 'dbname' database 
  4. mysqldump -uroot -p1234 --default-character-set=utf8 dbname > dbname.sql 
  5.  
  6. REM other dbname ... 
  7. pause 

匯入資料庫
  1. PATH=C:\wamp\bin\mysql\mysql5.5.8\bin 
  2.  
  3. REM import 'dbname' database 
  4. mysql -uroot -p1234 -e "DROP DATABASE IF EXISTS `dbname`;" 
  5. mysql -uroot -p1234 -e "CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;" 
  6. mysql -uroot -p1234 --default-character-set=utf8 dbname < dbname.sql 
  7.  
  8. REM other dbname ... 
  9. pause 
2011-01-19 01:20

[Shell] 使用 sfdisk 分割硬碟

  1. #!/bin/bash 
  2.  
  3. PATH=/bin:/sbin:/usr/bin:/usr/sbin 
  4. export PATH 
  5.  
  6. # disk path 
  7. DEVICE=/dev/sdb 
  8.  
  9. # use sfdisk create device partition,size by Megabyte 
  10. sfdisk -uM $DEVICE <<EOF 
  11. ,512 
  12. ,512 
  13. EOF 
  14.  
  15. # format to ext2 
  16. mke2fs $DEVICE"1" 
  17. mke2fs $DEVICE"2" 
  18.  
  19. exit 0; 
2011-01-19 01:11

[C語言] 比對兩個檔案中的 list

這是用很簡單的方式比對兩個檔案中的 list
並不是很有效率就是了,只是希望比 shell 快一點

當 diffPath 檔案中的項目不在 basePath 的檔案裡,就會 print 出來。

  1. #include <stdio.h> 
  2. #include <errno.h> 
  3. #include <string.h> 
  4.  
  5. #define BUFFER_SIZE     300    /*char buffer size*/ 
  6.  
  7. int main(int argc, char *argv[]) { 
  8.    if(argc !=3 ){ 
  9.        fprintf(stderr,"%s [diffPath] [basePath]\n",argv[0]); return 1; 
  10.    } 
  11.  
  12.    FILE *diffFile, *baseFile; 
  13.    char diffChars[BUFFER_SIZE], baseChars[BUFFER_SIZE]; 
  14.  
  15.    if((diffFile=fopen(argv[1], "r")) == NULL){ 
  16.        fprintf(stderr,"can't open diff file\n"); return 1; 
  17.    } 
  18.    if((baseFile=fopen(argv[2], "r")) == NULL){ 
  19.        fprintf(stderr,"can't open base file\n"); return 1; 
  20.    } 
  21.  
  22.    while(!feof(diffFile)){ 
  23.        /* read diff item */ 
  24.        fscanf(diffFile,"%s\n",diffChars); 
  25.  
  26.        int isFind=0; 
  27.        /* find item exist */ 
  28.        rewind(baseFile); 
  29.        while(!feof(baseFile)){ 
  30.            fscanf(baseFile,"%s\n",baseChars); 
  31.            if(strcmp(diffChars,baseChars) == 0){ isFind=1; break; } 
  32.        } 
  33.  
  34.        /* not find itme */ 
  35.        if(!isFind){ 
  36.            printf("%s\n",diffChars); 
  37.        } 
  38.    } 
  39.  
  40.    fclose(diffFile); 
  41.    fclose(baseFile); 
  42.  
  43.    return 0; 
  44. } 
2011-01-18 16:15

CSS 常用命名表

版面類

欄目column
容器container
內容content
頁尾footer
頁首header
版型佈局layout
首頁index
頁面主體main
側欄sidebar

導航類

主導航main_nav
全域導航global_nav
導航nav
領行列navbar
左導航left_sidebar
右導航right_sidebar
子導航subnav
頂導航topnav
工具條toolbar

菜單類

菜單menu
子菜單submenu
菜單內容menu_content
菜單容器menu_container

樣式類

箭頭arrow
橫幅廣告banner
分界線boundary
按鈕btn
按鈕button
轉角/圓角corner
文字font
標題title
圖示icon
項目item
列表list
主要的master
頁面page
標示mark
分段section
邊導航圖標sidebar_icon
標籤頁tab
樣式/主題theme
閃爍twinkle
小部件widget
包裝器 wrapper
頁面外圍控制整體佈局寬度
區域zone

功能類

檢舉abuse
點擊這裡click_here
收藏coffin
塌陷collapse
完成的,結束的complete
改變,轉變conversion
當前的current
預設default
下載download
下拉drop
編輯edit
相等equals
例外exception
完成,結束finalize
折疊fold
雜湊hash
局部的localized
管理manager
方法method
即時通訊messenger
提示信息msg
註釋note
通知,告知;報告notify
語法分析parse
語法分析器parser
傳送pass
位置place
投票poll
發表文章post
預覽preview
列印print
發布publish
查詢query
收到,接到receive
重填reset
滾動scroll
搜索search
搜索框search_box
進階搜尋search_further
搜尋結果search_results
統計statistics
狀態status
串流stream
訂閱subscribe
送出submit
查詢訂閱subscriptions
小技巧tips
追蹤清單track
指導tutorial
上傳upload
驗證碼verification_code
觀看view
投票vote

內容類

檔案/文件archive
文章article
所有文章article_all
文章分類article_folder
招呼語blast
部落格blog
部落格資料blog_info
麵包屑bread_crumb
頁面所處位置導航提示
行事曆calendar
徵才careers
社群家族club
評論、評鑑comment
社群家族community
位置導航crumb
娛樂entertainment
電子報epaper
活動event
常見問題faq
回覆意見feedback
論壇forum
友情鏈接friend_link
強力搜尋gd_search_tech
留言板guestbook
指南guide
公會guild
熱門hot
熱門連結hot_link
學習learning
介紹introduce
徵才job
知識knowledge
新聞news
記事本notepad
即時訊息online_news
作品portfolio
活動比賽promo
排行rank
景點scenic
服務service
招呼語set_blast
即時留言板shoutbox
網頁導覽sitemap
技術支援support
旅遊travels
視訊video

網站類

關於about
關於我們about_us
公司company
公司簡介company_profile
聯絡contact
聯絡我們contact_us
版權資訊copyright
資訊info
網站標誌logo
商標label
組織organization
合作夥伴partner
薪資福利remuneration
摘要summary
系統system
網頁快訊web_slices

購物類

atmatm
現折活動allowance
配件appendix
紅利折抵bank_bonus
競標bid
取消訂單cancel
刷卡card
換貨change
推薦commend
優惠卷coupon
顧客customer
顧客服務customer_service
運送deliver
折扣discount
快速到貨express
購物流程flow
贈品gift
集殺group
詢價inquire
服務中心help
訂購單order
訂單查詢order_check
包裝packing
付費payment
集購payshop_flow
價格price
產品名稱product_name
產品products
嚴選保證promise
估價quotes
維修repair
退貨return
交易安全safety
購物shop
商店store
超商取貨付款store
補貨通知supply_info
信用卡線上分期time
統一編號unified business no.

會員類

通訊錄abook
帳務account
地址address
相簿album
申請apply
審核approval
黑名單black_list
信箱email
忘記密碼forgot_password
忘記帳號forgot_username
服務條款legal
登入login
登出logout
登入條login_bar
邀請朋友invite
加入join_us
會員member
會員登入member_login
個人personal
個人資訊personal_information
照片photo
隱私權政策privacy
個人簡介profile
個人相片profile_photo
註冊register
轉寄好友send_friend
註冊sign_up
登入sign_in
登出sign_out


參考來源:
CSS 常用命名参考 - PHP新手博客(phpabc‘s blog)
css常用命名
div+css命名规则 (注重SEO的朋友注意了)
Jane’s Blog: CSS 命名規則