วันอาทิตย์ที่ 15 ธันวาคม พ.ศ. 2556

วิธีแปลแอพจาก CyanogenMod

1. เข้าไปที่ https://github.com/cyanogenmod เลือกบริเวณ Repositories จากนั้นมองหา Repositories ที่ขึ้นต้นด้วย android_packages_apps
2.เข้าลิงค์โปรเจคที่ต้องการ แล้วเข้าไปยังโฟลเดอร์ /res/values
3.เลือกแปลไฟล์ชื่อ cm_strings.xml และ cm_arrays.xml  ในโฟลเดอร์ /res/values

4.เปิดทั้ง สองไฟล์ ก็อบลง notepad แล้วแก้ข้อความที่อยู่ระหว่าง tag เช่นตัวอย่างจากภาพด้านล่าง บรรทัดที่ 2 คือ <string name="menu_item_add">Add</string>เราจะแก้เป็นคำว่าเพิ่ม ให้แก้เฉพาะตรงกลาง คือบรรทัดนั้นจะถูกแก้เป็น <string name="menu_item_add">เพิ่ม</string>

5. อัพโหลดโค้ดที่คุณแปลแล้วกลับมายังกลุ่ม หรือ อัพโหลดกลับไปยัง ระบบ gerrit หากคุณทำเป็น (ห้ามกด pull request เด็ดขาด เนื่องจากทาง CM ไม่รับโค้ดทาง pull request)

หากมีข้อสงสัยให้โพสถามในกลุ่ม CyanogenMod Thailand's Fansub ได้เลยครับ

วันเสาร์ที่ 14 กันยายน พ.ศ. 2556

เขียน C หรือ C++ บน FirefoxOS

สาธิตบน Ubuntu 13.04
ขั้นแรก เตรียมอุปกรณ์
ก่อนอื่นต้องเตรียมโหลดตัว compiler ก่อน
สำหรับภาษา C ใช้ arm-linux-gnueabi-gcc ภาษา C++ ใช้ arm-linyx-gnueabi-g++
ติดตั้งโดยใช้คำสั่ง
sudo apt-get install arm-linux-gnueabi-gcc หรือ sudo apt-get install arm-linux-gnueabi-g++ (ติดตั้งทั้งคู่ได้ ไม่มีผลกระทบ)

ระบบจะถาม password ก็กรอกไป แล้ว enter จากนัั้นจะถามว่าต้องการติดตั้งไหม? ตอบ y นะครับ

หลังจากเตรียมอุปกรณ์เสร็จก็เขียนโค้ดปกติครับ

มาถึงขั้นคอมไฟล์ วิธีใช้ คือสั่ง arm-linux-gnueabi-g++ "ชื่อไฟล์โค้ด" -o "ชื่อไฟล์หลังคอมไพล์"

ถ้าไม่มีข้อผิดพลาดอะไรจะมีไฟล์หลังคอมไพล์ออกมาครับ
จากนั้น หลังจาก ได้ไฟล์มาแล้วให้นำไฟล์เข้าเครื่องโดยใช้คำสั่ง adb push "ที่อยู่ไฟล์บนคอม" "ที่อยู่ไฟล์ที่จะวางบนมือถือ"

  จากนั้นลองรันผ่าน adb shell chmod 777 "ที่อยู่ไฟล์บนมือถือ" เพื่อให้ระบบอนุญาติให้ไฟล์รันบนเครื่อง

จากนั้น ลองสั่ง adb shell แล้วรันไฟล์นั้นดูครับ :) // ขออภัยไม่มีรูป เนื่องจากผมเล่นกับระบบเยอะมันเลยบอกว่าหาไฟล์ไม่เจอซะอย่างงั้นทั้งๆที่ LS แล้วเจอ



วันพุธที่ 24 กรกฎาคม พ.ศ. 2556

Android app :: Roottools ใช้แอพเราคุยกับระบบ

RootTools คือไลบารี่ที่นักพัฒนาสามารถใช้งานได้ง่ายเพื่อให้แอพของเขาสามารถคุยกับระบบปฏิบัตการผ่านผู้ใช้ ROOT ได้ซึ่งใน RootTools มีความสารมารถต่างๆดังนี้

