#AndroidStudio ตอนที่ 5 สร้างปุ่ม Close App แบบ VectorDrawable ตัวปุ่มภาพหามาได้หลายวิธี และการสั่งเรียกบทความต่างกัน

#AndroidStudio ตอนที่ 5 สร้างปุ่ม Close App แบบ VectorDrawable
ตัวปุ่มภาพหามาได้หลายวิธี และการสั่งเรียกบทความต่างกัน

<introduction>
เคยเห็นแอพทั่วไป มีปุ่ม Close และเรียก String มาแสดงเยอะหน่อย
เมื่อมองหาแอพเริ่มต้น เพราะผมจะไม่เริ่มต้นกับแอพเปล่าแน่
เนื่องจาก Android Studio เค้ามีโครงมาให้แล้ว
แล้วก็ได้พบกับ Project เริ่มต้นชื่อ Bottom Navigation Activity
ที่เตรียมปุ่มมาให้ใน NavigationView จำนวน 3 ปุ่ม
ผมจึงเปลี่ยนภาพจากปุ่ม Home เป็นภาพปุ่ม Close
ตัวภาพเป็นแฟ้มแบบ xml หรือที่เรียกว่า VectorDrawable
มีฐานมาจากภาพแบบ SVG หรือ PNG ยิ่งค้น และอ่านก็ยิ่งสนุก
เพราะมีทางเลือกให้หลายทาง
แต่ Android Studio เตรียมภาพไว้ให้ตั้ง 923 ภาพแล้ว
พอได้ภาพถูกใจแล้ว แล้วก็ใส่ Activity คือ สั่ง close application
ส่วนอีก 2 ปุ่มให้เรียกบทความที่ 610 กับ 611 มาใส่ใน TextView และมี ScrollView
ตามที่เคยเล่าในตอนที่ 4 แล้วนั้น
</introduction>

<process>
กระบวนการในการพัฒนา APP
เพื่อสั่งให้ปุ่มทำงาน และการเลือกภาพประกอบปุ่มที่เป็น VectorDrawable จาก SVG ในหลายวิธี และแสดงบทความตามปุ่มที่กด
มีขั้นตอน ดังนี้

1. เลือกสร้าง New Project แบบ Bottom Navigation Activity
ชื่อ controlbutton
แล้วเข้าไปสำรวจใน activity_main.xml ดูใน ComponentTree
พบ Tag ที่เค้าสร้างไว้ 4 Tag
โดย Tag ที่คุมทุกอย่าง คือ container (LinearLayout)(vertical)
ประกอบด้วย content(FrameLayout) กับ navigation (BottomNavigationView)
และพบ message(TextView) อยู่ใน content(FrameLayout)
สั่ง Build APK ก็ไม่พบปัญหาอะไร และ run ได้ปกติ มีกำลังใจแล้วครับ

https://gist.github.com/thaiall/c7c45d52676a4961293a6a774da3bda0

2. การใส่ Data ใน TextView เพื่อจะได้สั่ง Scroll แบบ Vertical ไปดูด้านล่างได้
เริ่มจากสร้าง

<string name=”data1″>ข้อมูลที่นี่ มาจากกบทความ 611</string>

ใน app, res, values, strings.xml
แล้วเรียกใช้ใน TextView ว่า android:text=”@string/data1″ />

3. แม้จะมีข้อมูลมากพอแล้ว แต่ผลการทดสอบพบว่า Scroll ไม่ทำงาน
หน้าจอยังไม่รองรับการ Scroll ไปหาข้อมูลส่วนที่เหลือไม่ได้ เห็นหน้าเดียว
แก้ไขโดยเปิดแฟ้ม activity_main.xml
แล้วเพิ่ม ScrollView คลุมหัวท้ายของ TextView

<ScrollView android:layout_width=”wrap_content” android:layout_height=”wrap_content”>
<TextView … ที่นี่ />
</ScrollView>

 

4. ในกล่อง BottomNavigationView บน Smartphone หรือ Emulator
จะพบ 3 Icon ด้านล่าง : Home + Dashboard + Notifications
แต่คลิ๊กเข้าไปก็เห็นว่าข้อความใน TextView เปลี่ยนไปตามปุ่มกดเท่านั้น
ไปดูในแฟ้ม MainActivity.java พบส่วนหนึ่งของ code
ที่สั่ง setText ให้เปลี่ยนไปตามการ switch ของ ItemId ที่รับมา
แล้วพบการประกาศ title_home หรือ R.string.title_home
ถูกกำหนดไว้ในแฟ้ม strings.xml เช่นเดียวกับตัวอื่น และ data1
จะเปลี่ยนคำว่า home เป็น close ก็ต้องเปลี่ยนที่แฟ้มนี้ด้วย

5. ถ้าเปลี่ยนจากปุ่ม home เป็น close ต้องทำดังนี้
– ใน app,res,values,strings.xml เปลี่ยนจาก home เป็น close ให้หมด
– ใน app,java,[package name],MainActivity.java เปลี่ยนจาก home เป็น close ให้หมด
– ใน app,res,menu,navigation.xml
เปลี่ยนจาก home เป็น close ให้หมด ยกเว้น @drawable/ic_home_black_24dp
เพราะใน project ยังไม่มีภาพ close เลย

6. เกี่ยวกับภาพปุ่มแบบ Vector มีเรื่องเล่าดังนี้
6.1 เปิดเว็บไซต์ค้นหาภาพปุ่ม close แบบไม่ต้องลงมือทำเอง
พบ https://github.com/mtotschnig/MyExpenses/blob/master/
พบแฟ้มภาพ ic_menu_close_clear_cancel.xml
ให้ copy code ไว้
แล้ว right click เหนือคำว่า drawable, new, file
แล้วพิมพ์ชื่อแฟ้ม ic_menu_close_clear_cancel.xml
ให้ paste code ลงไปในแฟ้มที่สร้างใหม่ จะเห็นรูปกากบาทใน preview ทันที

6.2 ใน Android Studio มีบริการ icon ให้เลือกเพียบ
Right click บน app, New, Vector Asset, Material icon
คลิ๊กภาพ Android ที่อยู่หลังคำว่า icon มีให้เลือก 923 ภาพ
ถ้าเลือกแบบ chevron left แล้วกด next ก็จะได้ภาพ
ไปอยู่ใน app, res, drawable
และ These icons are available under the Apache License Version 2.0

6.3 หากไปได้แฟ้มภาพ .svg ที่สร้างจากที่อื่นมาแล้ว
ก็นำเข้าผ่าน Android Studio ได้โดยง่าย
ในหน้า Vector Asset ก็เลือก Local File
เลือกแฟ้มจากในคอมพิวเตอร์ แล้วกด next ก็จะได้ภาพ
ไปอยู่ใน app, res, drawable เช่นกัน

6.4 ข้อมูลภาพแบบ Vector Drawable ที่เห็นกันนี้วาดเองก็ได้
มี Tool สำหรับวาดแบบ Online
ที่ http://editor.method.ac/ สั่ง Save ได้แฟ้ม .svg
แล้วแปลงแฟ้ม .svg เป็น xml สำหรับ android
ที่ http://inloop.github.io/svg2android/

