MeeGo

ถึงแม้ว่าปัจจุบันเราจะเห็น Intel AppUp Center มีแอพลิเคชันสำหรับระบบปฏิบัติการวินโดวส์เสียเป็นส่วนใหญ่ นอกจากวินโดวส์แล้ว Intel AppUp Center ยังต้องการต้องการวางตัวเองให้เป็นตลาดแอพลิเคชันบนหลายแพลตฟอร์มที่ใช้แพลตฟอร์มฮาร์ดแวร์ของอินเทลไปพร้อมๆ กัน โดยช่วงนี้ที่กำลังจะวางตลาดก็คือแท็บเล็ต MeeGo ที่จะเริ่มเปิดตัวในปลายปีนี้

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

หน้าตาของ Intel AppUp Center รุ่นสำหรับแท็บเล็ต MeeGo

สำหรับแอพลิเคชันที่จะส่งเข้า Intel AppUp Center สำหรับระบบปฏิบัติการ MeeGo นั้นจะพัฒนาด้วยอะไรก็ได้ ขอเพียงแต่ให้แอพลิเคชันเรียกใช้ AppUp SDK เพื่อตรวจสอบสิทธิ์การใช้งาน และจัดชุดติดตั้งแอพลิเคชันให้อยู่ในรูปแบบ RPM ตามข้อตกลงที่กำหนดเท่านั้น

อย่างไรก็ตาม เนื่องจากในตอนที่ผ่านมา เราได้พัฒนาแอพลิเคชันบนระบบปฏิบัติการ MeeGo อย่างง่ายๆ ด้วย Qt Quick กันไปแล้ว ดังนั้นในตอนนี้เราจะนำแอพลิเคชันที่พัฒนาด้วย Qt Quick มาเตรียมส่งเข้า Intel AppUp Center กัน

การเตรียมแอพลิเคชันสำหรับส่งเข้า Intel AppUp Center

สำหรับการพัฒนาแอพลิเคชันสำหรับ Intel AppUp Center นั้น เราจะต้องเรียกใช้คำสั่งจาก AppUp SDK เพิ่มอีกเล็กน้อย เพื่อให้แอพลิเคชันของเราสามารถตรวจดูสิทธิ์การใช้งานของผู้ใช้ และรวบรวมข้อมูลต่างๆ กลับมายัง Intel AppUp Center ได้

ขั้นตอนการเตรียมแอพลิเคชันสำหรับ Intel AppUp Center สำหรับ MeeGo หลักๆ นั้นมีดังนี้

  1. ติดตั้ง AppUp SDK สำหรับ MeeGo
  2. ตั้งค่าโปรเจกต์
  3. เพิ่มการเรียกใช้ AppUp SDK
  4. แก้ไขที่อยู่ที่จะใช้ติดตั้งโปรแกรม และที่อยู่ของไฟล์ต่างๆ ในแอพลิเคชัน
  5. เพิ่มไฟล์ไอคอน และข้อมูลเกี่ยวกับแอพลิเคชัน
  6. เพิ่มไฟล์ spec
  7. ทดสอบแอพลิเคชัน
  8. ส่งแอพลิเคชัน

ขั้นตอนที่ 1 ติดตั้ง AppUp SDK สำหรับ MeeGo

ปัจจุบัน AppUp SDK สำหรับ MeeGo นั้นยังมีเฉพาะสำหรับผู้พัฒนาบนระบบปฏิบัติการวินโดวส์เท่านั้น โดยสามารถดาวน์โหลดได้ที่หน้าดาวน์โหลดเครื่องมือสำหรับ MeeGo

เมื่อติดตั้งแล้ว อย่าลืมรีสตาร์ทเครื่องก่อนเริ่มขั้นตอนต่อไป

ขั้นตอนที่ 2 ตั้งค่าโปรเจกต์

