วันเสาร์ที่ 30 พฤษภาคม พ.ศ. 2558

Cordova + Polymer = cool Mobile app

วันนี้นั่งหาจังหวะลอง เอา  cordova + polymer มาพยายามทำ android app เล่นสักตัว นั่งทำตั้งแต่เช้า ทำๆหยุดๆเพราะทำตอนว่างๆ compile ติดแก้ไม่ได้งงอยู่นานมาก หาวิธีแก้ตั้งนานกว่าจะหาเจอว่าเป็นเพราะอะไร เขียน blog ทิ้งไว้ก่อนดีกว่าเดี๋ยวลืม

blog นี้เป็นการสร้าง android app จากการใช้ cordova + polymer โดยใช้ blog ต่างประเทศอ้างอิง 2 blog คือ
https://blog.nraboy.com/2014/07/use-polymer-apache-cordova/
http://k33g.github.io/2014/08/09/POLYMER-MOB-PAPER.html

blog แรกจะเป็นการ set ให้ cordova ใช้งานร่วมกับ polymer
blog ที่ 2 จะเป็นการแก้ code polymer สำหรับทำหน้าเว็บ

แต่เมื่อทำเสร็จแล้ว จะ compile ไม่ผ่านต้องแก้ตามนี้

ใน root directory ของ project จะต้องแก้ file config.xml เพิ่ม platform เข้าไปดังนี้
    <platform name="android">

    </platform>

ใน directory ของ polymer ที่เก็บ www/js/vendors/web-animations-js/www/js/vendors/web-animations-js.gz จะต้อง gunzip มันออกมาก่อน ไม่งั้นจะ compile ไม่ผ่าน


cordova + polymer + genymotion (free editon)

เมื่อลองกับ device ที่จอเล็กลง แถบด้านข้าง จะหดกลับไปเป็น menu แบบ auto ด้วยข้อดีของ web component


วันพฤหัสบดีที่ 21 พฤษภาคม พ.ศ. 2558

วิธีใช้ mongodb3.0 กับ golang

ปรกติแล้วเวลาเขียน  go ต่อกับ mongodb ผมจะใช้ lib ตัวนี้คือ

        "gopkg.in/mgo.v2"

        "gopkg.in/mgo.v2/bson"

วันนี้ลองใช้กับ mongodb 3.0.3 มัน auth ไม่ผ่านขึ้นมาประมาณนี้

server returned error on SASL authentication step: Authentication failed.

ไปค้นๆดูเจอปัญหาและวิธีแก้ดังนี้
ปัญหาเกิดจากรูปแบบการ auth ของ mongodb 3.0 เปลี่ยนจาก version เก่าใน ตัวแปร authSchema  ใช้เป็น version 5 ตัว auth ของ lib ที่ใช้อยู่จะใช้ได้กับ version 3 โดยเราสามารถแก้ได้ดังนี้

login mongo โดยใช้ admin user หรือไปเป็น noauth ใน config file แล้ว start mongodb แล้วค่อยสั่ง mongo

> db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 5 }

จะเห็นว่าเป็น version 5 อยู่ให้ใช้คำสั่งดังนี้

> db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 3 }

แค่นี้เราก็สามารถใช้ golang กับ mongodb version 3 ได้แล้ว
ใครแก้ config file เป็น noauth ก็อย่าลืมแก้กลับก่อนด้วยหละเดี๋ยวจะหาว่าไม่เตือน