วันพุธที่ 3 กรกฎาคม พ.ศ. 2556

[STL] วิธีการใช้ฟังก์ชั่น sort

ฟังก์ชั่น sort คือคำสั่งสำเร็จรูปในการเรียงลำดับ
ลองรับใน ภาษา C++ 1998 ขึ้นไป
อยู่ในชุด #include<algorithm> ใน namespace std
รูปแบบการประกาศ

sort(ตัวชี้แรก,ตัวชี้สุดท้าย)
หรือ
sort(ตัวชี้แรก,ตัวชี้สุดท้าย,วิธีการเรียง)

เช่น
int a[]={7,2,1,9,3,7,8,5,1,2};
sort(a,a+10);
//ค่าในarray a จะถูกเรียงลำดับจากน้อยไปมาก 
แต่ถ้าหากเรียงจากมากไปน้อย หรือเรียงแบบอื่นๆ ก็สามารถทำหนดวิธีการเรียงโดย
bool compare(int a,int b)
{
return a>b;
}
int main(){
int a[]={7,2,1,9,3,7,8,5,1,2};
sort(a,a+10,compare);
}
//ค่าในarray a จะถูกเรียงลำดับจากมากไปน้อย 
หากเป็น data structer ไม่ว่าจะเป็น class หรือ struct ก็สามารถ กำหนดได้เหมือนกัน
#include<stdio.h>
#include<algorithm>
using namespace std;
struct item{
int value;
float floating;
};
bool compare(struct item a,struct item b)
{
return a.value<b .value;
}
int main(){
int i;
struct item box[10];
for(i=0;i<10;i++){
scanf("%d %f",&box[i].value,&box[i].floating);
}
sort(box,box+10,compare);
// จะเรียงลำดับ array box จากน้อยไปมาก ตามค่าของ valu
 }
for(i=0;i<10;i++){
printf("\n%d %f",box[i].value,box[i].floating);
} 
ทั้งนี้ยัง สามารถใช้ได้กับอีกหลายโครงสร้าง เช่น ใช้กับ vector เป็นต้น
vectorint vex;
sort(vex.begin(),vex.end());
//หรือแม้แต่ vector ที่เก็บข้อมูลเป็น node หรือ เป็น class ก็สามารถ ทำได้แต่ต้องสร้าง function compare ให้
ตัวอย่างเต็ม เพื่อการนำไปใช้
#include<stdio.h>
#include<algorithm>
using namespace std;
bool compare(int a,int b)
{
return a>b;
}
int main(){
int a[]={7,2,1,9,3,7,8,5,1,2};
sort(a,a+10,compare);
int i;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
} 

วันอังคารที่ 25 มิถุนายน พ.ศ. 2556

Standard Template Library (STL) อาวุธลับสำเร็จรูป

โพสนี้นะครับ ผมจะมาแนะนำให้ทุกท่านรู้จักกับ  STL หรือ Standrad Template Library กันนะครับ
STL คือชุดรวม คำสั่ง/algortihm/โครงสร้างที่เราใช้กันอยู่บ่อยๆนะครับ เพื่อความสะดวกในการเขียน STL นั้นเป็นของ C++ ย้ำ C++ ไม่ใช่ C ฉะนั้น C จะใช้ไม่ได้แน่นอนครับ 


คำถาม : ทำไมต้องใช้ STL
ตอบ : สมมุติว่าคุณกำลังเขียนโปรแกรมหนึ่งอยู่ซึ่งมีเวลาจำกัด คุณจะเป็นจะต้องใช้ Red-black tree แต่ด้วยอัลกอริทึมที่ยาวเหยียด ของ Red-black tree คุณคงจะทำไม่ทันแน่ๆ ฉะนั้นทางออกของคุณคือใช้คำสั่งสำเร็จรูป หรือ STL นั่นเอง

วิธีใช้ STL คือ include header เข้ามาโดยไม่ต้องใส่นามสกุล เช่น #include<algorithm>

Header ที่มีใน STL 2011 (แปลจาก cplusplus.com)
 
โครงสร้าง ข้อมููลที่มีใน STL C++2011

Container class templates

Sequence containers:

Container adaptors:

Associative containers:

Unordered associative containers: