發佈新日誌

  • 有效告別數據庫亂碼, gbk/gb2312/big5/latin1轉utf-8

    2007-05-09 22:27:55

    前提是你需要有服務器的ssh權限:

    1. 在shell中用root登陸服務器
    2. 進入mysql目錄 (linux Server):

    代碼:
    cd /var/lib/mysql/
    3. 利用mysql自帶的mysqldump功能dump一下原有的latin1編集的數據庫:

    代碼:
    mysqldump --user=username --password=password --default-character-set=latin1  --skip-set-charset dbname > dump.sql
    4. 把數據庫數據從latin1轉換成utf-8編集:

    代碼:
          sed  -r 's/latin1/utf8/g' dump.sql > dump_utf.sql
    5. 創建新的urf-8新數據庫:

    代碼:
           mysql --user=username --password=password --execute="DROP DATABASE dbname;  CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"
    6. 以正確編集導入轉碼後的數據庫數據:

    代碼:
          mysql --user=username --password=password --default-character-set=utf8 dbname < dump_utf.sql
    DONE!
    這時你再在phpmyadmin中看看數據庫是不是不再亂碼? 使用愉快!

  • 分享 - mysql big5 轉 utf-8 轉換程式

    2007-05-09 22:25:31

    分享 - mysql big5 轉 utf-8 轉換程式

    #############################################################################
    # 作者 : fiend
    # 文章出處 : http://forum.heytalk.com/  ,  http://bbs.ecstart.com/
    #  轉貼請註明出處
    #############################################################################

    義務替 黑秀網將 big5 轉成 utf-8 環境 :

    所以寫了這支程式 ,

    這支程式 會 dump 出 db 下的所有 insert 的 query ,

    使用方法

    1.

    將 big5 環境的 create dump 出來 ,

    然後 再將 CHARSET=latin1 或 CHARSET=big5

    改成 CHARSET=utf8

    然後 create 一個空的 databases + table .

    2.  
    下載 metabase :  請參考附件

    3.
    convert.php

    #!/usr/bin/php -q
    <?php
    set_time_limit(0) ;
    ############################################################################
    # sql link start
    ############################################################################
    $db_type                = "mysql";
    $host_name              = "localhost" ;
    $database_name          = "heyforum_dz5" ;
    $user_id                = "root" ;
    $user_password          = "xxxxxxxxxxxx" ;
    include_once("metabase/metabase_interface.php");
    include_once("metabase/metabase_database.php");
    $db_params=array(
                         "Host"             =>$host_name
                         ,"Type"            =>$db_type
                         ,"User"            =>$user_id
                         ,"Password"        =>$user_password
                         ,"IncludePath"     =>"metabase/"
                         ,"Persistent"      =>0
                         );
    ############################################################################
    # sql link end
    ############################################################################

    $error=MetabaseSetupDatabase($db_params,$db);
    MetabaseSetDatabase($db,$database_name);

    $query ="show tables";
    $db_res=MetabaseQuery($db,$query);
    if(!$db_res) {
            ecstart_alert_err($msg["system_err"]);
    }
    $rows=MetabaseNumberOfRows($db,$db_res);
    MetabaseGetColumnNames($db,$db_res,$db_field_name);
    if($rows)
    {
            for($row=1;$row<=$rows;$row++)
            {
                    if(is_array($db_field_name)){
                            foreach($db_field_name as $key => $value){
                                    $table[$row-1]=MetabaseFetchResult($db,$db_res,$row-1,$key) ;
                            }
                    }
            }
    }
    if(is_array($table)){
            foreach($table as $k => $v){
                    $query ="describe ".$v;
                    $db_res=MetabaseQuery($db,$query);
                    if(!$db_res) {
                            ecstart_alert_err($msg["system_err"]);
                    }
                    $rows=MetabaseNumberOfRows($db,$db_res);
                    MetabaseGetColumnNames($db,$db_res,$db_field_name);
                    if($rows)
                    {
                            for($row=1;$row<=$rows;$row++)
                            {
                                    if(is_array($db_field_name)){
                                            foreach($db_field_name as $key => $value){
                                                    $field[$v][$row-1]=MetabaseFetchResult($db,$db_res,$row-1,"field") ;
                                            }
                                    }
                            }
                    }
                    //print_r($field);



            }
    }




    if(is_array($field)){
            foreach($field as $k => $v){
                    // get field value
                    $query ="select * from ".$k;
                    $db_res=MetabaseQuery($db,$query);
                    if(!$db_res) {
                            ecstart_alert_err($msg["system_err"]);
                    }
                    $rows=MetabaseNumberOfRows($db,$db_res);
                    MetabaseGetColumnNames($db,$db_res,$db_field_name);
                    if($rows)
                    {
                            for($row=1;$row<=$rows;$row++)
                            {
                                    if(is_array($db_field_name)){
                                            foreach($db_field_name as $key => $value){
                                                    $field_value[$row-1][$key]=MetabaseFetchResult($db,$db_res,$row-1,$key) ;

                                            }
                                    }
                                    $no = 0 ;
                                    $field_str = "";
                                    foreach($v as $fv){
                                            if($no == 0){
                                                    $field_str .= "`".$fv."`";
                                            }
                                            else{
                                                    $field_str .= ",`".$fv."`";
                                            }
                                            $no = $no+1 ;
                                    }

                                    $sno = 0 ;
                                   $field_value_str = "";
                                    foreach($field_value[$row-1] as $fvk =>  $fvv){
                                            if($sno == 0){
                                                    $field_value_str .= "'".mysql_escape_string(iconv('BIG5','UTF-8',$fvv))."'";
                                            }
                                            else{
                                                    $field_value_str .= ",'".mysql_escape_string(iconv('BIG5','UTF-8',$fvv))."'";
                                            }
                                            $sno = $sno+1 ;
                                    }


                                    $query = "insert into ".$k."(".$field_str.") values(".$field_value_str.");";
                                    unset($field_value[$row-1]);
                                    unset($field_str);
                                    unset($field_value_str);
                                    echo $query . "\n";
                                    //print_r($field_value);
                            }
                    }

                    unset($field_value);
            }
    }





    MetabaseCloseSetup($db)

    ?>

    4.  
    將 convert.php 存檔後

    執行 ./convert.php > convert.sql

    5. mysql database_name -uroot -p < convert.sql

    好了 ccc
  • 如何修正 MySQL 資料庫的 encoding?

    2007-05-05 23:51:13

     

    最近 gslin 的 blog 因為 MySQL 資料庫的 encoding 問題,發生異常現象,只好從零開始。無獨有偶地,Pesty 最近也處理了 MySQL 使用 UTF-8 的相關問題

    這些問題之所以會發生,是因為越來越多的 web application 套件使用 UTF-8 儲存資料,但大家在設定 MySQL 時卻都沒有注意到這點,仍然使用預設的 latin1 作為資料庫的 encoding。Web application 餵入 UTF-8 資料,MySQL 卻當作 latin1 在讀,雖然 web application 讀回來的時候,因為剛好是反向處理,資料看似沒有任何異常,但實際上 collation 是錯的,當進行移機、備份甚至轉換 web application 時,也都會發生問題。

    我一年多前也有遇到類似的問題,原本在公司有個用 phpBB2 架的 forum,採用 big5 編碼,但實際上 mysql-3.23 裡是用 latin1 存。想要轉換成 UTF-8,移機到 FreeBSD 5 上改用 mysql-4.1,就發生問題了。我那時沒有解決,所以 phpBB2 移機計畫暫緩了一年多,但實在是多跑一個 virtual machine 只為了這個移不過來的 phpBB2,實在浪費記憶體。剛好看到 gslin 與 pesty 最近也在弄這個問題,就重新試了一遍步驟如下:

    1. 用 mysqldump 自 mysql-3.23 倒出來,發現必須加上 --default-character-set=latin1 的參數,才能正確倒出實際上是用 big5 的 phpBB2 的資料庫。
    2. iconv -c -f CP950 -t UTF-8 將倒出來的 SQL 轉成 UTF-8。必須要加 -c,否則會死在半路。換句話說,其實中間已經有東西爛掉了。
    3. 進 mysql 用 SET GLOBAL/SESSION character_set_XXX=utf8 調整 system variables,將 charset 與 collation 通通改成 UTF-8,然後做 CREATE DATABASE phpbb2
    4. 再用 SOURCE 指令把剛剛用 iconv 轉出來的 SQL 檔倒回來。

    結果在第四個步驟裡,mysql (client) 就 core dump 了。猜測有可能是第二步用 -c 硬轉時,把某個指令搞爛了。不過 mysql (client) 是直接 core dump 而不是跑 error message 出來指出錯誤何在,所以這下難辦了,只能靠 iconv 不加 -c 想辦法慢慢抓問題

  • MySQL latin1 轉 utf8

    2007-05-05 22:36:19

    MySQL latin1 轉 utf8

    March 31st, 2006 by a-wei

    相信 MySQL 的編碼對很多人來說 … 一直是個相當令人頭痛的問題 … 今天所要做的介紹是如何把資料庫的資料, 由 latin1 轉成 utf8..

    一般 .. MySQL 裝起來後(用 rpm 安裝) ,系統的預設編碼是 latin1.

    而很多人在安裝一些網頁的系統時,如 wordpress、LifeType、phpBB … 等等,都會選擇 utf8 。

    這時 … 系統一樣可以正常運作 … 只是當用 phpmyadmin 進入管理資料庫時,就會發現 .. 怎麼中文字的部分都變成了歪七扭八 ..

    或者一些鬼畫符的文字。如:a‡!ao‹a…ˆa¾ža·¥a½œe¬›eμ·

    此現象就是 utf8 的文字以 latin1形式儲存,phpmyadmin 以 utf8 的資料讀取方式讀取 … 讀出來的資料就是這種鬼畫符…><。

    若要解決 phpmyadmin 讀出的鬼畫符 … 有兩個方法:

    1. 進入 phpmyadmin 內一個名為 libraries 的子目錄 .. 編輯 select_lang.lib.php. 找到 $mysql_charset_map 這一段下方 ..

    『utf-8′ => 『utf8′,
    把它改成

    『utf-8′ => 『latin1′,

    然後存檔 … 這時候就可以發現原先的鬼畫符 … 這時候又都正常了.

    2. 把資料庫的編碼轉成 utf8 …

    步驟:

    a. 把資料庫 dump 出來

    mysqldump -u xxx -p database > database.sql –default-character-set=latin1

    這時候 dump 出來的 database.sql 是 latin1 的檔案格式,然而是 utf8 的文字資料,因此這時若用 vi 開檔看它 …

    還是會發現中文字是鬼畫符 … 這時不要被眼前的假象所騙 … 以為自己做錯 .. 幾接著做下一步驟。

    b. 把 dump 出來的 database.sql 下載回去 .. 用 emEditor(網路上可免費下載,是個支援 utf-8 的編輯器)把 database.sql 打開,

    它可以正常識別 utf8 的文字 ..用取代的功能,把 latin1 都取代成 utf8 ,之後直接另存新檔 .. 這時把檔案類型設定儲存成 UTF-8。

    c. 再把 database-utf8.sql 上傳到 server .. 這時我們用 vi 開啟它 .. 就可以看見是正常的中文字 .. 這就表示檔案沒問題囉。

    d. 把檔案匯入資料庫

    mysql database < database-utf8.sql -u xxx -p --default-character-set=utf8
    如果資料量不是很大 … 那麼很快就可以完成這個步驟 .. 這時候若沒有錯誤訊息出現 .. 那麼恭喜你 ..

    你已經完成了資料庫轉換的工作了。如果有錯誤訊息出現 .. 主要有兩個情形 ..

    1. 文件檔內的中文字,用 vi 看是亂碼 ..文件檔的格式不是 utf-8。

    2. 匯入的時候漏掉指定採用 utf8 的資料編碼匯入。

    以上的作業是在 資料庫系統都是處於 latin1 的環境底下,也就是沒有在 my.cnf 指定 default-character-set=utf8。

  • MYSQL優化詳細介紹!

    2007-05-05 11:04:54


    參數的調整可以通過修改 /etc/my.cnf 文件並重啟 MySQL實現。這是一個比較謹慎的工作,上面的結果也僅僅是我的一些看法,你可以根據你自己主機的硬件情況(特別是內存大小)進一步修改。

    同時在線訪問量繼續增大 對於1G內存的服務器明顯感覺到吃力嚴重時甚至每天都會死機或者時不時的服務器卡一下 這個問題曾經困擾了我半個多月MySQL使用是很具伸縮性的算法,因此你通常能用很少的內存運行或給MySQL更多的被存以得到更好的性能。

       安裝好mysql後,配製文件應該在/usr/local/mysql/share/mysql目錄中,配製文件有幾個,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的網站和不同配製的服務器環境,當然需要有不同的配製文件了。

      一般的情況下,my- medium.cnf這個配製文件就能滿足我們的大多需要;一般我們會把配置文件拷貝到/etc/my.cnf 只需要修改這個配置文件就可以了,使用mysqladminvariables extended-status –u root –p 可以看到目前的參數,有3個配置參數是最重要的,即key_buffer_size,query_cache_size,table_cache。


    關鍵詞解釋

    key_buffer_size:
    索引塊是緩衝的並且被所有的線程共享。key_buffer_size是用於索引塊的緩衝區大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系統將開始換頁並且真的變慢了。默認數值是8388600(8M),我的MySQL主機有2GB內存,所以我把它改為 402649088(400MB)。

    註:通過檢查狀態值Key_read_requests和Key_reads,可以知道key_buffer_size設置是否合理。比例 key_reads / key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用SHOW STATUS LIKE『key_read%』獲得)。 或者如果你裝了phpmyadmin 可以通過服務器運行狀態看到,筆者推薦用phpmyadmin管理mysql,狀態值都是本人通過phpmyadmin獲得的實例

    另外一個估計key_buffer_size的辦法 把你網站數據庫的每個表的索引所佔空間大小加起來看看以此服務器為例:比較大的幾個表索引加起來大概125M 這個數字會隨著表變大而變大。

    key_buffer_size只對MyISAM表起作用
    另外一個估計key_buffer_size的辦法 把你網站數據庫的每個表的索引所佔空間大小加起來看看以此服務器為例:比較大的幾個表索引加起來大概125M 這個數字會隨著表變大而變大。

     


    max_connections:
    允許的同時客戶的數量。增加該值增加 mysqld 要求的文件描述符的數量。這個數字應該增加,否則,你將經常看到 鏈接過多,請聯繫空間商 錯誤。 默認數值是100


    sort_buffer:
    每個需要進行排序的線程分配該大小的一個緩衝區。增加這值加速ORDER BY或GROUP BY操作。默認數值是2097144(2M)

    back_log:
    要求 MySQL 能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,然後主線程花些時間(儘管很短)檢查連接並且啟動一個新線程。
    back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加 它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。你的操作系統在這個隊列大小上有它自己的限制。 試圖設定back_log高於你的操作系統的限制將是無效的。
    當你觀察你的主機進程列表,發現大量 264084 | unauthenticated user |xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待連接進程時,就要加大 back_log 的值了。默認數值是50,我把它改為更多。

    interactive_timeout:
    服務器在關閉它前在一個交互連接上等待行動的秒數。一個交互的客戶被定義為對 mysql_real_connect()使用 CLIENT_INTERACTIVE 選項的客戶。 默認數值是28800,我把它改為7200。

    record_buffer:
    每個進行一個順序掃瞄的線程為其掃瞄的每張表分配這個大小的一個緩衝區。如果你做很多順序掃瞄,你可能想要增加該值。默認數值是131072(128K),我把它改為16773120(16M)


    table_cache:
    為所有線程打開表的數量。增加該值能增加mysqld要求的文件描述符的數量。MySQL對每個唯一打開的表需要2個文件描述符。默認數值是64,我把它改為512。

    優化table_cachetable_cache指定表高速緩存的大小。每當MySQL訪問一個表時,如果在表緩衝區中還有空間,該表就被打開並放入其中,這樣可以更快地訪問表內容。通過檢查峰值時間的狀態值Open_tables和Opened_tables,可以決定是否需要增加 table_cache的值。如果你發現open_tables等於table_cache,並且opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用SHOW STATUSLIKE 『Open%tables』獲得)。注意,不能盲目地把table_cache設置成很大的值。如果設置得太高,可能會造成文件描述符不足,從而造成性能不穩定或者連接失敗。對於有1G內存的機器,推薦值是128-256。
    案例1:該案例來自一個不是特別繁忙的服務器table_cache – 512open_tables – 103opened_tables – 1273uptime –4021421 (measured in seconds)該案例中table_cache似乎設置得太高了。在峰值時間,打開表的數目比table_cache要少得多。
    案例2:該案例來自一台 開發服務器。table_cache – 64open_tables – 64opened-tables – 431uptime – 1662790(measured in seconds)雖然open_tables已經等於table_cache,但是相對於服務器運行時間來說,opened_tables的值也非常低。因此,增加table_cache的值應該用處不大。
    案例3:該案例來自一個upderperforming的服務器table_cache – 64open_tables – 64opened_tables – 22423uptime – 19538該案例中table_cache設置得太低了。雖然運行時間不到6小時,open_tables達到了最大值,opened_tables的值也非常高。這樣就需要增加table_cache的值

     

    筆者設置table_cache = 256
    得到以下狀態:
    Open tables 256
    Opened tables 9046
    雖然open_tables已經等於table_cache,但是相對於服務器運行時間來說,已經運行了20天,opened_tables的值也非常 低。因此,增加table_cache的值應該用處不大。如果運行了6個小時就出現上述值 那就要考慮增大table_cache。

     

    thread_cache_size:
    可以復用的,保存在中的線程的數量。如果有,新的線程從緩存中取得,當斷開連接的時候如果有空間,客戶的線置在緩存中。如果有很多新的線程,為了提高性能可 以這個變量值。通過比較 Connections 和Threads_created 狀態的變量,可以看到這個變量的作用。我把它設置為 80。

     

    wait_timeout:
    服務器在關閉它之前在一個連接上等待行動的秒數。 默認數值是28800

     

     


    從4.0.1開始,MySQL提供了查詢緩衝機制。使用查詢緩衝,MySQL將SELECT語句和查詢結果存放在緩衝區中,今後對於同樣的SELECT語句(區分大小寫),將直接從緩衝區中讀取結果。根據MySQL用戶手冊,使用查詢緩衝最多可以達到238%的效率。

    通過調節以下幾個參數可以知道query_cache_size設置得是否合理
    Qcache inserts
    Qcache hits
    Qcache lowmem prunes
    Qcache free blocks
    Qcache total blocks

    Qcache_lowmem_prunes 的值非常大,則表明經常出現緩衝不夠的情況,同時Qcache_hits的值非常大,則表明查詢緩衝使用非常頻繁,此時需要增加緩衝大小Qcache_hits的值不大,則表明你的查詢重複率很低,這種情況下使用查詢緩衝反而會影響效率,那麼可以考慮不用查詢緩衝。此外,在SELECT語句中加入SQL_NO_CACHE可以明確表示不使用查詢緩衝。
    Qcache_free_blocks,如果該值非常大,則表明緩衝區中碎片很多query_cache_type指定是否使用查詢緩衝

    我設置:
    query_cache_size = 32M
    query_cache_type= 1
    得到如下狀態值:
    Qcache queries in cache 12737 表明目前緩存的條數
    Qcache inserts 20649006
    Qcache hits 79060095  看來重複查詢率還挺高的
    Qcache lowmem prunes 617913 有這麼多次出現緩存過低的情況
    Qcache not cached 189896   
    Qcache free memory 18573912  目前剩餘緩存空間
    Qcache free blocks 5328 這個數字似乎有點大 碎片不少
    Qcache total blocks 30953
    如果內存允許32M應該要往上加點


    Log_bin
    如果你不需要記錄2進制log 就把這個功能關掉,注意關掉以後就不能恢復出問題前的數據了,需要您手動備份,二進制日誌包含所有更新數據的語句,其目的是在恢復數據庫時用它來把數據盡可能恢復到最後的狀態。另外,如果做同步複製( Replication )的話,也需要使用二進制日誌傳送修改情況。

    log_bin指定日誌文件,如果不提供文件名,MySQL將自己產生缺省文件名。MySQL會在文件名後面自動添加數字引,每次啟動服務時,都會重新生成一個新的二進制文件。此外,使用log-bin-index可以指定索引文件;使用binlog-do-db可以指定記錄的數據庫;使用binlog- ignore-db可以指定不記錄的數據庫。注意的是:binlog-do-db和binlog-ignore-db一次只指定一個數據庫,指定多個數據庫需要多個語句。而且,MySQL會將所有的數據庫名稱改成小寫,在指定數據庫時必須全部使用小寫名字,否則不會起作用。

    關掉這個功能只需要在他前面加上#號
    #log-bin

    開啟慢查詢日誌( slowquery log )

    慢查詢日誌對於跟蹤有問題的查詢非常有用。它記錄所有查過long_query_time的查詢,如果需要,還可以記錄不使用索引的記錄。下面是一個慢查詢日誌的例子:

    開啟慢查詢日誌,需要設置參數log_slow_queries、long_query_times-1=、log-queries-not-using-indexes。

    log_slow_queries 指定日誌文件,如果不提供文件名,MySQL將自己產生缺省文件名。long_query_times指定慢查詢的閾值,缺省是10秒。log-queries-not-using-indexes是4.1.0以後引入的參數,它指示記錄不使用索引的查詢。筆者設置 long_query_time=10


    thread_concurrency

    #設置為你的cpu數目x2,例如,只有一個cpu,那麼thread_concurrency=2
    #有2個cpu,那麼thread_concurrency=8

    skip-innodb
    #去掉innodb支持


    補充

    mysql優化 my.ini示例

    [mysqld]
    basedir=D:/mysql
    datadir=D:/mysql/data
    #port=3306
    skip-bdb
    skip-innodb

    skip-locking
    #skip-networking

    max_connections=500

    key_buffer=384M
    max_allowed_packet=1M
    table_cache=512
    sort_buffer=2M
    record_buffer=2M
    thread_cache=8
    thread_concurrency=8
    wait_timeout=6

    [isamchk]
    key_buffer=64M
    sort_buffer=64M
    read_buffer=2M
    write_buffer=2M

    [myisamchk]
    key_buffer=64M
    sort_buffer=64M
    read_buffer=2M
    write_buffer=2M

     


    以下所有命令都是在進入mysql監控器中執行的:

    a. show tables或show tables from database_name; // 顯示當前數據庫中所有表的名稱

    b. show databases; // 顯示mysql中所有數據庫的名稱

    c. show columns from table_namefrom database_name; 或show columns from database_name.table_name; // 顯示表中列名稱

    d. show grants for user_name; //  顯示一個用戶的權限,顯示結果類似於grant 命令

    e. show index from table_name; // 顯示表的索引

    f. show status;  // 顯示一些系統特定資源的信息,例如,正在運行的線程數量

    g. show variables; // 顯示系統變量的名稱和值

    h. show  processlist; // 顯示系統中正在運行的所有進程,也就是當前正在執行的查詢。大多數用戶可以查看
                                   他們自己的進程,但是如果他們擁有process權限,就可以查看所有人的進程,包括密碼。

    i. show table status; // 顯示當前使用或者指定的database中的每個表的信息。信息包括表類型和表的最新更新時間

    j. show privileges;  // 顯示服務器所支持的不同權限

    k. show create databasedatabase_name; // 顯示create database 語句是否能夠創建指定的數據庫

    l. show create table table_name;// 顯示create database 語句是否能夠創建指定的數據庫

    m. show engines; // 顯示安裝以後可用的存儲引擎和默認引擎。

    n. show innodb status; // 顯示innoDB存儲引擎的狀態

    o. show logs; // 顯示BDB存儲引擎的日誌

    p. show warnings; // 顯示最後一個執行的語句所產生的錯誤、警告和通知

    q. show errors; // 只顯示最後一個執行語句所產生的錯誤

     

  • 調奶方法

    2007-05-03 11:15:03

    1. 在奶瓶中注入約沖泡奶量的三分之二的適溫開水(適溫指攝氏五十至六十度此溫度下奶粉最易溶解)

    2. 用專用湯匙盛取定量的奶粉媛媛倒入奶瓶中

    3. 握住奶瓶輕輕搖動使奶粉在水中充分溶解

    4. 再度注入開水到預定的沖泡量為止

    5a. 以不碰到奶嘴前端的方式,將奶嘴旋緊在奶瓶上。

    5b. 手指碰到奶嘴前端的話,煮沸消毒的功夫都白費了。

    6. 為使牛奶濃淡均勻,旋緊奶嘴後再一次輕搖奶瓶。

     

     調奶器具的消毒

    1. 餵完奶後立刻以專用的刷子將奶瓶中的殘渣清理乾淨。

    2. 用專用的小刷子清洗奶嘴;別忘了吸孔和旁邊的凹溝。

    3. 把奶瓶和奶瓶夾放入加熱器中,倒入足量的水,煮沸七分鐘;再放入奶嘴,續煮沸三分鐘,即可完全消毒。

    4. 以奶瓶夾取出調奶器具,放在有清潔紗布覆蓋的盆中晾乾,然後把調奶器具放在有蓋的保存盒中。

      調奶用品清單

    用品

    數量

    備註

    奶瓶

    八支

    八安士奶瓶四安士奶瓶各四支玻璃製或塑膠製皆可

    奶嘴

    八個

    分圓頭和扁頭兩種扁頭奶咀較能減少嬰兒因吸吮而入風

    消毒剪刀

    一把

    為了保持清潔所以有必要採用

    奶瓶刷子

    二把

    大小各一把大的清潔奶瓶小的清潔奶咀

    奶瓶保溫袋

    一個

    能夠保持熱水的溫度

    奶粉盒

    一個

    帶嬰兒外出時要用

    奶瓶消毒煲

    一個

    為奶瓶消毒殺菌

     

    母乳奶粉混合餵哺

    單用母乳哺育的寶寶,如果體重增長媛慢、睡不安穩、排便量與次數減少、吃奶後常常哭鬧,或者吸吮乳頭達三十分鐘以上,仍不肯放,就可能是母乳不足。媽媽應嘗試按摩乳房,讓乳汁分泌暢順;並可以在餵完母乳後,再沖些奶粉補充,或母乳和奶粉交互餵哺。此中以前者的方法為優先,因為愈多餵母乳,分泌量才會愈多。

    若因工作,無法全部時間授母乳,午間兩次可改餵奶粉。日間乳脹時,若置之不理,會造成乳腺炎,而且乳汁分泌不暢順亦很難受,媽媽應去洗手間將過多的奶水擠掉。

    有些寶寶會因為不習慣奶粉的味道,或不習慣使用奶嘴,而有嘔奶現象。只要選擇適合的奶嘴,使寶寶覺得有如吸吮母乳一樣,待他真的肚餓或口渴時才餵他,他是會慢慢習慣的。  使牛奶濃淡均勻,旋緊奶嘴後再一次輕搖奶瓶。

  • 餵奶方法

    2007-05-03 11:12:55

     


    姿勢很重要 。 無論是餵奶粉或是餵母乳 , 都要將挭_抱得舒適 。 用奶瓶餵奶時 , 媽媽用左手懷抱寶寶 , 右手拿奶瓶 , 使瓶身與寶寶的嘴成四十五度角 , 讓奶水充滿奶嘴 , 寶寶吃奶時便不會吸入空氣了 。 不要怕浪費 , 要寶寶喝完瓶內所有的奶 , 這會使寶寶吸入大量空氣 。 有些寶寶吸奶較有節奏 , 在一吸一放之間 , 有換氣的時間 , 可以一口氣喝完 ; 有些則在開始時猛吸一口 , 然後要休息一會才能再吸 。

    不要讓寶寶躺著自行吸奶 , 以免嗆到 , 導致吸入性肺炎或窒息 。 如果寶寶喝不到一半就睡著 , 不必叫醒他 。 倘若離下次餵奶時間還有很久 , 寶寶醒來便要吃奶 , 應該讓寶寶稍等一下 , 到吃的時侯 , 他就會因為餓了而多吃一些 , 才不會養成愈來愈少量多餐的習慣 。 但若寶寶喝了一半以上才休息不吃 , 不一會卻哭起來 , 就可能是因為胃部不適 , 可幫他打嗝換氣 , 並檢查有沒有其他問題 。

    奶瓶有殘渣存留 , 會有細菌繁殖 , 最好喝完就洗 , 用水洗乾淨後 , 可用蒸氣殺菌 , 或將奶瓶放入熱水中煮沸消毒 。 若用藥水浸泡 , 要將藥味完全沖去 , 否則寶寶會不愛喝奶 。

      奶瓶

    用奶粉餵養寶寶,必須預備奶瓶和奶嘴。奶瓶有塑膠和玻璃兩種,各有優劣,仍當以衛生與適用為原則。容量方面,大致上分為一百二十毫升與二百四十毫升兩種。前者也可以用補充果汁,菜湯等。

    玻璃瓶較重,耐熱可達攝氏一百二十度,能置於沸水中消毒,易清潔,且表面不易刮花,但容易撞碎。塑膠奶瓶比較輕巧,易於攜帶。以聚酸脂成份製造的塑膠奶瓶,有最佳的耐熱與耐久效果,經得起反覆消毒。

    如果在寶寶喝完奶後便立即消毒奶瓶,三、四個就夠了。如果一天只消毒一次,則最少需預備六、七個。

      奶嘴

    (一)    質料 -以天然橡膠製造的奶嘴,彈力適中,但有特殊氣味,使用時有黏黏的感覺,寶寶較難接受。而且這種質料有致癌的亞酸胺,非常危險,媽媽不宜採用。合成橡膠的奶嘴,彈力接近媽媽的奶頭,但易黏附脂肪等污垢,用得久會顯得粗糙。至於售價較貴的硅酮橡膠製奶嘴,呈乳白色半透明,安全無毒,耐熱性高,並很耐用。

    (二)    形狀 -不宜太大,以像媽媽的乳頭為佳。無論形狀如何,奶頭的形狀一定要吻合寶寶上顎凹陷的地方,讓舌頭容易含住吸吮。

    (三)    吸孔 -奶瓶的吸吮口的形狀和大小不一。圓孔的流出量較小,適用於兩個月以下的寶寶,十字形吸孔多用在喝果汁和湯時,如果孔不太大,也可以用來喝牛奶。Y形吸孔的效果和十字形相似,但喝時會因方向不同,流量也會有變。寶寶兩個月大以後,可改用十字形,或Y型吸孔的奶嘴。

    奶嘴孔的大小是否適中,對寶寶吸奶會有影響。測試的方法,是將奶嘴套在瓶口,然後將奶瓶倒立,如果奶呈直線下瀉,則表示孔太大;如果一滴一滴地滴出,則太小;連續地滴出才適中。奶嘴孔太小,不易吸吮,會使寶寶生氣,或未吸完已累得睡著了。吸奶的時間一般以十五至二十分鐘為佳,若超過這時間仍未喝完,或未完時已不喝了,就要檢查奶嘴。

    奶嘴孔太小,可以用剪刀或刀片將它開大一點。如果太大,容易使寶寶嗆奶,或因吸得太快而不舒服,就必須換個適中的了。

      打嗝

    寶寶吮奶時吞入空氣,會在胃內形成氣泡,因而不適。媽媽應為寶寶拍背,助他打嗝,把胃內的氣泡吐出。

    由於寶寶的食道與胃部之間的環狀肌肉太嫩,所以奶汁容易倒流而嘔奶。以下的方法,可防止寶寶嘔奶:

    1. 勿在漲乳厲害時餵奶,媽媽應在餵奶前稍微揉一下乳房,使乳房鬆軟後才授乳,以免寶寶吸入太多空氣。

    2. 奶嘴出口孔必須大小適中,用十至十五分鐘以內可吸食完的奶嘴最佳。

    3. 勿將寶寶的身體平放,應使他的頭部稍高,胃堣~不會積存空氣。

      嘔奶

    遇上嬰兒嘔奶,可嘗試慢慢地哺乳,多為他拍背,使他舒適地吃,或者在哺乳時及吃完以後,將他垂直地抱起。如果這些方法皆無效,可能是寶寶對某種奶粉過敏所致。

    吃母乳的寶寶,每吃過一邊乳房的奶汁後,便要為他拍背一次,共拍兩次;吃奶粉的初生寶寶,最好每吃過兩安士奶後便拍背一次,幫助他打嗝。

    拍背時,可將寶寶的上身靠著媽媽的肩膊,媽媽在肩膊上鋪一塊布,以免弄髒衣服。或者讓寶寶坐在一邊大腿上,單手支撐他的胸膛及頭部,另一隻手為他拍背。

    寶寶開始嘔奶的時候,要把他的臉偏向側邊,或者抱起寶寶,使他吐出來的東西不會阻塞呼吸。嘔出的奶有時會凝成固體,發出奶酸味,是正常的。寶寶口中的奶,可用棉花或海綿拭去,並用棉花棒沾些橄欖油輕拭去鼻孔堛熒艇X物;嘴邊也要拭淨,否則會生紅疹或水泡。

    嘔奶後等寶寶的情緒穩定下來約三十分鐘,若他因肚餓而哭泣,可以再餵些奶,但量宜略少,否則寶寶會再嘔。

  • 客家清炖鸡

    2007-04-29 13:45:23

    客家清炖鸡

    材料:二斤重光鸡一只、配料:手指一节大小的当归、二蟡_、六粒红枣、绍酒或米酒二汤匙、盐三茶匙。

    将上述配料各半放(抹)于鸡膛内外,置入带職馴蛂A放入煲中隔水蒸2.5小时以上。

    上台后开癒A香气四溢,此时鸡身看上去还是完整的,但用一竹筷就可以将鸡撕得七零八落,你就吃吧!炖好的鸡有一、二碗左右的汤汁,那可是极品鸡汤!用来捞饭捞面捞菜均一流。

    近来煤气贵,炖鸡时水开了就可改小火,注意保汽、保持水憪Y可,这是我的b践r验。
     
    客家炖鸡里还有沙諰M党諤a?听说客家炖鸡里有五种x材的。当归、北、党諢B沙諢B红枣、枸杞子等。还有什么呢?
  • 清炖鸡的做法

    2007-04-29 13:42:59

    清炖鸡的做法
    用料:肉鸡1只,盐8克,味精5克,b10克,姜10克,料洒15克,香油3克。

    制法:1将鸡开膛取出内脏,注意将粘在胸骨上的肺去掉,放入清水中将血水}净,用刀根部把鸡剁成鸡蛋大小的癒Cb切段,姜切癒C
    2炒锅上火,烧开一锅清水,将鸡穢韙J,待其表面收缩后取出,放入═穭互~净,并将其表面污物去掉。
    3炒锅上火,加入清水,放入
    清炖鸡的做法
    用料:肉鸡1只,盐8克,味精5克,b10克,姜10克,料洒15克,香油3克。

    制法:1将鸡开膛取出内脏,注意将粘在胸骨上的肺去掉,放入清水中将血水}净,用刀根部把鸡剁成鸡蛋大小的癒Cb切段,姜切癒C
    2炒锅上火,烧开一锅清水,将鸡穢韙J,待其表面收缩后取出,放入═穭互~净,并将其表面污物去掉。
    3炒锅上火,加入清水,放入b、姜癒B料洒、盐和味精,放入鸡癒A开锅后转用小火烧制。大约烧制25-35分砥A待肉烂后,即可食用。
    味精没必要放,因为鸡精比味精更好,做鸡的时候,没必要放
    鸡洗净后整只入锅,加水,然后b段、姜片,水开后撇去浮末,然后放入大料、鰤s、盐,小火炖半小时就可以了
    可以配些红枣、党諢B枸杞,还可以考虑香菇和茶树菇,致使这恘菇味道浓烈,不喜欢不要放
    b、姜癒B料洒、盐和味精,放入鸡癒A开锅后转用小火烧制。大约烧制25-35分砥A待肉烂后,即可食用。
    味精没必要放,因为鸡精比味精更好,做鸡的时候,没必要放
    鸡洗净后整只入锅,加水,然后b段、姜片,水开后撇去浮末,然后放入大料、鰤s、盐,小火炖半小时就可以了
    可以配些红枣、党諢B枸杞,还可以考虑香菇和茶树菇,致使这恘菇味道浓烈,不喜欢不要放
  • DIY 介紹 [焊接]

    2007-04-25 09:53:11


    作者:diy 文章來源:本站原創 點擊數 14505 更新時間:2005-5-17 文章錄入:diy 責任編輯:d
    忍耐了好久,終於到了焊接的時刻,不過還請按耐一下,請先想想三個問題,確定無誤者才能放行!
    第一,您熟悉焊接的技巧嗎?
    第二,您知道安裝的順序嗎?
    第三,您知道如何測試電路板嗎?
    如果您對上列三個問題自認胸有成竹回答無誤,那麼請您直接跳過本篇,否則還是請上完最後一堂課,再動手吧!

    回答第一個問題:您熟悉焊接的技巧嗎?
    焊接的工具很簡單,一把燒熱的烙鐵、一卷焊錫就是全部的工具。如果您第一次接觸烙鐵與焊錫,建議您逛電子街的時候,順板」以及一些最便宜的電阻回來,好好的練習插孔焊接一番,等到技術熟練有信心了,然後才實際裝套件。可不要第一次就把作實驗品,自己搞壞了可別怪套件設計不良。萬用板在各電料行皆買得到,外觀特徵是一塊鑽滿小洞的電路板,這是用來做實可以自由設計搭配材料組裝。
    將電阻折腳插在電路板已鑽好的孔上,實際焊焊看。正確的焊接方法是:將烙鐵頭尖端靠在電路板與零件腳上加熱,幾乎就在的同時,將焊錫絲往電路板與烙鐵頭之間的縫隙熔下去(一定要往電路板與烙鐵頭之間的縫隙塗才行。將焊錫絲往烙鐵上塗一些焊錫,再往電路板上抹的方法是錯誤的),由於焊錫絲內部已經添加助焊劑,所以焊錫可以平整的「附著」在電路板上焊點即光滑圓亮。
    三個動作須迅速連貫,否則加熱過久會因為高溫而傷害到電子元件,尤其是電晶體與IC,所以焊接的動作務必快速確實,平均鐘(甚至更短的時間)之內完成。再者焊錫堛漣U焊劑也不耐熱,在焊錫熔化的同時,助焊劑也會隨之氣化蒸發,蒸發之後就作用,無法讓焊錫光滑平整,整個焊點也隨之失去粘著性,因而無法讓焊錫平均的附著於電路板與零件腳上。因此,若第一次的補救措施,就是再加入一些焊錫,此時,失去附著力的焊錫又馬上恢復活性。
    有三個因素會降低焊錫的附著力,使焊錫不聽使喚難焊至極。第一是烙鐵過熱,當焊錫熔化的同時,助焊劑也馬上蒸發殆盡「潤滑」焊錫的功能,所以怎麼粘也粘不上電路板。此種現象尤其容易發生在40瓦木柄傳統烙鐵的身上,改用30瓦烙鐵或是利鐵降溫皆可改善。第二是電路板與零件腳表面已氧化,已氧化的電路板或零件腳是無法粘上焊錫的,可以先用刀片將表面刮幹接。否則焊錫僅是「包住」零件腳,而不是「粘住」零件腳,容易形成「假焊」現象(意即看起來好象粘住了,其實根本不導種類特殊或品質太差。部份含銀焊錫或不含鉛的純錫,由於合金比例不同使得熔點較一般焊錫高,且焊錫的「粘著性」差,者應儘量避免使用此款焊錫,以免自討苦吃。品質太差的焊錫合金雜質過多,成分不良,雜牌焊錫能免就免,買烙鐵附贈的免不要覺得可惜。建議用家花點中錢購買Siltec焊錫,不但好焊又好聲。焊接一部擴大機使用的焊錫並不多,這個錢絕對不能省
    安插零件時應從高度最低的先裝起,以此次交直流的Chorus合唱前級電路板而言,以二極體高度最低,所以應先將所有二極體將電路板反過來壓在平整的桌面上再行焊接。如此既可以使二極體們通通緊貼在電路板上,又不會有漏裝的困擾。高度最低著再焊電阻、小信號電晶體、電容等。
    焊接電路板的動作千萬急不得,花錢買套件被您兩三下就搞定不是很可惜嗎?每焊完一批材料,就把該批材料的接腳用斜口鉗管的高度不要太高,在電路板上的高度頂多一公分。電容等高度較高的材料,可以用手一邊壓緊在電路板上,一邊焊接,別讓搖晃晃的。隨便打開一部廠制機的上蓋,電路板上的做工是您及格的標準,想辦法儘量超越它!
    電路板上的元件焊完之後,記得再檢查一遍,檢查有無裝錯零件、檢查有無冷焊、檢查焊點有無與隔壁的焊點短路。接著裝上線,然後再做測試。
    大部分的套件都需要調整的動作,前級要調整電源供應器的電壓,後級要調整偏壓、中點電壓等。以數位禪套件而言,電路板設計,所以只要焊接妥當,即可直接開機使用。交直流的Chorus合唱前級只需調整電源供應器的正負穩壓輸出,拿著三用電錶壓,一手再用精密一字起子旋轉半可變電阻,將電壓調整成額定的±18V即可。 單端並聯300B,由於組裝的技術層面較高,不但要測試高低電壓,也要調整300B的工作偏壓,雖然較複雜但也僅用一部三用用家自認手腳鈍鈍、目光看不清電錶指數,建議在組裝前向店家商借一部完成品,以依樣畫葫蘆方式仿裝一部,最後的測試調空幫忙,我想目前的DIY店家應該不會拒絕才是。
    後級的測試必須更加小心,因為後級的電源變壓器電力強勁,如果誤接或短路,容易引起零件嚴重燒毀,組裝完畢後檢查再檢成功的不二法。以此次介紹的佑升PH-113晶體後級而言,由於電路板上使用的材料已經配對,所以不需要任何的調整。測試路板的正負電源上各串一枚50Ω/2W的電阻,然後上電測試,如果電路正常運作,用電錶測量電阻兩端的壓降,即可利用歐姆態電流。如果組裝有問題(如裝錯或短路),過大的電流會讓這兩枚電阻馬上過熱冒煙,即可發揮犧牲小我保全大我的任務檢查即可。
    每款套件設計均不同,各有需要注意的地方與測試方法,安裝前務必詳讀設計者寫的安裝手冊,才不致於出差錯。好了,開始吧!

     

  • 遺體告別

    2007-01-20 13:24:33

    今天,終于被逼要整理書房了。

    11月份dchome服務器大癱瘓的罪魁禍首,或者又可以說是為dchome勞心勞力,7X24服務了4年的老夥伴被我整理了出來。

    雖然沒有用,但不知怎的,還是有點捨不得,心想,如果有個千尺大屋,我肯定會把她保留下來,無奈,我沒有,只能留張相片,當作紀念了。

     

  • 釘子

    2007-01-11 09:07:00

    有一個男孩有著很壞的脾氣,

    於是他的父親就給了他一袋釘子並且告訴他,

    每當他發脾氣的時候就釘一根釘子在後院的圍籬上。

    第一天,這個男孩釘下了37根釘子。

    慢慢地每天釘下的數量減少了。

    他發現控制自己的脾氣要比釘下那些釘子來得容易些。

    終於有一天這個男孩再也不會失去耐性亂發脾氣,

    他告訴他的父親這件事,

    父親告訴他,現在開始每當他能控制自己的脾氣的時候,就拔出一根釘子。

    一天天地過去了,最後男孩告訴他的父親,他終於把所有釘子都拔出來了。

    父親握著他的手來到後院,

    兒子,你做得很好,

    可是看看籬笆上的釘子洞,這些洞永遠也不可能恢復了。

    就像你和一個人吵架,說了些難聽的話,你就在他心裡留下了一個傷口,像這個釘子洞一樣。

    插一把刀子在一個人的身體裡,再拔出來,傷口就難以癒合了。

    無論你怎麼道歉,傷口總是在那兒。

    要知道,身體上的傷口和心靈上的傷口一樣都難以恢復。

    人與人之間常常因為一些彼此無法釋懷的堅持,

    而造成永遠的傷害。

    如果我們都從自己做起,

    開始寬容地看待他人,

    相信你一定能收到許多意想不到的結果。

  • 日誌 ?

    2007-01-08 22:35:07

    咁大個仔第一次寫...

     

    testing One Two....

    testing One Two....

我的欄目

數據統計

  • 訪問量: 4646
  • 日誌數: 13
  • 建立時間: 2006-11-25
  • 更新時間: 2007-05-09

RSS訂閱

Open Toolbar