แสดงบทความที่มีป้ายกำกับ category-tutor แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ category-tutor แสดงบทความทั้งหมด

20 ตุลาคม, 2557

~compiler - ตอนที่ 5.1 Parser สอนคอมไพเลอร์ให้อ่านภาษาของเราออก

ย้ายบทความไปที่ http://www.tamemo.com/post/70/compiler-5-1-parser/

11 ตุลาคม, 2557

อ่านหนังสือยังไงให้ทันสอบ?

ช่วงนี้ก็ใกล้สอบล่ะนะ น้องๆ หลายคนคงจะประสบปัญหาคลาสสิก "อ่านหนังสือไม่ทัน" ไม่ก็ "อ่านไม่เห็นจะรู้เรื่องแล้ว" หรืออารมณ์ขึ้นหน่อยก็ "ไม่อ่านมันแล้ว(โว้ย)"... แหม่ คลาสสิกมาก บ่นกันมาทุกรุ่นแล้วก็ต้องทนอ่านกันต่อไปทุกรุ่นละนะ

วันนี้เลยจะมาสรุปวิธีการอ่านหนังสือของตัวเองให้ฟังหน่อยว่าตอนยังใช้ชีวิตแบบนักศึกษาอยู่น่ะ เราทำอะไรบ้าง

ย้ำว่าวิธีของเรานะ อาจจะใช้ไม่ได้ผลกับหลายๆ คน ... น้องที่ถามว่า "พี่อ่านหนังสือยังไงให้ทันสอบ" ก็คิดก่อนนะว่าวิธีนี้น่ะมันใช้กับเราเองได้มั้ย


คิดว่า"เราทำได้"

ไม่ใช่ให้หลอกตัวเองนะ 555 น้องๆ ส่วนใหญ่มันจะคิดว่า(หนังสือ)เยอะขนาดนี้ เราทำไม่ได้หรอก ไม่เก่งพอ ถ้าคิดอย่างนี้ยังไงก็ทำได้ไม่ดี ไม่ว่าจะอ่านทัน หรือไม่ทัน ก็ต้องคิดไว้ก่อนว่าเราทำได้สิ คือให้คิด บวก (+) ไว้ก่อนอย่างดูถูกตัวเอง

รู้เขา รู้เรา รบร้อยครั้ง ชนะร้อยครั้ง

ต้องรู้ตัวเองก่อนว่าเรามีสกิลในการทำความเข้าใจเนื้อหาขนาดไหน ถ้าน้องเรียนคณะด้านวิทยาศาสตร์ ผู้หญิงก็อาจจะเห็นว่าผู้ชายส่วนใหญ่มันไม่อ่านหนังสือกันเลยแต่แค่3วันก่อนสอบมันก็เข้าใจกันแล้ว แล้วทำไมฉันอ่านแล้วอ่านอีกมาเดือนนึกก็ยังทำไม่ได้

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

อาจารย์สอนไม่รู้เรื่อง ฉันเลยอ่านไม่รู้เรื่อง (งั้นเหรอ?)

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

แต่ก็อย่างว่านะ คุณเป็น "นักศึกษา" แล้วนะ ไม่ใช่นักเรียน ไม่มีคนมาป้อนแล้ว ต้องหาความรู้ด้วยตัวเอง ในเมื่ออาจารย์ (บางคน) ช่วยให้เราเข้าใจไม่ได้เลย ก็ต้องหาแหล่งความรู้ที่สอง นั่นคือ ตัวเอง เพื่อนที่มันเก่งๆ ไม่ก็จบที่ Google

มันเลยเป็นที่มาของวิธีการพลักของเรา! เรียนในห้องไม่รู้เรื่องก็ไม่ต้องเรียนในห้องสิ ห้องเรียนเอาไว้นอนพักผ่อน (แต่กลับหอพักแล้วต้องอ่านเองให้ได้ด้วยนะ)

นอน...

ปกติยิ่งใกล้สอบ น้องๆ จะนิยมการโต้รุ่งกันเพราะอ่านไม่ทัน แต่สำหรับเราแล้วยิ่งใกล้สอบเท่าไหร่ จะเพิ่มชั่วโมงการนอนของตัวเองขึ้นอีก

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

เปิดติว

