วันศุกร์ที่ 11 เมษายน พ.ศ. 2557

Install FTP Server on CentOS

ขั้นแรก การ Install FTP Server ใช้คำสั่ง

yum install vsftp ftp

หลังจากติดตั้ง ทำการ config ไฟล์ /etc/vsftpd/vsftpd.conf ดังนี้

เปลี่ยนค่าเป็น NO ใน anonymous_enable=NO

เอาคอมเมนท์ออกจาก ascii_upload_enable=YES และ ascii_download_enable=YES

สุดท้ายเพิ่มบรรทัดว่า use_localtime=YES

เซฟไฟล์คอมฟิกแล้วสั่งรัน service

service vsftpd start

chkconfig vsftpd on

เป็นอันเสร็จเรียบร้อย

Install FTP Server on CentOS

ขั้นแรก การ Install FTP Server ใช้คำสั่ง

yum install vsftp ftp

หลังจากติดตั้ง ทำการ config ไฟล์ /etc/vsftpd/vsftpd.conf ดังนี้

เปลี่ยนค่าเป็น NO ใน anonymous_enable=NO

เอาคอมเมนท์ออกจาก ascii_upload_enable=YES และ ascii_download_enable=YES

สุดท้ายเพิ่มบรรทัดว่า use_localtime=YES

เซฟไฟล์คอมฟิกแล้วสั่งรัน service

service vsftpd start

chkconfig vsftpd on

เป็นอันเสร็จเรียบร้อย

วันอังคารที่ 8 เมษายน พ.ศ. 2557

การตรวจสอบข้อมูล One Stop Service กับแฟ้ม Service ที่ถูกส่งออกมา

วันนี้ได้รับโจทย์จาก รพ.สต.ในเครือข่าย ว่าอยากจะดูข้อมูลแฟ้ม SERVICE.TXT ที่ถูกส่งออกจาก 21 แฟ้ม เนื่องจากตรวจสอบกับหน้า One Stop Service ใน HOSxP PCU แล้วได้ข้อมูลไม่เท่ากัน

ในแฟ้ม SERVICE ที่ถูกส่งออกมามีข้อมูล 788 Record ขณะที่ข้อมูลจากหน้า One Stop Service มี 803 Record

แล้วข้อมูลที่ไม่ถูกส่งออกล่ะ? คือ Record ไหน? จะตรวจสอบได้อย่างไร? ถ้ามานั่งไล่ราย Record คงตาลายพอดี หากข้อมูลเยอะกว่านี้ก็ ไมเป็นอันทำอะไรแล้ว

ความรู้ที่มีและพอจะนึกออกได้ ก็คือการนำเข้ามาหาข้อมูลใน Excel โดยใช้ฟังก์ชัน VLOOKUP ช่วย

งั้นลองมาทำดูดีกว่า

ส่งออกข้อมูลจากหน้า One Stop Service โดยใช้ปุ่ม Excel

Excel Export from One Stop Service

จะได้ข้อมูลไฟล์ Excel ออกมา ซึ่งมีข้อมูลเช่นเดียวกับหน้า One Stop Service

One Stop Service Excel File

ขั้นต่อมาคือการนำเอาไฟล์ SERVICE.TXT ที่ได้จาก 21 แฟ้ม มาแปลงเป็น Excel ในที่นี้ขอใช้ Excel เวอร์ชัน 2013 นะครับ

เลือกแท็บ Data แล้วเลือก Get External Data From Text ตามภาพ

2557-04-08 17_04_07-

จะมีหน้าต่างให้เลือกไฟล์ขึ้นมา เลือกไฟล์ SERVICE.TXT จาก 21 แฟ้มที่ส่งออกมา กดปุ่ม Import

2557-04-08 17_06_45-Import Text File

เลือก Encoding เป็นภาษาไทย จากนั้นกด Next

2557-04-08 17_08_57-Text Import Wizard - Step 1 of 3

