จดหมายหลอกลวง ห้ามคลิก Link ลบทันที
Month: January 2016
-
ตอนที่ 2 : จัดการรายงานด้วย Report Manager
การใช้งาน Report Manager มีขั้นตอนดังต่อไปนี้
- เปิด Browser และพิมพ์ URL ของ Report Server ในช่อง Address โดย URL มีรูปแบบดังนี้ http://<report_server_name>/Reports
- จะปรากฏ หน้าต่าง Windows Security ขึ้นมา เพื่อให้กรอก User name และ Password ในการยืนยันตัวตนเข้าสู่ระบบ
- หากการยืนยันตัวตนเข้าสู่ระบบถูกต้องแล้ว ก็จะสามารถเข้าสู่หน้า Home ของ Report Manager (ดูภาพประกอบที่ 1) แสดง Contents ที่ประกอบด้วย
ภาพประกอบที่ 1 Home ของ Report Manager
3.1 เมนูด้านบนขวาที่ใช้ตั้งค่าคุณสมบัติต่างๆ ของ Report Server ดังนี้
» Home เป็นลิงค์ที่เชื่อมโยงไปยังหน้าหลักของ Report Server ซึ่งก็คือหน้า Home นั่นเอง ประกอบด้วยเมนู ดังนี้
− New Folder เพื่อสร้างโฟลเดอร์ไว้สำหรับเก็บรวบรวมรายงาน, Data Source, Data Model และอื่นๆ ที่มีอยู่ก่อนแล้วไว้ภายใน Folder ที่สร้างขึ้นใหม่
− New Data Source เป็นการสร้าง Data Source ขึ้นมาใหม่เพื่อใช้สำหรับเป็นแหล่งข้อมูลของการสร้างรายงาน
− Report Builder เป็นการใช้โปรแกรม Report Builder แบบ Click Launch โดย User สร้าง Ad hoc Report (โดยการอาศัย Data Model ที่ได้สร้างไว้บน Report Server นำมาใช้เป็นแหล่งข้อมูลในการสร้างรายงาน)
− Folder Settings เพื่อกำหนดบทบาทในการเข้าถึงโฟลเดอร์
− Upload File เพื่อ Upload ไฟล์ต่างๆ เช่น Report (.rdl), Model (.smdl), Shared Dataset (.rsd), Report Part (.rsc) หรือ Resource อื่นๆ มายัง Home ของ Report Server
− Layout อยู่ด้านขวาสุดของเมนู เป็นมุมมองในการแสดงข้อมูล ซึ่งมี 2 โหมด คือ Details View และ Tile View
เมื่อคลิก Dropdown ที่โฟลเดอร์จะมีเมนู เช่น Move, Delete, Security, Manage และเมื่อคลิก Dropdown ที่รายงานจะมีเมนู เช่น Move, Delete, Subscribe…, Create Linked Report, View Report History, Security, Manage, Download และ Edit in Report Builder (ดูภาพประกอบที่ 3) ซึ่งหากคลิกที่ชื่อรายงานจะไปยังหน้าจอสำหรับเรียกดูรายงาน โดยผู้ใช้สามารถ Export ไฟล์ในรูปแบบต่างๆที่ SSRS Support ดังที่ได้กล่าวเอาไว้ในตอนที่ 1 และกด
เพื่อพิมพ์รายงาน (ดูภาพประกอบที่ 4)
ภาพประกอบที่ 3 เมนูของรายงาน
ภาพประกอบที่ 4 View Report
» My Subscriptions เป็นลิงค์ที่เชื่อมโยงไปยังหน้าที่แสดงการตั้ง Subscriptions ทั้งหมดของ Report Server กล่าวคือ เป็นหน้าจอที่แสดงรายการที่ผู้ใช้ได้ตั้ง Schedule สำหรับ Run รายงานเอาไว้ (ดูภาพประกอบที่ 5)
ภาพประกอบที่ 5 Subscriptions ของ Report Manager
» Site Setting เป็นลิงค์ที่เชื่อมโยงไปยังหน้าการตั้งค่าหน้าเว็บ Report Manager ซึ่งมี 3 ส่วน คือ
− General เป็นการตั้งค่า Properties ต่างๆ เช่น ชื่อ, การเก็บ History, เวลา Timeout และ Custom URL สำหรับ Report Builder (ดูภาพประกอบที่ 6)
ภาพประกอบที่ 6 General – Site Setting ของ Report Manager
− Security เป็นการกำนดบทบาท (Role) ในการเข้าถึงหน้าเว็บ Report Manager (ดูภาพประกอบที่ 7) ประกอบด้วย
• System Administrator สามารถดู และแก้ไขข้อมูลการตั้งค่าได้
• System User สามารถดูข้อมูลได้อย่างเดียว
ภาพประกอบที่ 7 Security – Site Setting ของ Report Manager
− Schedules ป็นการกำนดตารางเวลาที่สามารถใช้ร่วมกัน โดยตอน Create Subscriptions เลือก shared schedules (ดูภาพประกอบที่ 8)
ภาพประกอบที่ 8 Schedules – Site Setting ของ Report Manager
» Help เป็นลิงค์ที่เชื่อมโยงไปสู่หน้า Report Manager Help ที่จะให้คำแนะนำหากเกิดการตั้งค่า หรือการทำงานที่ผิดพลาด
-
รายการสิ่งที่ต้องตรวจสอบเมื่อต้องเป็นผู้ดูแล Windows Server
เมื่อระบบที่พัฒนามีมากขึ้น Server ที่ต้องดูแลก็เริ่มจะมีมากขึ้น และแน่นอนว่าต้องดูแลสุขภาพของ Server ให้อยู่ดี มีสุขและต้องทำงานได้อย่างมีประสิทธิภาพ เลยลองไปศึกษาดูว่าคนที่ทำหน้าที่ดูแล Server ที่เรียกว่า Administrator นั้นเค้าต้องตรวจสอบหรือทำอะไรบ้าง ความถี่ในการเข้าไปตรวจสอบเรื่องต่างๆ จึงวสรุปมาเผื่อจะเป็นประโยชน์กับคนหัวอกเดียวกัน (ทั้งพัฒนาโปรแกรมและดูแลสุขภาพของ Server)
พอจะแยกเป็นข้อๆดังนี้
- Updates
-ตรวจสอบ New Package Update ที่ Windows Update โดยทำเดือนละครั้งเป็นอย่างน้อย แต่…ต้องแน่ใจว่ามี Backup หรือ Snapshot ล่าสุดที่พร้อมใช้งานสำหรับถ้า Update แล้วมีปัญหาต้อง Restored ระบบกลับมาให้ได้นะครับ (ส่วนนี้ถ้าเราดูแล Domain Server อยู่ด้วยก็น่าจะศึกษาเรื่อง Group Policy เพื่อสั่งตรวจสอบ server ทั้งหมดที่ดูแลอยู่ให้ Update ตาม Policy ที่ว่างไว้น่าจะดี ตอนนี้กำลังศึกษาเรื่อง Powershell scripts เพื่อให้ตรวจสอบข้อมูลและให้ส่ง mail ไปบอกอยู่ ถ้าทำสำเร็จจะมาเล่าให้ฟังในหัวข้อถัดๆไปนะครับ)
-สำหรับ Server ได้ติดตั้ง Application อื่นๆนอกเหนือจากที่ Windows ให้มาก็ต้องตรวจสอบการ Update ด้วยนะครับถ้าให้ดีความทำ รายการ Application ที่ลงไว้ใน server ด้วยเพื่อสะดวกต้องการติดตาม Update และจะได้รู้ว่ามี Application แปลกปลอมอะไรเพิ่มเติมมาบ้างในเดือนที่กำลังตรวจสอบ - Security
-ตรวจสอบสิทธิการเข้าถึง Server พวก Administrator Group และ Remote access group น่าจะทำ 3-6 เดือนครั้ง
-ตรวจสอบการเปิดปิด Firewall ports ต่างๆ น่าจะทำ 6-12 เดือนครั้ง
-เรื่องการเปลี่ยน Passwords ของ User ที่มีสิทธิเข้าใช้งานระบบ น่าจะทำ 3 เดือนครั้งกำลังดี - Backups
-ฺBackups และ ต้องทดสอบ restores ระบบแบบสุ่ม 2-3 เดือนซักครั้ง - Monitoring
-ตรวจสอบการทำงานของ server โดยการตรวจสอบ logs ต่างๆที่ Server เก็บไว้ ตรงนี้ขอแนะนำ Log Parser Studio ลองไปโหลดมาเล่นดูครับ
-ตรวจสอบการใช้งานทรัพยากรต่างๆของ Server Disk เหลือเท่าไร ใช้ RAM ไปเท่าไร ช่วงไหนทำงานหนักสุด
-ตรวจสอบ Hardware Error ทำความเข้าใจกับ Windows logs > System, look for warnings and critical events.
-Application ที่ลงไว้ตัวไหนไม่ใช้งานก็ความจะเอาออกจาก Server เพื่อลดความเสี่ยงที่ Application เหล่านั้นจะมีช่องโหวให้ถูกโจมตีได้
-ควรมีการ Run คำสั่ง chkdsk เดือนละครั้งเพื่อตรวจสอบ Disk
-ควรมีการตรวจสอบพวก Virus และ Mal ware เดือนละครั้งตามที่อ่านๆมาก็พอสรุปได้ดังนี้ครับ และตามหัวข้อเหล่านี้ก็สามารถขยาย ต่อยอดศึกษาต่อไปได้อีก ที่ผมสนใจอยู่ตอนนี้คือการทำ automatic Task ด้วย Powers hell ถ้าท่านใดมีความรู้หรือมีแหล่งความรู้แนะนำกันได้นะครับ ที่ลองทำและใช้งานอยู่ก็จะเป็นการสั่ง Backup SQL Server Database ไปเก็บไว้ใน Network Drive ซึ่งตัว Backup ของ SQL Server ที่มีมาให้ไม่สามารถมองเห็น Network Drive ได้ก็เลยลองเขียนด้วย power shell ก็ทำงานได้ดีและดูแล้วว่าถ้าใช้งาน Windows Server อยู่ความรู้เรื่อง Power Shell น่าจะช่วยให้ชีวิตการดูแล Server มีความสุขขึ้นมากแน่นอนครับ
- Updates
-
ตอนที่ 1 : มารู้จัก SSRS กันเถอะ…
SQL Server Reporting Services (SSRS) เป็น Technology หนึ่งของ Microsoft SQL Server Services ที่ใช้ในการสร้างและบริหารจัดการรายงาน เริ่มมีใน SQL Server 2005 และในปัจจุบันเป็น SQL Server 2016 ซึ่งข้อดีของการใช้ SSRS อาทิเช่น ไฟล์รายงานเป็นภาษา Rdl ที่เป็น Text File ธรรมดาสามารถเปิดด้วย Text Editor อะไรก็ได้ (ดูภาพประกอบที่ 1) อีกทั้ง SSRS แถมฟรีมากับ SQL Server ดังนั้นหากมี License การใช้งาน SQL Server ก็จะสามารถใช้ SSRS ทำรายงานได้โดยไม่มีค่าใช้จ่ายอื่นเพิ่มเติม และเมื่อมีการ Deployed รายงานไปแล้ว รายงานจะอยู่ใน Web Server ซึ่งผู้ใช้สามารถเรียกดูรายงานผ่าน Web Browser ได้ (ดูภาพประกอบที่ 2) โดยจะต้องกำหนดสิทธิการเช้าถึง Site และสิทธิการเข้าถึงรายงาน นอกจากนั้นยังสามารถนำรายงานไปฝังตัวไว้เป็นส่วนหนึ่งของ Application ก็ได้ เป็นต้น
ภาพประกอบที่ 1 เปิดไฟล์ *.rdl ด้วย Notepad
ภาพประกอบที่ 2 เรียกดูรายงานผ่าน Web Browser
SSRS มีสถาปัตยกรรมแบบ Multi-Tier สนับสนุนการใช้งานทั้ง Native Mode และ SharePoint mode ในที่นี้จะขอกล่าวถึงสถาปัตยกรรมของSSRSที่เป็น Native Mode ซึ่งประกอบด้วย Components ต่างๆ ดังนี้ (ดูภาพประกอบที่ 3)
- Report Processor เป็นตัวที่ควบคุมการทำงานทั้งหมดที่อยู่ใน Report Server ตั้งแต่ Data Processing จนถึง Authentication โดยการทำงานบางอย่างจะแสดงผลผ่าน Programmatic Interfaces
- Programmatic Interfaces เป็นโปรแกรมที่ทำหน้าที่รับการติดต่อการทำงานจากผู้ใช้ แสดงผลการทำงานของรายงาน และ Report Server ให้ผู้ใช้เห็น โดยจะมีการทำงานรวมทั้งนำรายงานจาก Report Server Database มาแสดงผลให้เห็นด้วย
- Data Processing เป็นการประมวลผลข้อมูลที่มาจาก Data Source เพื่อนำมาสร้างรายงาน โดยถูกควบคุมการประมวลผลโดย Report processor
- Rendering เป็นการแสดงผลรายงาน ก่อนที่จะทำการส่งไปให้ผู้ใช้หรือสั่งพิมพ์นำไปใช้งาน
- Report Processing เป็นการประมวลผลรายงาน โดยจะรับข้อมูลที่ถูกส่งต่อมาจาก Data Processing มาประมวลผล
- Authentication (Security) เป็นการยืนยันตัวตนของผู้ใช้ที่ต้องการใช้งาน Report Server โดยแสดงหน้าจอในการ Log on เข้าใช้งาน ผ่าน Programmatic interfaces หาก Log on สำเร็จผู้ใช้ก็จะสามารถเข้าใช้งานได้
- Scheduling and Delivery Processor เป็นตัวประมวลผลการตั้งเวลาและการส่งรายงาน ทำหน้าที่ควบคุม การส่งรายงาน จะมีการให้ผู้ใช้ที่มีสิทธิ์ได้ตั้งเวลาและทำการกำหนดการส่งรายงานให้กับเป้าหมายโดยผ่าน Programmatic interfaces
- Delivery เป็นการส่งรายงานให้กับผู้ใช้ที่เป็นเป้าหมาย
ภาพประกอบที่ 3 SSRS components
ที่มา : https://msdn.microsoft.com/en-us/library/ms157231.aspx
ความสามารถในการ Authoring SSRS
- สร้างรายงานได้จากหลายแหล่งข้อมูล (Data Sources) ที่มีอยู่ เช่น SQL Server, Oracle, OLE DB, OLEDB-MD, ODBC, XML, SAP BI NetWeaver, Hyperion Essbase, Teradata, Microsoft SQL Azure (SQL in the Cloud), Microsoft SQL Server Parallel Data Warehouse, Microsoft SharePoint List เป็นต้น
- สามารถกำหนดสิทธิให้ผู้ใช้สร้างรายงานได้เอง ผ่านโปรแกรม SQL Server Report Builder
- สามารถใช้ Expression ในการแสดงข้อมูล ซึ่งมีหลายประเภทให้ใช้งานตามความต้องการ (ดูภาพประกอบที่ 4)
- สามารถจัดกลุ่มข้อมูล (Grouping), การเรียงข้อมูล (Sorting) และ การกรองข้อมูล (Filtering) รวมถึงสร้างตัวแปร, เขียนฟังก์ชั่นประมวลผลข้อมูล
- Layout, Table, Matrix ของรายงานมีความยืดหยุ่น
- นำเสนอข้อมูลที่ซับซ้อนให้ผู้ใช้รายงานเข้าใจได้ง่าย ด้วยการแสดงข้อมูลแบบ Graphic ที่แสดงภาพรวมของการสรุปข้อมูลโดยใช้ Chart หรือ Gauge
- สามารถ Export ไฟล์ ในรูปแบบต่างๆ XML (File With Report Data), CSV (Comma Delimited), Tiff File, Pdf, Mhtml (Web Archive), Excel และ Word เป็นต้น
ภาพประกอบที่ 4 Expression
อ้างอิง:
-
ASP.NET MVC Part3: สร้าง Model ด้วย Entity Framework
จากบทความก่อนหน้า ซึ่งอาจจะนานมากพอสมควรที่ได้แนะนำ MVC ไปไว้แล้วในเบื้องต้น (ASP.NET MVC Part 1 : ทำความรู้จักกับ ASP.NET MVC และ ASP.NET MVC Part2: เริ่มต้นสร้างเว็บด้วย MVC with Bootstrap) บทความนี้จะมาแนะนำในส่วนของการสร้าง Model ในการเชื่อมต่อกับฐานข้อมูล ในการ query และจัดการกับข้อมูล เพื่อส่งให้กับ Controller และ View เรียกใช้ในลำดับต่อไป
Model คือ ส่วนหนึ่งในองค์ประกอบของการพัฒนาเว็บแอพพลิเคชันตามรูปแบบ MVC Framework (Model-View-Controller) โดยจะเป็นส่วนที่ทำหน้าที่ Business Model หรือส่วนที่ติดต่อกับฐานข้อมูล โดยบทความนี้นำเสนอการนำเครื่องมือ Entity Framework มาใช้ในการสร้างและจัดการ Model ในการเชื่อมต่อกับฐานข้อมูล สำหรับการพัฒนาเว็บแอพพลิเคชันตามรูปแบบ MVC Framework
Entity Framework
Entity Framework คือ tools ที่ทำหน้าที่จัดการกับฐานข้อมูล โดยแนวคิดของ Entity Framework อยู่ในรูปแบบของ O/RM (Object/Relational Mapping) คือ Entity Framework จะสร้าง Layer ทำหน้าที่เป็น Database Model ขึ้นมาเป็น Class ใน Project ของเรา โดยจะทำหน้าที่ Mapping ตัว Class ที่จะสร้างขึ้น กับ Table , View และ Stored Procedure จากฐานข้อมูบ มาไว้บน Project ซึ่งทำให้เราเราสามารถเรียกใช้มันผ่าน Class ที่อยู่ใน Project เราได้เลย ส่วนการเขียน Query หรือจัดการกับข้อมูลผ่านตัว Entity Model จะใช้ Syntax ของ LINQ to Entities ซึ่งเป็น syntax ที่สามารถเข้าใจได้ง่ายตามรูปแบบของภาษาเช่น VB.Net หรือ C#ตัวอย่างการใช้งาน Entity Framework วิธีการใช้งาน Entity Framework เบื้องต้น
1. เปิด solution ที่ต้องการใช้ขึ้นมา (ในบทความนี้เป็น project แบบ MVC Framework)
2. คลิกขวาที่โฟลเดอร์ Model แล้วเลือก Add =>New Item
3. ที่ tab ด้านซ้ายมือ เลือก Data จากนั้นเลือก ADO.NET Entity Data Model และทำการตั้งชื่อ และกดปุ่ม Add
4. เมื่อเข้าสู่หน้าจอให้เลือก Model Content ให้เลือก EF Desiner from DataBase และกด Next จะเข้าสู่ขั้นตอนต่อไป
5.ขั้นตอนถัดมาคือการเลือก Data Connection เป็นการเลือกการติดต่อกับฐานข้อมูลว่าจะให้ Entity ติดต่อกับฐานข้อมูลไหน โดยครั้งแรกหากยังไม่มี ฐานข้อมูลมาให้เลือกใน comboBox จะต้อง New Connection ขึ้นมาก่อน และทำตามขั้นตอนไปได้เลย แต่ถ้ามีแล้วให้เลือก Connection จาก ComboBox หลังจากนั้นให้กดเลือก Yes,include the sensitive data in connection string และเลือก Checkbox ให้ Save Connection string เข้าสู่ Web.Config และตั้งชื่อให้กับ Conection string โดย default ชื่อจะเป็น “Entities” และกดปุ่ม Next เข้าสู่ขั้นตอนต่อไป
6.ขั้นตอนนี้เป็นขั้นตอนสุดท้าย สำหรับเลือกว่า เราจะติดต่อ Entity กับ Table, View หรือ Storeprocdure อะไรบ้าง ให้กด expand และเลือก Table, View หรือ Storeprocdure ที่ต้องการ หลังจากนั้นให้กดปุ่ม Finish เป็นอันเสร็จกระบวนการสร้าง Entity Data Model ในการติดต่อกับฐานข้อมูล
การเรียกใช้งานจากฝั่ง Controller
1.ที่ไฟล์ xxxController.cs ทำการ using เพื่อเรียกใช้งาน
using MVCBootstrap.Models;
2.ประกาศตัวแปรขึ้นมา new object เพื่อจะเข้าถึง entity model ที่เราได้ทำการสร้างไว้ก่อนหน้านี้
var db = new Budget_Entities();
3.เข้าถึงแต่ละ Entity โดยใช้ syntax linq โดยขอยกตัวอย่างในส่วนของการเข้าถึงและจัดการข้อมูลเบื้องต้น
- Query ข้อมูล
public ActionResult QueryData() { var db = new Budget_Entities(); var listCampus = db.VF_CAMPUS.Where(w => w.CAMP_NAME_THAI.Contains("วิทย")); return View(listCampus); }
- Insert ข้อมูล
public ActionResult InsertData() { bool isSuccess = true; I_ITEM item = new I_ITEM(); item.ITEM_NO = "001"; item.ITEM_THAI_NAME = "รายการวัสดุทางการศึกษา"; db.SaveChanges(); return View(isSuccess); }
- Update ข้อมูล
public ActionResult UpdateData(int itemID) { bool isSuccess = true; var db = new Budget_Entities(); var itemForUpdate = db.I_ITEM.Find(itemID); itemForUpdate.ITEM_THAI_NAME = "รายการวัสดุแก้ไข"; db.SaveChanges(); return View(isSuccess); }
- Remove ข้อมูล
public ActionResult RemoveData(int itemID) { bool isSuccess = true; var db = new Budget_Entities(); var itemForRemove = db.I_ITEM.Find(itemID); db.I_ITEM.Remove(itemForRemove); db.SaveChanges(); return View(isSuccess); }
ซึ่งจากทั้ง 4 ตัวอย่างจะมีการประกาศตัวแปร var db = new Budget_Entities(); เป็นการ new object ขึ้นมาเพื่อที่จะเข้าถึง entity ภายใน และทำการ query ข้อมูล, set ค่าให้กับ attribute หรือลบข้อมูล หลังจากที่จัดการกับตัว entity เสร็จแล้ว จะเรียกใช้งาน method SaveChanged() ซึ่งเป็นการสั่งให้ entity Model ทำการ execute และเปลี่ยนแปลงข้อมูลตามที่เราได้เขียน code ไว้ไปยังฐานข้อมูล เป็นอันเสร็จกระบวนการในการเปลี่ยนแปลงข้อมูลที่กระทำกับฐานข้อมูล จากนั้นเราจะเอาค่านั้นไปใช้ต่อหรือ จะ return ค่า ไปยัง View เพื่อแสดงผลต่อไปก็แล้วแต่ผู้ใช้เลยค่ะ
บทความถัดไป : ASP.NET MVC Part 4: ทำความรู้จักกับ ViewData, ViewBag และ TempData
บทความก่อนหน้า : ASP.NET MVC Part2: เริ่มต้นสร้างเว็บด้วย MVC with Bootstrap
แหล่งข้อมูลอ้างอิง :
[2] https://msdn.microsoft.com/en-us/library/bb399760(v=vs.100).aspx
-
เล่าเรื่อง KM การใช้งานโอเพนซอร์สซอฟต์แวร์ ตอน การทำวิดีโอสื่อการสอนง่าย ๆ
มีเพื่อน ๆ มาร่วมแลกเปลี่ยนเรียนรู้ ทั้งที่เป็น ผู้ดูแลระบบ และ อาจารย์ที่ให้ความสนใจ จำนวน 20 คน ผู้นำในการแลกเปลี่ยนฯในครั้งนี้คือ คุณคณกรณ์ หอศิริธรรม ศูนย์คอมพิวเตอร์ ม.อ. ได้นำความรู้จากการปฏิบัติจริงมาถ่ายทอดอย่างเป็นขั้นเป็นตอน
เริ่มด้วยแนะนำการบันทึกวิดีโอด้วย Hangouts on Air ผู้เรียนทุกคนใช้ PSU GAFE (Google Apps For Education) account ซึ่งก็คือ PSU Email ที่ใช้อยู่และได้ผ่านขั้นตอน Password Setting (https://webmail.psu.ac.th/src/resetpassword.html) ในหน้าเว็บ https://webmail.psu.ac.th/src/login.php แล้ว แต่อาจใช้ gmail account ที่มีอยู่ก็ได้
โดยเริ่มต้นที่ไอคอนรูป Google+ เมื่อมีไฟล์ presentation พร้อม (เช่น Microsoft Powerpoint เป็นต้น) ก็ทำการ share เข้ามาใน hangouts on air ซึ่งเลือกได้ว่าจะแชร์ทั้งหน้าจอหรือเฉพาะ presentation ที่เตรียมไว้ แล้วทำการเริ่มบันทึกวิดีโอ เมื่อเสร็จก็ไปตัดต่อไฟล์บน youtube สนุกมาก ง่ายด้วย
ถัดไปก็แนะนำ CamStudio Screen Recorder ให้เอาจาก http://sourceforge.net/projects/camstudio/ แต่ให้ระมัดระวังอย่าคลิกที่ปุ่มสีเขียว Download แต่ให้คลิก hyperlink ที่เขียนว่า Browse All Files ข้างใต้ ซึ่งจะเป็นไฟล์ติดตั้งที่ปลอดจาก Adware ครับ
CamStudio นี้ก็เอาไว้ใช้บันทึกหน้าจอที่เราจะบันทึกวิดีโอ ซึ่งเลือกได้เช่นกันว่าจะบันทึกเฉพาะบริเวณใด หรือ ทั้งหน้าจอ เมื่อทำการ Save จะได้ไฟล์ที่มีความคมชัดสูง ไฟล์ชนิด .avi ขนาดค่อนข้างใหญ่ อย่าบันทึกวิดีโอนานเกินไป
เมื่อได้ไฟล์ชนิด .avi มาแล้ว เราก็นำไฟล์ไปผ่านกระบวนการตัดต่อด้วยโปรแกรม Windows Movie Maker ซึ่งติดตั้งจากที่นี่ Windows Movie Maker 2012 http://windows.microsoft.com/en-us/windows/get-movie-maker-download
เมื่อตัดต่อ เพิ่มเสียงเพลง เพิ่มเสียงคำบรรยาย เพิ่มข้อความคำบรรยาย เพิ่มหน้านำ เพิ่มหน้าจบ เสร็จ ก็มีตัวเลือกให้อัปโหลด youtube ได้เลย
สุดท้าย เราก็ได้เรียนรู้โปรแกม Screen Capture ที่น่าใช้มากทีเดียว ชื่อ Greenshot – a free screenshot tool optimized for productivity http://getgreenshot.org/ ใช้งานแทน Snipping Tools ของ Windows ได้ดีกว่า และใช้งานแทน Snagit ที่ต้องจ่ายค่าใช้งานซอฟต์แวร์ได้
โดยสรุปคือ เราสามารถทำการบันทึกเป็นวิดีโอได้ด้วยโปรแกรม Hangouts on Air จะได้ไฟล์เก็บอยู่ที่ youtube ทันทีแล้วค่อยดาวน์โหลดลงมาตัดต่อก็ได้ หรือ ตัดต่อด้วย Tools บน youtube ก็ได้ เราสามารถเลือกอีกโปรแกรมที่เป็น Client รันบน Windows คือ CamStudio แล้วนำไปตัดต่อด้วย Windows Movie Maker จนเสร็จ แล้วจึง upload ขึ้นบน youtube
-
Spam 14/1/59
จดหมายหลอกลวง โดยมันหลอกเอารหัสผ่านจากคนในของเราไป แล้วเข้ามาส่งจาก PSU Webmail
ระบบตรวจสอบพบพฤติกรรมผิดปรกติ และทำการบังคับเปลี่ยนรหัสผ่านผู้ใช้ไปแล้ว 3 ราย ตั้งแต่ 1 นาทีแรกที่ทำการแล้ว
ที่ยังหลงเหลือ และได้รับอยู่ มักจะมาจาก Mail Group ที่เปิดให้ส่งถึงผู้รับในกลุ่มโดยตรง โดยที่ผู้ดูแลประจำกลุ่มไม่ตรวจสอบก่อนกระจายครับ
เรียนมาเพื่อทราบ
-
การเรียกใช้งานเมธอดในฝั่งเซิร์ฟเวอร์/เว็บเซอร์วิสแบบ Ajax ด้วย jQuery (C#)
ก่อนจะพูดถึงวิธีการเรียกใช้งานเมธอดในฝั่งเซิร์ฟเวอร์/เว็บเซอร์วิสแบบ Ajax ด้วย jQuery ผู้เขียนขอเกริ่นนำเกี่ยวกับที่มาที่ไปเกี่ยวกับแนวคิดแบบ Ajax เพื่อให้ผู้อ่านบางท่านที่ยังอาจงงๆได้ทำความเข้าใจเสียก่อน ว่าโดยปกติแล้วนั้น ในการพัฒนาเว็บไซต์(Web application)ของ ASP.NET จะประกอบด้วย 2 ส่วน คือ Client side และ Server side ซึ่งการทำงานในส่วนของ Client side จะหมายถึงส่วนของ browser หรือหน้าจอการทำงานของผู้ใช้ เช่น Google Chrome Firefox และ Internet explorer ส่วนในฝั่งเซิร์ฟเวอร์จะมีการรับคำร้องขอ(request) จากฝั่ง Client ทำการประมวลผลและส่งค่าผลลัพธ์คืนกลับมายังฝั่ง Client อีกครั้งเพื่อให้ผู้ใช้เห็นผลลัพธ์การตอบกลับนั้นได้ ซึ่งโดยปกติแล้วนั้นการพัฒนาจะประกอบด้วยโค้ด 2 ส่วน คือ
- Server-side code ซึ่งเป็นเทคโนโลยีของการทำงานในการติดต่อไปยังฝั่งเซิร์ฟเวอร์ และถูกนำมาใช้ในการพัฒนา Web application ซึ่งใน ASP.NET นั้นนับว่าได้รับความนิยมเป็นอย่างมาก โดยจะมีการใช้งานผ่านทาง .NET Framework ในรูปแบบของภาษา C# VB หรือภาษาอื่นๆที่มีใน .NET ในการประมวลผลเพื่อติดต่อกับฐานข้อมูล หรือแหล่งข้อมูลอื่นๆจากคำร้องขอในฝั่ง Client และทำการส่งผลลัพธ์ที่ได้กลับมายังฝั่ง Client อีกครั้ง หลังจากมีการส่งผลลัพธ์ตอบกลับมาเรียบร้อยแล้วนั้น จะมีการ render หน้าจอดังกล่าวขึ้นอีกครั้งเพื่อแสดงผลลัพธ์ที่ได้ ทำให้เพจหรือหน้าจอที่ใช้งานมีการโหลดหรือ refresh เกิดขึ้น ซึ่งอาจส่งผลเสียทำให้ผู้ใช้รู้สึกล่าช้าในการรอการตอบกลับการประมวลผลพร้อมทั้งการแสดงผลจากฝั่งเซิร์ฟเวอร์ โดยโค้ดในลักษณะนี้ผู้พัฒนาบางท่านอาจรู้จักกันในนามของ code behind นั่นเอง
- Client-side code อาจเรียกได้ว่าเป็น client-side script ที่ถูกฝังไว้ในฝั่ง client และมีการประมวลผลในส่วนของ Browser ของผู้ใช้ ซึ่งสคริปต์ที่นิยมใช้ในการพัฒนาโดยส่วนใหญ่จะเป็น JavaScript และโต้ตอบกลับมาโดยตรงด้วย element ที่มีใน HTML เช่น textbox ปุ่ม หรือตาราง เป็นต้น นอกจากนี้ยังมีการใช้งานของโค้ดภาษา HTML และ CSS(Cascading Style Sheets) ร่วมด้วย แต่การพัฒนาในส่วนนี้ต้องมีการคำนึงถึงภาษาและโค้ดที่รองรับในแต่ละ browser ของผู้ใช้ด้วย ซึ่งการพัฒนาด้วยโค้ดในส่วนนี้ จะทำให้การตอบโต้กับผู้ใช้งานเกิดขึ้นภายในเวลาอันสั้น เกิด overhead น้อย แต่ก็มีข้อเสียเกี่ยวกับการเลือกใช้ภาษาในการพัฒนาให้ครอบคลุมในความหลากหลายของ browser ที่ผู้ใช้ใช้งานในการเปิดเว็บไซต์ได้
Ajax (Asynchronous JavaScript and XML)
เทคโนโลยีและแนวคิดแบบ Ajax ได้เข้ามามีบทบาทในการเปลี่ยนแปลงแนวคิดและหลักการทำงานโดยทั่วไปที่มีอยู่เดิมของ web application เล็กน้อย คือจะมีการส่งคำร้องขอจากฝั่ง Client ไปยังฝั่งเซิร์ฟเวอร์โดยตรงเพื่อตอบโต้กับ object ที่มีในฝั่งเซิร์ฟเวอร์ เช่น ฐานข้อมูล หรือไฟล์ เป็นต้น โดยปราศจากการ postback โดยแนวคิดของ Ajax จะเกี่ยวข้องกับเทคโนโลยีที่มีอยู่เดิม เช่น ข้อมูลในฝั่งเซิร์ฟเวอร์ เว็บเซอร์วิส และการเขียนสคริปต์ในฝั่ง client โดย client-side script จะใช้ในการเรียกใช้เว็บเซอร์วิสเพื่อประมวลผลกับฐานข้อมูลตามคำร้องขอ ซึ่งคำร้องขอดังกล่าวอาจเป็นการบันทึกหรืออ่านค่าข้อมูลจากฐานข้อมูล และการเรียกใช้แบบ Ajax นี้จะเป็นลักษณะ Asynchronous คือ เมื่อผู้ใช้มีการส่งคำร้องขอไปยังเว็บเซอร์วิส ในหน้าจอการทำงานจะไม่ถูกล็อคไว้ และสามารถทำงานในส่วนอื่นต่อได้โดยไม่จำเป็นต้องรอกระบวนการทำงานให้เสร็จทีละส่วน สามารถทำคู่ขนานกันไปได้ และหากส่วนใดเสร็จสิ้นการประมวลผลแล้วนั้นตัวเว็บเซอร์วิสก็จะส่งผลลัพธ์กลับมาให้แสดงยังฝั่งผู้ใช้เอง
โดยเทคโนโลยีที่ถือว่ามีความสำคัญและจำเป็นสำหรับ client-side script นั่นก็คือ jQuery ที่เรารู้จักกันดี ซึ่งเป็นที่นิยม เนื่องจากประมวลผลได้เร็ว มีขนาดเล็ก และมีคุณสมบัติอีกหลายประการที่จะเข้ามาช่วยทำให้การพัฒนาโปรแกรมมีประสิทธิภาพมากยิ่ง
จากข้อความข้างต้น แสดงให้เห็นว่าการพัฒนาเว็บไซต์โดยหลีกเลี่ยงการ postback เมื่อมีการเรียกใช้งานไปยังฝั่งเซิร์ฟเวอร์ ถือเป็นอีกทางเลือกของนักพัฒนาที่จะหยิบมาใช้ เพื่อลด over head ให้กับตัว web server และสามารถตอบสนองต่อผู้ใช้ได้รวดเร็วขึ้น ลดจำนวนในการโหลดเพจ และรอการตอบสนองทุกครั้งที่มีการส่งคำร้องขอ ผู้เขียนจึงขอแนะนำวิธีการเรียกใช้หรือส่งคำร้องขอไปยังฝั่งเซิร์ฟเวอร์แบบ Ajax ด้วย jQuery ดังนี้- การเรียกใช้เมธอดในฝั่งเซิร์ฟเวอร์ตามแนวคิดของ Ajax ด้วย jQueryหลักการเขียนเพื่อเรียกใช้เมธอดในฝั่งเซิร์ฟเวอร์/เว็บเซอร์วิส
ที่มาของภาพ :http://www.aspsnippets.com/Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx
- ตัวอย่างที่ 1 : การเรียกใช้งานเมธอดแบบส่งค่ากลับเป็น string แบบไม่มีการส่งค่าพารามิเตอร์
ฝั่ง Client(aspx)
function CallServerMethodString() { $.ajax({ type: "POST", //ชนิดในการส่งค่า contentType: "application/json", ///ที่อยู่ของเมธอดที่ต้องการเรียก (ชื่อเพจ/ชื่อเมธอด) url: "TestPageMethod.aspx/getDataRetString", dataType: "json", ///ส่งค่าแบบ json beforeSend: function () { /// เป็นส่วนการแสดง loading progress bar ในขณะที่กำลังทำงานอยู่ $("#loadingmessage").show(); }, //////เป็นส่วนที่เกิดขึ้น เมื่อเกิดข้อผิดพลาดในการเรียกใช้เมธอด error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown); }, //////เป็นส่วนที่เกิดขึ้น เมื่อการเรียกใช้เมธอดเสร็จสิ้นสมบูรณ์ success: function (response) { ///ล้างค่าข้อมูลใน div และนำผลลัพธ์ที่ได้จากการเรียกใช้(response.d) มาแสดงใน div ที่กำหนด $("#dvResult").html(""); $("#dvResult").append(response.d); ///ซ่อน loading progress bar เมื่อเสร็จสิ้นการทำงาน $("#loadingmessage").hide(); } }); }
ฝั่ง Server (c#)
[System.Web.Services.WebMethod] public static string getDataRetString() { string Result = ""; string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; var results = from p in digits select p; foreach (var d in digits) { Result= Result+ "Result is :" + d.ToString() + "<br>"; } return Result; } }
คำอธิบาย : เป็นตัวอย่างการสร้างเมธอดในฝั่งเซิร์ฟเวอร์ โดยในการสร้างเมธอดต้องมีการกำหนด [System.Web.Services.WebMethod] ไว้ในส่วนบนของเมธอด และมีชนิดเป็น static โดยในส่วนนี้ตามความเป็นจริงจะเป็นส่วนที่อาจมีการดึงมาจากฐานข้อมูล เพื่อคืนค่ากลับไปให้ฝั่ง Client แสดงผล แต่ในที่นี้จะขอสร้างเป็นเพียงข้อมูลสมมุติของอาร์เรย์ที่เป็นข้อความขึ้นมาเท่านั้น
ผลลัพธ์
- ตัวอย่างที่ 2 : แบบส่งค่ากลับเป็น object โดยมีการส่งพารามิเตอร์มายังฝั่งเซิร์ฟเวอร์ด้วย
ฝั่ง Client (aspx)
<script type="text/javascript"> function CallServerMethodObject() { $.ajax({ type: "POST", contentType: "application/json", url: "TestPageMethod.aspx/getDataRetObj", ///ส่งค่าพารามิเตอร์จากการเลือกประเภทสถานศึกษาให้กับเมธอดฝั่งเซิร์ฟเวอร์ data: "{'CategoryID' : " + ddlMain.val() + "}", dataType: "json", ///ส่งค่าแบบ json /// เป็นส่วนการแสดง loading progress bar ในขณะที่กำลังทำงานอยู่ beforeSend: function () { $("#loadingmessage").show(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown); }, ///เป็นส่วนที่จะทำงานเมื่อมีการเรียกใช้เมธอดเสร็จสิ้นโดยไม่มีข้อผิดพลาดใดๆ success: function (response) { ///ประกาศตัวแปรของคอนโทรล dropdownlist ที่ชื่อว่า ddlResult และล้างค่าข้อมูล var ddlResult = $("[id*=ddlResult]"); ddlResult.empty().append('กรุณาเลือกชื่อสถานศึกษา'); ///วนรอบเพื่อดึงค่าจาก obj ที่ถูกส่งกลับมาเพื่อ populate ลงใน dropdownlist $.each(response.d, function (index, item) { ddlResult.append($("").val(item.SubCategory).html(item.title)); }); ////ซ่อน loading progress bar เมื่อการทำงานสิ้นสุด $("#loadingmessage").hide(); } }); } </script> <asp:DropDownList ID="ddlMain" runat="server" onchange="CallServerMethodObject()" > <asp:ListItem Selected="True" Value="0">กรุณาเลือกประเภทสถานศึกษา</asp:ListItem> <asp:ListItem Value="1">มหาวิทยาลัย</asp:ListItem> <asp:ListItem Value="2">โรงเรียน</asp:ListItem> </asp:DropDownList> <asp:DropDownList ID="ddlResult" runat="server" > <asp:ListItem Value="0">กรุณาเลือกชื่อสถานศึกษา</asp:ListItem> </asp:DropDownList>
คำอธิบาย : เป็นตัวอย่างการสร้าง Cascading dropdownlist อย่างง่าย โดยหากมีการเลือกประเภทสถานศึกษา จะมีการเรียกใช้ฟังก์ชั่น CallServerMethodObject() และส่งค่าที่เลือก(รหัสประเภทสถานศึกษา) ให้กับการเรียกใช้เมธอดในฝั่งเซิร์ฟเวอร์ในพารามิเตอร์ที่ชื่อว่า CategoryID เพื่อดึงค่าของชื่อสถานศึกษาตามประเภทที่เลือก
ฝั่ง server (c#)
[System.Web.Services.WebMethod] public static object getDataRetObj() { ///สมมุติให้ในส่วนนี้ เป็นการสร้างข้อมูลที่เป็น object และนำผลลัพธ์ที่ได้ส่งกลับไปยั่งฝั่ง Client เพื่อแสดงผล var obj = new { Category = 1, SubCategory=1, title = "มหาวิทยาลัยสงขลานครินทร์"}; var objList = (new[] { obj }).ToList(); objList.Add(new { Category = 1, SubCategory=2, title = "มหาวิทยาลัยราชภัฎสงขลา" }); objList.Add(new { Category = 2, SubCategory=3, title = "โรงเรียนมหาวชิราวุธ"}); objList.Add(new { Category = 2, SubCategory=4, title = "โรงเรียนหาดใหญ่วิทยาลัย" }); ////ดึงค่าชื่อสถานศึกษาตามรหัสประเภทสถานศึกษา CategoryID var results = from p in objList.Where(p=>p.Category==int.Parse(CategoryID)) select p; return results; }
คำอธิบาย : เป็นตัวอย่างการสร้างเมธอดในฝั่งเซิร์ฟเวอร์ โดยในการสร้างเมธอดต้องมีการกำหนด [System.Web.Services.WebMethod] ไว้ในส่วนบนของเมธอด และมีชนิดเป็น static โดยในส่วนนี้ตามความเป็นจริงจะเป็นส่วนที่อาจมีการดึงมาจากฐานข้อมูลตามเงื่อนไขของพารามิเตอร์ที่ส่งมา เพื่อคืนค่ากลับไปให้ฝั่ง Client แสดงผล แต่ในที่นี้จะขอสร้างเป็นเพียงข้อมูลสมมุติของ object ขึ้นมาเท่านั้น
ผลลัพธ์
- ตัวอย่างที่ 1 : การเรียกใช้งานเมธอดแบบส่งค่ากลับเป็น string แบบไม่มีการส่งค่าพารามิเตอร์
- การเรียกใช้เว็บเซอร์วิสตามแนวคิดของ Ajax ด้วย jQuery
- ตัวอย่างที่ 1 : เป็นการเรียกใช้เมธอดจากเซอร์วิสในการแสดงผล
ฝั่ง Client(aspx)
<script type="text/javascript"> function CallWebservice() { var ddlMain = $("[id*=ddlMain]"); $.ajax({ type: "POST", contentType: "application/json", url: "WebServiceTest.asmx/getDataRetOddEven", ///ส่งค่าพารามิเตอร์จากการเลือกประเภทชนิดข้อมูลตัวเลขให้กับเมธอดที่สร้างในเซอร์วิส data: "{'CategoryID' : " + ddlMain.val() + "}", dataType: "json", beforeSend: function () { $("#loadingmessage").show(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown); }, success: function (response) { $("#dvResult").html(""); $("#dvResult").append(response.d); $("#loadingmessage").hide(); } }); } </script> <asp:DropDownList ID="ddlMain" runat="server" onchange="CallWebservice()" > <asp:ListItem Selected="True" Value="-1">กรุณาเลือกประเภทตัวเลข</asp:ListItem> <asp:ListItem Value="0">เลขคู่</asp:ListItem> <asp:ListItem Value="1">เลขคี่</asp:ListItem> </asp:DropDownList>
คำอธิบาย : เป็นตัวอย่างการเรียกใช้เมธอดจากเว็บเซอร์วิส เพื่อทำการดึงค่าข้อมูลตัวเลขตามประเภทของตัวเลขที่เลือกจาก dropdownlist ซึ่งในตัวอย่างนี้จะเป็นการเรียกใช้เมธอดที่มีชื่อว่า getDataRetOddEven ในเว็บเซอร์วิส WebServiceTest.asmx โดยลักษณะการเรียกใช้จะคล้ายกับตัวอย่างของการเรียกใช้เมธอดจากฝั่งเซิร์ฟเวอร์ที่กล่าวไว้แล้วก่อนหน้านี้ มีเพียงส่วนของการกำหนด url ที่เมธอดนั้นอยู่เท่านั้นที่ต้องให้มาอ้างจากเมธอดในเว็บเซอร์วิสแทน
ฝั่งเว็บเซอร์วิส (WebServiceTest.asmx)
[WebMethod] public string getDataRetOddEven(string CategoryID) { string result = ""; int[] numbers = { 0, 1, 2, 3,4, 5, 6, 7,8, 9 }; var results = from p in numbers.Where(p => p % 2 == int.Parse(CategoryID)) select p; foreach (var d in results) { result = result + "Result is :" + d.ToString() + " "; } return result; }
คำอธิบาย : เป็นตัวอย่างการสร้างเมธอดในเว็บเซอร์วิสเพื่อรับค่าชนิดของตัวเลข(คู่/คี่) เพื่อนำมาใช้ในการดึงข้อมูลตามเงื่อนไข โดยในการสร้างเมธอดต้องมีการกำหนด [WebMethod] ไว้ในส่วนบนของเมธอด และมีเพิ่ม [System.Web.Script.Services.ScriptService] ในส่วนบนของไฟล์ เพื่อให้สามารถรันสคริปต์ผ่านเว็บเซอร์วิสได้ โดยในส่วนนี้ตามความเป็นจริงจะเป็นส่วนที่อาจมีการดึงมาจากฐานข้อมูล เพื่อคืนค่ากลับไปให้ฝั่ง Client แสดงผล แต่ในที่นี้จะขอสร้างเป็นเพียงข้อมูลสมมุติของอาร์เรย์ที่เป็นข้อความขึ้นมาเท่านั้น
หมายเหตุ :ผลลัพธ์
เพิ่มเติม :Namespace ที่ต้องอ้างอิงเพิ่มเติมหากมีการใช้งานเกี่ยวกับ LINQ คือ using System.Linq;มาถึงตรงนี้ ผู้เขียนหวังเป็นอย่างยิ่งว่า เนื้อหาและตัวอย่างที่มีในบทความนี้ จะช่วยเพิ่มความเข้าใจในเบื้องต้นเกี่ยวกับการเรียกใช้งานเมธอดในฝั่งเซิร์ฟเวอร์/เว็บเซอร์วิสแบบ Ajax ด้วย jQuery เพื่อช่วยในการเพิ่มประสิทธิภาพทำงานของระบบที่พัฒนา และน่าจะช่วยให้การประมวลผลไปยังฝั่งเซิร์ฟเวอร์รวดเร็วขึ้น เกิดความพึงพอใจในการใช้งานของผู้ใช้มากยิ่งขึ้น อีกทั้งยังอาจเป็นอีกหนึ่งทางเลือกในการพัฒนาต่อยอดและประยุกต์ใช้ให้เหมาะกับงานของผู้พัฒนาแต่ละท่านได้ หากมีส่วนใดผิดพลาด ผู้เขียนขออภัยไว้ ณ ที่นี้ด้วย ขอบคุณค่ะ
แหล่งข้อมูลอ้างอิง :
http://www.seguetech.com/blog/2013/05/01/client-side-server-side-code-difference
http://www.aspsnippets.com/Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx