星期四, 3月 31, 2011

mysql datetime format

  • 常用格式
    • 2011-03-28
      DATE_FORMAT(NOW(), '%Y-%m-%d');
  • DATE_FORMAT(date,format)

%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數字, 4 位
%y 年, 數字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數, 數字(00……31)
%e 月份中的天數, 數字(0……31)
%m 月, 數字(01……12)
%c 月, 數字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(001……366)
%H 小時(00……23)
%k 小時(0……23)
%h 小時(01……12)
%I 小時(01……12)
%l 小時(1……12)
%i 分鐘, 數字(00……59)
%r 時間,12 小時(hh:mm:ss [AP]M)
%T 時間,24 小時(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一個星期中的天數(0=Sunday ……6=Saturday )
%U 星期(0……52), 這裡星期天是星期的第一天
%u 星期(0……52), 這裡星期一是星期的第一天
%% 一個文字「%」。

Reference
Mysql日期和时间函数不求人

星期四, 3月 24, 2011

省下網路費 (連接2台無線AP)

由於跟老婆娘家住同社區 直線距離也只差7,8公尺而已
一直礙於沒辦法拉條網路線,只得各自付筆網路費

直到幾天前 同事才說用2台無線AP連接起來就好啦
才一語驚醒夢中人,且開心的是2台無線AP(Buffalo WHR-G54S)是同款且支援Bridge模式
這幾天試了好久,都一度想要放棄了
但想到每個月可以省600塊網路費 還是仍力嘗試
總於在昨天連續試了近5個小時下成功了 嗚 ...

我還是快記下來,免得將來又來一次...
而且Buffalo WHR-G54S已經停產了,將來現在產品網頁在官網已經搜尋不到了
還是用google才找到,不過看官網出了幾台都挺不錯的無線基地台,至少號稱不用太多設定了

設定說明
官方文件:WHR-G54S WDS設定教學,WHR系列WDS無線中繼功能設定方式

以下截錄官方教學文的內容
  • 成功要件
    要成功的將兩部AP 設定無線橋接/中繼/漫遊的要件如下:
    1. 兩部AP 的LAN IP Address 設定為同網段之不同IP (例如:192..168.11.×)。
    2. 第二部AP 的DHCP Server 功能均需關畢。
    3. 兩部AP 的WDS 功能均需 」Enable」。
    4. 兩部AP 的Wireless MAC Address 應互相抄寫。
    5. 兩部AP 的WEP Key 必須相同 (請參閱說明書設定)。
    6. 不可使用AOSS 功能
    7. 兩部AP 的Channel 必須相同 (請參閱說明書設定)。
    8. 兩部AP 的ESSID 必須相同方可達成漫遊功能(請參閱說明書設定)。
    9. 兩部AP 之間的距離必須要在可互相收到對方訊號的範圍內。
  • 步驟
    注意事項
    • 第一台IP:192.168.11.1,但第二台切到BRI時,要連192.168.11.100
    • 第二台將dhcp關掉時,會透過第一台要ip,因此當2台未連接成功而要連第二台AP時,會抓不到ip,要自行設定ip
    1. 第二台AP 底座的開關要接到BRI 的位置上 , 先使用網路線串接到第一台AP
      注意: 以下之步驟兩台AP 皆需設定
    2. 兩台AP 的橋接設定皆在"Advanced"-->"Wireless Config"內做設定
    3. 兩台AP 的"Wireless Config"-->"Basic"內的設定調整
      • Wireless Channel-->預設是"Auto Channel",要選擇一成個固定的"Channel" , 兩台要設成一樣
      • FrameBursting-->預設是"125*High Speed Mode",要改選成" FrameBursting"
      • 按"Apply"儲存設定
      p.s. 官方是建議SSID最後設定,因為改SSID要重連線,隨意啦
    4. 兩台AP 的"Wireless Config"-->"Security"內的設定
      • Wireless Encryption-->預設是"No Encryption",要選擇"WEP"
      • WEP Encryption Key-->預設是"Character Input:13 Characters(WEP128)",選擇要設定的位元數
      • 在1:的空白格上輸入要設定的密碼
      • 按"Apply"儲存設定
    5. 兩台AP 的"Wireless Config"-->"Repeater"內的設定
      • Repeater/Bridge (WDS)-->預設是"Disable",要改選成"Enable"後按"Apply"
      • Registered Access Points-->點選"Edit Registered WDS Partners"
      • Wireless MAC Address of an Access Point-->的空格中填入另一台的MAC Address,
      後按下"New Partner"
    6. 確定已經設定成功後,將"Wireless Config"-->"Basic"-->"SSID"設定成相同的名字
    7. 以上部驟完成後即完成 WDS 之設定

星期三, 3月 23, 2011

MySQL 資料庫備份與還原

  • 備份
    //將DB1輸出到DB1.sql
    #mysqldump -u root -p DB1 > DB1.sql

  • 還原
    • 還原整個資料庫
      #mysql -u root -p DB1 < DB1.sql
    • 還原資料表 (其實一樣)
      #mysql -u root -p DB1 < DB1_Table1.sql

Reference
MySQL 資料庫的備份與還原

星期五, 3月 18, 2011

MySQL效能 - 欄位

varchar + utf-8 長度設超過 170 的話, 就無法存在 memory 裡。別以為用 varchar 就可以亂設最長長度啊。 ...截至 fcamel MySQL varchar 長度和效能問題

Zend validator

  • validator
    $validator = new Zend_Validate_NotEmpty();
    if($validator->isValid($username))
    ...
  • chain
    $validatorChain = new Zend_Validate();
    $validatorChain->addValidator(new Zend_Validate_NotEmpty())
    ->addValidator(new Zend_Validate_Alnum()));

  • 自訂訊息
    $alnum = new Zend_Validate_Alnum();
    $alnum->setMessage('非數字');

    Zend_Validate_EmailAddress的setMessage沒反應,v1.11前都還沒修好

