Thursday, September 29, 2005

Math: Distance between two lines

เยี่ยมมาก คิดอยู่ตั้งนานว่าจะ proof ทฤษฎีพื้นฐานนี่ได้ยังไง ในที่สุดก็เจอ

Objective: Given two straight lines in 3D:
  • line 1:    r = a + t*b
  • line 2:    r = p  +s*q

    Show that the distance between those two lines are |(a - p).u|
    where u is a unit vector given by b x q / |b x q|.
The distance is the length of line segment that perpendicular to both line 1 and 2. Thus if we can find the length of that line segment we are done. So there are two subproblems now:
  1. Finding direction of the line segment
  2. Finding the length of the line segment that bridge line 1 and 2
To find direction of the line segment cross product can be used because output from cross product is a vector perpendicular to both input vectors. In other word, b x q gives out the direction we want.

To find the length, scalar projection can be applied. If we know a vector that bridges the two lines (in this case it is a - p), we can find the distance between those two lines by calculating scalar projection on the perpendicular vector. Remember that the distance is actually |a - p| cos theta where theta is an angle between (a - p) and the perpendicular vector.

The scalar projection is |a - p|cos theta = | (a - p) . (b x q) | / | b x q| = | (a - p) . u|.

Q.E.D.

Monday, September 26, 2005

Misc: แค่เก็บลิงค์ของเรื่องที่จะมาอ่าน

http://www.manager.co.th/QOL/ViewNews.aspx?NewsID=9480000131381

Life: จะผ่าวิกฤติการเรียนการสอนในไทย

วันนี้อ่านเรื่องราวมาจาก
๑ บล็อกของชานนท์ ซึ่งลิงค์ไปถึงเรื่องอันน่าสนใจคือ http://www.stickmanbangkok.com/Reader/reader1363.htm

๒ ข่าวเกี่ยวกับการผลิตครู http://www.manager.co.th/QOL/ViewNews.aspx?NewsID=9480000131380

ทำให้เราพบว่าตอนนี้สถานะการณ์ด้านการศึกษาไทยอยู่ในขั้นวิกฤติ ในด้านบุคคลเราบกพร่องทั้งสองด้านเลยคือ ตัวผู้เรียนที่ดูเหมือนว่าจะขาดทั้งระเบียบและทรรศนะคติที่ดีต่อการเรียนของตนเอง และตัวผู้สอนที่ดูเหมือนว่าจะขาดความเห็นที่ถูกต้องและกำลังใจที่จะฟันฝ่าปัญหาต่างๆด้านการสอนของตัวเองไปให้ได้

เราต้องหาจุดเริ่มที่จะทำให้เกิดการเปลี่ยนแปลงไปในทางที่ดีให้ได้ สำหรับความบกพร่องในด้านตัวผู้เรียนเราคงไม่สามารถที่จะเริ่มทำการเปลี่ยนที่นั่นได้ เพราะกลุ่มชนพวกนั้นผู้เป็นเหมือนโมฆะบุรุษที่ไม่สามารถจะเปลี่ยนได้ด้วยการอบรมระยะสั้น

แต่ในขณะเดียวกันทางด้านครู แม้เราจะสามารถทำให้พวกเค้ามีจิตวิญญาณของความเป็นครูขึ้นมาได้ แต่พวกเค้ากลับไม่แข็งแกร่งพอที่จะรักษาจิตวิญญาณนั้นได้นานเมื่อเค้าถูกกระทบกับเครื่องบั่นทอนกำลังใจในโลกภายนอก อันได้แก่ตัวอย่างต่อไปนี้
๑. รายได้ที่ค่อนข้างจะน้อย โดยเฉพาะสำหรับผู้สอนที่เก่งๆ
๒. ไม่สามารถตอบสนอง ego ของผู้ที่ปรารถนาความโดดเด่นในทางวัตถุได้ (ผลต่อเนื่องจากข้อที่หนึ่งที่ดูเหมือนว่าจะสำคัญกับคนรุ่นปัจจุบันค่อนข้างมาก)
๓. ความไม่ใส่ใจในของผู้เรียน ที่ทำให้ผู้สอนรู้สึกสับสนและหมดกำลังใจที่จะเตรียมตัวมาทำการสอน พร้อมๆหมดกำลังใจที่จะทำให้ทุกอย่างดูดีขึ้น เพราะอนาคตที่ดีขึ้นในด้านความเป็นครูมันช่างมืดมนเสียเหลือเกิน
๔. แม้กระทั่งผลตอบแทนด้านความยอมรับจากสังคมรอบด้านก็แทบจะไม่มี การประกาศเกียรติคุณของอาจารย์ช่างดูเหมือนจะไม่ได้รับความสนใจจากคนรอบด้านเสียนี่กระไร

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

ไทยเราต้องการอะไรล่ะในตอนนี้ คำตอบก็คือเราต้องการเสาหลักอันเข้มแข็ง (Pillar of Strength) ที่จะเป็นจุดเริ่มต้นใหม่ที่ดีให้กับเราได้

ถ้างั้นเรา(หมายถึงร่างกายและจิตใจของผู้เขียน)จะเริ่มจากไหนดีล่ะ? คำตอบนั้นง่ายนิดเดียวนั่นก็คือ เริ่มจากตัวของเราเอง เราจะต้องฟันฝ่าจุดนี้ไปให้ได้ เพราะเรารู้ตัวของเราดีว่าเราคือ "ผู้ที่เดินทางไกล" เราจะเดินทางไปไกลและฟากฝั่งที่มนุษย์ผู้ด้อยปัญญาจะไปถึงได้ เราจึงได้คัดเลือกเฉพาะสิ่งที่สำคัญๆติดตัวเราไว้เท่านั้น เราได้ละทิ้งความถือตนที่มีขนาดใหญ่ ถือไว้เพียงความสมถะและความอ่อนน้อมที่มีขนาดเล็ก ความถือตนไม่เหมาะกับคนที่จะเดินทางไกลเพราะมันจะทำให้เราเกิดความไม่พึงใจที่จะเดินบนทางอันปราศจากการปรุงแต่งแต่บริบูรณ์ด้วยความหมายแห่งชีวิต ข้อนี้ย่อมทำให้เรารอดพ้นจากอันตรายต่อวิญญาณด้วยเครื่องบั่นทอนกำลังใจที่ ๑ ๒ และ ๔ ได้

แล้วเราจะปกป้องตนจากอันตรายที่ ๓ ได้อย่างไร ข้อนี้มันเป็นไปได้อยู่อย่างเดียวคือ เราต้องมีอุเบกขา และความไม่หวั่นไหวในโลกธรรม เราต้องเป็นผู้ที่มีจิตไตร่ตรองถึงประโยชน์ในบั้นปลาย เพราะ "ผู้ที่มองออกไปไกล" เท่านั้น ที่จะเดินไปถึงเป้าหมายอันไกลโพ้นได้โดยไม่หลงทาง และคู่ควรที่จะเป็นผู้ที่ได้เสพมรรคผลอันเลิศ

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

การแจกแจงข้อดีเป็นสิ่งที่สำคัญมากนะ เพราะหากเราไม่รู้ก็แปลว่าเราไม่ได้เข้าใจถึงจุดมุ่งหมายเลย เมื่อไม่ได้เข้าใจจุดมุ่งหมายสุดท้ายเราก็จะหลงทางหรือล้มเลิกความตั้งใจที่จะไปให้ถึงเป้าหมายนั้น

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

แต่จริงๆแล้วครูควรที่จะออกคำสั่งโดยเหตุผลที่งดงามในเบื้องต้น งดงามในท่ามกลาง และงดงามในท้ายที่สุดต่างหาก (Glorious in the beginning, glorious in the middle and glorious at the end) แล้วเหตุผลนั้นเป็นอย่างไรเล่า สำหรับกรณีนี้เหตุผลเหล่านั้นคือ ผลดีที่จะเกิดกับคนที่เงียบเอง คนรอบข้างของคนที่เงียบ และสังคมโดยรวมของคนที่เงียบ ถึงจุดนี้นายภิญโญก็จะขอแจกแจงเป็นข้อๆไปดังนี้
๑ การที่เค้ามานั่งเรียนนั้นก็เพื่อที่จะรับความรู้จากผู้สอน และนั่นเป็นเวลาที่ดีที่สุดที่จะเงียบแล้วฟัง การคุยกันนั้นสามารถเก็บไว้ทำทีหลังได้ การคุยกันในเวลานี้จะทำให้เสียประโยชน์ในการรับรู้ไป หากคนเราคิดว่าการมานั่งเรียนไม่อาจทำให้เกิดประโยชน์ได้ แล้วจะมานั่งอยู่ที่ตรงนี้ไปทำไม

หากมานั่งอยู่ในชั้นเรียนแล้วกิจกรรมที่จะมีประโยชน์ต่อผู้ที่อยู่ในชั้นเรียนมากที่สุดก็คือการตั้งใจฟังนั่นเอง

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

๓ หากการรู้จักฟังเมื่อควรฟังได้ถือไว้เป็นบรรทัดฐานของสังคมแล้ว อารมณ์ของการใช้ชีวิตของคนในสังคมก็จะดีขึ้นเพราะพวกเค้ารู้จักรับฟังมากขึ้น สิ่งนี้จะถูกขยายไปนอกชีวิตห้องเรียนและกลายเป็นวิถีชีวิตของผู้ที่รู้จักรับฟัง และนั่นจะลดความขัดแย้งในสังคมลงไปโดยอัตโนมัต

