[Math] How to find drop rate after killing “x” monsters

English version available after the break. Summary: we are talking about how to find out the number of monster kills necessary to get a number of drops using statistics.

อีกประโยชน์ของวิชา prob stat: คำนวณว่าต้องตีมอนกี่ตัวถึงจะมีโอกาสเก็บ rare drop ได้ครบ โดยใช้ negative binomial distribution (Pascal distribution?)

สิ่งที่เราอยากรู้คือ CDF (cumulative distribution function) ไม่ใช่ PDF (probability density function) เพราะ PDF เป็นการบอกว่าจะได้ของครบที่การตี x ตัว แต่ CDF จะบอกเราว่าเมื่อเราตีไปแล้ว x ตัว โอกาสที่เราจะได้ของครบ (นับตั้งแต่การตีตัวแรก) เป็นเท่าไหร่

ยกตัวอย่างการตีความ จะได้ว่า
– PDF ที่ x = 5000 มี P(X=5000) = 0.001 แสดงว่า ความน่าจะเป็นที่ของดรอปครบตอนตีมอนได้ 5000 ตัวพอดีอยู่ที่ 0.001 หรือ 0.1%
– CDF ที่ x = 5000 มี P(X<=5000) = 0.6 แสดงว่า ความน่าจะเป็นที่ของดรอปครบตอนตีมอนไปแล้ว 5000 ตัวอยู่ที่ 0.6 หรือ 60% (อาจจะครบก่อนหน้านี้ก็ได้)

ฟังก์ชันใน Wolfram Alpha ชื่อ NB(r,p) โดยให้ r = จำนวนของที่จะใช้ และ p = drop rate
สำหรับ MATLAB หรือ octave สามารถใช้ nbinpdf และ nbincdf ในการหาค่าจาก PDF และ CDF ได้

plot

ภาพข้างบนแสดงให้เห็นความแตกต่างระหว่าง PDF ที่เป็นการแสดงโอกาสรายครั้ง กับ CDF ที่เป็นการบวกสะสม PDF อีกที จะเห็นว่า PDF มีรูปคล้าย (แต่ไม่ใช่) รูประฆัง ในขณะที่ CDF เป็นรูปตัวเอส (ทั้งนี้ เนื่องจากจำนวนมอนที่เราตีเป็นจำนวนเต็มเสมอ จริงๆ กราฟทั้งสองต้องแสดงจุด ไม่ใช่เส้น แต่ช่างมันเหอะ ไม่งั้นมองไม่เห็น)

เปิดวาร์ป

Continue reading [Math] How to find drop rate after killing “x” monsters

[Python] ผำควนโดยพอนไธ / Thai Spoonerism with Python

จากโจทย์ที่มีโกนพาสเบ็นหนด ว่วยด้าการสร้างควนผำ http://www.pagist.info/7331317

ผึงจมดำไถ้แปรมโกผำควนข้ามึนเป็นภาษาพอนไธ

 
juannam = len
jemnuantam = int
rut_inpaw = raw_input
 
def tamkad(kam):
    sara = {'a','e','i','o','u'}
    for akkirata in range(juannam(kam)):
        if kam [akkirata]  in sara:
            return (kam [:akkirata] ,kam [akkirata:] )
    return kam
 
def pangpayuan(paekyangra, pangyangla):
    (payanchanaektonpayangra, sianglangpaekyangra) = tamkad(paekyangra)
    (payanchanangtonpayangla, sianglangpangyangla) = tamkad(pangyangla)
    return (payanchanaektonpayangra+sianglangpangyangla, payanchanangtonpayangla+sianglangpaekyangra)
 
def pamkuan(kam):
    pangya = kam.split()
    if juannam(pangya) < 2: #mai tueng sung kom pai mai duan
        return kam
    lamdabkaektipuankamram, lamdabkangtipuankamram = (juannam(pangya)/2-1, juannam(pangya)-1)
    (pangya [lamdabkaektipuankamram] , pangya [lamdabkangtipuankamram] ) = pangpayuan(pangya [lamdabkaektipuankamram] , pangya [lamdabkangtipuankamram] )
    return ' '.join(pangya)
 
def main():
    jamnuankam = jemnuantam(rut_inpaw())
    for kitam in range(jamnuankam):
        print pamkuan(rut_inpaw())
    return
 
main()
 

ป.ล. มันยากอีตรงผวนโค้ดนี่แหละ = =”

Review: Hazard 4 big-koala Smart Phone Pouch

