#!/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 命名規則