เราจะต้องเพิ่มไลบรารีของ AppUp SDK เข้าไปในโปรเจกต์ โดย

  1. เปิดไฟล์โปรเจกต์ของ Qt Creator (ไฟล์ *.pro) แล้วเพิ่มการตั้งค่าต่อไปนี้

    {syntaxhighlighter brush:plain}

    Add path to Intel AppUp™ SDK headers directory

    INCLUDEPATH += "$$(IADP_SDK_DIR_MEEGO)Cpp/include"

    Add required libraries

    LIBS += -lxml2 -lpthread
    LIBS += "$$(IADP_SDK_DIR_MEEGO)Cpp/lib/libadpruntime.a"
    "$$(IADP_SDK_DIR_MEEGO)Cpp/lib/libadpcore.a"
    "$$(IADP_SDK_DIR_MEEGO)Cpp/lib/libxerces-c.a"
    "$$(IADP_SDK_DIR_MEEGO)Cpp/lib/libxml-security-c.a"
    "$$(IADP_SDK_DIR_MEEGO)Cpp/lib/libcrypto.a"
    {/syntaxhighlighter}

  2. เลือกโหมด Projects จากแถบซ้ายมือ ที่ส่วนการตั้งค่า MeeGo Build ให้นำเครื่องหมายถูกในหัวข้อ Shadow build ออก เนื่องจาก AppUp SDK ยังไม่สนับสนุนความสามารถนี้

ขั้นตอนที่ 3 เพิ่มการเรียกใช้ AppUp SDK

AppUp SDK จะอำนวยความสะดวกให้นักพัฒนาแอพลิเคชันในการตรวจสอบผู้ใช้ว่ามีสิทธิ์ใช้โปรแกรมหรือไม่ (ได้ซื้อแอพลิเคชันของเราอย่างถูกต้องหรือไม่) รวมทั้งติดตามข้อผิดพลาดของแอพลิเคชันเพื่อรายงานกลับมาให้นักพัฒนาทราบ อย่างไรก็ตาม ในบทความนี้จะยกตัวอย่างเฉพาะส่วนที่จำเป็นต้องมีในแอพลิเคชันเท่านั้น นั่นคือส่วนตรวจสอบผู้ใช้ โดยเปิดไฟล์ Sources/main.cpp แล้วแก้ไขซอร์สโค้ดตามด้านล่าง โดยอ่านคำอธิบายการทำงานได้จากคอมเมนต์ในซอร์สโค้ด

ดูรายละเอียดเกี่ยวกับการใช้งาน AppUp SDK เพิ่มเติมได้จากบทความ ทำความรู้จักกับ AppUp SDK, เริ่มต้นพัฒนาแอพลิเคชันลง Intel AppUp Center และเอกสารของ AppUp SDK

{syntaxhighlighter brush: cpp}
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"

// เพิ่ม Header file ของ Intel AppUp Center
#include "adpcppf.h"

// ระบุหมายเลขแอพลิเคชัน ซึ่งต้องระบุในการใช้งาน AppUp SDK
// ในการทดสอบเบื้องต้น สามารถใช้หมายเลขแอพลิเคชันสำหรับทดสอบก่อนได้
const com::intel::adp::ApplicationId APPLICATION_ID = ADP_DEBUG_APPLICATIONIDว

// เมื่อลงทะเบียนแอพลิเคชันใน Intel AppUp Center แล้ว จะต้องสร้างแอพลิเคชันที่ใช้หมายเลขแอพลิเคชันจริง โดยเปลี่ยนซอร์สโค้ดด้านบนเป็นนี้ (อย่าลืมแก้ไขหมายเลขแอพลิเคชัน)
// const com::intel::adp::ApplicationId APPLICATION_ID = ApplicationId(0x01234567, 0x89ABCDEF, 0x02468ACE, 0x13579BDF);

int main(int argc, char *argv[]) {
bool isAuthorized = false;
QString errorMessage;
com::intel::adp::Application *pApp = NULL;

// ทดสอบว่าผู้ใช้มีสิทธิ์เปิดแอพลิเคชันหรือไม่ (ซื้อแอพลิเคชันของเราหรือยัง)
try {
    pApp = new Application(APPLICATION_ID);
    isAuthorized = true; 
}
catch (com::intel::adp::AdpException& e) {
    message = QString::fromAscii(e.message());
    isAuthorized = false;
}

if (pApp != NULL) {
    delete pApp;
}

if (isAuthorized) {
    // เปิดแอพลิเคชันได้ (ส่วนนี้ใช้ซอร์สโค้ดเดิมจาก QtCreator)
    QApplication app(argc, argv);

    QmlApplicationViewer viewer;
    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
    viewer.setMainQmlFile(QLatin1String("qml/hellomeego/main.qml"));
    viewer.showExpanded();
    
    return app.exec();
}
else {
    // ผู้ใช้ไม่มีสิทธิ์เปิดแอพลิเคชัน แสดงข้อความแจ้งผู้ใช้ก่อนจบแอพลิเคชัน
    QMessageBox messageBox(QMessageBox::Information, "Error", message, QMessageBox::Ok);
    messageBox.exec(); 
    
    return false;
}

}
{/syntaxhighlighter}

