ใน linux มีโปรแกรมที่ชื่อว่า fortune(ใน ubuntu สามารถติดตั้งโดยใช้คำสั่ง sudo apt-get install fortune ) ซึ่งจะแสดงข้อความที่เรียกว่า “word of the day”  หรือ “ediom of the day”  ผมไม่รู้ว่า แปลเป็นไทย เขาจะใช้คำว่าอะไร “คำแห่งวัน”   “ประโยคประจำวัน” หรือ “คำคมประจำวัน” อะไรก็ตามแล้วแต่ผู้อ่านจะนำไปใช้ตามสะดวกครับ

ภาพตัวอย่างการรันโปรแกรม fortune ใน terminal ครับ

หลัก การทำงานของโปรแกรมนี้คือ การอ่านข้อมูลจากฐานข้อมูลคำ ที่จัดเก็บไว้ในรูปแบบไฟล์ ซึ่ง ไฟล์ที่ โปรแกรม fotune อ่านนั้นมีรูปแบบดังนี้

word1%
word2%

wordN%

ตัวอย่างนี้เป็นไฟล์ฐานข้อมูลของโปรแกรม fortune จากไฟล์ /usr/share/games/fortunes/fortunes  โดยผมได้ตัดข้อความมาบางส่วน

A day for firm decisions!!!!!  Or is it?
%
A few hours grace before the madness begins again.
%
A gift of a flower will soon be made to you.
%
A long-forgotten loved one will appear soon.

Buy the negatives at any price.
%
A tall, dark stranger will have more fun than you.
%

คราวนี้เราจะลองเขียนโปรแกรม fortune ด้วยภาษา java กันมั่ง หลักการของโปรแกรมที่ผมเขียนก็คือ อ่านไฟล์ทั้งหมดขึ้นมาเก็บไว้ใน  ArrayList โดยใช้เครื่องหมาย % เป็นตัวแบ่ง(delimiter) จากนั้นเราจะสุ่มตำแหน่งของข้อความ เพื่อนำข้อความที่เราต้องการออกมา ครับ

นี่คือไฟล์ตัวอย่างผมยืมเอา คำคมของท่าน ว.วชิรเมธี มาใช้ครับ ชื่อไฟล์ words.txt

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

นี่คือ code ของโปรแกรมตามลักษณะที่ผมอธิบายการทำงานเบื้องต้นในภาษา java ครับ

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Fortune {

 public static String getWordOfTheDay() throws Exception {
   String word = null;
   ArrayList<String> words = new ArrayList<String>();
   Scanner sc = new Scanner(new File("words.txt"));
   sc = sc.useDelimiter("%");
   while (sc.hasNext()) {
     words.add(sc.next().trim());
   }
   Random r = new Random();
   int i = r.nextInt(words.size());
   return words.get(i);
 }

 public static void main(String[] args) throws Exception {
   String word = "";
   while ((word = Fortune.getWordOfTheDay()).length() < 10);
     System.out.println(word);
 }
}

นี่คือตัวอย่างผลลัพธ์ที่ผมได้จากการรันโปรแกรม จำนวน 10 รอบครับ ^ ^

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

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

Advertisements

1 คิดบน “กรณีศึกษา เขียนโปรแกรม fortune ด้วย java

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s