View this page "AcKernel's Modular Structure"

9 views
Skip to first unread message

Zhuq!

unread,
Dec 14, 2009, 11:12:17 PM12/14/09
to AcKernel


Click on http://groups.google.com/group/ackernel/web/ackernels-modular-structure
- or copy & paste it into your browser's address bar if that doesn't
work.

Zhuq!

unread,
Dec 14, 2009, 11:17:19 PM12/14/09
to AcKernel
หาวิธีที่ควบคุมวรรคตอนใน discuss ไม่ได้ เลยสร้างสิ่งที่อยากจะเล่าเป็น
page แทน แล้วค่อยมา discuss ต่อในนี้ครับ :) กำปั้นทุบดินมากเลย :P

On Dec 15, 11:12 am, "Zhuq!" <viruzh...@gmail.com> wrote:
> Click onhttp://groups.google.com/group/ackernel/web/ackernels-modular-structure

Chalermkiat Kaewsanay

unread,
Dec 15, 2009, 2:02:50 AM12/15/09
to Zhuq!, AcKernel
เปลี่ยนชื่อหัวข้อ Discuss ได้หรือเปล่าครับ? จะได้เห็นแล้วเข้ามาเลยน่ะครับ

2009/12/15 Zhuq! <viru...@gmail.com>:

> --
>
> You received this message because you are subscribed to the Google Groups "AcKernel" group.
> To post to this group, send email to acke...@googlegroups.com.
> To unsubscribe from this group, send email to ackernel+u...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/ackernel?hl=en.
>
>
>

Zhuq!

unread,
Dec 15, 2009, 2:12:24 AM12/15/09
to AcKe...@googlegroups.com
หาวิธีจัดการกับการแบ่งวรรคตอนในหน้า discuss ปรกติไม่เจอ
เลยแก้ปัญหาด้วยการสร้างเป็น page แทน จะได้เขียนอธิบายยาวๆ ได้
จากนั้นค่อยมา discuss กันต่อในนี้

แนวคิดเรื่อง AcKernel ก็เริ่มต้นจากจุดที่ผมเรียกว่า <a href="http://
groups.google.com/group/ackernel/web/ackernels-modular-
structure">System Core</a> นี่แหละ เลยอยากจะชวน discuss
กันตรงจุดแรกนี่ก่อน คิดว่ายังไงกันมั่งครับ?

Chalermkiat Kaewsanay

unread,
Dec 15, 2009, 2:23:08 AM12/15/09
to Zhuq!, AcKe...@googlegroups.com
ขอเวลาไปย่อย Page ที่ให้มาซะก่อนนะครับ จะได้รู้แนวทางที่คุณ Zhuq!
อยากให้ลองคิดตามก่อน

2009/12/15 Zhuq! <viru...@gmail.com>:

Manatsawin

unread,
Dec 15, 2009, 7:46:42 AM12/15/09
to Chalermkiat Kaewsanay, Zhuq!, AcKe...@googlegroups.com
เรื่อง modular ยอมรับครับว่าไม่เคยทำมาก่อน แต่พอจะนำเสนอของ Drupal ได้
ทั้งนี้อย่าลืมว่า Drupal ไม่ได้ใช้ OOP แท้ แต่ใช้ปรัชญา OOP ครับ ดังนั้นมันอาจจะไม่ใช่ตัวเลือกที่ดีที่สุด แต่อาจจะง่ายที่สุด และผ่านการทดสอบบนสมรภูมิมาแล้วหลายปี

สำหรับโครงสร้าง Drupal นั้นจะใช้ลักษณะเหมือนการ boot OS ขึ้นมาก่อนครับ กล่าวคือ index จะทำหน้าที่เพียงโหลดตัว bootstrapper แล้วสั่งให้มัน bootstrap ระบบทั้งหมด (คล้ายๆ การบูทเครื่องไต่ระดับรันเลเวล)

