วันอาทิตย์ที่ 22 สิงหาคม พ.ศ. 2553

ข้อแตกต่างระหว่าง JOGL และ LWJGL

หากจะกล่าวถึงข้อแตกต่างระหว่าง 2 Library นี้มันคงมีไม่ค่อยมากมายครับเพราะทั้ง 2 ต่างใช้ opengl เป็น api ทั้งนั้นลักษณะการเขียนจะคล้ายกัน

  1. Jogl (Java Open Graphics Library)เป็นชุดคำสั่งสำหรับพัฒนางาน 2 มิติ และ 3 มิติที่ต้องการความเร็วสูงและด้วยความสามารถที่ไม่ยึดติดกับ platform ของ java และ opengl จึงทำให้สามารถต่อยอดสู่เทคโนโลยีต่างๆได้เร็วขึ้น

  2. LWJGL (Lightweight Java Game Library)เป็นชุดคำสั่งสำหรับพัฒนาเกมด้วยจาวาโดยเฉพาะเนื่องจากรวมเอา ชุดคำสั่งสำหรับการพัฒนาเกมมาไว้ในตัวเช่น display , input , audio , render จึงทำให้เหมาะกับการพัฒนาเกมกล่าวได้ว่า lwjgl ก็คือชื่อทีนำเอา OpenGL , OpenAL และ  input library มาเก็บไว้อย่างเป็นหมวดหมู่

วันจันทร์ที่ 16 สิงหาคม พ.ศ. 2553

เรื่องของ Thread

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

เอาล่ะเรามาลองเขียนเธรดกันดีกว่า

class LWProcess extends Thread{
        public void run(){
                 int i = 0;
                 do{
                      System.out.println(i);
                      i = i+1;
                 }while(i<1000);
        }
}

ปกติเวลาเราเขียน thread สามารถทำได้หลายวิธีแต่ในบทความนี้จะพูดถึงการสืบทอด จากcodeตัวอย่าง นี้คือการสืบทอดคลาส Thread ครับ โดยเธรดจะเข้ามาทำงานที่ constructor ก่อนที่จะไปทำงานที่ run ในการเขียน thread แต่ละครั้งจะต้องทำการ override method ที่ชื่อ run ลงไปด้วยครับ

LWProcess aThread = new LWProcess();
aThread .start();

จากคำสั่งข้างต้นคือการสั่งให้ Thread ทำงาน

วันจันทร์ที่ 9 สิงหาคม พ.ศ. 2553

ข้อสอบ VB ก๊อปไปวางทับอันเก่าเด้อ

Public Class Form1


    Private Sub code_button1(ByVal num As Integer)

        Button1.Text = "ผลรวมของ 1 ถึง " + num.ToString()

        Dim ans As Integer = 0



        For i As Integer = 1 To num

            ans = ans + i

        Next



        Label3.Text = ans.ToString()



    End Sub



    Private Sub code_button2(ByVal num As Integer)

        Button2.Text = "ผลรวมเฉพาะเลขคี่ของ 1 ถึง " + num.ToString()

        Dim ans As Integer = 0





        For i As Integer = 1 To num

            If (i Mod 2) = 1 Then

                ans = ans + i

            End If

        Next



        Label4.Text = ans.ToString()

    End Sub



    Private Sub code_button3(ByVal num As Integer)

        Button3.Text = "ผลรวมเฉพาะเลขคู่ของ 1 ถึง " + num.ToString()

        Dim ans As Integer = 0



        For i As Integer = 1 To num

            If (i Mod 2) = 0 Then

                ans = ans + i

            End If

        Next



        Label5.Text = ans.ToString()

    End Sub



    Private Sub code_button4(ByVal num As Integer)

        Button4.Text = "!" + num.ToString() + " มีค่าเท่ากับ"

        Dim ans As Integer = factorial(num)



        Label6.Text = ans.ToString()

    End Sub

    Private Sub code_button5(ByVal num As Integer)

        Button5.Text = "หาผลรวมของเลขที่ หาร 3 ลงตัว ตั้งแต่ 1 ถึง " + num.ToString()
        Dim ans As Integer = 0

        For i As Integer = 1 To num
            If (i Mod 3) = 0 Then
                ans += i
            End If
        Next



        Label7.Text = ans.ToString()

    End Sub

    Private Function factorial(ByVal num As Integer) As Integer

        Dim ans As Integer = num



        If (ans <= 0) Then

            Return 1

        End If



        For i As Integer = 1 To num

            ans = ans * i

        Next



        Return (ans)

    End Function



    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim application_number As Integer = 0



        If TextBox1.Text <> "" Then

            application_number = CInt(TextBox1.Text)



            If (application_number > 0) Then

                code_button1(application_number)

                code_button2(application_number)

                code_button3(application_number)

                code_button4(application_number)

                code_button5(application_number)

            End If

        End If

    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

    End Sub
End Class