<?xml version=”1.0″ encoding=”utf-8″?>
<vector xmlns:android=”http://schemas.android.com/apk/res/android”
android:width=”24dp”
android:height=”24dp”
android:viewportWidth=”24″
android:viewportHeight=”24″>
<path
android:fillColor=”?colorControlNormal”
android:pathData=”M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59
19 19 17.59 13.41 12z” />
<path
android:pathData=”M0 0h24v24H0z” />
</vector>

7. เมื่อได้ภาพ Vector สำหรับ Android มาแล้ว
เข้า app,res,menu,navigation.xml เพื่อเปลี่ยนสิ่งที่ทำค้างไว้
มองหา @drawable/ic_home_black_24dp
เป็นเป็น @drawable/ic_menu_close_clear_cancel
ถือว่าจบขั้นตอนการเปลี่ยนภาพ icon จาก home เป็น close

8. เพิ่ม Activity ให้กดปุ่ม Close เพื่อสั่งปิด Application หรือปิดตัวเอง
เปิดแฟ้ม MainActivity.java
มองหา case R.id.navigation_close:
mTextMessage.setText(R.string.title_close);
return true;
เปลี่ยนเป็น case R.id.navigation_close:
finish();
System.exit(0);
return true;

9. ทำให้ปุ่ม สั่งเรียกบทความที่ต่างกัน ปุ่มหนึ่งเรียก 610 อีกปุ่มก็เรียก 611
ถ้ากดปุ่ม notification ใน navigation
ให้แสดงบทความที่ 611 จาก data1 เหมือนค่า default
กดปุ่ม dashboard
ให้แสดงบทความที่ 610 จาก data2
ก็ให้ไปเพิ่มบทความใน strings.xml คือ data2 เพราะ data1 มีแล้ว
แล้วมาแก้ MainActivity.java
มองหา case R.id.navigation_dashboard:
mTextMessage.setText(R.string.title_dashboard);
return true;
case R.id.navigation_notifications:
mTextMessage.setText(R.string.title_notifications);
return true;
เปลี่ยนเป็น case R.id.navigation_dashboard:
mTextMessage.setText(R.string.data1);
return true;
case R.id.navigation_notifications:
mTextMessage.setText(R.string.data2);
return true;

https://gist.github.com/thaiall/b0467ceb93699c63ca5c9ad910903921

ทั้ง project และ apk เอาไปลองกันได้ที่
https://www.4shared.com/folder/AgIkeXaS/android.html

</process>

<website_guide>
+ http://editor.method.ac/
+ http://inloop.github.io/svg2android/
+ https://github.com/mtotschnig/MyExpenses/tree/master/myExpenses/src/main/res/drawable
+ http://www.thaiall.com/android
</website_guide>

หมายเหตุ 
ถ้าสนใจติดตามเนื้อหาในบล็อกนี้ สามารถ subscribe ด้วย email ที่อยู่ข้างขวา หรือ click here

#AndroidStudio ตอนที่ 4 ทำหน้าเพจที่มีข้อมูลมากจนต้อง scroll ลงไป และการเพิ่ม icon ประจำแอพ

ตอนที่ 4 ทำหน้าเพจที่มีข้อมูลมากจนต้อง scroll ลงไป และการเพิ่ม icon ประจำแอพ

<introduction>
แอพพลิเคชั่น มักจะหมายถึง โปรแกรมที่ทำงานบน Smartphone เดี๋ยวนี้ใคร ๆ ก็ใช้แทน Desktop กันเยอะ แล้วแอพก็ยังโด่งดังมาจากกระแสนิยมโหลดโปรแกรมใน App Store ของ Apple และ Google ก็ทำ Play Store สิ่งที่อยู่ในแอพ เป็นอะไรก็ได้ แต่สิ่งหนึ่งที่ไม่อาจมองข้ามคือข้อมูล ให้อ่าน ให้ศึกษา และเรียนรู้ อาทิ บทความ ประวัติความเป็นมา เรื่องเล่า และนิยายพื้นบ้าน เป็นต้น

ถ้าเรื่องราวที่ต้องการใส่ในแอพ คือ ชุดตัวอักษรที่มีจำนวนมาก การใส่ตัวอักษรจำนวนมากในหนึ่งหน้า แล้วเราก็เปิดอ่านอย่างต่อเนื่อง เลื่อนลงไปผ่าน Scroll Bar นั่นเป็นโจทย์ที่น่าสนใจ สำหรับการอธิบายขั้นตอนการสร้างแอพครั้งนี้ แล้วผมก็มีบทความที่จะทดสอบกับบทเรียนนี้ คือ ไอทีในชีวิตประจำวัน เรื่องที่่ 611 และปิดบทความ How to ครั้งนี้ด้วยขั้นตอนการติดตั้ง icon ประจำแอพ หากใคร install app ใน smart phone ก็จะมี icon สวย ๆ ปรากฎไม่ใช้สัญลักษณ์ android ที่เค้าทำเป็นค่า Default มาให้
</introduction>

<process>
กระบวนการในการพัฒนา APP

เพื่อแสดงข้อมูลเป็น Text หรือ String ที่มีขนาดยาวเกิน 1 หน้าที่จะแสดงผลได้
จึงต้องใช้ความสามารถในการทำ ScrollView

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

1. เริ่มต้นก็สร้าง Project แบบ Empty Activity แล้วจากการสำรวจว่า TextView อยู่ตรงไหน เพราะเป็นพระเอกของตอนนี้ โดยเข้าไปใน app, res, layout, activity_main.xml  พบว่า สามารถเข้าดูได้ 2 แบบคือ Tab:Design หรือ Tab:Text ถ้าเลือกดูแบบ Text ก็เหมือนดู Source code ที่เป็น XML จะพบกับ Tag ที่ชื่อ TextView มี Properties คือ android:text=”Hello World!” ซึ่งคำยอดนิยมนี้ สามารถเปลี่ยนได้ตามต้องการ

2. สังเกตก็จะพบส่วนของ properties หรือ คุณสมบัติ ของ TextView จะเห็นได้หากเราคลิ๊กคำว่า TextView ใน Component Tree จะพบ Properties Windows ทางด้านขวา
และมองเห็นคุณสมบัติของ layout_width กับ layout_height ที่เดิมมีค่าเป็น wrap_content ซึ่งหมายความว่า จะเปลี่ยนแปลงตำแหน่งตามเนื้อ content และมีตำแหน่งกลางจอภาพโดยอัตโนมัติ หากเปลี่ยนคุณสมบัติใน layout ทั้ง 2 เป็น match_parent
ก็จะทำให้อ้างอิงกับหน้าต่าง และ TextView ขยายเต็มจอภาพ และคำว่า Hello World! ก็จะไปอยู่ที่มุมบนซ้าย

นี่เป็นคุณสมบัติเติมขณะที่ไม่ได้แก้ไขใด ๆ
<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Hello World!”
app:layout_constraintBottom_toBottomOf=”parent”
app:layout_constraintLeft_toLeftOf=”parent”
app:layout_constraintRight_toRightOf=”parent”
app:layout_constraintTop_toTopOf=”parent” />

