วันอังคารที่ 31 มีนาคม พ.ศ. 2558

ว่าด้วยเรื่อง Spring Framework

วันนี้ไปอ่านเจอบทความ เขียนเกี่ยวกับเรื่อง Spring Framework อ่านแล้วเข้าใจดี เลยเอามาโพสไว้อ่าน นิดหนึ่ง บทความนี้เห็นโพสต์ในการตอบกระทู้ ซึ่งตอบโดยคุณ tunn http://greatfriends.biz/webboards/msg.asp?id=39032

 Spring framework ตัวนี้ สุดๆ เลยครับ ทำให้เราเขียนโปรแกรมแบบ OO concept จริงๆ แต่ไปๆมาๆดันเหมือนเขียนโปรแกรมกับ config ซึ่งถ้าเขียนบน java มันมี spring bean editor เป็น plug in บน eclipse ทำให้เขียน config ง่ายหน่อย แต่ถ้าบน .net นี่ตอนนี้ยังเหนื่อยอยู่ คงต้องรอซักพัก

Concept ของ spring มีด้วยกัน 3 ส่วนครับคือ

- IoC ( inversion of control เน้นไปทาง DI ( dependency injection) spring ยิง object เข้ามาให้ )

- AOP ( Aspect Oriented Programming ทำให้เรา maintain โปรแกรมได้ง่ายขึ้น แต่ทำจริงก็ใช่ว่าจะง่าย ส่วนมากเอาไปใช้ ในงาน เกี่ยวกับ transaction , logging )

- Abstract base class ต่างๆ ทำให้ เขียนเพิ่มเติม ต่อยอด intregateระบบ ได้ง่ายขึ้น เช่น ในส่วนของ Data Access Layer คุณอาจจะใช้ NHibernate, ADO.NET หรือ iBatis.NET ก็แล้วแต่ คุณก็เอามา plug เข้ากับ bussiness layer โดยที่ตัว client ของคุณ ไม่จำเป็นต้องเปลี่ยนแปลง code เลย

 ตัวอย่าง นะครับ


 IoC :
   class Sorter {
        private ICollection collection;
        private ISortAlgo sortAlgo;
        public ISortAlgo SortAlgo {
             get { return this.sortAlgo; }
             set { this.sortAlgo = value; }
        }
        public ICollection Collection {
             get { return this.collection; }
             set { this.collection = value; }
        } 
 
        public void sorting() {
             this.sortAlgo.sort(this.collection);
        }
   }
 
   interface ISortAlgo {
          void sort(ICollection collection);
   }
 
   class BubbleSortAlgo : ISortAlgo {
         public void sort(ICollection collection) {
          // to do : implement bubble sort algo
         }
   }
   
   class InsertionSortAlgo : ISortAlgo {
         public void sort(ICollection collection) {
              // to do : implement insertion sort algo
         }
   }
 
spring config
   
        
   
   
   
   
   
   
   
เรียกใช้งาน
   public class Program {
      public static void Main() {
                    Sorter sorter = getSpringContext().getObject("sorter") as Sorter; 
                    sorter.Collection = getSampleCollection();
                    sorter.sorting();
                    display(sorter.Collection);
      }
   }
   

ประเด็นจะอยู่ตรง Class Sorter ครับ ถ้าเราเขียนแบบเดิม เวลาเราจะเปลี่ยน Sorting Algo เราต้องเขียนประมาณว่า

 ISortAlgo sortAlgo = new BubbleSortAlgo();
 หรือ
 ISortAlgo sortAlgo = new InsertionSortAlgo();

 ซึ่งจะทำให้เราต้องไปผูกกับ class ที่ implement interface ISortAlgo ไม่ตัวใดตัวหนึ่ง และ การเปลี่ยนอาจต้งอ compile program ใหม่ แต่ถ้าเราใช้ spring เราเพียงแค่ config ว่าจะยิง Sorting Algo ตัวไหนเข้าไป ( ตรง spring config น่ะครับ ) เปลี่ยน หรือ โปรแกรม เราไม่เปลี่ยนแปลง ไม่ต้อง complie ที่สำคัญคือ โปรแกรมเราผูกอยู่กับ interface ไม่ใช้ตัว implementation

Introduction to ABAP (เกริ่นนำ SAP ABAP สักหน่อยก่อนเน๊าะ)

ถ้าจะบอกว่า SAP คืออะไร ก็คงอธิบายเหมือนเว็บหรือหนังสือเล่มอื่นๆ เน๊าะ
         SAP เป็น ERP ประเภทหนึ่ง ทำงานแบบ Client/Server (รายละเอียดลองศึกษาเองน่ะ ERP คืออะไร Client/Server คืออะไร)
         SAP ถูกพัฒนาขึ้นด้วยภาษา ABAP (Advance Business Application Programming)  ซึ่งปัจจุบันเป็นภาษาโปรแกรมในยุคที่ 4 หรือ 4GL  (ABAP/4) โดยเวอร์ชั่นใหม่นี้  ABAP สามารถเรียกใช้งาน ABAP Objects และ supports การเขียนโปรแกรมแบบ OOP (object-oriented programming)


มาพูดเรื่อง (ประเภทของตัวแปร) Data Types ใน ABAP บ้าง
อันนี้รูปแบบของ Data Types

       
DATA Variable_Name Type Variable_Type
ส่วนการเรียกใช้งานก็ประมาณนี้
DATA employee_number Type I.























