วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2555

php backup mysql

function backup_tables($host,$user,$pass,$name)
{
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);
    mysql_query("SET NAMES utf8");
   
    $backupFile = $name . date("Y-m-d-H-i-s") . '.gz';
    $command = "mysqldump --opt --host=$host --user=$user --password=$pass $name | gzip > $backupFile";
    system($command);
   
    mysql_close($link);
}

วันพุธที่ 7 พฤศจิกายน พ.ศ. 2555

วันพุธที่ 17 ตุลาคม พ.ศ. 2555

PostgreSQL- การแทนที่ข้อความ

replace(string text, from text, to text)
text
Replace all occurrences in string of substring from with substring to 
replace( 'abcdefabcdef', 'cd', 'XX')
abXXefabXXef

update house set address=replace( ident, '001/04/', '001-04-') ;

วันศุกร์ที่ 14 กันยายน พ.ศ. 2555

ระบบพิกัดแผนที่ ที่ต้องจำ

ระบบพิกัดแผนที่ ในระบบข้อมูลหรือทางคอมพิวเตอร์ที่เราใช้ในประเทศไทยมี 2 ระบบ
  • ระบบพิกัดภูมิศาสตร์ หรือ Geographic หน่วยเป็น องศา ลิปดา พิลิปดา
  • ระบบพิกัดฉาก หรือ UTM (Universal Transverse Mercator) หน่วยเป็น เมตร และมี 2 โซน Zone 47 และ Zone 48
และหมุดหลักฐานอ้างอิง ที่ประเทศไทยใช้อ้างอิง มี  2 แบบ
  • WGS 1984
  • Indian 1975
ดังนั้นระบบพิกัดแผนที่เมื่อต้องเลือกหมุดหลักฐานด้วย ทั้งหมดมี 6 แบบ
  • WGS 84 / Geographic
  • WGS 84 / UTM Zone 47
  • WGS 84 / UTM Zone 48
  • Indian 1975 / Geographic
  • Indian 1975 / UTM Zone 47
  • Indian 1975 / UTM Zone 48
และสำหรับโปรแกรมเมอร์ที่ต้องเขียนโปรแกรมติดต่อการใช้แผนที่ ต้องใช้รหัสดังนี้
  • epsg:4326      WGS 84 / Geographic
  • epsg:32647    WGS 84 / UTM Zone 47
  • epsg:32648    WGS 84 / UTM Zone 48
  • epsg:4240      Indian 1975 / Geographic
  • epsg:24047    Indian 1975 / UTM Zone 47
  • epsg:24048    Indian 1975 / UTM Zone 48

วันพุธที่ 8 สิงหาคม พ.ศ. 2555

การ save font ให้กับ powerpoint หรือ word

   การที่เราสร้างเอกสารหรือสไลด์ในการนำเสนอด้วย Microsoft Word หรือ Microsoft Powerpoint
(ในที่นี้ออฟใ้ช้ 2007)นั้นบางครั้งเราก็ใช้ font หรือตัวอักษรที่คนอื่นๆ ไม่มีกันทำให้เวลาคนอื่นนำไฟล์
ของเราไปเปิด ก็จะเกิดอาการเพี้ยนๆ ไม่แสดงผลตามที่เราต้องการ เราสามารถแก้ปัญหานี้ได้โดยการ save ไฟล์
ให้มี font ที่เราใช้อยู่ติดไปกับไฟล์ word หรือ powerpoint นั้นได้
  วิธีการ save font ให้ติดตั้งไปกับไฟล์ word และ powerpoint นั้น ทำได้ด้วยวิธีเดียวกัน  โดยตัวอย่างจะ
เป็นการทำใน powerpoint นะครับ
  ขั้นตอนที่
1 เมื่อเราพิมพ์งานหรือทำสไำลด์ใน powerpoint เสร็จแล้ว  ให้กดปุ่ม office แล้วเลือกบันทึกเป็น
2. หลังจากนั้นจะมีหน้าต่างการ "บันทึกเป็น" ขึ้นมา  ให้กดที่ "เครื่องมือ"
3.ตรงมุมล้างด้านซ้าย แล้วเลือก "ตัวเลือกการบันทึก"
4. หลังจากนั้นจะมีหน้าต่าง "ตัวเลือกการบันทึกขึ้นมา" ให้ check box ใน "ฝังแบบอักษรในแฟ้ม" ส่วนการ check box ใน
หัวข้อย่อยนั้น ให้เลือกอันใดอันหนึ่งตามต้องการ  ดังนี้
   4.1 ฝังอักขระที่ใช้ในการนำเสนอเท่านัี้น ในกรณีนี้  จะไม่สามารถแก้ไขข้อความที่มี font ของเราได้
   4.2 ฝังอักขระทั้งหมด ในกรณีนี้ สามารถแำ้ก้ไขข้อความของเราได้

5. หลังจากนัี้้นจึงกด "ตกลง" แล้วก็ save ตามปกติ  เป็นอันเสร็จเรียบร้อย

วันพุธที่ 4 กรกฎาคม พ.ศ. 2555

PostgreSQL - การแยก string จากตัวแยก

split_part(string text, delimiter text, field int)
text
Split string on delimiter and return the given field (counting from one)
split_part('abc~@~def~@~ghi', '~@~', 2)
def

update house set p1=split_part(ident, '-', 1),p2=split_part(ident, '-', 2),p3=split_part(ident, '-', 3)

วันพุธที่ 20 มิถุนายน พ.ศ. 2555

การกำหนดค่าคอนฟิกกูเรชั่นของ PostgreSQL

