หัวข้อ: เคยมั้ย แกะสคริปท์แล้วมึนตึ๊บ มาลองนี่ดีกว่า => Windows Grep เริ่มหัวข้อโดย: ball6847 ที่ 17 เมษายน 2009, 12:40:15 ใครที่หัดเขียนโปรแกรมด้วยวิธีแนวๆเดียวกับผม คือหัดจากการแกะ Sourcecode สคริปท์ทั่วๆำไป (ที่เปิดเผย source นะ เหอๆ)
ปัญหาที่เจอเวลาจะแกะคือ เวลาเจอสคริปท์ใหญ่ๆอย่างพวก CMS จะถึงกับมึนตึ๊บ เพราะสคริปท์พวกนี้จะเขียนโปรแกรมเป็น OOP แยกเป็นส่วนๆ แล้วค่อยเรียกมาใช้เพื่อให้สคริปท์ไม่รก อ่านง่าย แต่ปัญหาของคนของโมคือ หาต้นตอของ function หรือ class ไม่เจอ (มัน include มาจากไฟล์ไหนของมันวะ >:( ) บางฟังก์ชั่น พี่แกใช้ชื่อแบบ self explained มาก อย่าง wordpress มีฟังก์ชั่น __() , _e() , _p() , _n() , _c() โอ้ว (อุทานอย่างสถุนว่า "กุจะบ้า!! ไรของมันวะ!!") จะตรัสรู้ได้มั้ยเนี่ยว่าฟังก์ชั่นพวกนี้มันไว้ทำอะไร ครั้นจะหาต้นตอก็งงเหลือกินว่ามัน include มาจากไฟล์ไหน วันนี้ผมมีวิธีหาแระ ด้วยโปรแกรมนี้เลย Windows Grep (จริงๆแล้ว grep เป็น commandline utility ของ unix) ที่นี่เลย => http://www.wingrep.com/ โปรแกรมนี้เอาไว้ Search , Replace ไฟล์ได้ทั้งแบบ match word หรือ regular expression แบบทีเดียวหลายๆไฟล์ เพราะฉนั้นถ้าเอามาหัดแกะสคริปท์ควรมีพื้น regular expression มาบ้างนะคับ เริ่มแรกตามจุดประสงค์ของเราคือเอามาช่วยแกะสคริปท์ แต่ว่า grep ไม่มี syntax hightlighter ให้นะ เพราะงั้นเราต้องใช้มันร่วมกับ text editor ตัวอื่น ในที่นี้ผมใช้ editplus ผมก็จะตั้งให้มันทำงานร่วมกับ editplus ด้วย โดยเข้าไปที่ Options => Preferences เลือกที่แท็บ Editor แล้วใส่ Command เข้าไปแบบนี้คับ (http://upload.tarad.com/images/153524grep-editplus-preferences.png) ทีนี้พอเวลาเราค้นหาแล้วให้จะได้ให้มันเปิดไฟล์ที่ match ด้วย editplus แล้วให้เลือก cursor ไปที่ บรรทัดที่เจอทันที เราจะเข้าถึงข้อมูลได้ทันทีเลยคับ ทีนี้มามาลองค้นหาง่ายๆ ผมจะลองกับ wordpress นะครับ โดยโจทย์ของผมคือ ผมต้องการหาทุก function ที่มีอยู่ใน wordpress ก็จะเริ่มแบบนี้ครับ เลือกที่เมนู Search => Search... หรือกด ctrl+f หรือคลิ้กที่รูปไฟฉาย วิธีไหนก้ได้แล้วแต่สะดวกคับ ผมก็ใส่ regex ที่ช่อง search string แล้วเลือก Normal(Regular Expresion) regex ผมใส่อันนี้ function [a-z_][a-z0-9_]+\s*\(.*\) แล้วก็ไม่ติ้กช่อง match case นะ ช่อง File Specification ผมกรองเอาเฉพาะ *.php ใครคิดว่ามีพวก *.inc ก็ใส่ *.* ไปเลยมันจะค้นทุกนามสกุล ช่อง Folder ผมใส่ที่อยู่ของ wordpress ในเครื่องผมเลย (http://upload.tarad.com/images/809019grep-search-function.png) ได้ตามนี้ก็คลิ้ก OK เลย รอแปปนึง รายชื่อทุกฟังก์ชั่นใน wordpress ก็จะปรากฏต่อหน้าเราในบัดดล พร้อมทั้งที่อยู่ไฟล์ และบันทัดที่เจอ (http://upload.tarad.com/images/546529grep-search-function-result.png) ลองคลิ้กที่ข้อความที่หาเจอมันก็จะเปิดไฟล์นั้นด้วย editplus แล้วไปที่บรรทัดนั้นทันที (http://upload.tarad.com/images/584543open-result-file-in-editplus.png) อ้อ มันเป็นอย่างงี้นี่เอง หวังว่าคงเป็นประโยชน์นะครับ หัวข้อ: Re: เคยมั้ย แกะสคริปท์แล้วมึนตึ๊บ มาลองนี่ดีกว่า => Windows Grep เริ่มหัวข้อโดย: smapan ที่ 17 เมษายน 2009, 12:50:41 ปรกติใช้ editplus แล้ว search > find in files... แค่นี้เองครับ :P
ขอบคุณครับสำหรับความรู้ใหม่ หัวข้อ: Re: เคยมั้ย แกะสคริปท์แล้วมึนตึ๊บ มาลองนี่ดีกว่า => Windows Grep เริ่มหัวข้อโดย: kero ที่ 17 เมษายน 2009, 12:59:01 ปรกติใช้ editplus แล้ว search > find in files... แค่นี้เองครับ :P ขอบคุณครับสำหรับความรู้ใหม่ เหมือนผมเลย :P เห็นพวกที่เขียนโปรแกรมบน unix เขา grep กันง่ายๆมานานแล้ว หัวข้อ: Re: เคยมั้ย แกะสคริปท์แล้วมึนตึ๊บ มาลองนี่ดีกว่า => Windows Grep เริ่มหัวข้อโดย: ball6847 ที่ 17 เมษายน 2009, 13:20:02 ปรกติใช้ editplus แล้ว search > find in files... แค่นี้เองครับ :P ขอบคุณครับสำหรับความรู้ใหม่ เออ จริงด้วยแฮะ ;D ;D จะทำให้ยากทำมัยวะเนี่ยเรา ก๊ากกก ;D ;D หัวข้อ: Re: เคยมั้ย แกะสคริปท์แล้วมึนตึ๊บ มาลองนี่ดีกว่า => Windows Grep เริ่มหัวข้อโดย: ioff ที่ 17 เมษายน 2009, 13:27:47 :) เป็นอีก 1 วิธีมาเสอนกันไง ค่ะ
หัวข้อ: Re: เคยมั้ย แกะสคริปท์แล้วมึนตึ๊บ มาลองนี่ดีกว่า => Windows Grep เริ่มหัวข้อโดย: Newbies ที่ 17 เมษายน 2009, 14:20:28 เคยมึนๆ เหมือนกัน เวลาแกะ
แต่เดี๋ยวนี้อยากแกะอะไร ก็ใช้ php xref เอา เอาทั้งสคริบมาทำในเครื่องเลย มันจะ gen cross reference file ให้หมด หาอะไรก็เจอ รู้หมดอยู่ตรงไหน ทำอะไร ตัวอย่าง http://xref.fergcorp.com/trunk/nav.html?index.html |