ขั้นตอนที่ 4 แก้ไขที่อยู่ที่จะใช้ติดตั้งโปรแกรม และที่อยู่ของไฟล์ต่างๆ ในแอพลิเคชัน

เนื่องจากในข้อตกลงการส่งแอพลิเคชันของ Intel AppUp Center กำหนดให้โปรแกรมที่ส่งเข้ามาต้องติดตั้งในไดเรกทอรี /opt/{ชื่อแพคเกจของแอพลิเคชัน} เราจะตั้งค่าโปรเจกต์ให้ไปติดตั้งในตำแหน่งดังกล่าว ดังนี้

  1. เปิดไฟล์ qmlapplicationviewer/qmlapplicationviewer.pri จากนั้นแก้ไขซอร์สโค้ดที่กำหนดค่าตัวแปร installPrefix ของระบบปฏิบัติการ unix จาก

    {syntaxhighlighter brush:cpp first-line:104 highlight:109}
    } else:unix {
    maemo5 {
    installPrefix = /opt/usr
    desktopfile.path = /usr/share/applications/hildon
    } else {
    installPrefix = /usr/local
    desktopfile.path = /usr/share/applications
    {/syntaxhighlighter}

    เป็น

    {syntaxhighlighter brush:cpp first-line:104 highlight:109}
    } else:unix {
    maemo5 {
    installPrefix = /opt/usr
    desktopfile.path = /usr/share/applications/hildon
    } else {
    installPrefix = /opt/{ชื่อแพคเกจของแอพลิเคชัน}
    desktopfile.path = /usr/share/applications
    {/syntaxhighlighter}

    ตัวอย่างเช่น

    {syntaxhighlighter brush:cpp first-line:104 highlight:109}
    } else:unix {
    maemo5 {
    installPrefix = /opt/usr
    desktopfile.path = /usr/share/applications/hildon
    } else {
    installPrefix = /opt/com.blognone.reader
    desktopfile.path = /usr/share/applications
    {/syntaxhighlighter}

  2. แก้ไขไฟล์ Other files/*.desktop และแก้ไขซอร์สโค้ด จาก

    {syntaxhighlighter brush:plain first-line:7 highlight:7}
    Exec=/opt/usr/bin/qml-ui-app
    {/syntaxhighlighter}

    เป็น

    {syntaxhighlighter brush:plain first-line:7 highlight:7}
    Exec=/opt/{ชื่อแพคเกจของแอพลิเคชัน}/bin/qml-ui-app
    {/syntaxhighlighter}

    ตัวอย่างเช่น

    {syntaxhighlighter brush:plain first-line:7 highlight:7}
    Exec=/opt/com.blognone.reader/bin/qml-ui-app
    {/syntaxhighlighter}

  3. แก้ไขซอร์สโค้ดของแอพลิเคชัน เพื่อให้เก็บไฟล์ต่างๆ ถูกตำแหน่งตามที่กำหนด ดังนี้

    • ไฟล์ล็อก หรือไฟล์แคช เก็บไว้ที่ /var/opt/{ชื่อแพคเกจของแอพลิเคชัน}
    • ไฟล์ตั้งค่าสำหรับใช้ทั้งเครื่อง เก็บไว้ที่ /etc/opt/{ชื่อแพคเกจของแอพลิเคชัน}
    • ไฟล์ตั้งค่าสำหรับผู้ใช้แต่ละคน เก็บไว้ที่ ~/.config/{ชื่อแพคเกจของแอพลิเคชัน}

ขั้นตอนที่ 5 เพิ่มไฟล์ไอคอน และข้อมูลเกี่ยวกับแอพลิเคชัน

เนื่องจากในข้อตกลงการส่งแอพลิเคชันเข้าสู่ Intel AppUp Center กำหนดให้โปรแกรมที่ส่งเข้ามาต้องมีไอคอนรูปแบบ PNG หรือ SVG ขนาด 16x16, 32x32, 64x64 และ 128x128 พร้อมทั้งตั้งค่าไฟล์ *.desktop ให้ชี้ไปยังไอคอนนั้น เราจึงต้องเตรียมไฟล์พวกนี้ไว้ด้วย โดย

  1. เปิดไฟล์ Other files/*.desktop จากนั้นแก้ไข/เพิ่มข้อมูลต่อไปนี้ (สำหรับฟิลด์ Categories สามารถเลือกหมวดหมู่ที่ต้องการได้จากมาตรฐานของ freedesktop.org)

    {syntaxhighlighter brush:plain}
    [Desktop Entry]
    Encoding=UTF-8
    Version={ใช้ 1.0 เหมือนเดิม (เป็นเวอร์ชันของไฟล์นี้ ไม่ใช่เวอร์ชันของแอพลิเคชัน)}
    Name={ชื่อแอพลิเคชัน}
    GenericName={ชื่อแอพลิเคชัน}
    Comment={คำอธิบายแอพลิเคชันอย่างสั้นๆ}
    Exec={แก้ไขไปแล้วในขั้นตอนที่ 4}
    Categories={หมวดหมู่ของแอพลิเคชัน}
    Icon={ชื่อไอคอน จะระบุเฉพาะชื่อโดยไม่ใส่นามสกุล หรือระบุที่อยู่เต็มก็ได้}
    Type=Application
    Terminal=false
    StartupNotify=true
    {/syntaxhighlighter}

    ตัวอย่างเช่น

    {syntaxhighlighter brush:plain}
    [Desktop Entry]
    Encoding=UTF-8
    Version=1.0
    Name=Blognone Reader
    GenericName=Blognone Reader
    Comment=Tech news from Blognone
    Exec=/opt/com.blognone.reader/
    Categories=Accessories
    Icon=blognone-reader
    Type=Application
    Terminal=false
    StartupNotify=true
    {/syntaxhighlighter}

  2. เปิดไฟล์โปรเจกต์ของ Qt Creator (ไฟล์ *.pro) แล้วเพิ่มการตั้งค่าต่อไปนี้

    {syntaxhighlighter brush:plain}
    target.path = /opt/{ชื่อแพคเกจของแอพลิเคชัน}/

    icon.files = hellomeego.svg
    icon.path = /usr/share/icons

    icon16.files = icons/16x16/hellomeego.svg
    icon16.path = /usr/share/icons/hicolor/16x16/apps

    icon32.files = icons/32x32/hellomeego.svg
    icon32.path = /usr/share/icons/hicolor/32x32/apps

    icon64.files = icons/64x64/hellomeego.svg
    icon64.path = /usr/share/icons/hicolor/64x64/apps

    icon128.files = icons/128x128/hellomeego.svg
    icon128.path = /usr/share/icons/hicolor/128x128/apps

    desktop.files = hellomeego.desktop
    desktop.path = /usr/share/applications

    desktop.files = hellomeego.desktop
    desktop.path = /usr/share/applications

    INSTALLS += target icon16 icon32 icon64 icon128 desktop
    {/syntaxhighlighter}

    หากมีไฟล์อื่นๆ ที่จำเป็นต้องใช้ในแอพลิเคชัน ให้เพิ่มข้อมูลในไฟล์นี้เข้าไปด้วยเช่นเดียวกัน โดยให้ไฟล์นี้อยู่ในไดเรกทอรี /etc/opt/{ชื่อแพคเกจของแอพลิเคชัน}

  3. คัดลอกไฟล์ไอคอนเข้ามาในโปรเจกต์

ขั้นตอนที่ 6 เพิ่มไฟล์ spec

ในการสร้างชุดติดตั้งแบบ RPM นั้นจำเป็นต้องมีไฟล์ spec อยู่ในชุดติดตั้ง ดังนั้นเราจะเพิ่มไฟล์ spec โดยสร้างไฟล์ชื่อ spec ในโฟลเดอร์โปรเจกต์ และแก้ไขข้อมูลเบื้องต้น

{syntaxhighlighter brush:plain}
# Define package name
%define app_name com.blognone.reader

Name: blognone-reader
Version: 0.1
Release: 1
License: Intel
Summary: News reader from blognone.com
Url: http://www.blognone.com
Group: Applications/Productivity
Requires: libqt >= 4.7.0

%description
News reader from blognone.com

%prep
%setup -q

%build

# Add commands here to compile the package.
make

%install
make install INSTALL_ROOT=%{buildroot}

%files
%defattr(-,root,root,-)

/opt/%{app_name}
%{_datadir}/applications/*.desktop
%{_datadir}/icons/*.png
%{_datadir}/icons/hicolor/16x16/apps/*.png
%{_datadir}/icons/hicolor/32x32/apps/*.png
%{_datadir}/icons/hicolor/64x64/apps/*.png
%{_datadir}/icons/hicolor/128x128/apps/*.png
{/syntaxhighlighter}

สำหรับรายละเอียดการสร้างไฟล์ spec ดูรายละเอียดเพิ่มเติมได้จากวิกิของ MeeGo หรือบทความการสร้างแพคเกจ RPM

ขั้นตอนที่ 7 ทดสอบแอพลิเคชัน

ในการทดสอบแอพลิเคชันนั้น เราจะต้องติดตั้งแอพลิเคชัน AppUp Center บนแท็บเล็ต MeeGo ก่อน ดังนี้

  1. ดาวน์โหลดไฟล์ติดตั้ง AppUp Center โดยใช้เว็บเบราว์เซอร์ในแท็บเล็ต MeeGo

  2. เปิดเทอร์มินัลในแท็บเล็ต MeeGo จากนั้นพิมพ์คำสั่งต่อไปนี้ (รหัสผ่านสำหรับผู้ใช้ root คือ meego)

    {syntaxhighlighter brush:bash}
    su
    rpm -i Downloads/com.intel.appup-tablet-2.5.22438.27-1.1.i586.rpm
    exit
    {/syntaxhighlighter}

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

ขั้นตอนที่ 8 ส่งแอพลิเคชัน

เมื่อทุกอย่างเรียบร้อยแล้วก็ส่งแอพลิเคชันเข้าสู่ Intel AppUp Center ได้แล้ว โดย

  1. เข้าไปยังหน้าแดชบอร์ดของนักพัฒนา จากนั้นกดปุ่ม Start A New Application เพื่อสร้างแอพลิเคชันใหม่

  2. เมื่อสร้างแอพลิเคชันในระบบเรียบร้อยแล้ว นำหมายเลข GUID มาใส่เป็นหมายเลขแอพลิเคชันสำหรับ AppUp SDK (ดูบรรทัดที่ 12 ของซอร์สโค้ดในขั้นตอนที่ 3)

    หน้าแดชบอร์ดเมื่อสร้างแอพลิเคชัน และได้ GUID แล้ว

  3. สั่ง deploy โปรเจกต์เพื่อสร้างชุดติดตั้ง โดยเรียกเมนู Build > Deploy Project

  4. เข้าไปยังไดเรกทอรีที่เก็บโปรเจกต์ ในไดเรกทอรีย่อย rrpmbuild จะมีไฟล์ RPM ซึ่งเป็นชุดติดตั้งของแอพลิเคชันที่จะใช้ส่งเข้าสู่ Intel AppUp Center ให้คัดลอกและเปลี่ยนชื่อเป็น {ชื่อแพคเกจของแอพลิเคชัน}.rpm ตัวอย่างเช่น com.blognone.reader.rpm จากนั้นจึงนำไปส่งในระบบต่อไป

สำหรับขั้นตอนการส่งแอพลิเคชันต่อจากนี้สามารถอ่านได้ในบทความ แนะนำขั้นตอนส่งแอพลิเคชันเข้า Intel AppUp Center

ลิงก์ที่น่าสนใจ

บทความก่อนหน้า

บทความในชุด Intel AppUp Developer Program เป็นบทความที่ได้รับการสนับสนุนจากบริษัทอินเทล ไมโครอิเล็กทรอนิกส์ (ประเทศไทย) จำกัดเพื่อสนับสนุนให้นักพัฒนาสามารถเข้าร่วมกับ Intel AppUp Center ได้ง่ายยิ่งขึ้น ท่านสามารถเข้าดูข้อมูลเพิ่มเติมของโครงการได้ที่ Intel AppUp Developer Program

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand