Multidimensional Password Scheme

Multidimensional Password Scheme Development Flow

สวัสดีครับเพื่อนๆพี่ๆน้องๆ ที่เข้ามาอ่าน Blog ผมะครับ ผมเป็นนิสิตสาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยศรีนครินทรวิโรฒครับ ได้จัดทำโครงงานจบการศึกษาที่มีชื่อว่า การยืนยันตัวตนด้วยรหัสผ่านหลายมิติ(Multidimensional Password Scheme) โดยจะเป็นการยืนยันตัวตน มองง่ายๆว่าเป็นการล๊อกอินในสภาพแวดล้อมสามมิติ โดยระบบพัฒนาด้วยภาษา PHP, HTML5, jQuery และ WebGL โดยระบบจะมีขอบเขตสี่ส่วน ได้แก่ โดยมีขั้นตอนการทำงานมี ดังนี้ครับ วิดีโอด้านล่าง คือ วิดีโอการนำเสนอวิดีโอ และตัวอย่างการใช้งานคร่าวๆครับ

WEKA Scoring

วันนี้ผมได้ทำวิดีโอสรุปการใช้งาน WEKA Scoring กับ Pentaho Data Intregration ครับ โดยมีแหล่งข้อมูล และตัวอย่างการทำ ดังนี้ แหล่ง Download Plug-in: Pentaho Data Integration Plug-in แหล่งข้อมูล: WEKA Scoring , ARFF outtput ไฟล์บทความวิจัยที่ใช้:[wpdm_file id=5] หมายเหตุ: ใช้ WEKA ให้ถูกเวอร์ชั่นด้วย เพราะไฟล์ Model มันจะขึ้นกับ Version ของ WEKA ถ้าผิด version ไฟล์ Model จะเปิดขึ้นมาไม่ได้ หมายเหตุ ปัญหา: มี step ของ WEKA Scoring ลากมาวางได้ แต่กด Edit แล้วไม่มีหน้าจอขึ้นมา วิธีแก้: ปิดโปรแกรม ตรวจดู ถ้าใครใช้ plug-in WekaScoring_PDI4.x_Weka3.6or3.7.0 ให้เอาไฟล์ WEKA.jar มาวางไว้ในโพลเดอร์ WekaScoringDeploy ด้วย ดังรูป

[IR] สรุปจาก Quiz ที่1

ข้อที่หนึ่ง ข้อใดต่อไปนี้ไม่จัดเป็นระบบ IR A: ค้นหาคำว่า “computer” จาก E-mail B: ค้นหาคำว่า “computer” จาก Google C: ค้นหาคำว่า “computer” จาก windows explorer ตอบ ข้อ C เพราะงานในด้าน IR นั้นจะยุ่งกับข้อมูลในส่วนของ unstructure data(ข้อมูลทีไม่ได้จัดเก็บเป็นระบบ เช่น ไฟล์ word, e-mail) เอามาทำเป็น index และทำส่วนรองรับการค้นหาจากผู้ใช้ แต่ในกรณีของข้อ C: ค้นหาคำว่า “computer” จาก windows explorer ไม่นับว่าเป็นระบบ IR เพราะใน windows explorer มีการจัดเก็บข้อมูลอย่างเป็นระบบ(Structure data)เป็น folder และ sub-folder เป็นต้น ข้อที่สอง การจัดเก็บ Term ลงในส่วนของ Inverted Index เรียกว่าอะไร A: posting B: dictionary C: token ตอบ ข้อ B เพราะ dictionary เป็นที่จัดเก็บของ Term แต่ละแบบ โดยในแต่ละ Term จะที posting list ในการบ่งบอกว่า Term นี้ ค้นพบที่ document อะไร ข้อที่สาม การทำ Stem จะไม่ลดค่า precision จริง หรือไม่ ตอบ เท็จ เพราะคำที่ผ่านการ Stem จะถูกทำให้เป็นรากศัพท์ ซึ่งจะนำ Term หลายๆเทอมมารวมกันเก็บลงใน posting…

[IR] คำถามเกียวกับการทำ Cluster Pruning

