ก๊วนซอฟท์แวร์ </softganz> SoftGang (Gang Software)

Web &amp; Software Developer Gang.

611 items|« First « Prev 22 23 (24/62) 25 26 Next » Last »|
โดย Little Bear on 8 ก.ค. 56 16:35

ซื้อโทรศัพท์ใหม่แล้ว เป็น Lenovo A390 ก็เลยมาถึงคราของ LG P350 ที่จะต้องถูกยำเล่นซะเลย เริ่มต้นด้วยการลง ROM ใหม่ ลองตามหาก็เลยเจอกับ How To Update LG Optimus ME P350 to Android 4.2 Jellybean - Ultimate Guide ใครว่ารุ่นนี้เล็ก แล้วจะลง Android 4.2 Jelly Bean ไม่ได้ ก็เลยจับมาลงเสียเลย

จะอัพ LG Optimus ME P350 เป็น Android 4.2 Jellybean, เช็คสิ่งเหล่านี้ก่อน

ก่อนที่จะเริ่ม

  1. ขั้นตอนการทำ
  2. มั่นใจนะว่ามีแบ็ตอย่างน้อย 80%
  3. ต้องมี ClockworkMod Recovery ติดตั้งอยู่ในโทรศัพท์แล้ว (ไม่แน่ใจเหมือนกันว่ามีหรือเปล่า แต่ผม root ไปก่อนหน้านี้แล้ว)
  4. เปิดใช้ USB Debugging

ดาวน์โหลดไฟล์เหล่านี้

  1. Android 4.2.1 CM10.1 ROM for Optimus Me P350 [Filename: cm-10.1-20121218-UNOFFICIAL-p350.zip]
  2. Mini Gapps [Filename: gapps-jb-4.2.1-light-20121130-signed.zip]

ติดตั้ง Android 4.2.1 Jelly Bean CM10.1 ROM บน LG Optimus Me P350

  1. เสียบสายเชื่อม LG Optimus Me P350 เข้ากับ PC ด้วยสาย USB
  2. ก็อปปี้ไฟล์ zip ที่ดาวน์โหลดมาลงไปไว้ใน SD card ของโทรศัพท์
  3. ถอดสาย USB ออกจาก PC/Laptop/Computer
  4. ปิดโทรศัพท์
  5. เปิดขึ้นมาใหม่แล้วให้เข้าสู่โหมด recovery ด้วยการกดปุ่มค้างไว้ คือ Volume Down, Home และ Power
  6. เลือกเมนู Wipe และ Wipe the Data and Dalvic Cache อ้าฮ้า ระวังให้ดีนะ อาจจะ brick ได้ (เลี่อนเมนูขึ้นลงด้วยปุ่ม Volume up/down และเลือกด้วยปุ่ม เมนู)
  7. เลือกเมนู Flash zip menu แล้ว Choose zip from sdcard, แล้วเลือกไฟล์ zip จาก SD card (ตอนนี้, ให้เลื่อนลงไปที่ไฟล์ cm-10.1-20121218-UNOFFICIAL-p350.zip ) และเลือกโดยการกดปุ่ม 4 เหลี่ยมด้านซ้าย (ปุ่มเมนู)
  8. รอจนกว่าจะเสร็จสมบูรณ์ (ดูด้วยนะว่ามี error หรือเปล่า) หากมีปัญหาเรื่อง signature ให้เลือกเมนู Toggle signature verification)
  9. กลับไปทำข้อ 7 อีก คราวนี้เลือกไฟล์ gapps-jb-4.2.1-light-20121130-signed.zip เพื่อลง Google apps package
  10. เมื่อการติดตั้งเสร็จเรียบร้อย ก็กลับไปที่เมนูหลัก แล้ว reboot system now เพื่อ reboot โทรศัพท์ให้เป็น Android 4.2.1 ROM.

ดีใจด้วยนะ มันความจะ work และได้ลองเล่น Android 4.2.1 Jelly Bean ที่ทำโดย CM10.1 เรียบร้อย

