#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH DATE=$(date +%Y%m%d) TARGET=/root/my_backup OPT="--opt -c -n -t --skip-triggers" ID="root" PW="1234" DB="mydb" TMP=$TARGET/$DB.$DATE.bak.sql" BAK=$TARGET/$DB.$DATE.bak.tgz" #==( Backup MySQL )======================================= mysqldump -u$ID -P$PW $OPT $DB > $TMP tar -zcf $BAK $TMP rm $TMP exit 0
2011-01-25
[Shell] backup mysql data by day (note)
[Shell] 依據遠端清單進行目錄同步
這個任務的狀況是:
有些新的檔案會被加入,而舊的檔案會被移除,檔案的內容基本上是不會變動的,所以可透過檔名來進行同步。
檔案下載與錯誤處理:
這裡用 curl 來處理下載的問題,並且當發生錯誤時重試三次。
清單比較:
從遠端下載檔案清單與本地端的目錄進行比對,並處理刪除跟下載的動作。
有些新的檔案會被加入,而舊的檔案會被移除,檔案的內容基本上是不會變動的,所以可透過檔名來進行同步。
檔案下載與錯誤處理:
這裡用 curl 來處理下載的問題,並且當發生錯誤時重試三次。
#!/bin/bash
# download_file.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
LIMIT=3 # retry 3 times
LOCAL_PATH=$1
REMOTE_URL=$2
FILE_NAME=$3
while [ $LIMIT \> 0 ] ; do
#echo $REMOTE_URL/$FILE_NAME
rm -f $LOCAL_PATH/$FILE_NAME.tmp
curl -f -o $LOCAL_PATH/$FILE_NAME.tmp $REMOTE_URL/$FILE_NAME > /dev/null
if [ "$?" == "0" ]; then
mv -f $LOCAL_PATH/$FILE_NAME.tmp $LOCAL_PATH/$FILE_NAME
exit 0;
fi
LIMIT=$(($LIMIT-1))
done
exit 1;
清單比較:
從遠端下載檔案清單與本地端的目錄進行比對,並處理刪除跟下載的動作。
#!/bin/bash
# folder_sync.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
REMOTE_URL=http://remote_site/pics
REMOTE_LIST_URL=http://remote_site/pics/file.list
LOCAL_PATH=/var/www/pics
# get remote list
REMOTE_LIST=$(curl -f $REMOTE_LIST_URL |tr -d '\r')
if [ "$?" != "0" ]; then exit 1; fi
# get local list
cd $LOCAL_PATH
LOCAL_LIST=$(ls -1)
if [ "$?" != "0" ]; then
LOCAL_LIST=""
fi
# Check loacl file exists in the list
for ITEM in $LOCAL_LIST ; do
echo "$REMOTE_LIST" |grep "^$ITEM\$" > /dev/null
if [ "$?" != "0" ]; then
# delete old file
rm -f $ITEM &> /dev/null
fi
done
# Check remote file exists in the list
for ITEM in $REMOTE_LIST ; do
echo "$LOCAL_LIST" |grep "^$ITEM\$" > /dev/null
if [ "$?" != "0" ]; then
# download new file
download_file.sh $LOCAL_PATH $REMOTE_URL $ITEM &> /dev/null
fi
done
exit 0;
2011-01-24
[Shell] 透過版本編號與遠端的 package 同步
有一個的任務是要將一個用 tar 封裝的目錄從 server 端同步到 client 上,然後有機個考量點:
建立 server 端的 package
client 端的同步處理
- 必須確保 client 永遠都讀得到資料
- 最小的資料中斷
- 最小的硬碟存取
- 必要的錯誤處理
建立 server 端的 package
#!/bin/bash # package_build.sh PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH PROJECT_NAME=metadata SOURCE_PATH=/var/projects PORTING_PATH=/var/www PACKAGE_NAME=$PROJECT_NAME.$(/bin/date +%s) OLD_PACKAGE=$(find $PORTING_PATH -name "$PROJECT_NAME.*.tgz") # Create Package cd $SOURCE_PATH/$PROJECT_NAME tar -zcf $PORTING_PATH/$PACKAGE_NAME.tgz ./* # Update version number to release echo $PACKAGE_NAME > $PORTING_PATH/$PROJECT_NAME.latest # remove old version #rm -f $OLD_PACKAGE echo -e "<< $PACKAGE_NAME package complete >>" exit 0
client 端的同步處理
#!/bin/bash
# package_sync.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
REMOTE_URL=http://remote_site/
TARGET_PATH=/var/www
PROJECT_NAME=metadata
PROJECT_PATH=$TARGET_PATH/$PROJECT_NAME
# get now version
NOW_VERSION=$PROJECT_NAME.0000000000
if [ -h "$PROJECT_PATH" ] && [ -d "$PROJECT_PATH" ]; then
NOW_VERSION=$(readlink $PROJECT_PATH)
fi
echo -e 'NOW_VERSION' $NOW_VERSION
# get remote version
REMOTE_VERSION=$(curl -f $REMOTE_URL/$PROJECT_NAME.latest |tr -d '\r')
if [ "j$?" != "j0" ]; then exit 1; fi
echo -e 'REMOTE_VERSION' $REMOTE_VERSION
# deff version, not deff goto exit.
if [ ! "$NOW_VERSION" \< "$REMOTE_VERSION" ]; then exit 0; fi
echo -e "Update package"
# create now version folder
mkdir -p $TARGET_PATH/$REMOTE_VERSION
if [ "$?" != "0" ]; then exit 1; fi
# Download Package
cd $TARGET_PATH/$REMOTE_VERSION
curl -o $PROJECT_NAME.tgz $REMOTE_URL/$REMOTE_VERSION.tgz
if [ "$?" != "0" ]; then exit 1; fi
# Decompression Package
tar -zxf $PROJECT_NAME.tgz
rm -f $PROJECT_NAME.tgz
# Update version link
cd $TARGET_PATH
ln -sfn $REMOTE_VERSION $PROJECT_NAME
# remove old version
rm -rf $NOW_VERSION
exit 0;
[Shell] 等待所有子程序結束
當在用 shell 開其他子程序時,通常會希望在所有程序結束時做一些處理,最簡單的方式就是用一支迴圈去等待其他子程序的結束,這裡用到 jobs 這個指令去檢查子程序是不是還在執行。
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
# job msg log temp file
MSG_LOG=/tmp/job_log
rm -f $MSG_LOG
# background job function
bg_job(){
JOB=$1
sleep $JOB
echo $JOB "End" >> $MSG_LOG
}
JOB_LIST=(
"5"
"6"
"3"
"4"
)
# run all job
for FLASH in "${JOB_LIST[@]}" ; do
bg_job $FLASH &
done
# Waiting for the end of all the job
while [ "j$(jobs -r)" != "j" ] ; do
sleep 1
done
# show job msg
cat $MSG_LOG
echo "<< bg_job all complete >>"
exit 0;
2011-01-20
[Windows 群組原則]中的設定
2011-01-19
[Regedit] Oracle 日期格式及語言編碼設定
上次用到時沒有記下來,結果忘記了,這次先把他記下來。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Oracle] "NLS_LANG"="AMERICAN_AMERICA.UTF8" "NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS" [HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ALL_HOMES\ID0] "NLS_LANG"="AMERICAN_AMERICA.UTF8" "NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS" [HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0] "NLS_LANG"="AMERICAN_AMERICA.UTF8" "NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS"
使用批次檔開關 Oracle 服務
因為在 NB 上灌了 Oracle 做開發用,可是每次開機都變得很慢,而且不是每天都會用到 Oracle,但常常開開關關服務真的很麻煩,索性找了一下批次檔開關服務的方法,寫了一個簡單的小工具,至少在處理這瑣碎的事可以快樂一點。
@echo off set /p STATUS=Oracle Service status to [start/stop] : net %STATUS% "OracleMTSRecoveryService" net %STATUS% "OracleOraHome92Agent" net %STATUS% "OracleOraHome92TNSListener" net %STATUS% "OracleServiceMYDB" pause
[Regedit] 在『我的電腦』右鍵加入系統功能選項
將下面的登錄碼複製到筆記本,檔名存成 options.reg 然後再執行檔案就可以了,如果有不要的功能將 "HKEY_LOCAL_MACHINE" 換成 "-HKEY_LOCAL_MACHINE" 就可以了。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Control]
@="控制台(&C)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Control\command]
@="rundll32.exe shell32.dll,Control_RunDLL"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr]
@="裝置管理員(&D)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr\command]
@="mmc.exe devmgmt.msc"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DiskMgmt]
@="磁碟管理"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DiskMgmt\command]
@="mmc.exe DiskMgmt.msc"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\EventVwr]
@="事件檢視器"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\EventVwr\command]
@="mmc.exe EventVwr.msc"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\FsMgmt]
@="共用資料夾"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\FsMgmt\command]
@="mmc.exe FsMgmt.msc"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\GroupEdit]
@="群組原則"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\GroupEdit\command]
@="mmc.exe gpedit.msc"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LusrMgr]
@="本機使用者和群組"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LusrMgr\command]
@="mmc.exe LusrMgr.msc"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\PerfMon]
@="效能"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\PerfMon\command]
@="mmc.exe PerfMon.msc"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Regedit]
@="登錄檔編輯器"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Regedit\command]
@="regedit"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Service]
@="服務(&F)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Service\command]
@="mmc.exe services.msc"
[MySQL] mysqldump & mysql command for UTF-8 database
最近在 windows 上匯出/匯入資料庫時遇到 UTF-8 編碼問題,奇怪之前在 linux 上執行從未遇到的說,原來 default-character-set 是 latin1,所以在匯出/匯入時要指定成 UTF-8 就沒問題了。
匯出資料庫
匯入資料庫
匯出資料庫
PATH=C:\wamp\bin\mysql\mysql5.5.8\bin REM export 'dbname' database mysqldump -uroot -p1234 --default-character-set=utf8 dbname > dbname.sql REM other dbname ... pause
匯入資料庫
PATH=C:\wamp\bin\mysql\mysql5.5.8\bin REM import 'dbname' database mysql -uroot -p1234 -e "DROP DATABASE IF EXISTS `dbname`;" mysql -uroot -p1234 -e "CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;" mysql -uroot -p1234 --default-character-set=utf8 dbname < dbname.sql REM other dbname ... pause
[Shell] 使用 sfdisk 分割硬碟
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH # disk path DEVICE=/dev/sdb # use sfdisk create device partition,size by Megabyte sfdisk -uM $DEVICE <<EOF ,512 ,512 EOF # format to ext2 mke2fs $DEVICE"1" mke2fs $DEVICE"2" exit 0;
[C語言] 比對兩個檔案中的 list
這是用很簡單的方式比對兩個檔案中的 list
並不是很有效率就是了,只是希望比 shell 快一點
當 diffPath 檔案中的項目不在 basePath 的檔案裡,就會 print 出來。
並不是很有效率就是了,只是希望比 shell 快一點
當 diffPath 檔案中的項目不在 basePath 的檔案裡,就會 print 出來。
#include <stdio.h>
#include <errno.h>
#include <string.h>
#define BUFFER_SIZE 300 /*char buffer size*/
int main(int argc, char *argv[]) {
if(argc !=3 ){
fprintf(stderr,"%s [diffPath] [basePath]\n",argv[0]); return 1;
}
FILE *diffFile, *baseFile;
char diffChars[BUFFER_SIZE], baseChars[BUFFER_SIZE];
if((diffFile=fopen(argv[1], "r")) == NULL){
fprintf(stderr,"can't open diff file\n"); return 1;
}
if((baseFile=fopen(argv[2], "r")) == NULL){
fprintf(stderr,"can't open base file\n"); return 1;
}
while(!feof(diffFile)){
/* read diff item */
fscanf(diffFile,"%s\n",diffChars);
int isFind=0;
/* find item exist */
rewind(baseFile);
while(!feof(baseFile)){
fscanf(baseFile,"%s\n",baseChars);
if(strcmp(diffChars,baseChars) == 0){ isFind=1; break; }
}
/* not find itme */
if(!isFind){
printf("%s\n",diffChars);
}
}
fclose(diffFile);
fclose(baseFile);
return 0;
}
2011-01-18
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 |
| 列印 | |
| 發布 | 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 |
購物類
| atm | atm |
| 現折活動 | 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 |
| 信箱 | |
| 忘記密碼 | 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 命名規則