(วันนี้ขอพอแต่เท่านี้ก่อน เดี๋ยวมาเขียนต่อพร้อมกับเรียบเรียงข้อความข้างต้นใหม่)
ยกตัวอย่างเรื่อที่ต้องขอให้แจกแจงวิธีคิดออกมาถึงแม้ว่ามันจะผิดก็ตาม

Friday, September 02, 2005

[Thesis] Current Status

1. I have experimented with a lot of variation of the method and never think that optimization can reliably lead to good result. The following shows what I did and result:
1.1. Using bifurcation point of trachea as a reference point gives the same quality of aorta output as using carina. The most difficult part may be finding correct positions of two end points of model.
1.2. Using more model does not mean that we have better chance to succeed. This is really bad news. In CR003 case, using the first model give better output because it detects correct postions of the two end points, although the middle is not quite correct. Using only one model, however, induces high risk of failure.
1.3. Model selection method is not accurate when the image is not isotropic, I think. I must report this to Dr. Higgins.

2. Aortic arch region growing is good in some cases. I'd like to report this stuff honestly in my report. It is good when the edges are quite clear (16-detector cases for example) , but not good at all when the edge is not clear (h005). This suggests me to use allow new parameters for aorta. User shoud know if edges are clear enough or not.

[Dharma] The Five Skhandas

1. รูป 1.สิ่งที่จะต้องสลายไปเพราะปัจจัยต่างๆ อันขัดแย้ง, สิ่งที่เป็นรูปร่างพร้อมทั้งลักษณะอาการของมัน, ส่วนร่างกาย จำแนกเป็น ๒๘ คือ มหาภูต หรือ ธาตุ ๔ และ อุปาทายรูป ๒๔ (= รูปขันธ์ในขันธ์ ๕) 2.อารมณ์ที่รู้ได้ด้วยจักษุ, สิ่งที่ปรากฏแก่ตา (ข้อ ๑ ในอารมณ์ ๖ หรือในอายตนะภายนอก ๖) 3.ลักษณนาม ใช้เรียกพระภิกษุสามเณร เช่น ภิกษุรูปหนึ่ง สามเณร ๕ รูป ; ในภาษาพูดบางแห่งนิยมใช้ องค์


2. เวทนา
ความเสวยอารมณ์, ความรู้สึก, ความรู้สึกสุขทุกข์ มี ๓ อย่าง คือ ๑.สุขเวทนา ความรู้สึกสุขสบาย ๒.ทุกขเวทนา ความรู้สึกไม่สบาย ๓.อทุกขมสุขเวทนา ความรู้สึกไม่สุข ไม่ทุกข์ คือ เฉยๆ เรียกอีกอย่างว่า อุเบกขาเวทนา; อีกหมวดหนึ่งจัดเป็น เวทนา ๕ คือ ๑.สุข สบายกาย ๒.ทุกข์ ไม่สบายกาย ๓.โสมนัส สบายใจ ๔.โทมนัส ไม่สบายใจ ๕.อุเบกขา เฉยๆ; ในภาษาไทย ใช้หมายความว่าเจ็บปวดบ้าง สงสารบ้าง ก็มี

3. สัญญา
การกำหนดหมาย, ความจำได้หมายรู้ คือ หมายรู้ไว้ ซึ่ง รูป เสียง กลิ่น รส โผฏฐัพพะและอารมณ์ที่เกิดกับใจว่า เขียว ขาว ดำ แดง ดัง เบา เสียงคน เสียงแมว เสียงระฆัง กลิ่น ทุเรียน รสมะปราง เป็นต้น และจำได้ คือ รู้จักอารมณ์นั้นว่าเป็นอย่างนั้น ๆ ในเมื่อไปพบเข้าอีก (ข้อ ๓ ในขันธ์ ๕) มี ๖ อย่าง ตามอารมณ์ที่หมายรู้นั้น เช่น รูปสัญญา หมายรู้รูป สัททสัญญา หมายรู้เสียง เป็นต้น; ความหมายสามัญในภาษาบาลีว่าเครื่องหมาย ที่สังเกตความสำคัญว่าเป็นอย่างนั้น ๆ, ในภาษาไทยมักใช้หมายถึง ข้อตกลง, คำมั่น

4. สังขาร ๑.สิ่งที่ถูกปัจจัยปรุงแต่ง, สิ่งที่เกิดจากเหตุปัจจัย เป็นรูปธรรมก็ตาม นามธรรมก็ตาม ได้แก่ขันธ์ ๕ ทั้งหมด, ตรงกับคำว่า สังขตะหรือสังขตธรรม ได้ในคำว่า สังขารทั้งหลายทั้งปวงไม่เที่ยง ดังนี้เป็นต้น ๒.สภาพที่ปรุงแต่งใจให้ดีหรือชั่ว, ธรรมมีเจตนาเป็นประธานที่ปรุงแต่งความคิด การพูด การกระทำ มีทั้งที่ดีเป็นกุศล ที่ชั่วเป็นอกุศล และที่กลาง ๆ เป็นอัพยากฤต ได้แก่เจตสิก ๕๐ อย่าง (คือ เจตสิกทั้งปวง เว้นเวทนาและสัญญา) เป็นนามธรรมอย่างเดียว, ตรงกับสังขารขันธ์ ในขันธ์ ๕ ได้ในคำว่า รูปไม่เที่ยง เวทนาไม่เที่ยง สัญญาไม่เที่ยง สังขารไม่เที่ยง วิญญาณไม่เที่ยง ดังนี้เป็นต้น; อธิบายอีกปริยายหนึ่ง สังขารตามความหมายนี้ยกเอาเจตนาขึ้นเป็นตัวนำหน้า ได้แก่ สัญเจตนา คือ เจตนาที่แต่งกรรมหรือปรุงแต่งการกระทำ มี ๓ อย่างคือ ๑.กายสังขาร สภาพที่ปรุงแต่งการกระทำทางกาย คือ กายสัญเจตนา ๒.วจีสังขาร สภาพที่ปรุงแต่งการกระทำทางวาจา คือ วจีสัญเจตนา ๓.จิตตสังขาร หรือ มโนสังขาร สภาพที่ปรุงแต่งการกระทำทางใจ คือ มโนสัญเจตนา ๓.สภาพที่ปรุงแต่งชีวิตมี ๓ คือ ๑.กายสังขาร สภาพที่ปรุงแต่งกาย ได้แก่ อัสสาสะ ปัสสาสะ คือลมหายใจเข้า ลมหายใจออก ๒.วจีสังขาร สภาพที่ปรุงแต่งวาจา ได้แก่ วิตกและวิจาร ๓.จิตตสังขาร สภาพที่ปรุงแต่งใจ ได้แก่ สัญญาและเวทนา

สังขาร ๒ คือ ๑.อุปาทินนกสังขาร สังขารที่กรรมครอบครอง ๒.อนุปาทินนกสังขาร สังขารที่กรรมไม่ครอบครอง, โดยปริยายแปลว่า สังขารที่มีใจครอง และสังขารที่ไม่มีใจครอง

สังขารทุกข์ ทุกข์เพราะเป็นสังขาร คือเพราะเป็นสภาพอันถูกปัจจัยปรุงแต่งขึ้น จึงต้องผันแปรไปตามเหตุปัจจัยเป็นสภาพอันปัจจัยบีบคั้นขัดแย้ง คงทนอยู่มิได้

สังขารโลก โลกคือสังขาร ได้แก่ชุมชนแห่งสังขารทั้งปวงอันต้องเป็นไปตามธรรมดาแห่งเหตุปัจจัย


5. วิญญาณ ความรู้แจ้งอารมณ์, จิต, ความรู้ที่เกิดขึ้นเมื่ออายตนะภายในและอายตนะภายนอกกระทบกัน เช่น รูปอารมณ์ในเวลาเมื่อรูปมากระทบตา เป็นต้น ได้แก่ การเห็น การได้ยินเป็นอาทิ; วิญญาณ ๖ คือ ๑.จักขุวิญญาณ ความรู้อารมณ์ทางตา(เห็น) ๒.โสตวิญญาณ ความรู้อารมณ์ทางหู (ได้ยิน) ๓.ฆานวิญญาณ ความรู้อารมณ์ทางจมูก(ได้กลิ่น) ๔.ชิวหาวิญญาณ ความรู้อารมณ์ทางลิ้น(รู้รส) ๕.กายวิญญาณ ความรู้อารมณ์ทางกาย (รู้สิ่งต้องกาย) ๖.มโนวิญญาณ ความรู้อารมณ์ทางใจ (รู้เรื่องในใจ)

Wednesday, July 20, 2005

Opinion: จากเรื่อง “สื่อลามก” โลกในหลุมดำของวัยโจ๋

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

ในความเห็นของเรา เราคิดว่าทำอย่างนี้ไปก็ไม่ได้ช่วยอะไรมาก เพราะสิ่งที่จะทำให้คนเราลดกิจกรรมทางเพศได้จริงๆจังๆก็คือ การลดความโลภในความสุข เรามีความเห็นว่าเพราะคนเราโลภในความสุข จึงเิกิดการเสพติดพวกนี้ได้ง่าย กิจกรรมต่างๆถ้ายังมีจุดยืนคือการหาความสุขความบันเทิง มันก็จะไม่พาพวกเขาไปไหน เดี๋ยวก็ตกกลับมาเป็นแบบเดิม

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

สรุป สิ่งที่สำคัญที่สุดคือ สอนให้ระงับความปรารถนาในความสุข ลดการตามใจตนอันไม่นำไปสู่ความเจริญแห่งตน แล้วทุกอย่างไม่ว่าจะเป็นปัญหาเกมส์ออนไลน์ ปัญหาด้านเพศก็จะลดลงไปของมันเอง

อ้างอิง http://www.manager.co.th/QOL/ViewNews.aspx?NewsID=9480000096582

