顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - appleboy

頁: 1 2 [3] 4 5 ... 8
61
PHP程式設計討論區 / 回覆: 網址問題
« 於: 2009-04-03 16:03 »
MVC 也是利用 apache mod rewrite 功能,把所有網頁轉到 index.php 再來處理

底下幾篇文章你可以看看,我寫得心得:

http://blog.wu-boy.com/2008/02/17/139/

http://blog.wu-boy.com/2007/03/22/82/

http://blog.wu-boy.com/2006/12/03/50/

http://blog.wu-boy.com/2007/01/18/63/

63
網頁技術 / 回覆: php多言語問題
« 於: 2009-03-29 22:37 »

64
小補充:

1. jQuery 1.3 後不能再用 [@attr=value] 的形式,要改用 [attr=value]
2. 最新版的 jQuery Form Plugin 還可以使用 AJAX 檔案上傳,超讚!

嗯嗯 測試 1.3.2 版就不能利用 @attr=value 的方式了,要把 @ 符號拿掉

http://docs.jquery.com/Selectors

引用
Note: In jQuery 1.3 [@attr] style selectors were removed (they were previously deprecated in jQuery 1.2). Simply remove the '@' symbol from your selectors in order to make them work again.

65
Google 收尋一下關鍵字:div display none 這些應該就夠了喔

我推一下 jQuery 裡面的 fadeOut fadeIn show hide 這些

http://snipplr.com/view/912/jquery-fade-in-fade-out/

66
原文:Zend Framework 安裝筆記教學 Appserv + Zend Framework (一)

今天在公司上班需要用到 Zend Framework 這一套 MVC 的軟體,用來開發 Google Calendar APIs,這 API 是用 Zend Framework 下去寫得,在 Google 文件 說的很清楚,那底下來介紹一下安裝過程吧,首先環境要先有 Apache + PHP + MySQL,我本身用 Appserv 懶人套件,我是用 AppServ 2.5.10 裡面包含底下:
  • Apache 2.2.8
  • PHP 5.2.6
  • MySQL 5.0.51b
  • phpMyAdmin-2.10.3
1. 先修改 apache 設定 httpd.conf
#LoadModule rewrite_module modules/mod_rewrite.so

改成 unmark 掉
LoadModule rewrite_module modules/mod_rewrite.so

修改 include_path 在 php.ini 裡面,或者是利用 set_include_path 來修改
2. 開始安裝 Zend Framework,首先去 官方網站下載,目前版本:Zend Framework 1.7.7,了解 MVC 架構。可以參考:透視 WebMVC 這篇。


3. 資料架構:

上面這張圖就是 Zend 的目錄架構圖,我們只需要注意 application,htdocs 跟 library 就可以了,底下介紹3個資料夾的個別用途:
application 資料夾:裡面包含 controllers (MVC之C),models (MVC之M) 跟 views (MVC之V),Views 底下存放是要顯示的元件。
htdocs 資料夾:裡面 images (存放影像檔案),scripts (存放script檔) styles (存放CSS檔).htaccess (配合url rewrite之檔案) index.php (bootstrap file),這個資料夾是對應到Document root 的設定:
代碼: [選擇]
<VirtualHost *:80>

  ServerName zf-tutorial.localhost

  DocumentRoot /var/www/html/zf-tutorial/public

  <Directory "/www/cs">

    AllowOverride All

  </Directory>

</VirtualHost>

這樣只要在網址列打入 zf-tutorial.localhost 就可以對應到 localhost,然後把網址對應IP寫入到Linux:/etc/hosts 或者是Windows:c:\\windows\system32\drivers\etc\hosts,library 裡面就單一個資料夾,裡面只有Zend 這個套件,其實基本上也不用動它,升級的時厚紙需要換掉 Zend 這個資料夾即可。
接下來設定 .htaccess 跟 index.php 因為 Zend Framework會幫忙設定簡短網址,所以我們必須要設定這兩個檔案來達到全部網址都轉向 index.php,這兩個檔案都必須放到 htdocs資料夾裡面,底下就來說明這兩個檔案寫法。

htdocs/.htaccess
代碼: [選擇]
# Rewrite rules for Zend Framework

# 非 PHP 檔案不轉向到 index.php

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

# Security: Don't allow browsing of directories

# 關閉檔案列表功能

Options -Indexes

# PHP settings

# 關閉 magic_quotes_gpc register_globals

# 打開 short_open_tag

php_flag magic_quotes_gpc off

php_flag register_globals off

php_flag short_open_tag on
htdocs/index.php
代碼: [選擇]
<?php

  
/*

  * 設定 Error Report 的等級

  */  

  
error_reporting(E_ALL E_STRICT);  

  
/*

  * 設定台北時區

  */   

  
