01 December 2010

Aggregation & Composition ใน ORM

Aggregation
ความสัมพันธ์แบบ Aggregation เป็นความสัมพันธ์แบบ whole/part ซึ่งส่วน whole และ part สามารถแยกกันทำงานอย่างอิสระเช่น กล่องใส่ของเล่น กับ ตุ๊กตา ถ้าหากไม่มีกล่องใส่ของเล่นเราก็ยังเล่นตุ๊กตาได้ และหากไม่มีตุ๊กตา เราก็ยังเอากล่องใส่ของเล่นไปใส่ ของเล่นอย่างอื่นได้

สัญลักษณ์ที่ใช้ใน UML จะเป็นรูปสี่เหลี่ยมขนมเปียกปูนแบบไม่ทึบ ชีไปทาง whole (กล่องใส่ของเล่น)

Composition
เป็นความสัมพันธ์แบบ whole/part แต่ว่าถ้าหากขาด part ส่วน whole ก็ไม่สามารถทำงานได้ และถ้าไม่มี whole ก็ไม่มี part เช่นมหาวิทยาลัย(University) กับ คณะ(Department) ถ้าไม่มีมหาวิทยาลัยก็ไม่สามารถมีคณะได้ และ หากไม่มีคณะมหาลัยก็ไม่สามารถทำงานได้ เป็นต้น

สัญลักษณ์ที่ใช้ใน UML จะเป็นรูปสี่เหลี่ยมขนมเปียกปูนแบบทึบชี้ไปทาง whole (University)

29 November 2010

ความแตกต่างของ Class Object และ Instance

ลองค้นหาความแตกต่างของ Object กับ Instance ก็ไปเจอ Alfred’s Computing Weblog ซึ่งอธิบายรายละเอียดได้ เข้าใจง่ายดี เลยเอามาลงเขียนเป็นไทยๆ ดูสำหรับคนที่อยากรู้ความแตกต่างของ Class Object และก็ Instance

Object เป็น ตัวที่ห่อหุ่ม state และ behavior เอาไว้โดยมี Class เป็นพิมพ์เขียวหรือต้นแบบของ object ส่วน Instance นัันจะมีได้เพียงหนึ่งเดียวและมีรูปแบบตามคลาส

Object
หากมองในโลกแห่งความจริง Object จะมี 2 ลักษณะเฉพาะคือ state และ behavior อย่างเช่นคน จะมี state เป็น ชื่อ,อายุ และมี behavior เป็น กิน,นอน รถมี state เป็น ความเร็ว,เกียร์ที่ใช้อยู่ โดยมี behavior เป็น เบรค,เปลี่ยนเกียร์ ซึ่งหากมองในด้านของ programming แล้ว state ก็คือ field และ behavior ก็คือ method นั้นเอง

Class
class นั้นเปรียบได้กับพิมพ์เขียวที่ใช้ในการสร้าง object ซึ่งจะเก็บรวบรวม state และ behavior เอาไว้

Instance
instance จะก๊อบเอาลักษณะของ class แล้วแสดงตาม object เมื่อเราทำการสร้าง instance ระบบจองเมโมรี่ไว้

หากมองเป็นโค๊ดจะได้รูปแบบ

Class
public Class Student {
String name;
Integer age;

public void eat(){
.................
}

public void sleep(){
................
}
}

Instance
Student zeroEngine;

Object
zeroEngine = new Student();

ที่มา : Alfred’s Computing Weblog

19 June 2010

ติดตั้ง SVN Server และ Client บน Windows

สิ่งที่ต้องเตรียมก่อนในการติดตั้ง (เวลาดาวน์โหลดไม่นับรวมเวลาในการติดตั้ง) คือ SVN Server ซึ่งเป็นตัวจัดการไฟล์ที่เรานำมาใส่ใน Store ของมัน และ SVN Service เป็นโปรแกรมเล็ก ๆ ที่นำ SVN Server เข้าไปอยู่ใน Services list ของ Windows เพื่อให้ตัว SVN Server ทำงานในระดับ Background Application และสามารถสั่งให้ SVN Server ทำการเริ่มการทำงานทั้งแต่เปิดเครื่องผ่าน Services ของ Windows เองได้อย่างง่าย ๆ
SVN Service
Summary : Runs svnserve as a Windows service (requires .NET Framework 1.1)
Category : libraries
License : GNU General Public License
Owner(s) : ricos, sclerose
การติดตั้งทั้งหมดอ้างอิงบน Windows XP Professional
  1. ดาวน์โหลด SVN Server ได้จาก http://subversion.tigris.org/ และดาวน์โหลดตัว SVN Service จาก http://svnservice.tigris.org/ 
  2. ติดตั้ง SVN ลงใน c:\svn\ หรือ directory ใด ๆ ที่ต้องการก็ได้ (ใน entry นี้อ้างอิง c:\svn\ ครับ)
  3. ทดสอบว่ามันจะทำงานได้หรือเปล่าก็เปิด Commnand Prompt(พิมพ์ cmd ที่ Start > Run)
  4. ไปที่ c:\svn\bin (พิมพ์ cd c:\svn\bin)
  5. พิมพ์ svnadmin เพื่อทดสอบดู
    ถ้าขึ้นว่า “svnadmin.exe – Unable To Locate DLL” ให้ติดตั้ง Visual C++ 6.0 VCREDIST.exe โดยดาวน์โหลดได้ที่นี่ ถ้าสั่งให้ทำงานแล้วไม่มีปัญหา ก็ทำการทดสอบส่วนของ svnserve.exe เพื่อทดสอบว่าสามารถสั่งให้ SVN Server ทำงานได้หรือไม่
  6. พิมพ์ svnserve -r d:\svndatarootdir
    โดยที่ svndatarootdir คือ directory ที่ใช้สำหรับเก็บ repository ทั้งหมดของ svn ของเรา
  7. ถ้าใช้คำสั่งในข้อ 6 แล้วไม่มีปัญหา ให้ปิด Commnand Prompt แล้วติดตั้ง SVN Service
  8. ทำการเรียก SVNService Administration 

19 May 2010

Show Destktop ที่ Quick Lunch หาย

