เคยมั้ย แกะสคริปท์แล้วมึนตึ๊บ มาลองนี่ดีกว่า => Windows Grep

เริ่มโดย ball6847, 17 เมษายน 2009, 12:40:15

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

ball6847

ใครที่หัดเขียนโปรแกรมด้วยวิธีแนวๆเดียวกับผม คือหัดจากการแกะ 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 เข้าไปแบบนี้คับ



ทีนี้พอเวลาเราค้นหาแล้วให้จะได้ให้มันเปิดไฟล์ที่ 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 ในเครื่องผมเลย



ได้ตามนี้ก็คลิ้ก OK เลย
รอแปปนึง รายชื่อทุกฟังก์ชั่นใน wordpress ก็จะปรากฏต่อหน้าเราในบัดดล พร้อมทั้งที่อยู่ไฟล์ และบันทัดที่เจอ



ลองคลิ้กที่ข้อความที่หาเจอมันก็จะเปิดไฟล์นั้นด้วย editplus แล้วไปที่บรรทัดนั้นทันที



อ้อ มันเป็นอย่างงี้นี่เอง

หวังว่าคงเป็นประโยชน์นะครับ
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

smapan

ปรกติใช้ editplus แล้ว search > find in files... แค่นี้เองครับ  :P

ขอบคุณครับสำหรับความรู้ใหม่
[direct=http://cp.siamhostweb.com/cart.php?gid=1]จูมล่าโฮส สยามโฮสเว็บ[/direct] [direct=http://www.modty.com]modty.com[/direct]
[direct=http://www.apartment.in.th]รวมที่พัก เช่ารายวัน ที่พักเช่ารายเดือนมากที่สุดแจ่มจริง[/direct]
***Tel 083-757-1515 ติดปัญหา Joomla ตรงไหนรับปรึกษาฟรี โทรมาเถอะครับ ถ้าตอบได้ช่วยแน่นอน ไม่มีกั้ก. ***

kero

อ้างถึงจาก: smapan ใน 17 เมษายน 2009, 12:50:41
ปรกติใช้ editplus แล้ว search > find in files... แค่นี้เองครับ  :P

ขอบคุณครับสำหรับความรู้ใหม่

เหมือนผมเลย  :P  เห็นพวกที่เขียนโปรแกรมบน unix เขา grep กันง่ายๆมานานแล้ว
[direct=http://www.my-astore.com/]Amazon Review Blog[/direct] ไม่เคยได้เงินกะเขาเล้ย เฮ้อ
[direct=http://www.kero.me/]Blog คนบ้า[/direct] 555 Blog ผมเองครับเอาไว้นั่งบ่น

ball6847

อ้างถึงจาก: smapan ใน 17 เมษายน 2009, 12:50:41
ปรกติใช้ editplus แล้ว search > find in files... แค่นี้เองครับ  :P

ขอบคุณครับสำหรับความรู้ใหม่

เออ จริงด้วยแฮะ  ;D ;D

จะทำให้ยากทำมัยวะเนี่ยเรา ก๊ากกก  ;D ;D
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

ioff


www.thaihoro.co.cc

Newbies

เคยมึนๆ เหมือนกัน เวลาแกะ
แต่เดี๋ยวนี้อยากแกะอะไร ก็ใช้ php xref เอา เอาทั้งสคริบมาทำในเครื่องเลย มันจะ gen cross reference file ให้หมด หาอะไรก็เจอ รู้หมดอยู่ตรงไหน ทำอะไร

ตัวอย่าง
http://xref.fergcorp.com/trunk/nav.html?index.html