*การจบประโยคใน ABAP จะจบประโยคด้วย . (period)
** การเขียนโปรแกรมทุกภาษาก็ล้วนแล้วแต่มีการประกาศ Data Types ที่คลายๆกัน
ผมอาจจะอธิบายไม่ค่อยเก่ง เพราะปกติก็ไม่ได้เขียนเป็นอาชีพ แค่ศึกษาหาความรู้เฉยๆ
เอาเป็นว่า ถ้าผมรู้อะไรก็จะมาโพสต์ไว้แล้วกันเน๊าะ
เดียวครั้งหน้าจะมาต่อเรื่องการเขียน Data Object  - Structure

วันพุธที่ 25 มีนาคม พ.ศ. 2558

แปลงตัวเลขเป็นตัวหนังสือ Java - Convert Number Thai Java


 public static String ThaiBaht(String txt) {
  String bahtTxt, n, bahtTH = "";
  Double amount;
  try {
   amount = Double.parseDouble(txt);
  } catch (Exception ex) {
   amount = 0.00;
  }

  try {
   DecimalFormat df = new DecimalFormat("####.00");
   bahtTxt = df.format(amount);
   String[] num = { "ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า",
     "หก", "เจ็ด", "แปด", "เก้า", "สิบ" };
   String[] rank = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };
   String[] temp = bahtTxt.split("[.]");
   String intVal = temp[0];
   String decVal = temp[1];
   if (Double.parseDouble(bahtTxt) == 0)
    bahtTH = "ศูนย์บาทถ้วน";
   else {
    for (int i = 0; i < intVal.length(); i++) {
     n = intVal.substring(i, i + 1);
     if (n != "0") {
      if ((i == (intVal.length() - 1)) && (n == "1"))
       bahtTH += "เอ็ด";
      else if ((i == (intVal.length() - 2)) && (n == "2"))
       bahtTH += "ยี่";
      else if ((i == (intVal.length() - 2)) && (n == "1"))
       bahtTH += "";
      else
       bahtTH += num[Integer.parseInt(n)];
      bahtTH += rank[(intVal.length() - i) - 1];
     }
    }
    bahtTH += "บาท";
    if (decVal == "00")
     bahtTH += "ถ้วน";
    else {
     for (int i = 0; i < decVal.length(); i++) {
      n = decVal.substring(i, i + 1);
      if (n != "0") {
       if ((i == decVal.length() - 1) && (n == "1"))
        bahtTH += "เอ็ด";
       else if ((i == (decVal.length() - 2)) && (n == "2"))
        bahtTH += "ยี่";
       else if ((i == (decVal.length() - 2)) && (n == "1"))
        bahtTH += "";
       else
        bahtTH += num[Integer.parseInt(n)];
       bahtTH += rank[(decVal.length() - i) - 1];
      }
     }
     bahtTH += "สตางค์";
    }
   }
  
  } catch (Exception exe) {

   System.out.print(exe.getMessage());
  }
  return bahtTH;

 }
มาดูส่วนวิธีเรียกใช้งานบ้าง
public class Test {

 public static void main(String[] args) {

  String txt = "123.456";
  String Bath = ThaiBaht(txt);
  
  System.out.println(Bath);
 }
}

*** ผมไม่ได้คิดเองน่ะครับ copy มาจาก thaicreate แต่ของเก่าเขียนไว้ด้วย (C#) ผมเลยเอาปรับใช้ ใน JAVA นิดหนึ่ง http://www.thaicreate.com/community/c-asp-net-convert-money-number-to-thai-text.html

วันพุธที่ 18 มีนาคม พ.ศ. 2558

แปลงตัวเลขเป็นตัวหนังสือ c# - Convert Number Thai C Shap


public static string cv(string num){
     
            string[][] th_num = new string[3][];
            string[] th_digit = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" }; 
 
            th_num[0] = new string[10] { "", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า" };
            th_num[1] = new string[2] { "หนึ่ง", "เอ็ด" };
            th_num[2] = new string[2] { "สอง", "ยี่" };

            int ln = num.Length;

            string t = "";
            for (int i = ln; i > 0; i--) {
                var x = i - 1;
                 var n = Convert.ToInt32(num.Substring(ln - i, 1));
                 var digit = x % 6;
                if (n != 0) {
                    if (n == 1) {
                        t += (digit == 1) ? "" : th_num[1][digit == 0 ? 1 : 0];
                    } else if (n == 2) {
                        t += th_num[2][digit == 1 ? 1 : 0];
                    } else {
                        t += th_num[0][n];
                    }
                    t += th_digit[(digit == 0 && x > 0 ? 6 : digit)];
                } else {
                    t += th_digit[digit == 0 && x > 0 ? 6 : 0];
                }
            }
            return t;
        }
มาดูส่วนวิธีเรียกใช้งานบ้าง
 class Program
    {
 static void Main(string[] args)
        {
            var num = "111,111,111,111,111.11";

            var data = Convert.ToDecimal(num).ToString().Split('.');
            string dic = "";
            if (cv(data[1]) == "") { dic = ""; } else { dic = cv(data[1]) + "สตางค์"; };
            string convert = cv(data[0]) + "บาท" + dic ;

            Console.WriteLine(convert);
            System.Console.ReadKey();
        }
}
*** ผมไม่ได้คิดเองน่ะครับ copy มาจาก ท่านนี้ Chaidhanan ใน thaicreate แต่ของเก่าเขียนไว้ด้วย (PHP) ผมเลยเอาปรับใช้ ใน c# นิดหนึ่ง http://www.thaicreate.com/community/c-asp-net-convert-money-number-to-thai-text.html

การติดตั้ง SAP ABAP

ครั้งแรกผมว่าจะสอนวิธีติดตั้งเอง แต่ก็กลัวเรื่อง ลิขสิทธิ์ (เอ๊ะ หรือว่าคิดมากไปเอง)  เอาเป็นว่า ไปดูเว็บฝรั่งก็ได้น่ะ หรือไม่ก็ youtube ...