Month: September 2016

  • การ Compile ออนไลน์

    เมื่อนักพัฒนาระบบต้องการเขียนโปรแกรมภาษาอะไร จำเป็นต้องทำการติดตั้ง Compiler สำหรับภาษานั้น ๆ เสียก่อน Compiler จะทำหน้าที่แปลภาษา Programming ไปเป็นชุดคำสั่งของเครื่อง เพื่อทำงานตามที่นักพัฒนาต้องการ

    บทความนี้จะแนะนำบริการออนไลน์สำหรับทดสอบ Code ภาษาต่าง ๆ ที่มีชื่อว่า compileonline

    ซึ่งสามารถทดสอบ Code ผ่านทางเว็บไซต์ เพื่อดูผลลัพธ์ โดยไม่ต้องเสียเวลาติดตั้ง Compiler หรือเปิด Developer Tool เอง สำหรับการทดสอบเล็ก ๆ น้อย ๆ ค่ะ

    ขั้นตอน ดังนี้

    ไปที่ http://www.compileonline.com/

    19-9-2559-14-14-46

    จากนั้นเลือกภาษา / Develop tool ที่ต้องการ ในที่นี้เลือก C# แสดงหน้าจอ ดังนี้

    ตัวอย่าง C#

    19-9-2559-14-20-01

    คลิกปุ่ม “Compile” จะแสดงผลดัง Terminal ด้านล่าง –> สีแดง

    คลิกปุ่ม “Execute” จะแสดงผลดัง Terminal ด้านล่าง –> สีน้ำเงิน

    ตัวอย่าง JavaScript

    เลือกภาษา / Develop tool ที่ต้องการ ในที่นี้เลือก JavaScript แสดงหน้าจอ ดังนี้

    19-9-2559-14-31-47

    แก้ไขคำสั่งตามต้องการ จากนั้น คลิกปุ่ม “Preview” จะแสดงผลดัง Web View ด้านล่างค่ะ 

     

  • ขั้นตอนการติดตั้ง HBase บน Hadoop อย่างง่าย

    HBase เป็น Database บน Hadoop [1]

    จากบทความ ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย จะได้ HDFS อยู่ที่ hdfs://192.168.1.101:9000 แล้ว ก็จะสามารถใช้ HBase บน Hadoop HDFS ได้

    ขั้นตอนการติดตั้ง

    1. โคลนเครื่องต้นฉบับ แล้วตั้ง ip address ให้เรียบร้อย เช่น 192.168.1.121
    2. ติดตั้ง HBase (mama shell)
      (mama shell)
      cd ~
      wget http://www-us.apache.org/dist/hbase/stable/hbase-1.2.3-bin.tar.gz
      tar -zxvf hbase-1.2.3-bin.tar.gz
      sudo mv hbase-1.2.3 /usr/local/hbase
      sudo chown -R hduser.hadoop /usr/local/hbase
      sudo mkdir /usr/local/zookeeper
      sudo chown -R hduser.hadoop /usr/local/zookeeper
    3. แก้ไขไฟล์ /usr/local/hbase/conf/hbase-site.xml (hduser shell)
      <configuration>
      <property>
       <name>hbase.cluster.distributed</name>
       <value>true</value>
      </property>
      <property>
       <name>hbase.rootdir</name>
       <value>hdfs://192.168.1.101:9000/hbase</value>
      </property>
       <property>
       <name>hbase.zookeeper.property.dataDir</name>
       <value>/usr/local/zookeeper</value>
       </property>
      </configuration>
    4. ขั้นตอนการ Start HBase (hduser shell)
       /usr/local/hbase/bin/start-hbase.sh
    5. ดูผลการทำงาน จาก Hadoop HDFS ว่าสร้าง /hbase แล้ว
       http://192.168.1.101:50070/explorer.html#/hbase
    6. ใช้งานผ่าน Shell ได้จากคำสั่ง (hduser shell)
       /usr/local/hbase/bin/hbase shell
    7. ขั้นตอนการ Stop HBase (hduser shell)
       /usr/local/hbase/bin/stop-hbase.sh

     

    References:

    [1] https://hbase.apache.org/

  • ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย

    Hadoop เป็น Framework สำหรับสร้างการประมวลผลแบบกระจาย (Distributed Processing) กับข้อมูลขนาดใหญ่ (Large Data Sets) สามารถเริ่มต้นจากทดสอบบนเครื่องคอมพิวเตอร์เครื่องเดียว ไปจนเป็นระบบ Cluster ได้[1]

    อธิบายง่ายๆได้ว่า Hadoop ประกอบด้วย ส่วนประมวลผลแบบกระจายเรียกว่า YARN (หรือ MapReduce) และ ส่วนเก็บข้อมูลแบบกระจายเรียกว่า HDFS (Hadoop Distributed File System) สำหรับการสร้าง Hadoop Cluster ในบทความนี้ใช้ Hadoop version 2.7.2 บน Ubuntu 16.04 โดย Cluster จะประกอบด้วย 1 Master และ N Slaves โดยจะใช้วิธีการสร้างเครื่องต้นฉบับ แล้ว Clone ไปเป็น Master/Slave ต่อไป

    1.ขั้นตอนการสร้างตันฉบับสำหรับการ Clone
    1.1. ติดตั้ง Ubuntu 16.04 ตามปรกติ สร้าง User คนแรกชื่อ mama
    1.2. สร้างกลุ่มชื่อ hadoop

    sudo addgroup hadoop

    1.3. สร้างผู้ใช้ชื่อ hduser อยู่ในกลุ่ม hadoop

    sudo adduser hduser --ingroup hadoop

    1.4. ติดตั้ง Java

    sudo apt-get install default-jre openjdk-8-jdk-headless

    1.5. ติดตั้ง hadoop

    wget http://www-us.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
    tar -zxvf hadoop-2.7.2.tar.gz
    sudo mv hadoop-2.7.2 /usr/local/hadoop
    sudo mkdir /usr/local/hadoop/etc/hadoop/tmp
    sudo chown -R hduser.hadoop /usr/local/hadoop

    1.6. เพิ่มตัวแปรใน /etc/environment

    HADOOP_HOME=/usr/local/hadoop
    HADOOP_PREFIX=/usr/local/hadoop
    JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

    1.7. แก้ไขค่าใน .bashrc

    su hduser; cd ~

    แล้วแก้ไข .bashrc โดยเพิ่มบรรทัดต่อไปนี้ ท้ายไฟล์

    export HADOOP_HOME=/usr/local/hadoop
    export HADOOP_PREFIX=/usr/local/hadoop
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    2.ขั้นตอนการสร้าง Master (namenode)
    2.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname ให้เหมาะสม
    โดยเครื่องนี้ต้อง Static IP เช่น 192.168.1.101
    2.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้

    <configuration>
    <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop/tmp</value>
     </property>
     <property>
     <name>fs.defaultFS</name>
     <value>hdfs://192.168.107.116:9000</value>
     </property>
    </configuration>
    

    2.3. แก้ไข /usr/local/hadoop/etc/hadoop/hdfs-site.xml

    <configuration>
     <property>
     <name>dfs.replication</name>
     <value>3</value>
     </property>
     <property>
     <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
     <value>false</value>
     </property>
    </configuration>

    2.4. แก้ไข /usr/local/hadoop/etc/hadoop/slaves

    โดยใส่ IP ของเครื่องที่จะเป็น Slave หรือ datanode ลงไป เช่น 192.168.1.102 ถึง 192.168.1.111 เป็นต้น

    192.168.1.102
    192.168.1.103
    192.168.1.104
    192.168.1.105
    192.168.1.106
    192.168.1.107
    192.168.1.108
    192.168.1.109
    192.168.1.110
    192.168.1.111
    

     

    3.ขั้นตอนการสร้าง Slave (datanode)
    3.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname

    เช่น ตั้ง IP เป็น 192.168.1.102
    3.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้ (สังเกตว่า 192.168.1.101 เป็น IP Address ของเครื่อง Master)

    <configuration>
     <property>
     <name>fs.defaultFS</name>
     <value>hdfs://192.168.1.101:9000</value>
     </property>
    </configuration>

     

    4.ขั้นตอนการตั้งค่า Passwordless SSH

    ที่เครื่อง Master ใช้คำสั่งต่อไปนี้ เพื่อให้สามารถ Login ไปเป็น hduser บนเครื่อง slave ได้โดยไม่ต้องใส่รหัสผ่าน

    (hduser@master shell)
    ssh-keygen -t rsa
    ssh hduser@192.168.1.102 mkdir -p .ssh
    ssh-copy-id -i .ssh/id_rsa.pub hduser@192.168.1.102
    

    จากนั้นจะสามารถ ssh hduser@192.168.1.102 โดยไม่ต้องใส่ Password อีก แล้วหลังจากนี้ สามารถใช้เครื่อง Slave นี้เป็นต้นฉบับในการ Clone เป็น datanode ต่างๆได้ตามต้องการ

     

    5.ขั้นตอนการ Start Hadoop Cluster

    ในครั้งแรกสุด ที่เครื่อง Master ต้อง format HDFS ก่อน โดยใช้คำสั่ง (จาก hduser shell)

    hdfs namenode -format

    จากนั้นใช้คำสั่งต่อไปนี้เพื่อ start ระบบ

    start-dfs.sh
    start-yarn.sh

    6.ดูผลการทำงาน

    http://192.168.1.101:50070

    http://192.168.1.101:8088

     

    7.ขั้นตอนการ Stop Hadoop Cluster

    stop-dfs.sh
    stop-yarn.sh

    References:
    [1] http://hadoop.apache.org/

  • การแปลงข้อมูลในรูปแบบ JSON เป็นคลาส JAVA

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

    ตัวอย่างข้อมูล JSON เช่น

    [

                       {

                                 “point”: “40.266044,-74.718479”,

                                 “homeTeam”:”Lawrence Library”,

                                 “awayTeam”:”LUGip”,

                                 “markerImage”:”images/red.png”,

                                 “information”: “Linux users group meets second Wednesday of each month.”,

                                 “fixture”:”Wednesday 7pm”,

                                 “capacity”:””,

                                 “previousScore”:””

                       },

                       {

                                 “point”:”40.211600,-74.695702″,

                                 “homeTeam”:”Hamilton Library”,

                                 “awayTeam”:”LUGip HW SIG”,

                                 “markerImage”:”images/white.png”,

                                 “information”: “Linux users can meet the first Tuesday of the month to work out harward and configuration issues.”,

                                 “fixture”:”Tuesday 7pm”,

                                 “capacity”:””,

                                 “tv”:””

                       },

                       {

                                 “point”:”40.294535,-74.682012″,

                                 “homeTeam”:”Applebees”,

                                 “awayTeam”:”After LUPip Mtg Spot”,

                                 “markerImage”:”images/newcastle.png”,

                                 “information”: “Some of us go there after the main LUGip meeting, drink brews, and talk.”,

                                 “fixture”:”Wednesday whenever”,

                                 “capacity”:”2 to 4 pints”,

                                 “tv”:””

                       }

    ]

    และตัวอย่างคลาส JAVA ที่เราต้องการสร้างเอาไว้รับข้อมูล ดังนี้ค่ะ

    ———————————-com.example.Example.java———————————–

    package com.example;

    import javax.annotation.Generated;

    @Generated(“org.jsonschema2pojo”)

    public class Example {

    private String point;

    private String homeTeam;

    private String awayTeam;

    private String markerImage;

    private String information;

    private String fixture;

    private String capacity;

    private String previousScore;

    private String tv;

     

    public String getPoint() {

    return point;

    }

    public void setPoint(String point) {

    this.point = point;

    }

    public String getHomeTeam() {

    return homeTeam;

    }

     

    public void setHomeTeam(String homeTeam) {

    this.homeTeam = homeTeam;

    }

    public String getAwayTeam() {

    return awayTeam;

    }

    public void setAwayTeam(String awayTeam) {

    this.awayTeam = awayTeam;

    }

    public String getMarkerImage() {

    return markerImage;

    }

    public void setMarkerImage(String markerImage) {

    this.markerImage = markerImage;

    }

    public String getInformation() {

    return information;

    }

    public void setInformation(String information) {

    this.information = information;

    }

    public String getFixture() {

    return fixture;

    }

    public void setFixture(String fixture) {

    this.fixture = fixture;

    }

    public String getCapacity() {

    return capacity;

    }

    public void setCapacity(String capacity) {

    this.capacity = capacity;

    }

    public String getPreviousScore() {

    return previousScore;

    }

    public void setPreviousScore(String previousScore) {

    this.previousScore = previousScore;

    }

    public String getTv() {

    return tv;

    }

    public void setTv(String tv) {

    this.tv = tv;

    }

    }

    ซึ่งก็คือคลาส ที่มี method –> get กับ set นั่นเอง

    ซึ่งจะเห็นว่าถ้าฐานข้อมูลเรามีหลายฟิลด์ ก็ต้งต้องทำ method get กับ set ทั้งหมดเลย (ร้องหายแปป)

     

    จะดีแค่ไหนถ้ามีตัวสร้างคลาสให้เราจากข้อมูล JSON ของเราเลย   ง่ายๆ ไปดูเลยค่ะที่เว็บ

    http://www.jsonschema2pojo.org/

        การใช้งานก็ง่าย ๆ โดยการวางตัวอย่างข้อมูล JSON ของเราลงไปและระบุค่านิดหน่อยตามต้องการ

    1

    ขอยกตัวอย่างบางตัวหลัก เช่น

    – Package คือ ชื่อตำแหน่งที่เก็บคลาส

    – class name คือ ชื่อคลาส

    – Source Type คือ รูปแบบของ JSON ถ้าเป็นดังตัวอย่างข้อมูลก็กำหนดเป็น JSON

    – Annotation style คือ รูปแบบของคลาสที่สร้าง

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

    2

    จากตัวอย่าง กดปุ่ม Preview แสดงดังรูป

    3

    ขอขอบคุณ

    http://www.jsonschema2pojo.org/

    http://ajbee.me/2015/09/29/web-data-type-part2-json/

    http://codemobiles.com

    http://devahoy.com/posts/android-custom-listview-with-gson-tutorial/