แต่ทว่า เสียใจด้วยครับ ผมเปิดเครื่องขึ้นมาครั้งแรก โลโก้ CM หมุนค้างอยู่นานมาก จนกระทั่งหยุดทำงานไปเลย หน้าจอกระพริบแว๊บๆ จนต้องถอดแบ็ต แล้วเปิดใหม่ ปรากฏว่าเข้าได้นี่

อื๊ดอืด แถมโทรไม่ออกอีกต่างหาก ยกเลิก หาตัวใหม่ดีกว่า

มี ROM ของ LG P350 ให้เลือกเยอะเหมือนกัน เช่น ที่นี่ แต่ที่เจอใน droidsans.com ที่น่าสนใจคือ

CyanogenMod 7.2 RC3 stable 5

ขั้นตอน

  • Wipe all options
  • Flash ROM
  • Flash Gapps
  • Flash Kernel
  • Reboot
  • ความเห็นส่วนตัว ROM ตัวนี้ การทำงานไหลรื่นเร็วดีเรื่องแบตปกติ..และเสถียรที่สุด

ลองลงดูอีกที คราวนี้ work เลยครับ

ส่วนอีกตัวคือ MIUI RC1 - ROM MIUI RC1 , MIUI resized launcher โหลดมาแล้ว แต่ยังไม่ได้ลองลง

โดย Little Bear on 6 ก.ค. 56 17:42

หาดใหญ่ก็มี 4G แล้วนะ แต่ยังไม่ได้ลอง 555

โดย Little Bear on 6 ก.ค. 56 12:22

กำลังศึกษาเรื่อง Model View Control (MVC) หลังจากที่เคยอ่านเรื่องนี้มานานเป็นปี ๆ แล้ว และได้นำมาประยุกต์ใช้นิดหน่อย แต่ยังไม่เข้าใจอย่างลึกซึ้ง เลยขอมานั่งทำความเข้าใจอย่างละเอียดอีกสักรอบ หลังจากนี้ก็จะพยายามรวบรวมเรื่องราวของ Model View Control มาเก็บไว้เรื่อย ๆ

เริ่มกันที่แนวคิดของ MVC ก่อนนะครับ

ในยุคนี้คงไม่มีทางที่เราจะหนีคำนี้ได้พ้นเพราะในการพัฒนาระบบในปัจจุบันขนาดของโครงการจะใหญ่ขึ้นเรื่อยๆ เนื่องจากความต้องการมีสูงขึ้นเรื่อยๆ ดังนั้นการจะพัฒนา software ด้วยตัวคนเดียวเป็นเรื่องยาก จึงมีการประยุกต์ใช้งาน Enterpirse Architecture Pattern อย่าง MVC กันมากขึ้นในทุกๆ platform ด้วยเหตุนี้การจะใช้งาน MVC Framework ตัวใดก็แล้วแต่ไม่ว่าจะเป็น PHP , .NET หรือ Java ล้วนแล้วแต่ต้องอาศัยแนวความคิดที่ถูกต้องจึงจะเป็นประโยชน์อย่างแท้จริงไม่เช่นนั้นนอกจากจะไม่มีประโยชน์ใดๆ ในการใช้ Framework แล้ว ยังเป็นดภาระในการแก้ไขซึ่งจะทำให้แก้ไขได้ยากกว่าปกติ ดังนั้นจึงเริ่มจากการแนะนำแนวคิดในการแบ่งแยกส่วนของ code ออกเป็น 3 ส่วนด้วยกันคือ

 คำอธิบายภาพ : mvc

MVC Archtecture Pattern

Model (M) เป็นส่วนของ Business Logic และ ส่วนของ Entity ซึ่งส่วนนี้จะแตกต่างจากแนวคิดแบบ 3-tier ซึ่งจะแยกส่วนล่างสุดเป็น Data Access Layer (DAL) ซึ่งจะทำหน้าที่ติดต่อกับ Database เท่านั้น แต่ Model จะไม่ได้เป็นเพียงแครการติดต่อกับ Database เท่านั้น แต่ยังรวมเรื่องของ Business Logic ต่างด้วย เช่น การคำนวน VAT 7% หรือการคำนวนค่าต่างให้อยู่ในชั้นนี้ และถ้าจะให้ดีชั้นนี้ควรจะทำการสร้าง Service Layer ขึ้นมา ตรงนี้จะลงรายละเอียดในบทความถัดไป