คำถาม: การทำ Cluster Pruning ใน Lecture 6 หน้า 33-37 โดยการกำหนดค่า b1 และ b2 นั้น เมื่อ b1 และ b2 มากขึ้นจะทำให้เกิดอะไรขึ้นต่อการคำนวณ คำตอบ: มาดูคำแต่ละคำกันก่อนว่า คือ อะไร Cluster คือ การแบ่งกลุ่ม โดยที่เรายังไม่รู้ว่าจะได้กี่กลุ่ม Pruning คือ การจัดทอน ลดจำนวน (ลดโดยการจัดเป็นกลุ่ม ทอนข้อมูลจำนวนมหาศาล ให้ลดลง) Cluster Pruning คือ การเตรียมข้อมูล ซึ่งก็คือ document ต่างๆ ในระบบ(ทำตั้งแต่ช่วงสร้าง Dictionary เลย) เพื่อที่จะแบ่งกลุ่ม document ที่คล้ายๆกัน ให้อยู่กลุ่มเดียวกัน เพื่ิอที่จะช่วงลดเวลา ในการค้นหา โดยจะกำหนดให้มี Leader: เป็น document ถูกกำหนดว่า Query จะต้องมาหา Score ที่นี่ก่อนที่จะตัดสินใจเลือกกลุ่มของ Leader นั้นๆ Follower: เป็น document ที่ถูกจัดกลุ่มให้ติดตาม Leader เพราะมีความคล้ายกัน หมายเหตุ ความสัมพันธ์ของ Leader กับ Follower จะมีความสัมพันธ์แบบ 1 ต่อ 1 (b1=1) การทำงาน เมื่อมี Query Query จะไปหา Leader ที่มีความใกล้เคียงมากที่สุด จำนวน 1 ตัว (b2=1) เมื่อได้ Leader ที่ใกล้เคียงแล้ว ระบบก็จะหา document จาก Follower ทีติดตาม Leader นั้นๆ มาจำนวน K…

[IR] ข้อสงสัยของ Frequency แบบต่างๆ

จากที่เรียนมาจะมี 3 คำ ได้แก่ term frequency คือ จำนวนเทอมนั้นๆ ในเอกสาร document frequency คือ จำนวนเอกสารที่มี term ที่สนใจปรากฏอยู่ (ไม่ว่าในเอกสารนั้นจะมีคำจำนวนมากมาย ก็จะนับเป็นหนึ่งเท่านั้น) collection frequency คือ จำนวนครั้งที่ term นั้นปรากฏทั้งหมดรวมในทุกๆเอกสาร หรือในระบบ(Collection) ตัวอย่าง สมมุติมี document แค่ 2 อันในระบบ(collection) doc1: I like a dog doc2: You like a cat and a bird term frequency (doc1) I = 1 a = 1 like = 1 dog = 1 term frequency (doc2) you = 1 a = 2 like = 1 cat = 1 and = 1 document frequency I = 1 a = 2 like = 2 dog = 1 cat = 1 you = 1 collection frequency I =…

[Internship@True]วันที่ 28-29

ในสองวันนี้ ก่อนจบการฝึกงานที่ยาวนานกว่าสองเดือน(ไม่ได้ทำกับทีม แต่ไปทำกับ Outsource) ผมได้รวมงานของผมที่ทำกับงานของพี่ โดยไฟล์ในส่วนที่พี่ทำใหม่นั้นจะมีการเปลี่ยนแปลงเท่าที่สังเกตมา 2 อย่าง ได้แก่่ การสร้างส่วนของ Class ต่างๆ จากเดิมที่ใช้ aBator มาเป็นการใช้ MyBatis(iBatis แต่เปลี่ยนชื่อใหม่) และใช้ Tools MyBatis generator ในการสร้างClass, DAO และ sqlMap และมีการใช้งานที่ง่ายมากขึ้น โดยเฉพาะใน่สวนของ where clause ที่เราสามารถที่จะเรียก method มาเพื่อให้ตัว Framework มัน Mapping ให้ การวางพื้นฐานการออกตัว Report มาให้แล้ว อันนี้ยังไม่ได้ศึกษาจากที่พี่ทำมาเลยฮ่าๆ

[Internship@True]วันที่ 27