วันนี้ผมไปซื้อเจ้า Hazard 4 big-koala Smart Phone Pouch มาจากร้านแห่งหนึ่งที่ดิโอลด์สยาม ราคาอยู่ที่ 700 บาท จริงๆ ผมก็เล็งๆ ไว้ตั้งแต่ตอนที่พบว่า Maxpedition ไม่ค่อยมีขายในไทย (อย่างมากก็กระเป๋า ไม่ค่อยมี pouch ขายเท่าไหร่) หรือพวก 5.11 ก็ดูตำร๊วจตำรวจ (ก็สีออกจะดำดอทคอมซะขนาดนั้น) แถมเล็กอีกต่างหาก
So today I got a Hazard 4 big-koala Smart Phone Pouch from a shop down at The Old Siam Plaza. It was 700 Baht, and I was really looking at this as the Maxpedition is not widely sold in Thailand, and 5.11’s are too small and look “too policey” due to their black color.

ก่อนอื่น ขอแจ้งให้ทราบว่าภาพทั้งหมดในโพสนี้จะเป็น CC-BY-NC-SA 3.0 ไม่ใช่แบบปกติที่เราทำ เพราะผมไม่อยากให้มีใครเอาไปใช้ในกระทู้ขายของตามเว็บต่างๆ นอกจากนี้ผมขอบังคับว่าห้ามลบลายน้ำ (อย่างเป็นทางการ) เนื่องจากผมต้องการให้ท่านอ้างอิงที่มาตามเงื่อนไข BY ด้วยลายน้ำ (และด้วยลายน้ำเท่านั้น) ผมจะไม่พูดซ้ำสำหรับการรีวิวหรือขายสินค้าอื่นๆ ดังนั้นขอให้อ่านต่อไปได้เลยครับ
First up, let me be clear: This is a commercial product post. All images are CC-BY-NC-SA 3.0, not the usual rules. This is to prevent my images from being listed in catalogs and “customer testimonies” et cetera. I also explicitly require that the watermark is left intact: the BY clause allows me to specify how attribution is done, and the watermark is the only attribution required and acceptable in this case. I will not say this paragraph again for future products, so please enjoy the rest of the entry!

h4bigkoala-01

ตอนผมซื้อมามันก็ไม่มีซองหรืออะไรใส่มาครับ ที่ร้านก็วางไว้ในตู้เฉยๆ เลย ถ้าใครไปร้านจะเห็นว่ามันเล็กมากเมื่อเทียบกับของอื่นๆ เหมือนกัน ด้านหน้าของเจ้านี่จะมีตรา Hazard 4 เป็นยางนูนที่แกะออกไม่ได้เป็นสำคัญ
There was no package with this product; the shop just kept the thing in a locked cabinet. It’s a small product when compared to those bags, really. The front features a non-removable Hazard 4 3D logo, their trademark and distinctive design.

ทั้งนี้ หากต้องการเทียบสี ขอให้เทียบกับภาพนี้และภาพต่อไปเป็นหลัก ภาพอื่นๆ สีค่อนข้างจะเพี้ยนตอนแก้แสงครับ
If you are looking for color reference, please use this and the next pictures only. The rest varies a lot during the exposure correction process.

h4bigkoala-02

ด้านหลังเป็นจุดยึดแบบ MOLLE ที่ค่อนข้างจะแตกต่างจาก MOLLE ปกติ และพวก ALICE clip สมัยเรียน รด. สำหรับแบบที่ใส่มาให้นี้จะใช้แป๊กติดแล้วร้อยเข็มขัดได้ด้วยครับ อย่างไรก็ตาม ตัวสายยึดเองไม่สามารถถอดออกได้
The back is a MOLLE-compatible attachment point, which seems to be different from normal MOLLE, and the ALICE clips I used during my ROTC years. This design allows it to be worn on a belt as well. The attachment string however is not removable, like 5.11 SlickSticks and opposed to Maxpedition Tacties.

h4bigkoala-03

ถ้าจะใส่กับเข็มขัด ก็แกะแป๊ก (ขอเรียกแบบนี้ก็แล้วกัน) ออกมา ร้อยเข็มขัด แล้วเอาแป๊กติดกลับลงไป ง่ายๆ ได้ใจความ
You can simply open the tacks (what are those buttons called?) and insert a belt in, then close it back. This design is simple yet effective.

h4bigkoala-04

ถ้าจะติดกับ MOLLE PALS ก็ต้องดึงสายยึดออกมาซะก่อน
If you want to attach it to a MOLLE-style PALS webbing however you have to pull the strings out.

h4bigkoala-05

ดึงจนออกมาข้างบนเลย ซึ่งข้างบนจะมี d-ring สองอันสำหรับห้อย pouch นี้จากอย่างอื่นได้ด้วย ถ้าต้องการ
Pull it all the way back to the top. The top features two d-rings side-by-side, which can be used to hang the big-koala off something else.

h4bigkoala-06

Pouch นี้มีช่องเดียวเท่านั้น ติดด้วยตีนตุ๊กแก เวลาแกะจะเสียงดังมาก เพราะฉะนั้นถ้าไม่ชอบเสียงดังก็เอาตีนตุ๊กแกมาปิดไว้ จะได้ลดพื้นที่สัมผัสลง
The main and only compartment is closed shut by a large hook-and-loop pair. It produces a very loud noise when operated, so I think you should put some hook tape on the loop field to reduce the contact area if you need silence.

h4bigkoala-07

ด้านในจะเป็นผ้าอ่อนแบบชามัวร์ ปกป้องมือถือที่คุณรักได้เป็นอย่างดี
The inside is padded with a chamois-like fabric, protecting your beloved smartphone.

h4bigkoala-08

Pouch นี้สามารถใส่ Samsung Galaxy SII ที่ใส่ case ของ Baseus ได้สบายๆ นอกจากนี้ถ้าพยายามยัดๆ หน่อยก็ใส่ Galaxy Note ได้ด้วย ส่วนเรื่อง iPhone ผมไม่แน่ใจว่าจะใส่ iPhone 5 ที่ยาวขึ้นมาได้มั้ย
It fits a Samsung Galaxy SII with a Baseus case nicely. Not pictured, it will also fit a Galaxy Note with a stretch. I think iPhones will work, but not sure if the longer length of iPhone 5 will obsolete the fact.

h4bigkoala-09

ยางยืดด้านข้างแทบจะไม่ยืดออกมาเลย สมัยนี้ฝรั่งชอบออกแบบกระเป๋าสตางค์ที่เป็นทรงยางยืดซะเยอะ ผมก็เลยไม่ชอบ เพราะผมไม่ค่อยไว้ใจยางยืดเท่าไหร่ แต่เนื่องจากอันนี้แทบไม่ยืดเลย ผมเลยมั่นใจขึ้นมาบ้างว่ายางยืดจะไม่เสื่อมเร็ว จากตรงนี้ก็จะเห็นตราของ Cordura ที่เป็นยี่ห้อผ้าด้วย
The elastic sides don’t even have to take any effort. There are many recent wallet designs that use elastic bands; I rejected all of them. I simply don’t trust elastics. This one however almost doesn’t use any, so I can use it without fearing the elastics will wear out. The Cordura mark is also visible in this picture.

h4bigkoala-09

ลองถือในมือ
In my hand, showing the side.

h4bigkoala-11

อีกข้างนึง
And another side.

h4bigkoala-12

การติดเข้ากับ PALS ของ Hazard 4 tonto mini-messenger (ที่พวก EDC ฝรั่งชอบหยอกว่าเป็น “กระเป๋าสตุ้ง” แต่ผมก็ใช้ เพราะผมไม่ได้ตัวใหญ่เหมือนพวกมัน จะได้ไปใช้กระเป๋าใหญ่ๆ ได้ 555+)
Putting it on a PALS webbing to attach it to the Hazard 4 tonto mini-messenger , affectionately called “the manpurse” by some EDC folks. It proves to not be the manpurse for me and other Asians however.

h4bigkoala-12

ตัวแป๊กเป็นความยากลำบากของชีวิตมากๆ ถ้ามันยากก็ต้องถอด d-ring เก็บไว้ เวลาจะติดก็ดึงสายยึดลงมาให้สุดก่อนแล้วค่อยย้อนกลับขึ้นไปติดแป๊กอีกที
The tacks will make attachment difficult. If you find it so, you should remove the d-rings and pull the attachment string down all the way when you finish with the weave and about to come back up to snap the tacks together.

h4bigkoala-14

ถือลอยตัวกับกระเป๋าใหญ่
Floating with the main pack.

h4bigkoala-15

และลองปิดฝากระเป๋าใหญ่ดู แค่นี้เราก็พร้อมเที่ยวแล้ว!
And finally with the tonto’s front flap down with my phone still inside, ready for use.

ความเห็น / Opinions

การออกแบบง่ายและชัดเจน ใส่มือถือแล้วก็ใส่ปากกาได้อีกโดยจับยัดไว้ระหว่าง elastic (มันมีสองชั้น) ด้านในมีการบุจึงทำให้มือถือไม่ขูดกับเนื้อ Cordura โดยตรง
This design is simple and solid. It just stores my phone and optionally a couple of pens on via double elastic bands on either side. The inside is padded so the phone will not touch the Cordura fabric directly.

อย่างไรก็ตาม Hazard 4 ยังพัฒนาได้โดยการออกแบบที่ไม่ใช้แป๊กสำหรับคนที่ไม่ได้จะใช้กับเข็มขัด เพราะมันติดเข้าไปยากมากๆ และแกะยากกว่าจนถึงขั้นต้องเอากรรไกรมางัดออก อย่างน้อยก็ช่วยทำให้เราดึงสายยึดออกได้หน่อยเถอะ แล้วก็ช่วยเพิ่มวิธีติดที่ไม่ใช้แป๊ก ไม่งั้นก็ให้เราใช้ Maxpedition Tacties หรือ BLACKHAWK! Speed Clips ซะก็ได้ (อย่างไรก็ตาม สองยี่ห้อที่พูดถึงมีแต่ความยาวเลขคี่ จึงไม่เหมาะที่จะใช้กับ big-koala ที่มีความสูงสี่ช่อง)
Hazard 4 however could improve by using attachment designs that do not depend on tacks (for non-belt users), because it poses a big hell when I try to snap them back. To snap them out is an even harder task, as I had to stick a pair of scissors in and pry them off. At least, make your entire attachment string removable along with the d-ring, and either include a non-tack method, or just push us to buy Maxpedition Tacties or BLACKHAWK! Speed Clips. (Note, however, that this big-koala uses 4 rows of PALS, while Tacties and Speed Clips need to be 5 inches because they are offered in odd lengths only)

แต่สุดท้ายมันก็เข้ากับกระเป๋าหลักได้ดี และน่าจะใช้งานได้ดีมากในอนาคต ตัวผ้า Cordura ก็ทนมาก ในขณะที่ผ้าบุด้านในก็ปกป้องไม่ให้มีรอยขีดข่วน ผมไม่สามารถให้เรตติ้งใดๆ ได้ แต่ขอจัด pouch ตัวนี้ว่า “ดีมาก” ในสายตาผมครับ
In the end however, it fits well to the main pack and will serve me well in years to come. The Cordura fabric is very durable, while the inner linings will save my phone from scratches. I do not have a thumbs-ups to give, but the product is considered very good in my opinion.

Happy New Year 2013

ทางบล็อกเราขออวยชัยให้ท่านพบกับความรุ่งโรจน์ในปีนี้ครับ
The LunaticNeko Blog wishes you a prosperous year!

เรามีประเพณีหลวมๆ กับ Ditdin ที่จะร่วมกันทำการ์ดปีใหม่ทุกปี กลอนปีนี้จะเป็นไฮกุสั้นๆ เนื่องจากกลอนแปดยาวถูกหักลบด้วยปริมาณโปรเจคจบครับ
We have a loose tradition with Ditdin to collaborate on a public new year’s card every year. Here is our new year Haiku, the result of an expected poem minus project in progress.

English Translation:
No such poetry this year;
please bear with our Haiku: project late.
We love you, readers dear.

We meet next year, here.
May you achieve all that you imagine.
Have a happy new year!

สำหรับเพลงประจำปีนี้ของบล็อกเราจะเป็น “ไชโยปีใหม่” ของสุนทราภรณ์ ซึ่งเป็นวงดนตรีที่ได้รับการยอมรับกันโดยทั่วไปครับ
This blog’s new year’s song is Chai-Yo Pe-Mai (Hooray, new year!) by Suntaraporn, a classic band which composed more than a thousand songs.

เราผ่านวันโลกาวินาศมาได้โดยไม่มีอะไรเกิดขึ้น ขอให้นี่เป็นบทเรียนว่าเราจะไม่ถือเอาเรื่องไร้สาระมาคิดจนเกินเหตุ ก่อนจากกันไปในคืนนี้ ขอให้ บันดาลให้ปีนี้เป็นปีที่ดีสำหรับเราทุกคน สวัสดีปีใหม่ครับ
We passed the Apocalypse day without anything happening whatsoever. Let this be a lesson to not take things seriously when they are really not. Again, may grant us a good year! HAPPY NEW YEAR!

Barcamp Bangkhen #3

TO SPEAKERS: If I have FACTUAL ERRORS or OFFENSIVE MATERIALS within this entry, please contact me ASAP. I will remove (or correct, at your discretion) them at the first opportunity.

กลับมาอีกครั้งสำหรับบารแคมป์บางเขน การ(อ)สัมมนานอกกรอบที่ทุกคนจะได้แลกเปลี่ยนเรียนรู้ซึ่งกันและกันอย่างเสรี แถมเสื้อฟรีให้เอาไปใส่ได้ไม่ซ้ำใครด้วยละเอ้อ!! ครั้งนี้ผมก็ไปเข้าร่วมมาด้วย และมี session น่าสนใจเยอะแยะเลยครับ มาอ่านกันว่าผมไปเข้าห้องไหนมาบ้าง!
Here we come! The third Barcamp Bangkhen, the very great unconference where people will meet and exchange, and get FREE SHIRT while we’re at it! I joined this time as well, and there are loads of great sessions! Let’s see which rooms I joined.

(หมายเหตุ ที่เรียกว่าห้อง “เด็กD” ผมจะใช้คำกลางๆ ในที่นี้ว่า “Auditorium” นะครับ // “Auditorium” will be used to refer to the “DekD” room )

Session 2 Auditorium: ทำไงให้เว็ปเร็ว ตอน เว็ปช้ามากเบยยย (Make web faster)

โดย/by @vinboxx / Download Slide

การทำเว็บให้เร็วด้วยเทคนิคต่างๆ เช่น minification, caching, การทำงานกับ query string และ unique file name, การใช้ content delivery network เช่น CloudFlare เพื่อทำให้เว็บเราเร็วขึ้น โดยเราสามารถเลือกการใช้ content delivery ของเราได้ นำเสนอฟีเจอร์ต่างๆ ว่ามีอะไรบ้าง (ผู้เขียนคิดว่า CloudFlare ก็น่าสนใจดีนะ ^ ^)
Web acceleration using techniques like minification, caching, minding query string and unique file name, using CDNs like CloudFlare to accelerate website and its customization. Features of CloudFlare are also explored.

ต่อมาก็พูดเรื่องเครื่องมือหรือ tool ต่างๆ เพื่อช่วยในการพัฒนาเว็บที่เร็วขึ้นได้ เช่น ใช้ PageSpeed Tools หรือ pingdom วิเคราะห์เวลาในการโหลดเว็บ หรือใช้ WebPagetest เพื่อวิเคราะห์เว็บอย่างละเอียดก็ได้ ว่า optimization สามารถทำให้เร็วขึ้นได้มากขนาดไหน อย่างไรบ้าง
Then the speaker talked about tools that can be used to aid web acceleration like Google PageSpeed Tools, pingdom, or WebPagetest to analyze website for possible optimizations. (i.e. where we went wrong and made the site slow)

Session 3 Auditorium: Google Student Ambassador

โดย/by GSA Thailand

แนะนำ GSA, ทริปสิงคโปร์และกิจกรรมต่างๆ แจกของ งานและหน้าที่ของ GSA
Introduction to GSA, the Singapore trip, and SWAG!

ขั้นตอนการสมัคร

  1. ส่งแบบฟอร์มออนไลน์
  2. สัมภาษณ์กับ Google มีการสอบข้อมูลทั่วไปเกี่ยวกับบริษัทในรอบเช้า และการสัมภาษณ์ในรอบบ่าย โดยใช้การสุ่มตอบคำถามที่กำหนดไว้ เน้นการตอบคำถามมากกว่าตัวคำตอบ
  3. รอ 2 เดือน ประกาศผล ให้ส่งเอกสารต่างๆ เพิ่มเติม

Application Procedures

  1. Online form submission
  2. Interview with Google consisting of “examination” and “interview”. Decision is made more on presentation and delivery than the answer itself
  3. Results are announced after two months. Qualified individuals will be required to submit additional documents.

การเป็น Ambassador จะมีอายุงาน 1 ปี
Ambassadors will remain in position for one year.

บทบาทและหน้าที่

  • ต้องจัดกิจกรรมประชาสัมพันธ์ปีละ 5-8 กิจกรรม ตามที่เราเห็นสมควร โดยจะมีของแจกจาก Google
  • เป็นช่องทางการสื่อสารระหว่างมหาวิทยาลัยกับ Google

Roles and duties

  • Hold 5-8 PR events per year at their discretion. Google supplies swag.
  • To be a channel of communication between the university and Google

ตัวอย่างคำถามรอบสอบ

  • ผู้ก่อตั้ง Google = ไม่รู้ก็…
  • ผู้ก่อตั้ง Gmail = Paul Buchheit
  • Google ซื้อ Android ปีใด = 2005
  • Google ประเทศไทย ตั้งอยู่ที่ใด = CentralWorld ชั้น …
  • อะไรคือผลิตภัณฑ์ของ Google ที่บ่งบอกความเป็นตัวคุณ = iGoogle

Example Questions from examination round

  • Google founder = (you know ’em!)
  • Gmail founder = Paul Buchheit
  • The year which Google acquired Android = 2005
  • Where is the Google Thailand office = Somewhere in CentralWorld
  • Which Google product defines ‘you’? = iGoogle

Session 4 17304: Ruby on Rails

โดย/by Zack Siri / @artellectual

การพัฒนาเว็บด้วย Ruby on Rails การสร้างฐานข้อมูล platform ต่างๆ ที่เกี่ยวข้อง ฯลฯ Rails เป็น platform แบบ MVC (Model-View-Controller)
Web development using Ruby on Rails, database creation, platforms, etc. Rails is an MVC platform.

การสร้าง Controller จะมี convention ที่ชัดเจน คือเป็นกฎที่ชัดเจน เพื่อให้เราทำตามได้โดยง่าย โดยเราจะสร้าง Controller เองหรือจะให้ Rails ทำให้ก็ได้
Rails has specific conventions that must be followed. Controllers can be written manually or can be automatically created. Either way, they must follow the Rails conventions.

จากนั้นจะเป็นการสร้าง View ซึ่งจะบอกว่า controller นั้นจะแสดงผลออกมาอย่างไร โดย view จะต้องมีชื่อตรงกับ controller (ตรงนี้เป็น convention หนึ่งของ Rails) ทำให้การทำงานก็จะตรงไปตรงมามากขึ้น โดยเราสามารถที่จะใช้ helper method เพื่อให้เขียนเว็บได้ง่ายและเร็วขึ้นด้วยก็ได้ สำหรับตัวอย่างของ session นี้คือการสร้างเว็บฟอร์มง่ายๆ เก็บและแสดงข้อมูลได้
After creating model and controller it’s time for view. In Rails, view must have same name as controller. Helper methods can be employed for ease and speed. This session demonstrates simple case of web form creation that can collect and display data.

โดยสรุป ผู้เขียนก็ไม่ค่อยเข้าใจเท่าไหร่เหมือนเดิม เพราะไม่ค่อยคุ้นเคยกับ Ruby หรือ Rails ตั้งแต่แรก
I still don’t understand Rails much due to unfamiliarity with Ruby itself. Actually, I’m a bit familiar with Ruby, but I can’t figure out how to make websites out of them.

Session 5 17302: Methods of Payment: How we waste money on the Internet

โดย/by LunaticNeko / Download Slide

อธิบายองค์ประกอบที่จะนำไปสู่การใช้เงิน 5 ประการ (Product, Want, Money, Can Pay, Delivery) วิธีการคำนวณหาเงินที่ต้องจ่ายจริงจากราคาสินค้า ค่าส่ง อากรนำเข้า และภาษีมูลค่าเพิ่ม จากนั้นอธิบายถึงการจำหน่ายสินค้าแบบดิจิตอลและสินค้าเสมือน (digital and virtual goods) หนทางการหาเงินของเกมบน Facebook ว่ามาจาก 3 ทางหลัก ได้แก่โฆษณา โฆษณาแฝง และการจำหน่ายสินค้าเสมือนให้ผู้เล่น ต่อด้วยการแนะนำ Kickstarter ว่าเป็นแหล่งที่มาของธุรกิจที่จะนำเงินออกจากกระเป๋าเราด้วยนวัตกรรมต่างๆ มากมายในอนาคต
Describes the five components of spending (Product, Want, Money, Can Pay, Delivery), method to calculate how much one must really pay after shipping, import tariff, and VAT; describes digital and virtual goods sales. Facebook games earn money from three ways: advertisement, product placement, and virtual goods sales. Kickstarter is described as source of new businesses and innovations that can bring money out of our pockets.

ในส่วนต่อมา อธิบายการนำเงินออกจากกระเป๋าโดยใช้บัตรเครดิต หากไม่มีก็เป็นการสร้างบัตรเดบิตออนไลน์ผ่านบริการของธนาคาร หากไม่มีก็ใช้ช่องทางอื่นๆ เช่นบัตรเติมเงินของบริการต่างๆ หากไม่มีเงินจริงๆ ก็สามารถทำแบบสอบถามเพื่อแลกกับสินค้าเสมือนได้ ดังนั้น จะเห็นว่า แม้ว่าเราจะไม่มีเงิน ผู้ให้บริการก็ยังสามารถนำเงินออกจากกระเป๋าของเราได้อยู่ดี
In the next part, the presenter describes how to pay using credit cards, or debit if one does not have credit, or other payment methods like cash cards. If they really have no money, they can do surveys to earn virtual goods. This is summarized as “even if we don’t have money, they can still take it from us.”

ดังที่กล่าวไว้แล้วถึงองค์ประกอบการใช้เงิน 5 ประการ เราสามารถตัดองค์ประกอบตัวใดตัวหนึ่งเพื่อตัดการใช้จ่ายของเราได้ ทางที่ง่ายที่สุดคือใช้การควบคุมตนเองเข้ามาตัดความต้องการ (Want) ทิ้งไป โดยให้หลีกเลี่ยงการซื้อในขณะที่ความสามารถในการตัดสินใจลดลง การป้องกันไม่ให้ซื้อสินค้าในขณะที่ความสามารถในการตัดสินใจลดลง การปรับทัศนคติที่มีต่อสินค้าที่ล่อตาล่อใจ และสุดท้ายคือการลดละความต้องการทางโลก
As described earlier, if one of the five components of spending is eliminated, spending will not happen. The easiest way is to eliminate the Want by 1) avoid purchasing with impaired judgement, 2) prevent purchasing with impaired judgement, 3) change of initial attitude towards attractive items, and 4) reduce earthly desires.

จากนั้นผมก็แทบจะกลับบ้านทันทีครับ เพราะการบ้านเยอะ และมีงานต้องทำอีกหลายอย่างด้วย เช่นการอัพบล็อกนี้เป็นต้น
Then I left for home almost immediately due to many things to do, including homework and blogging.

บทสรุป / Conclusion

ขอขอบพระคุณ คณาจารย์ผู้รับผิดชอบกิจกรรม คณะวิศวกรรมศาสตร์ ผู้สนับสนุนทั้งหลาย ผู้ที่เข้าฟังการบรรยายของผม ตลอดจนวิทยากรทุกท่านที่ร่วมงานในครั้งนี้ และขอขอบคุณ น้องๆ ปี 2-3 ที่ช่วยกันจัดงานนี้เป็นอย่างดีครับ ปีนี้ผมคิดว่างานประสบความสำเร็จดีมากในแง่จำนวนคน แต่ยังมีข้อจำกัดเรื่องจำนวน “เซสชั่นเกรดเอบวก” ที่ยังมีน้อยเกินไป ทำให้ Auditorium ยังเป็นที่ของวิทยากรหน้าเดิมเช่นเคย
I hereby thank the faculty, the Faculty, sponsors, my audience, and all speakers who participated today. I also thank the Juniors and Sophomores who organized this as well. I think this year is quite good in terms of participation, but there’s still a lack of “A+ sessions” which results in the Auditorium still held down by the same old speakers.

