Posts

Showing posts from 2016

[Java] Java 8 ทำความเข้าใจให้มากขึ้นกับ Lambda Expression

          เรื่องของ lambda คงต้องขยายความกันหน่อย หลังจากเกริ่นนำไปในโพส  Java 8 มาเขียน lambda กันเถอะ  ก็ทำให้ได้เห็น syntax กันไปบ้างแล้ว ครั้งนี้เราจะเพิ่มความรู้ว่า เขียนโปรแกรมยังไงให้ใช้ Lambda Expression ได้ Syntax ของ Lambda Parameter คล้ายกับการเขียน method บางครั้งอาจมีวงเล็บ Optional Parameter Typ e ปกติมักจะไม่ใส่กัน  Parameter Name สามารถตั้งอะไรก็ได้ ไม่จำเป็นต้องเหมือนกับ method  Arrow   ( -> ) Body เหมือนกับ statement ทั่วไป คือถ้ามีคำสั่งเดียวก็ไม่จำเป็นต้องใส่ block             แบบย่อ message -> System.out.prinln(message);             แบบเต็ม (String message) -> { System.out.prinln(message); };            แบบนิยม (message) -> { System.out.prinln(message); }; รูปแบบการเขียนตามจำนวน parameter            0 parameter () -> /* single statement */; () -> { /* statements block */ };             1 parameter p -> /* single statement */; p -> {/* statements block */}; (p) -> /* single statement */; (p) -> {/* st

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Image
Hi, I'm Duke.           Java 8 นอกจาก lambda expression ที่สร้างความโกลาหลให้กับชีวิต Java Programmer ที่เป็นมือใหม่ในวงการ functional language แล้ว ยังมีการปรับปรุง library เกี่ยวกับ Date, Time ด้วย เปลี่ยน package ในการใช้งาน เพื่อป้องกันการสับสน (ก่อนหน้านี้จะมี java.sql.Date กับ java.util.Date ให้งงเล่นๆ) java.util.Date; java.time.*; เราเคยเจ็บปวดกับ date, time กันมาพอสมควร ถึงเวลาแล้วที่ Java จะช่วยให้ชีวิตเราดีขึ้น โดย... แยก class ซะเลย LocalDate LocalTime LocalDateTime ดูชื่อทั้ง 3 ตัวแล้วคงไม่ต้องเล่าอะไรมาก Date มีแค่วันที่ Time มีแค่เวลา ถ้าสนใจทั้งวันและเวลาก็เอา DateTime ไปใช้ ส่วนที่ต้อง Local เพราะมี Zoned อยู่ด้านล่างพร้อมคำอธิบายครับ การดึงวันเวลาปัจจุบันก็ถูกทำให้เข้าใจมากขึ้น ไม่ใช่ new Date() อีกต่อไป LocalDate.now() //2016-11-19 LocalTime.now() //20:00:01.635 LocalDateTime.now() //2016-11-19T20:00:01.635 การสร้าง object date,time โดยระบุค่าเอง LocalDate.of(int year, Month month, int dayOfMonth); LocalTime.of(int hour, int minute, int second,

สอบ Cert. Java (Oracle) ที่ไหน ยังไง ??

Image
          เมื่อถึงเวลา เราจำเป็นจะต้องมีสิ่งที่รับประกันความสามารถของเรา ซึ่งยิ่งเป็นสาย IT อย่างเรา ๆ ก็จะมี 'Certificate' ที่เปิดให้สอบหลายตัว ขึ้นอยู่กับความถนัดของแต่ละคน ถูกแพงต่างกันไป ซึ่งสำหรับผมแล้วก็คือ Java SCJA - Sun Certified Java Associate เมื่อก่อน Java ยังเป็นของบริษัท Sun Microsystems ใครที่ทันสอบป่านนี้ก็คงมีฝีมือระดับเทพแล้ว OCAJP - Oracle Certified Associate, Java Programmer หลังจากที่ Oracle ซื้อ Java มา ก็ได้ปรับชื่อเดิมให้เป็นชื่อบริษัทตัวเองแทน ซึ่งใครมีแผนว่าจะสอบก็คงต้องเป็นตัวนี้แหละ ส่วนใครที่ได้ cert. ตัวเก่าจาก Sun มาแล้วก็สามารถนำมา upgrade level ถัดไปกับ Oracle ได้เลย           พอตกลงปลงใจว่าจะสอบ เค้าก็จะมีให้เลือก Java version ที่เราต้องการสอบ แน่นอนว่ามันไม่เหมือนกัน เช่น Java 6 ยังไม่มี try-with-resource, Java 7 ยังไม่มี lambda expression ฯลฯ ส่วนตัวผมเลือกสอบ OCAJP (Java SE 8) แต่จริง ๆ ผมคุ้นเคย Java 7 มากกว่า แต่สอบทั้งทีเลยจัด Java 8 ซะงั้น ซึ่งในส่วนของการสอบนอกจากหัวข้อที่เพิ่มเติมมา ยังมีจำนวนข้อและเวลาสอบมากกว่าด้วย แต่ราคาเ

Infrastructure as Code การสร้างโครงข่ายด้วยการเขียนโปรแกรม บน AWS (Amazon Web Services)

Image
          หลังจากที่ได้เล่น AWS โดยใช้งานผ่าน User Interface ไปแล้ว โพสนี้จะมาแนะนำการสร้าง services ต่าง ๆ ผ่าน code กันบ้างหรือที่เรียกว่า "Infrastructure-as-Code" โดย AWS ก็มี service ที่รองรับอยู่แล้ว           AWS CloudFormation ถูกสร้างมาเพื่อให้เราสามารถสร้าง services ได้ด้วยการเขียน code นำมาแสดงใน template designer และสร้าง resource ขึ้นมาใช้งานจริงๆ            ในส่วนการเขียน code ใช้ JSON เขียน โดย AWS จะเรียกว่า template ซึ่งรายละเอียดต่าง ๆ จำเป็นต้องใช้  AWS CloudFormation Template Reference  ประกอบ เพราะมันเยอะมากกกจริงๆ { "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS Stack, Infrastructure as Code", "Resources": { "WebServerInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-f068a193", "InstanceType": "t2.micro&qu

รู้จัก Cloud Computing ด้วยตัวอย่างการสร้าง datacenter บน AWS (Amazon Web Services)

Image
            เทคโนโลยีที่กำลังมาแรงในช่วงนี้คงหนีไม่พ้น 'Cloud' ซึ่งผมเองก็มีโอกาสได้ลองเล่น AWS (Amazon Web Services) วันนี้ก็จะมาเขียน review ให้ได้รู้จักกันเบื้องต้นนะครับ ก่อนที่จะโชว์ของก็คงขาดไม่ได้กับความรู้ที่ต้องเล่าสู่กันฟังก่อน Cloud คืออะไร ?             Cloud ณ ตอนนี้ยังไม่มีมาตรฐานที่แน่นอน แต่ละค่ายอยากเล่นอยากอวดอะไร ก็จะทำขึ้นมาให้ใช้งานในลักษณะของ services โดยหลัก ๆ แล้วสิ่งที่ Cloud เป็น คือการสร้าง ecosystems ที่อยู่ที่ไหนก็ไม่รู้ มีความเสถียรสูง โดยผู้ใช้สามารถปรับขนาดบริการได้เอง ซึ่งเราในฐานะ admin จะสามารถจัดการได้ผ่าน internet ทั้งหมด Cloud มักถูกจัดกลุ่มให้เป็น * aaS ซึ่งมีตัวหลัก ๆ คือ SaaS (Software-as-a-Service) เป็นบริการ Software หรือ Application ที่จินตนาการได้ง่ายที่สุด ส่วนใหญ่แล้วมักจะเป็นบริการที่เราใช้งานในด้านต่างๆ เช่น Microsoft Office 365, Facebook เป็นต้น PaaS (Platform-as-a-Service) เป็นบริการที่ให้ resource ต่างๆ ถ้าใครมีโอกาสได้ใช้ Web hosting มาบ้าง PaaS ก็น่าจะเป็นอะไรที่ใกล้เคียงที่สุด ซึ่งบริการเหล่านี้ก็จะกำหนดมาว่าให้บ

Web Inspector for iOS & Android (hybrid mobile development)

Image
          Web Developer มักจะคุ้นเคยกับ developer tools ของ web browser ที่มักจะติดมาเพื่อให้สามารถดู source code ที่เป็น html, javascript, css ได้ รวมไปถึง error           Hybrid Framework จริง ๆ แล้วก็มีอยู่หลายแบบ แต่ที่เรากำลังจะเล่นต่อไปนี้ เป็นลักษณะ based-on webview ซึ่งตัวมันเองจะทำหน้าที่รวมเอา webview เข้าไปใน app เพื่อทำตัวเสมือน web browser เวลาพัฒนาก็จะใช้ html, css, javascript ได้เลย ซึ่ง hybrid framework ที่ทำงานแบบนี้ ก็มี cordova, phonegap และ ionic ซึ่ง hybrid framework ลักษณะนี้นักพัฒนาจะสามารถทดสอบบน browser ก็ได้ แต่ถ้าเรา run ใส่เครื่องไปแล้วนั้น อาจต้องใช้ความสามารถพิเศษที่เป็นเรื่องหลักของโพสนี้กันครับ "Web Inspector" ตัวอย่างที่ผมจะใช้ในวันนี้เป็น sample project ของ Ionic 2 $ ionic start cutePuppyPics --v2 ตรงนี้ไม่ได้มีอะไร copy command มาให้ดูเฉย ๆ สร้างแล้วก็ run ใส่ device กันไปครับ โดยเราจะเล่นกับ 2 platforms คือ Android และ iOS นะครับ           การที่เราจะทำ web inspector เพื่อดู source code บน device ต้องทำผ่าน web browser ของค่ายนั้น

[Java] REST รู้จัก consumes, produces และทำให้ method รองรับหลาย mediatype

Image
อีกเรื่องสำหรับการเขียน REST web services แต่ครั้งนี้ เราจะว่ากันด้วยลูกเล่นต่างๆ ที่เราสามารถประยุกต์ใช้เพิ่มเติม เจ้าตัวเหลือง เปรียบเสมือน web service ของเรา @Consumes และ @Produces เป็นการกำหนด MediaType ให้กับ method web service แต่ละตัว โดยทั้ง 2 ตัวนี้มีข้อแตกต่างคือทิศทางการเรียกใช้งาน คือ @Consumes ใช้สำหรับ request และ @Produces ใช้สำหรับ response @POST @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Appdata create(Appdata entity) { System.out.println("POST:"+entity); return entity; } @XmlRootElement public class Appdata { private Integer orderId; private String orderDate; private List items; /* (setter/getter) */ } ตัวอย่างที่ผ่านมาหลายตัวเรามักจะเห็น MediaType มีแค่ชนิดเดียว แต่ในความจริงแล้วเราสามารถเปิดให้กำหนดหลายตัวได้โดยกำหนดในลักษณะ array ตัวอย่างนี้ก็รองรับ XML และ JSON ขึ้นอยู่กับการเรียกใช้งานจาก client Request Header  ที่เราจะต้องกำหนดเพื