อ่านให้ตบสัก 1-2 รอบ ไม่ต้องจำได้หมดก็ได้ แล้วป่าวประกาศเลยว่า "ฉันจะติววิชานี้นะ" เพื่อนน้องจะแห่กันมาจากทั่วทุกทิศ เป็นการกดดันให้เราต้องอ่านเนื้อหาจนขึ้นใจเพราะสัญญาไปแล้วว่าจะติว แถมตอนติวคนอื่นนี่แหละ ทำให้จำอะไรดีมากเลย และเพื่อนมักจะมีคำถามที่คาดไม่ถึงมาเสมอทำให้เราจะรู้มากขึ้นเรื่อย ดีไม่ดี ติวไปติวมาเพื่อนกลับมาเป็นคนสอนเราแทนซะงั้น

สรุป

วิธีการอ่านหนังสือของเราไม่ใช่วิธีที่ดีเท่าไหร่หรอก แต่มันเกิดจากสถานการณ์บังคับ (เริ่มตอนปี2ที่อาจารย์บางคนสอนไม่รู้เลย ปี1นี่ยังเข้าใจได้อยู่นะเลยยังเรียนในห้องอยู่) ในเมื่อเขาสอนสไตล์เขาแล้วเราไม่รับ ก็เปล่าประโยชน์ที่จะเรียนในห้อง ใช้วิธีอ่านเองดีกว่า งั้นเวลาในห้องทำไรล่ะ ก็ใช้พักผ่อนไง แต่พักผ่อนจริงๆ นะไม่ใช่นั่งเล่นมือถือ

ก็พยายามหาวิธีอ่านหนังสือของตัวเองให้เจอละกัน ยิ่งเจอเร็วเท่าไหร่ก็ยิ่งดีเท่านั้น

สุดท้ายของฝากไว้ ... คะแนนกับเกรดไม่ใช่ทุกอย่าง มันจะมีค่าก็แค่ตอนเรียนกับตอนหางานครั้งแรกเท่านั้นแหละ เรียนจบไปคุณอาจจะทำเงินได้มากกว่าเพื่อนที่สอบได้คะแนนเต็มตลอดก็ได้นะ ;)

23 กันยายน, 2557

[Java] compare 2 array - เปรียบเทียบว่าอะเรย์2ตัวเท่ากันหรือไม่ด้วย .equals และ .deepEquals

การเทียบว่าค่าในตัวแปร 2 ตัวนี้เท่ากันหรือไม่เป็นสิ่งที่เขียนบ่อยมากเวลาเขียนโปรแกรม
ตัวอย่างเช่น
if( x == y ){
    print("equal");
}
ปกติถ้าคุณเป็นโปรแกรมเมอร์สาย C ก็คงจะเคยชินกับการใช้  ==  สำหรับการเช็กว่ามันเท่ากันมั้ย
แต่ถ้าตัวแปรตัวนั้นดันเป็น "object" ขึ้นมาล่ะ มันจะเกิดอะไรขึ้น?

การที่เราจับตัวแปรธรรมดามาเท่ากับกัน จะเรียกว่า "compare by value" คือ x เก็บค่าอะไรอยู่ y เก็บค่าอะไรอยู่ก็เอาค่าพวกนั้นแหละมาใช้ตรงๆ เลย

อย่างเคสนี้ สั่ง x == y ก็จะได้ประมาณ 10 เท่ากับ 10 มั้ย
แน่นอนว่าสำหรับเคสง่ายๆ แบบนี้มันจะได้  true  แน่นอนอยู่แล้ว

ปัญหาของเราจะเกิดขึ้นเมื่อตัวแปรที่จับมาเปรียบเทียบกันมันอยู่ในรูปของ Object เพราะว่าอะไรดูรูปข้างล่างนี้เลย

14 กันยายน, 2557

[SQL] เรียงข้อมูลตามค่าที่รู้อยู่แล้วด้วย order by field

วันนี้ขออัพบล๊อกสั้นเก็บไว้กันลืมเอง


เรื่องมีอยู่ว่า ต้องการจะเขียน SQL สำหรับดึงข้อมูลตาม id ที่รู้อยู่แล้วชุดหนึ่งออกมา
ถ้าเรามีตัวแปร id พวกนั้นอยู่ก่อนแล้ว ก็จะเขียนได้ประมาณนี้
(เขียนด้วยภาษา php นะ)
$id = array(1, 2, 3, 10, 12);
$sql = '
    select *
    from Products
    where id in (' . implode(',', $id) . ')