แล้วถ้าสร้าง TextView ด้วยการใช้เครื่องมือ แบบ Drag and Drop ก็จะได้ Code ดังนี้

<TextView
android:id=”@+id/textView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”TextView” />

3. ขั้นต่อไป ก็ไปหาเนื้อหา (Content) มาวางในช่อง text เพื่อให้มีข้อมูลแสดงผลมากกว่าแค่ Hello World! ผมหาบทความที่มีข้อมูลขนาด 2313 ตัวอักษร แล้ว paste ลงไป เรียงต่อกันเป็นพรืด เมื่อทดสอบแสดงผลใน Device emulator : Nexus_5X_API_19 พบว่าไม่แสดงภาษาไทย หายไปหมด เหลือแต่ภาษาอังกฤษ 

การพัฒนา App ในเครื่อง สามารถส่งงานไปแสดงผลในอุปกรณ์ได้หลายวิธี แต่การเลือก Device emulator อาจไม่สวยงาม และช้ากับเครื่องที่แรมน้อย จึงเปลี่ยนไป Run บน Smartphone ก็จะได้ผลงานเหมือนจริงที่ไม่ใช่การจำลองอุปกรณ์

4. การทำให้แสดงผลแบบมี Scroll Bar ให้เลือนขึ้นลง ดูข้อมูลที่เกิน 1 หน้าได้ ต้องใช้ ScrollView ร่วมกับ TextView มีตัวอย่างตาม Code ด้านล่าง และทำงานใน Smart Phone ได้อย่างถูกต้อง

https://gist.github.com/thaiall/2ebf07ea7a56c033b660bf6abb1a70c1

5. พบว่า IDE ของ Android Studio  แนะนำว่าให้ใช้ @String แทนการวางข้อมูลจำนวนมากใน TextView โดยตรง จึงเข้า app, res, values, strings.xml แล้วเพิ่ม Tag นี้

<string name=”data1“>
ข้อมูลที่นี่จำนวน 2313 ตัวอักษร เป็นบทความที่ย้ายไปเขียนไว้ด้านล่าง
</string>

แล้วไปแก้ไขแฟ้ม activity_main.xml ให้อ้างอิงข้อมูลจาก data1 ตาม code ด้านล่างนี้

<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:scrollbars=”vertical”
android:text=”@string/data1” />

6. การกำหนดภาพ icon ประจำ Project ถ้าไม่ชอบภาพตัว Android ที่เค้ามีมาให้ ก็เข้าไปกด right click ที่ app, res แล้วเลือก New, image asset เลือก image เลือก file ภาพจากในคอมพิวเตอร์ แล้วกด next, finish หลังจากนั้น ภาพที่อัพโหลดเข้าไปจะไปปรากฎใน app, res, mipmap, ic_launcher.png จำนวน 5 ภาพ ต่อไปถ้าส่ง APK เข้า Smartphone ก็จะได้เห็นภาพสวย ๆ ชวนให้ Click กัน

7. เขียนโปรแกรมเสร็จแล้วก็ต้องทดสอบ RUN แฟ้มที่ต้องการนำไปใช้
คือ app-debug.apk  มักอยู่ใน C:\Users\[user name]
\AndroidStudioProjects\[project name]\app\build\outputs\apk\

การทดสอบก็มักใช้ Device Emulator เพราะง่ายที่สุด แต่เครื่องคอมพิวเตอร์ที่ใช้มี RAM 4GB ลง Win10 OEM ที่โหลด Windows Defender ตลอดเวลาอีก เมื่อสั่งเปิด Emulator ก็จะทำให้เครื่องช้าลงอย่างเห็นได้ชัด และผลการจำลองก็ไม่สวยงาม จึงเลือกที่จะส่งแฟ้ม app-debug.apk ไปประมวลผล นอกเครื่องคอมพิวเตอร์ แล้วผมเลือกส่งออกไปทาง Smart Phone ผ่านการเชื่อมต่อของ APP : WiFi ADB และทำผ่าน DOS ก็สะดวก จะส่งผ่าน Android Studio ก็ทำได้ ซึ่งการ Connect ทำครั้งเดียว ส่วนการ Install จะทำหลังจากการ Build ในแต่ละครั้ง

</process>

<website_guide>
https://guides.codepath.com/android/Working-with-the-ScrollView
http://www.viralandroid.com/2015/10/how-to-make-scrollable-textview-in-android.html
+ http://blog.teamgrowth.net/index.php/android/how-to-make-the-textview-in-android-scrollable
+ http://www.thaiall.com/itinlife
+ https://play.google.com/store/apps/details?id=com.thaiall.itarticle
</website_guide>

 

ไอทีในชีวิตประจำวัน #611 เมื่อเพื่อนขอใช้โทรศัพท์เข้าสื่อสังคม ()

อาจมีสักครั้งที่เพื่อนสนิท หัวหน้า กิ๊ก หรือแฟนขอยืมสมาร์ทโฟนของเราเข้าสื่อสังคม ในกรณีที่โทรศัพท์ของผู้ที่เข้ามายืมมีปัญหาและมีเหตุผลจำเป็น คำตอบโดยปกติคือ ไม่ให้ยืม แต่ถ้าคำตอบต้องเป็นให้ยืม แล้วต้องทำอย่างไร บางครั้งอาจต้องมีการทำงานกลุ่ม ต้องการภาพ หรือคลิ๊ปที่มีคุณสมบัติเหมือนกันจากสมาร์ทโฟนเครื่องเดียวกันเพื่ออัพโหลด หรือในกลุ่มมีเพียงของเราที่เชื่อมต่อเครือข่าย 3G หรือ WiFi ได้ หรือในกลุ่มพร้อมใจกันไม่ได้พกอุปกรณ์ติดตัวไปด้วย นั่นมีเหตุผลมากมายที่ต้องให้ยืม แล้วผู้พัฒนาแอพพลิเคชั่นเข้าใจเงื่อนไขเหล่านี้ จึงพัฒนาโปรแกรมบราวเซอร์ให้สามารถเปลี่ยนเป็นโหมดส่วนตัวที่ไม่บันทึกข้อมูลขณะใช้งาน และหายไปเมื่อเลิกใช้ได้ ซึ่งรองรับการให้เพื่อนยืมสมาร์ทโฟนเพื่อเข้าสื่อสังคมได้