[Java] ใช้ REST ให้ถูกต้องด้วย GET POST PUT DELETE

ก่อนหน้านี้  RESTful Web Service ด้วย Jersey  เราได้มีการเขียนโดยมอง services แต่ละตัวเป็นชิ้นๆไป โดยเรียกใช้ผ่านชื่อและกำหนดเป็น GET หรือ POST แต่.... นั่นยังไม่ใช่สิ่งที่ถูกต้อง ซึ่งผมเองก็ได้ Unlock Archivement videogame_asset  หลังจากใช้งานไปซักพัก ซึ่งก็จะมา update ให้เข้าใจถูกต้องครับ Concept ของ REST เค้าจะมองว่า Web Service 1 URL ทำงานได้หลากหลาย ซึ่งหมายถึง 1 URL ไม่ได้ผูกติดกับ 1 method อีกต่อไป

[Java] Java 8 มาเขียน Lambda และใช้ syntax ใหม่ ๆ กันเถอะ

เรื่องเริ่มจาก Android N และ Android Studio 2.1 Preview  ก็ต่างประกาศออกมาว่าจะรองรับ Java 8 ซักที ก็เลยนึกขึ้นได้ว่ามีอีกเรื่องที่อยากจะเขียน แต่ในบทความนี้น่าจะหนักไปทาง Java Programming มากกว่า ซึ่งใน version 8 นี้ก็มี syntax ใหม่ๆ เข้ามา ใกล้เคียงความเป็น Functional Language มากขึ้น Java 8 ( JDK 8 ) มีอะไรเพิ่มมาหลายๆอย่าง ซึ่งทำให้เราเขียนอะไรๆได้สั้นลง ซึ่งมี syntax ที่เราจะต้องเรียนรู้เพิ่มเติม หลักๆ คือ Lambda Expression, Method Reference, Stream&Filter โดยสามารถอ่านทั้งหมดได้ที่ >>  What's New in JDK 8 Lambda Expression & Anonymous Class Anonymous Class (<JDK 8) Thread thread = new Thread(new Runnable() { @Override public void run() {   //Do something } }); Lambda Expression (JDK 8) เราจะใช้แทน Anonymous Class ที่มี method ที่บังคับโดยใช้เป็นสัญลักษณ์ arrow (->) แทนการ override method ซึ่งเราจะกำหนดจำนวน parameter ให้ตรงกัน แน่นอนว่าถ้ามีหลาย method ที่จำนวน parameter เท่ากันจะไ