เลือก Delimiters เป็นสัญลักษณ์ Pipe (|) เพื่อให้แบ่งคอลัมน์ Excel ตามโครงสร้างของ 21 แฟ้ม กด Next

2557-04-08 17_11_58-Text Import Wizard - Step 2 of 3

หน้านี้ยังไม่ต้องทำอะไร กด Finish ผ่านไปได้เลย

2557-04-08 17_13_54-Text Import Wizard - Step 3 of 3

โปรแกรม Excel จะถามว่าให้นำเข้าที่ Worksheet ไหน ให้เลือก New Worksheet แล้วกด OK

2557-04-08 17_15_26-Import Data

จะเห็นว่าเราจะได้ Worksheet เพิ่มมาอีก 1 sheet ชื่อว่า Sheet1 ตรงนี้สามารถเปลี่ยนชื่อได้ครับ เพื่อให้เข้าใจง่าย ขอเปลี่ยนเป็นชื่อว่า Service นะครับ

2557-04-08 17_16_17-

ขั้นตอนการใช้งาน VLOOKUP มีหลักการดังนี้

2557-04-08 17_19_42-Function Arguments

Lookup_value คือค่าที่ต้องการให้ไปหา ในกรณีนี้คือการใช้ SeqID จากข้อมูลที่ Export จาก One Stop Service

Table_array คือ ช่วงข้อมูลที่จะให้ไปหา โดยคอลัมน์แรกจะต้องตรงกับ Lookup_value ที่เราหา และ จะต้องเป็นข้อมูลประเภทเดียวกัน และ ช่วงข้อมูลนี้จะต้องเรียงลำดับด้วย

Col_index_num คือ ลำดับคอลัมน์ในช่วงของ Table_array ที่จะนำค่ามาแสดง

Range_lookup คือ การระบุว่าค่าที่ค้นหาจะต้องตรงตามข้อมูลเลยหรือไม่ โดยมีค่าเป็น True คือไม่ต้องตรงก็ได้ เอาค่าใกล้เคียงมาแสดง และหากเป็น False จะต้องค่าตรงกับที่ระบุใน Lookup_value เท่านั้น

ดังนั้นขั้นแรกก่อนใช้งานฟังก์ชันดังกล่าวต้องมาเตรียมตารางสำหรับ Lookup ก่อน โดนใช้ Sheet ชื่อ Service ที่เพิ่งนำเข้ามานั่นเอง

จากหน้า Sheet Service ให้กดเมนู Data > Filter

2557-04-08 17_27_37-

เลือกคอลัมน์ C ซึ่งเป็นคอลัมน์ของข้อมูล SEQ ที่เราจะใช้เป็นตาราง Lookup แล้วเลือกเรียงลำดับจากน้อยไปมาก

2557-04-08 17_30_44-onestopservice_export (1).xls  [Compatibility Mode] - Excel

กลับมาที่ Sheet Onestopservice_export กดเมนู Data > Filter เช่นเดียวกันกับ Sheet Service

ทำการซ่อนข้อมูลที่ไม่จำเป็น เพื่อให้ง่ายต่อการมอง

2557-04-08 17_39_04-

เลือกคอลัมน์ Q2 (คอลัมน์สุดท้ายของแถวแรกของข้อมูล) กดปุ่ม Fx เพื่อใส่สูตร

2557-04-08 17_42_11-onestopservice_export (1).xls  [Compatibility Mode] - Excel

ค้นหาคำว่า VLOOKUP หรือเลือกจากกล่ม Lookup & Reference

2557-04-08 17_43_30-Insert Function

ค่า Lookup_value คือค่าที่เราจะหา ให้หาจาก SeqID ตรงกับเซลล์ F2

2557-04-08 17_45_04-onestopservice_export (1).xls  [Compatibility Mode] - Excel

คลิกให้เคอร์เซอร์อยู่ในช่อง Table_array จากนั้น คลิก Sheet Service แล้วลากข้อมูลเพื่อเลือก SEQ มาเป็นตารางอ้างอิง

2557-04-08 17_49_05-onestopservice_export (1).xls  [Compatibility Mode] - Excel

มีข้อมูลใน Sheet Service อยู่กี่แถวก็ให้เลือกมาให้หมด ซึ่งจากภาพจะเลือกมาแค่คอลัมน์เดียว เพราะ จะเอาแค่คอลัมน์นี้มาแสดงผล ตามสูตรช่อง Col_index_num ก็เลยใส่ 1 คือคอลัมน์ที่ 1 และสุดท้าย Range_lookup ใส่ค่า FALSE เพื่อให้หาข้อมูลที่ตรงกันเท่านั้น จากนั้นกด OK

2557-04-08 17_52_30-Function Arguments

เราจะเห็นว่าค่าที่ได้คือ #N/A แสดงว่าข้อมูลในแถวนี้ไม่ได้ถูกส่งออกมาในแฟ้ม SERVICE ซึ่งสามารถไปตรวจสอบได้

ที่นี้เราจะทำการแก้ไขสูตรของ VLOOKUP เพื่อจะทำการคัดลอกไปใช้ในแถวอื่นๆ ด้วย ดังนี้

ให้ใส่เครื่องหมาย $ หน้าตัวแสดงตำแหน่งแถวและคอลัมน์ที่เป็น Table_array เพื่อตรึงค่าการค้นหาให้อยู่ช่วงนี้เท่านั้น

ก่อนใส่

2557-04-08 17_56_19-onestopservice_export (1).xls  [Compatibility Mode] - Excel

หลังใส่

2557-04-08 17_58_19-onestopservice_export (1).xls  [Compatibility Mode] - Excel

จากนั้นจึงคัดลอกสูตรไปวางในแถวอื่นๆ ได้เลย

2557-04-08 18_00_02-onestopservice_export (1).xls  [Compatibility Mode] - Excel

จะเห็นว่า ข้อมูลแถวที่มีค่าตาม Lookup_array จะแสดงค่า SEQ ให้เห็น ส่วนข้อมูลแถวไหนไม่พบใน Lookup_array ก็จะแสดงออกมาเป็น #N/A ดังภาพ เราก็สามารถเข้าไปตรวจสอบได้เลยว่าข้อมูลที่ไม่ถูกส่งออก อยู่ที่ไหน และทำการแก้ไขต่อไป

วันศุกร์ที่ 7 กุมภาพันธ์ พ.ศ. 2557

select
      date_format(dchdate,'%Y-%m') as calcmonth,
      sum(IF(datediff(dchdate,regdate)=0,1,datediff(dchdate,regdate))) as los,
      DAY(LAST_DAY(dchdate)) as ccc,
      ((sum(IF(datediff(dchdate,regdate)=0,1,datediff(dchdate,regdate))))*100/60/DAY(LAST_DAY(dchdate))) as bedratio
from ipt
group by calcmonth

วันพุธที่ 15 มกราคม พ.ศ. 2557

สุ่ม Record ใน MySQL สำหรับ HOSxP

วันนี้ว่าจะลองหาวิธีสุ่ม Record ของผุ้มารับบริการเพื่อเอามาตรวจสอบ โดยกำหนดกลุ่มตัวอย่างจากกลุ่มประชากร

กลุ่มประชากร เดือนละประมาณ 10,000 Record

คำนวนได้กลุ่มตัวอย่าง จะต้องดึงมา 1,000 Record

ลองค้นหาใน Google ดู ก็พบวิธีการสุ่ม Record มา จะได้เอาไปใช้งานในอื่นๆ ต่อไป

SELECT * FROM vn_stat WHERE vstdate BETWEEN "2013-12-01" AND "2013-12-31" ORDER BY RAND() LIMIT 1000

วันศุกร์ที่ 31 พฤษภาคม พ.ศ. 2556

