วิธีเปิด Zip file มี Password ที่ฝากไว้บน Google Drive บน iPhone/iPad

โจทย์คือ ต้อง Export ข้อมูล ออกมาเป็น Excel ให้ผู้รับ เป็นรายคน (เป็นจำนวนมาก) แต่ละคนได้ 1 ไฟล์ แต่ละไฟล์ ต้องเข้ารหัสผ่าน ซึ่ง ไม่เหมือนกันเลย (ผู้รับกำหนดมา) ฝากไฟล์ไว้บน Google Drive แล้วส่ง Link แบบ Anyone who has link can view เพราะ ผู้รับบางคนก็ไม่มี Google Account / บางคนไม่รู้ว่าบน iPhone/iPad ใช้ Google Account อะไร / บางคนก็ … บลา ๆ ๆ ๆ สรุป ใช้วิธี Google Account Permission ไม่ได้ ทุกอย่าง ทำเป็น routine ทุกเช้า อัตโนมัติ MS Excel สามารถตั้ง Password ได้ ทำให้ก่อนเปิดต้องใส่รหัสผ่าน แต่ ต้องทำ Manual ถ้าต้องทำงี้ทุกไฟล์ ทุกวัน ไม่รอดแน่ สุดท้าย มาจบที่ Encrypt ด้วย Zip Password แล้วกัน (เดี๋ยวิธีสร้างด้วย python ทั้งหมด ค่อยมาเล่าให้ฟัง) ปัญหาคือ สร้างได้ เอาไปฝากไว้ที่ Google Drive ได้ ผู้ใช้เข้าถึงได้แล้ว แต่ …. iPhone มันติดหน้านี้ วิธีแก้ไขคือ คลิกที่ รูป Share > Open in Safari 2. คลิก 3 จุด ด้านขวามือบน แล้ว เลือก Open in 3. เลือก Save to file 4. เลือกเป็น On my iPad / On my iPhone 5. สลับไปเปิด App Files เลือก On my iPad / On my iPhone 6. ก็จะมีช่องให้ใส่ Password ของแต่ละคน จบนะ

Read More »

JavaScript : ไม่ควรใช้ For Loop ใน Arrays

เชื่อว่า Programmer/Developer JavaScript ล้วนเคยผ่านการใช้งาน For Loops ในการ Coding กันมาแล้ว จำเป็นที่คุณต้องเลือกใช้มันให้เหมาะกับแต่ละสถานการณ์ แนะนำว่า ไม่ควรใช้ For Loop ใน Arrays แต่ขอแนะนำให้ใช้ .forEach() Method แทน .forEach() Method คืออะไร .forEach()  เป็น Built-in Method ใน Array Class ซึ่งได้รับการเปิดตัวใน ECMAScript 2015 (หรือที่เรียกกันว่า ES6) โดย Method จะทำการ Callback เป็น Arguments และเพื่อไม่ให้เกิดปัญหาขึ้น Callback จะเป็น Function ที่ถูก Execute สำหรับทุก item ใน Array ตัวอย่าง เพื่อแสดงถึงการใช้งานพื้นฐานของ .forEach() Method เรามาเริ่มด้วยการ Define Array ของ Integer แล้ว Print ค่าที่เป็น ยกกำลัง2 ของพวกมันลงใน Console การเพิ่ม Index เข้าไป เราได้ทำการเพิ่ม Optional Parameter ตัวที่ 2 เข้าไปใน Function Definition ของเรา การจัดเก็บค่าด้วย .forEach() แล้วถ้าเราไม่ต้องการที่จะ Print ทุกอย่าง แต่อยากเก็บ Result ไว้ในตัวแปรใหม่ล่ะ? จะเห็นว่า .forEach() Method ไม่มีการ Return ใด ๆ กลับมาให้ ซึ่งการใช้ .map() Method ดูจะเป็นคำตอบที่ดีที่สุดในสถานการณ์นี้ แต่อย่างไรก็ตาม หากต้องการใช้ .forEach() เราสามารถเขียน Code ใหม่ได้ดังนี้ การเขียน Callback Function สั้นกระชับขึ้น หากต้องการทำให้ Code สั้นกระชับมากขึ้น สามารถเขียนได้ดังนี้ หรือแบบนี้ก็ได้เช่นเดียวกัน อ้างอิง : https://medium.com/better-programming/stop-using-for-loops-to-iterate-over-arrays-5c46940e79d1

Read More »

ปรับแต่ง SQL ให้เร็วขึ้น