[iOS] CocoaPods กับการใช้งาน 3rd-party library #2

Image
ก่อนหน้านี้ได้พูดถึง CocoaPods ไปแล้วบางส่วน http://www.lordgift.in.th/2016/01/ios-cocoapods-3rd-party-library.html ครั้งนี้ เราจะสมมติสถานการณ์ดูว่า ถ้าเราต้องการหา library ซักอย่างมาใช้ เพื่อช่วยในงานบางอย่าง วิธีการเป็นอย่างไรบ้าง เราสามารถค้นหา library ผ่านหน้าเว็บของ CocoaPods ได้เลย https://cocoapods.org/ * Type here to search by name, version, author, keywords, summary, and dependencies. แน่นอนว่าเราจะพบกับผลการค้นหามากมาย ซึ่งเราก็ต้องเลือกใช้ โดยจะมีรายละเอียดบางส่วนสามารถดูได้ รวมถึง link ไปยังเว็บหลักของ library นั้นๆ สำหรับโจทย์วันนี้คือ QR Code & Barcode ซึ่งหลังจากที่ผมได้ค้นหาและทดลองมาจบที่ PQScanner  https://cocoapods.org/pods/PQScanner ซึ่งถ้าดูจากตัวอย่างจะเห็นว่าเป็น Objective-C เอามาจะเอามาใช้กับ Swift โพสก่อนหน้านี้ก็บอกว่าเราสามารถทำ Bridging Header ได้ ( http://www.lordgift.in.th/2016/01/ios-bridging-header-swift-objective-c.html ) ซึ่งในเคสของ CocoaPods จะต่างกันนิดหน่อย install library (PQScanner) ผ่าน cocoapods ให้เรียบร้อย เปิด Vie