บางที หลายๆที หรืออาจจะซักสิบยี่สิบที ที่พอจะกด Start แล้วดันไปลาก Show Desktop ออกมาด้วยพอลากกลับดันกลายเป็นแ่่ค่ Shortcut เท่านั้น สำหรับอาการแบบนี้สามารถแก้ได้ครับ ไม่ยากเลย

ไปที่ C:\Documents and Settings\[ตรงนี้ใส่ Username ที่ login เข้าใช้]\Application Data\Microsoft\Internet Explorer\Quick Launch

สร้าง New File ขึ้นมาเซฟเป็น Show Desktop.SCF แล้วก็ใส่เนื้อหาสาระให้มันดังนี้ครับ

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

เพียงเท่านี้แล้วเจ้า Show Desktop ผู้น่ารักก็กลับประจำตำแหน่งอย่างเดิมแร้วววววว ^^"

08 May 2010

ตั่งค่าระบบ Traffic shaping บน m0n0wall อย่างชาญฉลาด

เนื่องจากบทความต้นฉบับนั้นไม่มีภาพแล้วและผมเองก็หาภาพจากที่อื่นไม่ได้นะครับ ส่วนที่เป็นภาพจะปล่อยว่างไว้ตามเดิมนะครับ

สวัสดีครับ ^^ พบกันอีกครั้งกับบทความภาคต่อซึ่งกว่าจะออกแสนยาวนาน รอกันจนขี้เกลือขึ้นหมดแล้วแฮ่ๆ ขอบคุณสำหรับท่านที่ยังรอครับก็เป็นเวลาเกือบหนึ่งเดือนเต็มๆ ที่ผมหายหน้าหายตาไป ถึงแม้จริงๆ ก็ไม่ได้ไปไหนไกลครับยังคงสถิตอยู่ในบอร์ด เอดีเอสเอลไทยแลนด์เหมือนเดิม เพียงแต่จะแค่เข้ามาดูและตอบบ้างเล็กน้อยเท่านั้น ก็คงจะแก้ตัวเป็นอย่างอื่นไปไม่ได้ พูดได้อย่างเดียวว่าติด เรื่องส่วนตัวไม่ส่วนตัวเกือบหนึ่งเดือนเต็มๆ ทั้งเรื่องเรียน ด้วยเรื่องงานพิเศษและอีกสารพัด (แก้ตัวได้เนียนมาฮ่าๆ) ด้วยเหตุนี้ผมเลยไม่ได้ค่อยมีเวลาว่างและสมองว่างๆมาคิดเขียนอะไรที่มีสาระสักเท่าไหร่ และก็ได้ตัดสินใจเขียนใหม่อยู่หลายต่อหลายครั้ง เพราะดูแล้วจากข้อมูลที่หามาหลายแหล่งนั้นผมก็เข้าใจแต่ก็ไม่รู้จะอธิบายให้เหมาะอย่างไรดีรวมถึงการทำรูปประกอบซึ้ง ผมเองก็ห่วยเรื่องวาดรูปเป็นหนี้เดิมอยู่แล้ว ดันต้องมาเขียนรูปประกอบให้คนอื่นเข้าใจยิ่งไปกันใหญ่ วาดเองยังงงเองเลย ส่วนอะไรที่ผิดพลาดในบทความนี้ ท่านผู้รู้ช่วยให้คำแนะนำด้วยนะครับหลายๆ ท่านคงประสบปัญหาอาการ "แล็ก" (Lag) ของเกมส์ออนไลน์ เมื่อน้องที่เล่นอยู่อีกเครื่องเปิดเว็บขณะที่ตัวเองกำลังมันส์กับเกม FPSหรือน้องขอท่านจะกลายร่างทันที เมื่อตัวท่านเองเปิดเว็บเพื่อทำรายงาน ในขณะที่น้องเล่นเกมออนไลน์ และยิ่งไปกว่านั้นหากใครที่เปิดร้าน เกมส์+อินเทอร์เน็ต คงไม่มีลูกค้ากลับมาใช้บริการอีกเป็นแน่ หากปล่อยให้เกมเกิดอาการแล็ก โดยสาเหตุเพียงแค่คนในร้านเปิดเว็บทำให้ในปัจจุบันนี้ร้านส่วนใหญ่จะติดตั่ง ADSL ไว้ถึง 2 คู่สาย เพื่อแยกเกมและบริการอื่นๆ ออกจากกันหรือที่หนักกว่านั้น คือบางร้านนั้นไม่ยอมให้ลูกค้าเล่นอินเทอร์เน็ตเลย หากที่กล่าวมาทั้งหมดนี้ได้เป็นส่วนหนึ่งของปัญหาที่ท่านกำลังประสพอยู่ ระบบ Traffic shapingออพชั่นจาก m0n0wall ตัวเก่งนี้ อาจจะเป็นทางเลือกที่จะช่วยท่านได้ครับ

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

ระบบเครือข่ายอินเทอร์เน็ต นั้นหลายท่านคงทราบดีแล้วว่าเกิดจากเครือข่ายหลายๆ เครือข่ายมาประกอบกันและแน่นอนว่าแต่ละเครือข่ายนั้นมีความเร็วไม่เท่ากันขึ้นอยู่กับจุดประสงค์ สภาพแวดล้อมและงบประมาณ ปัญหาที่เกิดขึ้นถ้าจะมองก็คือ การส่งข้อมูลจากเครื่อข่ายที่มีความเร็วสูงไปยังเครือข่ายที่มีความเร็วต่ำกว่าจะต้องมีระบบควมคุมที่ดีเพื่อไม่ให้ ขอมูลส่งเร็วเกินกว่าที่เครือข่ายจะรับได้หรือเกิดการชนกันระหว่างที่ส่งข้อมูลข้ามเครือข่ายที่มีความเร็วไม่เท่ากัน ระบบที่ว่านี้มีอยู่แล้วเป็นมาตรฐาน แต่หากว่ามาตรถฐานนี้อาจไม่เอื่ออำนวยกับความต้องการในปัจจุบันเมื่อคอมพิวเตอร์มีประสิทธิภาพสูงขึ้นสามารถใช้งานโปรแกรมได้หลายงาน พร้อมๆ กันและต้องการการค่าหน่วงเวลาที่ใช้ในการส่งข้อมูลในเครือข่าย (Response time) ที่ต่ำมากๆ โดยเฉพาะเกมส์ทั้งหาย มาตรฐานที่ใช้อยู่จึงอาจทำให้เกิดปัญหาขึ้นมาหากไม่ได้ทำการปรับแต่งให้เหมาะสม ระบบที่กล่าวนั้นมีอยู่ด้วยกัน 3 ระบบซึ่งจะทำงานร่วมกันคือ