เนื้อหาส่วนนี้จะอธิบายถึงวิธีการกำหนดค่าคอนฟิกกูเรชั่นในด้านเครื่อข่ายของ PostgreSQL ให้เครื่องคอมพิวเตอร์ต่างๆ สามารถติดต่อใช้งานฐานข้อมูลของ PostgreSQL ได้ โดยเนื้อหาที่จะอธิบายนี้ อ้างอิงตามระบบปฏิบัติการลินุกซ์ Fedora Core 4 เท่านั้น ค่าคอนฟิกกูเรชั่นของ PostgreSQL จะเก็บไว้ใน 2 ไฟล์ คือ pg_hba.conf และ postgresql.conf ซึ่งทั้งสองไฟล์เก็บอยู่ในไดเร็คทอรี่ C:\Program Files\PostgreSQL\8.2\data\ 
การกำหนดค่าคอนฟิกกูเรชั่น
1. สำเนาไฟล์คอนฟิกกูเรชั่นต้นฉบับไว้ก่อนที่จะทำการแก้ไข 

2. เรียกใช้โปรแกรม Text Editor โดยคลิกเมนู Start > Accessories > Text Editor แล้วเปิดไฟล์pg_hba.conf และปรับแก้ค่าคอนฟิก

แก้บรรทัด host all all 127.0.0.1/32 ident sameuser แก้เป็น host all all 0.0.0.0/0 trust เพื่ออนุญาตให้เครื่องไคลเอนต์ติดต่อเข้าใช้งานฐานข้อมูลบนเซิร์ฟเวอร์

3. บันทึกการแก้ไขไฟล์ pb_hba.conf

4. เรียกใช้โปรแกรม Text Editor โดยคลิกเมนู Start > Accessories > Text Editor แล้วเปิดไฟล์ postgresql.conf ค้นหาคำว่าlisten_addressesเพื่อค้นพบแล้วให้ปรับแก้ค่าในบรรทัดดังกล่าวดังนี้ แก้จาก listen_addresses = ‘localhost’ แก้เป็น listen_addresses = ‘*’ เพื่ออนุญาตให้เครื่องไคลเอนต์ที่ใช้หมายเลข IP (IP address) อื่นๆ ที่ไม่ใช่ localhost สามารถติดต่อเข้าใช้งานฐานข้อมูล PostgreSQL บนเซิร์ฟเวอร์
5. บันทึกการแก้ไขไฟล์ postgresql.conf
6. สั่งเริ่มต้นการทำงานของเซอร์วิส PostgreSQL ใหม่

วันจันทร์ที่ 18 มิถุนายน พ.ศ. 2555

ทำงานกับไฟล์เยอะๆ ด้วยคำสั่งเดียว (batch processing)


หากมีการทำงานเช่นการ แปลงระบบพิกัดของไฟล์ภาพหรือแผนที่จำนวนมาก และไม่อยากค่อยๆทำทีละไฟล์ไปเรื่อยๆ จนครบก็สามารถอาศัยวิธีการเดิมที่ใช้ในระบบ DOS หรือ  UNIX นั่นก็คือการใช้วิธีการ Batch processing คือสั่งครั้งเดียวให้ทำงานไปเรื่อยๆ จนครบ วิธีการแบบนี้ใช้กับคำสั่งแบบพิมพ์หรือ command line นะครับ

ตัวอย่าง เช่น เราต้องการแปลงระบบพิกัดไปเป็น ละติจูดลอนจิจูด ซึ่งข้อมูลมีระบบพิกัดเป็น UTM zone 47 , WGS84 ซึ่งในการแปลงระบบพิกัดเราอาศัย gdalwarp ใน FWTools คำสั่งคือ
>gdalwarp -t_srs epsg:4326 input.tif output.tif
เมื่อต้องการสั่งแบบทีเดียว ก็ต้องทำการจัดการข้อมูลในโฟล์ดเดอร์นั้นที่นามสกุล tif ให้เหลือเฉพาะข้อมูลที่ต้องการแปลงเท่านั้น ไม่งั้นไฟล์อื่นที่นามสกุลเดียวกันจะถูกแปลงไปด้วย คำสั่งมีดังนี้
>for %i in (.\*tif) do gdalwarp -t_srs epsg:4326 geo\%i
มีความหมายว่าใช้ gdalwarp แปลงระบบพิกัดให้เป็น ละติจูดลอนจิจูด แปลงแล้วให้เอาไปเก็บไว้ใต้โฟล์ดเดอร์geo โดยใช้ชื่อไฟล์เดิม
หากต้องการเติมอักษรต่อท้ายชื่อไฟล์เดิมเพื่อให้เห็นความแตกต่างเช่นต่อท้ายทุกไฟล์ด้วย _srs4326 สามารถทำได้ดังนี้
>for %i in (.\*tif) do gdalwarp -t_srs epsg:4326 geo\%i~_srs4326.tif

วันพุธที่ 15 กุมภาพันธ์ พ.ศ. 2555

Php-แก้ไขการตัดข้อความด้วย substr แล้วมีรูปสี่เหลี่ยม


ใช้ตัดข้อความจากฐานข้อมูลที่ต้องการแสดงบางส่วนเช่น 30 ตัวอักษร กรณีบางครั้งภาษาไทยที่ตัดจากฐานข้อมูล จะแสดงเป็นรูปสี่เหลี่ยม ใช้ฟังก์ชันนี่แทน substr ใน php แก้ปัญหาที่เกิดได้

โค๊ด:

<?phpfunction substr_utf8$str$start_p $len_p){
 return trim(strip_tags(preg_replace'#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$start_p.'}'.


 '((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$len_p.'}).*#s',
  '$1' $str )));
}
// การใช้งาน
// $start_p คือตำแหน่งเริ่มต้นตัดข้อความ
// $len_p คือจำนวนตัวอักษรที่ต้องการแสดง
// $data="ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบข้อความทดสอบ ";
// echo substr($data,0,30);?>