[iOS] เปิดอ่าน PDF ด้วย Swift

Image
Swift สามารถเขียนให้เปิด PDF โดยเลือกใช้ component WebView วาดลงใน storyboard และจัดการ layout ให้เรียบร้อย ตามรูปแบบการแสดงผลที่ต้องการ (จากตัวอย่างลองวาดเต็มจอ) เขียนโปรแกรมเรียก *.pdf มาแสดงบน WebView // Get the document's file path. let path = NSBundle.mainBundle().pathForResource("sample.pdf", ofType: nil) // Create an NSURL object based on the file path. let url = NSURL.fileURLWithPath(path!) // Create an NSURLRequest object. let request = NSURLRequest(URL: url) // Load the web viewer using the request object. webView.loadRequest(request) ซึ่งสามารถแสดงผลดังรูป ref:  https://timdietrich.me/blog/swift-display-bundled-pdf-with-uiwebview/

[iOS] Swift <-> Objective-C การใช้งานข้ามภาษา

Image
          การพัฒนา iOS Application ต้องเป็นภาษา Objective-C หรือ Swift ซึ่งแต่ก่อน Objective-C เป็นภาษาแรกที่ Apple เลือกใช้ และพัฒนาต่อขึ้นมาเป็น Swift ดังนั้นเราจึงมีนักพัฒนาอยู่ทั้ง 2 ภาษา           โพสนี้ผมขอแนะนำวิธีการลดช่องว่างระหว่าง Objective-C และ Swift เพื่อให้นักพัฒนาหน้าเก่าต้องการที่จะเริ่ม และนักพัฒนาหน้าใหม่ที่คงจะยังหนีของเก่าไม่พ้น ซึ่งหมายความว่า ณ ตอนนี้เรายังทิ้งภาษาไหนไม่ได้เลย           ลองดู syntax เล่น ๆ กันก่อน เปรียบเทียบ source code ของฟังก์ชัน register remote notification //Objective-C - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { } //Swift 2 func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { } //Swift 3 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { } เตรียมความพร้อมบน Swift Project เปล่า ๆ Objective-C TO Swift           ส

