การตั้งค่า iPhone ไม่ให้ App ติดตามเก็บข้อมูลส่วนตัว

สวัสดีค่ะ หลายท่านคงเคยเจอปัญหามีเบอร์แปลกๆ  โทรเข้ามานำเสนอสินค้า ขายประกัน หรือมี SMS โฆษณาเข้ามาทั้งที่เราไม่ได้เคยใช้บริการเหล่านี้ บางท่านอาจจะใช้ App ในการแสดงข้อมูลเพื่อที่จะปฏิเสธการรับสาย แต่เราก็สามารถจัดการตั้งแต่ต้นทางได้นะคะ ไม่ให้พวก App ที่อยู่ในมือถือของเราสามารถนำข้อมูลส่วนตัวของเราไปใช้ประโยชน์ได้  แต่ก่อนจะใช้งาน Feature นี้ ให้ตรวจสอบก่อนนะคะ ว่า ได้ Update iOS เป็นเวอร์ชัน 14.5 แล้วหรือยัง ถ้า  Update แล้วอย่ารอช้าค่ะ เราไปดูวิธีกันเลย เข้าไปในส่วนของ Settings 2. เลือก Privacy 3. Tracking 5. จากนั้นให้เลือก Ask Apps to Stop Tracking เพื่อบอกให้ Apps หยุดติดตาม 6. Apps ทั้งหมดก็จะถูกปิดทั้งหมดเพื่อไม่ให้ติดตามได้อีก เท่านี้ก็เรียบร้อยค่ะ ลองไปทำตามกันดูนะคะ อย่าลืมว่าต้อง Update iOS เป็นเวอร์ชัน 14.5 ก่อนนะจ๊ะ

Read More »