Sunday, July 10, 2005

Thesis: Constant Interval Control Points for PA

กลัวว่าจะทำหายแล้วต้องมานั่งคำนวณค่าใหม่ก็เลยมาลงไว้ที่บล็อกอีกเช่นเคย

int
PaModelBuilder::initPhase1H001( float* arControlPts ) {
float* b = arControlPts;

int nAdjust = -3;

/*** TRUNK ***/
b[ 4+nAdjust] = 136; b[ 5+nAdjust] = 123; b[ 6+nAdjust] = 108;
b[ 7+nAdjust] = 138; b[ 8+nAdjust] = 112; b[ 9+nAdjust] = 115;
b[10+nAdjust] = 140; b[11+nAdjust] = 101; b[12+nAdjust] = 124;
b[13+nAdjust] = 142; b[14+nAdjust] = 89; b[15+nAdjust] = 132;

/*** LEFT ***/
b[16+nAdjust] = 169; b[17+nAdjust] = 200; b[18+nAdjust] = 105;
b[19+nAdjust] = 157; b[20+nAdjust] = 192; b[21+nAdjust] = 97;
b[22+nAdjust] = 146; b[23+nAdjust] = 183; b[24+nAdjust] = 89;
b[25+nAdjust] = 137; b[26+nAdjust] = 169; b[27+nAdjust] = 84;
b[28+nAdjust] = 134; b[29+nAdjust] = 151; b[30+nAdjust] = 91;
b[31+nAdjust] = 133; b[32+nAdjust] = 136; b[33+nAdjust] = 103; //Bifurcation point

/*** RIGHT ***/
b[34+nAdjust] = 127; b[35+nAdjust] = 145; b[36+nAdjust] = 102;
b[37+nAdjust] = 121; b[38+nAdjust] = 153; b[39+nAdjust] = 104;
b[40+nAdjust] = 113; b[41+nAdjust] = 159; b[42+nAdjust] = 106;
b[43+nAdjust] = 104; b[44+nAdjust] = 165; b[45+nAdjust] = 108;
b[46+nAdjust] = 93; b[47+nAdjust] = 167; b[48+nAdjust] = 111;

return 15; //The number of control points.
}


int
PaModelBuilder::initPhase1H002( float* arControlPts ) {
float* b = arControlPts;

int nAdjust = -3;

/*** TRUNK ***/
b[ 4+nAdjust] = 148; b[ 5+nAdjust] = 132; b[ 6+nAdjust] = 147;
b[ 7+nAdjust] = 150; b[ 8+nAdjust] = 121; b[ 9+nAdjust] = 154;
b[10+nAdjust] = 152; b[11+nAdjust] = 111; b[12+nAdjust] = 161;
b[13+nAdjust] = 155; b[14+nAdjust] = 101; b[15+nAdjust] = 170;

/*** LEFT ***/
b[16+nAdjust] = 171; b[17+nAdjust] = 201; b[18+nAdjust] = 139;
b[19+nAdjust] = 165; b[20+nAdjust] = 195; b[21+nAdjust] = 132;
b[22+nAdjust] = 159; b[23+nAdjust] = 184; b[24+nAdjust] = 134;
b[25+nAdjust] = 153; b[26+nAdjust] = 171; b[27+nAdjust] = 135;
b[28+nAdjust] = 147; b[29+nAdjust] = 159; b[30+nAdjust] = 136;
b[31+nAdjust] = 146; b[32+nAdjust] = 145; b[33+nAdjust] = 141; //Bifurcation point

/*** RIGHT ***/
b[34+nAdjust] = 134; b[35+nAdjust] = 145; b[36+nAdjust] = 145;
b[37+nAdjust] = 127; b[38+nAdjust] = 151; b[39+nAdjust] = 149;
b[40+nAdjust] = 123; b[41+nAdjust] = 160; b[42+nAdjust] = 153;
b[43+nAdjust] = 115; b[44+nAdjust] = 166; b[45+nAdjust] = 156;
b[46+nAdjust] = 104; b[47+nAdjust] = 172; b[48+nAdjust] = 158;

return 15; //The number of control points.
}


int
PaModelBuilder::initPhase2H048( float* arControlPts ) {
float* b = arControlPts;

int nAdjust = -3;

/*** TRUNK ***/
b[ 4+nAdjust] = 163; b[ 5+nAdjust] = 128; b[ 6+nAdjust] = 104;
b[ 7+nAdjust] = 169; b[ 8+nAdjust] = 112; b[ 9+nAdjust] = 116;
b[10+nAdjust] = 174; b[11+nAdjust] = 100; b[12+nAdjust] = 133;
b[13+nAdjust] = 182; b[14+nAdjust] = 92; b[15+nAdjust] = 160;

/*** LEFT ***/
b[16+nAdjust] = 200; b[17+nAdjust] = 232; b[18+nAdjust] = 100;
b[19+nAdjust] = 189; b[20+nAdjust] = 220; b[21+nAdjust] = 93;
b[22+nAdjust] = 178; b[23+nAdjust] = 206; b[24+nAdjust] = 87;
b[25+nAdjust] = 167; b[26+nAdjust] = 190; b[27+nAdjust] = 87;
b[28+nAdjust] = 159; b[29+nAdjust] = 169; b[30+nAdjust] = 88;
b[31+nAdjust] = 157; b[32+nAdjust] = 149; b[33+nAdjust] = 97; //Bifurcation point

/*** RIGHT ***/
b[34+nAdjust] = 144; b[35+nAdjust] = 152; b[36+nAdjust] = 101;
b[37+nAdjust] = 134; b[38+nAdjust] = 157; b[39+nAdjust] = 106;
b[40+nAdjust] = 124; b[41+nAdjust] = 163; b[42+nAdjust] = 111;
b[43+nAdjust] = 115; b[44+nAdjust] = 167; b[45+nAdjust] = 117;
b[46+nAdjust] = 103; b[47+nAdjust] = 168; b[48+nAdjust] = 124;

return 15; //The number of control points.
}

Thesis: Variable Interval Control Points for Aorta

This is h001 case. It employs 15 control points

float* b = arControlPts;
int nAdjust = 0; //To adjust point order when we need to make ad hoc insertion/deletion.
// It will be set to zero in final version.

b[1+nAdjust]=96; b[2+nAdjust]=119; b[3+nAdjust]=130;
b[4+nAdjust]=87; b[5+nAdjust]=121; b[6+nAdjust]=113;
nAdjust = -3;
//b[7+nAdjust]=87; b[8+nAdjust]=126; b[9+nAdjust]= 89;
b[10+nAdjust]=90; b[11+nAdjust]=132; b[12+nAdjust]=75;
b[13+nAdjust]=97; b[14+nAdjust]=137; b[15+nAdjust]=63;

////////////

b[16+nAdjust]=103; b[17+nAdjust]=143; b[18+nAdjust]=51;
b[19+nAdjust]=111; b[20+nAdjust]=150; b[21+nAdjust]=43;
b[22+nAdjust]=138; b[23+nAdjust]=174; b[24+nAdjust]=32;
//b[25+nAdjust]=129; b[26+nAdjust]=164; b[27+nAdjust]=36;
nAdjust = -6;
b[28+nAdjust]=150; b[29+nAdjust]=187; b[30+nAdjust]=35;

////////////

b[31+nAdjust]=154; b[32+nAdjust]=207; b[33+nAdjust]=36;
b[34+nAdjust]=156; b[35+nAdjust]=219; b[36+nAdjust]=46;
b[37+nAdjust]=153; b[38+nAdjust]=223; b[39+nAdjust]=58;
b[40+nAdjust]=149; b[41+nAdjust]=230; b[42+nAdjust]=70;
b[43+nAdjust]=143; b[44+nAdjust]=234; b[45+nAdjust]=89;
b[46+nAdjust]=136; b[47+nAdjust]=232; b[48+nAdjust]=123;
b[49+nAdjust]=137; b[50+nAdjust]=219; b[51+nAdjust]=240;

return 15; //The number of control points.

The following is variable interval control points with 22 control points

float* b = arControlPts;
int nAdjust = 0; //To adjust point order when we need to make ad hoc insertion/deletion.
// It will be set to zero in final version.

b[1+nAdjust]=96; b[2+nAdjust]=119; b[3+nAdjust]=130;
b[4+nAdjust]=87; b[5+nAdjust]=121; b[6+nAdjust]=113;
b[7+nAdjust]=87; b[8+nAdjust]=126; b[9+nAdjust]= 89;
b[10+nAdjust]=90; b[11+nAdjust]=132; b[12+nAdjust]=75;
b[13+nAdjust]=97; b[14+nAdjust]=137; b[15+nAdjust]=63;

////////////

b[16+nAdjust]=103; b[17+nAdjust]=143; b[18+nAdjust]=51;
b[19+nAdjust]=111; b[20+nAdjust]=150; b[21+nAdjust]=43;
b[25+nAdjust]=129; b[26+nAdjust]=164; b[27+nAdjust]=36;
b[22+nAdjust]=138; b[23+nAdjust]=174; b[24+nAdjust]=32;
b[28+nAdjust]=150; b[29+nAdjust]=187; b[30+nAdjust]=35;

////////////

b[31+nAdjust]=154; b[32+nAdjust]=207; b[33+nAdjust]=36;
b[34+nAdjust]=156; b[35+nAdjust]=219; b[36+nAdjust]=46;
b[37+nAdjust]=153; b[38+nAdjust]=223; b[39+nAdjust]=58;
b[40+nAdjust]=149; b[41+nAdjust]=230; b[42+nAdjust]=70;
b[43+nAdjust]=143; b[44+nAdjust]=234; b[45+nAdjust]=89;