ในสมาร์ทโฟนมักมีโปรแกรมบราวเซอร์ (Browser) อยู่หลายค่าย อาทิ Chrome, Firefox, Opera, Baidu หรือ Dolphin ผู้ใช้บางท่านอาจลงผลิตภัณฑ์หลายทุกค่าย ซึ่งมักมีคุณสมบัติในการเข้าโหมดส่วนตัวทุกค่าย แต่ละค่ายก็จะมีชื่อเรียกโหมด และวิธีการใช้งานที่แตกต่างกันไป แต่โหมดส่วนตัวหรือโหมดปลอดภัยจะมีคุณสมบัติเหมือนกัน คือ จะไม่เก็บรหัสผู้ใช้และรหัสผ่านขณะใช้งานในโหมดปลอดภัยนี้ ไม่บันทึกการใช้งานให้ติดตามได้ใน History และไม่เก็บข้อมูลคุกกี้ไว้ในเครื่องเมื่อเลิกใช้ และทำงานแยกออกจากโหมดใช้งานปกติ ซึ่งผู้ใช้สามารถล๊อกอินเข้าระบบสื่อสังคม อาทิ เฟสบุ๊ค หรือทวิตเตอร์ด้วยบัญชีผู้ใช้ที่แตกต่างกันระหว่างโหมดปกติ และโหมดปลอดภัยคนละชื่อ หากมี 3 โปรแกรมบราวเซอร์ และสลับโหมดก็จะสามารถให้เพื่อนไม่ต่ำกว่า 6 คนเข้าสู่ระบบของสื่อสังคมด้วยบัญชีที่แตกต่างกันได้ แต่คงจะวุ่นวายอยู่ไม่น้อยกับการใช้สมาร์ทโฟนเครื่องเดียวโดยผู้ใช้ 6 คน

การเข้าโหมดลับของโปรแกรม Chrome เรียก New incognito tab แล้วยังเปิดได้หลาย Tab และมี Notification ที่สั่งปิดได้ทุกแท็บ ส่วนโปรแกรม Firefox เข้าผ่าน Private tab หรือ Tools, New Guest Session ก็จะมีคุณสมบัติที่แตกต่างกัน ส่วนโปรแกรม Opera เข้าผ่าน Tab ที่ชื่อ Private คล้ายกับของ Firefox การใช้งานในโหมดลับนี้จะป้องกันการเห็นข้อมูลเฉพาะในตัวเครื่องเท่านั้น การเชื่อมต่อแล้วส่งข้อมูลออกไปภายนอกยังคงเปิดเผย และมีการเก็บข้อมูลการจราจร (Traffic Log) เช่นเดิม ผ่านผู้ให้บริการเครือข่าย ข้อความที่ส่งไปในสื่อสังคมก็ไม่ลับ หากข้อความนั้นมีคุณสมบัติเป็นสาธารณะ ดังนั้นการส่งข้อความใดก็ควรอยู่ในวิจารณญาณว่าจะไม่ก่อความเดือดร้อนให้ตนเอง หรือผู้อื่นไม่ทางใดก็ทางหนึ่ง เพื่อความปลอดภัยของตนเองเป็นที่ตั้ง เพราะความลับไม่มีในโลก และอย่างน้อยความลับที่ว่าลับนักนั้นตนเองก็รู้

หมายเหตุ 
ถ้าสนใจติดตามเนื้อหาในบล็อกนี้ สามารถ subscribe ด้วย email ที่อยู่ข้างขวา หรือ click here

#AndroidStudio ตอนที่ 3 ใช้ CustomTabs แทน WebView สั่งเปิดโฮมเพจ

ตอนที่ 3 ใช้ CustomTabs แทน WebView สั่งเปิดโฮมเพจ

<introduction>
หลังแชร์ App และ .zip ของ Project ทั้ง 12 ตัว ที่ผมได้เปิด new project และ build เป็น APK ตาม Activity ที่ Android Studio มีมาให้ ใน ตอนที่ 1 เพื่อเป็นการเริ่มต้นสร้างความเคยชินในการสร้าง App เชิงสำรวจ IDE Tool ก็ต่อด้วยการสร้าง App ที่ใช้ WebView เพื่อเชื่อมออนไลน์แล้วนำ Homepage ตาม URL มาแสดงใน App

หลังจากนั้นก็พบว่า Oatrice เขียนเรื่อง “ยังใช้ Webview กันอยู่หรือ Chrome custom tabs เร็วกว่า 2 เท่านะ รู้ยัง” พอเข้าไปลองดูก็พบว่าเป็นการสั่งให้ Browser ทำงาน โดยส่ง URL ในแอพ ซึ่ง pasko ได้แชร์ code ของ project ที่สมบูรณ์ไว้ที่ github.com ซึ่งเข้าไปดู code แล้วเห็นว่ามีการใช้งาน CustomTabs ร่วมกับ WebView ได้อย่างลงตัว

ใน Post ตอนนี้้ ผมจะพูดถึงการติดตั้ง CustomTabs ผ่าน Dependencies และการเขียน Code เพื่อเรียกใช้อย่างง่าย ตั้งชื่อว่า Openweb2 ซึ่งต่อมาจาก ตอนที่ 2 นั่นเอง
</introduction>

<process>
กระบวนการในการพัฒนา APP
เพื่อติดตั้ง CustomTabs และเขียน code เรียกใช้งาน
สั่งเปิด Homepage ตาม URL ใน Browser ของ Smartphone
มีขั้นตอน ดังนี้

1. หลังอ่านเรื่อง CustomTabs ไปพักหนึ่ง พบว่า สิ่งที่ไม่ชัดเจน คือ Version เพราะจะติดตั้งก็ต้องรู้เลข Version แต่ละคนเขียนเล่าไว้ในแต่ละช่วงเวลา อ้างเลข Version ไม่ตรงกัน Copy Code ไปติดตั้งใน dependencies ก็จะมี Error ใน Warning แน่เหมือนแช่แป้ง ดังนี้ผมจึงเข้า Support Library Packages – https://developer.android.com เพื่อดูเลขรุ่นล่าสุด ผมใช้วิธีกดปุ่ม Ctrl+F หาคำว่า “customtabs” เมื่อ 2 สิงหาคม 2560
ก็พบครับ ใช้รุ่นนี้เลย

com.android.support:customtabs:26.0.0

2. การติดตั้ง Package ใหม่ ต้องเข้าไปใน Project ที่อยู่ใน IDE
ดังนั้นจึงสร้าง New Project แบบ Empty Activity ให้เรียบร้อย แล้วก็รอให้ project ติดตั้งจน Gradle build finished จนพร้อมในหน้า IDE เป็นขั้นตอนปกติเลยครับ

Android Studio Started
Android Studio Started

3. การติดตั้ง CustomTabs ใน Project ของเรา
ต้องเข้าใน Project Explore หรือ Project Windows หรือ Project Tab ที่อยู่มุมบนซ้าย
จะพบ 2 กลุ่มงาน คือ app กับ Gradle Scripts
ให้คลิ๊ก Gradle Script, build.gradle(Module: app)
แล้วพิมพ์คำว่า
compile ‘com.android.support:customtabs:26.+’
ก่อน testCompile ‘junit:junit:4.12’
ผมใส่ 26.0.0 แล้วติด Error พอใช้ 26.+ เหมือน Package ด้านบน ก็ผ่านครับ

4. จากนั้น Clear Project ผ่าน Menu Bar, Build
แล้วนั่งรอระบบแป๊ปนึง รอ Gradle Build Running
ผลการ Build แล้วก็ไม่พบ Message อะไรให้กวนใจ
แล้วเข้าไปดูว่าเรียบร้อยไหม ผ่าน Project Structure, Module, App, Dependencies
ก็จะพบว่า Package ของเรา เข้าไปรอให้ถูกเรียกใช้เรียบร้อยแล้ว