เมื่อคุณ Run SQL Queries แล้วมันทำงานช้าขึ้นมา เราจะต้องกลับเข้าไปดู Queries ที่เขียนว่าจะสามารถแก้ไขจุดที่เป็นต้นเหตุได้อย่างไร บทความนี้เราจะมาแนะนำดูวิธีปรับแต่ง Queries ที่ทำงานช้าให้เร็วยิ่งขึ้นกัน ไม่จำเป็นต้องใช้ข้อมูลทุกอย่าง พิจารณาว่าจำเป็นต้องใช้ SELECT * หรือไม่? ควรจะดึงเฉพาะ Column ที่ต้องการเพื่อให้ได้ผลที่รวดเร็วขึ้น แทนที่จะใช้ SELECT * เพื่อดึงข้อมูลทั้งหมดออกมา หากมี Table ที่มีขนาดใหญ่หรือมีข้อมูลปริมาณมากใน Table ซึ่งมีแนวโน้มที่จะทำให้ Query Engine ต้องทำงานหนักในการดึงข้อมูลทุกอย่างไปสู่ Client Side ก็อย่าลืมที่จะใช้ LIMIT เพื่อจำกัดจำนวนของผลลัพธ์ เว้นเสียแต่ว่าต้องการดูข้อมูลในทุก ๆ Row ระวังการใช้ NOT IN พยายามหลีกเลี่ยงการใช้ ‘IN’ หรือ ‘NOT IN’ เพราะการทำเช่นนี้ หมายถึง กำลัง Scan ทั้ง Table อยู่ เพราะ Query Engine จะไล่ดูไปที่ทุก Row เพื่อตรวจสอบว่า ตรงตามเงื่อนไขหรือไม่ ให้เปลี่ยนมาใช้ ‘EXISTS’ หรือ ‘NOT EXISTS’ ดู เพราะมันจะส่งผลกระทบต่อ Query Plan น้อยกว่าการใช้ ‘NOT IN’ ใช้ Wildcards เท่าที่จำเป็น การใช้ Wildcards ที่จุดเริ่มต้นและจุดสิ้นสุดของ LIKE จะทำให้การ Query ช้าลง และอาจจะทำให้ได้ผลลัพธ์ที่มากเกินกว่าที่คุณต้องการ ให้ใช้ Wildcards เฉพาะเมื่อต้องการใช้งานจริง ๆ เท่านั้น โดยทั่วไปจะใช้กันเพียงแค่จุดเดียวเท่านั้น ดังนั้น จึงควรคำนึงถึงสิ่งที่ต้องการจะให้ Query Engine ทำ ระวัง Nested Queries การ Run หลาย ๆ Queries ซ้อนกันไปเรื่อย ๆ (Nested Queries) เหมือนอย่าง Function ถือเป็นสิ่งที่ไม่แนะนำให้ทำ และมันจะเร็วกว่าหากเขียนลงใน Table ลองพิจารณาการสร้าง Staging Tables ซึ่งนั่นหมายถึง เรากำลัง Join Subset ของข้อมูลที่เล็กลง ทำให้การ Query เร็วขึ้น ระวังการใช้ Views ซ้อน ๆ กัน Views เป็น Queries ที่จะ Run เมื่อเราเรียกใช้งาน หรือดูข้อมูล ซึ่งหากกำลังเรียกหลาย ๆ View หรือในกรณีที่แย่ที่สุด คือ การเรียก Views ซ้อน Views ซ้อน Views ไปเรื่อย ๆ นั่นคือ เรากำลังบอกให้ Query Engine ทำการ Run หลาย ๆ Queries เพื่อ Return Row และ Column ที่ต้องการ ลองเปลี่ยนเป็นเขียนมันลงไปใน Table หากต้องการดูข้อมูลในแต่ละ วัน/สัปดาห์/เดือน แทนที่จะใช้ Views เพื่อ Filter ข้อมูล แต่ถ้าหากยังมีความจำเป็นใช้ Nested Views อยู่ อยากให้ลองพิจารณาดูว่า ยังมีวิธีอื่นอีกหรือไม่ ที่สามารถทำได้ตรงกว่านี้ในการเข้าถึง Row และ Column ที่ต้องการด้วยการเขียน Queries แทนการ Run หลาย Queries เพื่อไปยัง Column ที่ต้องการจาก Nested Views ตัวสุดท้าย Indexes Indexes จะช่วยเพิ่มความเร็วให้ Queries ของเรา โดยการจัดลำดับข้อมูลเพื่อให้ Database Engine ทราบว่าจะหาข้อมูลที่ต้องการได้จากที่ไหน หรือมี

Read More »