แล้วพบกันใหม่ที่บาร์แคมป์ที่ไหนอีกซักแห่งครับ สวัสดี
See you again in the next Barcamp … somewhere! KTHXBAI!

อ้อ ขอบคุณ GSA Thailand สำหรับ Swag ด้วยครับ แต่ผมก็ยังไม่รู้ว่าจะเอามันเข้ามาใช้ในชีวิตประจำวันยังไง ขอใช้ขวดเก่าไปพลางๆ ก่อนนะครับ
Before I go, thanks GSA Thailand for the Swag. I still don’t know how to use this bottle so I’ll use the old one for a while. Thanks again!

Internship, Days 33-35 (6-8 Jun 2012) [END]


(Photo: A gift from Symphony, and my faculty-paper)

สำหรับตอนนี้เป็นตอนสุดท้ายของซีรี่ส์ฝึกงานแล้วนะครับ ขออภัยที่มาช้าไปเล็กน้อย เริ่มกันเลยดีกว่า

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

ผมก็คิดว่าใช้เวลาไม่น่านาน แต่ด้วยความที่ใกล้จบฝึกงาน ผมต้องเตรียมนำเสนอการฝึกงานทั้งหมด และต้องเตรียมเอกสารที่จะต้องส่งด้วย ไม่ว่าจะส่งไปที่ใดก็ตาม เช่น ใบเวลาทำงาน ฯลฯ จากนี้ผมขอแบ่งเป็นส่วนๆ ดีกว่า โดยแต่ละส่วนก็จะเป็นไทยอังกฤษสลับกันจะได้ตามง่ายๆ ครับ

This is the last episode in the internship series. Sorry for being late, let’s begin anyway.

During the three days I spent time with the new task analyzing data from emails. The emails have network data as <field> : <value> lines, which are easy to extract.

I didn’t think it would take time, but as the end of internship nears, I have to prepare the presentation as well as the papers to submit to matter where they are such as time record, etc. For this entry I’ll split into multiple parts, with Thai and English interleaving for easy reading.

งานชิ้นสุดท้าย / Last Task

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

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

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

As introduced earlier, the last task consists of email data extraction which works on the same system as mail alerts, but on a different context. The emails will come from the same source, but processing will be separated so we do not need to build another database-inbox.

The no-primary-key problem from email counting task also carries over, which I fixed by building an execution log which keeps track of the last time we checked emails, and will never revisit older emails no matter the reason. While this makes the system relatively faster, it suffers from the non-retroactiveness of email inspection, i.e. if you change the email definition midway, old and new data won’t be consistent. (So it might be better to delete the definition entirely)

Email definition can only be done on a per-sender basis without per-subject separation. The work is not done, but I will try to finish if possible, as it only benefits everyone.

การนำเสนองาน / Presentation

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

7th was the day the intern students present their works. Since I’ve talked to my supervisor that I will be explaining the work “from beginning to end” (reasons, requirements, architecture, implementation, demonstration, conclusion and suggestion) and I have four tasks to do (five actually: server installation, “vplay” video player, email counting, IDC system, and email data extraction but I won’t count the first)  and I ended up with 43 slides taking up more than half-hour while others used much less time; and I did it all without telling any kind of knowledge at all (I see my work as ordinary programming tasks so the process is more interesting than the code) while others presented more content and knowledge than I did. I felt awkward afterwards, but still happy being able to tell others what I do.

งานเลี้ยงส่ง / Farewell Party

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

The party was hosted at MK Restaurants, Robinson Ratchada. This was one of the few moments I get to talk to many friends and seniors at once. Thank you very much, and sorry for over(-the-budget)eating.

เคลียร์เอกสาร / Final Paperwork

การจัดการเอกสารทั้งหมด

  • ลอกข้อมูลเวลาจากตารางเวลาทำงานของบริษัทลงใบเวลาของคณะ ให้พี่เลี้ยงลงนามรับรอง
  • ถ่ายเอกสารทั้งหมดที่ต้องมีการส่งคณะหรือบริษัท ยกเว้นความลับองค์กร (ซึ่งไม่ถึงมือผมอยู่แล้ว สบายใจได้)
  • เขียน TODO ในส่วนที่ยังไม่ได้ทำ และอธิบายโครงสร้างงานของเราไว้สำหรับคนต่อไป
  • ส่งรายงานของบริษัทฉบับสุดท้ายให้ HR
  • คืนบัตรพนักงานและบัตรลิฟท์อาคาร

Just do all the paper.

  • Copy the times from company log to faculty log, have supervisor sign it.
  • Photocopy everything that need to be submitted, except corporate secrets (which I don’t have.)
  • Write TODOs where needed, and document as much as possible
  • Submit last weekly report to HR
  • Return employee and lift cards

ขอขอบคุณ / Thanks to:

พี่ๆ ที่บริษัท CS LOXINFO ทุกคน

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

Thanks to all CS LOXINFO employees!

  • P’Pat (Pensopha Kamolnawin), internship supervisor
  • P’Gee (Keeratipong Ukachoke), technical advisor
  • P’Nui (Surasak Uthayopas), head of technical & operation department
  • P’Tik (Kanchisar Dunmai), HR
  • P’Yod (I don’t know your name), but more thanks if you actually buy me Diablo III instead of bragging how you earn so much from Auction House out loud :)
  • And everyone for providing me with enjoyable work environment and experience!

Finally, thanks to all friends in the same internship program, even though we don’t get to see each other much.

สำหรับผู้ที่ต้องการเนื้อหาหรือข้อมูลจากการฝึกงาน หากสามารถให้ได้จะให้นะครับ ติดต่อมาได้

For those who need content or data from internship, I will provide them if possible so feel free to contact.

Some more pics


At presentation, my two friends preparing


ASCII Art of company name, limited to 80 characters wide


Phase I of MK Pot


Phase II, and we ate them all.

You can view all internship posts here: http://lunaticneko.com/blog/?tag=school-internship

Internship, Day 32 (5 Jun 2012)

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

เวลาที่เหลือส่วนใหญ่ก็ทำสไลด์เพื่อเตรียมนำเสนอในวันที่ 7 ต่อไป

Time’s running out and the end of internship draws near. I have to continue debugging the job but it’s not quite done so I met the boss and told him it’s not going to finish in time. It’s not that hard, but the code was not documented so I have no idea where the possible code defects are. Most importantly, I might have said this earlier, that this application uses a lot of JS pop-ups which makes it all harder.

Whatever time I have left, I spend them on working with the slide to present on 7th.

Internship, Day 31 (1 Jun 2012)

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

There’s still not much progress today, hunting bugs all day. I remember the senior limiting my work until today, as I will be switched to another one with final presentation preparation on Tuesday.

I recommend writing database views to reduce stress on your own part when working with complex database systems.

Internship, Day 30 (31 May 2012)

Image macro consisting of the Github Octocat (stylized, friendly cartoon creature with cat's head and multiple tentacles) and text macro 'because', 'FORK YOU', and 'THAT'S WHY.', playing on the phrase 'Because f**k you that's why' used to indicate deliberate spite, and the word 'fork you', which in turn comes from the phrase 'f**k you' and 'fork', the latter being a term in source version control system.
(Photo: Octocat, one of the many trademarks of Github. Click on it to go to my page there. I might create some repos in the future!)

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

No progress. No picture. No blogging. All blame goes to registration.