การเปลี่ยนโดเมนของบล็อกที่ใช้ wordpress

เนื่องด้วยผมมีเหตุจำเป็นที่ต้องเปลี่ยนโดเมนบล็อกที่ใช้ wordpress จาก abc.com เป็น abc.net  แต่หลังจากที่ได้แก้ไขค่าต่างๆ ของเว็บเซิร์ฟเวอร์แล้วพบว่า เมื่อเปิด abc.net ก็ยังคง redirect กลับไปที่ abc.com เช่นเดิม

ในที่สุดก็พบว่าจะต้องเข้าไปแก้ไขที่ฐานข้อมูลของ wordpress โดยตรง  เพื่อไม่ให้ redirect ไปที่ชื่อโดเมนเดิม  ซึ่งตารางที่จะต้องทำการแก้ไขคือ wp_options  โดยต้องแก้ไข siteurl และ home ให้เป็นชื่อเว็บใหม่

จากของเดิมที่เป็น  http://www.abc.com ต้องแก้ไขเป็น http://www.abc.net ครับ

😉

ค้นหาค่า auto_increment ของ table ด้วย MDB2

        $sql = "SHOW TABLE STATUS LIKE 'table_name'";
        $res = $mdb2->query($sql);
        if (PEAR::isError($res)) {
            die($res->getMessage());
        }
        $result = $res->fetchRow();
        $next_id = $result['auto_increment'];

การย้าย Mailman: ติดตั้งโดยใช้ rpm package(ภาค 2)

สืบต่อจากเรื่อง การย้าย Mailman และปรับแต่งให้รองรับภาษาไทย ก่อนหน้านี้  วันนี้ระบบ mailing list มีปัญหาหลังจากการ upgrade OS โดยอีเมลอะไรก็ตามที่ส่งเข้า mailing list จะหายสาบสูญไปเลย โดยไม่มีอีเมลแจ้งบอกทั้งผู้ส่งและ moderator

ผมตรวจสอบดูแล้วก็หาสาเหตุไม่พบ และได้ลองทำการติดตั้งใหม่อีกครั้ง ปัญหาก็ยังไม่หายไป  ก็เลยตัดสินใจใช้ rpm package ติดตั้ง ด้วยคำสั่ง

# yum install mailman

หลังจากติดตั้งแล้วพบว่า โครงสร้างไดเรกทอรีของ mailman กระจายอยู่ตามที่ต่างๆ ได้แก่

  • /usr/lib/mailman เก็บตัวโปรแกรมหลักและไฟล์ที่ใช้ปรับแต่งระบบ
  • /var/lib/mailman เก็บข้อมูลของ mailing list ต่างๆ
  • /etc/mailman เก็บไฟล์ aliases ของ mailing list ต่างๆ
เมื่อโครงสร้างเปลี่ยนไปทำให้ต้องมีการตามปรับค่า config ต่างๆ ใหม่ไปด้วย
สำหรับวิธีการเพิ่มภาษาไทยนั้น ก็ยังจำเป็นจะต้องแก้ไขไฟล์ /usr/lib/mailman/Mailman/Defaults.py เช่นเดิม โดยให้เพิ่มบรรทัดต่อไปนี้ ที่กลุ่มคำสั่งเพิ่มภาษาต่างๆ  ซึ่งจะอยู่ที่บริเวณท้ายสุดของไฟล์
add_language('th',    _('Thai'),    'tis-620')
หลังจากนั้นแก้ไขไฟล์ /usr/lib/mailman/Mailman/mm_cfg.py ดังนี้
DEFAULT_URL_HOST   = 'list.domain.com' //ปรับแก้ไขค่าเดิม
DEFAULT_EMAIL_HOST = 'list.domain.com' //ปรับแก้ไขค่าเดิม
DEFAULT_CHARSET = 'tis-620' //พิมพ์เพิ่มเติม VERBATIM_ENCODING = ['tis-620'] //พิมพ์เพิ่มเติม DEFAULT_SERVER_LANGUAGE = 'th' //พิมพ์เพิ่มเติม

และเนื่องจาก alias ไฟล์ของ mailman อยู่ที่ /etc/mailman/aliases และ /etc/mailman/aliases จึงต้องแก้ไขไฟล์ /etc/postfix/main.cf ด้วย

alias_maps = hash:/etc/aliases, hash:/etc/mailman/aliases alias_database = hash:/etc/aliases, hash:/etc/mailman/aliases