Database Design Tools (2)

 DbVisualizer DbVisualizer เป็น Tool ที่ออกแบบมาสำหรับการจัดการ Database มัน Integrate เข้ากับหลาย Databases และสามารถทำงานกับ Operating System หลัก ๆ ได้ทั้งหมด DbVisualizer มีการ Integrate Interface ที่ใช้งานง่าย มันสามารถถูกใช้เพื่อเรียกดู Schema ที่ซับซ้อนและ Data ที่แก้ไข Interface ช่วยให้ User สามารถทำสิ่งต่าง ๆ เช่น Drag & Drop, Pin Tabs, Detach Tabs ใน Windows ที่แยกออกไป รวมทั้ง Inline Edit Server Management DbVisualizer ช่วยให้ User สามารถจัดการกับ Instances, Security และ Session Storage ของ Database Server ,User ยังสามารถ Schedule และ Execute การดำเนินการต่าง ๆ กับ Oracle, MySQL, PostgreSQL และ SQL Server ได้ Comparing Tool นี้ช่วยให้ User สามารถเปรียบเทียบ Objects อย่าง Table Data, Scripts หรือ DDL ของ 2 Tables หรือ Procedures ได้ โดย Interface ที่ทำการเปรียบเทียบนั้น Clean และสามารถเข้าใจได้ง่าย SQL Tools DbVisualizer มี Tools อื่น ๆ ที่มีประโยชน์อีก เช่น: SQL Commander: Query Tool ที่รองรับ Editors และ Result Sets ต่าง ๆ Query Builder: ช่วยให้ User สามารถเห็นการ Create และ Execute Queries ได้อย่างชัดเจน Explain Plan: Tool ที่ใช้สำหรับวิเคราะห์ว่าจะใช้ Query อย่างไรใน Database แต่ Feature นี้สามารถใช้งานได้กับบาง Database เท่านั้น Tool นี้ Integrate SQL History Tool ซึ่งช่วยให้ User สามารถดู Query ก่อนหน้านี้ได้ Supported Databases DbVisualizer มาพร้อมกับการ Integrate กับหลาย Databases หลัก ๆ ได้ และสามารถ Connect กับ Database โดยใช้ JDBC Drivers DbVisualizer เป็น Tool ที่ยอดเยี่ยมสำหรับการจัดการ Database มันมี Interface ที่เป็นมิตรกับ User และสามารถทำงานได้กับ Operating Systems ยอดนิยมต่าง ๆ แต่ ผู้ที่ใช้ Free Version ของ Tool นี้ ไม่สามารถใช้งานใน Feature ที่สำคัญ ๆ ได้ ในขณะที่ Paid Version ก็มีราคาที่ค่อนข้างสูง Vertabelo Vertabelo เป็น Database Design

Read More »

Database Design Tools

Database Design ที่ดีจะช่วยลดงานในส่วน Maintenance ลงได้อย่างมาก และลดโอกาสเกิดข้อผิดพลาดใน Project  เนื่องจากแต่ละ Project  มี Requirements ที่แตกต่างกัน ทำให้การค้นหา Tools ที่เหมาะสมอาจเป็นเรื่องยาก ดังนั้นบทความนี้จะมาแนะนำ Database Design Tools ที่คาดว่าจะมีประโยชน์กับคุณ Toad Data Modeler Toad Data Modeler เป็น Database Modeling Tool ที่ใช้ Automation, Intuitive Workflows และ Built-in Expertise อีกทั้ง Toad ยังเป็น Database Solution ยอดนิยมที่ Community ของมันมีการเติบโตอย่างต่อเนื่อง Toad มี User Interface ที่ช่วยให้ User เข้าใจ Databases และ Table Relationships ได้ดียิ่งขึ้น มันสามารถสร้าง Data Models ทั้งแบบ Logical และ Physical และยังสามารถ Map Attributes ทั้งหมดของ Database ใน Physical Model ให้โดยอัตโนมัติ Models และ Synchronization Toad ช่วยให้ User สามารถ Convert Logical Model เป็น Physical Model ที่เลือกไว้ (เช่น Oracle, SQL Server เป็นต้น) และสามารถ Convert Physical Model ที่เลือกไว้ เป็นรูปแบบอื่น อย่างเช่น Convert Oracle Model ไปเป็น SQL Server Tool นี้จะมี Feature ของการ Synchronization อีกทั้ง User สามารถเปรียบเทียบ Models กับ Database และสร้าง Migration Scripts ได้ นอกจากนี้ยังช่วยให้ User สามารถ Update Model จาก Database ได้โดยตรง Toad สามารถทำ Processes อย่าง การเปรียบเทียบ Data และ Schema ได้โดยอัตโนมัติ SQL Code Generation Toad สามารถสร้าง Database DDL Scripts ที่มีความซับซ้อน นอกจากนี้ยังสามารถเปิด SQL Scripts ที่สร้างขึ้นใน Application ที่เกี่ยวข้องได้ Reporting มันสามารถสร้าง Report ในรูปแบบของ HTML, RTF หรือ PDF ได้ Supported Databases Tool สามารถ Connect กับ Databases ที่หลากหลาย เช่น Oracle, SAP, MySQL, SQLServer, PostgreSQL และอื่น ๆ อีกมากมาย จะเห็นว่า Toad เป็น Platform ที่มีประโยชน์อย่างยิ่งสำหรับ Database Modeling ที่มี Features ที่ยอดเยี่ยมอยู่มากมาย แต่มี User Interface ที่ใช้งานได้ค่อนข้างยาก และ License มีราคาค่อนข้างสูง DbSchema DbSchema เป็น Visual Tool สำหรับการออกแบบและการจัดการ Database

Read More »