จากการอ่านบทความเมื่อวานเกี่ยวกับการใช้งาน Win32API บน C# ผมก็ได้ทดลองนำไป
ใช้งานกับการเขียนโปรแกรมใช้งาน Win32API ซึ่ง API ตัวที่ผมเรียกใช้คือ user32.dll
สำหรับ Function ที่ผมเลือกที่จะใช้คือ SystemParameterInfo ซึ่งผมจะใช้ ฟังก์ชัน
นี้ในการเรียกค่า Resolution ของจอภาพมาดูครับว่าปัจจุบัน Desktop ของเราใช้
Resolution ของจอภาพไว้ที่เท่าไร
ด้านล่างจะเป็นการประกาศใน Visual Basic นะครับ ( จาก APIViewer )
Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
สำหรับ Sourcecode ของโปรแกรมนะครับผมแปลงมาใส่ C# จากด้านบนเป็นดังนี้ครับ
แน่นอนครับลืมไม่ได้ถ้าจะใช้ WIN32API ต้องอ้างถึงตัวนี้
using System.Runtime.InteropServices;
จากนั้น
[DllImport("user32.dll",EntryPoint="SystemParametersInfo")]
private static extern int SystemParametersInfo(int uiAction,int uiParam,out rc pvParam,int fWinlni);
สำหรับตัวโปรแกรมผมออกแบบโดยมีฟอร์ม 1 ฟอร์มมี Label ไว้แสดง Resolution
และมีปุ่มกด เพื่อใช้เรียกฟังก์ชันให้ดึงค่า Resolution มาแสดงบน Label ที่กำหนด
ตัวอย่างโค๊ตที่จะทำงานเมื่อมีการกดปุ่มนะครับ
private void button1_Click(object sender, EventArgs e)
{
rc Rect;
int lngResult;
lngResult = SystemParametersInfo(48, 0,out Rect,0);
label1.Text = "";
label1.Text = "("+Rect.Left+")("+Rect.Top+"),("+Rect.Rigth+")("+Rect.Bottom+")";
}
** ข้อสังเกตุ **
จากการประกาศ rc Rect;
ตัวแปร rc ในที่นี้คือ Struct ซึ่งแปลงมาจาก Type ของ Visual Basic ใน APIViewer
CODE ประกาศ Struct ของ C#
struct rc
{
public int Left;
public int Top;
public int Rigth;
public int Bottom;
}
ตัวอย่างการเรียกใช้จาก Visual Basic
เริ่มแรกต้องประกาศใช้ก่อนดังนี้
Declare Function SystemParametersInfo Lib "user32.dll" _
Alias "SystemParametersInfoA"(ByVal uiAction As Long, _
ByVal uiParam As Long,pvParam as Any,ByVal fWinlni As Long) As Long
สำหรับ CODE ในปุ่มก็มีดังนี้ครับ
Private Sub Command1_Click()
Dim udiWorkArea As RECT
Dim lngResult As Long
lngResult = SystemParametersInfo(SPI_GETWORKAREA,0,udiWorkArea,0)
With udiWorkArea
Label1.Caption = "(" & .Right &","& .Bottom &")"
End With
End Sub
** หมายเหตุ 1 **
เมื่อเราเปิดจาก APIViewer ในส่วนของ Constant จะพบว่าตัวแปร RECT มีประเภทเป็น Type
ใน Visual Basic ซึ่งจะเท่ากับ Stuct เราจึงทำการประกาศ Struct ใน CODE C#
** หมายเหตุ 2 **
ในส่วนนี้ของ Visual Basic ( บรรทัดล่าง )
lngResult = SystemParametersInfo(SPI_GETWORKAREA,0,udiWorkArea,0)
จะเห็นว่าต่างจากของ C# คือ
lngResult = SystemParametersInfo(48, 0,out Rect,0);
เนื่องมาจาก SPI_GETWORKAREA ใน Visual Basic ตามเอกสารของ WIN32API ระบุว่า
เป็นตัวแปรแบบค่าคงที่ เท่ากับ 48
และที่ส่วนของ Parameter ที่ส่งมีคำว่า out Rect เนื่องจากในการประกาศใช้ Function
มีการกำหนดให้เป็น out rc เอาไว้ ดัง Code ด้านล่าง
[DllImport("user32.dll",EntryPoint="SystemParametersInfo")]
private static extern int SystemParametersInfo(int uiAction,int uiParam,out rc pvParam,int fWinlni);
จะเห็นว่าในส่วนที่ APIViewer แจ้งว่า Function มี Argument แบบ ByVal หรือ ByRef
เวลาเรานำมาประกาศใน C# เราต้องมี out นำหน้า datatype ตามด้วย ชื่อตัวแปร
** หมายเหตุ 3 **
จะสังเกตุว่า เราใช้ int ในตัวแปรของ C# แทนที่จะประกาศเป็น long เช่นเดียวกับ Visual Basic
นั้นก็เพราะขนาดของข้อมูลของ Visual Basic และ C# ไม่เท่ากัน
จบข่าวครับ . . .
Wednesday, August 30, 2006
Tuesday, August 29, 2006
การใช้ WIN32API ใน C#
[CODE]
using System;
using System.Runtime.InteropServices;
class win32intro
{
struct SYSTEMTIME {
public short wYear;
public short wMonth;
public short wDayOfWeek;
public short wDay;
public short wHour;
public short wMinute;
public short wSecond;
public short wMilliseconds;
}
[DllImport("kernel32.dll",EntryPoint="GetLocalTime")]
private static extern void GetLocalTime(out SYSTEMTIME lpSystemTime);
static void Main(string[] args)
{
SYSTEMTIME tm;
GetLocalTime(out tm);
Console.WriteLine("{0:0000}/{1:00}/{2:00} {3:00}:{4:00}:{5:00}:{6:0000}",
tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);
}
}
[/CODE]
หมายเหตุ
ให้ระวังในการประกาศตัวแปร . . เพราะ WIN32API นั้นจะเทียบกับ Visual Basic
แต่ใน C# ขนาดของตัวแปรไม่เท่ากัน . .
integer ของ Visual Basic มีขนาด 16 bit
integer ของ C# มีขนาด 32 bit
Type ของ Visual Basic คือ Struct ของ C#
ส่วนรายละเอียดอื่นๆ ดูจาก Sourcecode หรืออ่านได้จาก
Reference
Twoguru.com
using System;
using System.Runtime.InteropServices;
class win32intro
{
struct SYSTEMTIME {
public short wYear;
public short wMonth;
public short wDayOfWeek;
public short wDay;
public short wHour;
public short wMinute;
public short wSecond;
public short wMilliseconds;
}
[DllImport("kernel32.dll",EntryPoint="GetLocalTime")]
private static extern void GetLocalTime(out SYSTEMTIME lpSystemTime);
static void Main(string[] args)
{
SYSTEMTIME tm;
GetLocalTime(out tm);
Console.WriteLine("{0:0000}/{1:00}/{2:00} {3:00}:{4:00}:{5:00}:{6:0000}",
tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);
}
}
[/CODE]
หมายเหตุ
ให้ระวังในการประกาศตัวแปร . . เพราะ WIN32API นั้นจะเทียบกับ Visual Basic
แต่ใน C# ขนาดของตัวแปรไม่เท่ากัน . .
integer ของ Visual Basic มีขนาด 16 bit
integer ของ C# มีขนาด 32 bit
Type ของ Visual Basic คือ Struct ของ C#
ส่วนรายละเอียดอื่นๆ ดูจาก Sourcecode หรืออ่านได้จาก
Reference
Twoguru.com
Monday, August 28, 2006
เริ่มต้นกับ AJAX จาก W3Schools
ผมคิดอยู่มานานว่าเทคโนโลยีอย่าง AJAX นั้นมันนำไปใช้จริงได้มีประโยชน์ไหมนะ
ความจริงแล้วมันมีอยู่หลายความคิดเห็นเกี่ยวกับเทคโนโลยี AJAX เนื่องจากบางความ
เห็นผู้เชียวชาญหลายท่านก็บอกว่า มันทำลายคุณสมบัติของ Browser
คุณสมบัติของ Browser ที่จะเสียไปหากใช้ AJAX
- ไม่สามารถเซฟหน้าเว็บเก็บได้
- ไม่สามารถทำ Favorite เวบหน้าที่ต้องการได้
แต่ว่ากับบางกรณีนั้นผมก็คิดว่ามันเข้าท่าดีนะ เช่นหน่วยงานที่มีการใช้งาน Intranet
ภายในองค์กร ( เช่นหน่วยงานของผม ) เพราะว่า Intranet มันเร็ว เพราะฉะนั้น
เรื่องเกี่ยวกับ Connection Speed ของ Internet จึงไม่ใช่ปัญหา
มาเริ่มกันเลยดีกว่าครับ ^^
#########################################################
AJAX
AJAX ย่อมาจาก Asynchonous Java and XML เป็นเทคโนโลยีในการแสดงข้อมูล
โดยใช้ JavaScript ร่วมกับ HTML และ XML โดย AJAX ไม่ใช่ภาษาคอมฯ ใหม่
แต่เป็นเพียงเทคนิคใหม่ในการแสดงเนื้อหาได้ รวดเร็ว และตอบสนองการใช้งานได้ดี สำหรับ
Web Application
โดย AJAX จะใช้ JavaScript ในการแลกเปลี่ยนข้อมูลระหว่าง WebServ และ WebBrowser
##########################################################
AJAX เป็นเทคโนโลยีของ Web Browser
AJAX เป็นเทคโนโลยีที่รันบน Web Browser มันใช้การ Transfer ข้อมูลระหว่าง Server และ
Browser แบบ Asynchonous ซึ่งเทคโนโลยีนี้จะทำให้ Internet Application
มีขนาดเล็กและค่อนข้างดีกว่าแบบเก่า
และเราสามารถที่จะพัฒนาได้ทันที โดยไม่ต้องหา Services Server อะไรมาเพิ่ม
##########################################################
สรุปว่าสิ่งที่ควรศึกษา . . .
- HTML
- JavaScript
- CSS
- XML
- ภาษาที่ใช้ในการ Program บนเวบเช่น PHP , ASP , ASP.net , JSP เป็นต้น
###########################################################
ไว้มาแปลใหม่วันหลัง
ความจริงแล้วมันมีอยู่หลายความคิดเห็นเกี่ยวกับเทคโนโลยี AJAX เนื่องจากบางความ
เห็นผู้เชียวชาญหลายท่านก็บอกว่า มันทำลายคุณสมบัติของ Browser
คุณสมบัติของ Browser ที่จะเสียไปหากใช้ AJAX
- ไม่สามารถเซฟหน้าเว็บเก็บได้
- ไม่สามารถทำ Favorite เวบหน้าที่ต้องการได้
แต่ว่ากับบางกรณีนั้นผมก็คิดว่ามันเข้าท่าดีนะ เช่นหน่วยงานที่มีการใช้งาน Intranet
ภายในองค์กร ( เช่นหน่วยงานของผม ) เพราะว่า Intranet มันเร็ว เพราะฉะนั้น
เรื่องเกี่ยวกับ Connection Speed ของ Internet จึงไม่ใช่ปัญหา
มาเริ่มกันเลยดีกว่าครับ ^^
#########################################################
AJAX
AJAX ย่อมาจาก Asynchonous Java and XML เป็นเทคโนโลยีในการแสดงข้อมูล
โดยใช้ JavaScript ร่วมกับ HTML และ XML โดย AJAX ไม่ใช่ภาษาคอมฯ ใหม่
แต่เป็นเพียงเทคนิคใหม่ในการแสดงเนื้อหาได้ รวดเร็ว และตอบสนองการใช้งานได้ดี สำหรับ
Web Application
โดย AJAX จะใช้ JavaScript ในการแลกเปลี่ยนข้อมูลระหว่าง WebServ และ WebBrowser
##########################################################
AJAX เป็นเทคโนโลยีของ Web Browser
AJAX เป็นเทคโนโลยีที่รันบน Web Browser มันใช้การ Transfer ข้อมูลระหว่าง Server และ
Browser แบบ Asynchonous ซึ่งเทคโนโลยีนี้จะทำให้ Internet Application
มีขนาดเล็กและค่อนข้างดีกว่าแบบเก่า
และเราสามารถที่จะพัฒนาได้ทันที โดยไม่ต้องหา Services Server อะไรมาเพิ่ม
##########################################################
สรุปว่าสิ่งที่ควรศึกษา . . .
- HTML
- JavaScript
- CSS
- XML
- ภาษาที่ใช้ในการ Program บนเวบเช่น PHP , ASP , ASP.net , JSP เป็นต้น
###########################################################
ไว้มาแปลใหม่วันหลัง
โปรเจค SnapShot V1.0
เมื่อประมาณต้นเดือนที่ทำงานซื้อกล้อง WebCam มา 1 ตัว เห็นเค้าบอกว่าจะนำมากล้องที่ซื้อ
มาใช้ร่วมกับโปรแกรม mrecord ของบริษัท PS Solution . .
ทีแรกผมก็เข้าใจว่า อ้อ . . ที่ระบุเสปคของกล้องคงเพราะกล้องสามารถใช้กับโปรแกรมได้เลย
แต่เอาเข้าจริงสรุปว่าให้ใช้กล้องถ่ายรูปเป็น JPG , BMP แล้วทำการ Import เข้าฐานข้อมูล
ด้วยการ Browse จากโปรแกรมของ Mrecord
ผมก็เลยไปค้นหาข้อมูลเกี่ยวกับการเขียนโปรแกรมต่อกล้อง Digital บน MS Windows ดู
สรุปว่าก็ไปเจอ WIN32API ที่สามารถนำมาใช้งานได้
เนื่องด้วยผมต้องพัฒนาให้โปรแกรมใช้งานบน Windows 98/ME และเสปคคอมฯ ที่ค่อนข้างต่ำ
จึงทำให้ผมตัดสินใจเลือกใช้ Visual Basic 6.0 มาใช้งานเนื่องจากคงเหมาะกว่าจะใช้ .net
แต่แน่นอนว่าเมื่อมีเวลาผมจะพัฒนาด้วย C#.net แต่ไม่รู้เมื่อไร ..
คอมพิวเตอร์ที่ใช้รันโปรแกรม ( เฉพาะ OS และ Ram )
- MS Windows 98/ME/XP
- RAM 128 MB Share VGA 32MB หรือ 8MB
สำหรับ WIN32API ที่เรานำมาใช้ใน โปรเจคนี้จะมีทั้งหมด 2 ตัวคือ
- user32
- apicap32.dll
ตัวอย่าง CODE ( ส่วนของค่าคงที่ และ การเรียกใช้ DLL )
Const ws_visible = &H10000000
Const ws_child = &H40000000
Const WM_USER = 1024
Const WM_CAP_EDIT_COPY = WM_USER + 30
Const wm_cap_driver_connect = WM_USER + 10
Const wm_cap_set_preview = WM_USER + 50
Const wm_cap_set_overlay = WM_USER + 51
Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Const WM_CAP_SEQUENCE = WM_USER + 62
Const WM_CAP_SINGLE_FRAME_OPEN = WM_USER + 70
Const WM_CAP_SINGLE_FRAME_CLOSE = WM_USER + 71
Const WM_CAP_SINGLE_FRAME = WM_USER + 72
Const DRV_USER = &H4000
Const DVM_DIALOG = DRV_USER + 100
Const PREVIEWRATE = 30
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" _
Alias "capCreateCaptureWindowA" (ByVal a As String, _
ByVal b As Long, _
ByVal c As Integer, _
ByVal d As Integer, _
ByVal e As Integer, _
ByVal F As Integer, _
ByVal g As Long, _
ByVal h As Integer) As Long
Dim hwndc As Long
Dim saveflag As Integer
Dim pictureindex As Integer
Dim filter1(-1 To 1, -1 To 1) As Single
Dim filter2(-1 To 1, -1 To 1) As Single
Dim temp As String
ตัวอย่าง CODE ( การบันทึกภาพ )
Dim bRet As Boolean
Dim szTest As String
'szTest = App.Path & "\scCapture.bmp" & Chr$(0)
szTest = App.Path & "\Capture\" + FileName + ".jpg" & Chr$(0)
bRet = SendMessage(hwndc, WM_CAP_EDIT_COPY, 0&, 0&)
If bRet Then
DoEvents
If Clipboard.GetFormat(vbCFBitmap) Then
PicWCam.Picture = Clipboard.GetData(vbCFBitmap)
SavePicture PicWCam.Image, szTest
DoEvents
Clipboard.Clear
End If
End If
ตัวอย่าง CODE ( Form Load )
On Error GoTo handler:
hwndc = capCreateCaptureWindow("CaptureWindow", _
ws_child Or ws_visible, _
0, _
0, _
PicWCam.Width, _
PicWCam.Height, _
PicWCam.hWnd, _
0)
If (hwndc <> 0) Then
temp = SendMessage(hwndc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwndc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwndc, WM_CAP_SET_PREVIEWRATE, PREVIEWRATE, 0)
temp = SendMessage(Me.hWnd, WM_CAP_EDIT_COPY, 1, 0)
PicWCam.Picture = Clipboard.GetData
Else
MsgBox "ไม่สามารถติดต่อกล้องได้", vbCritical
End If
Exit Sub
handler:
End
สิ้นสุดคร๊าบบ . . . นั้นเป็นส่วนประกอบหลักๆในการใช้ Connect ไป WebCam และบันทึกภาพ
( Note กันลืมน่ะครับ )
มาใช้ร่วมกับโปรแกรม mrecord ของบริษัท PS Solution . .
ทีแรกผมก็เข้าใจว่า อ้อ . . ที่ระบุเสปคของกล้องคงเพราะกล้องสามารถใช้กับโปรแกรมได้เลย
แต่เอาเข้าจริงสรุปว่าให้ใช้กล้องถ่ายรูปเป็น JPG , BMP แล้วทำการ Import เข้าฐานข้อมูล
ด้วยการ Browse จากโปรแกรมของ Mrecord
ผมก็เลยไปค้นหาข้อมูลเกี่ยวกับการเขียนโปรแกรมต่อกล้อง Digital บน MS Windows ดู
สรุปว่าก็ไปเจอ WIN32API ที่สามารถนำมาใช้งานได้
เนื่องด้วยผมต้องพัฒนาให้โปรแกรมใช้งานบน Windows 98/ME และเสปคคอมฯ ที่ค่อนข้างต่ำ
จึงทำให้ผมตัดสินใจเลือกใช้ Visual Basic 6.0 มาใช้งานเนื่องจากคงเหมาะกว่าจะใช้ .net
แต่แน่นอนว่าเมื่อมีเวลาผมจะพัฒนาด้วย C#.net แต่ไม่รู้เมื่อไร ..
คอมพิวเตอร์ที่ใช้รันโปรแกรม ( เฉพาะ OS และ Ram )
- MS Windows 98/ME/XP
- RAM 128 MB Share VGA 32MB หรือ 8MB
สำหรับ WIN32API ที่เรานำมาใช้ใน โปรเจคนี้จะมีทั้งหมด 2 ตัวคือ
- user32
- apicap32.dll
ตัวอย่าง CODE ( ส่วนของค่าคงที่ และ การเรียกใช้ DLL )
Const ws_visible = &H10000000
Const ws_child = &H40000000
Const WM_USER = 1024
Const WM_CAP_EDIT_COPY = WM_USER + 30
Const wm_cap_driver_connect = WM_USER + 10
Const wm_cap_set_preview = WM_USER + 50
Const wm_cap_set_overlay = WM_USER + 51
Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Const WM_CAP_SEQUENCE = WM_USER + 62
Const WM_CAP_SINGLE_FRAME_OPEN = WM_USER + 70
Const WM_CAP_SINGLE_FRAME_CLOSE = WM_USER + 71
Const WM_CAP_SINGLE_FRAME = WM_USER + 72
Const DRV_USER = &H4000
Const DVM_DIALOG = DRV_USER + 100
Const PREVIEWRATE = 30
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" _
Alias "capCreateCaptureWindowA" (ByVal a As String, _
ByVal b As Long, _
ByVal c As Integer, _
ByVal d As Integer, _
ByVal e As Integer, _
ByVal F As Integer, _
ByVal g As Long, _
ByVal h As Integer) As Long
Dim hwndc As Long
Dim saveflag As Integer
Dim pictureindex As Integer
Dim filter1(-1 To 1, -1 To 1) As Single
Dim filter2(-1 To 1, -1 To 1) As Single
Dim temp As String
ตัวอย่าง CODE ( การบันทึกภาพ )
Dim bRet As Boolean
Dim szTest As String
'szTest = App.Path & "\scCapture.bmp" & Chr$(0)
szTest = App.Path & "\Capture\" + FileName + ".jpg" & Chr$(0)
bRet = SendMessage(hwndc, WM_CAP_EDIT_COPY, 0&, 0&)
If bRet Then
DoEvents
If Clipboard.GetFormat(vbCFBitmap) Then
PicWCam.Picture = Clipboard.GetData(vbCFBitmap)
SavePicture PicWCam.Image, szTest
DoEvents
Clipboard.Clear
End If
End If
ตัวอย่าง CODE ( Form Load )
On Error GoTo handler:
hwndc = capCreateCaptureWindow("CaptureWindow", _
ws_child Or ws_visible, _
0, _
0, _
PicWCam.Width, _
PicWCam.Height, _
PicWCam.hWnd, _
0)
If (hwndc <> 0) Then
temp = SendMessage(hwndc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwndc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwndc, WM_CAP_SET_PREVIEWRATE, PREVIEWRATE, 0)
temp = SendMessage(Me.hWnd, WM_CAP_EDIT_COPY, 1, 0)
PicWCam.Picture = Clipboard.GetData
Else
MsgBox "ไม่สามารถติดต่อกล้องได้", vbCritical
End If
Exit Sub
handler:
End
สิ้นสุดคร๊าบบ . . . นั้นเป็นส่วนประกอบหลักๆในการใช้ Connect ไป WebCam และบันทึกภาพ
( Note กันลืมน่ะครับ )
Store Procedure
Store Procedure :: คือการเขียนโปรแกรมปนกับภาษา SQL ทิ้งไว้สำหรับประมวลผลบน
Database Server เองเลย ซึ่งการทำ Store Procedure จะช่วยเพิ่มความเร็วในการทำงาน
เพราะจะสามารถประมวลผลข้อมูลได้เร็วกว่า
ปกติแล้ว Store Procedure จะมีให้ใช้ในฐานข้อมูลเช่น MS SQL หรือ Oracle โดยจะมีชื่อเรียก
ที่แตกต่างกันออกไป
T/SQL ( Transaction SQL ) สำหรับ MS SQL
PL/SQL สำหรับ Oracle
โดยทั้ง MS SQL และ Oracle นั้นมี Store Procedure ให้ใช้ทั้งคู่ แต่ข้อเสียก็คือ
Store Procedure นั้นแต่ละบริษัทเป็นผู้ออกแบบซึ่งทำให้มันไม่สามารถใช้ร่วมกันได้
กล่าวคือ ต้องศึกษาการทำงานของแต่ละ DBMS ก่อนจะเขียน Store Procedure
แต่สำหรับ MS-SQL 2005 มีการฝัง CLR เข้าไปทำให้เราสามารถเขียนภาษาในกลุ่ม .net
เช่น C# , VB.net ปนกับ SQL เป็น T/SQL ใช้บน MS SQL ได้ ซึ่งช่วยให้ .net Dev
ทำงานกับ Store Procedure ได้ง่ายขึ้น ^^ ดีใจจังเลย
Database Server เองเลย ซึ่งการทำ Store Procedure จะช่วยเพิ่มความเร็วในการทำงาน
เพราะจะสามารถประมวลผลข้อมูลได้เร็วกว่า
ปกติแล้ว Store Procedure จะมีให้ใช้ในฐานข้อมูลเช่น MS SQL หรือ Oracle โดยจะมีชื่อเรียก
ที่แตกต่างกันออกไป
T/SQL ( Transaction SQL ) สำหรับ MS SQL
PL/SQL สำหรับ Oracle
โดยทั้ง MS SQL และ Oracle นั้นมี Store Procedure ให้ใช้ทั้งคู่ แต่ข้อเสียก็คือ
Store Procedure นั้นแต่ละบริษัทเป็นผู้ออกแบบซึ่งทำให้มันไม่สามารถใช้ร่วมกันได้
กล่าวคือ ต้องศึกษาการทำงานของแต่ละ DBMS ก่อนจะเขียน Store Procedure
แต่สำหรับ MS-SQL 2005 มีการฝัง CLR เข้าไปทำให้เราสามารถเขียนภาษาในกลุ่ม .net
เช่น C# , VB.net ปนกับ SQL เป็น T/SQL ใช้บน MS SQL ได้ ซึ่งช่วยให้ .net Dev
ทำงานกับ Store Procedure ได้ง่ายขึ้น ^^ ดีใจจังเลย
Tuesday, August 15, 2006
PHP สำหรับ .net
วันนี้อ่าน Blog ใน Thaidev.org แล้วเผอิญไปเห็นว่าในเวบของ CodePlex
บอกว่ามีโปรเจคนึงที่จะทำให้เราสามารถใช้ PHP ได้ใน .net Framework
Ref :: PHP For .net Framework
บอกว่ามีโปรเจคนึงที่จะทำให้เราสามารถใช้ PHP ได้ใน .net Framework
Ref :: PHP For .net Framework
Saturday, August 12, 2006
การ Set Java ClassPath
วันนี้เจอปัญหาใหม่ๆ . . . เกี่ยวกับ Java ClassPath เลยได้คำตอบมาจาก Narisa แต่แปลกดีนะ
บางเครื่องต้องทำ บางเครื่องไม่ต้องทำ . . . . Sun ทำไมไม่ออกแบบให้มันติดตั้งง่ายกว่านี้นะ ไม่เข้าใจ
จริงๆ
การ Set Classpath ของ Java
บางเครื่องต้องทำ บางเครื่องไม่ต้องทำ . . . . Sun ทำไมไม่ออกแบบให้มันติดตั้งง่ายกว่านี้นะ ไม่เข้าใจ
จริงๆ
การ Set Classpath ของ Java
Friday, August 11, 2006
Embled Windows Media Player in HTML
ตัวอย่างการฝัง Windows Media Player เข้าไปในเวบ เพื่อใช้สำหรับทำวิทยุออนไลน์
หรือฟังเพลงออนไลน์ ^-^
Refer :
http://www.mioplanet.com/rsc/embed_mediaplayer.htm
หรือฟังเพลงออนไลน์ ^-^
Refer :
http://www.mioplanet.com/rsc/embed_mediaplayer.htm
ช่วงนี้เห็นมีคนที่ใช้ Windows แบบ Pantip License อยู่ แล้วดันทะลึ่งไป Update : Windows Genuine Advantage
คราวนี้ . . . ก็ติดไอ่ตัวเตือนว่า ใช้ Windows เถื่อน - -''
ความจริงวิธีนี้ของ Microsoft ก็ทำให้ผู้ใช้หลายๆคนได้รู้ว่า . . ตัวพวกเขากำลังใช้ Software เถื่อนอยู่ . . .
สำหรับวิธีแก้ ให้ทำดังต่อไปนี้
HKEY_LOCAL_MACHINE -> SOFTWARE -> MICROSOFT -> ..
WindowsNT -> CurrentVersion -> WinLogon -> Notify
พอถึงตรงนี้ให้ลองหา . . Folder ชื่อ wgalogon
แล้วลบมันทิ้งไปซะ - -''
คราวนี้ก็ไปปิด Auto Update ให้เป็น Disable ซะแล้วก็ลบ system restore ด้วยล่ะ
เรียบร้อยแล้ว ^^
คราวนี้ . . . ก็ติดไอ่ตัวเตือนว่า ใช้ Windows เถื่อน - -''
ความจริงวิธีนี้ของ Microsoft ก็ทำให้ผู้ใช้หลายๆคนได้รู้ว่า . . ตัวพวกเขากำลังใช้ Software เถื่อนอยู่ . . .
สำหรับวิธีแก้ ให้ทำดังต่อไปนี้
HKEY_LOCAL_MACHINE -> SOFTWARE -> MICROSOFT -> ..
WindowsNT -> CurrentVersion -> WinLogon -> Notify
พอถึงตรงนี้ให้ลองหา . . Folder ชื่อ wgalogon
แล้วลบมันทิ้งไปซะ - -''
คราวนี้ก็ไปปิด Auto Update ให้เป็น Disable ซะแล้วก็ลบ system restore ด้วยล่ะ
เรียบร้อยแล้ว ^^
Friday, July 28, 2006
C# Connect To SQLite3
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestSQLite
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string ConStr = "Data Source=Stamp;Version=3;Compress=YES";
private void Form1_Load(object sender, EventArgs e)
{
//string SET = "INSERT INTO TbStamp VALUES('455320117','เอกชัย ทุมจินดา')";
string GET = "SELECT * FROM TbStamp";
SQLiteConnection Conn = new SQLiteConnection(ConStr);
Conn.Open();
//SQLiteCommand sqlCom = new SQLiteCommand(SET, Conn);
//sqlCom.ExecuteNonQuery();
SQLiteCommand Command = new SQLiteCommand(GET, Conn);
SQLiteDataReader dbRead = Command.ExecuteReader();
while (dbRead.Read())
{
MessageBox.Show(dbRead["sid"].ToString(), "คำเตือน");
MessageBox.Show(dbRead["name"].ToString(), "คำเตือน");
}
}
}
}
จากตัวอย่างด้านบนเป็น SourceCode การใช้ C# เชื่อมต่อกับฐานข้อมูลที่สร้างโดย SQLite รุ่น 3
** Note กันลืมครับ ^-^
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestSQLite
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string ConStr = "Data Source=Stamp;Version=3;Compress=YES";
private void Form1_Load(object sender, EventArgs e)
{
//string SET = "INSERT INTO TbStamp VALUES('455320117','เอกชัย ทุมจินดา')";
string GET = "SELECT * FROM TbStamp";
SQLiteConnection Conn = new SQLiteConnection(ConStr);
Conn.Open();
//SQLiteCommand sqlCom = new SQLiteCommand(SET, Conn);
//sqlCom.ExecuteNonQuery();
SQLiteCommand Command = new SQLiteCommand(GET, Conn);
SQLiteDataReader dbRead = Command.ExecuteReader();
while (dbRead.Read())
{
MessageBox.Show(dbRead["sid"].ToString(), "คำเตือน");
MessageBox.Show(dbRead["name"].ToString(), "คำเตือน");
}
}
}
}
จากตัวอย่างด้านบนเป็น SourceCode การใช้ C# เชื่อมต่อกับฐานข้อมูลที่สร้างโดย SQLite รุ่น 3
** Note กันลืมครับ ^-^
Thursday, July 13, 2006
ปณิธานใหม่ๆ
ต่อจากนี้จะไม่มาทำงานสาย หรือถ้าจะต้องสายก็ให้มันจำเป็นต้องสายจริงๆ
แล้วก็จะพยายามพัฒนาความสามารถตัวเอง ให้มีมากขึ้นเรื่อยๆ . . . . .
วันนี้โหลด EBook มาใหม่จากเวบไซต์ความจริงแล้วเราเองก็มี EBook อยู่เยอะ
แต่ไม่ค่อยได้อ่านจนครบส่วนมากจะอ่านเป็นเพียงบางหัวข้อเท่านั้น
วันนี้เช้าเลยปริ้นท์ E-Book ของ Java Webservices มาอ่านเอากันตั้งแต่บทแรก
แต่ไม่รู้จะจบเมื่อไร . . .
ช่วงนี้ความสนใจด้านกรรมวิธีการออกแบบระบบคอมฯ และ ระบบฐานข้อมูล รวมถึง
วิธีการสร้างเวบแบบ AJAX ก็เป็นหัวข้อที่สนใจ
ยังไงซะก่อนจะกลางปีหน้าก็ควรจะรู้ตัวเองได้แล้วว่าชอบงานด้านไหนกันแน่ ^^
แล้วก็จะพยายามพัฒนาความสามารถตัวเอง ให้มีมากขึ้นเรื่อยๆ . . . . .
วันนี้โหลด EBook มาใหม่จากเวบไซต์ความจริงแล้วเราเองก็มี EBook อยู่เยอะ
แต่ไม่ค่อยได้อ่านจนครบส่วนมากจะอ่านเป็นเพียงบางหัวข้อเท่านั้น
วันนี้เช้าเลยปริ้นท์ E-Book ของ Java Webservices มาอ่านเอากันตั้งแต่บทแรก
แต่ไม่รู้จะจบเมื่อไร . . .
ช่วงนี้ความสนใจด้านกรรมวิธีการออกแบบระบบคอมฯ และ ระบบฐานข้อมูล รวมถึง
วิธีการสร้างเวบแบบ AJAX ก็เป็นหัวข้อที่สนใจ
ยังไงซะก่อนจะกลางปีหน้าก็ควรจะรู้ตัวเองได้แล้วว่าชอบงานด้านไหนกันแน่ ^^
Tuesday, July 04, 2006
วิธีสร้าง Logo ของเราใน System Info
วันนี้ผมได้เจอวิธีการสร้าง Logo ของเราเองใส่ไว้ใน System Info โดยวิธีการนี้
ผมได้ทดลองใน MS Windows XP แล้วก็ได้ผลครับ
วิธีการสร้างมีดังนี้ครับ
เราต้องสร้าง File ขึ้นมา 2 File โดยตั้งชื่อดังนี้
- OEMINFO.INI = เป็น file สำหรับใส่ข้อมูลต่างๆเกี่ยวกับคอมพิวเตอร์
- OEMLOGO.BMP = เป็นรูปภาพที่จะใช้แสดง
[ OEMLOGO.BMP ]
จะต้องมีขนาด 170 * 110 โดยประมาณ และมีนามสกุลเป็น .BMP และต้องเก็บแบ 256 สี
[ OEMINFO.INI ]
[General]
Manufacturer= Fazz Inc. Super Computer Design
Model= 5520
[Support Information]
Line1="For technical Support Contact: John Barnett
Line2="Telephone: xxxxx.xxxxxx"
จะต้องมีข้อมูลดังด้านบน ( รายละเอียดให้หาดูใน Google ต่อไป )
#####################################
อีกวิธีที่เจอคือการสร้าง account ไม่ให้ผู้ใช้ทั่วไปทราบ ทำได้โดย add user
ผ่านคำสั่ง control userpasswords2
แต่เงื่อนไขคือ เราคงต้องเปลี่ยนวิธีการ Login เป็นการเอา Welcome Screen
ออกแล้ว Login แบบ Secure mode แทนครับ ^^
ผมได้ทดลองใน MS Windows XP แล้วก็ได้ผลครับ
วิธีการสร้างมีดังนี้ครับ
เราต้องสร้าง File ขึ้นมา 2 File โดยตั้งชื่อดังนี้
- OEMINFO.INI = เป็น file สำหรับใส่ข้อมูลต่างๆเกี่ยวกับคอมพิวเตอร์
- OEMLOGO.BMP = เป็นรูปภาพที่จะใช้แสดง
[ OEMLOGO.BMP ]
จะต้องมีขนาด 170 * 110 โดยประมาณ และมีนามสกุลเป็น .BMP และต้องเก็บแบ 256 สี
[ OEMINFO.INI ]
[General]
Manufacturer= Fazz Inc. Super Computer Design
Model= 5520
[Support Information]
Line1="For technical Support Contact: John Barnett
Line2="Telephone: xxxxx.xxxxxx"
จะต้องมีข้อมูลดังด้านบน ( รายละเอียดให้หาดูใน Google ต่อไป )
#####################################
อีกวิธีที่เจอคือการสร้าง account ไม่ให้ผู้ใช้ทั่วไปทราบ ทำได้โดย add user
ผ่านคำสั่ง control userpasswords2
แต่เงื่อนไขคือ เราคงต้องเปลี่ยนวิธีการ Login เป็นการเอา Welcome Screen
ออกแล้ว Login แบบ Secure mode แทนครับ ^^
Thursday, June 29, 2006
วันแห่งการตัดสินใจ
จั่วหัวไว้แบบนี้ จริงๆก็ไม่ได้ตัดสินใจอะไรที่มันสำคัญหรอก . . . เพียงแต่เริ่มมาคิดว่าคงถึงเวลาสักทีสินะ
ที่จะเลือกภาษาคอมพิวเตอร์ ที่เราถนัดในแต่ละด้านจริงๆสักที เอาแบบที่น่าจะเหมาะสมที่สุด
ตอนนี้ตัวเลือกที่เหลือหลังจากตัดนู่น ตัดนี่ทิ้งไปหลายอันแล้วก็เหลือดังนี้
ภาษาที่จะใช้สำหรับ Web App
- JSP ก็เพราะรันได้ทุก Platform และยังมี class จาก Java ให้ใช้ด้วย
- PHP ก็เพราะมันฟรี และก็คล้ายๆกับ C ซึ่งจริงๆแล้ว PHP นี่ก็พอเขียนได้อยู่แล้ว
ภาษาที่จะใช้สำหรับ Win App
- Cpp มันทำงานเร็วดี และก็คุมทุกอย่างได้ดี แต่จริงๆแล้ว ก็ไม่ค่อยถนัดนักเพราะส่วนตัวคิดว่าเขียนยากจัง
และถ้าหากต้องการให้ cross platform ต้องใช้ widgets แต่ถ้า MFC คงง่ายกว่าแต่ก็แพงอีก
- Java รันได้ทุก Platform และก็มี IDE ฟรีๆ ดีๆ อย่าง netbean และ eclipse แถมด้วย report ฟรีๆ
- VB ก็เพราะมันโคตรจะ productivity เลยอ่ะนะ . . . ใช้เขียนโปรแกรมได้เร็วมากๆ ถึงจะไม่ถนัดแต่ไม่ยาก
ถ้าคิดจะไปศึกษา แต่ก็อีกมันเสียเงินค่อนข้างแพง - -''
- C# อันนี้ก็ดีนะ Compatible กับเครื่องที่รัน ได้ดีกับ Windows เขียนเป็นที่สุดในสี่ตัว .. ก็เรียนจบมาด้วย C#
ถ้าจะใช้ฟรีก็มี IDE อย่าง VC# ในรุ่น Express Edition ให้ใช้ แต่มันไม่มี Report นี่ดิ๊
ระบบบฐานข้อมูล
- Access ใช้บ่อยมันง่ายดี ( แต่เสียเงิน แพงอีกแหละ )
- mysql ฟรีแวร์ดีดี ซึ่งไม่ค่อยมั่นใจว่าถ้าใช้ทำ commercial software จะต้องจ่ายเงินให้หรือเปล่า
แต่คิดว่าไม่น่าจะต้องเสียเงินนะ . .. และก็ได้ทุก platform
- oracle 10g ฟรีแวร์ ( รุ่น express edition ) ยังไม่ได้ใช้เลยจะหัดใช้อยู่ ได้ทุก platform ด้วย
- ms sql express edition แจกฟรีจาก MS เหมือนกัน เค้าว่าดี เสียตรงอยู่แค่ตรง windows
สรุป
ความจริงที่เลือกไว้ก็คือสิ่งที่คิดว่าจะศึกษาแหละนะ แต่ก็อีกนั่นแหละ . . . มันก็ยังขึ้นกับอีกหลายๆอย่าง
ความจริงตอนทำงานที่ทำงานก็ต้องเลือกสิ่งที่จำเป็นต้องเลือก เวลาส่งงานลูกค้าก็ตามใจผู้จ้าง
แต่สิ่งที่เราเลือกจะนำไปใช้จริงๆก็แค่ตอนที่จะทำงานเก็บไว้ขาย ซึ่งก็คงจะเหมาะสมกว่าถ้าเลือกใช้ของที่
เป็นฟรีแวร์มาผลิต เพราะเวลาขายเราจะได้ไม่ต้องไปจ่ายค่าลิขสิทธเครื่องมือพัฒนา . . .
แล้วเอาไว้พอเอาไปหากินได้เยอะๆ ก็ค่อย Donate ผ่านไปก็ได้ มั้ง . . . .
ที่จะเลือกภาษาคอมพิวเตอร์ ที่เราถนัดในแต่ละด้านจริงๆสักที เอาแบบที่น่าจะเหมาะสมที่สุด
ตอนนี้ตัวเลือกที่เหลือหลังจากตัดนู่น ตัดนี่ทิ้งไปหลายอันแล้วก็เหลือดังนี้
ภาษาที่จะใช้สำหรับ Web App
- JSP ก็เพราะรันได้ทุก Platform และยังมี class จาก Java ให้ใช้ด้วย
- PHP ก็เพราะมันฟรี และก็คล้ายๆกับ C ซึ่งจริงๆแล้ว PHP นี่ก็พอเขียนได้อยู่แล้ว
ภาษาที่จะใช้สำหรับ Win App
- Cpp มันทำงานเร็วดี และก็คุมทุกอย่างได้ดี แต่จริงๆแล้ว ก็ไม่ค่อยถนัดนักเพราะส่วนตัวคิดว่าเขียนยากจัง
และถ้าหากต้องการให้ cross platform ต้องใช้ widgets แต่ถ้า MFC คงง่ายกว่าแต่ก็แพงอีก
- Java รันได้ทุก Platform และก็มี IDE ฟรีๆ ดีๆ อย่าง netbean และ eclipse แถมด้วย report ฟรีๆ
- VB ก็เพราะมันโคตรจะ productivity เลยอ่ะนะ . . . ใช้เขียนโปรแกรมได้เร็วมากๆ ถึงจะไม่ถนัดแต่ไม่ยาก
ถ้าคิดจะไปศึกษา แต่ก็อีกมันเสียเงินค่อนข้างแพง - -''
- C# อันนี้ก็ดีนะ Compatible กับเครื่องที่รัน ได้ดีกับ Windows เขียนเป็นที่สุดในสี่ตัว .. ก็เรียนจบมาด้วย C#
ถ้าจะใช้ฟรีก็มี IDE อย่าง VC# ในรุ่น Express Edition ให้ใช้ แต่มันไม่มี Report นี่ดิ๊
ระบบบฐานข้อมูล
- Access ใช้บ่อยมันง่ายดี ( แต่เสียเงิน แพงอีกแหละ )
- mysql ฟรีแวร์ดีดี ซึ่งไม่ค่อยมั่นใจว่าถ้าใช้ทำ commercial software จะต้องจ่ายเงินให้หรือเปล่า
แต่คิดว่าไม่น่าจะต้องเสียเงินนะ . .. และก็ได้ทุก platform
- oracle 10g ฟรีแวร์ ( รุ่น express edition ) ยังไม่ได้ใช้เลยจะหัดใช้อยู่ ได้ทุก platform ด้วย
- ms sql express edition แจกฟรีจาก MS เหมือนกัน เค้าว่าดี เสียตรงอยู่แค่ตรง windows
สรุป
ความจริงที่เลือกไว้ก็คือสิ่งที่คิดว่าจะศึกษาแหละนะ แต่ก็อีกนั่นแหละ . . . มันก็ยังขึ้นกับอีกหลายๆอย่าง
ความจริงตอนทำงานที่ทำงานก็ต้องเลือกสิ่งที่จำเป็นต้องเลือก เวลาส่งงานลูกค้าก็ตามใจผู้จ้าง
แต่สิ่งที่เราเลือกจะนำไปใช้จริงๆก็แค่ตอนที่จะทำงานเก็บไว้ขาย ซึ่งก็คงจะเหมาะสมกว่าถ้าเลือกใช้ของที่
เป็นฟรีแวร์มาผลิต เพราะเวลาขายเราจะได้ไม่ต้องไปจ่ายค่าลิขสิทธเครื่องมือพัฒนา . . .
แล้วเอาไว้พอเอาไปหากินได้เยอะๆ ก็ค่อย Donate ผ่านไปก็ได้ มั้ง . . . .
Wednesday, June 28, 2006
Exthreme Programming
ตอนนี้ผมก็งดรับงานนอกทุกอย่าง ทำแต่งานที่ได้รับมอบหมายมาในแผนก . . รูปแบบงานทั่วไปคือตัวเนื้องานถือว่าไม่ยาก
แต่ว่าก็มีปัญหาตรงผู้ใช้ ให้ข้อมูลได้ไม่ถูกต้องเหมือนบางที ก็รู้สึกว่าจริงๆแล้วเค้าก็ไม่รู้ว่าเค้ากำลังทำอะไรอยู่กันแน่
ตอนนี้เป็นช่วงที่ผมรู้สึกว่าอยากจะหยุดพักโดยทำงานเช้ากลับบ้านเย็น แล้วใช้ชีวิตของเรา ให้เหมือนเป็นชีวิตของเรา
โดยไม่ต้องขวนขวายพยายามหาเงิน เหมือนที่เคยคิดไว้ก่อนหน้านี้
มันอาจจะไม่ดีนักที่ผมมาคิดตอนนี้เพราะผมเองก็ตัดสินใจทิ้งงานที่รับมาสองงาน เพื่อความต้องการส่วนตัวของผมตรงนี้
แต่ผมจะถือว่า นี่ คือการยอมเสีย เพื่อจะเริ่มต้นใหม่อีกครั้งในแบบที่ดีกว่าเดิม มีจุดยืนมากกว่าเก่า
ขอเวลาถึงสิ้นเดือน ตุลาคม . . .
#########################################################
เมื่อสมัยเรียน เคยนึกสงสัยตอนวิชา System Analyst ว่าทำไมนะ WaterFall Model ที่เค้าสอนเรามันดูแล้วรู้สึกว่า
เหมือน infinity loop ชอบกล วันนึงเคยไปอ่านเจอในกระทู้ว่า วันส่งโปรแกรม คือ จุดเริ่มต้นสำหรับผู้ใช้
มันก็จริง . . . คิดแล้วมันอ่อนใจ ผมก็คิดแล้วคิดอีกด้วยตัวผมเองพยายามจะให้การวิเคราะห์และออกแบบระบบของตัวเองมี Pattern
เป็นของตัวเราเอง . . . แต่แล้วจนมาวันนึงได้มีโอกาสอ่านบทความเกี่ยวกับ Exthreme Programming ก็เกิดติดใจขึ้นมาเลย
ว่านี่ น่าจะเป็นวิธีที่ทำให้ ผู้ใช้ และ โปรแกรมเมอร์ มีวันจบโปรเจค วันเดียวกัน และ ให้ผู้ใช้บอกความต้องการตัวเองออกมาได้ก่อนโปรเจค
จะเสร็จแล้วส่งมอบ แต่หลังจากอ่านเงื่อนไขหลายๆอย่างแล้วผมก็คิดว่า มันคงเอามาใช้ได้ไม่หมดหรอก สุดท้ายไม่ว่าจะเป็นทฤษฏีใดๆ
เราก็คงจะต้องเลือกใช้ และ เลือกมองข้าม ตามความเหมาะสมอยู่ดี
แต่ว่าก็มีปัญหาตรงผู้ใช้ ให้ข้อมูลได้ไม่ถูกต้องเหมือนบางที ก็รู้สึกว่าจริงๆแล้วเค้าก็ไม่รู้ว่าเค้ากำลังทำอะไรอยู่กันแน่
ตอนนี้เป็นช่วงที่ผมรู้สึกว่าอยากจะหยุดพักโดยทำงานเช้ากลับบ้านเย็น แล้วใช้ชีวิตของเรา ให้เหมือนเป็นชีวิตของเรา
โดยไม่ต้องขวนขวายพยายามหาเงิน เหมือนที่เคยคิดไว้ก่อนหน้านี้
มันอาจจะไม่ดีนักที่ผมมาคิดตอนนี้เพราะผมเองก็ตัดสินใจทิ้งงานที่รับมาสองงาน เพื่อความต้องการส่วนตัวของผมตรงนี้
แต่ผมจะถือว่า นี่ คือการยอมเสีย เพื่อจะเริ่มต้นใหม่อีกครั้งในแบบที่ดีกว่าเดิม มีจุดยืนมากกว่าเก่า
ขอเวลาถึงสิ้นเดือน ตุลาคม . . .
#########################################################
เมื่อสมัยเรียน เคยนึกสงสัยตอนวิชา System Analyst ว่าทำไมนะ WaterFall Model ที่เค้าสอนเรามันดูแล้วรู้สึกว่า
เหมือน infinity loop ชอบกล วันนึงเคยไปอ่านเจอในกระทู้ว่า วันส่งโปรแกรม คือ จุดเริ่มต้นสำหรับผู้ใช้
มันก็จริง . . . คิดแล้วมันอ่อนใจ ผมก็คิดแล้วคิดอีกด้วยตัวผมเองพยายามจะให้การวิเคราะห์และออกแบบระบบของตัวเองมี Pattern
เป็นของตัวเราเอง . . . แต่แล้วจนมาวันนึงได้มีโอกาสอ่านบทความเกี่ยวกับ Exthreme Programming ก็เกิดติดใจขึ้นมาเลย
ว่านี่ น่าจะเป็นวิธีที่ทำให้ ผู้ใช้ และ โปรแกรมเมอร์ มีวันจบโปรเจค วันเดียวกัน และ ให้ผู้ใช้บอกความต้องการตัวเองออกมาได้ก่อนโปรเจค
จะเสร็จแล้วส่งมอบ แต่หลังจากอ่านเงื่อนไขหลายๆอย่างแล้วผมก็คิดว่า มันคงเอามาใช้ได้ไม่หมดหรอก สุดท้ายไม่ว่าจะเป็นทฤษฏีใดๆ
เราก็คงจะต้องเลือกใช้ และ เลือกมองข้าม ตามความเหมาะสมอยู่ดี
Friday, May 19, 2006
FreeBSD 6.0 เป็นคำตอบสุดท้าย
หลังจากที่ Blog ก่อนพล่ามเรื่อง Linux ไปนาน . . . . สุดท้ายก็ตัดสินใจเลือก OS
ที่จะนำมาทำเป็น Server ได้ละ นั่นก็คือ FreeBSD 6.0 น่ะเอง . .
แบบว่าชอบเป็นการส่วนตัวเนื่องจาก Mascot ที่น่ารักมากๆเลย . . . และแหล่งข้อมูล
รวมถึงความขึ้นชื่อด้านความเสถียร และที่สำคัญเป็น Unix และ Free
ตอนนี้กำลังอยู่ในช่วงการติดตั้ง Services พอทำเสร็จหมดแล้วจะมาเขียนอีกที
ที่จะนำมาทำเป็น Server ได้ละ นั่นก็คือ FreeBSD 6.0 น่ะเอง . .
แบบว่าชอบเป็นการส่วนตัวเนื่องจาก Mascot ที่น่ารักมากๆเลย . . . และแหล่งข้อมูล
รวมถึงความขึ้นชื่อด้านความเสถียร และที่สำคัญเป็น Unix และ Free
ตอนนี้กำลังอยู่ในช่วงการติดตั้ง Services พอทำเสร็จหมดแล้วจะมาเขียนอีกที
Wednesday, May 17, 2006
Roadmap ประจำปี 2006
วันนี้ช่วงบ่าย เกิด Idea ขึ้นมาจากคำถามในเวบ http://www.ubuntuclub.com/ ว่า
"คุณจะทำอะไรเพื่อ Opensource ได้บ้าง" ในฐานะที่ตัวเราเองก็เป็นคนในสาย IT ที่ก็ใช้ประโยชน์
จาก Opensource Project อยู่เหมือนกัน เลยคิดว่า "นั่นสิ . . . จะทำอะไรดีนะ"
แต่ก็นั่นแหละ ด้วยที่ตัวเองก็ไม่ได้สันทัดและแม่นยำในภาษาอังกฤษในระดับดี ( ก็แค่พอใช้ )
และก็ไม่ได้เก่งด้านระบบปฏิบัติการทางฝั่ง Opensource สักเท่าไหร่ . . . เพราะสายงาน
ปกติเป็นการพัฒนาโปรแกรม ซึ่งก็จะใช้พวก IDE อย่างเช่น Visual Studio.net และ
Visual Studio 6 เพื่อพัฒนาใช้ในองค์กร . . . ทำให้ไม่มีโอกาสและไม่สบโอกาสที่จะ
หันมาใช้ Product ของทางฝั่ง Opensource อย่างจริงๆจัง ถึงจะสนใจอยู่ก็ตาม
แต่ก็นั่นแหละ เงื่อนไขต่างๆ นาๆ ที่เป็นข้ออ้างในการที่จะเลือกละเมิดทรัพย์สินทางปัญญาของผู้อื่น
ผมเองก็ตัดสินใจแล้วว่าจะเลิกใช้ซอฟต์แวร์ผิดกฏหมายเสียที แต่คราวนี้ก็คงจะต้องใช้ระยะเวลาสัก
ระยะหนึ่ง ในการศึกษาหาความรู้ต่อไป . .
โปรแกรมของทางกลุ่ม Opensource ที่มีแจกจ่ายให้ใช้ในปัจจุบันมีหลายประเภท ทั้ง OS , Utility , Graphic , Dev tool
etc.. ตัวอย่างของโปรเจคที่ผมให้ความสนใจมีดังนี้
- ระบบปฏิบัติการ
FreeBSD 6.0 ผมคิดว่าเหมาะสำหรับทำ Server มากกว่า Desktop
kubuntu 5.10 เป็น OS ที่ออกมาเพื่อเน้นการใช้งานระดับ Desktop แต่ทำเป็น Server ก็ได้
Fedora Core 5 เป็น Linux ของฝั่ง Redhat ที่ออกมาให้ใช้ฟรีๆ . . ที่สนใจเพราะเห็น Docs ที่เป็นไทยเยอะ
- โปรแกรมสำหรับพัฒนาโปรแกรม ( IDE )
Netbeans 5.x ( สำหรับพัฒนาโปรแกรมด้วยภาษา Java จากทาง Sun ) น่าสนใจครับแต่ใช้ไม่เป็น ...
Eclipse ใช้พัฒนาโปรแกรมด้วยภาษา Java และยังมี mod อีกมากมายให้ใช้
- โปรแกรมชุดสำนักงาน
OpenOffice 2 ก็คล้ายๆกับ Ms Office แต่ดูจะไม่สามารถแทนที่ได้หรอก แค่พอใช้ทดแทนกันได้ในบางจุด
ด้วยทรัพยากรที่ผมพอจะมีในปัจจุบันนี้ คือ ผมมี Domainname ที่จดไว้แต่ไม่ได้ใช้ประโยชน์ และ มี Hosting ที่เช่าไว้พร้อมจดโดเมน
และยังไม่ได้ใช้ประโยชน์ใดๆ ทำให้ผมตัดสินใจแล้วว่าจะทำ Opensource community สักอันนึง ซึ่งคงไม่หวังจะดังแต่น่าจะนำมาใช้ทำเป็น
ฐานข้อมูลความรู้จากการทดลอง ในระดับมือใหม่ อย่างที่ผมกำลังจะหัดใช้งานอยู่ และทำเป็น Article เก็บไว้เผื่อจะมีประโยชน์ ต่อตัวผมเองและผู้ที่คิด
จะหันมาใช้งาน Opensource Product อย่างจริงๆจังๆ
รวมไปถึงผมคิดจะพัฒนาโปรแกรมเล็กๆ ง่ายๆ แจกให้ผู้ใช้ได้ใช้ ทั้งแบบที่ใช้บริการผ่านเวบ และ ดาวโหลดไปใช้ในเครื่องคอมพิวเตอร์ . . . แต่ก็คง
จะต้องดูกันต่อไปว่า จะไปได้ถึงไหนกัน . . .
ท้ายที่สุด ผมคงต้องไปศึกษาข้อมูลเกี่ยวกับ Linux และ Application ต่างๆบน Linux เพื่อใช้งาน . . และบันทึกสิ่งที่เรียนรู้จากมันมาลงเวบ
ขอให้ผมทำสำเร็จด้วยเถอะ . . . กลัวแพ้ใจตัวเองจริงๆ
"คุณจะทำอะไรเพื่อ Opensource ได้บ้าง" ในฐานะที่ตัวเราเองก็เป็นคนในสาย IT ที่ก็ใช้ประโยชน์
จาก Opensource Project อยู่เหมือนกัน เลยคิดว่า "นั่นสิ . . . จะทำอะไรดีนะ"
แต่ก็นั่นแหละ ด้วยที่ตัวเองก็ไม่ได้สันทัดและแม่นยำในภาษาอังกฤษในระดับดี ( ก็แค่พอใช้ )
และก็ไม่ได้เก่งด้านระบบปฏิบัติการทางฝั่ง Opensource สักเท่าไหร่ . . . เพราะสายงาน
ปกติเป็นการพัฒนาโปรแกรม ซึ่งก็จะใช้พวก IDE อย่างเช่น Visual Studio.net และ
Visual Studio 6 เพื่อพัฒนาใช้ในองค์กร . . . ทำให้ไม่มีโอกาสและไม่สบโอกาสที่จะ
หันมาใช้ Product ของทางฝั่ง Opensource อย่างจริงๆจัง ถึงจะสนใจอยู่ก็ตาม
แต่ก็นั่นแหละ เงื่อนไขต่างๆ นาๆ ที่เป็นข้ออ้างในการที่จะเลือกละเมิดทรัพย์สินทางปัญญาของผู้อื่น
ผมเองก็ตัดสินใจแล้วว่าจะเลิกใช้ซอฟต์แวร์ผิดกฏหมายเสียที แต่คราวนี้ก็คงจะต้องใช้ระยะเวลาสัก
ระยะหนึ่ง ในการศึกษาหาความรู้ต่อไป . .
โปรแกรมของทางกลุ่ม Opensource ที่มีแจกจ่ายให้ใช้ในปัจจุบันมีหลายประเภท ทั้ง OS , Utility , Graphic , Dev tool
etc.. ตัวอย่างของโปรเจคที่ผมให้ความสนใจมีดังนี้
- ระบบปฏิบัติการ
FreeBSD 6.0 ผมคิดว่าเหมาะสำหรับทำ Server มากกว่า Desktop
kubuntu 5.10 เป็น OS ที่ออกมาเพื่อเน้นการใช้งานระดับ Desktop แต่ทำเป็น Server ก็ได้
Fedora Core 5 เป็น Linux ของฝั่ง Redhat ที่ออกมาให้ใช้ฟรีๆ . . ที่สนใจเพราะเห็น Docs ที่เป็นไทยเยอะ
- โปรแกรมสำหรับพัฒนาโปรแกรม ( IDE )
Netbeans 5.x ( สำหรับพัฒนาโปรแกรมด้วยภาษา Java จากทาง Sun ) น่าสนใจครับแต่ใช้ไม่เป็น ...
Eclipse ใช้พัฒนาโปรแกรมด้วยภาษา Java และยังมี mod อีกมากมายให้ใช้
- โปรแกรมชุดสำนักงาน
OpenOffice 2 ก็คล้ายๆกับ Ms Office แต่ดูจะไม่สามารถแทนที่ได้หรอก แค่พอใช้ทดแทนกันได้ในบางจุด
ด้วยทรัพยากรที่ผมพอจะมีในปัจจุบันนี้ คือ ผมมี Domainname ที่จดไว้แต่ไม่ได้ใช้ประโยชน์ และ มี Hosting ที่เช่าไว้พร้อมจดโดเมน
และยังไม่ได้ใช้ประโยชน์ใดๆ ทำให้ผมตัดสินใจแล้วว่าจะทำ Opensource community สักอันนึง ซึ่งคงไม่หวังจะดังแต่น่าจะนำมาใช้ทำเป็น
ฐานข้อมูลความรู้จากการทดลอง ในระดับมือใหม่ อย่างที่ผมกำลังจะหัดใช้งานอยู่ และทำเป็น Article เก็บไว้เผื่อจะมีประโยชน์ ต่อตัวผมเองและผู้ที่คิด
จะหันมาใช้งาน Opensource Product อย่างจริงๆจังๆ
รวมไปถึงผมคิดจะพัฒนาโปรแกรมเล็กๆ ง่ายๆ แจกให้ผู้ใช้ได้ใช้ ทั้งแบบที่ใช้บริการผ่านเวบ และ ดาวโหลดไปใช้ในเครื่องคอมพิวเตอร์ . . . แต่ก็คง
จะต้องดูกันต่อไปว่า จะไปได้ถึงไหนกัน . . .
ท้ายที่สุด ผมคงต้องไปศึกษาข้อมูลเกี่ยวกับ Linux และ Application ต่างๆบน Linux เพื่อใช้งาน . . และบันทึกสิ่งที่เรียนรู้จากมันมาลงเวบ
ขอให้ผมทำสำเร็จด้วยเถอะ . . . กลัวแพ้ใจตัวเองจริงๆ
Monday, May 15, 2006
AJAX คืออะไร ( เบื้องต้น )
เรื่องยอดนิยมเกี่ยวกับการพัฒนาโปรแกรมบนเวบไซต์ ในขณะนี้คงหนีไม่พ้น AJAX ซึ่งดังมากในต่างประเทศ
และก็เริ่มมีการกล่าวถึงแล้ว ในบ้านเรา . . .
AJAX เป็นรูปแบบการเขียนโปรแกรมบนเว็บที่นำ JavaScript มาใช้ร่วมกับ XMLHttpRequest
ซึ่งสามารถใช้ได้กับทุกภาษาที่ใช้ในการพัฒนาโปรแกรมโดยมีข้อจำกัดในการใช้ดังนี้
Server : ต้องรองรับ XML , XMLHttpRequest , PHP or ASP or ASP.net or JSP ... etc...
Client : ต้องรองรับ JavaScript
โดยปัจจุบันก็มี Framework ต่างๆเกี่ยวกับ ajax สำหรับภาษาต่างๆออกมามากมายแล้วแต่ Developer
จะเลือกมาใช้งาน
Ajax ย่อมากจาก Asynchronous JavaScript and XmlHttpRequest
แต่ที่จริงแล้ว Ajax ไม่ใช้ของใหม่อะไร . . . .
( ช่วงนี้กำลังศึกษา ajax แต่คงต้องกลับไปศึกษา Javascrip , dom , CSS , xml สักพักจะมาเขียนต่อ
และก็เริ่มมีการกล่าวถึงแล้ว ในบ้านเรา . . .
AJAX เป็นรูปแบบการเขียนโปรแกรมบนเว็บที่นำ JavaScript มาใช้ร่วมกับ XMLHttpRequest
ซึ่งสามารถใช้ได้กับทุกภาษาที่ใช้ในการพัฒนาโปรแกรมโดยมีข้อจำกัดในการใช้ดังนี้
Server : ต้องรองรับ XML , XMLHttpRequest , PHP or ASP or ASP.net or JSP ... etc...
Client : ต้องรองรับ JavaScript
โดยปัจจุบันก็มี Framework ต่างๆเกี่ยวกับ ajax สำหรับภาษาต่างๆออกมามากมายแล้วแต่ Developer
จะเลือกมาใช้งาน
Ajax ย่อมากจาก Asynchronous JavaScript and XmlHttpRequest
แต่ที่จริงแล้ว Ajax ไม่ใช้ของใหม่อะไร . . . .
( ช่วงนี้กำลังศึกษา ajax แต่คงต้องกลับไปศึกษา Javascrip , dom , CSS , xml สักพักจะมาเขียนต่อ
Monday, May 08, 2006
ว่ากันด้วย ฐานเงินเดือน ( จากเวบ พันทิป )
ว่ากันด้วยฐานเงินเดือนของ Developer หรือ Programmer นั่นเอง . . . จากเวบพันทิป มีคนสรุปไว้
ค่อนข้างดี และเห็นภาพได้ชัด ( ข้อมูล ณ วันที่ 8 พ.ค. 2549 )
ธรุกิจเจ้าของคนเดียว : 8K-10K No.สวัส , No.Bonus , Up 3% /Y
ธุรกิจเจ้าจองคนเดียว sw-house: 12K - 15K No.สวัสดิการณ์ . , Up 5%/Y
ธุรกิจตลาดแข่งขันสูง : 15K - 18K Up 5-10%
ธุรกิจ Finance : 15K - 20K Up 10%
ธุรกิจเจ้าของต่างชาติ : 20K - 30K Up 10%
ไปทำงานต่างชาติ : 30K - 45K วางเงินประกัน 100K หรือ อาจไม่มี , Up 10%
ใครจะยังไงไม่รู้ แต่เดี๋ยวนี้ได้เงินเดือนแค่เพียง 7630 เอง หักประกันสังคมเหลือ 7210 ( 5 5 5 )
ค่อนข้างดี และเห็นภาพได้ชัด ( ข้อมูล ณ วันที่ 8 พ.ค. 2549 )
ธรุกิจเจ้าของคนเดียว : 8K-10K No.สวัส , No.Bonus , Up 3% /Y
ธุรกิจเจ้าจองคนเดียว sw-house: 12K - 15K No.สวัสดิการณ์ . , Up 5%/Y
ธุรกิจตลาดแข่งขันสูง : 15K - 18K Up 5-10%
ธุรกิจ Finance : 15K - 20K Up 10%
ธุรกิจเจ้าของต่างชาติ : 20K - 30K Up 10%
ไปทำงานต่างชาติ : 30K - 45K วางเงินประกัน 100K หรือ อาจไม่มี , Up 10%
ใครจะยังไงไม่รู้ แต่เดี๋ยวนี้ได้เงินเดือนแค่เพียง 7630 เอง หักประกันสังคมเหลือ 7210 ( 5 5 5 )
Friday, May 05, 2006
วิธีการปิด autorun cd บน xp home และ xp pro
วันนี้กำลังใช้คอมอยู่ โดยทำการทดสอบ FreeBSD 6.0 บน Notebook ด้วย vmware
คราวนี้ระหว่างที่ลงในช่วงการติดตั้งโปรแกรมจะต้องมีการ เปลี่ยนแผ่น CD บ่อยๆ และด้วยความฉลาด
ของตัว XP Home ที่ใช้อยู่ ทำให้มันมี Dialog ขึ้นมาแสดงตลอดเวลา . . . . และด้วยความรำคาฐ
จึงได้หาวิธีในการปิด autorun cd บน xp home
วิธีปิด autorun cd บน xp pro
ทำได้โดย start -> run -> gpedit.msc -> เพื่อเรียก enable : ในส่วน turn off autorun cd
ไม่แน่ใจว่าอยู่ที่ sub ไหนของ dialog ให้ลองหาดูเอง
วิธีปิด autorun cd บน xp home
เนื่องจาก xp home ไม่มี gpedit.msc ให้ใช้งานเพราะฉะนั้นค่อนข้างจะต้องใช้ความสามารถสักหน่อยในการปิด
แต่ก็ไม่ได้ยากมากจนเกินไป สำหรับวิธีการทำก็ทำได้ด้วยวิธีการดังต่อไปนี้
1. start -> run -> regedit.exe เพื่อเรียก registry editor ขึ้นมา
2. เลือกไปที่ HKEY_Loca_Machine -> System -> CurrentControlSet -> Services -> cdrom
3. จะเห็นหน้าต่างในส่วนขวาของ regedit.exe มีไฟล์ชื่อ autorun ให้คลิกซ้ายเพื่อเลือกและคลิกขวาเพื่อเลือก modify
4. จะพบหน้าต่างชื่อ Edit DWORD value ในช่อง value data ถ้าใส่ เลข 1 จะเป็นการเลือกให้ windows ทำการ
เปิด dialog ทุกครั้งที่มีการใส่แผ่น cdrom แต่หากใส่เลข 0 จะเป็นการปิดไม่ให้ windows เปิด dialog เมื่อใส่แผ่น
แค่นี้เอง วิธีการในการปิด autorun cd dialob บน windows xp ^^
คราวนี้ระหว่างที่ลงในช่วงการติดตั้งโปรแกรมจะต้องมีการ เปลี่ยนแผ่น CD บ่อยๆ และด้วยความฉลาด
ของตัว XP Home ที่ใช้อยู่ ทำให้มันมี Dialog ขึ้นมาแสดงตลอดเวลา . . . . และด้วยความรำคาฐ
จึงได้หาวิธีในการปิด autorun cd บน xp home
วิธีปิด autorun cd บน xp pro
ทำได้โดย start -> run -> gpedit.msc -> เพื่อเรียก enable : ในส่วน turn off autorun cd
ไม่แน่ใจว่าอยู่ที่ sub ไหนของ dialog ให้ลองหาดูเอง
วิธีปิด autorun cd บน xp home
เนื่องจาก xp home ไม่มี gpedit.msc ให้ใช้งานเพราะฉะนั้นค่อนข้างจะต้องใช้ความสามารถสักหน่อยในการปิด
แต่ก็ไม่ได้ยากมากจนเกินไป สำหรับวิธีการทำก็ทำได้ด้วยวิธีการดังต่อไปนี้
1. start -> run -> regedit.exe เพื่อเรียก registry editor ขึ้นมา
2. เลือกไปที่ HKEY_Loca_Machine -> System -> CurrentControlSet -> Services -> cdrom
3. จะเห็นหน้าต่างในส่วนขวาของ regedit.exe มีไฟล์ชื่อ autorun ให้คลิกซ้ายเพื่อเลือกและคลิกขวาเพื่อเลือก modify
4. จะพบหน้าต่างชื่อ Edit DWORD value ในช่อง value data ถ้าใส่ เลข 1 จะเป็นการเลือกให้ windows ทำการ
เปิด dialog ทุกครั้งที่มีการใส่แผ่น cdrom แต่หากใส่เลข 0 จะเป็นการปิดไม่ให้ windows เปิด dialog เมื่อใส่แผ่น
แค่นี้เอง วิธีการในการปิด autorun cd dialob บน windows xp ^^
Wednesday, May 03, 2006
ปัญหาเรื่องเวลาใน PHP 5.1.2
วันนี้อ่านเจอในเวบบอร์ด . . . Narisa . . ว่า PHP 5.1.x ซึ่งที่ผมทดลองคือ PHP 5.1.2 มี Bug เรื่องเวลา
คือว่าเมื่อเราเรียกดูเวลาจากระบบด้วยคำสั่ง
PHP CODE
echo strftime('%Y-%m-%d %H:%M:%S') . "\n";
เวลาที่ปรากฏจะเพิ่มให้อีก 1 ชั่วโมง
ผลลัพธ์
2006-05-3 16:34:29
ซึ่งผลสรุปในแนวทางการแก้ปัญหาคือให้ไปใช้ ซึ่งได้คำตอบมาจาก เวบบอร์ดซึ่งนำมาจากเวบ PHP.net มาว่า
ให้เราไปเรียกใช้
date.timezone = "Asia/Bangkok"
ก็จะสามารถแสดงผลได้ตามปกติ
คือว่าเมื่อเราเรียกดูเวลาจากระบบด้วยคำสั่ง
PHP CODE
echo strftime('%Y-%m-%d %H:%M:%S') . "\n";
เวลาที่ปรากฏจะเพิ่มให้อีก 1 ชั่วโมง
ผลลัพธ์
2006-05-3 16:34:29
ซึ่งผลสรุปในแนวทางการแก้ปัญหาคือให้ไปใช้ ซึ่งได้คำตอบมาจาก เวบบอร์ดซึ่งนำมาจากเวบ PHP.net มาว่า
ให้เราไปเรียกใช้
date.timezone = "Asia/Bangkok"
ก็จะสามารถแสดงผลได้ตามปกติ
Subscribe to:
Posts (Atom)