หลังจากนั้นก็ทำการย้ายข้อมูลเดิมไปไว้ที่ /var/lib/mailman/archives, /var/lib/mailman/data และ /var/lib/mailman/lists ตามลำดับ แล้วก็ต้องตรวจสอบค่า permission โดยใช้คำสั่ง

/usr/lib/mailman/bin/check_perm -f

สิ่งที่สำคัญอีกประการหนึ่งคืออย่าลืมตรวจสอบว่า  mailman service  ได้ทำงานแล้วหรือไม่  และควรกำหนดให้เริ่มทำงานโดยอัตโนมัติทุกครั้งด้วย

ท้ายที่สุดก็จะต้องปรับแต่งค่าในไฟล์ /etc/httpd/conf.d/mailman.conf ให้เหมาะสมด้วยครับ

จัดการภาษาไทย (UTF-8) ด้วย Multibyte String Functions

UTF-8 ใช้พื้นที่ 3 ไบต์ ในการเก็บข้อมูลภาษาไทย 1 อักขระ  ดังนั้นจึงไม่สามารถใช้ฟังก์ชัน เช่น strlen() และ substr() กับภาษาไทยที่เป็น UTF-8 ได้ เช่น

$string = "ที่นี่abcd1234";
echo 'strlen() return: '.strlen($string);
ผลลัพธ์ที่ได้คือ
strlen() return: 26

ตัวเลข 26 มาจาก ภาษาไทย 6×3 = 18, ภาษาอังกฤษ 4 และตัวเลข 4 ตัว

ดังนั้นเพื่อให้นับจำนวนตัวอักขระได้อย่างถูกต้องจะต้องใช้ฟังก์ชัน multibyte  string  เช่น จากตัวอย่างข้างต้น จะต้องใช้ฟังก์ชัน mb_strlen() แทน strlen()

Continue reading จัดการภาษาไทย (UTF-8) ด้วย Multibyte String Functions

อนุมัติโดเมนใหม่หลายพันชื่อ

รอพบกับ .pepsi อยากโก้กว่านั้นต้องลอง .bangkok

หน่วยงานกลางรับจดทะเบียนชื่อเวบไซต์ อนุมัติโดเมนใหม่หลายพันชื่อ ครอบคลุมตั้งแต่ .paris จนถึง .pepsi

กรุงเทพธุรกิจ ออนไลน์ : การอนุมัติดังกล่าว ถือเป็นการเปลี่ยนแปลงครั้งยิ่งใหญ่ในประวัติศาสตร์อินเทอร์เน็ต

ปัจจุบัน ชื่อโดเมนจะถูกจำกัดอยู่ในกลุ่มของชื่อบนๆ ที่ประกอบด้วย ชื่อประเทศ 240 ประเทศ และคำทั่วไปอีกประมาณ 20 สกุล เช่น .com, .net, .org, .gov, .edu และ .aero

เป็นที่คาดหวังว่า การปรับปรุงโดเมนเนมใหม่จะพลิกโฉมการค้นหา และการเข้าใช้งานอินเทอร์เน็ต รวมถึงแก้ปัญหาโดเมนปัจจุบันที่จะหมดสต็อกภายในปี 2554 โดยผู้ใช้เวบไซต์กว่า 1.3 พันล้านคน สามารถซื้อแอดเดรสใหม่ ที่ใช้คำทั่วไป แบรนด์สินค้า ชื่อบริษัท และชื่อเมืองได้อย่างไม่จำกัดได้ช่วงประมาณปี 2552

นอกจากนี้ ผู้ประกอบการหลายราย เช่น อีเบย์ เวบกลางค้าขายผ่านอินเทอร์เน็ต ก็เป็นหนึ่งในหลายบริษัทที่แสดงความต้องการจดทะเบียนโดเมนเนมของตัวเอง รวมไปถึงธนาคาร และผู้ผลิตรถยนต์ ที่ต้องการใช้ .bank หรือ .car เช่นเดียวกันเพื่อประโยชน์ในการชี้เฉพาะธุรกิจ

ขณะที่ เมืองหลวงต่างๆ ก็จะได้รับประโยชน์ เช่น เมืองเบอร์ลินในประเทศเยอรมนี สามารถใช้ .berlin หรือ นิวยอร์กในสหรัฐอเมริกา สามารถใช้ .nyc

ทั้งนี้ ผู้เชี่ยวชาญในอุตสาหกรรม คาดว่าค่าใช้จ่ายของการซื้อโดเมนเนมใหม่ดังกล่าว จะกำหนดเป็นอัตราที่แน่นอน คาดว่าจะอยู่ในหลักหลายหมื่นดอลลาร์ต่อชื่อโดเมน