';

โค้ดธรรมดามาก เอาไปรันก็จะได้ตัวแปร $sql ออกมาประมาณนี้
select *
from Products
where id in (1, 2, 3, 10, 12)
อ้าว! แล้วมันไม่ได้อะไรตรงไหน
ก็ผลที่รันออกมาหลังจากเอาไป execute แล้วมันได้ประมาณนี้น่ะสิ

|----|---------|
| id | name    |
|----|---------|
|  2 | pencil
  |
| 10 | books   |
|  3 | cup     |
|  1 | pen     |
| 12 | rubber  |

|----|---------|
เอ๊ะ ทำไมเลขมันไม่เรียงกันตามที่เราใส่ไปล่ะ?

03 กันยายน, 2557

[jQuery] วิธีเช็กว่าการ "click" ที่ปุ่มมาจากการคลิกจริงๆ หรือจากสคริปต์ "trigger"



ในการเขียนเว็บ เราสามารถสั่ง jQuery ให้ทำให้เกิดอีเวนท์แทน user ได้โดยการสั่ง trigger
เช่นต้องการให้ปุ่มนี้โดนกดแต่ user ไม่ได้กดเอง เราก็สั่ง
$('button').trigger('click');
ได้เลย
แต่ว่าบางครั้งเราก็ต้องการรู้ว่าจริงๆ แล้วอีเวนท์การคลิก (รวมถึงอีเวนท์อื่นๆ ด้วย) มาจากการที่เราสั่ง trigger เองหรือมาจากการคลิกจริงๆ


นี่มันtigger ไม่ใช่trigger

21 สิงหาคม, 2557

แนะนำเว็บสำหรับคนเรียน Data Structure

ผู้ที่กำลังเรียนหรือศึกษาเรื่อง Data Structure ใหม่ๆ อาจจะมีข้อสงสัย (หรือบางครั้งก็ไม่เข้าใจอะไรเลย ฮา) ว่าไอ้โครงสร้างข้อมูลตัวเนี้ย .. ตกลงมันเก็บอะไรยังไงแน่ นึกภาพไม่ออกเลย

วันนี้เราเลยนำเสนอเว็บสำหรับรันภาพแบบ visualization ออกมาให้เห็นกันเลย ไม่ว่าจะเป็นเรื่องการเรียนข้อมูล มันขยับกันยังไง swap กันที่ตัวไหน หรือจะเป็นเรื่อง Tree หรือ Graph ว่าข้อมูลตัวใหม่เข้ามาแล้วมันไปสร้าง Node ที่ไหน

จากที่ลองเล่นๆ มาหลายเว็บ มี 2 เว็บที่เข้าตากรรมการ นั่นคือ

VisualGo



17 สิงหาคม, 2557

อยากเขียนโปรแกรม เริ่มยังไงดี? - ตอนที่ 3 แปลงความคิดในหัว (Flowchart) ให้กลายเป็น Code

2:45
ในบล๊อกนี้จะพูดถึง Flowchart เป็นหลัก เนื่องจากเคยเขียนสรุปไปแล้ว เลยจะไม่ขอพูดถึงว่า Flowchart คืออะไรอีก สำหรับใครที่ยังไม่เคยอ่านสามารถกลับไปดูได้ที่ fundamental-programming

ทำไมต้องเขียน Flowchart

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

อ้าว .. แล้วมันผิดตรงไหน ก็เขียนโปรแกรมนะ

ใช่ มันไม่ผิดหรอก แต่อย่างที่เคยพูดไปในหัวข้อ ก่อนจะทำให้โปรแกรมฉลาดได้ โปรแกรมเมอร์ต้องฉลาดก่อน การเขียนโปรแกรมที่ถูกต้องไม่ใช่ว่าเปิดมาก็ซัดโค้ดเลย เราต้อง "ลำดับความคิด" ให้เสร็จก่อน