วันนี้ศึกษาการนำเสนอข้อมูลด้วยกราฟเพิ่มเติม(จากที่อาจารย์สอน เราก็ไม่ได้อะไรเลย อ.มัว แต่ไปรับงานนอก) โดยจากข้อมูลที่ได้มา แต่ต้องการที่จะเอาข้อมูลในส่วนของ filter, transmitted และ received โดยกราฟที่ได้ทดลองและศึกษา ได้แก่  แผนภูมิเส้น เพราะจะนำมาแสดงความต่อเนื่องของค่า  filter, transmitted และ received ในแต่ละวัน/เดือนได้ แต่มีปัญหาตรงที่เวลาไป plot แล้วนั้น ในส่วนของ transmitted  กับ received มีความทับซ้อนกัน เพราะค่าทั้ง 2 มีความใกล้เคียงกันมาก เลยไม่ได้ใช้กราฟชนิดนี้ แผนภูมิคอลัมน์ แบบเรียงซ้อน (Stack) จะหาผลรวมของ 3 ค่า   filter, transmitted และ received รวมออกมาในแท่งเดียว เพื่อที่จะลดพื้นที่ในแสดงผลลง แต่มีปัญหา คือ ไม่สามารถที่จะเปรียบเทียบความแตกต่างของข้อมูลในแต่ละวัน/เดือนได้ เลยไม่ได้ใช้กราฟชนิดนี้ แผนภูมิคอลัมน์ แบบกลุ่ม เปลี่ยนวิธีการเขียน SQL ใหม่จากเดิมที่ให้แยกเฉพาะเจาะจงไปทีละ node มาเป็นการหาผลรวมของ แต่ละกลุ่ม โดยสุดท้ายก็เลือกกราฟแบบนี้ เพราะมีความเหมาะสมที่สุดในการแสดงผล ที่มาข้อมูลเรื่องแผนภูมิ: ชนิดข้องแผนภูมิต่างๆใน Microsoft Office (เนื้อหาดีมาก ^__^)

[Internship@True]วันที่ 26

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

[Internship@True]วันที่ 25

จากงานที่ได้รับมอบหมายให้ปรับปรุง ก็จะมีการทำงานย่อยๆ 2 ส่วน ได้แก่ การดึงข้อมูลจาก DB ออกมา (ทำช่วงเข้า) [sql]SELECT * FROM MD_INBOUNDAUDIT_REGEXTV01 WHERE USE_FLAG = ‘Y'[/sql] การแปลงข้อมูลที่ได้เป็น jsonStore เพื่อที่จะเอาไปใส่ตัว combobox ของ Extjs ได้ (ทำช่วงบ่าย) ปัญหาที่พบ โดยหลักๆแล้วจะเป็นการยัดข้อมูลที่ได้ลงตัว Combobox ส่วนการ Query ดึงข้อมูลจาก DB นั้นไม่มีปัญหา ปัญหา: Uncaught TypeError: Cannot call method ‘on’ of undefined วิธีแก้: ตรง Combobox Config Store [javascript]store: ‘states’, มาเป็น store: states,[/javascript] ปัญหา: Uncaught TypeError: Cannot call method ‘getProxy’ of undefined วิธีแก้: ลองหลายแบบมาก ตั้งแต่การสร้าง simpleStore เก็บในตัวแปร และยัดลงไป ปรับปรุงการสร้าง Connection ให้มันมีส่วนข้อมูลนี้ ว่าไปดึงจากที่ไหน เก็บอย่างไร และปรับส่วนการ callback ให้ดีขึ้นด้วย และในที่สุดก็สามารถที่จะดึงมาแสดงผลใน Combobox ได้ T_T

[Internship@True]วันที่ 24

เมื่อก่อนที่ได้ Code พี่มาศึกษา เราต้องไล่แกะ Code และมาเขียนเองหมดเลย แต่ตอนนี้พี่เค้าแนะนำ Tool ตัวหนึ่งมาใช้ ชื่อว่า aBator ที่จะช่วยให้ใช้งาน ibatis ได้สะดวกขึ้น โดยจะมีการ Gen Class ต่างๆ, DAO และ sqlMap มาใช้เลยรวมถึง sql พื้นฐานต่างๆด้วย ทำให้เราสบายขึ้นเยอะ การใช้ aBator ในการ gen ไฟล์ที่เกี่ยวข้องในการใช้ ibatis กับ Spring ไฟล์ download ไฟล์มา โดยมีแหล่งความรู้ ดังนี้ import เข้ามาในโปรเจค ไฟล์ที่เราจะต้องรู้ ซึ่งก็จะมีส่วนที่จะต้องมาแก้ไขครั้งนี้ ต้องมาแก้ Path ของไฟล์ ibator-config_1_0.dtd ให้ถูกต้อง [xml]<!DOCTYPE ibatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN" "D:\MD_WORK\eclipse\workspace\aBator-3.0\config\ibator-config_1_0.dtd">[/xml] กำหนด Class Path เพื่อให้รู้จักกับ Oracle (ไฟล์ classes12.jar) [xml]<classPathEntry location="D:\MDR\defaultroot\WEB-INF\lib\classes12.jar">[/xml]