ด้านผู้บริหารไอแคนน์ กล่าวว่า จะมีการกำหนดมาตรการที่จำกัดการจดทะเบียนชื่อโดเมน ซึ่งมีจุดประสงค์ไม่เหมาะสม เพื่อป้องกันความวุ่นวายที่อาจเกิดขึ้น

ข่าวจาก: http://www.bangkokbiznews.com/2008/06/30/news_271125.php

CSS: CENTERING THINGS

Centering lines of text

P { text-align: center }
H2 { text-align: center }

Centering a block of text or an image

P.blocktext {
    margin-left: auto;
    margin-right: auto;
    width: 6em
}
...
<P class="blocktext">This rather...
IMG.displayed {
    display: block;
    margin-left: auto;
    margin-right: auto }
...
<IMG class="displayed" src="..." alt="...">

Centering a block or an image vertically

DIV.container {
    min-height: 10em;
    display: table-cell;
    vertical-align: middle }
...
<DIV class="container">
  <P>This small paragraph...
</DIV>

Ref: http://www.w3.org/Style/Examples/007/center

กลับไปหน้าที่แล้ว

วิธีการที่จะทำให้ script กลับไปหน้าที่แล้วหลังจากทำงานเสร็จคือใช้ $_SERVER[‘HTTP_REFERER’] ครับ

<?php

// Somethint here

// Redirect back to previous page
$previous = $_SERVER['HTTP_REFERER'];
header("location:$previous");
exit;
?>

วิธีการดู log file ของ squid แบบง่ายๆ

วิธีการดู log file ของ squid แบบง่ายๆ

#
#tail -f /var/log/squid/access.log | awk '{print $8,$7,strftime("%c",$1),$3}'
#

อ้างอิงจาก http://www.linuxquestions.org/questions/linux-newbie-8/unix-time-conversion-604263/

ภาษาไทยกับ PHP และ MySQL

UTF-8 เป็นคำตอบสุดท้่าย เพื่อให้การใช้ภาษาไทยกับ PHP และ MySQL ใช้งานได้อย่างสมบูรณ์

การสร้างฐานข้อมูลใน MySQL

ให้ตั้งค่าดังต่อไปนี้

  • Default CHARSET = utf8
  • COLLATE = utf8_unicode_ci

ตัวอย่างเช่น

CREATE TABLE brand (
pk_brand int(5) NOT NULL auto_increment,
brand varchar(250) collate utf8_unicode_ci NOT NULL,
brand_logo varchar(200) collate utf8_unicode_ci NOT NULL,
website varchar(200) collate utf8_unicode_ci default NULL,
PRIMARY KEY  (pk_brand)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

แล้วทำไมจึงไม่ใช้ utf8_general_ci?  อ่านได้ที่นี่

การเชื่อมต่อจาก PHP ไปยัง MySQL

หลังจากที่เชื่อมต่อกับฐานข้อมูลแล้วให้ส่ง query ต่อไปนี้ด้วย (ทำแค่ครั้งเดียว)

  • set NAMES utf8

ขอให้สังเกตว่า ใช้ utf8  ไม่ใช่  utf-8  ตัวอย่างเช่น

<?php
// Database connection for abstract
$dsn = 'mysql://username:password@localhost/database';
$mdb2 =& MDB2::factory($dsn);
if (PEAR::isError($mdb2)) {
    die ($mdb2->getMessage());
}
// set fetchmode
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);
$mdb2->query('set NAMES utf8');
?>

การเขียน META TAG ใน HTML Code

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello!</title>
</head>

🙂

วิธีการเรียก Smarty library แบบง่าย

ผมบังเิอิญไปเจอวิธีการที่จะเรียก Smarty library ที่น่าสนใจ  สะดวกมากเวลาที่กำลังพัฒนาโปรแกรม เพราะไม่ต้องระบุ path เลย แต่เมื่อพัฒนาโปรแกรมเสร็จแล้วก็ควรแก้ไข path ให้ถูกต้องครับ

<?php
// SMARTY Section
define('SMARTY_DIR',str_replace("\","/",getcwd()).'/Smarty-2.6.19/libs/');
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = str_replace("\","/",getcwd()).'/templates/';
$smarty->compile_dir  = str_replace("\","/",getcwd()).'/templates_c/';
$smarty->config_dir   = str_replace("\","/",getcwd()).'/configs/';
$smarty->cache_dir    = str_replace("\","/",getcwd()).'/cache/';
//** un-comment the following line to show the debug console
//$smarty->debugging = true;
?>