วิธีการปิดการแจ้งเตือนคำขอเกมส์และแอพต่างๆ ของ Facebook

หลายๆ คนคงเคยเจอปัญหานี้ เพื่อนส่งคำขอเล่นเกมส์มาให้ แต่เราไม่อยากให้มันเตือนอยู่เรื่อย บอกแล้วก็ยังส่งมาอีก จริงๆ มันมีวิธีที่จะปิดการส่งคำขอตรงนี้ครับ เรียกว่าการบล็อกแอพหรือเกมส์ที่ไม่ต้องการครับ

Confirm Requests - Google Chrome_2013-05-31_08-47-23

จากภาพข้างบนจะเห็นชื่อแอพและเกมส์ที่เพื่อส่งคำขอหรือ Invite ให้ให้เข้ามา ถ้าไม่อยากให้ขึ้นมาเตือนให้ราคาญอีก ให้ทำดังนี้

1. จาก URL ของ facebook ปกติคือ https://www.facebook.com/ ให้พิมพ์ต่อไปว่า reqs.php เป็น https://www.facebook.com/reqs.php

2. จะปรากฏรายการคำขอทั้งหมดในหน้านี้ ไม่ว่าจะเป็นคำขอเป็นเพื่อน, คำขอเข้ากลุ่ม, คำขอจากการเกมส์ที่เราเล่นแล้ว และ คำเชิญชวนให้เล่นเกมส์ (ที่เราไม่ต้องการ) ดังรูป

Confirm Requests - Google Chrome_2013-05-31_08-44-36

3. ให้ลากเมาส์ไปชี้ตรงคำขอที่ไม่ต้องการ จะเห็นปุ่มปิด ที่มุมซ้ายบนปรากฏขึ้นมา (หากเอาเมาส์ไปชี้จะขึ้นคำว่า Remove)

Confirm Requests - Mozilla Firefox_2013-05-31_08-58-56

4. ให้กดปุ่มปิดด้านบนซ้ายได้เลย facebook ก็จะบอกกับเราว่า เราได้ซ่อนคำขอแล้ว แต่หากสังเกตบรรทัดที่ 2 จะมีคำว่า Block ตามด้วยชื่อแอพหรือเกมส์อยู่ อันนี้แหละที่เราต้องการ กดเลยครับ

Confirm Requests - Mozilla Firefox_2013-05-31_09-01-37

5. กดปุ๊บก็จะขึ้นหน้าต่างยืนยันมาอีกที่ก็ทำการ Confirm ซะ เป็นอันเรียบร้อย

Confirm Requests - Mozilla Firefox_2013-05-31_09-04-30

เป็นอันเรียบร้อย ต่อไปแอพหรือเกมส์นั้นๆ ก็จะไม่ส่ง Notifications มากวนใจเราอีกเลย

Confirm Requests - Mozilla Firefox_2013-05-31_09-05-58

วันจันทร์ที่ 20 พฤษภาคม พ.ศ. 2556

ขั้นตอนการนำเข้าตารางพื้นฐานจาก Datacenter

เงื่อนไข ๑: เครื่องที่ รพ.สต. ต้องติดต่อกับอินเตอร์เน็ตได้

เงื่อนไข ๒: ได้มีการตั้งค่าการเชื่อมต่อกับ Datacenter ไว้แล้ว

 

ไปที่เมนู Tools (1) > Base data synchronize (2)

tablesync

จะปรากฏหน้าจอ Datacenter sync ขึ้นมา ให้กดปุ่ม ข้อมูลพื้นฐาน (3) จะปรากฏข้อความแสดงตารางพื้นฐานที่จะถูก sync จาก datacenter รอสักครู่ เมื่อข้อมูล sync จาก datacenter เรียบร้อยแล้ว จะขึ้นป็อบอัพว่า Done ให้กดปุ่ม OK (4) เป็นอันเรียบร้อย

tablesync1