5. เนื่องจาก CustomTabs คือ Package ที่สามารถเรียก Browser มารับ URL ที่ App ส่งไปให้ ผมนำเสนอตัวอย่างใน openweb2 โดยแก้ไขเฉพาะแฟ้ม MainActivity.java โดยไม่ไปแก้ไข Layout ใน activity_main.xml ใน emulator แม้ไม่มี Chrome ก็เรียก Browser ในเครื่องมาแสดงผล แล้วส่งไปให้ Smart Phone ก็จะมีการถามว่าจะใช้ Browser ตัวใดในการเปิด และ Code ที่ใช้มีเพียงไม่กี่บรรทัด ที่เป็นหน้าที่หลักของ CustomTabs หากสนใจเพิ่มเติม ต้องเพิ่มกันเองตามสะดวกล่ะครับ สำหรับ openweb2.apk กับ openweb2.zip ผมแชร์ใน 4shared.com ที่อยู่ด้านล่างแล้ว

https://gist.github.com/thaiall/9551cc6b1f7508663f372f760518b59f

</process>

https://www.4shared.com/folder/AgIkeXaS/android.html

<website_guide>
https://developer.android.com/topic/libraries/support-library/packages.html
+ https://guides.codepath.com/android/Chrome-Custom-Tabs#next-steps
+ https://github.com/GoogleChrome/custom-tabs-client/blob/master/Using.md
+ https://developer.chrome.com/multidevice/android/customtabs
+ https://rominirani.com/gradle-tutorial-part-6-android-studio-gradle-c828c5639bb
+ http://www.thaiall.com/android
</website_guide>

หมายเหตุ 
ถ้าสนใจติดตามเนื้อหาในบล็อกนี้ สามารถ subscribe ด้วย email ที่อยู่ข้างขวา หรือ click here

 

#AndroidStudio ตอนที่ 2 ทำ App เรียกโฮมเพจมาแสดงใน Smart Phone

ตอนที่ 2 ทำ App เรียกโฮมเพจมาแสดงใน Smart Phone

<introduction>
เคยเห็นแอพใน Smartphone ที่เปิดขึ้นมา แล้วก็ไปเรียกเว็บจาก URL มาแสดง
คำสั่งสำคัญที่มักใช้กัน คือ webview
แต่มีการปรับรุ่น SDK + Security + Device
ทำให้การใช้คำสั่งต้องมีรายละเอียดเพิ่มขึ้น
และนึกถึงการทำเว็บแบบ Progressive Web Apps
แต่ PWA กับ APK เชื่อมกันได้ไม่สนิท หรืออาจไม่เชื่อมกันเลย
ผมก็พยายามปรับ code ฝั่ง web server และ android ได้คุยกันรู้เรื่อง
โดยให้ส่ง user agent ไปให้กับ php ทั้งที่มี

HTTP_X_REQUESTED_WITH = [The package name from the app]

เพื่อกำหนดการทำงานให้ถูกต้องว่า
1) ถ้าถูกเรียกจาก app ใน android ต้องส่งอะไรไปให้
2) ถ้าเปิดแบบปกติก็ปล่อยให้เป็นการทำงานของ PWA
สำหรับ URL ที่ใช้เป็นกรณีศึกษาครั้งนี้เลือกใช้ Miss Grand 2017
http://www.thaiall.com/actress/missgrand2017/
และทดสอบกับ Smartphone จริง ผ่านแอพ WiFi ADB
https://play.google.com/store/apps/details?id=com.ttxapps.wifiadb
แล้ว code ที่แสดงไว้นี้ ฝากไว้กับ github.com เพราะมี plugin ใน blog

ทำให้แสดงผลได้สวยงาม
</introduction>

<process>
กระบวนการในการพัฒนา APP
เพื่อใช้งาน webview เรียกโฮมเพจผ่าน URL มาแสดงผล
มีขั้นตอน ดังนี้

1. เปิด Android Studio แล้วสร้าง New Project
เลือก Activity แบบ Empty Activity

2. ใน IDE ของ Android Studio มองหา Tab ด้านซ้าย
จะพบ 1: Project หรือกดปุ่ม ALT-1 ก็ได้
จะพบ 2 หัวข้อใหญ่ คือ app กับ gradle scripts
ให้ดูใน app จะพบหัวข้อ manifests, Java และ Res

3. ถ้าจะทำให้ App เรียกโฮมเพจผ่าน URL มาแสดงผล
สิ่งแรกที่ต้องทำ คือ คลิ๊กเปิดแฟ้ม AndroidManifest.xml ใน manifests
แล้วใส่ tag user-permission 2 บรรทัดตามตัวอย่าง code
เข้าไปด้านท้าย แทรกกลางระหว่าง TAG : /application กับ /manifest

</application>
แทรก code ไว้ที่นี่
</manifest>

AndroidManifest.xml

https://gist.github.com/thaiall/6d91cabec8a2d6adc59b74e646654edc

4. เปิดแฟ้ม MainActivity.java ที่อยู่ใต้ Package Name
ใน code ก็จะเริ่มด้วย package บรรทัดต่อมาก็ import อีกเพียบ
ตามด้วย public class MainActivity ..
สรุปว่า
copy code ด้านล่างนี้ไปวางทับของเดิม
แล้วแก้ชื่อ package name หรือแก้ไขข้อมูลอื่น ๆ ตามความเหมาะสม
อาทิ url ที่ต้องการ load
หรือ package name ให้ตรงกับที่ท่านตั้งไว้
หรือ user agent ถ้าไม่ใช้ ก็ลบบรรทัดนี้ไปได้
หรือ เปลี่ยนชื่อ host ที่ไม่ต้องการให้ทำ Intent ไปนอก App

 

MainActivity.java

https://gist.github.com/thaiall/32ac305eb17452490b74833a06dbbc35

5. ความตั้งใจคือ เรียกโฮมเพจตาม URL มาแสดงใน APP
เมื่อเปิดแฟ้ม activity_main.xml ที่อยู่ในใน app,res,layout
ก็ใส่ Tag : WebView ที่สำคัญเพียง Tag เดียว

activity_main.xml

https://gist.github.com/thaiall/3368a93b542548f2b9e9e175a50f4fe6

6. ในบทเรียนนี้ สรุปว่าต้องแก้ไข 3 ส่วน เมื่อมองจาก project explorer
เปิดผ่าน Menu bar ที่ View, Tool Windows, Project
– app, manifests, AndroidManifest.xml
– app, java, [package name], MainActivity.java
– app, res, layout, activity_main.xml

7. เมื่อแก้ไข code เสร็จแล้ว และไม่มี error มาให้กวนใจ
ก็สั่ง Menu bar, Make Project หรือ Ctrl+F9 หรือ Build APK 
แล้วส่ง Menu bar, Run, Run ‘app’ หรือ Shift+F10
เพื่อดูผลการทำงานของ App ใน Device Emulator หรือ Device
</process>

<website_guide>
+ http://www.thaiall.com/android
</website_guide>