[iOS] CocoaPods กับการใช้งาน 3rd-party library

CocoaPods CocoaPods หรือ pod เป็นตัวจัดการ library สำหรับ xcode project โดยเราจะใช้ teminal เป็นตัวสั่งงาน โดย อันดับแรก เราจะต้องติดตั้ง CocoaPods กันก่อน $ [sudo] gem install cocoapods จากนั้นเราก็จะสามารถใช้งานคำสั่งได้ ลองทดสอบเช็คเวอร์ชันดูครับ $ pod --version เมื่อ setup เรียบร้อยแล้ว เราจะเอาไปใช้กับ xcode project ก็ต้องหา library ที่ต้องการใช้งาน ซึ่งในที่นี้ผมจะใช้ library สำหรับวาดลายเซ็นครับ >>  https://github.com/jharwig/PPSSignatureView ทำการติดตั้ง library เปิด Terminal และ cd ไปที่ path ของ xcode project ที่ต้องการ **แนะนำให้ปิด xcode ไปเลยดีกว่า** pod init เพื่อสร้าง environment ต่างๆ ที่เกี่ยวข้องกับ cocoapods ซึ่งเราจะสนใจที่ Podfile  ให้เติมคำสั่งลงในไฟล์ (library ที่ supported cocoapods ส่วนใหญ่จะบอกคำสั่งไว้ด้วย) pod "PPSSignatureView" เซฟและมาสั่งคำสั่งใน Terminal อีกครั้ง pod install หลังจาก Terminal ทำงานเรียบร้อยแล้ว ให้เปิด project ที่ไฟล์ *.xcworkspace ไม่ใช่ *.xcodeproj จากนั้นเราก็สามารถใช้งาน 3rd-party library ได้เป็น

[iOS] ใช้ฐานข้อมูล Core Data ด้วย Swift

Image
นี่อาจจะเป็น post แรกเรื่องเกี่ยวกับ iOS native บอกตรงๆเลยว่า ผมเป็น Android Developer ที่ไม่ชอบ iOS แต่ถึงกระนั้นเราก็ต้องทำต่อไปอยู่ดี มองในแง่ดีเราก็จะได้รับมุมมองที่แตกต่างบ้างล่ะนะ SQLite เป็นรูปแบบฐานข้อมูลที่นิยมสูง แม้ว่าปัจจุบัน application ส่วนใหญ่จะ online ใช้ฐานข้อมูลจาก server แต่เราก็ต้องทำเพื่อพิสูจน์ว่า "มันทำได้" Core Data ชื่อที่ xcode ตั้งไว้สำหรับการใช้งาน SQLite ซึ่งต้องยอมรับว่าจุดนี้เค้าแข็งกว่า Android พอสมควร เราจะมาเริ่มจาก Design กันก่อน 1. File -> New -> File... เลือก Data Model 2. ทำการออกแบบ ซึ่ง Xcode มีหน้าจอสวยงามให้ใช้งาน (ไม่อธิบายแล้วกันเนอะ) 3. Editor -> Create NSManagedObject Subclass หรือจะเลือก New ที่ภาพแรกก็ได้ เสร็จแล้วก็สร้างออกมาให้เป็น *.swift file  ไฟล์ที่เกี่ยวข้องทั้งหมดของ Core Data ครับ สังเกตว่า หลังจากเราออกแบบฐานข้อมูลเพื่อรองรับการใช้งานเป็นที่เรียบร้อยแล้ว เราต้องสร้างไฟล์ class บางอย่างเพื่อเชื่อมต่อไปยังฐานข้อมูลนั้นๆด้วย ลักษณะนี้คือการทำงานของ Object-relational Mapping เพื่อเชื

[Android] Glide ตัวช่วยจัดการเรื่องรูปภาพ

Image
การแสดงรูปภาพบน Android Application อาจดูเป็นเรื่องที่ไม่มีอะไรในกอไผ่ <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/imageView" /> โค้ดเหล่านี้ลอยขึ้นมาในหัว.... แน่นอนว่า รูปที่เราจะเอามาแสดงนั้นต้องมาจากซักที่หนึ่ง ไม่ว่าจะเป็น อยู่ในโปรเจค, ภายในเครื่อง หรือ มาจากเว็บ โดยเฉพาะเว็บจะต้องมีการ download มา cache ก่อนจึงจะแสดงผลได้ อธิบายเป็นขั้นตอนเชิงเทคนิค ง่ายๆ ดังนี้ ทำ AsyncTask (Thread for Android) โหลดรูปภาพลง Bitmap object นำ Bitmap object ไปเซ็ตที่ ImageView เท่านี้ก็ดูยุบยับเกินไปสำหรับเรื่องแค่จะโหลดรูปมาโชว์เฉยๆ ซึ่งก็มี library ที่มาช่วยในส่วนนี้หลายตัวอยู่เหมือนกัน  Glide.with(this) .load("http://www.fireflydaily.com/wp-content/uploads/2015/09/Googlr.gif") .into(imageView); อาจจะดูสั้นๆ แต่ Glide ยังมีอย่างอื่นให้เล่นอีกมากมาย เช่นการ crop, resize หรือแม้กระทั่งในโค้ดตัวอย่าง ก็ยังเป็นไฟ

[Android] Otto ตัวช่วยส่งข้อมูลผ่าน event bus

อย่างที่รู้กันในหมู่ Android Developer ว่า การคุยกันระหว่าง Activity กับ Fragment นั้นไม่ง่ายเลย แต่บทความนี้ผมจะยังไม่อธิบายว่าแตกต่างกันอย่างไร (ถ้าใครใจร้อนมี link ให้ครับ  http://developer.android.com/guide/components/fragments.html ) วิธีพื้นบ้าน (No lib.) เตรียมพร้อมด้วย communication interface ก่อน public interface OnFragmentInteractionListener { public void onFragmentInteraction(Data data); } การใช้งานใน Fragment Class OnFragmentInteractionListener mListener; ... @Override public void onAttach(Activity activity) { super.onAttach(activity); mListener = (OnFragmentInteractionListener) activity; } @Override public void onDetach() { super.onDetach(); mListener = null; } ทำการส่งค่าจาก Fragment ไปยัง Activity @Override public void onClick(View v) { mListener.onFragmentInteraction(data); } และอย่าลืมว่าต้อง implement method ใน Activity Class ด้วย public void onFra

Crashlytics - ตรวจสอบ error ที่เกิดบน mobile application

Image
การพัฒนา mobile app. เราสามารถตรวจสอบปัญหาโดยดูจาก stack trace ที่เกิดขึ้นบน console ซึ่งก็สามารถตรวจสอบและแก้ไขได้เป็นธรรมชาติของ developer แต่เมื่อ app. ของเราถูกส่งถึงมือผู้ใช้งานแล้ว ทีมพัฒนาจะติดตามปัญหาได้ค่อนข้างยาก หลายๆ คนคงรู้จัก Twitter  แน่ๆ Twitter ก็เป็นอีกค่ายที่ทำ API ต่างๆ ให้นำไปใช้งานได้ แต่ขณะที่ค่ายอื่นทำเพื่อเอื้อประโยชน์ให้กับตัวเอง แต่ดูเหมือนว่า Twitter จะทำออกมาให้ผู้นำไปใช้ได้ประโยชน์ซะมากกว่า อ้าว!! ของ Twitter หรอกหรอ ? คำตอบคือ ใช่ครับ Crashlytics เป็นของ Twitter และอยู่ภายใต้ Fabric อีกทีนึง ซึ่งภายใน Fabric นี้ก็ยังมี tools อื่นๆ ให้เลือกใช้อีก เอาล่ะ เข้าสู่เนื้อหากัน ใครแอบไป search ก่อนก็อาจจะได้เจอกับหน้าเว็บของ Crashlytics ไปแล้ว แต่ไม่ว่าจะพยายาม register หรือ login ก็จะถูก redirect ไปที่หน้าเว็บ Fabric  อยู่ดี จัดการสมัครสมาชิกกันไป เมื่อเข้าสู่ระบบได้แล้ว ครั้งแรกระบบน่าจะให้สร้าง organization โดย 1 organization ประกอบได้หลาย apps ครับ ผมลองเล่น Android app. กับ iOS app. ให้อยู่บน organization เดียวกันก็ทำได้ครับ สำหรับก

Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

เรื่องของ ++i กับ i++

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)