วิธีการรวมไฟล์ pdf หลายไฟล์และรูปภาพมาแสดงในครั้งเดียวด้วย iTextSharp (#C)

          ที่มาของบทความนี้ เนื่องด้วยงานที่ผู้เขียนได้รับมอบหมายให้พัฒนาอยู่นั้น มีส่วนหนึ่งที่เป็นการแนบไฟล์เอกสาร/หลักฐานทั้งในรูปแบบไฟล์ PDF และรูปภาพ เข้ามาจากผู้ใช้งาน ซึ่งเอกสารเหล่านี้จะต้องมีส่วนของการแสดงผลให้ทางฝั่งเจ้าหน้าที่ทำการตรวจสอบเอกสาร/หลักฐานดังกล่าวด้วย โดยเดิมทีจะมีการแสดงผลแยกเป็นรายการให้เจ้าหน้าที่เพื่อคลิกดูรายละเอียดทีละรายการ ดังภาพ           ซึ่งในการทำงานจริงแล้วนั้นพบว่า การตรวจสอบเอกสาร/หลักฐานต่างๆที่ผู้ใช้แนบมาสามารถทำได้ยากและต้องใช้เวลา เนื่องจากเจ้าหน้าที่จะต้องทำการคลิกดูรายละเอียด/ดาวน์โหลดไฟล์คราวละ 1 ไฟล์เพื่อตรวจสอบ ซึ่งไฟล์จะแยกกันอยู่ หากต้องการดาวน์โหลดก็ต้องดาวน์โหลดทีละไฟล์ ดังภาพ จึงเป็นที่มาของการค้นหาวิธีการแสดงผลไฟล์ทั้งหมดให้เจ้าหน้าที่สามารถตรวจสอบและดูรายละเอียดข้อมูลเอกสารไฟล์แนบได้ในคราวเดียว ซึ่งผู้เขียนก็ได้นำวิธีการดังกล่าวมาแบ่งปันให้กับผู้อ่านที่มีความสนใจและประสบปัญหาคล้ายกันอยู่  ซึ่งจะมีวิธีการดังนี้ค่ะ 1.ดึงข้อมูลไฟล์แนบเอกสารทั้งหมดของผู้ใช้ หมายเหตุ ในการทำงานข้างต้น ควรมีการลบไฟล์(Temporary file)ที่ถูกสร้างไว้ก่อนหน้านี้ที่ไม่ใช้งานออกไปด้วย เนื่องจากการรวมไฟล์ด้วยวิธีนี้จะมีการสร้างไฟล์รวมตัวใหม่ขึ้นมาและนำไปแสดงผลให้ผู้ใช้ ซึ่งหลังจากผู้ใช้งานไม่ใช้งานแล้วหากเราไม่ทำการลบทิ้งจะเกิดเป็นไฟล์ขยะบนเซิร์ฟเวอร์จำนวนมากได้           โดยจากโค้ดข้างต้นจะพบว่า ไฟล์ที่จะใช้ในการรวบรวมจะต้องเป็นไฟล์ PDF ซึ่งในการทำงานจริงของเรา การแนบไฟล์เอกสาร/หลักฐานสามารถแนบได้ทั้งไฟล์ที่เป็น PDF และไฟล์ที่เป็นรูปภาพด้วย ดังนั้น ก่อนที่จะทำการรวมไฟล์ จึงต้องทำการตรวจสอบว่ามีไฟล์ดังกล่าวอยู่จริงหรือไม่ รวมทั้งตรวจสอบชนิดของไฟล์ด้วย หากพบว่าไฟล์ดังกล่าวไม่ได้อยู่ในรูปแบบ PDF ไฟล์ ให้ทำการแปลงไฟล์รูปภาพเหล่านั้นให้เป็น PDF เสียก่อน เพื่อป้องกันความผิดพลาดที่จะเกิดขึ้นในขณะทำการรวมไฟล์นั่นเอง 2. เขียนเมธอดในการรวมไฟล์ดังกล่าวและสร้างเป็นไฟล์ PDF ตัวใหม่ 3.เขียนเมธอดในแปลงไฟล์รูปภาพให้เป็นไฟล์ PDF 4.แสดงผลไฟล์ PDF ที่รวมเรียบร้อยแล้ว ด้วย Literal หมายเหตุ ในการใช้งานโค้ดข้างต้น มีไลบรารีที่จำเป็นต้องใช้งาน ดังนี้ค่ะ using System.IO;using iTextSharp.text;using iTextSharp.text.pdf;using System.Data;using System.Text;using System.Drawing; ผลลัพธ์ ตัวอย่างไฟล์ที่ได้จากการรวมไฟล์เอกสาร PDF 3 ไฟล์ และไฟล์รูปภาพ 1 ไฟล์           ซึ่งวิธีการนี้เป็นเพียงหนึ่งในแนวทางแก้ปัญหาในการแสดงผลไฟล์ PDF หลายๆไฟล์ในครั้งเดียวเท่านั้น และอาจมีข้อจำกัดหากผู้ใช้มีการแนบไฟล์จำนวนมาก เนื่องจากจะส่งผลให้ขนาดของไฟล์ที่รวมได้มีขนาดใหญ่มากตามไปด้วย ในส่วนของการแนบไฟล์จึงควรมีการจำกัดขนาดและรูปแบบให้เหมาะสมในการแนบไฟล์แต่ละครั้ง เพื่อประหยัดเนื้อที่ในการจัดเก็บไฟล์บนเซิร์ฟเวอร์ด้วย และผู้เขียนหวังเป็นอย่างยิ่งว่าบทความนี้จะช่วยแก้ปัญหาให้กับนักพัฒนาที่กำลังประสบปัญหาเดียวกันอยู่ไม่มากก็น้อยนะคะ ขอบคุณค่ะ ^^ แหล่งอ้างอิง https://stackoverflow.com/questions/6029142/merging-multiple-pdfs-using-itextsharp-in-c-net https://alandjackson.wordpress.com/2013/09/27/convert-an-image-to-a-pdf-in-c-using-itextsharp/

Read More »

Data Visualization นำเสนอข้อมูลเป็นรูป/กราฟแบบไหนดี ? กับข้อมูลที่มีอยู่

การสือสารที่มีอรรถรสสำหรับการมอง/อ่าน ที่ข้อมูลครบถ้วนโดยมีมิติ มุมมองและการเปรียบเทียบ จบในหน้าเดียวหรือรูปเดียว คือนิยาม Data Visualization ของผมครับ เราก็มาดูกันครับ เอาข้อมูลแบบไหนมาชนกับ Data Visualization แบบไหนถึงจะตรงประเด่นการนำเสนอข้อมูลด้วยภาพ ต้องการเปรียบเทียบข้อมูล (Comparison) กลุ่มนี้ก็จะมี Bar Chart Line Chart Bubble Chart Grouped Bar Table Pivot Table Bar Chart และ Grouped Bar ใช้เปรียบเทียบข้อมูลตามเงื่อนไขที่สนใจ ใช้เปรียบเทียบมิติจำนวนข้อมูลที่สนใจกับช่วงที่สนใจ เช่น เปรียบเทียบเป้าหมายที่ตั้งไว้กับข้อมูลที่ทำได้จริงในแต่ละเดือน, จำนวนนักศึกษา ในแต่ละปีการศึกษา เป็นต้น Line Chart ใช้เปรียบเทียบเพื่อดูแนวโน้มของข้อมูล ใช้เปรียบเทียบมิติของข้อมูล ในเชิงต้องการดูเพื่อเปรียบเทียบการเปลี่ยนแปลง ดูแนวโน้ม (Trends) โดยอาจจะเทียบกับมิติของเวลา (Time Series) และยังนำไปใช้ร่วมกับ machine learning เพื่อพยากรณ์ข้อมูลในอนาคตได้ด้วย เช่น ข้อมูลการถอนรายวิชาในแต่ละเดือนเปรีบเทียบ 3 ปีที่ผ่านมา จำนวนนักเรียนที่สมัครเข้าเรียนใน มอ. แยกตามโครงการ 5 ปีที่ผ่านมา เป็นต้น ตัวอย่างเป็นเปอร์เซ็นต์นักศึกษาเพศชายกับเพศหญิง Bubble Chart ใช้แสดงข้อมูลที่มีความสัมพันธ์กันแบบ 3 มิติ ใช้เปรียบเทียบแบบ 3 มิติข้อมูล เช่น แกน X แสดง จำนวนอาจารย์แกน Y แสดง จำนวนเงินค่าลงทะเบียนขนาดและจำนวนแต่ละฟอง แทน คณะและจำนวนนักศึกษาถ้าเปรียบเทียบแบบนี้ก็จะเห็นความสัมพันธ์ของข้อมูลทั้ง 3 ข้อมูลและสามารถตั้งเป้าหมาย หาค่ามากที่สุด น้อยที่สุดที่สนใจได้ Table ใช้เปรียบเทียบข้อมูลแบบแนวตั้ง เป็นการเปรียบเทียบพื้นฐานที่สุดเลย เป็นการเปรียบเทียบชุดข้อมูลที่ไม่ซับซ้อน เช่น Pivot Table ใช้เปรียบเทียบข้อมูลแนวนอน เหมาะสำหรับการเปลี่ยนเทียบข้อมูลเพื่อหาความแตกต่างตามแนวนอน มักจะใช้กับเวลา เดือน ปี เป็นแนวนอนและรายการข้อมูลที่สนใจเป็นแนวตั้งที่สามารถ Filter ได้ เช่น จำนวนค่าลงทะเบียนในแต่ละปีแยกตามคณะ 5 ปีที่ผ่านมาเป็นแนวนอนและรายชื่อคณะเป็นแนวตั้งที่สามารถ Filter ได้ เป็นต้น ต้องการดูการกระจาย (Distribution) สามารถใช้เมื่อต้องการดูความถี่ของข้อมูลว่ามีลักษณะการกระจายตัวอย่างไร HistogramLine HistrogramScatter PlotBox Plot Histogram แสดงความสัมพันธ์ระหว่างข้อมูล ดูการการจายความถี่ของข้อมูล Scatter Plot แสดงการกระจายของการจับคู่ข้อมูล เหมาะสำหรับแสดงการจับคู่ข้อมูลเพื่อดูการกระจายผลเช่น การวัดผลก่อนเรียนและหลังเรียน การวัดผลการทดลองสองกลุ่มทดลอง การวัดน้ำหนักสองครั้งจากคนเดียวกัน 100 คนในวิธีควบคุมอาหาร เป็นต้น จะเห็นอะไรจาก Scatter Plot -แนวโน้มของข้อมูลระหว่างตัวแปร-ความผิดปกติจากภาพรวม -กลุ่มก้อนภาพรวมของข้อมูล Box Plot เพื่อดูการกระจายของข้อมูลและมีค่าต่างๆประกอบอยู่ในกราฟคือ ค่ากลาง ค่าการการะจาย ค่ามากสุด น้อยที่สุดและข้อมูลห่างกลุ่มมาก (Outlier) Box Plot Chart จะมีข้อมูลแบ่งออกเป็น 3 ช่วงคือ25% (Q1) คือข้อมูล 25% แรกจากค่าต่ำขึ้นมา50% (Q2) คือข้อมูลตัวที่มากกว่า 25% จนถึงตัวที่ 75% โดยแสดงออกมาในรูป สี่เหลี่ยมผืนผ้า75% (Q3) คือข้อมูล 50% ของข้อมูลอยู่ เขียนแทนด้วยเส้นตรงอยู่ภายในรูปสี่เหลี่ยมผืนผ้า ค่านี้คือค่าค่ากลางของข้อมูลทั้งหมด (Median) และตรงค่า เฉลี่ย (Mean) จะแทนด้วย เครื่องหมายบวกสำหรับตัวอย่างที่น่าจะยกได้สำหรับการศึกษาอาจจะเป็นผลการเรียนของนุักศึกษา ดูการแบ่งสัดส่วน (Composition) ต้องการเห็นภาพรวมพร้อมกับส่วนต่างๆที่สนใจ TreemapDonut ChartStacked Area ChartStacked BarPie ChartWaterfall Chart Treemap เป็น Chart ตารางสี่เหลี่ยม โดยใช้สีแยกกลุ่มของข้อมูล และขนาดของสีสี่เหลี่ยมบอกถึงปริมาณของข้อมูลแต่ละกลุ่ม เป็นกราฟที่ดูง่ายเข้าใจในทันทีที่เห็น Pie Chart Pie Chart เป็น Chart ที่แสดงสัดส่วนของข้อมูลดังเดิมที่เข้าใจง่าย เห็นการแยกสัดส่วนตามสีของแต่ละส่วน (เหมือนพิสซ่ามากกว่าพาย) ดูความสัมพันธ์ (Relationship) ของข้อมูล HeatmapWorldmapColumn/Line

Read More »

ใช้มือถือแทน Mouse และ Keyboard ก็ได้นะ

ชีวิตคนทำงาน Office ที่ต้องใช้ Computer เป็นประจำทุกวัน ทำงานกันอย่างหนักหน่วง ถ้าเกิด Mouse หรือ Keyboard ที่ใช้งานอยู่ มีปัญหาหรือเสียหายขึ้นมา จะทำยังไง? ส่งซ่อมหรือออกไปหาซื้อใหม่ ก็ทำให้เสียเวลาวันนี้เรามีวิธีมาช่วยแก้ไขปัญหาเฉพาะหน้า เปลี่ยนมือถือคุณเป็น Mouse และ Keyboard แบบ WiFi ใช้ร่วมกับคอมพิวเตอร์ของคุณได้ทั้ง Windows และ Mac รวมถึงคุมมือถือ iOS และ Android ได้ด้วย สามารถพิมพ์ผ่านมือถือได้ เพียงลง Application WiFi Mouse ลงบนเครื่อง iOS หรือ Android และคอมพิวเตอร์ เริ่มต้นด้วย1. Download Application ที่ชื่อว่า WiFi Mouse มาไว้ที่มือถือของเรา ซึ่งสามารถ Download ได้ทั้งระบบปฏิบัติการ iOS และ Android 2. Download โปรแกรมที่ http://wifimouse.necta.us/ มาไว้ที่เครื่องคอมพิวเตอร์ของเรา โดยเลือก Download ตาม OS ที่เราใช้งาน  3. หลังจากติดตั้งให้เรียบร้อย จะได้โปรแกรม Mouse Server บนคอมพิวเตอร์ และ Application WiFi Mouse บนมือถือ ดังรูป 4. เริ่มต้นการใช้งาน มือถือและ เครื่องคอมพิวเตอร์ ต้องเชื่อมต่อ ให้อยู่ใน WiFi วงเดียวกัน จากนั้นให้เปิดโปรแกรมและ Application ที่ติดตั้งนั้นขึ้นมา จะปรากฏชื่อคอมพิวเตอร์ของเราบนมือถือ เพื่อให้เลือกใช้งาน ดังรูป   5. เมื่อเลือกเข้าใช้งานที่ชื่อคอมพิวเตอร์ของเราแล้ว มือถือของเราก็จะกลายเป็น Mouse และ Keyboard ได้ทันที…..ว้าวววว 6. สำหรับ Function ที่สามารถใช้งานได้ฟรี มีดังนี้– Keyboard – Presentation – File Browser – Browser – Screen Picture เมื่อคลิกจะสามารถ Capture หน้าจอที่เราต้องการไปวางไว้บนหน้า Desk top – Applications – Shutdown ชีวิต คนทำงานง่ายขึ้นเยอะ ไว้มา update เคล็ดลับดี ๆ ที่คุณอาจจะยังไม่รู้กันอีกนะคะขอบคุณ : ความรู้ดีๆ จาก Youtube

Read More »

ซ่อน/แสดง คอลัมน์ใน ASP.NET GridView จาก Code Behind

จากบทความ ซ่อน/แสดง คอลัมน์ใน ASP.NET GridView ด้วย jQuery ท่านผู้อ่านที่ได้เข้าไปอ่านแล้วอาจจะมีคำถามว่าถ้าไม่อยากใช้ jQuery ล่ะ เนื่องด้วยสาเหตุอะไรก็แล้วแต่ วันนี้ผมก็จะมานำเสนอการซ่อน/แสดงคอลัมน์ใน ASP.NET GridView อีกวิธี ซึ่งจะเป็นการควบคุมจาก code behind ที่เป็นภาษา C# หรือ VB.NET ในที่นี่ผู้เขียนจะใช้ภาษา C# ซึ่งจะมีขั้นตอนต่างๆ ดังต่อไปนี้ 1. ตัวอย่างโค้ด HTML จะมีการแก้ไขเพิ่มขึ้นอีกเล็กน้อยจากบทความเดิม โดยสิ่งที่เพิ่มขึ้นมาจะอยู่ที่ CheckBox คือ AutoPostBack=”true” เพื่อให้มีการ PostBack ทุกครั้งที่มีการคลิก Checkbox OnCheckedChanged=”chkCallNo_CheckedChanged” คือ event ที่อยู่ใน code behind ที่จะถูกเรียกใช้เมื่อมีการคลิก 2. โค้ดในส่วนของการจำลองข้อมูล สามารถใช้โค้ดเดิมจากบทความเก่าได้เลย 3. เพิ่มโค้ดใน chkCallNo_CheckedChanged เพื่อควบคุมการซ่อน/แสดงคอลัมน์ที่ต้องการ โดย gvBib.Columns[3].Visible จะเป็นการกำหนดให้คอลัมน์ที่ 3 ของ Gridview แสดงผลหรือไม่ ซึ่งก็คือคอลัมน์ CallNo นั่นเอง (จะเริ่มนับตั้งแต่ 0) 4. ทดสอบการใช้งาน 5. จะเห็นว่าระบบสามารถทำงานได้ตามความต้องการ คอลัมน์จะซ่อน/แสดงได้ตามเงื่อนไขที่เราเลือกจาก checkbox แต่จะสังเกตเห็นว่า ทุกครั้งที่มีการเลือก checkbox ระบบจะ refresh หน้าจอใหม่ทุกครั้ง ซึ่งถ้าในหน้าจอที่เรากำลังทำงานมีข้อมูลอื่นๆ อีกหลายอย่าง ก็จะถูกโหลดซ้ำโดยไม่จำเป็น เพื่อแก้ไขปัญหานี้ ASP.NET จะมีเครื่องมือที่เรียกว่า UpdatePanel ซึ่งจะทำงานในแบบ Partial Load ได้ตามตามเงื่อนไขที่เรากำหนด โดยเราจะต้องปรับแก้โค้ด HTML เพิ่มเติมดังนี้ สิ่งที่เพิ่มเติมเข้ามาคือ ScriptManager สำหรับใช้ควบคุมการทำงาน UpdatePanel UpdatePanel ใช้ครอบ component หรือพื้นที่ที่เราต้องให้สามารถทำ Partial Load ได้ ในที่นี่คือเราครอบ Gridview นั่นเอง Triggers จะเป็นการกำหนดเพื่อให้เกิด Partial Load ตาม control และ event ที่ได้ระบุเอาไว้ ในที่นี้คือ จะโหลดเมื่อ chkCallNo เกิด event CheckdChanged ซึ่งก็คือเหตุการณ์คลิกนั่นเอง ทดสอบ run ก็จะได้ผลลัพธ์ดังรูปด้านล่าง จะเห็นว่าหลังจากมีการปรับแก้โค้ดไปแล้ว ทุกครั้งที่มีการคลิก CheckBox และมีการซ่อน/แสดงคอลัมน์ จะไม่มีการ refresh หน้าจออีกแล้ว เพราะ UpdatePanel ที่เราได้เพิ่มเข้าไปจะควบคุมให้มีการโหลดข้อมูลใหม่เฉพาะ component ที่อยู่ภายใน UpdatePanel เท่านั้น จากบทความนี้ก็จะเป็นวิธีการซ่อน/แสดงคอลัมน์ใน Gridview อีกทางเลือกหนึ่ง ที่ผู้อ่านสามารถนำไปประยุกต์ใช้กับงานของตัวเองได้ ในกรณีที่เราไม่อยากเพิ่ม jQuery เข้ามาในโครงการที่กำลังทำ หรือเห็นว่าไม่ถนัดในการใช้งาน jQuery ก็ตามแต่ ซึ่งผู้อ่านสามารถเลือกแนวทางได้เองตามอัธยาศัย สวัสดีครับ แหล่งข้อมูลอ้างอิง https://www.aspsnippets.com/Articles/Show-Hide-ASPNet-GridView-Columns-on-CheckBox-Checked-Unchecked-using-jQuery.aspx http://theheing.blogspot.com/2012/04/ajax-updatepanel-control.html

Read More »