b[46+nAdjust]=140; b[47+nAdjust]=234; b[48+nAdjust]=100;
b[49+nAdjust]=136; b[50+nAdjust]=232; b[51+nAdjust]=123;
b[52+nAdjust]=135; b[53+nAdjust]=229; b[54+nAdjust]=150;
b[55+nAdjust]=136; b[56+nAdjust]=228; b[57+nAdjust]=171;
b[58+nAdjust]=137; b[59+nAdjust]=226; b[60+nAdjust]=194;

b[61+nAdjust]=139; b[62+nAdjust]=223; b[63+nAdjust]=215;
b[64+nAdjust]=137; b[65+nAdjust]=219; b[66+nAdjust]=240;

return 22; //The number of control points.

Friday, July 08, 2005

Technic: ซอฟต์แวร์ที่ใช้แทน Norton Commander

โปรแกรม File Manger ที่ใช้แทน File Explorer ของวินโดวส์มันมีมากจริงๆ ดูได้จากลิสต์ที่ Wikipedia

http://en.wikipedia.org/wiki/List_of_file_managers

สังเกตให้ดีว่าทั้งที่คนใช้ Mac มากพอสมควรแต่กลับมีออกมาเพิ่มแค่ตัวเดียว แสดงว่าที่ติดมากกับ Mac เลยก็คงจะมีดีพอสมควร ส่วนลินิกซ์มันมีให้เลือกมากเป็นธรรมชาติของมันอยู่แล้ว

ของวินโดวส์ที่เราไปดูมากมีที่ดูเตะตาจริงๆอยู่แค่ตัวเดียวคือ Servant Salamander 2.5
http://en.wikipedia.org/wiki/Servant_Salamander
http://www.altap.cz/

เท่าที่ดูแล้วมันถูกที่สุด และดีที่สุด

Technic: จัดการระบบฐานความรู้ยังไงดี

วันนี้คิดว่าเราน่าจะจัดการระบบฐานความรู้เพื่อการสร้าง ใช้สอย บูรณะ และ ถ่ายทอด ความรู้ความชำนาญและประสบการณ์ให้ได้ แต่ก็ยังไม่ลงตัวว่าควรจะทำยังไงดีบ้างจึงจะได้ผลดีและสะดวก