ถ้ายังไม่รู้ว่าโจทย์นี้มีวิธีคิดยังไงก็อย่าเริ่มเขียนเลย เขียนไม่ได้หรอก แรกๆ ขอแนะนำให้ใช้ tool ที่มีชื่อว่า "Flowchart" ในการลำดับความคิดของเรา และใช้การเขียนในกระดาษจะดีที่สุด จนเมื่อไหร่ที่เชี่ยวชาญแล้วระดับฟังโจทย์ปุ๊บ Flowchart โผล่มาในหัวปั๊บ จะเลิกเขียน Flowchart ก่อนเขียนโปรแกรมก็ย่อมได้เพราะถ้าถึงระดับนั้นแสดงว่าคุณรู้จักการลำดับความคิดแล้วยังไงล่ะ

เขียน Flowchart (ก็ยากแล้ว) ได้แล้ว แต่ดันแปลงเป็นโค้ดโปรแกรมไม่ได้

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

แต่เอาล่ะสิ! Flowchart ซับซ้อนขนาดนี้จะเขียนโค้ดยังไงล่ะนั่น
อันดับแรกอย่างเพิ่งกลัวมันเพียงเพราะเส้นมันเยอะ ไม่ว่ามันจะซับซ้อนแค่ไหน ส่วนใหญ่รูปแบบมันจะตกอยู่แค่ 4 รูปแบบเท่านั้นแหละ

26 กุมภาพันธ์, 2557

~ Ajax คืออะไร แล้วมันใช้ยังไง? - ตอนที่ 3 ภาคปฏิบัติ (ใช้ jQuery)


ตอนนี้ย้ายบล๊อกไปอยู่ที่นี่แล้วครับ แต่บทความยังอยู่นะ ตามไปอ่านบทความต่อได้ที่:
กดเลย --> http://www.tamemo.com/post/41/

24 กุมภาพันธ์, 2557

~ Ajax คืออะไร แล้วมันใช้ยังไง? - ตอนที่ 2 ภาคปฏิบัติ (แบบธรรมดา)


ตอนนี้ย้ายบล๊อกไปอยู่ที่นี่แล้วครับ แต่บทความยังอยู่นะ ตามไปอ่านบทความต่อได้ที่:
กดเลย --> http://www.tamemo.com/post/40/

07 กุมภาพันธ์, 2557

~Ajax คืออะไร แล้วมันใช้ยังไง? - ตอนที่ 1 ภาคทฤษฎี


ตอนนี้ย้ายบล๊อกไปอยู่ที่นี่แล้วครับ แต่บทความยังอยู่นะ ตามไปอ่านบทความต่อได้ที่:
กดเลย --> http://www.tamemo.com/post/37/

24 มกราคม, 2557

"Merge" และ "Intersect" ใน JavaScript ทำยังไง?

ช่วงนี้เขียน JavaScript ในส่วนที่ทำงานกับ Array และ Object บ่อย

หนึ่งใน action ที่ทำบ่อยมากคือ การผสาน (merge) Object หนึ่งตัว (หรือมากกว่า) และ การเลือกซ้ำ (intersect) Array สองตัวเข้าด้วยกัน
function mergeObj(){
    var r = { };
    for( var i in arguments ){
        for( var j in arguments[i] ){
            r[j] = arguments[i][j];
        }
    }
    return r;
}

var a = {x:1, y:2, z:3};

var b = {q:10, w:20, e: 30, x:40};

var result = mergeObj(a,b);

//result is {x:40, y:2, z:3, q:10, w:20, e:30}
       
สำหรับ mergeObj นั้นสามารถส่ง Object เป็น parameter เข้าไปกี่ตัวก็ได้เพราะรับค่าด้วยตัวแปร arguments
function intersect( arr1, arr2 ){
    if( arr1 instanceof Array && arr2 instanceof Array ){

        //make arr1 smaller than arr2
        if( arr1.length > arr2.length ){
            var tmp = arr1;
            arr1 = arr2;
            arr2 = tmp;
        }

        return arr1.filter(function( n ){
            return arr2.indexOf(n) !== -1;
        });
    }
    return [ ];
}


var a = [1,2,3,4,5,6,7,8,9,10];

var b = [2,4,6,8,10,12,14,16];

var result = intersect(a,b);

//result is [2,4,6,8,10]
 ส่วน intersect จะใช้กับ Array โดยใช้คุณสมบัติของ .filter เข้าช่วย