View (V) เป็นส่วนของการแสดงผลอันนี้ตรงตัวไม่ต้องคิดมาก เป็นส่วนของ HTML ,CSS และ JavaScript ในการทำ Web Application แต่ถ้าเป็น Windows Application ก็จะเป็นพวก forms ต่างๆ ในการใช้งาน PHP Framework บางตัวจะพ่วงเอา Template Engine มาให้ใช้งานด้วย เช่น Symfony จะมี Twig เป็น Template Engine ซึ่งข้อดีของการใช้งาน Template Engine ก็คือจะทำการแยกส่วนของการแสดงผลกับ logic ได้ชัดเจนมากขึ้นคนที่ทำ HTML CSS และ JavaScript ไม่จำเป็นต้องเขียน PHP ได้

Controller (C) ส่วนนี้เป็นส่วนสมองของระบบจะทำหน้าที่คอยควบคุมว่าจะดึงข้อมูลจากไหน (Model ตัวไหน) แล้วก็ไปแสดงผลยังไง (View ตัวไหน) ส่วนนี้จะเป็นส่วนที่่ผิดกันเป็นประจำสำหรับผู้ที่เริ่มใช้งาน MVC Framework เพราะเป็นส่วนที่เราไม่เคยแยกส่วนนี้มาก่อน ส่วนของ Controller จะเป็น work flow หรือขั้นตอนการทำงานต่างๆ (มีเฉพาะ flow ของการทำงานเท่านั้น) จะไม่มี logic ใดๆในนี้ไม่มีการเขียน HTML ไม่มีการคำนวนค่าต่างๆ หน่าที่ของ Controller มีเพียงแค่รับค่ามาทำการ Validate แล้วส่งเข้าไปที่ Model เท่านั้น

ประโยชน์ของการใช้ MVC ก็คือการเพิ่ม maintainability หรือทำให้ระบบแก้ไขได้ง่ายขึ้นเพราะมันแยกส่วนออกจากกันอย่างชัดเจน อีกข้อนึงที่สำคัญไม่แพ้กันก็คือเราจะสามารถแยกคนทำงานตามสิ่งที่เค้าถนัด เช่น คนทำ View ไม่ต้องรู้ว่า database มีโครงสร้างยังไง คนที่ทำผั่ง model ก็ไม่ต้องมากังวลเรื่องของการแสดงผล แต่ขอให้ตกลงเรื่องของ data ที่ส่งหากันให้ดีก็พอ

สุดท้ายอาจไม่จำเป็นจะต้อง strict อยู่ในรูปแบบนี้ 100% เพราะนี่เป็นเพียงทฤษฏี แต่ยังไงก็ตามถ้าจะเขียนผิดไปจากนี้ (anti pattern) ก็สามารถทำได้แต่ต้องแน่ใจว่าการทำแบบนั้นมีเหตุผลมากพอที่จะทำ และไม่กระทบกับการแก้ไขในอนาคต

ที่มา : www.irobust.co.th

โดย Little Bear on 1 ก.ค. 56 16:34

วันนี้ลองเล่น Google+ sign in API ขอบันทึกเท่าที่ลองทำนะครับ

Step 1: Create a client ID and client secret

สร้าง client ID and client secret , สร้าง Google APIs Console project, เปิดใช้ Google+ API, สร้าง OAuth 2.0 client ID, และลงทะเบียน JavaScript origins:

  1. ไปที่ Google APIs Console , เลือก Create จาก pull-down menu ทางด้านซ้าย , และป้อนชื่อ project name (เช่น "Sample").
  2. ไปที่ Services pane, เปิดใช้งาน (enable) Google+ API and any other APIs that your app requires.
  3. ในช่อง API Access pane, คลิก Create an OAuth 2.0 Client ID.
    • ในช่อง Product name , ป้อนชื่อของ application (เช่น "Sample"), แล้วคลิก Next. ใส่โลโก้เสียหากว่าต้องการ.
    • ในช่อง Client ID Settings section, ทำตามนี้:
    • เลือก Web application สำหรับ Application type.
    • คลิกที่ลิงก์ more options.
    • ในช่อง Authorized Redirect URIs ให้ลบทิ้งให้หมด.
    • ในช่อง Authorized JavaScript Origins ให้เพิ่ม URLs เข้าไป โดย URL แรก สำหรับการพัฒนาระบบ (หากมี port ให้ระบุต่อท้าย เช่น :8080). อีก 2 สำหรับการนำไปใช้งานจริง
      http://localhost
      http://mysite.example.com
      https://mysite.example.com
      
        * คลิกปุ่ม Create client ID.
  4. ใน API Access pane, มองหา Client ID for web applications แล้วจดหรือสำเนาค่าของ Client ID และ Client secret ไว้ จำเป็นต้องใช้ตอนทดสอบและใช้งาน

Step 2: Include the Google+ script on your page

วางสคริปท์ด้านล่างไว้บน </body>

<!-- Place this asynchronous JavaScript just before your </body> tag -->
<script type="text/javascript">
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>

Step 3: Adding a sign-in button to your page

วางปุ่ม G+ SignIn ไว้ในตำแหน่งที่ต้องการ

<span id="signinButton">
<span
class="g-signin"
data-callback="signinCallback"
data-clientid="CLIENT_ID"
data-cookiepolicy="single_host_origin"
data-requestvisibleactions="http://schemas.google.com/AddActivity"
 data-scope="https://www.googleapis.com/auth/plus.login">
</span>
</span>

Step 4: Handling the sign-in

โค๊ดสำหรับเรียกกลับเมื่อมีการ signin

function signinCallback(authResult) {
if (authResult['access_token']) {
// Successfully authorized
// Hide the sign-in button now that the user is authorized, for example:
document.getElementById('signinButton').setAttribute('style', 'display: none');
} else if (authResult['error']) {
// There was an error.
// Possible error codes:
//   "access_denied" - User denied access to your app
//   "immediate_failed" - Could not automatically log in the user
// console.log('There was an error: ' + authResult['error']);
}
}

ส่วนอื่น ๆ ลองตามไปดูจากที่มาได้เลยครับ

ที่มา developers.google.com

ปล. ถ้าหากเป็น Facebook ก็ใช้ developers.facebook.com

โดย Little Bear on 26 มิ.ย. 56 10:11

Directadmin มีอัพเดทเวอร์ชั่นใหม่ แต่ผมไม่สามารถเข้า https://www.mydomain.com:2222 ได้ เลยต้อง SSH เข้าไป build เอง

ขั้นตอนคือ

  • SSH เข้าไปที่ server
  • เปลี่ยน directory ไปที่ /usr/local/directadmin/custombuild
  • พิมพ์ : "./build update" เพื่อดึงรายการอัพเดทล่าสุด
  • พิมพ์ : "./build versions" เพื่อดูรายการอัพเดทใหม่พร้อมรายละเอียดเวอร์ชั่นของแต่ละ package และเวอร์ชั่นใหม่ที่ยังไม่ปรับปรุง
  • พิมพ์ : "./build update_versions" เพื่อทำการอัพเดท

เท่านี้แหละ

ที่มา hostjunkies.com

โดย Little Bear on 22 มิ.ย. 56 00:46

มีปัญหาที่จะต้อง update บางฟิลด์ของฐานข้อมูล แต่ขั้นตอนการตรวจสอบจะต้องเชื่อมโยง (join) กับอีกตารางด้วย ทีแรกกะว่าคงต้องเขียนโปรแกรมตรวจสอบ แล้วค่อยอัพเดทเสียกระมัง แต่ทว่า... ลอง google เสียหน่อยก่อนเป็นไร ก็เลยเจอกับ

UPDATE t1
LEFT JOIN t2 ON t2.some_id = t1.some_id
LEFT JOIN t3 ON t2.t3_id = t3.id
SET t1.new_column = t3.column;

สบายไป

ที่มา stackoverflow.com

โดย Little Bear on 18 มิ.ย. 56 23:29

เพิ่งเปิดเข้ามาเจอ ไข่อีสเตอร์ ของ Google Adsense เนื่องในโอกาสครบรอบ 10 ปี โดยเอา mouse ไปวางไว้ที่ icon ด้านล่าง ตามรูป

โดย Little Bear on 14 มิ.ย. 56 14:24

วันนี้ได้ลองหวนกลับมาใช้งาน hotmail ก็เลยถือโอกาสทดสอบการใช้งานภาษาไทย บน Microsoft Word Web App ว่าการใช้งานเป็นอย่างไรบ้าง สามารถตัดคำได้หรือไม่ และจะใช้งานได้ดีกว่า Google Drive ซึ่งมีโปรแกรม Google Docs ที่จับลูกค้าในกลุ่มเดียวกัน

ดูจากการออกแบบหน้าเว็บแล้ว มีความรู้สึกที่ไม่แปลกแยกไปจาก Microsoft Word ซึ่งทำให้คนที่เริ่มใช้งานในครั้งแรกมีความรู้สึกเคยชิน หากแต่ลองสำรวจเมนูลึกลงไปจะพบว่ายังคงมีเฉพาะความสามารถพื้นฐานของ wordprocessor เท่านั้น แม่ว่าจะยังไม่สามารถปรับแต่งอะไรได้มากมายนัก แต่ก็สามารถนำไปใช้งานทั่วไปได้เป็นอย่างดี โดยเฉพาะเรื่องของการตัดคำภาษาไทยที่ Microsoft Word Web App สามารถทำได้ในระดับที่ดีทีเดียว

สิ่งที่ยังไม่ได้ลองและเป็นสิ่งที่สำคัญในการทำงานยุคออนไลน์ในปัจจุบัน คือ การแบ่งปันเอกสารและการร่วมกันแก้ไขเอกสารพร้อม ๆ กันหลาย ๆ คน ที่คู่แข่งอย่าง Google Docs สามารถทำได้อย่างแทบจะไม่มีที่ติทีเดียว

ปล. ข้อความข้างบนนี้ พิมพ์บน Microsoft Word Web App แล้ว copy มาวาง

โดย Little Bear on 13 มิ.ย. 56 18:13

 คำอธิบายภาพ : pic51b9ae4f13149

วันนี้ยก Notebook Toshiba เครื่องที่ตั้งกองไว้ที่พื้นมาหลายเดือนแล้วมาตั้งบนโต๊ะทำงาน (หลังจากซื้อ Lenovo เครื่องใหม่มาแทนเมื่อต้นปี 2555 - ของขวัญปีใหม่ให้ตนเอง) ยกมาตั้งปุ๊บก็เสียบ mouse เครื่องตั้งอยู่ห่างออกไปเกินมือเอื้อมถึง ลากสาย mouse มาไว้ใกล้ ๆ ตัว เปิดเครื่องเริ่มทำการ update Ubuntu ให้เป็น version ล่าสุด (13.04) ต้องโยกตัวไปหาเครื่องทุกครั้งที่ต้องพิมพ์บน keyboard (เริ่มเข็ดเอวแล้วสิเรา)

ปิ๊งขึ้นมาว่า "แล้วทำไมตรูจึงไม่ทำให้ใช้ keyboard/mouse อันที่ใช้งานกับเครื่องหลัก ให้มันใช้กับเครื่องนั้นด้วยฟะ"

คิดได้ดังนั้นแล้ว ก็เลย [google](ubuntu join many computer into one) เจอนี่เลย 5 ways to make using multiple computers and devices more efficient with Ubuntu สุดยอด ตรงกับที่ต้องการเลย