สำหรับองค์ประกอบก็คิดว่ามันน่าจะมีของอยู่หลายๆส่วนด้วยกันดังนี้
  1. การสำรองไฟล์ข้อมูล
    • การสำเนาข้อมูลที่เขียนลงในกระดาษ (สแกนเข้ามา)
    • การทำดัชนีชื้ถึงความรู้ที่เข้าถึงบ่อยๆเช่น source code
    • การรวบรวม reference (เช่น ลิงค์ไปที่สำคัญๆ)
      3 กับ 4 ในภาพรวมก็คือพวกเดียวกัน
    • ระบบการจัดเก็บเอกสารและงานของตัวเอง
    • ระบบเวอร์ชันคอนโทรล (CVS หรือ Version Cue ทำนองเนี้ย)
    • การบันทึกความรู้ที่ได้รับเข้ามาใหม่ น่าจะมีเป็นเวอร์ชัน ร่าง พรีวิว และ รีวิว
    • การแสดงความรู้ของตัวเองเพื่อให้เข้าถึงง่ายๆ ค้นหา จัดหมวด และ เอาขึ้นเว็บ

    • คิดว่าจะทำข้อมูลเกี่ยวกับงานออกเป็นหลายๆกลุ่มคือ กลุ่มซอร์สโค้ด, กลุ่มอินพุต, กลุ่มเอาต์พุททดลอง, กลุ่มเอาต์พุทสำคัญ, กลุ่มเอกสารข้อความ, เอกสารรูปภาพ, เอกสารไดอะแกรม, เอกสารฐานข้อมูล (พวกเอ็กเซลทำนองนั้น), กลุ่มไบนารีและเอกสารของไบนารีนั้น (พวกของที่ไปดาวน์โหลดมา)

    • พวกของพวกนั้นจะแบ่งออกเป็นสี่ช่วงคือ Whimsical (ร่างแบบมั่วๆเพื่อเป็นจุดเริ่มต้น) Developing (เริ่มรู้แล้วว่าจะเอาอะไรและจะทำยังไง) Preview (เสร็จแล้วแต่ว่ายังไม่ได้ตรวจทานอย่างเป็นระบบ) และ Reviewed (ตรวจทานแล้ว)

      จริงๆแล้วการพัฒนาจะกระทำที่ไดเรกทอรี Whimsical และเมื่อเริ่มรู้แล้วว่าจะใช้อะไรบ้างและไม่ใช้อะไรบ้างก็จะก๊อปส่วนที่คิดว่าจะได้ใช้ไปใส่ที่ Developing การสำรองข้อมูลจะกระทำที่ตรงนี้เป็นหลัก การแยกออกมาเป็นสองส่วนนี้ก็เพราะว่า หากเราสำรองข้อมูลจาก Whimsical state มาไว้ เราจะงงตอนที่เราจะกลับมาเอา เพราะไม่รู้ว่าจะเอาอันไหนดี มันปนกันไปหมด จึงต้องแยกเอาพวกเนื้อๆออกมาสำรอง การสำรองข้อมูลของกลุ่มนี้

      ส่วน Preview คือเวอร์ชันที่ถึงจุดสำคัญๆ (milestone) แต่ก็ยังไม่ได้ตรวจดูดีๆว่าเป็นไงบ้าง ถูกต้องหมดหรือไม่ ส่วน Reviewed คือเวอร์ชันที่เรียกได้ว่าเอาไปส่งให้สาธารณะชนดูได้แล้ว

    • โครงสร้าง Workspace จะถูกแบ่งออกไปตาม software ที่ใช้ ไม่ใช่เป็นไปตามโปรเจ็ค ดังนั้นถ้าโปรเจ็คไหนที่ดันใช้หลายโปรแกรมพัฒนาหน่อยก็จะยุ่งๆหน่อยนะ

    • โง้ว แต่ว่าพวกอินพุตเอาต์พุตและเอกสารประกอบโปรแกรมนี่สิทำจั๋งได๋ดีล่ะ เพราะว่าตอนพัฒนาเราก็น่าจะเขียนเป็นพาธใส่ไปอาจจะยุ่งๆมั่วๆงงๆซึ่งเราคงยอมไม่ได้

      อ๊ะรู้วิธีแก้แล้ว เราควรจะจัดการปัญหานี้ด้วยการเปลี่ยนวิธีทำงาน ในทุกๆโปรเจ็คที่ทำเราจะมี static variables ไว้ทำหน้าที่่เป็นสตริงเพื่อบอก base input/output dir เสมอ วิธีนี้น่าจะใช้ได้ดีนะ

    • แล้วพวก snippet ล่ะ จะทำยังไงดี (หมายเหตุ snippet หมายความรวมถึง procedure ต่างๆเกี่ยวกับเครื่องมือด้วย)
      อืม พวกนี้ต้องมีทั้งเวอร์ชัน รีวิว/รวมศูนย์ และ เวอร์ชันกระจัดกระจาย เวอร์ชันกระจัดกระจายคือพวกที่ทำแบบลวกๆซึ่งเกิดขึ้นระหว่างการพัฒนา โดยจะใส่ไว้ใน ไดเรกทอรีของใครก็ได้ไม่เกี่ยง ส่วนเวอร์ชันแบบรีิวิวนี้จะถูกจัดทำขึ้นแบบ HTML และจะอัพโหลดขึ้นเว็บส่วนตัวเป็นการ publish ไปเลย

      การรีวิวจะทำขึ้นทุกวันอังคารและวันศุกร์คิดซะว่าเป็นการจัดห้องใหม่ แม้แต่ snippet เองก็มีสองเวอร์ชันคือ whimsical และ reviewed และใน whimsical จะมีที่เก็บโค้ดสอบตกกับโค้ดที่สอบผ่าน และโค้ดที่ยังไม่ได้ review

    • เอ้า วกกลับมาเรื่องเอาต์พุตหน่อย เอาต์พุตจะแบ่งไปตามโปรเจ็คและสถานะของมัน โดยที่เอาต์พุตจะมีสามสถานะคือ Whimsical, Maybe and Major ถ้าหาก Output มันดูพอใช้ได้เราจะก๊อปปี้มันไปใส่ไว้ที่ Maybe เผื่ออ้างอิงไว้ในอนาคต และ พอถึงสถานะสำคัญ เช่น จะเอาไปใส่ใน Thesis เราจะเอาไปใส่ไว้ใน Major

    • เรื่องรายงานเราจะแบ่งมันไปตามโปรเจ็ค ภายในไดเรกทอรีรายงานจะแบ่งได้ออกเป็นสามส่วน คือ
      Text, Figures, Diagrams (สภาพที่อีดิตได้ก่อนจะกลายเป็น figures), Databases, Whimsical(ข้างในมี figures, diagrams และ databases), Backup, และ OutsideFiles

      อย่าลืมนะพวก OutsidFiles เราจะไม่ก๊อปไปไว้หลายที่เป็นอันขาด แต่จะทำด้วยการสร้าง link ไปหามันแทน แต่จะมีการทำ Backup แบบรวมศูนย์ไว้ด้วย แต่จะไม่ใช้ที่ตรงนั้นเป็นที่อ้างอิง

      หมายเหตุ หากเป็นข้อความที่สแกนมาจากสมุดตัวเอง ก็ให้เก็บไว้ใน Text ไม่ใช่ Figures

    • พวก reference ทำไงดี ทำเป็น Tree-like menu ใน HTML/Java script เอาก็แล้วกัน สิ่งที่สำคัญก็คือมันจะต้องสามารถชี้ไปที่เอกสารสำคัญบนฮาร์ดดิสก์เราได้ด้วย ซึ่งก็อาจจะทำได้โดยการใส่ base dir ไว้นั่นเอง ส่วนมากก็คือ ลิงค์ไปที่ต่างๆนั่นเอง

      พวกลิงค์นั้น จะอยู่ในกลุ่ม Unsorted หมด จนกว่าจะมีการเรียกใช้ในภายหลังจริง ที่เราทำเช่นนี้ก็เพราะว่าหลายครั้งแล้วที่เราเก็บลิงค์ที่ไม่เคยเข้าไปใช้ไว้มากเหลือเกิน ทำให้เข้าถึงลิงค์ที่ยากเข้าจริงๆลำบากเพราะมันไปเกะกะกันไปหมด

    • ที่เราเลิกใช้บล็อกเป็นแหล่งหลัก ก็เพราะว่าพอนานๆเข้าไปเราก็หาไม่ค่อยเจอเหมือนกัน สงสัยเหมือนกันว่าทำไมเรา search blog ของตัวเองบนเครื่องเราไม่ได้ แต่ดัน search blog ของคนอื่นได้หน้าตาเฉย แถมเวลาใช้เครื่องอื่นก็ดัน search ได้อีกเช่นเดียวกัน งง

      สรุปก็คือการใช้บล็อกยังคงมีอยู่เพื่อเป็น buffer ก่อน review ดังนั้น blog ของเราจะต้องถูกรื่อมาหใหม่หมด แล้วก็จะถูก mark [Reviewed or Unreviewed] ไว้

    • ให้มีไดเรกทอรี Package สำหรับงานที่ส่งมอบด้วย โดยจัดเป็นชุดพร้อมเอกสาร โดยจะมีสองเวอร์ชัน
      1. ToCustomer จะมีแต่ของที่ลูกค้าต้องการจริงๆ
      2. ForReference จะก๊อปปี้ทุกอย่างมาไว้เท่าที่เป็นไปได้ เผื่อว่าฉุกเฉิน

    • พวกเอกสารจะมีกลุ่มที่เป็นความรู้ใหม่ด้วย ยังไม่ได้รับการรีวิวก็ให้ไปทำแบบคล้ายๆกัน โดยเริ่มไปที่ Whimsical, Preview and Reviewed เช่นกัน เอาไปใส่ที่ไดเรกทอรี NewKnowledge โดยที่พวกที่ออกจากสถานะ Preview จะไปที่ Review นั้นก็ให้จัดหมวดหมู่ภายหลังจากนั้น

    • จำไว้ให้ดีว่าเราอยากเอาความรู้เราขึ้นเว็บอย่างแรงกล้า และมีการจัดหมวดหมู่อย่างเรียบร้อยสวยงามนะ

    • เราจะเริ่มที่งานของไทยคลับก่อนละกัน คิดว่า DreamWeaver เราต้องเปลี่ยนไปใช้แบบ FTP แล้วล่ะ มันไม่ยอมให้เราใช้ SAMBA Path ผ่านทางเว็บแล้ว

    (นอกเรื่อง พึ่งสังเกตว่ามันมีปุ่ม "Add Image" ใน Blogger มาให้ด้วยแฮะ ลองใช้ดูหน่อยนะ)











    เอิ้ว ใช้งานได้ดีจริงๆ

    Thursday, July 07, 2005

    Constant Interval Control Points for Aorta

    กลัวว่าจะทำอะไรผิดพลาดแล้วหาข้อมูลเก่าไม่เจอ
    อันนี้เป็นของ Aorta นะ

    int nColAdjust = 104;
    int nRowAdjust = 189;
    int nSlcAdjust = 75;

    int
    AortaModelBuilder::initPhase1H001( float* arControlPts ) {
    float* b = arControlPts;
    int nAdjust = 0; //To adjust point order when we need to make ad hoc insertion/deletion.
    // It will be set to zero in final version.

    b[1+nAdjust]=96; b[2+nAdjust]=119; b[3+nAdjust]=130;
    b[4+nAdjust]=87; b[5+nAdjust]=122; b[6+nAdjust]=104;
    b[7+nAdjust]=89; b[8+nAdjust]=130; b[9+nAdjust]=76;
    b[10+nAdjust]=98; b[11+nAdjust]=139; b[12+nAdjust]=57;
    b[13+nAdjust]=111; b[14+nAdjust]=149; b[15+nAdjust]=42;

    ////////////

    b[16+nAdjust]=128; b[17+nAdjust]=163; b[18+nAdjust]=35;
    b[19+nAdjust]=142; b[20+nAdjust]=180; b[21+nAdjust]=32;
    b[25+nAdjust]=153; b[26+nAdjust]=205; b[27+nAdjust]=38;
    b[22+nAdjust]=152; b[23+nAdjust]=222; b[24+nAdjust]=55;
    b[28+nAdjust]=146; b[29+nAdjust]=230; b[30+nAdjust]=79;

    ////////////

    b[31+nAdjust]=139; b[32+nAdjust]=232; b[33+nAdjust]=106;
    b[34+nAdjust]=136; b[35+nAdjust]=230; b[36+nAdjust]=139;
    b[37+nAdjust]=136; b[38+nAdjust]=227; b[39+nAdjust]=173;
    b[40+nAdjust]=136; b[41+nAdjust]=223; b[42+nAdjust]=207;
    b[43+nAdjust]=137; b[44+nAdjust]=219; b[45+nAdjust]=240;

    return 15; //The number of control points.
    }



    int nColAdjust = 110;
    int nRowAdjust = 195;
    int nSlcAdjust = 80;

    int
    AortaModelBuilder::initPhase1H002( float* arControlPts ) {
    float* b = arControlPts;
    int nAdjust = 0; //To adjust point order when we need to make ad hoc insertion/deletion.
    // It will be set to zero in final version.

    b[1+nAdjust]=112; b[2+nAdjust]=134; b[3+nAdjust]=147;
    b[4+nAdjust]=106; b[5+nAdjust]=135; b[6+nAdjust]=129;
    b[7+nAdjust]=108; b[8+nAdjust]=141; b[9+nAdjust]=113;
    b[10+nAdjust]=117; b[11+nAdjust]=146; b[12+nAdjust]=101;
    b[13+nAdjust]=126; b[14+nAdjust]=153; b[15+nAdjust]=90;

    ////////////

    b[16+nAdjust]=136; b[17+nAdjust]=168; b[18+nAdjust]=88;
    b[19+nAdjust]=141; b[20+nAdjust]=169; b[21+nAdjust]=86;
    b[25+nAdjust]=144; b[26+nAdjust]=184; b[27+nAdjust]=93;
    b[22+nAdjust]=149; b[23+nAdjust]=198; b[24+nAdjust]=101;
    b[28+nAdjust]=152; b[29+nAdjust]=208; b[30+nAdjust]=114;

    ////////////

    b[31+nAdjust]=153; b[32+nAdjust]=216; b[33+nAdjust]=130;
    b[34+nAdjust]=149; b[35+nAdjust]=221; b[36+nAdjust]=147;
    b[37+nAdjust]=146; b[38+nAdjust]=222; b[39+nAdjust]=170;
    b[40+nAdjust]=145; b[41+nAdjust]=223; b[42+nAdjust]=194;
    b[43+nAdjust]=144; b[44+nAdjust]=224; b[45+nAdjust]=219;

    return 15; //The number of control points.
    }


    int
    AortaModelBuilder::initPhase2H048( float* arControlPts ) {
    float* b = arControlPts;
    int nAdjust = 0; //To adjust point order when we need to make ad hoc insertion/deletion.
    // It will be set to zero in final version.

    b[1+nAdjust]=122; b[2+nAdjust]=120; b[3+nAdjust]=123;
    b[4+nAdjust]=120; b[5+nAdjust]=118; b[6+nAdjust]=95;
    b[7+nAdjust]=122; b[8+nAdjust]=122; b[9+nAdjust]=67;
    b[10+nAdjust]=126; b[11+nAdjust]=134; b[12+nAdjust]=49;
    b[13+nAdjust]=134; b[14+nAdjust]=151; b[15+nAdjust]=39;

    ////////////

    b[16+nAdjust]=137; b[17+nAdjust]=157; b[18+nAdjust]=39;
    b[19+nAdjust]=145; b[20+nAdjust]=181; b[21+nAdjust]=37;
    b[25+nAdjust]=150; b[26+nAdjust]=204; b[27+nAdjust]=43;
    b[22+nAdjust]=152; b[23+nAdjust]=221; b[24+nAdjust]=56;
    b[28+nAdjust]=152; b[29+nAdjust]=232; b[30+nAdjust]=75;

    ////////////

    b[31+nAdjust]=151; b[32+nAdjust]=241; b[33+nAdjust]=99;
    b[34+nAdjust]=149; b[35+nAdjust]=244; b[36+nAdjust]=128;
    b[37+nAdjust]=148; b[38+nAdjust]=244; b[39+nAdjust]=161;
    b[40+nAdjust]=146; b[41+nAdjust]=242; b[42+nAdjust]=191;
    b[43+nAdjust]=143; b[44+nAdjust]=240; b[45+nAdjust]=219;

    return 15; //The number of control points.
    }

    Sunday, June 19, 2005

    เทคนิค: Reference and Cross Reference and Tables of Content in Microsoft Word

    1. ทำการสร้างสารบัญ
      จำทำสารบัญสำเร็จได้เวลาพิมพ์เราก็ต้องแบ่งประเภทฟ้อนต์ออกเป็น Heading 1 และ Heading 2 ไม่งั้นจะเป็นเรื่องยุ่งขึ้นมาได้ทันที การใช้ heading 2 จะทำให้มันกลายเป็นหัวข้อรองไปในทันที

      เมื่อมีการเรียกใช้หัวข้อของพวกนี้เสร็จแล้ว ก็หาที่เหมาะๆแล้วใส่สารบัญเข้าไปได้เลย ด้วยการไปที่
      insert -> reference -> Index and Tables จากนั้นก็ไปที่แท็บ Table of Contents แล้วเลือกรูปแบบตามที่เราอยากให้มันเป็น

    2. การทำหมายเลขบท (chapter)
      การทำหมายเลขบทเป็นสิ่งที่สำคัญมาก เพราะไม่อย่างนั้นเราจะพบว่าเวลาที่เราใส่ caption ให้กับรูปหรือตารางมันจะไม่แสดงแสดงเลขบทที่ถูกต้องออกมา เพราะมันไม่รู้ว่าขณะนี้อยู่ในบทที่เท่าไหร่ อย่างไรก็ตามการทำสารบัญไม่จำเป็นต้องใส่หมายเลขบทก็ได้ เพราะว่าสารบัญจะตรวจดูเฉพาะลักษณะของตัวอักษรเท่านั้น

      ขั้นตอนการทำหมายเลขบทก็คือการใส่หมายเลขเข้าไปแบบธรรมดา ขอให้รู้เพิ่มเติมด้วยว่าหากเราต้องการที่จะเปลี่ยนรูปแบบการแสดงหมายเลขบท เป็นต้นว่าแทนที่จะแสดงตัวเลขเฉยๆ แต่ต้องการแสดงเป็น Chapter 1. แทน ในลักษณะเช่นนั้นเราก็ต้องทำการ customize รูปแบบเองซึ่งทำได้ไม่ยาก

      หมายเหตุ การนับเลขบทยังสามารถที่จะนับต่อจากที่นับไว้ก่อนหน้าได้ ทำให้เราสามารถแก้ไขมันได้ ภายหลังจากที่ได้พิมพ์แบบตรงๆดื้อๆไปเยอะ

    3. การทำให้หัวชื่อของรูปหรือตาราง (Caption) สามารถไปปรากฏที่สารบัญภาพและตาราง
      เรื่องนี้ทำได้ง่ายๆตรงไปตรงมา นั่นก็คือ เราจะต้องทำการใส่ชื่อ (Caption) ให้กับรูปหรือตารางเข้าไป โดยการที่คลิกไปที่รูปก่อน จากนั้นก็ไปที่ insert->reference->caption

      เมื่อใส่ชื่อเข้าไปแล้วก็เลือกที่เหมาะๆแล้วก็ inert->reference-> Index and Tables จากนั้นก็ไปที่ Table of Figures แล้วเลือกรูปแบบสารบัญภาพ / ตารางตามความต้องการ

    4. การทำการอ้างอิงไปตรง Reference/Bibliography
      มันต้องเริ่มจากการที่เราใส่หมายเลขของหนังสือหรือบทความเข้าไปก่อนนะ โดยใส่เข้าไปตามปรกติเหมือนกับที่ทำหมายเลขบทนั่นแหละ

      เมื่อใส่หมายเลขเข้าไปแล้วเราก็พร้อมที่จะทำการอ้างอิง โดยไปที่ insert->reference->cross-reference แล้วเลือก "Numbered item"

    5. เรื่องไม่ค่อยดีเกี่ยวกับฟีทเจอร์สารบัญ
      เราพบว่าบางครั้งถ้ารูปเรามันบังเอิญไปเกี่ยวพันกับลักษณะอักษรที่เป็น Heading เมื่อไหร่ มันจะถูกเอาไปใส่ในสารบัญด้วย ทั้งๆที่มันเป็นรูป ในกรณีเช่นนี้ เราจะต้องทำการเปลี่ยนรูปแบบกลับไปเป็น Body text ให้ได้

      แต่ปัญหาก็คือไม่รู้จะเปลี่ยนยังไงดี เพราะคลิกไปที่รูปแล้วกดเปลี่ยนมันก็ยังไม่ได้อีก อาการเช่นนี้ให้เราทำการไฮไลต์มันทั้งบริเวณก่อนและหลังรูป แล้วจัดการแก้เป็น body text ก็จะทำให้ทุกอย่างเสร็จไปได้

    6. อีกปัญหากับ caption
      บางทีเราพบว่า caption ที่เรามีอยู่มันแสดงผลแปลกๆของมันพยายามแก็ก็ไม่สำเร็จ ลักษณะเช่นนี้ขอให้ทำใจไว้เลยว่า "ลบอันเดิมออกเถอะ แล้วใส่อันใหม่เข้าไปแทนที่จะดีกว่านะ" ใส่ใหม่เถอะ เร็วกว่า

    Friday, June 17, 2005

    บันเทิง: เพลงคนตีเหล็ก

    นำมาจาก http://www.beautysheet.com/thai/mg591.html
    เว็บเกี่ยวกับวงคาราวานสามารถเข้าไปได้ที http://www.caravanonzon.com

    คนตีเหล็ก
    คาราวาน

    ..ดนตรี..

        สุมไฟ.ให้แรง
    เหล็กก็แดงคุโชน
    เรายกมันขึ้นทั่ง
    เตรียมถั่งแรงปูดโปน
    เฮเฮไฮ้ ฮึบฮือฮึบ เราลงพะเนิน
    บนเหล็กแดงด้วยไฟ
    ตี.เข้าไปเอ้าตี.เข้าไป
    ดัดแปลงรูปใด
    ย่อมเสร็จได้ด้วยแรง
    ....ดนตรี..........
    ทุ่มกาย.ทุ่มใจ เพื่อให้ไทยเป็นไทย
    ต้องสร้างด้วยไฟ ที่ลุกโชนโชติแดง
    เฮเฮไฮ้.ฮึบฮือฮึบ
    มารวมพลัง สร้างสังคมที่ดี
    ตี.เข้าไป ฮึบตี.เข้าไป
    สร้างโลกสดใส
    ย่อมเสร็จได้ด้วยเรา
    ....ดนตรี..........
    สุมไฟ.ให้แรง
    เหล็กก็แดงคุโชน
    เรายกมันขึ้นทั่ง
    เตรียมถั่งแรงปูดโปน
    เฮเฮไฮ้ ฮึบฮือฮึบ เราลงพะเนิน
    บนเหล็กแดงด้วยไฟ
    ตี.เข้าไปเอ้าตี.เข้าไป
    ดัดแปลงรูปใด
    ย่อมเสร็จได้ด้วยแรง
    ....ดนตรี..........
    ทุ่มกาย.ทุ่มใจ เพื่อให้ไทยเป็นไทย
    ต้องสร้างด้วยไฟ ที่ลุกโชนโชติแดง
    เฮเฮไฮ้.ฮึบฮือฮึบ
    มารวมพลัง สร้างสังคมที่ดี
    ตี.เข้าไป ฮึบตี.เข้าไป
    สร้างโลกสดใส
    ย่อมเสร็จได้ด้วยเรา

    Thursday, June 16, 2005

    เบ็ดเตล็ด: ชอบข่าวนี้

    พึ่งรู้ว่าทางมหาวิทยาลัยมีการมอบรางวัล "มนุษยชน" ให้กับคนที่บำเพ็ญกุศลให้กับมหาลัยด้วย

    อ้างอิง: http://live.psu.edu/story/12430

    "William and Josephine Weiss named Philanthropists of the Year
    Thursday, June 16, 2005

    Penn State has named William L. and Josephine B. Weiss recipients of the 2005 Philanthropists of the Year award in recognition of their longtime commitment to the University as volunteers and donors.

    William Weiss, a 1951 Penn State graduate in industrial engineering, retired in 1994 as chairman and CEO of Ameritech Corp., a Midwestern communications company. Josephine Berry Weiss is a 1950 Penn State graduate in the liberal arts. She has held numerous leadership posts with civic and educational groups in the Chicago area, where the Weisses lived for many years.

    The Philanthropist of the Year award originated in 2002 to recognize outstanding generosity and philanthropic leadership that benefits the Penn State community.

    The Weisses have directed their philanthropy primarily to students and faculty in the Colleges of Engineering and the Liberal Arts, and to the University Libraries.

    "Bill and Jo have supported some of Penn State's highest academic priorities," said Penn State President Graham B. Spanier. "Through scholarships, they have helped many undergraduates who have financial need, and have enabled the University to attract outstanding graduate students. Bill and Jo have been equally generous in sharing their time and talent as volunteers, and have inspired numerous other alumni to make the same kind of commitment. We are truly grateful for all that they have done for Penn State."

    The Weisses are personally involved in their support for students. They established a series of Breakthrough Scholarships for undergraduates in the Colleges of Engineering and the Liberal Arts. These awards, covering 50 percent of tuition, are given to academically talented students who have financial need, show leadership potential and are the first generation in their family to attend college.

    "Bill and I meet with our students in small groups at least annually and often correspond with them individually," said Josephine Weiss. "As we've learned about their career aspirations and personal goals, they have become part of our extended family."

    The Weiss Graduate Scholarships support talented advanced-degree students in these same areas, and bring together selected doctoral candidates from the two colleges to exchange ideas that are beyond the boundaries of their individual disciplines and to learn from distinguished guest scholars. The two awards programs combined are expected to help more than 250 students over the period of the gift.

    "Jo and I met while we were students at the University, and Penn State has played an important role in our lives ever since," noted William Weiss. "We'd like others to experience the same kinds of opportunities and benefits that we did."

    In addition, the couple has endowed faculty fellowships in engineering and the liberal arts and the Josephine Berry Weiss chair in the humanities, and designated support for the University Libraries collections and equipment.

    William Weiss also has served in a number of volunteer leadership capacities in support of Penn State's private fund-raising efforts. Most recently he was a vice chair of the Grand Destiny capital campaign that raised $1.37 billion in philanthropy between 1996 and 2003. He served as a trustee of the University from 1994 to 2003, and also was a member of the board of directors of Penn State Milton S. Hershey Medical Center.

    A Big Run native, Weiss joined Bell Telephone upon graduating from Penn State. He was named chairman and CEO of Ameritech (now part of SBC Communications) in 1984, following a career with Bell companies in Pennsylvania, Wisconsin, Indiana and Illinois.

    Josephine Weiss has been involved as a volunteer leader with such diverse organizations as the Chicago Child Care Society, the Women's Board of Northwestern University, and Chicago Museum of Science and Industry."

    บันทึก: June 16, 2005

    1. กลัวว่าจะทำ control point ต้นฉบับหายก็เลยเอามาเซฟไว้ที่นี้ด้วย

      int
      PaModelBuilder::initPhase1H001( float* arControlPts ) {
      float* b = arControlPts;

      int nAdjust = -3;

      /*** TRUNK ***/
      b[ 4+nAdjust] = 137; b[ 5+nAdjust] = 122; b[ 6+nAdjust] = 109;
      b[ 7+nAdjust] = 138; b[ 8+nAdjust] = 117; b[ 9+nAdjust] = 112;
      b[10+nAdjust] = 140; b[11+nAdjust] = 107; b[12+nAdjust] = 121;
      b[13+nAdjust] = 142; b[14+nAdjust] = 89; b[15+nAdjust] = 132;

      /*** LEFT ***/
      b[16+nAdjust] = 169; b[17+nAdjust] = 200; b[18+nAdjust] = 105;
      b[19+nAdjust] = 146; b[20+nAdjust] = 187; b[21+nAdjust] = 89;
      b[22+nAdjust] = 137; b[23+nAdjust] = 168; b[24+nAdjust] = 84;
      b[25+nAdjust] = 136; b[26+nAdjust] = 160; b[27+nAdjust] = 85;
      b[28+nAdjust] = 134; b[29+nAdjust] = 148; b[30+nAdjust] = 93;
      b[31+nAdjust] = 133; b[32+nAdjust] = 136; b[33+nAdjust] = 103; //Bifurcation point

      /*** RIGHT ***/
      b[34+nAdjust] = 128; b[35+nAdjust] = 146; b[36+nAdjust] = 102;
      b[37+nAdjust] = 121; b[38+nAdjust] = 155; b[39+nAdjust] = 105;
      b[40+nAdjust] = 109; b[41+nAdjust] = 163; b[42+nAdjust] = 107;
      b[43+nAdjust] = 100; b[44+nAdjust] = 167; b[45+nAdjust] = 109;
      b[46+nAdjust] = 93; b[47+nAdjust] = 168; b[48+nAdjust] = 112;

      return 15; //The number of control points.
      }

      int
      PaModelBuilder::initPhase1H002( float* arControlPts ) {
      float* b = arControlPts;

      int nAdjust = -3;

      /*** TRUNK ***/
      b[ 4+nAdjust] = 148; b[ 5+nAdjust] = 135; b[ 6+nAdjust] = 146;
      b[ 7+nAdjust] = 150; b[ 8+nAdjust] = 127; b[ 9+nAdjust] = 150;
      b[10+nAdjust] = 151; b[11+nAdjust] = 120; b[12+nAdjust] = 155;
      b[13+nAdjust] = 155; b[14+nAdjust] = 101; b[15+nAdjust] = 170;

      /*** LEFT ***/
      b[16+nAdjust] = 171; b[17+nAdjust] = 201; b[18+nAdjust] = 139;
      b[19+nAdjust] = 167; b[20+nAdjust] = 200; b[21+nAdjust] = 131;
      b[22+nAdjust] = 159; b[23+nAdjust] = 182; b[24+nAdjust] = 135;
      b[25+nAdjust] = 148; b[26+nAdjust] = 162; b[27+nAdjust] = 135;
      b[28+nAdjust] = 147; b[29+nAdjust] = 154; b[30+nAdjust] = 138;
      b[31+nAdjust] = 146; b[32+nAdjust] = 145; b[33+nAdjust] = 141; //Bifurcation point

      /*** RIGHT ***/
      b[34+nAdjust] = 126; b[35+nAdjust] = 145; b[36+nAdjust] = 149;
      b[37+nAdjust] = 129; b[38+nAdjust] = 155; b[39+nAdjust] = 150;
      b[40+nAdjust] = 122; b[41+nAdjust] = 162; b[42+nAdjust] = 154;
      b[43+nAdjust] = 118; b[44+nAdjust] = 165; b[45+nAdjust] = 157;
      b[46+nAdjust] = 104; b[47+nAdjust] = 172; b[48+nAdjust] = 158;

      return 15; //The number of control points.
      }

      int
      PaModelBuilder::initPhase2H048( float* arControlPts ) {
      float* b = arControlPts;

      int nAdjust = -3;

      /*** TRUNK ***/
      b[ 4+nAdjust] = 162; b[ 5+nAdjust] = 134; b[ 6+nAdjust] = 100;
      b[ 7+nAdjust] = 168; b[ 8+nAdjust] = 116; b[ 9+nAdjust] = 113;
      b[10+nAdjust] = 176; b[11+nAdjust] = 96; b[12+nAdjust] = 136;
      b[13+nAdjust] = 182; b[14+nAdjust] = 92; b[15+nAdjust] = 160;

      /*** LEFT ***/
      b[16+nAdjust] = 200; b[17+nAdjust] = 232; b[18+nAdjust] = 100;
      b[19+nAdjust] = 180; b[20+nAdjust] = 211; b[21+nAdjust] = 86;
      b[22+nAdjust] = 162; b[23+nAdjust] = 183; b[24+nAdjust] = 88;
      b[25+nAdjust] = 159; b[26+nAdjust] = 168; b[27+nAdjust] = 88;
      b[28+nAdjust] = 157; b[29+nAdjust] = 158; b[30+nAdjust] = 93;
      b[31+nAdjust] = 157; b[32+nAdjust] = 149; b[33+nAdjust] = 97; //Bifurcation point

      /*** RIGHT ***/
      b[34+nAdjust] = 141; b[35+nAdjust] = 154; b[36+nAdjust] = 103;
      b[37+nAdjust] = 128; b[38+nAdjust] = 160; b[39+nAdjust] = 109;
      b[40+nAdjust] = 122; b[41+nAdjust] = 167; b[42+nAdjust] = 113;
      b[43+nAdjust] = 114; b[44+nAdjust] = 168; b[45+nAdjust] = 118;
      b[46+nAdjust] = 103; b[47+nAdjust] = 168; b[48+nAdjust] = 124;

      return 15; //The number of control points.
      }

    2. Method to improve the result for all cases:
      Because of the number of control points is too small to address some complex curves of blood vessels, we can make additional recovery. The recovery process can be done in two folds: 1. Perpendicular to the axis (maybe more suitable for pulmonary artery)
      2. Independently from the axis by starting from 3 crucial points (for aorta)

    3. Things needed to be investigated:
      • Change the propotion of weight in optimization process (ลองแล้ว ก็ไม่ค่อยเปลี่ยน)
      • Independent search for each part of pulmonary artery (ไม่ค่อย make sense แ่ต่ก็จะลอง)
      • Make an explicit backup of best control points in global optimization process (ลองแล้วเหมือนเดิม)
      • Increase the number of control points to check if there is any improvement
      • Make an x-y scaling of coordinates before start model matching (ลองแล้วไม่ค่อยได้ผล)
      • I now know the reason of failure. The angle of the three parts of pulmonary artery is different from person to person. Although we try to add more models, it is very likely that the problem still persists. However, locating bifurcation point of Pa is reliable enough to do additional recovery.

    Tuesday, June 14, 2005

    ธรรมะ: คำศัพท์ที่น่าสนใจในพุทธศาสนา

    อ้างอิงจาก http://www.dhammalife.com/dhamma/vocab/
    1. สมถะ ธรรมเป็นเครื่องสงบระงับจิต, ธรรมยังจิตให้สงบระงับจากนิวรณูปกิเลส, การฝึกจิตให้สงบเป็นสมาธิ (ข้อ ๑ ในกรรมฐาน ๒ หรือภาวนา ๒)

    2. สมถกัมมัฏฐาน กรรมฐานคือสมถะ, งานฝึกจิตให้สงบ ดู สมถะ

    3. สมณะ ผู้สงบ หมายถึงนักบวชทั่วไปแต่ในพระพุทธศาสนา ท่านให้ความหมายจำเพาะ หมายถึงผู้ระงับบาป ได้แก่ พระอริยบุคคล และผู้ปฏิบัติธรรมเพื่อระงับบาป ได้แก่ผู้ปฏิบัติธรรมเพื่อเป็นพระอริยบุคคล

    4. กัมมัฏฐาน ที่ตั้งแห่งการงาน, อารมณ์เป็นที่ตั้งแห่งการงานของใจ, อุบายทางใจ, วิธีฝึกอบรมจิต มี ๒ ประเภท คือ สมถกัมมัฏฐาน อุบายสงบใจ ๑ วิปัสสนากัมมัฏฐาน อุบายเรืองปัญญา ๑ (นิยมเขียน กรรมฐาน) ดู ภาวนา - subjects of meditation; meditation exercises; the act of meditation or contemplation; ground for mental culture.

      กัมมัฏฐาน ๔๐ คือกสิณ ๑๐ อสุภะ ๑๐ อนุสสติ ๑๐ พรหมวิหาร ๔ อาหาเรปฏิกูลสัญญา ๑ จตุธาตุววัตถาน ๑ อรูป ๔

    5. อนุสติ ความระลึกถึง, อารมณ์ที่ควรระลึกถึงเนืองๆ มี ๑๐ อย่าง คือ ๑) พุทธานุสติ ระลึกถึงคุณของพระพุทธเจ้า ๒) ธัมมานุสติ ระลึกถึงคุณของพระธรรม ๓) สังฆานุสสติ ระลึกถึงคุณของพระสงฆ์ ๔) สีลานุสติ ระลึกถึงศีลที่ตนรักษา ๕) จาคานุสติ ระลึกถึงทานที่ตนบริจาคแล้ว ๖) เทวตานุสติ ระลึกถึงคุณที่ทำคนให้เป็นเทวดา ๗) มรณัสสติ ระลึกถึงความตายที่จะต้องมีเป็นธรรม ๘) กายคตาสติ ระลึกทั่วไปในกายให้เห็นว่าไม่งาม ๙) อานาปานสติ ตั้งสติกำหนดลมหายใจเข้าออก ๑๐) อุปสมานุสติ ระลึกถึงธรรมเป็นที่สงบระงับกิเลสและความทุกข์ คือ นิพพาน

    6. อนุสัย กิเลสที่แฝงตัวนอนเนื่องอยู่ในสันดาน มี ๗ คือ ๑) กามราคะ ความกำหนัดในกาม ๒) ปฏิฆะ ความหงุดหงิด ๓) ทิฏฐิ ความเห็นผิด ๔) วิจิกิจฉา ความลังเลสัยสัย ๕) มานะ ความถือตัว ๖) ภวราคะ ความกำหนดในภพ ๗) อวิชชา ความไม่รู้จริง

    7. สติปัฏฐาน ธรรมเป็นที่ตั้งแห่งสติ, ข้อปฏิบัติมีสติเป็นประธาน, การตั้งสติกำหนดพิจารณาสิ่งทั้งหลายให้รู้เห็นเท่าทันตามความเป็นจริง, การมีสติกำกับดูสิ่งต่าง ๆ และความเป็นไปทั้งหลาย โดยรู้เท่าทันตามสภาวะของมัน ไม่ถูกครอบงำด้วยความยินดียินร้าย ที่ทำให้มองเห็นเพี้ยนไปตามอำนาจกิเลส มี ๔ อย่างคือ ๑.กายานุปัสสนา สติปัฏฐาน การตั้งสติกำหนดพิจารณากาย, การมีสติกำกับดูรู้เท่าทันกายและเรื่องทางกาย ๒.เวทนานุปัสสนา สติปัฏฐาน การตั้งสติกำหนดพิจารณาเวทนา, การมีสติกำกับดูรู้เท่าทันเวทนา, ๓.จิตตานุปัสสนา สติปัฏฐาน การตั้งสติกำหนดพิจารณาจิต, การมีสติกำกับดูรู้เท่าทันจิตหรือสภาพและอาการของจิต ๔.ธัมมานุปัสสนา สติปัฏฐาน การตั้งสติกำหนดพิจารณาธรรม, การมีสติกำกับดูรู้เท่าทันธรรม; เรียกสั้น ๆ ว่า กาย เวทนา จิต ธรรม

    ลิงค์: หนังสือทฤษฎีกราฟ

    ไปเจอมาที่บล็อกของคุณ bact http://bact.blogspot.com/2005/06/introductory-graph-theory-books.html

    "ไปถาม ๆ ไว้ในหน้าพูดคุยของหัวข้อทฤษฎีกราฟ ที่วิกิพีเดียภาษาไทย ว่าอยากได้หนังสือที่แนะนำเกี่ยวกับทฤษฎีกราฟหน่อย เอาแบบตัวอย่างเยอะ ๆ อยากจะรื้อฟื้นเรื่องนี้ หลังจากทิ้งไปนานพอสมควร เพราะดูท่าจะได้ใช้เยอะขึ้นในอนาคต

    ไม่ทันไร คุณไร้สติ ก็แนะนำหนังสือมาเป็นชุด:

    ทั้งหมดดาวน์โหลดมาอ่านได้ – โซ คู่น

    million thanks ;)"

    Sunday, June 12, 2005

    บันทึก: June 11, 2005

    1. จะวัด relative time จากจุดที่สนใจ
      เราสามารถใช้ GetTickCount() ได้ โดยที่ฟังก์ชันนี้ปรกติจะคืน เวลาในหน่วย millisecond นับตั้งแต่เปิดเครื่องขึ้นมาให้เรา

    2. การใช้ class-member static variable ใน C++
      วิธีใช้ค่อนข้างจะจุกจิกเล็กน้อยสำหรับ C++ นอกจากเราจะต้องทำการประการไว้ที่ header ของคลาสแล้ว เราจะต้องทำการ initialize มันในระดับ global ด้วย (โดยปรกติกจะ init ไว้หน้า main function)
      ตัวอย่าง
      class ExperimentLog
      {
      public:
      static fstream* fileLog;

      static void initFileLog( CString strDirName, CString strFileName );
      static void writeCoordinate( int x, int y, int z );
      static void writeAffineParams( float arAffineParam[] );
      static void writePts( float arPts[], int nNumPts );
      static void writeCurvePtsWithDistance( float arPts[], int nNumPts );


      ExperimentLog(void);
      ~ExperimentLog(void);

      private:
      static char bufX[8];
      static char bufY[8];
      static char bufZ[8];

      public:
      static void test(void);
      };

      //Initialize static members
      fstream* ExperimentLog::fileLog = NULL;
      char ExperimentLog::bufX[8];
      char ExperimentLog::bufY[8];
      char ExperimentLog::bufZ[8];

      void main() { ... }

    3. การแปลงเลขทศนิยมให้เป็น string
      มีฟังก์ชันที่ทำหน้าที่นี้ได้อยู่สามตัวคือ _fcvt, _ecvt และ _gcvt แต่ก็ไม่มีอันไหนใช้ง่ายซะทีเดียว ที่ลองใช้มาพบว่าแบบ scienctific น่ะดีที่สุดแล้ว (คือใช้ _gcvt นั่นเอง)
      ตัวอย่าง
      const int nPrecision = 9;

      char* bufAffine = new char[20];
      //int nDecimalLocation, nSign;
      int nDotPosition;

      CString strInitial = "Z Axis (radian): ";
      _gcvt( arAffineParam[1], nPrecision, bufAffine );
      *fileLog << strinitial = "X Axis (radian): ">

    ธรรมะ: ภาพของพุทธสาวกสองคนแรกในพุทธศาสนา

    ภาพพุทธประวัติ
    ฝีมือครูเหม เวชกร จิตกรมือหนึ่งของไทย





    สองพาณิชถวายข้าวสัตตุผงก้อนสัตตุผง แล้วทูลปฎิญาณตนเป็นอุบาสกคู่แรก ในโลก [๓๑]

    ภาพนี้เอามาจาก http://www.dhammalife.com/
    ภาพพร้อมคำบรรยายแบบละเอียดดูได้ที่ http://www.dhammalife.com/buddha/pixbio/ (อ้างอิงเลขที่ 31 )

    นี่ มีการแจกซีดีธรรมะฟรีด้วยนะ สามารถติดต่อได้ที่ http://www.cdthamma.com/

    มีซีดีที่อยากได้ดังนี้
    1. CD001 ซีดีพระไตรปิฏก รวม 3 ชุด
    http://www.cdthamma.com/titles/cd001_050/cd001.htm
    2. CD015 ซีดีธรรมปรารภเพื่อสติปัฏฐาน หลวงพ่อคำเขียน สุวัณโณ
    http://www.cdthamma.com/titles/cd001_050/cd015.htm
    3.
    CD006 พระธรรมเทศนา โดย พระพรหมคุณาภรณ์ (ป.อ.ปยุตฺโต)
    http://www.cdthamma.com/titles/cd001_050/cd006.htm
    4.
    พระธรรมเทศนา โดย พระราชพรหมยาน( หลวงพ่อฤาษีลิงดำ ) วัดท่าซุง อ.เมือง จ.อุทัยธานี
    http://www.cdthamma.com/titles/cd001_050/cd024.htm

    ธรรมะ: นิยามของคำว่าอบายมุข

    วันนี้สนใจคำว่าอบายมุขขึ้นมา จึงลองเปิดพจนานุกรรมพระไตรปิฎกดู
    (อ้างอิง: http://www.dhammalife.com/dhamma/vocab/)

    พบว่านิยามในศาสนาแบ่งคำแปลออกเป็นสองหมวดดังนี้
    อบายมุข ช่องทางของความเสื่อม, เหตุเครื่องฉิบหาย, เหตุย่อยยับแห่งโภคทรัพย์, ทางแห่งความพินาศ

    มี ๔ อย่าง
    คือ ๑) เป็นนักเลงหญิง ๒) เป็นนักเลงสุรา ๓) เป็นนักเลงการพนัน ๔) คบคนชั่วเป็นมิตร;

    อีกหมวดหนึ่งมี ๖ อย่าง คือ ๑) ติดสุราและของมึนเมา ๒) ชอบเที่ยวกลางคืน ๓) ชอบเที่ยวดูการเล่น ๔) เล่นการพนัน ๕) คบคนชั่วเป็นมิตร ๖) เกียจคร้านการงาน
    สิ่งที่อยากให้สังเกตก็คือความเกียจคร้านการงานก็คือทางสู่ความเสื่อมเช่นกัน