date_default_timezone_set(&#39;Asia/Taipei&#39;);  //設定時區為台北



  /*

  * 設定 include_path 固定把 library 資料夾加入 path 裡面

  */

  
define (&#39;P_S&#39;, PATH_SEPARATOR);

  
set_include_path(&#39;.&#39; .P_S .&#39;../library&#39; .P_S .&#39;../application/models/&#39; .P_S .get_include_path());



  
require_once &#39;Zend/Loader.php&#39;;

  
Zend_Loader::registerAutoload();



  
/*

  * 設定 Controller 的資料夾

  */

  
$frontController Zend_Controller_Front::getInstance();

  
$frontController->setControllerDirectory(&#39;../application/controllers&#39;);

  /*

  * 輸出程式

  */  

  
$frontController->dispatch();

  

?>
上面設定好之後,就來看一個範例吧,首先看底下的圖:

這是一張 index 的撰寫程式的圖,裡面包含 Control name,上面這張圖說明了在 index 的首頁,包含了 add editdelete 的功能,那我們必須瞭解 Control name 的命名方式跟 Zend View 的命名放置關係,Control的命名方式就是 {Contrl_Name}Controller.php 放置在 application/controller裡面,那裡面包含了indexAction(),addAction(),editAction(),deleteAction()這些功能,那對應的 html 命名方式就放在 views/scripts/{controllername}/{action_bame}.phtml 記住副檔名是 phtml,那底下是 IndexController.php 寫法。
application/controllers/IndexController.php
代碼: [選擇]
<?php

class IndexController extends Zend_Controller_Action

{

  function 
indexAction()

  {

    
$this->view->title "My Albums";

  }

  function 
addAction()

  {

    
$this->view->title "Add New Album";

  }

  function 
editAction()

  {

    
$this->view->title "Edit Album";

  }

  function 
deleteAction()

  {

    
$this->view->title "Delete Album";

  }

}

?>

會發現有4個動作,分別對應4個view 的檔案:
application/views/scripts/index/index.phtml
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  <title><?php echo $this->escape($this->title); ?></title>

</head>

<body>

  <h1><?php echo $this->escape($this->title); ?></h1>

</body>

</html>

application/views/scripts/index/add.phtml
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  <title><?php echo $this->escape($this->title); ?></title>

</head>

<body>

  <h1><?php echo $this->escape($this->title); ?></h1>

</body>

</html>

application/views/scripts/index/edit.phtml
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  <title><?php echo $this->escape($this->title); ?></title>

</head>

<body>

  <h1><?php echo $this->escape($this->title); ?></h1>

</body>

</html>

application/views/scripts/index/delete.phtml
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  <title><?php echo $this->escape($this->title); ?></title>

</head>

<body>

  <h1><?php echo $this->escape($this->title); ?></h1>

</body>

</html>

這樣大致上就可以 work 了,請打入網址:
index:http://localhost/index/index
add:http://localhost/index/add
edit:http://localhost/index/edit
delete:http://localhost/index/delete
參考網站:
Zend Framework安裝
Akra’s DevNotesGetting Started with Zend Framework
酷學園php下的MVC [Zend Framework] 教學

Related ViewTags: php, Zend Framework

原文:Zend Framework 安裝筆記教學 Appserv + Zend Framework (一)

67
我怎麼覺得這些顏色讓我閱讀很不方便

眼睛會怪怪的~ ^^

68
我推 twu2 的作法,核對帳號,帳號核對完再核對密碼部份

這樣比較安全,國外 open source 作法。

69

原文:[jQuery] 表單取值 radio checkbox select text 驗證表單

最近在專案全面使用 jQuery 來整合後台部份,目前還沒有大量用到 AJAX 的部份,等以後有時間會全部轉換 AJAX 利用 JSON 的部份,其實之前就有寫到一篇用 datatype JSON 的方式來實現 AJAX:[jQuery] AJAX 學習筆記 (一) 如何使用 JSON 驗證使用者表單,大家可以參考看看,不過今天大概寫一下昨天在實做驗證表單取值的一些心得,在設計後台的時候,我把編輯文章跟新增文章的功能做在同一塊,然後利用 jQuery 去改變傳值狀態,利用 hidden 的 mode 欄位來決定是要新增文章還是修改文章
代碼: [選擇]
$(document).ready(function()
{
  $("#add_news_link").click(function(){
    $("#mode").attr("value", "add");
  });
})

這個時候,就把要傳送的狀態改成 add 了,不過編輯文章的資料都還留在也面上面,所以必須把很多欄位都清空,例如 textpassword textarea checkbox radio select 這些欄位全部都歸零,透過 jQuery 針對 Form 的id 值,尋找 input 欄位資訊,可以參考 jQuery Doc 的 Form Selectors 的文件,裡面提到,如果要找尋全部都欄位,就可以利用
代碼: [選擇]
$('#myForm :input')
或者是:
代碼: [選擇]
/* 前者 */
$('input:radio', myForm)

這還可以寫成
代碼: [選擇]
/* 後者 */
$('input[@type=radio]')

如果您的表單非常的大,建議可用前者,速度上面會比較快喔,所以針對整個 Form Selectors 的方式寫了一個 function 來掃全部欄位:
代碼: [選擇]
$("#news_form :input").each(
function(){
  switch($(this).attr('type')){
    case 'radio':
      /* 取消所有選取 */
      $(this).attr("checked", false);
    case 'checkbox':
      /* 取消所有選取 */
      $(this).attr("checked", false);
    break;
    case 'select-one':
      /* 把 select 元件都歸到選第一項 */
      $(this)[0].selectedIndex = 0;
    break;
    case 'text':
      /* 清空 text 來欄位 */
      $(this).attr("value", "");
    break;
    case 'password':
      /* 清空 password 來欄位 */
      $(this).attr("value", "");
    case 'hidden':
      /*
      * 不清空 hidden,通常保純此欄位     
      */
    case 'textarea':
      /* 清空 textarea 來欄位 */
      $(this).attr("value", "");
    break;
  }
});

這樣就可以清空所有欄位,不過在網路上找到更方便的 jQuery Form Plugin,這個外掛可以利用一行程式,取代掉上面的程式碼:
代碼: [選擇]
$('#news_form').clearForm();
我去看了一下程式碼,寫法就跟我差不多
代碼: [選擇]
if (t == 'text' || t == 'password' || tag == 'textarea')
    this.value = '';
else if (t == 'checkbox' || t == 'radio')
    this.checked = false;
else if (tag == 'select')
    this.selectedIndex = -1;

有興趣可以去試試看喔,那也可以檢查表單送出前欄位有無填寫完整:
代碼: [選擇]
$("#news_form").submit(
  function(e){
    if($("#news_name").val() == "") 
    {
      $("#news_name").focus();
      alert("標題沒填寫");
      return false;
    }
    else if($("#news_desc").val() == "")
    {
      $("#news_desc").focus();
      alert("內容沒填寫");
      return false;       
    }
    return true;     
  }
);

這樣檢查如果還不夠,那推薦您用 jQuery plugin: Validation,這個還不錯用,可以先試試看 demo 程式,另外這個作者也推薦剛剛說到的 jQuery Form Plugin 可以處理 AJAX 的部份喔,還不錯。
底下一些取值判斷的筆記:
代碼: [選擇]
/*
* text 欄位取值
*/
$("#news_name").val();
$("#news_name").arrt("value");
/*
* 取消 checkbox 欄位選取
*/
$(#news_top).attr("checked", false);
$(#news_top).attr("checked", "");
/*
* 判斷 checkbox 是否選取
*/
if($("#news_top").attr('checked')==undefined)
/*
* 全選 checkbox 欄位,或者反向選取
*/
$("#clickAll").click(function() {
  $("input[@name='news_top[]']").each(function() {
    if($(this).attr("checked"))
    {
      $(this).attr("checked", false);
    }
    else
    {
      $(this).attr("checked", true);
    }
  });
});
/*
* checkbox 的 value 值
*/
$('input[@name="news_top"][@checked]').val();
/*
* 選取 select 的 text 值
*/
$("select[@name='categories_id']option[@selected]").text();
/*
* 選取 select 的 value 值
*/
$("select[@name='categories_id']").val();

還有很多可以學習的,可以參考 visualjquery 這網站
參考網站:
轉:jquery radio取值,checkbox取值,select取值,radio選中,checkbox選中,select選中,及其相關
jQuery 點擊 Input / Textarea 全選、複製的寫法(Widget)
jQuery 學習筆記 (6) — 操作 DOM 物件
Related View原文:[jQuery] 表單取值 radio checkbox select text 驗證表單

70

原文:[jQuery] Javascript plotting library 畫圖 chart

沒想到 jQuery 可以做到畫圖的功能,Flot是 Javascript plotting library for jQuery,目前支援瀏覽器:Internet Explorer6/7/8,Firefox 2.x+,Safari 3.0+,Opera 9.5 和 Konqueror4.x+,瀏覽器跑起來都還不錯快,唯獨 Internet Explorer 有另外寫一個 excanvas 模擬器,也就是在 IE上面看還需要 include 另外一個 js 檔案,才可以顯示圖形,我在 google 找到一些也是 PHP Chart的好用工具,都是國外開發的:Libchart - Simple PHP chart drawing libraryXML/SWF Charts,其實還蠻多的,自己 google 就會出現一堆,不過要上去試試看。

我個人還蠻喜歡 jQuery 的,所以我就推薦 Flot 這一個 jQuery 的 library,在官網上面有很多 example 的介紹,可以去看看這裡
畫最簡單的圖,還有支援 cos sin 的三角函數喔

代碼: [選擇]
$(function () {

/*

[橫座標,縱座標]

Math.sin 支援三角函數

*/

    var d1 = [];

    for (var i = 0; i < 14; i += 0.5)

        d1.push([i, Math.cos(i)]);



    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];



    // a null signifies separate line segments

    var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];

   

    $.plot($("#placeholder"), [ d1, d2, d3 ]);

});
畫出來的圖如下:


也可以加上 label 標籤喔
代碼: [選擇]
$(function () {
    var d1 = [];
    for (var i = 0; i < 14; i += 0.5)
        d1.push([i, Math.cos(i)]);

    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13], [15, 20]];

    var d3 = [];
    for (var i = 0; i < Math.PI * 5; i += 0.25)
        d3.push([i, Math.sin(i)]);

   
    $.plot($("#placeholder"),
    [
        { label: "線條一",  data: d1},
        { label: "線條二",  data: d2},
        { label: "線條三",  data: d3}
    ]   
    );
});


原文:[jQuery] Javascript plotting library 畫圖 chart

71
工作機會 / 回覆: 誠徵PHP程式設計師
« 於: 2009-03-16 14:24 »
在 ptt bbs上面看到的,不確定是不是同一個人 po 的

引用
【公司名稱】
數位人性科技股份有限公司 ( veryWed 非常婚禮 )

【工作職缺】
全職網站程式設計師

【希望性別】
不拘

【工作內容】
veryWed.com 網站程式設計工作

【徵求條件】
1.熟悉尖端網路技術並且具備人文關懷的特質

2.熟悉 php, mysql, linux, css, javascript, flash/flex/AIR

3.工作態度熱心負責、有團隊合作之精神,具備良好之溝通能力

4.具有自我學習的能力, 能閱讀英文技術文件

【工作地點】
台北市忠孝東路3段261號4F

【工作時間】
原則上 9:30am - 6:30pm ( 彈性 1 hr ), 中午休息 1 hr, 從不加班

【公司福利】
勞健保, 教育訓練經費, 醫療補助, 零時, 生日慶生, 公司旅遊補助

【薪資範圍】
月薪 $40,000 以上, 端午, 中秋各加發 1/4 月薪, 每季績效, 年終獎金, 員工分紅

【需求人數】  1 人

【聯絡】 許先生  hr@veryWed.com

【其他】 請先 email 履歷表, 若適合再通知您面試, 謝謝!

72
先確定 $_GET['a2'] 有這個值出來吧

這應該很好 debug 吧

print_r($_GET);

73
原文:[Pear] 利用 Validate 套件驗證 E-mail 多重表單認證

最近都在玩 open source 的程式,方便加速自己開發 PHP 的專案,在申請帳號密碼部份就可以利用 Validate 套件來驗證,以及 email 填寫正確性,可以檢查 MX 或者是 A record 紀錄,還蠻方便的,也可以檢查 multiple 欄位,設計的相當不錯,也有金融相關套件可以驗證 CreditCard,金融套件名稱是 Validate_Finance 裡面的 Validate_Finance_CreditCard 部份,線上也有很多相關說明,可以參考 Validate 線上手冊,目前已經到 0.8.2 (beta),如果使用 Release 版本,請選用 0.8.1,軟體可以在此下載,0.8.2 是在 2009-01-31 Release 出來的,還不錯用,最主要的功能如下
代碼: [選擇]
Package to validate various datas. It includes :
- numbers (min/max, decimal or not)
- email (syntax, domain check, [url=http://www.w3.org/Protocols/rfc822/]rfc822[/url])
- string (predifined type alpha upper and/or lowercase, numeric,…)
- date (min, max, rfc822 compliant)
- uri ([url=http://www.w3.org/2002/11/dbooth-names/rfc2396-numbered_clean.htm]RFC2396[/url])
- possibility valid multiple data with a single method call (::multiple)
  • 驗證各種不同的日期函式
  • 驗證數字(最小/最大,是否是10進位)
  • email 驗證(正規語法驗證,check domain name 是否存在,rfc822 驗證)
  • 字串驗證(正規語法驗證,是否包含數字英文字母,可輸入最長或最短)
  • url 驗證(遵從 RFC2396 規定)
  • 多重欄位(multiple data)驗證(可以同時驗證上述功能)


來介紹 Validate 套件用法:
1. Validate::date 這部份我比較不推薦用這裡的方法,可以用 jQuery 的套件:[jQuery筆記] 好用的日期函式 datepicker,那底下是這個函式用法:必須多安裝 Pear Date 套件
代碼: [選擇]
/**
* 驗證此套件必須在加裝 Date_Calc class
*
* @param string $date  需要驗證的值
*                          'format' 可以自行制定 (%d-%m-%Y)
*
*                          'min'    array($day, $month, $year)
*                          'max'   array($day, $month, $year)
* 回傳值 true or false
*/
$values = "2009-01-10";

$opts = array(
  'format'=> "%Y-%d-%m",
  'min'  => array('02','10','2009'),
  'max'  => array('05','10','2009')
);
$result = Validate::date($values, $opts);

if($result)
{
echo $result;
}
else
{
echo "error";
}

2. Validate::email
代碼: [選擇]
/**
 *
 * @param string $email  您要驗證的 email
 * @param mixed
 *    check_domain 檢查 domain 是否有 A 或者 MX Record
 *    use_rfc822 檢查 domain 是否符合 rfc822 規範
 * 回傳值 true or false
 * 
 */
$values = "appleboy@XXXXX";

$options = array(
  'check_domain' => 'true',
  'fullTLDValidation' => 'true',
  'use_rfc822' => 'true',
  'VALIDATE_GTLD_EMAILS' => 'false',
  'VALIDATE_CCTLD_EMAILS' => 'false',
  'VALIDATE_ITLD_EMAILS' => 'false',
);
$result = Validate::email($values, $options);

if($result)
{
echo $result;
}
else
{
echo "error
";
}

3. Validate::number:
代碼: [選擇]
/**
 *
 * @param string $number  您要驗證的數字
 * param array  $options array 選單
 *    decimal 可否在數字中間出現非數字符號如:., 代表可以使用 .,
 *    dec_prec 有多少 decimal 可以出現在數字中
 *    min      最小值
 *    max      最大值
 * 回傳值 true or false
 * 
 */

$values = "12300,45";

$options = array(
    'decimal' => ',',
    'dec_prec' => '2',
    'min' => '1000',         
    );
$result = Validate::number($values, $options);

if($result)
{
  echo $result;
}
else
{
  echo "error<br />";
}

4. Validate::String
代碼: [選擇]
/**
 *
 * @param string $string  您要驗證的字串
 * param array  $options array 選單
 *    'format' 字串的格式
 *    Ex:VALIDATE_NUM(數字 0-9) . VALIDATE_ALPHA_LOWER(a-z)
 *    VALIDATE_ALPHA_UPPER (A-Z) VALIDATE_ALPHA(a-zA-Z)
 *    dec_prec 有多少 decimal 可以出現在數字中
 *    'min_length' 字串最小長度
 *    'max_length' 字串最大長度
 * 回傳值 true or false
 * 
 */
$values = "appleboy";

$options = array(
    'format' => VALIDATE_NUM,
    'min_length' => '2',
    'max_length' => '1000',         
    );
$result = Validate::number($values, $options);

if($result)
{
  echo $result;
}
else
{
  echo "error<br />";
}

5. Validate::Uri
代碼: [選擇]
/**
 * Validate an URI (RFC2396)
 * EX:
 * $options = array('allowed_schemes' => array('http', 'https', 'ftp'))
 * var_dump(Validate::uri('http://www.example.org', $options)); 
 * 注意事項:
 * 1. 在 RFC2396 裡面定義了"-" 這個符號可以使用在 URI 裡面
 *    e.g. [url]http://example.co[/url]-m 這是可以驗證通過的
 *    但是在any known TLD裡面是不被准許的
 * 2.   
 * @param string $url     您要驗證的網址列
 * @param array  $options Options used by the validation method.
 *    'domain_check' 檢查 domain 是否存在 DNS 裡
 *    'allowed_schemes' 陣列 for list protocols ex: https, http
 *    'strict'  預設值: ';/?:@$,' 空值: accept all rfc2396 foreseen chars     
 * 回傳值 true or false
 * 
 */
$options = array(
    'check_domain'=>true,
    'allowed_schemes' => array('http','https'),
    'strict' => ';/?:@$,'       
    );
var_dump(Validate::uri('http://blog.wu-boy.com/', $options));

6. Validate::multiple 結合上述的語法,整合成一個函式
代碼: [選擇]
$values = array(
    'amount'=> '13234,344343',
    'name'  => 'foo@example.com',
    'mail'  => 'foo@example.com',
    'mystring' => 'ABCDEabcde'

    );
$opts = array(
    'amount'=> array('type'=>'number','decimal'=>',.','dec_prec'=>null,'min'=>1,'max'=>32000),
    'name'  => array('type'=>'email','check_domain'=>false),
    'mail'  => array('type'=>'email'),
    'mystring' => array('type'=>'string',array('format'=>VALIDATE_ALPHA, 'min_length'=>3))
    );

$result = Validate::multiple($values, $opts);

print_r($result);

Related View原文:[Pear] 利用 Validate 套件驗證 E-mail 多重表單認證

74
可以設定 aliases

把 root 的 mail 設定到 /dev/null

75
稍微看了一下原作者的說明跟比較表, 的確很讓人心動
(http://dammit.lt/2009/02/03/mydumper/)
不過還沒有時間下載來試, 想先問一下關於資料還原的方式
一樣用 mydumper, 還是??

看了幾篇說明都是說如何備份, 沒看到還原方式
或許是我眼殘+腦殘沒看到  :D :D

說實在的,我也是看了原作者一些效能方面的測試,時間方面的確省了很多

也可以針對每個資料庫分別資料表備份,相當不錯,復原的方式,我也看了作者網站

好像也沒提到怎麼恢 restore,只不過看了那些檔案,內容都是 INSERT INTO 的方式儲存

restore 回去的話,不知道可不可以用 mysql 指令恢復,那 table 的 structure 可能要另外備份

然後在 restore 回去,才能再使用 mydumper 的資料。 :)

76
原文轉貼:mydumper 取代 mysqldump 效能

這是我在 gslin 大神 那邊看到的一篇文章:mydumper (取代 mysqldump 的工具)mysqldumper 有平行跟效能方面壓力測試,效果跟時間都壓縮的比 mysqldump 還要快,簡單管理 output 資料,它把 database 每個資料表分別 dump 資料出來寫到檔案,方便觀看檔案資料,不過沒有支援 dump table 的 definitions,所以加速提取 data 寫入到檔案,gslin 大神也把它包進 FreeBSD ports 裡面,在 database/mydumper 這裡。
我想會把這個機制套用到我之前寫的 shell script 裡面:[linux&FreeBSD] 備份系統資料,MySQL 資料庫,PgSQL 資料庫的自動化 bash shell script 程式,那 mydumper 用法也相當簡單,mydumper –help 就寫的很清楚了,跟 mysqldump 用法差沒多少:
代碼: [選擇]
-h, --host               連接到 hostname 伺服器

-u, --user               使用者名稱

-p, --password           使用者密碼

-P, --port               MySQL TCP/IP port

-B, --database           Database 名稱

-t, --threads            Number of parallel threads

-o, --outputdir          輸出的檔案要存放在哪, 預設 ./export-*/

-c, --compress           gzip 壓縮每個檔案,多花一點時間

-x, --regex              Regular expression for 'db.table' matching

如果要 dump 全部的資料庫:
代碼: [選擇]
mydumper -u [user] -p [password]
經過 gzip 壓縮
代碼: [選擇]
mydumper -u [user] -p [password] -c
dump 單一資料庫
代碼: [選擇]
mydumper -u [user] -p [password] -c -B database
dump 多重備份 mysql 跟 test 資料庫
代碼: [選擇]
mydumper -u [user] -p [password] -c --regex '^(?!(mysql|test))'
參考文章:
mydumper (取代 mysqldump 的工具)
作者網站:mydumper
Related View原文轉貼:mydumper 取代 mysqldump 效能

77
上面那只是構想兩字
實際的問題就是我不知道要用哪個函式才能記錄時間
如果知道那個我就能把時間記錄到資料庫了


囧,查一下文件就可以了,我是建議你買書來看,因為我感覺你不太熟

資料庫欄位可以用 date 或者是 int(11)

我都是用 int(11),然後存放 time(); 這個時間

參考

http://tw.php.net/manual/en/function.time.php

http://tw.php.net/manual/en/function.date.php

學 php 沒啥技巧,官方網站一堆程式讓你 copy

這樣很快吧。

78
嗯嗯,存在db的作法,就跟 phpBB 作法一樣了

這方法還蠻不錯的

79
嗯嗯,提到動態選單,那就是用 jQuery + Plugin cascade 多重下拉選單應用 by json

我覺得很好用,因為用的是 AJAX 技術

http://blog.wu-boy.com/2008/12/19/637/

參考看看吧 希望對您有幫助

80
mysql_error 真的放對了地方?....

另外..你這個語法是要讓人輕易執行 Sql injection 的嗎?....

SQL 語法跟寫程式一樣,有很多關鍵保留字,你有沒有注意過?

謝謝 我知道錯在哪邊了 :)
mysql_error恩......我只知道找地方放 但是不知道放不放的對 :-X

輕易執行 Sql injection  ???           可能這本書比較舊 我是照書本上面的改法改的 ::)

先把底下這些看完吧,不要光是寫程式,然後基本的安全防護沒做到,其實還蠻危險的喔

http://www.google.com.tw/search?hl=zh-TW&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=Dfd&q=Sql+injection+php&btnG=%E6%90%9C%E5%B0%8B&meta=&aq=f&oq=

81
您好,

那麼請問那種模式較被常用呢?

謝謝...


請問你有把文章看完嗎?

我自己的用法兩種我都有在用

以我目前狀況,我覺得兩種都ok 當然 prefer unicode

82
您好,

不好意思...
請問 utf8_unicode_ci 與 utf8_general_ci 有何不同?
處理數據時對Ram 的需求有分別嗎 ?

謝謝!

Ed.


google :

http://www.google.com.tw/search?q=utf8_unicode_ci&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

引用
utf8_general_ci 在轉換時速度比較快
utf8_unicode_ci 在轉換時比較精準

83
先在 command line 試試看,如果可以在嘗試網頁

另外 sudo 的 config file 你怎麼寫,沒有提供

這樣很難知道你錯誤在哪?

84
本文同步於: http://blog.wu-boy.com/2008/12/19/637/


最近在弄動態下拉式選單,因為層級的關係,所以必須用到,大學裡面各學院,底下在各系所,在網路上看到一篇 ,實做起來是不會困難,可是我遇到一些怪問題就是了,目前還沒有解決,當然首推 套件 cascade,那也參考了國外的一篇文章 jQuery.cascade : Cascading values from forms ,這幾篇看完其實就差不多了,因為大家都寫得很清楚,官方網站 更是把所有應用都寫出來了,詳細很多用法可以參考 官方網站,看原始碼大概就知道在寫甚麼了。

先來說明一下使用的方法:在這個 jQuery cascade plugin 裡面,定義了一格式:
代碼: [選擇]
/*
格式就在底下總共有三攔
*/
{'when':'selectedValue','value':'itemValue','text':'itemText'}
第一個 when:這是上一層的 select 的 value 值
第二個 value:這是下一層的 select 的 value 值
第三個 text:這是下一層 option 的 text
我想有一點 html 基礎的,大概就知道我在說什麼了吧
<!--more-->

製作動態選單,可以用兩種方法,第一使用 ajax 去呼叫,也可以使用 json 的方式來達到,只是傳送的格式不同而已,第二個方法,就是在前端就輸出正確格式,然後利用 jQuery 讀近來。

先講解第一個方法:當然直接輸出就可以了,這就不必使用 ajax 去後端要資料了
首先把資料先撈出來:
代碼: [選擇]
<?PHP
$sql = "SELECT a.*, b.* FROM " . USERS_COLLEGE_TABLE . " as a, " . USERS_DEP_TABLE . " as b where a.college_id = b.college_id order by a.college_id";

if( !($result = $db->sql_query($sql)) )
{
die("Could not query config information" . $sql);
}
while($row = $db->sql_fetchrow($result)){
  /* 先把中文用 trim 輸出 */
  $row['dep_name'] = trim($row['dep_name']);
  $dep_array .= ($dep_array == '' ) ? "{'When':'".$row['college_id']."','Value':'".$row['dep_id']."','Text':'".$row['dep_name']."'}" : ", {'When':'".$row['college_id']."','Value':'".$row['dep_id']."','Text':'".$row['dep_name']."'}";
}
?>
注意輸出的部份:$dep_array 那邊,記得先用 trim 把中文的部份先使用,不然會顯示不出來,前端的寫法如下:
代碼: [選擇]
<script type="text/javascript">
<!-- 把剛剛輸出的 $dep_array 放到 list1 裡面 -->
var list1 = [<?=$dep_array?>];

function commonTemplate(item) {
return "<option value='" + item.Value + "'>" + item.Text + "</option>";
};
function commonTemplate2(item) {
return "<option value='" + item.Value + "'>***" + item.Text + "***</option>";
};

function commonMatch(selectedValue) {
//alert(selectedValue);
  return this.When == selectedValue;
};
$(document).ready(function()
{

  $("#user_department").cascade("#user_college",{
list: list1,
template: commonTemplate,
match: commonMatch
});
});
</script>
前端 html 部份:
代碼: [選擇]
<select name="user_college" id="user_college">
<option value="">請選擇</option>
<?PHP
$sql = "SELECT * FROM " . USERS_COLLEGE_TABLE;
if( !($result = $db->sql_query($sql)) )
{
die("Could not query config information" . $sql);
}
while($row = $db->sql_fetchrow($result)){
   $selected = ($row['college_id'] == $profiledata['user_college']) ? "selected" : "";
   echo '<option value="'.$row["college_id"].'" '.$selected.'>'.$row["college_name"].'</option>';
}
?>
</select>
<select name="user_department" id="user_department">
<option value="">請選擇</option>
</select>
這樣大致上就可以動了,那如果是要三層選單,那就自己再去加上 jQuery 的部份就可以了,舉一反三,我想大家都會,那底下介紹一下 ajax json 拿取得動態資料,這樣就不必先載入。

那首先修改 jQuery 寫法部份:
代碼: [選擇]
jQuery(document).ready(function()
{
  $("#user_department33").cascade("#user_college", {
  ajax: {
      url: 'ajax.php',
      type: 'GET',
      /*
complete: function(){
alert('my list is updated');
},
      */     
      data: {
        action: 'show',
        college_id: $('#user_college').val()
      },
      dataType: "json"
  },
  template: commonTemplate,
  match: commonMatch
 
  });
 
});

注意 datatype 那邊是寫 json,然後丟 GET 的 action 值過去,以及 select user_college 的 value,那 ajax.php 部份如下:
代碼: [選擇]
<?PHP
$root_path = './';
include($root_path . 'config.php');
$college_id = $_GET['college_id'];
$action = $_GET['action'];

switch($action)
{
  case "show":
 
    $sql = "SELECT a.college_id, b.dep_id, b.dep_name FROM " . USERS_COLLEGE_TABLE . " as a, " . USERS_DEP_TABLE . " as b where a.college_id = b.college_id and a.college_id = '".$college_id."' order by a.college_id";

   
    if( !($result = $db->sql_query($sql)) )
    {
    die("Could not query config information" . $sql);
    }
    $list = array();
    $dep_array = array();
    while($row = $db->sql_fetchrow($result))
    {
      $row['dep_name'] = trim($row['dep_name']);
      $row['college_id'] = trim($row['college_id']);
      $row['dep_id'] = trim($row['dep_id']);
      /* 如果不是用 json 方式,就必須用下面這程式碼 */
      //$dep_array .= ($dep_array == "" ) ? "[{'When':'".$row['college_id']."','Value':'".$row['dep_id']."','Text':'".$row['dep_name']."'}" : ",{'When':'".$row['college_id']."','Value':'".$row['dep_id']."','Text':'".$row['dep_name']."'}";
      /* json 專用格式 */
      $dep_array = array ('When' => $row['college_id'], 'Value' => $row['dep_id'], 'Text' => $row['dep_name']);
      $list[] = $dep_array;
    }   
  break;
}
echo json_encode($list);
?>
這樣大致上完成,可使有一個問題,不知道是我的問題,還是 jQuery plugin cascade,因為我用 ajax 這個方法,會讓選單,只出現一個,其他的都不會出現。

網址測試: http://appleboy.no-ip.org/plan/index.php

本文同步於: http://blog.wu-boy.com/2008/12/19/637/

85
代碼: [選擇]
# buildworld          - Rebuild *everything*, including glue to help do upgrades.
# installworld        - Install everything built by "buildworld".
# world               - buildworld + installworld, no kernel.
# buildkernel         - Rebuild the kernel and the kernel-modules.
# installkernel       - Install the kernel and the kernel-modules.

在 /usr/src/Makefile 裡面寫的很清楚


86
感謝 Darkhero 幫忙置頂
我看 ptt PHP 版蠻多人在問 phpmailer 的
這套也是不錯

http://phpmailer.codeworxtech.com/index.php?pg=examples

87
如果要用 UTF-8 標題:

Update:感謝 darkhero 提供解決方法:
如果要用 UTF-8 的標題:
代碼: [選擇]
  $param['head_charset'] = 'utf-8';
  $hdrs = array(
                'From'    => 'appleboy.tw@gmail.com',
                'Subject' => '=?utf8?B?' . base64_encode($subj) . '?=',
                'Content-type' => 'text/plain; charset=utf-8'
                );

88
已經在 ptt 的 PHP 提供了這個資訊,我覺得還不錯,畢竟看到大家都有這個問題

mail 這個函式在官網提供很多範例,其實都還不錯,不過個人很推 PEAR - PHP Mail and Mail_Mime

可以參考

[PHP] 好用的 PEAR - PHP Mail and Mail_Mime

http://blog.wu-boy.com/2007/12/18/129/

[PHP]解決 PEAR::Mail_Mime 標題 UTF-8 亂碼問題(不能顯示)

http://blog.wu-boy.com/2008/10/01/524/

接下來就是介紹怎麼安裝了,首先你的系統要有搭配 php pear 的套件

代碼: [選擇]
cd /usr/ports/devel/pear
make install
不過你如果裝 php5 的套件的話,她會順便一起裝進去,我想這不是重點

再來就是下載 PEAR::Mail 跟 PEAR::Mail_Mime 套件

其實作法很簡單,就是下載程式都丟到 includes 裡面,然後要用到的時候,利用底下

代碼: [選擇]
define('Document_root',dirname(__FILE__));
這個相當好用,取得絕對路徑,之後只要寫成下面底下就好

代碼: [選擇]
include(Document_root . '/includes/Mail.php');
include(Document_root . '/includes/Mail/mime.php');

再來是最普通的寄送範例:

代碼: [選擇]
  include(Document_root . '/includes/Mail.php');
  $recipients = 'joe@example.com';
  $headers['From']    = 'richard@phpguru.org';
  $headers['To']      = 'joe@example.com';
  $headers['Subject'] = 'Test message';
  $body = 'Test message';
  $mail_object =& Mail::factory('mail');
  $mail_object->send($recipients, $headers, $body);


裡面有一行
$mail_object =& Mail::factory('mail');
這個有三種方式 mail, sendmail, smtp

mail: 這是不需要任何參數的
sendmail:需要 sendmail 的程式路徑跟她所需要的參數
smtp:需要 mail 主機位址,port,是否需要認證,帳號密碼之類的

當然我們用最普通的就好,那就是 mail 就可以,不過前提你要先架好 mail Server

Mail_Mime 的部分:

這部份比較複雜,我們先看範例:

代碼: [選擇]
  include(Document_root . '/includes/Mail.php');
  include(Document_root . '/includes/Mail/mime.php');
  $text = '我是小惡魔我是小惡魔我是小惡魔我是小惡魔';
  $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"      "http://www.w3.org/TR/html4/loose.dtd">
  <html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
  <p>Hello World!</p>
  <p>我是小惡魔</p>
  <p>我是小惡魔</p>
  <p>我是小惡魔</p>
  <p>我是小惡魔</p>
  </body>
  </html>';
  $file = '/home/appleboy/adwii/AB2.jpg';
  $crlf = "\n";
  $param['text_charset'] = 'utf-8';
  $param['html_charset'] = 'utf-8';
  $param['head_charset'] = 'utf-8';
  $hdrs = array(
                'From'    => 'appleboy@example.org',
                'Subject' => '系統資訊',
                'Content-type' => 'text/plain; charset=utf-8'
                );
  $mime = new Mail_mime($crlf);
  $mime->setTXTBody($text);
  $mime->setHTMLBody($html);
  $mime->addAttachment($file, 'text/plain', 'AB2.jpg');
  $body = $mime->get($param);
  $hdrs = $mime->headers($hdrs);
  //echo $body;
  $mail =& Mail::factory('mail');
  $mail->send('appleboy@example.org', $hdrs, $body);


這個範例,可以附加檔案,跟寫 html 格式的 mail 寄信到對方
$mime->addAttachment($file, 'text/plain', 'AB2.jpg');
這一行就是寄送附加檔案,附加檔案的格式如下
 
代碼: [選擇]
function addAttachment($file,
                           $c_type      = 'application/octet-stream',
                           $name        = '',
                            $isfile     = true,
                           $encoding    = 'base64',
                           $disposition = 'attachment',
                           $charset     = '',
                            $language   = '',
                           $location    = '')

  1.使用 Mail_mime() 建立新的 Mail_mime 物件(constructor)。
  2.至少要使用 setTXTBody(), setHTMLBody(), addHTMLImage() 或 addAttachment()
    四者其中之一建立內文或附檔。(當然通常的情況不只使用一個囉)
  3.使用 get() 傳回內文。
  4.使用 headers() 傳回檔頭。
  5.利用傳回的內文與檔頭丟給 Mail::send() 送信。

reference

http://pear.php.net/manual/en/package.mail.mail.intro.php
http://blog.xuite.net/noi1/yamesz/8928129
http://pear.php.net/manual/en/package.mail.mail-mime.example.php

89
上課不是有說會寄投影片給上課報名的人

可是現在還沒收到簡報 ppt 喔 XDDD 哈哈

90
BSD 討論版 / 回覆: 有關Inact memory
« 於: 2008-09-11 21:48 »
基本上你看到的是正常

如果大量用到 swap 這才是需要擔心的~

頁: 1 2 [3] 4 5 ... 8