Zend View Helper

利用View Helper,在網頁中呈現使用者登入的資訊
<html>
//header ...
$this->LoggedInUser->loggedInUser()();
//content ...
</html>

class Zend_View_Helper_LoggedInUser
{
    protected $_view;
    function setView($view){
        $this->_view = $view;
    }
    function loggedInUser(){
        $auth = Zend_Auth::getInstance();
        if($auth->hasIdentity()) #2{
            $logoutUrl = $this->_view->linkTo('auth/logout');
            $user = $auth->getIdentity(); #3
            $username = $this->_view->escape(ucfirst($user->name));
            $string = 'Logged in as ' . $username . ' | Log out';
        } else {
            $loginUrl = $this->_view->linkTo('auth/identify'); #4
            $string = 'Log in'; #5
        }
        return $string;
    }
}

Zend View Render

View Render
$view = new Zend_View();
$view->setScriptPath(dirname(__FILE__) . “/templates”); //template的位置
$view->name = $name; //參數
$view->email = $email;
$view->render(‘form.phtml’); //render


template(login.phtml)
<html>
<body>
Login e-mail:email; ?>
Login password:password; ?>
</body>
</html>

星期四, 3月 17, 2011

ie css min-height問題

網上查只有ie6有不支援min-height問題
不過我也不知那機車美工怎麼做的
我的ie8不會自動延展div

最後用javascript自己給它"動"一下
做法是
function onload(){
var tmp = $('#content').css('position'); //content是破板的div
$("#content").css('position','absolute');
$("#content").css('position',tmp);
}


Reference
解決IE6不支援css min-width與min-height

星期三, 3月 16, 2011

nl2br問題

本來用mysql_real_escape_string用的好好的 不過最近處理textarea有斷行的文字 原本想用nl2br轉,卻一直轉失敗,一直沒有辦法判斷出\n
$value = mysql_real_escape_string($value); //先escape也會失敗<
$value = nl2br($value);

----result----
11/n22


調一下順序
$value = ereg_replace( "\n", "", $value); //不知為何用nl2br會失敗
$value = mysql_real_escape_string($value); //先escape也會失敗

----result----
11    <----有斷行,不過還是不對 
\n22


改掉nl2br的方法
$value = mysql_real_escape_string($value); //先escape也會失敗
$value = ereg_replace( "\n", "", $value); 
----result----
11    <-- 總算是成功了 
22

星期二, 3月 15, 2011

js取得置中位置

  1. 左右皆置中
    var $dialog = $("<div>hello</div>");
    var left = ($(window).width() - $dialog.outerWidth()) / 2 + $(window).scrollLeft() + "px";
    var top = ($(window).height() - $dialog.outerHeight() ) / 2 + $(window).scrollTop() + "px";
  2. click button後,置於button正下方
    onclick = "showDialog(this)
    function showDialog(obj)
    var margin_top = 30; //自行預設設margin top距離

    var pos = $(obj).offset();
    var eWidth = $(obj).outerWidth();
    var mWidth = $confirmBox.outerWidth();
    var left = (pos.left - mWidth/2) + "px";
    var top = margin_top + pos.top + "px";

星期二, 3月 08, 2011

國家代碼、中文名稱、英文名稱

直接複製,貼到excel組成sql字串

代碼 英文 中文
'AD' , 'Andorra' , '安道爾'
'AE' , 'United Arab Emirates' , '阿拉伯聯合酋長國'
'AF' , 'Afghanistan' , '阿富汗'
'AG' , 'Antigua & Barbuda' , '安提瓜和巴布達'
'AI' , 'Anguilla' , '安圭拉'
'AL' , 'Albania' , '阿爾巴尼亞'
'AM' , 'Armenia' , '亞美尼亞'
'AN' , 'Netherlands Antilles' , '荷屬安的列斯'
'AO' , 'Angola' , '安哥拉'
'AQ' , 'Antarctica' , '南極洲'
'AR' , 'Argentina' , '阿根廷'
'AS' , 'American Samoa' , '美屬薩摩亞'
'AT' , 'Austria' , '奧地利'
'AU' , 'Australia' , '澳大利亞'
'AW' , 'Aruba' , '阿魯巴'
'AZ' , 'Azerbaijan' , '阿塞拜疆'
'BA' , 'Bosnia and Herzegovina' , '波斯尼亞和黑塞哥維那'
'BB' , 'Barbados' , '巴巴多斯'
'BD' , 'Bangladesh' , '孟加拉'
'BE' , 'Belgium' , '比利時'
'BF' , 'Burkina Faso' , '布其納法索'
'BG' , 'Bulgaria' , '保加利亞'
'BH' , 'Bahrain' , '巴林'
'BI' , 'Burundi' , '布隆迪'
'BJ' , 'Benin' , '貝寧'
'BM' , 'Bermuda' , '百慕達'
'BN' , 'Brunei Darussalam' , '汶萊'
'BO' , 'Bolivia' , '玻利維亞'
'BR' , 'Brazil' , '巴西'
'BS' , 'Bahama' , '巴哈馬'
'BT' , 'Bhutan' , '不丹'
'BV' , 'Bouvet Island' , '布維島'
'BW' , 'Botswana' , '博茨瓦納'
'BY' , 'Belarus' , '白俄羅斯'
'BZ' , 'Belize' , '伯利茲'
'CA' , 'Canada' , '加拿大'
'CC' , 'Cocos (Keeling) Islands' , '可可島'
'CF' , 'Central African Republic' , '中非共和國'
'CG' , 'Congo' , '剛果'
'CH' , 'Switzerland' , '瑞士'
'CI' , 'Côte D\'ivoire (Ivory Coast)' , '象牙海岸'
'CK' , 'Cook Iislands' , '庫克群島'
'CL' , 'Chile' , '智利'
'CM' , 'Cameroon' , '喀麥隆'
'CN' , 'China' , '中國'
'CO' , 'Colombia' , '哥倫比亞'
'CR' , 'Costa Rica' , '哥斯達黎加'
'CU' , 'Cuba' , '古巴'
'CV' , 'Cape Verde' , '佛得角'
'CX' , 'Christmas Island' , '聖誕島'
'CY' , 'Cyprus' , '塞浦路斯'
'CZ' , 'Czech Republic' , '捷克共和國'
'DE' , 'Germany' , '德國'
'DJ' , 'Djibouti' , '吉布提'
'DK' , 'Denmark' , '丹麥'
'DM' , 'Dominica' , '多米尼加'
'DO' , 'Dominican Republic' , '多米尼加共和國'
'DZ' , 'Algeria' , '阿爾及利亞'
'EC' , 'Ecuador' , '厄瓜多爾'
'EE' , 'Estonia' , '愛沙尼亞'
'EG' , 'Egypt' , '埃及'
'EH' , 'Western Sahara' , '西撒哈拉'
'ER' , 'Eritrea' , '厄立特里亞'
'ES' , 'Spain' , '西班牙'
'ET' , 'Ethiopia' , '埃塞俄比亞'
'FI' , 'Finland' , '芬蘭'
'FJ' , 'Fiji' , '斐濟'
'FK' , 'Falkland Islands (Malvinas)' , '福克蘭群島(馬爾維納斯)'
'FM' , 'Micronesia' , '密克羅尼西亞'
'FO' , 'Faroe Islands' , '法羅群島'
'FR' , 'France' , '法國'
'FX' , 'France, Metropolitan' , '法國本土'
'GA' , 'Gabon' , '加蓬'
'GB' , 'United Kingdom' , '英國'
'GD' , 'Grenada' , '格林納達'
'GE' , 'Georgia' , '格魯吉亞'
'GF' , 'French Guiana' , '法屬圭亞那'
'GH' , 'Ghana' , '加納'
'GI' , 'Gibraltar' , '直布羅陀'
'GL' , 'Greenland' , '格陵蘭'
'GM' , 'Gambia' , '岡比亞'
'GN' , 'Guinea' , '幾內亞'
'GP' , 'Guadeloupe' , '瓜德羅普島'
'GQ' , 'Equatorial Guinea' , '赤道幾內亞'
'GR' , 'Greece' , '希臘'
'GS' , 'South Georgia and the South Sandwich Islands' , '南喬治亞島和南桑威奇群島'
'GT' , 'Guatemala' , '危地馬拉'
'GU' , 'Guam' , '關島'
'GW' , 'Guinea-Bissau' , '幾內亞比紹'
'GY' , 'Guyana' , '圭亞那'
'HK' , 'Hong Kong' , '香港'
'HM' , 'Heard & McDonald Islands' , '赫德和麥克唐納群島'
'HN' , 'Honduras' , '洪都拉斯'
'HR' , 'Croatia' , '克羅地亞'
'HT' , 'Haiti' , '海地'
'HU' , 'Hungary' , '匈牙利'
'ID' , 'Indonesia' , '印度尼西亞'
'IE' , 'Ireland' , '愛爾蘭'
'IL' , 'Israel' , '以色列'
'IN' , 'India' , '印度'
'IO' , 'British Indian Ocean Territory' , '英屬印度洋領地'
'IQ' , 'Iraq' , '伊拉克'
'IR' , 'Islamic Republic of Iran' , '伊朗伊斯蘭共和國'
'IS' , 'Iceland' , '冰島'
'IT' , 'Italy' , '義大利'
'JM' , 'Jamaica' , '牙買加'
'JO' , 'Jordan' , '約旦'
'JP' , 'Japan' , '日本'
'KE' , 'Kenya' , '肯亞'
'KG' , 'Kyrgyzstan' , '吉爾吉斯斯坦'
'KH' , 'Cambodia' , '柬埔寨'
'KI' , 'Kiribati' , '基里巴斯'
'KM' , 'Comoros' , '科摩羅'
'KN' , 'St. Kitts and Nevis' , '聖基茨和尼維斯'
'KP' , 'North Korea' , '朝鮮'
'KR' , 'Korea' , '韓國'
'KW' , 'Kuwait' , '科威特'
'KY' , 'Cayman Islands' , '開曼群島'
'KZ' , 'Kazakhstan' , '哈薩克斯坦'
'LA' , 'Lao People\'s Democratic Republic' , '寮國'
'LB' , 'Lebanon' , '黎巴嫩'
'LC' , 'Saint Lucia' , '聖盧西亞'
'LI' , 'Liechtenstein' , '列支敦士登'
'LK' , 'Sri Lanka' , '斯里蘭卡'
'LR' , 'Liberia' , '利比里亞'
'LS' , 'Lesotho' , '萊索托'
'LT' , 'Lithuania' , '立陶宛'
'LU' , 'Luxembourg' , '盧森堡'
'LV' , 'Latvia' , '拉托維亞'
'LY' , 'Libyan Arab Jamahiriya' , '利比亞'
'MA' , 'Morocco' , '摩洛哥'
'MC' , 'Monaco' , '摩納哥'
'MD' , 'Moldova' , '摩爾多瓦'
'MG' , 'Madagascar' , '馬達加斯加'
'MH' , 'Marshall Islands' , '馬紹爾群島'
'ML' , 'Mali' , '馬里'
'MN' , 'Mongolia' , '蒙古'
'MM' , 'Myanmar' , '緬甸'
'MO' , 'Macau' , '澳門'
'MP' , 'Northern Mariana Islands' , '北馬里亞納群島'
'MQ' , 'Martinique' , '馬提尼克'
'MR' , 'Mauritania' , '毛里塔尼亞'
'MS' , 'Monserrat' , '蒙特塞拉特'
'MT' , 'Malta' , '馬爾他'
'MU' , 'Mauritius' , '毛里求斯'
'MV' , 'Maldives' , '馬爾地夫'
'MW' , 'Malawi' , '馬拉威'
'MX' , 'Mexico' , '墨西哥'
'MY' , 'Malaysia' , '馬來西亞'
'MZ' , 'Mozambique' , '莫桑比克'
'NA' , 'Namibia' , '納米比亞'
'NC' , 'New Caledonia' , '新喀裡多尼亞'
'NE' , 'Niger' , '尼日爾'
'NF' , 'Norfolk Island' , '諾福克島'
'NG' , 'Nigeria' , '尼日利亞'
'NI' , 'Nicaragua' , '尼加拉瓜'
'NL' , 'Netherlands' , '荷蘭'
'NO' , 'Norway' , '挪威'
'NP' , 'Nepal' , '尼泊爾'
'NR' , 'Nauru' , '瑙魯'
'NU' , 'Niue' , '紐埃'
'NZ' , 'New Zealand' , '紐西蘭'
'OM' , 'Oman' , '阿曼'
'PA' , 'Panama' , '巴拿馬'
'PE' , 'Peru' , '秘魯'
'PF' , 'French Polynesia' , '法屬波利尼西亞'
'PG' , 'Papua New Guinea' , '巴布亞新幾內亞'
'PH' , 'Philippines' , '菲律賓'
'PK' , 'Pakistan' , '巴基斯坦'
'PL' , 'Poland' , '波蘭'
'PM' , 'St. Pierre & Miquelon' , '聖皮埃爾和密克隆群島'
'PN' , 'Pitcairn' , '皮特凱恩'
'PR' , 'Puerto Rico' , '波多黎各'
'PT' , 'Portugal' , '葡萄牙'
'PW' , 'Palau' , '帕勞'
'PY' , 'Paraguay' , '巴拉圭'
'QA' , 'Qatar' , '卡塔爾'
'RE' , 'Réunion' , '留尼汪'
'RO' , 'Romania' , '羅馬尼亞'
'RU' , 'Russian Federation' , '俄羅斯聯邦'
'RW' , 'Rwanda' , '盧旺達'
'SA' , 'Saudi Arabia' , '沙特阿拉伯'
'SB' , 'Solomon Islands' , '所羅門群島'
'SC' , 'Seychelles' , '塞舌爾'
'SD' , 'Sudan' , '蘇丹'
'SE' , 'Sweden' , '瑞典'
'SG' , 'Singapore' , '新加坡'
'SH' , 'St. Helena' , '聖赫勒拿'
'SI' , 'Slovenia' , '斯洛文尼亞'
'SJ' , 'Svalbard & Jan Mayen Islands' , '斯瓦爾巴群島和揚馬延島'
'SK' , 'Slovakia' , '斯洛伐克'
'SL' , 'Sierra Leone' , '塞拉利昂'
'SM' , 'San Marino' , '聖馬力諾'
'SN' , 'Senegal' , '塞內加爾'
'SO' , 'Somalia' , '索馬里'
'SR' , 'Suriname' , '蘇里南'
'ST' , 'Sao Tome & Principe' , '聖多美和普林西比'
'SV' , 'El Salvador' , '薩爾瓦多'
'SY' , 'Syrian Arab Republic' , '敘利亞'
'SZ' , 'Swaziland' , '史瓦濟蘭'
'TC' , 'Turks & Caicos Islands' , '特克斯和凱科斯群島'
'TD' , 'Chad' , '查德'
'TF' , 'French Southern Territories' , '法國南部領土'
'TG' , 'Togo' , '多哥'
'TH' , 'Thailand' , '泰國'
'TJ' , 'Tajikistan' , '塔吉克斯坦'
'TK' , 'Tokelau' , '托克勞'
'TM' , 'Turkmenistan' , '土庫曼斯坦'
'TN' , 'Tunisia' , '突尼斯'
'TO' , 'Tonga' , '東加'
'TP' , 'East Timor' , '東帝'
'TR' , 'Turkey' , '土耳其'
'TT' , 'Trinidad & Tobago' , '特立尼達和多巴哥'
'TV' , 'Tuvalu' , '圖瓦盧'
'TW' , 'Taiwan' , '台灣'
'TZ' , 'Tanzania' , '坦桑尼亞聯合共和國'
'UA' , 'Ukraine' , '烏克蘭'
'UG' , 'Uganda' , '烏干達'
'UM' , 'United States Minor Outlying Islands' , '美國本土外小島嶼'
'US' , 'United States of America' , '美國'
'UY' , 'Uruguay' , '烏拉圭'
'UZ' , 'Uzbekistan' , '烏茲別克斯坦'
'VA' , 'Vatican' , '梵蒂岡'
'VC' , 'St. Vincent & the Grenadines' , '聖文森特和格林納丁斯'
'VE' , 'Venezuela' , '委內瑞拉'
'VG' , 'British Virgin Islands' , '英屬維爾京群島'
'VI' , 'United States Virgin Islands' , '美屬維爾京群島'
'VN' , 'Viet Nam' , '越南'
'VU' , 'Vanuatu' , '瓦努阿圖'
'WF' , 'Wallis & Futuna Islands' , '瓦利斯群島和富圖納群島'
'WS' , 'Samoa' , '薩摩亞'
'YE' , 'Yemen' , '葉門'
'YT' , 'Mayotte' , '馬約特'
'YU' , 'Yugoslavia' , '南斯拉夫'
'ZA' , 'South Africa' , '南非'
'ZM' , 'Zambia' , '贊比亞'
'ZR' , 'Zaire' , '扎伊爾'
'ZW' , 'Zimbabwe' , '津巴布韋'
'ZZ' , 'Unknown or unspecified country' , '未知'

星期五, 3月 04, 2011

補齊固定字串長度

string str_pad( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

$input "Alien";
echo 
str_pad($input10);                      // produces "Alien     " 

echo 
str_pad($input10"-="STR_PAD_LEFT);  // produces "-=-=-Alien"
echo str_pad($input10"_"STR_PAD_BOTH);   // produces "__Alien___" 
echo 
str_pad($input"___");               // produces "Alien_"



UTF8問題
function mb_str_pad($input, $pad_length, $pad_string=' ', $pad_type=STR_PAD_RIGHT) {
   $diff = strlen($input) - mb_strlen($input, 'UTF-8');
   return str_pad($input, $pad_length+$diff, $pad_string, $pad_type);
}