หมายเหตุ 
ถ้าสนใจติดตามเนื้อหาในบล็อกนี้ สามารถ subscribe ด้วย email ที่อยู่ข้างขวา หรือ click here

#AndroidStudio ตอนที่ 1 การพัฒนา app สำหรับใช้งานบน Smart Phone ที่ลง Android

ตอนที่ 1 การพัฒนา app สำหรับใช้งานบน Smart Phone ที่ลง Android

<introduction>
หลังจากผมได้คอมพิวเตอร์โน๊ตบุ๊ค แล้ว IT Clinic ลง Windows 10 Home 64Bit (OEM=Original Equipment Manufacture)
ก็นำมาลองสร้างแอพ (App = Application) สำหรับ Moveable Device ด้วย Android Studio
ซึ่งมีผู้พัฒนา คือ บริษัทกูเกิ้ล (Google.com) เริ่มต้นก็คิดว่าจะลงโปรแกรมแล้วเขียนโปรแกรม Hello World ไป Run บน Smart Phone ที่ใช้อยู่
</introduction>

<process>
กระบวนการในการพัฒนา APP
เพื่อให้ได้ .apk ไปใช้งาน
ซึ่ง Google พัฒนา Android Studio เป็น IDE ที่มี everything และใช้งานง่ายกว่าเดิม
มีขั้นตอน ดังนี้

1. Download : Java (jdk-8u144-windows-i586.exe หรือรุ่นใหม่กว่า)
จาก https://java.com/en/download/
เพราะเครื่องมือสำหรับพัฒนาโปรแกรม ต้องใช้ Java Runtime Environment (JRE)
แต่ใน Android Studio รุ่นที่ผมใช้เป็นแบบ Portable
มี JRE Embeded ติดมาให้ด้วย ไม่ต้องติดตั้ง เพราะเรียกใช้งานจากในแฟ้มที่คัดลอกมาได้เลย
ดังนั้นในเครื่องที่ผมใช้พัฒนา Android App จึงไม่ติดตั้ง JAVA ด้วยตนเอง
เพราะมีมาพร้อม Android Studio แล้ว

project structure in android studio
project structure in android studio

2. Download : Android Studio (android-studio-ide-162.4069837-windows32.zip)
จาก https://developer.android.com/studio/
ของผมได้รุ่น Android Studio v2.3.3 (June 2017) ซึ่งใหม่สุด ณ ตอนนี้
ซึ่ง Include Everything มาแล้ว
ทั้ง IDE (Integrated Development Environment) + SDK (Android Software Development Kit) + Emulator
ผมเลือกรุ่น .zip ไม่เลือกแบบ install
เพราะคลาย zip แล้ว เรียกให้โปรแกรม Folder> android-studio\bin\studio.exe ทำงานได้เลย
ทำงานแบบ Portable ที่ไม่ต้องติดตั้งก่อน
และผมไม่เลือกใช้ Eclipse เพราะ sdk-tools-r2602_windows-3859397.zip
จะไม่มี SDK Manager มาให้ ต้องใช้ SDK Manager ใน Android Studio
และ Google ประกาศเลิกสนับสนุน SDK ให้ Software ภายนอกแล้ว

Android Studio can be the portable software
Android Studio can be the portable software

3. เมื่อสั่งให้ studio.exe ทำงาน
ก็สั่ง Menu Bar, File, New, New Project
Application name : My Application
Company domain : www.thaiall.com
Minimum SDK : API 19: Android 4.4 (KitKat)
อาจเลือก API 25: Android 7.1.1 (Nougat)
หรือ API 26: Android 8 (O) ก็แล้วแต่ชอบนะครับ แต่ผมชอบของเก่า
Add an Activity to Mobile
เป็น Template ให้เลือก 12 แบบ แบบแรกที่เลือก คือ Basic Activity
แล้วก็ Finish อะไรไม่แจ้งไว้ แสดงว่าไม่ได้เปลี่ยน

Default Activity on Android Studio
Default Activity on Android
Studio
Default Activity on Android Studio
Default Activity on Android
Studio
Default Activity on Android Studio
Default Activity on Android
Studio

4. เข้าสู่ส่วนของ IDE มีหน้าต่างย่อยเพียบ
เห็นคำว่า Hello World! ใน content_main.xml
พบช่อง Text ด้านขวา สามารถเปลี่ยนเป็น Hello My World! ที่นั่นได้

We can change from hello world to hello my world
We can change from hello world to hello my world

5. ทดสอบประมวลผล
Menu bar, Run, Run ‘app’ หรือ Shift F10

6. เลือก Device
จาก Connected Devices หรือ Available Virtual Devices
หรือกด Create New Virtual Device
ผมสร้าง Device ชื่อ Nexus 5X API 19 ไว้ทดสอบตัวหนึ่ง
สร้างเสร็จก็เลือก Device ที่สร้างขึ้น
จะมีการ Popup อุปกรณ์ Emulator ขึ้นมา เพื่อแสดงผลการ Run

android emulator
android emulator

7. หลังพอใจในผลลัพธ์ ที่เห็นบน Emulator แล้ว
สั่งสร้าง .APK ด้วย Menu bar, Build, Build APK
แฟ้ม .apk ที่ได้ชื่อ app-debug.apk
อยู่ใน C:\Users\[Your Name]\AndroidStudioProjects\basicactivity\app\build\outputs\apk
นำแฟ้มนี้ไปใช้ใน Smart Phone ได้ตามต้องการ
หากผลบน Emulator ไม่น่าพอใจ ก็สั่ง Uninstall
ได้เหมือนกับที่ทำบน Smart Phone คือ ลากลงถังขยะ

we can use apk file on smart phone
we can use apk file on smart phone

 

https://www.4shared.com/folder/AgIkeXaS/android.html

</process>

<website_guide>
+ http://www.thaiall.com/android
</website_guide>

หมายเหตุ 
ถ้าสนใจติดตามเนื้อหาในบล็อกนี้ สามารถ subscribe ด้วย email ที่อยู่ข้างขวา หรือ click here

สุดยอดโปรแกรมสำนักงานฟรี (The Best Free Office Software)

buy notebook from SiamTV
buy notebook from SiamTV

การเขียนรายงานสักฉบับหนึ่ง หรือนำเสนองานหน้าชั้นสักเรื่อง
สมัยนี้ต้องใช้โปรแกรมสำนักงาน (Office Suite)
หลังจากมีผู้คนใช้งานกไปแล้วระยะหนึ่ง
ก็พบว่า Mark Wycislik-Wilson ได้ Review
แล้วเขียนเรื่อง “สุดยอดโปรแกรมสำนักงานฟรี
http://www.techradar.com/news/the-best-free-office-software
โดยมีทั้งหมด 5 โปรแกรม เรียงจาก Best ที่สุด ดังนี้
1) WPS Office Free
2) LibreOffice
3) Apache OpenOffice
4) SoftMaker FreeOffice
5) SSuite Office Premium HD+
ผมไม่ได้ทำลิงค์ดาวน์โหลดไว้ แต่เข้า techradar.com ตามลิงค์ด้านบน เค้าก็ลิงค์ไปให้แล้ว
ส่วน Best ในใจผม ยกให้ LibreOffice เพราะเคยซื้อ Notebook มา
แล้ว “ไอทีคลินิก (IT Clinic)” ของสยามทีวี เค้าลงตัวนี้ให้ฟรี ซึ่งมั่นใจว่าเค้าเลือกมาอย่างดีแล้ว

หากถามว่าโปรแกรม Office Suite ในโลกเรา มีอะไรบ้าง
ไปพบใน Wikipedia.org
ที่ https://en.m.wikipedia.org/wiki/Comparison_of_office_suites
เค้าเปรียบเทียบแต่ละโปรแกรม 12 หัวข้อ แบ่งได้ดังนี้
1) Software Name
2) Developer
3) First public release
4) Predecessor (แหล่งที่มา)
5) Latest Stable version / (Date)
6) Operating system
7) Price in USD
8) License
9) Microsoft Office (.doc, .xls) support
10) Microsoft Office Open XML support
11) OpenDocument support
12) Portable Document Format support
แล้วแต่ละโปรแกรมสำนักงาน ทำงานบนระบบปฏิบัติการใดได้บ้าง
ก็มีแบ่งไว้ 5 ระบบปฏิบัติการ
1) Windows 2) macOS 3) GNU/Linux 4) BSD 5) Unix
องค์ประกอบของโปรแกรมที่โปรแกรมสำนักงานแต่ละค่ายมี ก็เทียบไว้ว่าใครมีชื่ออะไรกันบ้าง
ดังนี้
1) Word processor
2) Spreadsheet
3) Presentation program
4) Notetaking software
5) Diagramming software
6) Raster graphics editor (Bitmap)
7) Vector graphics editor
8) Image viewer
9) Formula editor
10) Database management system
11) Project management software
12) Desktop publishing software
โปรแกรมสำนักงาน (Office suite) ในปัจจุบันได้นำมาเปรียบเทียบไว้มี 27 โปรแกรม
หากโปรแกรมใด Free จะมีเครื่องหมาย * (12 โปรแกรม) ต่อท้ายชื่อโปรแกรมไว้ และทั้งหมดมีดังนี้
1) Ability Office
2) Apache OpenOffice*
3) Breadbox Office
4) Calligra Suite*
5) Feng Office Community Edition*
6) Gobe Productive
7) Google Apps (GoogleDocs)*
8) IBM Lotus Symphony*
9) iWork
10) LibreOffice*
11) Lotus SmartSuite
12) MarinerPak
13) Microsoft Office
14) Microsoft Works (Discontinued in 2009)
15) MobiSystems OfficeSuite
16) NeoOffice
17) OnlyOffice*
18) SoftMaker Office*
19) SSuite Office Premium HD+*
20) StarOffice
21) TeXmacs*
22) TeamLab
23) ThinkFree Office
24) Tiki Wiki CMS Groupware*
25) WordPerfect Office
26) WPS Office (Kingsoft Office)*
27) Zoho Office Suite

office suite comparison
office suite comparison

การที่ VirtualBox จะได้ IP จริง และ start httpd พร้อม Host

การที่ VirtualBox จะได้ IP จริง และ start httpd พร้อม Host
มีขั้นตอนดังนี้
1. เปิด VBox แล้วเลือกตั้งค่าให้ Guest ของผมใช้ Win8
2. เลือก เครือข่าย (Network)
เดิมกำหนดเป็น Nat เปลี่ยนเป็น แผงวงจรแบบบริดจ์ (Bridge Adapter)
ใช้ Net บ้าน มี Router แจก IP แบบ Wireless ภายในบ้าน
3. สั่ง Start : Guest
ขณะอยู่ใน Guest ใช้ DOS>ipconfig
พบ IP คือ 192.168.1.4 เป็นของ Guest
4. อยู่ใน Host ใช้ DOS> ipconfig
พบ IP คือ 192.168.1.5 เป็นของ Host
5. ทดสอบติดตั้ง xampp
[xampp-win32-7.1.7-0-VC14-installer.exe]
ทำให้ Guest เปิดบริการ Port 80
ติดตั้งเสร็จก็ Start : Apache
แล้วตรวจสอบว่าบริการที่เปิดไว้ เข้าถึงจากภายนอกได้หรือไม่
6. ตรวจใน Service ไม่พบว่า Apache
ตรวจโดยเข้า DOS>Services.msc ก็ไม่พบว่า Apache อยู่ใน Services
ใช้ DOS เข้า c:\xampp\apache\bin แล้วติดตั้งเป็น Service เอง
เข้า Windows, Command Prompt (Admin) จึงจะติดตั้ง Service ได้
DOS>httpd -k install
ใน Config มุมบนขวาของ XAMPP Control Panel มีบริการ Start Automatic
หากเลือกให้ MySQL เปิดอัตโนมัติ ก็จะ Start Automatic ได้
7. ขณะอยู่ใน Guest หรือ Host
ทดสอบการเปิดบริการ Apache ใน XAMPP
เปิด http://192.168.1.4 พบ Web Server ทั้งคู่
8. การสั่ง Start VBox ผ่าน Shell:startup
DOS>”C:\Program Files\Oracle\VirtualBox\VirtualBox.exe” –startvm mywin8
สร้างแฟ้ม .bat ในห้อง Startup
ต่อไปเวลาเปิดเครื่องก็จะสั่งให้ mywin8 ถูก Start ขึ้นมาอัตโนมัติ
และ Service Apache ก็จะถูกเรียกขึ้นมาโดยอัตโนมัติเช่นกัน

http://www.thaiall.com/handbill/openphotodir.php?folder=../os/virtualbox_win8/

http://www.thaiall.com/os/virtualbox.htm

ชอบ Continuum บน Windows 10

click on windows button
click on windows button

Continuum คือ ความสามารถใหม่ของ Windows 10
ในการปรับรูปแบบการทำงานให้เหมาะสมกับอุปกรณ์ที่แตกต่างกัน
ทำงานกับ Notebook ก็จะมีความสามารถเน้นอย่างหนึ่ง
เมื่อไม่มีแป้นพิมพ์บน Surface หรือ Tablet หรือ Phone ก็เป็นอีกอย่างหนึ่ง

 

right click on windows button
right click on windows button

http://www.anandtech.com/show/9413/windows-10-editions-compared
https://www.beartai.com/news/itnews/39985

เปรียบเทียบ windows edition
เปรียบเทียบ windows edition

ผมใช้ Windows 10 Home เห็นตารางแล้ว
รู้สึกอยากได้ Edition อื่น ๆ อย่างเช่น Remote Desktop ก็ไม่มีให้
แต่มีนักพัฒนาทำ RDPWrap
https://github.com/stascorp/rdpwrap
ทำให้เครื่องของผมสามารถรับการเชื่อมต่อแบบ Remote Desktop ได้

ซื้อคอมพิวเตอร์มา แล้วได้อะไร

new program from siamtv it clinic
new program from siamtv it clinic