ผมเคยแกะ bootstrap มาดูในโครงการนึงซึ่งผมต้องศึกษาโครงสร้างพวกนี้ พบว่ามันจะแบ่งเป็นระดับต่างๆ (นึกถึงรันเลเวลเอาเลยก็ได้ครับ) แล้วมันจะลูปวนจนครบทุกเลเวลไป (ดังนั้นหาก project ที่จะใช้ต้องการแค่บางขั้นก็ข้ามตามชอบได้) โดยแต่ละขั้นก็จะกระบวนการต่างๆ เช่นโหลดระบบคอร์ โหลดมอดูลต่างๆ ครับ

สำหรับความ modular ของมันคงจะทราบดีนะครับว่า Drupal มันยืดขนาดไหน แต่เบื้องหลังแล้ว Drupal จะใช้ระบบเรียกว่า hook ครับ โดยให้ประกาศฟังค์ชั่นชื่อ มอดูล_ชื่อฮุค เช่น mymodule_init จากนั้นฟังค์ชั่นต่างๆ ก็จะกำหนดจุดที่เรียก hook ไว้ครับโดยเรียกฟังค์ชั่นที่ใช้ฮุค ลักษณะนี้

module_invoke_all("ชื่อฮุค", argument1, 2, 3...);

ทั้งนี้หากมี output จะต่อกันแล้วคืนเป็น array ครับ (ใช้ array_merge_recursive ครับ เช่น คืนค่า {"a": ["a","b"]} และ {"a": ["c","d"], "b": "asdf"} ฟังค์ชั่นนี้จะคืนให้กับฟังค์ชั่นหลักว่า {"a": ["a","b","c","d"], "b": "adsf"} ครับ

สำหรับความสามารถการต่อยอดนี้ก็ขึ้นอยู่กับว่าใส่ hook จุดใดบ้างเลยครับ

2009/12/15 Chalermkiat Kaewsanay <chalermkia...@gmail.com>

aboriginess

unread,
Dec 15, 2009, 12:44:59 PM12/15/09
to AcKernel
*-* อ่านแล้วไม่อยากจะคิดถึง module ปวดสมองชัวร์ ฟันป๊าบๆๆๆ ฮา
ใช้อะไรดีหว่า ที่มัน ยืดยุ่น google go -0-

On Dec 15, 7:46 pm, Manatsawin <manatsa...@gmail.com> wrote:
> เรื่อง modular ยอมรับครับว่าไม่เคยทำมาก่อน แต่พอจะนำเสนอของ Drupal ได้
> ทั้งนี้อย่าลืมว่า Drupal ไม่ได้ใช้ OOP แท้ แต่ใช้ปรัชญา OOP ครับ
> ดังนั้นมันอาจจะไม่ใช่ตัวเลือกที่ดีที่สุด แต่อาจจะง่ายที่สุด
> และผ่านการทดสอบบนสมรภูมิมาแล้วหลายปี
>
> สำหรับโครงสร้าง Drupal นั้นจะใช้ลักษณะเหมือนการ boot OS ขึ้นมาก่อนครับ
> กล่าวคือ index จะทำหน้าที่เพียงโหลดตัว bootstrapper แล้วสั่งให้มัน bootstrap
> ระบบทั้งหมด (คล้ายๆ การบูทเครื่องไต่ระดับรันเลเวล)
>
> ผมเคยแกะ bootstrap มาดูในโครงการนึงซึ่งผมต้องศึกษาโครงสร้างพวกนี้
> พบว่ามันจะแบ่งเป็นระดับต่างๆ (นึกถึงรันเลเวลเอาเลยก็ได้ครับ)
> แล้วมันจะลูปวนจนครบทุกเลเวลไป (ดังนั้นหาก project
> ที่จะใช้ต้องการแค่บางขั้นก็ข้ามตามชอบได้) โดยแต่ละขั้นก็จะกระบวนการต่างๆ
> เช่นโหลดระบบคอร์ โหลดมอดูลต่างๆ ครับ
>
> สำหรับความ modular ของมันคงจะทราบดีนะครับว่า Drupal มันยืดขนาดไหน
> แต่เบื้องหลังแล้ว Drupal จะใช้ระบบเรียกว่า hook ครับ
> โดยให้ประกาศฟังค์ชั่นชื่อ มอดูล_ชื่อฮุค เช่น mymodule_init
> จากนั้นฟังค์ชั่นต่างๆ ก็จะกำหนดจุดที่เรียก hook
> ไว้ครับโดยเรียกฟังค์ชั่นที่ใช้ฮุค ลักษณะนี้
>
> module_invoke_all("ชื่อฮุค", argument1, 2, 3...);
>
> ทั้งนี้หากมี output จะต่อกันแล้วคืนเป็น array ครับ (ใช้
> array_merge_recursive ครับ เช่น คืนค่า {"a": ["a","b"]} และ {"a": ["c","d"],
> "b": "asdf"} ฟังค์ชั่นนี้จะคืนให้กับฟังค์ชั่นหลักว่า {"a":
> ["a","b","c","d"], "b": "adsf"} ครับ
>
> สำหรับความสามารถการต่อยอดนี้ก็ขึ้นอยู่กับว่าใส่ hook จุดใดบ้างเลยครับ
>

> 2009/12/15 Chalermkiat Kaewsanay <chalermkiat.kaewsa...@gmail.com>


>
> > ขอเวลาไปย่อย Page ที่ให้มาซะก่อนนะครับ จะได้รู้แนวทางที่คุณ Zhuq!
> > อยากให้ลองคิดตามก่อน
>

> > 2009/12/15 Zhuq! <viruzh...@gmail.com>:


> > > หาวิธีจัดการกับการแบ่งวรรคตอนในหน้า discuss ปรกติไม่เจอ
> > > เลยแก้ปัญหาด้วยการสร้างเป็น page แทน จะได้เขียนอธิบายยาวๆ ได้
> > > จากนั้นค่อยมา discuss กันต่อในนี้
>
> > > แนวคิดเรื่อง AcKernel ก็เริ่มต้นจากจุดที่ผมเรียกว่า <a href="http://
> > > groups.google.com/group/ackernel/web/ackernels-modular-
> > > structure">System Core</a> นี่แหละ เลยอยากจะชวน discuss
> > > กันตรงจุดแรกนี่ก่อน คิดว่ายังไงกันมั่งครับ?
>
> > > --
>
> > > You received this message because you are subscribed to the Google Groups
> > "AcKernel" group.
> > > To post to this group, send email to acke...@googlegroups.com.
> > > To unsubscribe from this group, send email to

> > ackernel+u...@googlegroups.com<ackernel%2Bunsu...@googlegroups.com>


> > .
> > > For more options, visit this group at
> >http://groups.google.com/group/ackernel?hl=en.
>
> > --
>
> > You received this message because you are subscribed to the Google Groups
> > "AcKernel" group.
> > To post to this group, send email to acke...@googlegroups.com.
> > To unsubscribe from this group, send email to

> > ackernel+u...@googlegroups.com<ackernel%2Bunsu...@googlegroups.com>

Dreamer

unread,
Dec 15, 2009, 5:46:30 PM12/15/09
to AcKernel
ตรงนี้ไม่มีอะไรมาก เขียนแยกโปรเจคให้อ้างอิง core ก็จบ ออกแบบดีๆ หน่อย

Zhuq!

unread,
Dec 15, 2009, 6:16:00 PM12/15/09
to AcKernel
ตาม concept ที่คิดเอาไว้ก็คือ System Core จะมีแค่

1. ตารางรหัสผังบัญชี ซึ่งจะเป็นกุญแจหลักในการสร้างสมุดบัญชีแยกประเภท,
การปิดงวดบัญชี, และการสร้างรายงานงบการเงินทั้งหมด

2. ตารางรวบรวมรายชื่อของสมุดบัญชีรายวันทุกเล่ม
ซึ่งใช้บันทึกข้อมูลดิบทางบัญชีทั้งหมด ไม่ว่าจะเป็นสมุดบัญชีทั่วไปของ
System Core เอง หรือเป็นสมุดบัญชีรายวันที่เกิดขึ้นมาจาก modules อื่นๆ
เพื่อใช้เป็น reference ของ System Core ว่า มี table
ไหนบ้างที่ต้องไปไล่เก็บข้อมูลมาให้หมด

3. Module Controller เพื่อใช้เป็นตารางที่กำหนดค่า config
ให้กับสมุดรายวันที่เกิดจากแต่ละ module ว่า จะต้องเอาตัวเลขจาก field
ไหนของมันบ้างมาไว้ที่สมุดชื่ออะไร แล้วต้องใส่ในด้าน Debit หรือ
Credit ... ซึ่งปรกติแล้วทั้งหมดนี้
จะต้องกำหนดโดยนักบัญชีที่ทำงานร่วมกับ implementer ณ เวลาที่ติดตั้งระบบ

ส่วนที่ 3 ก็คือส่วนที่จะเชื่อมโยงทุก modules เข้ามาหา System Core ครับ

Dreamer

unread,
Dec 15, 2009, 6:48:38 PM12/15/09
to AcKernel
ผมก็มองไว้ประมาณนั้น

แต่ส่วนที่ 3 อาจจะไม่ต้องขนาดนั้น เพียงแต่เขียนโปรแกรมควบคุมไว้ ให้
user ไป config เองก็น่าจะได้

Zhuq!

unread,
Dec 15, 2009, 7:54:35 PM12/15/09
to AcKernel
ใช่ครับ ส่วนที่ 3 คือส่วนที่เชื่อมโยงทุก modules เข้าหา System Core
ซึ่งก็แปลว่า ทุก modules จะต้องถูกกำหนดให้มาอ่านค่า config
ของตัวมันกับ System Core ที่ table นี้ โดยการกำหนดรายละเอียด จะต้อง
manual config ลงไปโดย implementer หรือ admin ขององค์กรนั้นๆ โดยตรง
ไม่สามารถกำหนดตายตัวได้ตั้งแต่แรกครับ มันต้อง customizable เสมอ

การที่ users ต้องมีส่วนร่วมในการกำหนดค่า config ที่ว่านี้
เนื่องจากรหัสผังบัญชีเป็นสิ่งที่ไม่มีองค์กรไหนกำหนดรายละเอียดไว้เหมือนกันเลย
แต่เราจำเป็นต้องกำหนดรหัสบัญชีมาตรฐานขึ้นมาระดับหนึ่ง
เพื่อที่จะให้ระบบทำงานได้ตามที่ได้รับการออกแบบไว้
แต่เมื่อจะติดตั้งจริง สิ่งแรกที่ users กับ implementer
ต้องประสานงานกันให้ดีก็คือ การกำหนดรหัสผังบัญชี เพราะนั่นคือ
'หมวดหมู่บัญชี' ที่แต่ละองค์กรกำหนดไว้ในระดับนโยบาย ซึ่งก็จะต้องไล่
config
รูปแบบการบันทึกบัญชีของสมุดรายวันแต่ละเล่มให้อิงกับรหัสผังบัญชีที่ปรับเปลี่ยนไปจากค่า
default

ีuser ที่ทำหน้าที่ admin เท่านั้นแหละครับถึงจะมีสิทธิกำหนดนโยบายตรงนี้
ส่วนจะต้องพึ่งพา implementer ไปตลอดหรือไม่ ขึ้นอยู่กับความยากง่ายของ
interface ที่เราทำ ซึ่งโดย concept แล้ว admin ควรจะเรียนรู้ได้ไม่ยาก
แล้วสามารถดูแล routine ของตัวเองโดยไม่ต้องมี help desk เข้าไปยุ่ง
จะต้องเจอกันอีกทีก็ต่อเมื่ออยากจะมี features ใหม่ๆ ในบาง modules
เท่านั้นก็พอแล้วครับ ;)

รหัสผังบัญชีเป็น table ง่ายๆ แต่ 2 fields เท่านั้นครับ
แต่นั่นคือปัจจัยสำคัญที่ต้อง customize เป็นอันดับแรก แล้วเอาสิ่งที่
customize แล้วมากำหนด pattern
ของการบันทึกบัญชีในสมุดรายวันให้สอดคล้องกับมันต่อไปจนครบทุก modules
ระบบถึงจะกลืนเป็นเนื้อเดียวกับ routine ของ users แต่ละองค์กรได้

Reply all
Reply to author
Forward
0 new messages