ในบทความมีวิธีการแบ่งกันใช้อยู่ 5 แบบ แต่ที่ต้องการคือ "Sharing mice and keyboards" วิธีการง่ายนิดเดียว

บน Ubuntu มีโปรแกรมชื่อ "Synergy" ที่สามารถทำงานนี้ได้เลย โปรแกรมมีให้เลือกใช้อยู่ 2 ตัว คือ

  1. Synergy : ตัวนี้ GUI จะใช้ยากหน่อย ต้องหลายคลิกกว่าจะเลือกเรียบร้อย
  2. QuickSynergy : ตัวนี้ GUI ใช้ง่ายมาก ๆ

วิธีการใช้ QuickSunergy

  1. หลังจากติดตั้งเสร็จ เปิดโปรแกรมมาจะเห็นหน้าตาตามนี้

     คำอธิบายภาพ : quicksynergy

  2. หากเป็นเครื่องหลัก (มี mouse/keyboard เสียบอยู่) เราเรียกว่าเป็นเครื่อง server ให้คลิกที่ tab Share เลือกคลิกที่ตำแหน่งเครื่องด้านไหนก็ได้ (ซ้าย-ขวา-บน-ล่าง) แล้วตั้งชื่อเครื่องปลายทางไว้ แล้วคลิก Execute ได้เลย

  3. ส่วนเครื่องที่เหลือ (ไม่มี mouse/keyboard) เราเรียกว่า client ให้เลือกคลิกที่ tab Use แล้วป้อน IP ของเครื่อง server (Server hostname/IP address) และ ชื่อเครื่องตนเอง (Screen name) แล้วคลิก Execute

แค่นี้แหละ ก็เลื่อน mouse ไปอีกเครื่องได้เลย

โดย Little Bear on 11 มิ.ย. 56 21:35

ปีนี้ได้มีโอกาสไปเป็นกรรมการ Photo voice ให้กับสาธารณสุขจังหวัดสงขลาอีกครั้ง ครั้งนี้จัดประกวดกันในงาน "Songkhla Health Fair 2013" เมื่อ 6 มิถุนายน 2556 ทีศูนย์ประชุม ม.อ. ในการประกวดได้แบ่งภาพถ่ายออกเป็น 2 ชุด คือ รพช. และ รพ.สต.

กรรมการที่ไปร่วมตัดสิน มีทั้งหมด 3 ท่าน (รวมผมด้วย) ทั้ง 2 ท่านล้วนแต่เป็นผู้รู้ ผู้เชี่ยวชาญและผ่านประสบการณ์ในการถ่ายภาพมาเป็นอย่างดี ทำให้เรารู้สึกเกร็ง ๆ อยู่พอสมควร แต่โดยรวมแล้วก็คุยกัน มีข้อเสนอแนะ และตัดสินออกมาได้ด้วยดี

 คำอธิบายภาพ : pic51b73643c9a0c

ภาพที่ได้รางวัลที่ 1 ของ รพช. ชื่อภาพว่า "สะท้อนสุข" ภาพนี้เป็นการสื่อความหมายที่สะท้อนความสุขของตัวละคน (คนแก่) ผ่านตัวแทน (พระ) เป็นการตั้งชื่อและอธิบายความหมายผ่านข้อจำกัดทางเทคนิคที่ไม่สามารถถ่ายภาพตัวละคร มีข้อติที่ทุกคนเห็นพ้องกันคือฉากหลังที่ชัดเกิน หากถ่ายให้เบลอ ก็จะทำให้สมบูรณ์ทีเดียว

 คำอธิบายภาพ : pic51b736448310e

ภาพที่ได้รางวัลที่ 1 ของ รพ.สต. ชื่อภาพว่า "รัก....หรือทำร้าย" ส่วนที่นำจะทำได้ดีกว่านี้คือการสื่ออารมณ์ของยาย หากถ่ายให้เห็นสีหน้าหรือแววดาบางส่วน ก็จะแสดงให้เห็นความรักและความขัดแย้งในภาพได้ชัดเจนขึ้น

611 items|« First « Prev 22 23 (24/62) 25 26 Next » Last »|