วันนี้ไปซื้อคอมพิวเตอร์มาเครื่องหนึ่ง จาก siamtv ลำปาง
เห็นป้ายลดจาก 16990 เหลือ 14990 บาท
นั่นเป็นอีกปัจจัยที่ทำให้เลือกซื้อ
แล้วก็ยังติดตั้ง Windows 10 มาพร้อมกับตัวเครื่อง มีการ์ดจอในตัว
ขั้นตอนการสำรวจเครื่องเบื้องต้น
1.  เมื่อเข้าไปดูใน Control Panel, System and security, System
พบ
Windows edition
Windows 10 Home Single Language
ซึ่งได้ทำ Windows Activation มาเรียบร้อยแล้ว
System
Model : Acer – Aspire E5-475G
Processor : Intel(R) Core(TM) i3-6006U CPU @2.00GHz 1.99 GHz
Installed memory (RAM): 4.00GB (3.88 GB usable)
System type: 64-bit Operation System, x64-based processor
2. Device Manager
ไม่พบปัญหาเรื่อง Driver และใน Display adapters
พบ NVIDIA Geforce 940MX และ Intel(R) HD Graphics 520

3. This PC, Manage, Disk Management
พบ Disk 0 แบ่งเป็น
C: พื้นที่ 232.87 GB NTFS
D: พื้นที่ 231.77 GB NTFS
รวมกันก็น่าจะใกล้ 500 GB เพราะที่เหลือถูกใช้ทำอย่างอื่น
แล้วใน D: ก็วางเปล่า เหมาะกับการไว้เก็บอะไรอะไรได้

4. network กับ speaker ใช้ได้ เชิงประจักษ์
เปิดเว็บ speedtest.net จากลำปาง ไปเชียงใหม่ ตอน 2 ทุ่ม ผ่าน wifi
Download 36.24 Mbps
Upload 14.50 Mbps
ก็น่าจะ ok แล้วครับ
เพราะใช้ TOT Fiber 2 U
FTTx 20Mb/5Mb 590 บาท

5. โปรแกรมที่ไอทีคลินิกลงให้
– CCleaner (Free)
โปรแกรมทำความสะอาดเครื่องด้ายการลบแฟ้มที่ไม่จำเป็น
– WinRAR 5.20 (Evaluation copy)
โปรแกรมบีบอัด และคลายแฟ้มที่ถูกบีบอัด
– Unity Web Player
Unity Web Player is a plug-in for your browser that allows you to play games and watch great 3D content developed with the Unity game engine.
https://unity3d.com/showcase/gallery/games
http://th.y8.com/games/slope
– AIMP3
โปรแกรมเปิดแฟ้มเสียง
– Adobe AIR (AIR = Adobe Integrated Runtime)
ทำให้ OS รองรับโปรแกรมที่พัฒนาบน Adobe AIR ได้
ตัวอย่างที่ http://www.hongkiat.com/blog/60-useful-adobe-air-applications-you-should-know/
– Adobe Flash Play 16 NPAPI
รองรับแฟ้มมัลติมีเดีย
– Edraw Max 7.7
โปรแกรมวาดไดอะแกรมที่หลากหลาย
– Google Chrome (47.0.2526.106m => 59.0.3071.115)
โปรแกรมบราวเซอร์
– Lexitron dictionary 2.6
โปรแกรมดิกชันนารี่
– Line
โปรแกรมติดต่อสื่อสาร
– Mozilla Firefox 40.0 (=> 44.0b1)
โปรแกรมบราวเซอร์
– Mozilla Maintenance Service
เป็นบริการช่วย update รุ่นใหม่ของ Firefox หรือ Thunderbird
– Nero 8 Lite 8.3.6.0
โปรแกรมเขียน CD
– PhotoScape
โปรแกรมจัดการภาพครบวงจร
– Picasa 3
โปรแกรมจัดการภาพครบวงจร
– The KMPlayer (remove only)
โปรแกรมดูหนัง
– VLC Media player
โปรแกรมดูหนัง
– WebcamMax
โปรแกรมแต่งเว็บแคม
– LibreOffice 4.4.5.2
โปรแกรมสำนักงาน
– Microsoft Visual C++ 2005 Redistributable
เครื่องมือช่วยให้โปรแกรมอื่นทำงานได้สมบูรณ์
– Microsoft Silverlight
Silverlight is a powerful development tool for creating engaging, interactive user experiences for Web and mobile applications.
Silverlight is a free plug-in, powered by the .NET framework and compatible with multiple browsers, devices and operating systems, bringing a new level of interactivity wherever the Web works.
– Adobe Reader XI (11.0.10)
โปรแกรมอ่านแฟ้ม PDF

siamtv promotion
siamtv promotion

โปรแกรมจัดการภาพเก่า และเล็ก แต่เจ๋ง

irfanview by Irfan Skiljan, Graduate of Vienna University
irfanview by Irfan Skiljan, Graduate of Vienna University

วันนี้ฤกษ์ดี (600716) หลังใช้โปรแกรม Irfanview
ดึงข้อมูล Miss Grand 2017
http://www.thaiall.com/actress/missgrand2017
ว่าสาวงามทั้ง 77 จังหวัด แต่ละจังหวัดมีภาพชื่ออะไร
เพื่อนำมาเตรียมข้อมูลในแบบ JSON สำหรับทำ PWA
ยิ่งเล่าก็ยิ่งเลยเถิด มาจับประเด็นที่ Irfanview กันดีกว่า
http://www.irfanview.com/

ประเด็นที่อยากพูดถึงวันนี้
1. โปรแกรม irfanview มีถึงรุ่น 4.44 ณ 16 กรกฎาคม 2560
แต่ผมยังใช้รุ่น 3.51 ตัวเล็กแค่ 635 KB เท่านั้น
Copyright (C) 1996-2001 by Irfan Skiljan, Graduate of Vienna University
2. การใช้โปรแกรมเพื่อเก็บชื่อภาพ และข้อมูลในภาพ
มีขั้นตอนคือ view ภาพก็จะเห็นข้อมูลในภาพ เช่น จังหวัด หรือ ชื่อนางสาว
แล้วกดปุ่ม F6 จะเข้า Rename แต่กดปุ่ม Ctrl-C เพื่อคัดลอกชื่อ
กดปุ่ม Alt-Tab กระโดดไป Editor
เพื่อวางข้อมูลด้วย Ctrl-V เป็นการวางชื่อแฟ้มที่ได้ในตำแหน่งที่เหมาะสม
แล้วพิมพ์ชื่อจังหวัดไปคู่กัน
3. ทำภาพ Transparent ก็ทำตอน Save as เลือก Transparent color
สกุล .gif แต่ภาพต้องมีจำนวนสีไม่มากตามคุณสมบัติของ .gif นะครับ
4. ทำแฟ้ม gallery อย่างรวดเร็ว ก็เลือก File, Thumbnails
จากนั้นเลือก File, Save selected thumbs as HTML file
5. ถ้ามีแฟ้มจำนวนมาก และต้องการ rename ให้ชื่อแฟ้มมีลำดับ
ก็ทำโดยเลือก File, Batch Conversion/Rename