RootTools
คือไลบารี่ที่นักพัฒนาสามารถใช้งานได้ง่ายเพื่อให้แอพของเขาสามารถคุยกับระบบปฏิบัตการผ่านผู้ใช้ ROOT ได้ซึ่งใน RootTools มีความสารมารถต่างๆดังนี้
วันพุธที่ 24 กรกฎาคม พ.ศ. 2556
วันพุธที่ 3 กรกฎาคม พ.ศ. 2556
[STL] วิธีการใช้ฟังก์ชั่น sort
ฟังก์ชั่น sort คือคำสั่งสำเร็จรูปในการเรียงลำดับ
ลองรับใน ภาษา C++ 1998 ขึ้นไป
อยู่ในชุด #include<algorithm> ใน namespace std
รูปแบบการประกาศ
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 กันนะครับ
Container adaptors:
Associative containers:
Unordered associative containers:
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)
- <algorithm>
- อัลกอริทึมสำเร็จรูปต่างๆ (เช่น sort seach) (library )
- <chrono>
- จัดการเวลา (header)
- <complex>
- จัดการตัวเลข (เช่น cos log) (header)
- <exception>
- แก้ปัญหาบัคโปรแกรม (header)
- <functional>
- ทำ operator เป็น function (header)
- <initializer_list>
- Initializer list (header)
- <iterator>
- จัดการตัวชี้ (header)
- <limits>
- เก็บขอบเขตข้อมูล (header)
- <locale>
- ฟังก์ชันของ c ในรูป class (header)
- <memory>
- จัดการหน่วยความจำแรม (header)
- <new>
- จัดการหน่วยความจำแบบพลวัต (header)
- <numeric>
- Generalized numeric operations (header)
- <random>
- จัดการการสุ่ม (header)
- <ratio>
- Ratio header (header)
- <regex>
- Regular Expressions (header)
- <stdexcept>
- แก้ปัญหาบัตในโปรแกรม (header)
- <string>
- จัดการสายอักขระ (header)
- <system_error>
- ข้อผิดพลาดระบบ (header)
- <tuple>
- Tuple library (header)
- <typeinfo>
- Type information (header)
- <type_traits>
- type_traits (header)
- <utility>
- Utility components (header)
- <valarray>
- Library for arrays of numeric values (header)
โครงสร้าง ข้อมููลที่มีใน STL C++2011
Container class templates
Sequence containers:- array
- Array class (class template )
- vector
- Vector (class template )
- deque
- Double ended queue (class template )
- forward_list
- Forward list (class template )
- list
- List (class template )
Container adaptors:
- stack
- LIFO stack (class template )
- queue
- FIFO queue (class template )
- priority_queue
- Priority queue (class template )
Associative containers:
- set
- Set (class template )
- multiset
- Multiple-key set (class template )
- map
- Map (class template )
- multimap
- Multiple-key map (class template )
Unordered associative containers:
- unordered_set
- Unordered Set (class template )
- unordered_multiset
- Unordered Multiset (class template )
- unordered_map
- Unordered Map (class template )
- unordered_multimap
- Unordered Multimap (class template )
วันจันทร์ที่ 24 มิถุนายน พ.ศ. 2556
[Tips] ADB OverNetwork หลายเครื่องได้ในคราเดียว
เคยเป็นกันบ้างไหมครับ เขียนๆแอพอยู่จะลองรันแอพไปๆมาๆ อ้าว หาสายUSB ไม่เจอซะงั้น วันนี้ผมมีวิธีแก้ปัญหาโลกแตกนี้มาฝากครับ
ก่อนอื่นเลย เราต้องมีตัว ADB ก่อนนะครับ โดยท่านสามารถโหลดได้ในชุดของ Android-sdk โดยจะอยู่ในโฟลเดอร์ platform-tools นะครับ
http://developer.android.com/sdk/index.html
พิเศษ!! หาท่านใช้ Linux แล้วละก็ เรามีวิธีที่ง่ายกว่านั้น
-เปิด Terminal พิมพ์ sudo apt-get install android-tools-adb

-จากนั้นกรอก password ของ account ที่ท่าน login อยู่ใน linux ครับ

-รอสักดาวน์โหลดสักครู่ครับ จนกระทั่ง ขึ้นว่าสามารถพิมพ์คำสั่งต่อไปได้ก็เป็นอันเสร็จในส่วนการลง ADB ครับ

-จากนั้นเข้า eclispe ไป ลองกด Run project ดู ถ้าเจอหน้าต่างประมาณนี้ ให้ กด no ไปนะครับ

-เจอหน้าต่างนี้บอกให้ทราบว่ายังไม่มีอุปกรณ์ใดๆ ต่อเข้ามาที่ คอมพิวเตอร์เลย

-ให้เชื่อมอุปกรณ์ทั้งหมดเข้าในwireless ตัวเดียวกัน จากนั้น จด IP ของอุปกรณ์ Android แต่ละตัวไว้

** กรณีปล่อยสัญญาณเป็น portable Hotspot ดู ip ได้โดยใช้คำสั่ง ip addr ดูตรงบรรทัด inet

-เข้า ตั้งค่า > นักพัฒนาซอฟแวร์ > ติ๊กที่ ADB OverNetworkครับ

**เครื่องไหนไม่มีให้โหลดแอพ ADB OverNetwork ใน playstore ครับ

-จากนั้น ต่อเข้า ip ของอุปกรณ์เลยนะครับ ใช้คอมเปิด terminal พิมพ์ adb connect ตามด้วย ipครับ

แน่นอนว่าเราสามารถเชื่อมต่อได้หลายเครื่องพร้อนกัน

กลับมาดูที่ Eclispe ก็จะเห็นว่ามันมีเมนูมาให้เลือกแล้ว !!!

เท่านี้เราก็จะสามารถรันแอพโดยไม่ต้องใช้สายได้แล้วนะครับ


ก่อนอื่นเลย เราต้องมีตัว ADB ก่อนนะครับ โดยท่านสามารถโหลดได้ในชุดของ Android-sdk โดยจะอยู่ในโฟลเดอร์ platform-tools นะครับ
http://developer.android.com/sdk/index.html
พิเศษ!! หาท่านใช้ Linux แล้วละก็ เรามีวิธีที่ง่ายกว่านั้น
-เปิด Terminal พิมพ์ sudo apt-get install android-tools-adb
-จากนั้นกรอก password ของ account ที่ท่าน login อยู่ใน linux ครับ
-รอสักดาวน์โหลดสักครู่ครับ จนกระทั่ง ขึ้นว่าสามารถพิมพ์คำสั่งต่อไปได้ก็เป็นอันเสร็จในส่วนการลง ADB ครับ
-จากนั้นเข้า eclispe ไป ลองกด Run project ดู ถ้าเจอหน้าต่างประมาณนี้ ให้ กด no ไปนะครับ
-เจอหน้าต่างนี้บอกให้ทราบว่ายังไม่มีอุปกรณ์ใดๆ ต่อเข้ามาที่ คอมพิวเตอร์เลย
-ให้เชื่อมอุปกรณ์ทั้งหมดเข้าในwireless ตัวเดียวกัน จากนั้น จด IP ของอุปกรณ์ Android แต่ละตัวไว้
** กรณีปล่อยสัญญาณเป็น portable Hotspot ดู ip ได้โดยใช้คำสั่ง ip addr ดูตรงบรรทัด inet
-เข้า ตั้งค่า > นักพัฒนาซอฟแวร์ > ติ๊กที่ ADB OverNetworkครับ
**เครื่องไหนไม่มีให้โหลดแอพ ADB OverNetwork ใน playstore ครับ
-จากนั้น ต่อเข้า ip ของอุปกรณ์เลยนะครับ ใช้คอมเปิด terminal พิมพ์ adb connect ตามด้วย ipครับ
แน่นอนว่าเราสามารถเชื่อมต่อได้หลายเครื่องพร้อนกัน
กลับมาดูที่ Eclispe ก็จะเห็นว่ามันมีเมนูมาให้เลือกแล้ว !!!
เท่านี้เราก็จะสามารถรันแอพโดยไม่ต้องใช้สายได้แล้วนะครับ
วันศุกร์ที่ 5 ตุลาคม พ.ศ. 2555
[Android app][c] ตอนที่1 ทักทายโลก
http://www.youtube.com/watch?v=PTya1eq5jqE
เข้าไปดูได้ที่นี่นะครับ ถ่ายเอง พากย์เอง
เข้าไปดูได้ที่นี่นะครับ ถ่ายเอง พากย์เอง
สมัครสมาชิก:
บทความ (Atom)