ทำ ADSL Router/Firewall ประสิทธิภาพสูงด้วย M0n0wall จาก PC


สำหรับผมและอีกหลายๆ คนที่ใช้ ADSL Modem/Router ราคา 4-5 พันบาทที่วางขายกันเกลื่อนในตอนนี้ อาจจะเคยประสพปัญหาน่ารำคาญบางประการ เช่นอาการค้างแบบไร้เหตุผล, เข้าหน้าเวบที่ใช้ตั่งค่าไม่ได้ หลุดบ่อยทั้งๆ ที่สัญญาณไม่มีปัญหา และอีกหลายๆ อาการที่ไม่พึงประสงค์ โดยเฉพาะร้านเกมส์มันจะ กลายเป็นปัญหาใหญ่เลย

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

จากผมที่เคยลองมาหลายยี่ห่อ ADSL Modem/Router ที่ขายอยู่ในตลาดปัจจุบัน ทำงานได้แค่พอใช้ได้ เท่านั้น ปัญหาที่เกิดขึ้นทำให้ผมเบื่อไม่น้อยเลย เงินก็เสียไปแล้ว ยังได้ของห่วยมาอีก ผมก็เลยลองหาวิธี หลายวิธีที่จะแก้ปัญหาจนผมค้นพบ Software router ที่สามารถเปลี่ยน PC เก่าๆ ที่อยู่ในห้องเก็บของมา เป็น ADSL Router/Firewall ที่มีประสิทธิภาพรองรับงานหนักๆ ได้สบายๆ โดยไม่จำเป็นต้องใช้เครื่องหรูๆ ที่ไหนมันก็คือ m0n0wall นั่นเอง (จริงๆ แล้วมันมีอีกหลายตัวเลย แต่ผมลองแล้วไม่ประทับใจครับ)

สำหรับคนที่มีปัญหากับ Router อยู่บ่อยๆ และมี Computer เก่าเหลือใช้ก็ลองมาทำดูครับไม่แน่อาจจะติดใจแบบผมก็ได้

อุปกรณ์ที่จำเป็นสำหรับเป็นส่วน ประกอบใช้ในการทำ PC Router/Firewall ด้วย m0n0wall
ถ้าหากขาดเหลืออะไร Pantip ชั้น 4 มือสองมีขายครับลองเดินดูมีเพียบเลย แต่หากว่าไม่มีอะไรเลยแนะนำอย่าทำดีกว่า เดี๋ยวจะเสียเงินมากไปโดยใช่เหตุ แต่ถ้ากระเป๋าหนักก็ตามสบาย คนมันรวยทำอะไรก็ไม่น่าเกลียดหรอกครับจริงไหม?

MASM & WinAsm Studio

ลองมาเล่นด้าน asm ดูบ้างได้ลองจับเจ้า masm ดูก็สนุกดีนะ การเขียนสามารถใช้ api ของ windows ได้เลยสำหรับบทความก็จะเป็นการติดตั้ง masm แล้วเซ็ตค่าให้ใช้งานได้กับ WinAsm Studio ก่อนอื่นก็โหลดเจ้า MASM กับ WinASM Studio ตามลิงค์นี้เลยครับ

เมื่องโหลดไฟล์ masm แล้วให้ทำการแตกไฟล์ออกมาจะเจอกับไฟล์ install.exe ก็ดับเบิลคลิกมันเลยครับ
หลังจากดับเบิลคลิกให้เลือกไดรฟ์ที่จะทำการติดตั้งแ้ล้วกด Start โปรแกรมจะทำการติดตั้งให้เราจนเสร็จครับ

สำหรับ WinASM Studio นั้นเมื่อแตกไฟลืออกมาจะสามารถใช้งานได้ทันทีโดยให้แตกไฟล์ไปที่ C:\Program Files หรือที่อื่นตามต้องการครับ แล้วให้เปิดโปรแกรมโดยเปิดจากไฟล์ WinASM.exe จากนั้นเข้าไปที่ Tool->Option แล้วเลือกแท็บ Files & Path ตั้งค่าตามภาพครับ


สำหรับบรรทัดสุดท้ายหัวข้อ Projects Path นั้นคือที่เก็บไฟล์โปรเจคให้เป็นชื่ออื่นก็ได้ตามต้องการครับแค่นี้เราก็ได้ IDE ที่สามารถใช้งาน MASM ได้แล้วครับ

07 May 2010

x86 calling Convention

หลายคนอาจจะไม่ทราบ ว่า keyword พวก __stdcall, __cdecl, __fastcall, __thiscall พวกนี้มันคืออะไรหรือแตกต่างกันยังไง ซึงมันก็คือ Calling Convention มันเป็นรูปแบบของการเรียกฟังชั่น ว่าจะส่ง parameter ไปแบบไหน และจะจัดการกับ stack ที่ใช้ส่ง parameter ยังไง สำหรับวิธีใช้งานมันนั้น จะใส่ไว้ระหว่างชื่อฟังชั่นและชนิดตัวแปรที่รีเทิน ยกตัวอย่างเช่นการใช้ __stdcall

void __stdcall foo()

__stdcall
อันนี้เป็นแบบ standard ของ Windows API การส่ง parameter จะส่งผ่านทาง stack โดยจะ push parameter จากขวามาซ้าย (จากหลังมาหน้านั่นละ) ตัวฟังชั่นจะเคลียร์ stack ที่ใช้ส่ง parameter เอง ดังนั้น จะไม่สามารถใช้ va_arg (ฟังชั่นที่สามารถส่ง parameter ได้ไม่จำกัด ยกตัวอย่างเช่น printf) กับฟังชั่นประเภทนี้ได้ เพราะตัวฟังชั่นต้องรู้จำนวนที่แน่นอนของ parameter ที่ส่งไป ข้อดีคือ ส่วนมากฟังชั่นประเภทนี้จะใช้ instruction ret ในการเคลียร์ stack หลังจากเรียกฟังชั่นแล้วไม่ต้องมาเสียเวลาเคลียร์ stack ตัวอย่างการเรียกฟังชั่นประเภทนี้

push param3
push param2
push param1
call function

__cdecl
อันนี้เป็นแบบ standard ของภาษา C/C++ การส่ง parameter จะเหมือนกันกับ __stdcall จะต่างกันตรงที่ฟังชั่นจะไม่เคลียร์ stack ที่ใช้ส่ง parameter จุดที่เรียกฟังชั่นต้องเคลียร์ stack เอง ข้อดีคือ สามารถทำให้ฟังชั่นใช้ va_arg ได้ ตัวอย่างการเรียกฟังชั่นประเภทนี้
push param3
push param2
push param1
call function
add esp, 12

__fastcall
การส่ง parameter จะคล้ายๆกับ __cdecl แต่จะต่างกันตรงที่ parameter แรกจะส่งผ่านทาง Register ECX กับ parameter สองจะส่งผ่านทาง Register EDX สำหรับ Borland C++ จะส่ง parameter ที่สามผ่านทาง Register EAX ส่วน parameter ที่เหลือจะส่งผ่านทาง stack เหมือนกันกับ __cdecl และ __stdcall ตัวฟังชั่นจะไม่เคลียร์ stack เหมือนกับ __cdecl ข้อดีคือ ทำงานได้เร็วหาก parameter ที่จะส่งไปให้ฟังชั่นมีแค่ 2 ตัว (3 ตัวสำหรับ Borland C++) ตัวอย่างการเรียกฟังชั่นประเภทนี้ของ Visual C++

push param3
mov edx, param2
mov ecx, param1
call function
add esp, 4

__thiscall
อันนี้จะเป็นชนิดพิเศษ เราไม่ต้องใส่ keyword อันนี้ เพราะเป็นรูปแบบการเรียก method ของ class ที่ไม่ใช่ static และสามารถรวมร่างกับ 3 แบบข้างบนได้! การส่ง parameter จะขึ้นอยู่กับว่าเราให้มันรวมร่างกับแบบไหน ตัว Object ที่เรียก method จะถูกส่งผ่านทาง Register ECX (ส่งไปแบบ pointer keyword this ใน method มันคือ ECX นี่ละ) หากเรารวมร่างมันเข้ากับแบบ __fastcall parameter แรกจะกลายเป็น EDX แทน (เพราะ ECX โดน Object เอาไปกิน) ส่วนการเคลียร์ stack จะขึ้นอยู่กับว่ารวมร่างกับแบบไหนเช่นกัน

ส่วนค่าที่รีเทินมาจากทุกแบบ หากเป็นจำนวนเต็ม จะผ่านทาง Register EAX หากค่าที่จะรีเทินเป็น 64 บิท จะรีเทินผ่าน Register EAX กับ EDX หากค่าที่รีเทินเป็นทศนิยมจะรีเทินผ่านทาง Floating Point Stack ST(0) แต่ละแบบจะมีข้อดีแตกต่างกันออกไป หากฟังชั่นไม่ได้ใช้ va_arg ควรจะใช้ __stdcall เนื่องจากมันน่าจะเร็วกว่า __cdecl ตอนเคลียร์ stack แต่หากฟังชั่นใช้ va_arg ควรจะใช้ __cdecl ถ้าหากฟังชั่นส่ง parameter ไป 1 หรือ 2 ตัว (หรือ 3 ตัวสำหรับ Borland C++) ควรจะใช้ __fastcall

ที่มา : http://thaikore.spaces.live.com/blog/cns!C2E9AE9782AA6173!201.entry

30 April 2010

วิธีดูว่า svchost.exe รันอะไรอยู่

ระหว่างการท่องเที่ยวบนโลกไซเบอร์เรอร์ เอ๊ย ไซเบอร์เฉยๆ ก็ไปเจ๊อเจอกับบทความหนึงเข้าชื่อ Identify Loaded SVCHOST.EXE in Windows Task List ก็เลยนั่งอ่านไปดูซักหน่อย เห็นได้ประโยชน์ดีมากมายเลยเอามาเขียนเป็นไทย โดยใช้ภาษาค่อนข้างไทย (@@) เอ๊ะ มันยังไง โดยบทความของคุณ Raymond คนนี้เขียนถึงวิธีการดูว่า svchost.exe นั้นมันรัน Service อะไรอยู่ ก็ดูใน Task Manager ก็เห็นแต่ svchost.exe ตั้งหลายตัวนะ ไม่รู้มันรันทำไมหลายตัวจัง


ซึ่งเจ้าพวกคุณ svchost.exe ทั้งหลายเนี๊ยจะทำการ run ไฟล์ dll (dynamic link lybraly) โดยเราสามารถดูว่าแต่ละตัวนั้น run อะไรอยู่จาก Command line โดยเข้าไปที่ Start->Run พิม cmd ทุบ Enter หนึ่งที(กดเอาก็ได้นะ ไม่ว่ากัน) แล้วก็พิม

tasklist /svc /fi "IMAGENAME eq svchost.exe"


มันก็จะบอกว่า svchost.exe Process ID ที่เท่าไหร่ run Service ตัวไหนอยู่ แต่ถ้าอยากดูแบบละเอียดก็ต้องใช้โปรแกรมช่วยซักหน่อยซึ่งมันก็เป็นโปรแกรมที่เรียนได้ว่าเป็นที่นิยมและรู้จักกันอย่างแพร่หลายนั้นคือเจ้า Process Explorer นั้นเอง เมือเราเปิดโปรแกรม ขึ้นมาให้เราเอา Mouse ไปชี้มันจะบอกรายละเอียดเหมือนของผมในภาพ



พอดูตัวของผมกด PrtSc เอาเลยไม่เห็น Mouse ผมเลยลากวงกลมล้อมแทนละกันเน๊อ ตัวที่ผมเอา Mouse วางบนนั้นคือ Remote Procedure Call (RPC) (RpcSs) จากนั้นลองไปคลิกขวาที่ My Computer แล้วเลือก Manage เลือกที่ Service And Application แล้วเลือก Service ที่ด้านขวามองหา Remote Procedure Call (RPC) ดังภาพ


ให้เราดับเบิลคลิกขึ้นมา



เราจะเห็นตรง Name Service จะเป็นชื่อที่เราเจอในตอนที่เราใช้ Command line หาในตอนแรกครับผม ^^" จบแล้ว

ที่มา : http://www.raymond.cc/blog/archives/2007/08/23/identify-loaded-svchostexe-in-windows-task-list

29 April 2010

Protocol Overhead

ลองโหลด m0nowall มาเล่นดูแล้วลอง ทำตาม maxzerker

http://www.adslthailand.com/forum/viewtopic.php?t=17880

แล้วก็สมบูรณ์ดี แต่พอทำ Traffic shape แล้วลองโหลดไฟล์มาดูปรากฏว่า speed จากที่กำหนดใน pipe ของ traffic shape มันหายไปประมาณ 5% ตลอดเลยไปค้นหาข้อมุลเรื่อง overhead เพิ่มเติม ก็มีเว็บที่อธิบายการคำนวน Overhead ของแต่ละโปรโตคอลไว้ เก็บมาไว้เผือเ็ป็นประโยชน์ครับ

Ethernet
Ethernet frame format:

* 6 byte dest addr
* 6 byte src addr
* [4 byte optional 802.1q VLAN Tag]
* 2 byte length/type
* 46-1500 byte data (payload)
* 4 byte CRC

Ethernet overhead bytes:
12 gap + 8 preamble + 14 header + 4 trailer = 38 bytes/packet w/o 802.1q
12 gap + 8 preamble + 18 header + 4 trailer = 42 bytes/packet with 802.1q

Ethernet Payload data rates are thus:
1500/(38+1500) = 97.5293 % w/o 802.1q tags
1500/(42+1500) = 97.2763 % with 802.1q tags

TCP over Ethernet:
Assuming no header compression (e.g. not PPP)
Add 20 IPv4 header or 40 IPv6 header (no options)
Add 20 TCP header
Add 12 bytes optional TCP timestamps
Max TCP Payload data rates over ethernet are thus:
(1500-40)/(38+1500) = 94.9285 % IPv4, minimal headers
(1500-52)/(38+1500) = 94.1482 % IPv4, TCP timestamps
(1500-52)/(42+1500) = 93.9040 % 802.1q, IPv4, TCP timestamps
(1500-60)/(38+1500) = 93.6281 % IPv6, minimal headers
(1500-72)/(38+1500) = 92.8479 % IPv6, TCP timestamps
(1500-72)/(42+1500) = 92.6070 % 802.1q, IPv6, ICP timestamps

UDP over Ethernet:
Add 20 IPv4 header or 40 IPv6 header (no options)
Add 8 UDP header
Max UDP Payload data rates over ethernet are thus:
(1500-28)/(38+1500) = 95.7087 % IPv4
(1500-28)/(42+1500) = 95.4604 % 802.1q, IPv4
(1500-48)/(38+1500) = 94.4083 % IPv6
(1500-48)/(42+1500) = 94.1634 % 802.1q, IPv6


ฉบับเต็ม ดูได้ที่ http://sd.wareonearth.com/~phil/net/overhead/

28 February 2010

ติดตั้ง vmware server ใน Ubuntu

ให้ทำการดาวน์โหลด vmware-server มาไว้ก่อนโดยเข้าไปที่

VMWare Server

เลือกตัวที่เป็น .tar.gz นะครับจะได้ไฟล์ VMware-server-2.0.2-203138.i386.tar.gz ซึ่งเป็น version ล่าสุดขณะเขียน Blog นี้ จากนั้นทำการโหลด Script Install ที่

vmware-server-2.0.x-kernel-2.6.3x-install.sh

ตัว Script เป็น Script ที่จะำทำการโหลด Patch ให้อัตโนมัตินะครับรายละเอียดเพิ่มเติมอ่านได้จาก

https://help.ubuntu.com


เมื่อทำการโหลดทั้งสองไฟล์มาแล้ว

animal@animal-desktop:~/Downloads$ ls
VMware-server-2.0.2-203138.i386.tar.gz
vmware-server-2.0.x-kernel-2.6.3x-install.sh

การลบ foler ที่มีไฟล์อยู่ใน Ubuntu

โดยปกติแล้วถ้าหากใช้ rmdir ลบโฟลเดอร์ที่ยังมีไฟล์อยู่ข้างในมันจแจ้งมาว่า

rmdir: failed to remove `ชื่อโฟลเดอร์': Directory not empty

เราต้องเข้าไปทำการลบไฟล์ให้หมดก่อน แต่มีวิธีที่จะลบออกครั้งเดียวโดยใช้

rm -rf ชื่อโฟลเดอร์

เท่านี้ก็ลบได้ทุกไฟล์และโฟลเดอร์แล้วครับ

27 February 2010

การ Copy รวมไฟล์

การ Copy แบบรวมไฟล์เข้าไว้ด้วยกันนั้นปกติผมเองก็ใช้ไม่ค่อยบ่อยเท่าไหร่ พอได้มีโอกาศได้ใช้เลยเอามาเขียนสักหน่อย



โดยสมมติว่าผมมีไฟล์ img.jpg กับไฟล์ wnrar.rar อยู่ที่ C:\ ผมต้องการเอาไฟล์ wnrar.rar ไปรวมกับ img.jpg โดยที่ img.jpg ยังแสดงภาพได้เหมือนเดิม โดใช้คำสั่งแบบนี้นะครับ

copy /B img.jpg+wnrar.rar download.jpg



โดยจากคำสั่งคือการนำไฟล์ img.jpg กับไฟล์ wnrar.rar มารวมกันเป็นชื่อ download.jpg เพียงเท่านี้ไฟล์ทั้งสองก็จะถูกรวมมาเป็นอันเดียวกันแล้วครับถ้าเราดับเบิลคลิกเปิดภาพก็ยังคงทำงานได้ ถ้าเราเปลี่ยนนามสกุลของไฟล์เป็น rar เราก็จะได้ข้อมูลในไฟล์ wnrar.rar ครับ

เกมเก่าเล่าใหม่

ตอนสมัยเรียนปีหนึ่ง ในวิชาภาษา C อาจารย์ได้ให้นักศึกษาเขียนโปรแกรมอะไรก็ได้หนึ่งตัวส่งอาจารย์ โดยปกติแล้วเป็นคนที่ชอบเล่น Minesweeper อยู่แล้วเลย เห้ยยยย เขียนมันขึ้นมาดูดีกว่า ก็เลยได้ละเลงมันลงบน Turbo C++ ผลที่ได้คือ







ก็ใช้เวลาเกือบสองวันกว่าจะเสร็จเป็นเกมที่เล่นได้ในตอนนั้น

copy ภาพ Download แล้วทำการเปลี่ยนนามสกุลจาก jpg เป็น rar จะเจอ Source Code ข้างใน

วิธีการดาวน์โหลดให้ Source code ให้ save ภาพดาวน์โหลดไปเลยนะครับในนั้น จะมี Code รายงานของผมแล้วก็ไฟล์ .exe ที่คอมไพล์แล้ว ถ้าต้องการรันต้องมี Tubo C++ ในเครื่องนะครับเพราะโปรแกรมเป็น Graphic Mode ผมไม่ได้ใส่ไฟล์ Driver ไปด้วยโดย Driver จะต้องอยู่ที่ C:/TC/BGI

26 February 2010

ใช้ grep บน Windows

จากบทความที่แล้วได้มีการใช้ grep ใน Ubuntu ทีนี้ถ้าอยากมาใช้บน Windows บ้างละ ก็ไม่ยากครับ gnuwin32 มี Grep for Windows ให้ดาวน์โหลดไปใช้งานได้อย่างสบาย

http://gnuwin32.sourceforge.net/packages/grep.htm

เพียงดาวน์โหลดมาติดตั้ง


แล้วทำการเพิ่ม path ของวินโดว์เข้าไป


จากนั้นก็ทดสอบทำการแสดง route print | grep "Default Gateway"
ปรากฎว่าได้ผลสวยงาม ( @ @//\\(@ @ )

การเลือกแสดงใน Ubuntu

การเลือกแสดงที่จะนำเสนอคือการใช้
-grep
-cut
-awk

โดยตัวอย่างที่ใช้คือการแสดง ip ของ interface ทำได้โดย

root@ubuntu:/# ifconfig
eth3 Link encap:Ethernet HWaddr 00:0c:29:7f:94:d1
inet addr:192.168.200.130 Bcast:192.168.200.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7f:94d1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:263 errors:0 dropped:0 overruns:0 frame:0
TX packets:252 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25424 (25.4 KB) TX bytes:30155 (30.1 KB)
Interrupt:17 Base address:0x24a4

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:556 (556.0 B) TX bytes:556 (556.0 B)

20 February 2010

เปลี่ยน Port SSH ใน Ubuntu

ใช้ Putty อยู่เกิดอารมณ์ประมาณว่าไม่อยากใช้ Port 22 เข้าใช้งาน Ubuntu ที่อยู่ใน VM ware เลยค้นหาวิธีมาก็ได้ประมาณว่า ให้เข้าไปแก้ไขไฟล์

/etc/ssh/sshd_config

ภายในไฟล์ก็ทำการเปลี่ยน Port จาก 22 เป็นเลขอื่นตามต้องการ

# Package generated configuration file
# See the sshd(8) manpage for details

# What ports, IPs and protocols we listen for
Port 1234
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2

เมื่อทำการแก้ไขแล้วให้ Restart SSH ทีหนึ่งด้วยคำสั่ง

/etc/init.d/ssh restart

แล้วทดสอบเข้าใช้งานดูด้วย

ssh animal@ubuntu -p 1234

animal คือชื่อ username ของผมนะ
@ubuntu เป็น @ชื่อ Host ของเรา
-p 1234 คือ Port 1234 ที่ผมทำการเปลี่ยนใหม่

ถ้าเชื่อต่อไม่ได้ให้ลองตรวจสอบไฟล์ Config ใหม่ดูครับ
**ระวังด้วยนะครับมันจะมีไฟล์ /etc/ssh/ssh_config ไฟล์นี้ไม่ใ่ช่นะครับ

16 February 2010

ลง php ใน ubuntu แล้ว restart Apache ไม่ได้

นั่งลง php ใน ubuntu พอลงเสร็จอ๊ะ มันยัง run php ไม่ได้เลยจะ restart ดันเจอข้อความ

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

อะจึ๋ย.... ลืมตั้งค่าอะไรไปหว่า ค้นๆไป แต่ไม่ได้จำไว้แหะ ว่าเว็บไหนบอกให้แก้ไฟล์ /etc/hosts จาก

127.0.0.1 localhost
127.0.1.1 ubuntu

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

แล้วเพิ่มข้อมูลเป็น

127.0.0.1 localhost.local localhost
127.0.1.1 ubuntu.local ubuntu

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

พอ restart apache อีกทีก็ผ่านฉลุย ^0^

15 February 2010

ทำ File หรือ Folder Shortcut ใน Ubuntu

พอดีลง vsftpd แล้วไม่อยากเปลี่ยน path ของ vsftpd ใหม่เลยอยากหาวิธีทำ shortcut มาวางไว้ใน home ก็ได้วิธีมา โดยพิมคำสั่งง่ายๆเลย

ln -s /var/www/ /home/animal

จำคำสั่งข้างบันเป็นทำการทำ Shortcut มาวางไว้ที่ /home/animal/ เพื่อเชื่อมไปยัง /var/www/ โดยเมื่อเราใช้คำสั่ง ls -al ดูจะได้ผมดังภาพ

drwxr-xr-x 2 animal animal 4096 2010-01-31 08:41 Music
drwxr-xr-x 2 animal animal 4096 2010-01-31 08:41 Pictures
drwxr-xr-x 2 animal animal 4096 2010-01-31 08:41 Public
drwxr-xr-x 2 animal animal 4096 2010-01-31 08:41 Templates
drwxr-xr-x 2 animal animal 4096 2010-01-31 08:41 Videos
lrwxrwxrwx 1 root root 9 2010-02-15 03:09 www -> /var/www/

ผมทำเป็นตัวแดงไว้ให้ดูนะครับตรงที่ทำ shortcut ซึ่งมันจะชี้ไปตำแหน่ง link ของมันไว้ด้วย

09 February 2010

netsh ไม่สามารถ ปิด เปิด interface ได้

หลังจากนั่งพิมคำสั่ง

netsh interface set interface name="Local Area Connection" admin=DISABLED

ทำจนแล้วจนรอดก็ไม่ยอดปิดให้สักทีเลยไปถามพี่กูดูเลยได้คำตอบว่า xp กะตาวิน 2000 เนี๊ยใช้งานตรงนี้มะได้
มันติดตรง Dedicate อะไรของมันก็ไม่รู้ไปเจอใน Microsoft.comก็ยังไม่เกท เลยค้นหาต่อไปเจอเจ้า devcon สามารถใช้ปิดเปิด interface ของตาวินเราได้
โดยการใช้งานก็เพียงแค่ไปเอาเลข Device ID มา



โดยเมื่อได้มาแล้วก็พิมพ์คำสั่ง

devcon disable *dev_4351*

โอ้ววววจอร์ดดดด มันปิดได้ ^^" ถ้าหากต้องการปิดกลับมาเหมือนเดิมก็พิม

devcon enable *dev_4351*

โดยเจ้าโปรแกรมตัวนี้โหลดได้โดยตรงจาก

http://support.microsoft.com/kb/311272

เมื่อโหลดมาแล้วให้เอาไฟล์ devcon.exe ไปไว้ที่ C:\Windows\system32\ เราก็สามารถใช้งานได้อย่างสะดวกสบาย (>__>)

ควบคุม Interface บน Windows ด้วย netsh

ใครที่ถนัดกับการใช้ Command ในการตั้งค่าต่างๆ ของระบบ วันนี้มีเทคนิคดีๆ มานำเสนอ เป็นการ config ip ผ่าน Command line ของวินโดวน์โดยใช้คำสั่ง netsh

Set IP Static
netsh interface ip set address interface_name static [ip] [netmask] [gw] 1
เ่ช่น
netsh interface ip set address "Local Area Connection" static 192.168.10.10 255.255.255.0 192.168.10.1 1

Set Dns Static [primary dns]
netsh interface ip set dns interface_name static dns primary
เช่น
netsh interface ip set dns "Local Area Connection" static 192.168.10.1 primary

Set IP DHCP
netsh interface ip set address name="Local Area Connection" source=dhcp

Set Dns DHCP
netsh interface ip set dns name="Local Area Connection" source=dhcp

สำหรับฟังก์ชั่นต่างสามารถพิม netsh แล้ว enter เข้าไปดูได้โดยจะิพิม help หรือ ? ก็จะมี help ออกมาให้อ่านเพิ่มเติม

Run Background Process บน Windows

สำหรับตัว Windows แล้วต้องจัดโปรแกรมเพิ่มเติมเข้าไปหน่อย โดยใช้โปรแกรมที่มีชื่อว่า hstart ซึ่งมีขนาดจิ๋ว กระทัดรัด
สามาารถดาวน์โหลดได้จาก http://www.ntwind.com สำหรับ Option การรันไฟล์แบบ Background ก็แค่พิมพ์

hstart /noconsole "โปรแกรมที่ต้องการ"

ตัวอย่างเช่น

hstart /noconsole "notepad.exe"

ถ้าต้องการให้ใ้ช้งานได้สะดวกก็เพียงแค่ copy ไฟล์ hstart.exe ไปไว้ที่ c:\windows\system32 ก็จะสามารถเรียกใช้งานได้ทันที สำหรับความสามารถอื่ๆของโปรแกรมตัวนี้ ดูเพิ่มเติมได้ที่เว็บหลัก ><" http://www.ntwind.com

ตามนั้น ^^"

08 February 2010

Ubuntu Background Process

หลังจากย้าย Bot อัพเดทหน้าข้อมูลดาต้าเบสจาก windows server 2008 มา Ubuntu เจ้าบอทตัวน้อยเลยต้องหา background process ที่ใหม่อยู่ด้วย โดยใน Ubuntu นั้นทำได้ง่ายยยยยยยยยยยย โค ตะ ระ เลย เพียงแค่ใส่ & ต่อท้ายเข้าไป อย่างเช่น

root@ubuntu:~# firefox &
[3] 19101

เท่านี้เจ้าหมาย่างก็กลายไปอยู่ background แล้วหุหุ สำหรับการตรวจดุว่ามี อะไรรันอยู่บ้างก้พิม jobs ไป

root@ubuntu:~# jobs
[1]- Stopped php /root/web_bot/bot_php.php
[2]+ Stopped php /root/web_bot/bot_startup.php
[3] Done firefox

สำหรับ Process ที่ขึ้น Stopped นั้นสามารถทำให้เป็น Running โดยพิม bg [jobspec] jobspec ก็คือเลขที่อยู่หน้าสุดนั้นแหละครับ

root@ubuntu:~/web_bot# bg 1
[1]+ php bot_php.php &

ถ้าหากอยากทำให้กลับมาอยู่ foreground ก็ใช้คำสั่ง fg [jobspec]

root@ubuntu:~/web_bot# fg 1
php bot_php.php


ลองๆไปเล่นกันดูนะคับ ^^
สำหรับข้อมูลเพิ่มเติมก็ไปที่ http://www.watchingthenet.com/ubuntu-tip-how-to-launch-programs-in-the-background-from-a-terminal-window.html

01 February 2010

RU Auto Login

#--------------------------------------------------------------------
# RU Auto Login
# Date :: 31 Jan 2010
#
# Program Description
# Using :: ru.pl
# -------------------------------------------------------------------

use LWP::UserAgent;
my $ua = new LWP::UserAgent;
my $time = time()+897762620;

if($ARGV[0] != "" || $ARGV[1] != ""){
my $response = $ua->post('https://10.4.51.1/netaccess/connstatus.html',{ sid => $time,login => 'Log+In+Now',});
my $content = $response->content;
my $response = $ua->post('https://10.4.51.1/netaccess/loginuser.html',{ username => $ARGV[0],password => $ARGV[1],Login => 'Continue',sid => $time,});
my $content = $response->content;
}else{
print "Using: ru.pl ";
}

#---------------------------------------------------------------------

เป็น Script login เข้าใช้งาน Internet ของมหาวิทยาลัยรามคำแหง Script เขียนด้วย Perl สามารถใช้งานได้ทั้ง Windows และ Linux(ทดสอบใน Ubuntu และ Debian)

28 January 2010

Install Air Application Error

สำหรับใครที่ต้องการจะทำ Package Air แบบ Release Build... โดยใช้ Adobe Flex นั้นพอทำเป็นไฟล์ .air แล้วตอนติดตั้งเจอข้อความ

The application could not be installed because the AIR file is damaged. Try obtaining a new AIR file from the application author.

แบบในภาพข้างล่าง



ในต้อนทำ Release Build... ให้เราเอาเครื่องหมายถูกหน้า Time Stamp ออก



แล้วก็ Export ออกมาเพียงเท่านี้ก็สามารถติดตั้ง Package Air ได้แล้วครับ...

Export Release Build ติด Error

สำหรับใครที่ Flex เขียนโปรแกรม แล้วต้องการ Package ไฟล์ เป็น .air แต่พอ Add Certificate เข้าไปแล้วกลับเจอ Error แบบนี้

Error creating air file: NotAfter : [วันที่และเวลา]

นั้นเป็นเพราะว่าเครื่องเรานั้นตั้ง Regional เป็นแบบที่ Flex ไม่สามารถอ่านได้(ในที่นี้คงเป็นภาษาไทยกัน มันอ่านไม่ได้แน่นอนครับ)
ให้เราเข้าไปที่ Control Panel Reginal and Language Option



ตรง Standard And Formats ให้เลือกเป็น English ของผมเลือกแบบ United State แล้วจากนั้นให้ไปใช้ adt สร้าง certificate ขึ้นมาให้ เช่น

C:\Program Files\Adobe\Flex Builder 3>adt -certificate -cn "zeroengine" 1024-RSA zeroengine.fpx myPassword

ความหมายของการสร้าง Certificate คือ
-cn "zeroengine" เป็น auther ของ cetificate
1024-RSA เป็นรูปแบบกาารเข้ารหัส
zeroengine.fpx เป็นไฟล์ที่จะได้ออกมา
myPassword เป็น Password ของเราซึ่งตอน export ใน flex ต้องใส่ password นี้เข้าไปด้วย

27 January 2010

คำนวนค่า OID ด้วย MIB Browser

สำหรับใครที่ใช้งาน snmp แล้วประสบปัญหาในการหาค่า OID หรือว่าอยากรู้ค่า MIB Name อื่น MG-Soft MIB Browser ช่วยคุณได้ โดยโปรแกรมด้วยนี้จะแสดงค่า OID ของข้อมูลต่างๆให้เรา เพียงแค่เราใส่ ip ของเครื่องที่เปิด Service SNMP ไว้แล้วระบุ Community ให้กับโปรแกรม โปรแกรมก็จะแสดงผลออกมาให้เรา



ซึ่งโปรแกรมตัวนี้สามารถโหลดมาใช้แบบ Trial ได้โดยสามารถเลือกดาวน์โหลดได้ว่าจะเป็น Windows Linux หรือ Mac ก็มีให้ใช้งานเช่นกัน สามารถเข้าไปดูข้อมูลเพิ่มเติ่มผ่านไซต์หลักได้ที่ http://www.mg-soft.com

23 January 2010

เปิด extension snmp แล้วใช้งาน command line ไม่ได้

ถ้าเปิด extension snmp ของ php.ini แล้วเจอ error

Cannot find module (IP-MIB): At line 0 in (none)
Cannot find module (IF-MIB): At line 0 in (none)
Cannot find module (TCP-MIB): At line 0 in (none)
Cannot find module (UDP-MIB): At line 0 in (none)
Cannot find module (SNMPv2-MIB): At line 0 in (none)
Cannot find module (SNMPv2-SMI): At line 0 in (none)
Cannot find module (UCD-SNMP-MIB): At line 0 in (none)
Cannot find module (UCD-DEMO-MIB): At line 0 in (none)
Cannot find module (SNMP-TARGET-MIB): At line 0 in (no
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line
Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in
Cannot find module (UCD-DLMOD-MIB): At line 0 in (none
Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in
Cannot find module (SNMP-MPD-MIB): At line 0 in (none)
Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0
Cannot find module (SNMP-NOTIFICATION-MIB): At line 0
Cannot find module (SNMPv2-TM): At line 0 in (none)

เพราะว่าเราได้ทำการ เปิด

extension=php_snmp.dll

ให้ทำงานแต่ module ของ snmp นั้นไม่สามารถทำงานได้ วิธีแก้ไขให้สร้าง folder ขึ้นมาใน Drive ที่ลง php ไว้เช่น
ใช้ Appserv ลงใน Drive C:\Appserv\php5 ก็ให้สร้าง C:\usr ขึ้นมาแล้ว copy Folder ใน

C:\AppServ\php5\extras\mibs

มาไว้ที่

C:\usr

เท่านี้ก็สารมารถใช้ php ผ่าน Command line ได้และยังสามารถเรียกใช้ MIB Name เช่น system.sysDescr.0 ได้อีกด้วย

วิธีนี้สามารถใช้ได้ทั้งแบบที่ลงจาก php เองหรือใช้ appserv ลงได้ ^^"

แก้ไข Appserv ใช้งาน php ผ่าน Command line

หลังจากเรียกใช้ php ผ่าน command line ของ appserv แล้วจะเจอ

This application has failed to start because php_mbstring.dll was not found. Re-installing the aplication may fix this problem

ให้ไปแก้ที่ไฟล์ php.ini (start->run-> พิมพ์ php.ini)

ค้นหาคว่า extension_dir แล้วแก้ค่าใหม่เป็น "C:\AppServ\php5\ext"

แล้วให้ค้นหาคำว่า extension=php_mbstring.dll ให้ย้ายตำแหน่ง extension ตัวนี้ไว้หน้า extension=php_exif.dll

extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
extension=php_mbstring.dll
extension=php_exif.dll
;extension=php_fdf.dll
extension=php_gd2.dll
;extension=php_gettext.dll

เพียงเท่านี้ก็จะใช้ php ผ่าน commmand line ได้แล้ว - -"