āļ§ัāļ™āļ­āļēāļ—ิāļ•āļĒ์āļ—ี่ 26 āļĄิāļ–ุāļ™āļēāļĒāļ™ āļž.āļĻ. 2559

āđ€āļžิ่āļĄ PermGen space āđ€āļžื่āļ­āđƒāļŦ้ IDE āļ—āļģāļ‡āļēāļ™āļŠāļ°āļ”āļ§āļ...āđāļĨāļ°āđ„āļĄ่āļŠāļ°āļ”ุāļ”


āđ€āļ„āļĒāđ„āļŦāļĄ...āļ—ี่āļ—ุāļāļ„āļĢั้āļ‡ āđ€āļ§āļĨāļēāļ—ี่āđ€āļĢāļēāđ€āļ‚ีāļĒāļ™ Code āļšāļ™ NetBean āļŦāļĢืāļ­ Eclipse āđāļĨ้āļ§āļ„้āļēāļ‡āđ†āđ†āđ†āđ†āđ† āļŦāļĢืāļ­ Deploy āđāļĨ้āļ§āļ„้āļēāļ‡āđāļĨ้āļ§ Dump āļ‚ึ้āļ™āļ•ัāļ§āđāļ”āļ‡āļĄāļēāđ€āļĨāļĒāļĒ... āđāļĨ้āļ§āļ็āļ­้āļēāļ‡āļ§่āļēāđ€āļ„āļĢื่āļ­āļ‡āđ€āļ่āļēāļš้āļēāļ‡ āļāļēāļāļš้āļēāļ‡ āļ•้āļ­āļ‡āđ„āļ›āđ€āļžิ่āļĄ Ram āđƒāļŦ้āđ€āļĒāļ­āļ°āļ‚ึ้āļ™

āļˆāļēāļāļāļēāļĢāļ—ี่āļ—๊āļ­āļ›āđ„āļ”้āđ€āļ‚้āļēāđ„āļ›āļ­่āļēāļ™āļ•āļēāļĄ Blog āļ•่āļēāļ‡āđ† āđ€āļ‚āļēāļŠāļĢุāļ›āļŠāļēāđ€āļŦāļ•ุāđ„āļ§้ āļ”ัāļ‡āļ™ี้...

1. āļ›ัāļāļŦāļēāļˆāļēāļāļŠ่āļ§āļ‡ Deploy āđāļĨāļ° Undeploy 

-āļŠ่āļ§āļ‡ runtime āđāļ•่āļĨāļ° application āļˆāļ°āļ–ูāļāđ‚āļŦāļĨāļ”āļœ่āļēāļ™āļ—āļēāļ‡ application classloader āđ‚āļ”āļĒāļ—āļģāļŦāļ™้āļēāļ—ี่ āđ‚āļŦāļĨāļ”āđ„āļŸāļĨ์ .class āļˆāļēāļ jar files āđāļĨāļ°āđ€āļĄื่āļ­ undeploy application āļ™ั้āļ™ classloader āļĄัāļ™āļˆāļ°āļ—āļģāļāļēāļĢāļĨāļ°āļ—ิ้āļ‡ class āļ—ี่āđ„āļ”้āļĄีāļāļēāļĢāđ‚āļŦāļĨāļ”āđ€āļ‚้āļēāļĄāļē āđāļĨ้āļ§āļˆāļ°āļ–ูāļāļˆัāļ”āļāļēāļĢāđ‚āļ”āļĒ garbage collector āļ•่āļ­āļĄāļēāđƒāļ™āļ āļēāļĒāļŦāļĨัāļ‡āđ€āļžื่āļ­āļ„ืāļ™āļ—āļĢัāļžāļĒāļēāļāļĢāļŠู่āļĢāļ°āļšāļš

āđāļĨāļ°āļˆāļēāļāđ€āļŦāļ•ุāļāļēāļĢāļ“์āļ•āļĢāļ‡āļ™ี้āđāļŦāļĨāļ°....

-āļšāļēāļ‡āļ„āļĢั้āļ‡ classloader āļ­āļēāļˆāļĒัāļ‡āļĄีāļāļēāļĢāđ€āļ็āļšāļšāļēāļ‡āļŠิ่āļ‡āļ—ี่āļ–ูāļāđ‚āļŦāļĨāļ”āđ€āļ‚้āļēāļĄāļēāđ„āļ§้āļ­āļĒู่ āđāļĨāļ°āļ›āļāļ›้āļ­āļ‡āļĄัāļ™āļˆāļēāļ garbage collector āđ€āļ™ื่āļ­āļ‡āļˆāļēāļāļ§่āļēāļĄัāļ™āļ­āļēāļˆāļˆāļ°āļ–ูāļāđƒāļŠ้āļ‡āļēāļ™āļ­āļĒู่ āļ—āļģāđƒāļŦ้ garbage collector āđ„āļĄ่āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚้āļēāļĄāļēāļˆัāļ”āļāļēāļĢāđ„āļ”้ āļˆึāļ‡āđ€āļ›็āļ™āđ€āļŦāļ•ุāļ—āļģāđƒāļŦ้āđ€āļิāļ”āļ‚้āļ­āļœิāļ”āļžāļĨāļēāļ” java.lang.OutOfMemoryError: PermGen space āđ„āļ”้
2. āļ›ัāļāļŦāļēāļˆāļēāļāļāļēāļĢāļˆัāļ”āļāļēāļĢ Memory āđƒāļ™ VM

-āđ€āļ”ิāļĄāļ—ี memory āļ—ี่āļĄีāļ­āļĒู่āđƒāļ™ Virtual Machine (VM) āļˆāļ°āļ–ูāļāļŦāļēāļĢāđ„āļ›āđƒāļŠ้āļ‡āļēāļ™āđ‚āļ”āļĒ number of region āļ‹ึ่āļ‡āļŦāļ™ึ่āļ‡āđƒāļ™āļ™ั้āļ™ āļ„ืāļ­ region āļ—ี่āđ€āļ›็āļ™ PermGen space (permanent generation space) āļ‹ึ่āļ‡āđ€āļ›็āļ™āļžื้āļ™āļ—ี่āļ‚āļ­āļ‡ memory āļŠāļģāļŦāļĢัāļšāđ‚āļŦāļĨāļ” class file āđ€āļ‚้āļēāļĄāļē

-āļŠāļģāļŦāļĢัāļš size of memory region āļ™ั้āļ™ āļˆāļ°āļĄีāļāļēāļĢāļāļģāļŦāļ™āļ”āđ„āļ§้āļ­āļĒ่āļēāļ‡āļ„āļ‡āļ—ี่āđ‚āļ”āļĒāđ„āļĄ่āļĄีāļāļēāļĢāđ€āļ›āļĨี่āļĒāļ™āđāļ›āļĨāļ‡āđ€āļĄื่āļ­ VM āļ—āļģāļ‡āļēāļ™āļ­āļĒู่ āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ” size of region āđ‚āļ”āļĒ -XX:MaxPermSize āđ€āļŠ่āļ™ -XX:MaxPermSize = 256m āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§่āļē āđ€āļĢāļēāļāļģāļŦāļ™āļ” size of memory region āļŠูāļ‡āļŠุāļ”āļ—ี่ 256 MB āđ‚āļ”āļĒāļŦāļēāļāđ€āļĢāļēāđ„āļĄ่āļĄีāļāļēāļĢāļāļģāļŦāļ™āļ” āđ‚āļ”āļĒāļžื้āļ™āļāļēāļ™āđāļĨ้āļ§āļ—āļēāļ‡āļˆāļ°āļĄีāļāļēāļĢāļāļģāļŦāļ™āļ”āđ„āļ§้āļ—ี่ 64 MB

3. āļ›ัāļāļŦāļēāļˆāļēāgarbage collector 

-āđ€āļ™ื่āļ­āļ‡āļˆāļēāļ garbage collector āđ„āļĄ่āļŠāļēāļĄāļēāļĢāļ–āļ„ืāļ™āļ—āļĢัāļžāļĒāļēāļāļĢāļŠู่āļĢāļ°āļšāļšāđ„āļ”้

āļ§ิāļ˜ีāļāļēāļĢāļ—ี่ garbage collector āļˆัāļ”āļāļēāļĢ... āļ„ืāļ­ āļ•้āļ­āļ‡āđ€āļ็āļš classes āđƒāļŦāļĄ่āļ—ี่āļāļģāļĨัāļ‡āđ‚āļŦāļĨāļ”āđ€āļ‚้āļēāļĄāļēāđƒāļ™ memory āđ€āļ›็āļ™āđ€āļŦāļ•ุāļ—āļģāđƒāļŦ้ VM āļ™ั้āļ™āđ€āļิāļ”āļāļēāļĢāļ‚āļēāļ”āđāļ„āļĨāļ™ space āđƒāļ™ memory region āļˆึāļ‡āļ•้āļ­āļ‡āļĄี JAVA heap āđ„āļ§้āđ€āļžื่āļ­āļŠ่āļ§āļĒāļˆัāļ”āļŠāļĢāļĢ memory āđƒāļŦ้āđ€āļžีāļĒāļ‡āļžāļ­āļ•่āļ­ size of Object āļ—ี่āļ­āļēāļĻัāļĒāļ­āļĒู่āļšāļ™ process heap

āļ›ัāļāļŦāļēāļ—ี่āđ€āļิāļ”āļ•āļēāļĄāļĄāļē āļ็āļ„ืāļ­... āđ€āļิāļ” Object āļ™ั้āļ™āļ­āļ­āļāļˆāļēāļ process āđāļĨāļ°āļ„ืāļ™ memory āļŠู่āļĢāļ°āļšāļš

-āđ€āļ™ื่āļ­āļ‡āļˆāļēāļāļ§่āļē JAVA application āļˆāļ°āļ—āļģāļ‡āļēāļ™āļ•āļēāļĄ process āđ€āļ”ี่āļĒāļ§āđ† āļ‚āļ­āļ‡āđāļ•่āļĨāļ° process āļ—ี่āļ—āļģāļ‡āļēāļ™āļ­āļĒู่ āđ‚āļ”āļĒāļˆāļ°āđ„āļĄ่āļĄีāļāļēāļĢāđāļŠāļĢ์ memory āļĢ่āļ§āļĄāļัāļ™āļĢāļ°āļŦāļ§่āļēāļ‡ process āļ‹ึ่āļ‡āđāļ•่āļĨāļ° process āļˆāļ°āļ–ูāļāļˆัāļ”āļŠāļĢāļĢ memory āđƒāļŦ้āđāļ•่āļĨāļ° process āđ€āļ­āļ‡āđ‚āļ”āļĒ JVM āļ—ี่āđ€āļĢีāļĒāļāļ§่āļē process heap 

āđ€āļžāļĢāļēāļ°āļ‰āļ°āļ™ั้āļ™... āļāļēāļĢāļ•ั้āļ‡āļ„่āļēāļžāļēāļĢāļēāļĄิāđ€āļ•āļ­āļĢ์ –Xmx āļ™ั้āļ™āđ„āļĄ่āđ„āļ”้āļŠ่āļ§āļĒāļ­āļ°āđ„āļĢāļĄāļēāāđ‚āļ”āļĒāļžāļēāļĢāļēāļĄิāđ€āļ•āļ­āļĢ์āļ”ัāļ‡āļāļĨ่āļēāļ§ āđ€āļ›็āļ™āđ€āļžีāļĒāļ‡āļāļēāļĢāļāļģāļŦāļ™āļ” size of total heap āđ€āļ—่āļēāļ™ั้āļ™ āđāļĨāļ°āđ„āļĄ่āđ„āļ”้āļŠ่āļ‡āļœāļĨāļāļĢāļ°āļ—āļšāļ­āļ°āđ„āļĢāļ•่āļ­ size of PermGen region āđ€āļĨāļĒ

āļŦāļĨัāļāđ† āļ„ืāļ­ ... 

-PermSize āđ„āļĄ่āđ€āļžีāļĒāļ‡āļžāļ­āļ•่āļ­āļāļēāļĢāđ‚āļŦāļĨāļ” class file āļĄāļēāđ€āļ็āļšāđ„āļ§้āđƒāļ™ memory PermGen space 

āļŠิ่āļ‡āļ—ี่āļ•้āļ­āļ‡āļ—āļģ āļ„ืāļ­ ...

-āļāļģāļŦāļ™āļ”āļ„่āļē PermGen space āđāļĨāļ° heap size āđƒāļŦ้āđ€āļžีāļĒāļ‡āļžāļ­āļ•่āļ­āļ„āļ§āļēāļĄāļ•้āļ­āļ‡āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™

āđ‚āļ”āļĒāļ—ั่āļ§āđ„āļ›āđ€āļĢāļēāļˆāļ°āļāļģāļŦāļ™āļ” Environment Variables āļˆāļēāJAVA_OPTS āļ‹ึ่āļ‡āđ€āļ›็āļ™ variable name āđ„āļ§้āļāļģāļŦāļ™āļ”āļ„่āļēāļ•่āļēāļ‡āđ† āļ”ัāļ‡āļ™ี้

JAVA_OPTS="–Xms256m  -Xmx512m  -XX:PermSize=256m -XX:MaxPermSize=512m "

–Xms (initial java total heap size) āđƒāļ™āļāļĢāļ“ีāļ—ี่āđ€āļิāļ”āļ›ัāļāļŦāļēāļ—āļģāļ‡āļēāļ™āļŠ้āļē
-Xmx : maximum java total heap size
-XX:PermSize : initial permanent  generation  space
-XX:MaxPermSize : maximum permanent generation space

āļ™āļ­āļāļˆāļēāļāļ™ี้ āļĒัāļ‡āļĄีāļžāļēāļĢāļēāļĄิāđ€āļ•āļ­āļĢ์āļ•ัāļ§āļ­ื่āļ™āļ—ี่āļ™่āļēāļŠāļ™āđƒāļˆ āđ€āļŠ่āļ™

-Xss128m āđ€āļ›็āļ™āļāļēāļĢāļāļģāļŦāļ™āļ” stack size āđ€āļ—่āļēāļัāļš 128MB
-āđƒāļ™āđāļ•่āļĨāļ° thread āđƒāļ™ VM āļ™ั้āļ™ āļˆāļ°āļĄี stack āļ­āļĒู่ āđ‚āļ”āļĒ stack size āļˆāļ°āļˆāļģāļัāļ”āļˆāļģāļ™āļ§āļ™āļ‚āļ­āļ‡ thread āđ„āļ§้āļ•āļēāļĄāļ—ี่āđ€āļĢāļēāļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļĄีāđ„āļ”้
āļ”ัāļ‡āļ™ั้āļ™ āļ–้āļēāļˆāļģāļ™āļ§āļ™āļ‚āļ­āļ‡ thread > stack size āļˆāļ°āļ—āļģāđƒāļŦ้āļ‚āļēāļ”āđāļ„āļĨāļ™ memory āļ•āļēāļĄāļ—ี่āđāļ•่āļĨāļ° thread āļĄัāļ™āļ•้āļ­āļ‡āļāļēāļĢ

-Xmn100m āđ€āļ›็āļ™āļāļēāļĢāļāļģāļŦāļ™āļ” size of the heap āļŠāļģāļŦāļĢัāļš young generation āđ€āļ—่āļēāļัāļš 100MB
-memory āļ—ี่āļ–ูāļāđƒāļŠ้āļ‡āļēāļ™āđ‚āļ”āļĒ JVM āļˆāļ°āļ–ูāļāļˆัāļ”āđ€āļ›็āļ™ generation

-āļ‚ั้āļ™āļ—ี่ 1 : generation āļˆāļ°āđāļš่āļ‡āļ•āļēāļĄāļŠ่āļ§āļ‡āđ€āļ§āļĨāļēāļ—ี่ memory pool āļ™ั้āļ™āđ„āļ”้āļ–ืāļ­āļ„āļĢāļ­āļ‡ object āđƒāļ™āļŠ่āļ§āļ‡āđ€āļ§āļĨāļēāđāļ•āļāļ•่āļēāļ‡āļัāļ™āļ­āļ­āļāđ„āļ›  āđ‚āļ”āļĒ object āđƒāļŦāļĄ่āļ—ี่āļ–ูāļāđ€āļĢีāļĒāļāđ€āļ‚้āļēāļĄāļēāđƒāļŠ้āļ‡āļēāļ™āļ™ั้āļ™āļˆāļ°āļĄีāļāļēāļĢāļˆāļ­āļ‡ memory āđ€āļžื่āļ­āđƒāļŠ้āļ‡āļēāļ™āđƒāļ™ young generation region (āļšāļēāļ‡āļ„āļĢั้āļ‡āļ­āļēāļˆāļˆāļ°āđ€āļĢีāļĒāļāļ§่āļē new generation region) āđ€āļĄื่āļ­āđ„āļĄ่āđ„āļ”้āđƒāļŠ้āļ‡āļēāļ™āļˆāļ°āļ–ูāļāļ™āļģāđ„āļ›āđ€āļ็āļšāđ„āļ§้āļ—ี่ memory old generation region 

-āļ‚ั้āļ™āļ—ี่ 2 : āļŦāļēāļ memory young generation region āđ€āļ•็āļĄāđāļĨ้āļ§ garbage collector āļˆāļ°āļ—āļģāļāļēāļĢāđ€āļĢีāļĒāļāļ„ืāļ™āļŦāļ™่āļ§āļĒāļˆāļģāļŠ่āļ§āļ™āļŦāļ™ึ่āļ‡ āļ—ี่āđ„āļĄ่āđ„āļ”้āļĄีāļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āđāļĨ้āļ§ āļˆāļēāļ old generation region āđāļš่āļ‡āđ„āļ›āđƒāļŦ้āļัāļš young generation region

āđ€āļ”ิāļĄāļ—ีāļ™ั้āļ™ āļˆāļ°āļĄีāļāļēāļĢāđāļš่āļ‡ generation āļ‚āļ­āļ‡ total heap size āļ•่āļ­āļĄāļēāđ„āļ”้āļĄีāļāļēāļĢāđāļš่āļ‡ old generation āļ­āļ­āļāļĄāļēāđ€āļ›็āļ™ tenured generation āļŦāļĨัāļ‡āļˆāļēāļāļ—ี่ generational memory system āļ™ั้āļ™āđ„āļ”้āļ—āļģāļāļēāļĢāļŦāļēāļĢ heap āđ€āļ‚้āļēāđ„āļ› āđƒāļ™ sized partitions āļ—ี่āļ–ูāļāđāļš่āļ‡āđ„āļ§้āļ­āļĒ่āļēāļ‡āļĢāļ°āļĄัāļ”āļĢāļ°āļ§ัāļ‡āļˆāļ°āļ–ูāļāđ€āļĢีāļĒāļāļ§่āļē generation

–Xmn āļˆāļ°āļāļģāļŦāļ™āļ” size of the heap āļ—ี่āļ–ูāļāļˆัāļ”āļŠāļĢāļĢāļŠāļģāļŦāļĢัāļš Eden generation of the heap āđ€āļžāļĢāļēāļ°āđ€āļĢิ่āļĄāđāļĢāļ object āļ—ี่āļĄีāļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āļˆāļ°āļˆāļ­āļ‡ memory āđ€āļšื้āļ­āļ‡āļ•้āļ™āļšāļ™ Eden āļ่āļ­āļ™āļ—ี่āļˆāļ°āļ–ูāļāļ™āļģāđ„āļ›āđ€āļ็āļšāļšāļ™ memory āļ—ั้āļ‡ 2 spaces āļĢāļ°āļŦāļ§่āļēāļ‡ survivor spaces āļˆāļ™āļāļĢāļ°āļ—ั่āļ‡āļĄัāļ™āđ„āļĄ่āđ„āļ”้āļ–ูāļāđ€āļĢีāļĒāļāđƒāļŠ้āļ‡āļēāļ™ āđāļĨāļ°āļ–ูāļāļ™āļģāđ„āļ›āđ€āļ็āļšāđ„āļ§้āļĒัāļ‡ old generation region

older  generation = (āļ‚āļ™āļēāļ”āļ‚āļ­āļ‡ -Xmx) – (āļ‚āļ™āļēāļ”āļ‚āļ­āļ‡ -Xmn) 
-āļ”ัāļ‡āļ™ั้āļ™... –Xmn āļˆāļ°āļ•้āļ­āļ‡āļĄีāļ„่āļēāļ•่āļģāļāļ§่āļē –Xmx āđ€āļŠāļĄāļ­

āđ‚āļ”āļĒāļ—ั่āļ§āđ„āļ›āđ€āļĢāļēāđ„āļĄ่āļ•้āļ­āļ‡āļāļēāļĢ Eden āļ—ี่āđƒāļŦāļ่āđ€āļิāļ™āđ„āļ› āļŦāļĢืāļ­āđƒāļŠ้āļĄāļēāļāļāļ§่āļēāļ—ี่ garbage collector āļˆāļ°āđ€āļĢีāļĒāļāļ„ืāļ™āļŠู่āļĢāļ°āļšāļšāđ„āļ”้ āļˆึāļ‡āđ„āļĄ่āļˆāļģāđ€āļ›็āļ™āļ•้āļ­āļ‡āļ•ั้āļ‡āļ„่āļēāđƒāļŦ้āļัāļšāļžāļēāļĢāļēāļĄิāđ€āļ•āļ­āļĢ์ -Xmn āđ€āļžิ่āļĄāļ็āđ„āļ”้ 

-āļ™āļ­āļāļˆāļēāļāļ™ี้ āļ็āļĄีāļāļēāļĢāđāļ™āļ°āļ™āļģāļ•่āļ­āļ­ีāļāļ§่āļē... āļ„āļ§āļĢāđ€āļĨืāļ­āļ JDK āđƒāļŦ้āđ€āļŦāļĄāļēāļ°āļŠāļĄāļัāļš OS āđ€āļžāļĢāļēāļ° OS 64 bit  āļˆāļ°āļĄี heap size default āļĄāļēāļāļāļ§่āļē OS 32 bit āđ€āļžื่āļ­āļĢāļ­āļ‡āļĢัāļš size of object āļ—ี่āđƒāļŦāļ่āļ‚ึ้āļ™

Keywork : JAVA Performance Tuning, Java Concurrency in Practice

Refference : 

-āđ€āļĢื่āļ­āļ‡ Dealing with “java.lang.OutOfMemoryError: PermGen space” error
http://stackoverflow.com/questions/88235/dealing-with-java-lang-outofmemoryerror-permgen-space-error

-āđ€āļĢื่āļ­āļ‡ Tomcat – java.lang.OutOfMemoryError: PermGen space
http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/

-āđ€āļĢื่āļ­āļ‡ java.lang.OutOfMemoryError: Permgen space
https://plumbr.eu/outofmemoryerror/permgen-space

āļ§ัāļ™āđ€āļŠāļēāļĢ์āļ—ี่ 25 āļĄิāļ–ุāļ™āļēāļĒāļ™ āļž.āļĻ. 2559

Google I/O 2016 : Android Studio 2.2 , Espresso , Firebase , PWA , VR


āļ§ัāļ™āļ—ี่ 25 āļĄิāļ–ุāļ™āļēāļĒāļ™ 2559 āļ—ี่āļœ่āļēāļ™āļĄāļē āļ—๊āļ­āļ›āļ็āđ„āļ”้āđ„āļ›āļ‡āļēāļ™ Google I/O 2016 āļ—ี่ Siam Pavalai (Siam Paragon) āļ•āļ­āļ™āļĨāļ‡āļ—āļ°āđ€āļšีāļĒāļ™ āļ็āđ„āļ”้āđ€āļˆ้āļē Google Cardboard āļĄāļēāđ€āļ›็āļ™āļ‚āļ­āļ‡āļ—ี่āļĢāļ°āļĨึāļ...



āđ€āļ‚้āļēāļ‡āļēāļ™āđāļĨ้āļ§... āļ็āļĄāļēāđāļˆāļāļ‚āļ­āļ‡āļัāļ™ !!!


Google Cardboard āļĢุ่āļ™āđāļĢāļ 5555++


āļ‹ึ่āļ‡āļ āļēāļĒāđƒāļ™āļ‡āļēāļ™āļ็āļĄีāļŠิ่āļ‡āļ—ี่āļ™่āļēāļŠāļ™āđƒāļˆāļĄāļēāļāļĄāļēāļĒ āļ­āļēāļ˜ิāđ€āļŠ่āļ™ āļāļēāļĢāđ€āļ›ิāļ”āļ•ัāļ§ Android Studio 2.2 Preview 4 , Google Play Service , Firebase (āļžāļĢāļ°āđ€āļ­āļāđƒāļ™āļ‡āļēāļ™āđ€āļĨāļĒ āļ•ัāļ§āļ™ี้) , Progressive Web Apps (PWA) āđāļĨ้āļ§āļ็ VR 360 āļ­āļ‡āļĻāļē āļ‹ึ่āļ‡āļĒัāļ‡āđ„āļĄ่āđ€āļ›ิāļ”āļ•ัāļ§āļ­āļĒ่āļēāļ‡āđ€āļ›็āļ™āļ—āļēāļ‡āļāļēāļĢāđƒāļ™āļ›āļĢāļ°āđ€āļ—āļĻāđ„āļ—āļĒ āļ­āļ”āđƒāļˆāļĢāļ­āļŠัāļāļ™ิāļŠāļ™ึāļ‡...


āđ‚āļ”āļĒāļŠ่āļ§āļ™āļ•ัāļ§āļœāļĄ āđ„āļ›āļ‡āļēāļ™āļ™ี้ āļ–ืāļ­āļ§่āļēāļ„ุ้āļĄāļ™āļ° āļĄีāļ™้āļ­āļ‡āļ—ี่āļšāļĢิāļĐัāļ—āđ€āļ”ิāļĄāļŠ่āļ‡āļĢāļēāļĒāļĨāļ°āđ€āļ­ีāļĒāļ”āļ‡āļēāļ™āļ™ี้āļĄāļē āļ็āļĨāļ­āļ‡āđ„āļ›āļ”ู āļĒāļ­āļĄāļĢัāļšāļ§่āļē āđāļĢāļāđ† āļ•āļēāļĄāđ„āļĄ่āļ„่āļ­āļĒāļ—ัāļ™ āđ€āļ™ื่āļ­āļ‡āļˆāļēāļāđ„āļĄ่āđ„āļ”้āļˆัāļš Android āļĄāļēāđ€āļืāļ­āļš 2 āļ›ีāđāļĨāļ° āđāļ•่āđ„āļ”้āļĄีāđ‚āļ­āļāļēāļŠāđ„āļ›āļ”āļēāļ§āđ‚āļŦāļĨāļ”āļĄāļēāđ€āļĨ่āļ™āļš้āļēāļ‡ āļĨāļ­āļ‡āļŠāļĢ้āļēāļ‡āđ‚āļ›āļĢāđ€āļˆāļ„āđ€āļĨ่āļ™āđ† āļĻึāļāļĐāļē Coding āđāļĨ้āļ§āļ็āđ€āļĢีāļĒāļ™āļĢู้āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļัāļš Genemotion āļ‹ึ่āļ‡āļ็āļĒāļ­āļĄāļĢัāļšāļ§่āļē āļ•āļēāļĄāđ„āļĄ่āļ—ัāļ™āļˆāļĢิāļ‡āđ† āđāļ•่āđƒāļ™āļĄุāļĄāļĄāļ­āļ‡āļ‚āļ­āļ‡ Speaker āļ—ี่āđ€āļ›็āļ™ Expert āļ—āļēāļ‡āļ”้āļēāļ™āļ™ี้ āļŦāļĢืāļ­āļžāļ§āļ Mobile Application Developer āļ—ั้āļ‡āļŦāļĨāļēāļĒ āļ็āļˆāļ°āļĄāļ­āļ‡āļ§่āļē āļ›ีāļ™ี้āđ„āļĄ่āļ„่āļ­āļĒāļĄีāļ­āļ°āđ„āļĢāđ€āļ›āļĨี่āļĒāļ™āđāļ›āļĨāļ‡āđ€āļ—่āļēāđ„āļŦāļĢ่ āļ­ัāļ™āļ™ี้āļ–ืāļ­āļ§่āļēāđ€āļ›็āļ™āļ„āļ§āļēāļĄāļ„ิāļ”āļ—ี่āļ”ีāļัāļšāļ•ัāļ§āļœāļĄāļ™āļ° āđ€āļžāļĢāļēāļ°āļœāļĄāđ€āļ›็āļ™ Web Developer āļĄāļē 2 āļ›ี āđāļ•่āļŠุāļ”āļ—้āļēāļĒ āļ็āļ•āļēāļĄāļ—ัāļ™āļ™āļ° āđ€āļžāļĢāļēāļ°āļŦāļĨัāļ‡āđ† āđ€āļ™ื้āļ­āļŦāļēāđ€āļĢิ่āļĄāļŠāļ™ุāļāļ‚ึ้āļ™

....āļ•āļ­āļ™āļ™ี้āļœāļĄāļ•āļēāļĄāļžāļ§āļ Mobile Application Developer āļ—ัāļ™āđāļŦāļĨāļ° 5555++

āļŠāļģāļŦāļĢัāļšāļāļēāļĢāļžูāļ”āļ‚āļ­āļ‡āđ€āļŦāļĨ่āļē Speaker āļ็āļˆāļ°āļĄีāļŦัāļ§āļ‚้āļ­ āļ”ัāļ‡āļ™ี้

āļŦัāļ§āļ‚้āļ­āđāļĢāļ : What's New in Android N (āđ‚āļ”āļĒāļžี่āđ€āļ™āļĒ GDG Thailand) : āļ็āļˆāļ°āļžูāļ”āļ–ึāļ‡āļ„ุāļ“āļŠāļĄāļšัāļ•ิāļ—ี่ Android  N āļ„ืāļ­ āđ€āļĢื่āļ­āļ‡āļ‚āļ­āļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļš App āļ”้āļ§āļĒāļŦāļĨัāļ Constraint Layout (āļ™่āļēāļŠāļ™āđƒāļˆāļĄāļēāļāđ† āđ€āļžāļĢāļēāļ°āļĄัāļ™āļ›āļิāļ§ัāļ•ิāļāļēāļĢāļ­āļ­āļāđāļšāļšāļŦāļ™้āļēāļˆāļ­āđƒāļ™āļĨัāļāļĐāļ“āļ°āļĨāļēāļāļ§āļēāļ‡āļ­āļĒ่āļēāļ‡āļŠāļ§āļĒāļ‡āļēāļĄ āļœāļĄāļ•ั้āļ‡āđƒāļˆāļŸัāļ‡āđ€āļĢื่āļ­āļ‡āļ™ี้āđ€āļ›็āļ™āļžิāđ€āļĻāļĐ... āđ€āļžāļĢāļēāļ°āļœāļĄāļĄีāļ›ัāļāļŦāļēāļัāļšāļāļēāļĢāļ­āļ­āļāđāļšāļšāļŦāļ™้āļēāļˆāļ­āļĄāļēāļ āļˆāļ™āđ€āļĨิāļāđ€āļĨ่āļ™ Android āđ„āļ›āļžัāļāļ™ึāļ‡) āđāļĨāļ°āļŠ่āļ§āļ™āļŦัāļ§āļ‚้āļ­āļ­ื่āļ™āđ† āļ็āļˆāļ°āļĄี āđ€āļĢื่āļ­āļ‡ āļāļēāļĢāļ­āļ­āļāđāļšāļšāđƒāļŦ้āļŦāļ™้āļē App Split āđ„āļ›āļĄāļēāļ”้āļ§āļĒāļŦāļĨัāļ Multi-window , āļāļēāļĢāļŠāļĢ้āļēāļ‡ Notification, āļāļēāļĢāļ‚āļĒāļēāļĒāļŦāļ™้āļēāļˆāļ­, Multi Locale, Data saver mode , āļāļēāļĢāļāļģāļŦāļ™āļ”āļāļēāļĢāđ€āļ‚้āļēāļ–ึāļ‡āļ‚āļ­āļ‡ Hardware, āļāļēāļĢ Support VR (āļ­ัāļ™āļ™ี้āļ็āļ™่āļēāļŠāļ™āđƒāļˆāļ™āļ°)


āđāļĨāļ°āļāļēāļĢāļžูāļ”āđƒāļ™āļŠ่āļ§āļ™āļ­ื่āļ™āđ† āļ็āļˆāļ°āļĄีāđ€āļĢื่āļ­āļ‡...
-Vector Drawable (VD)
-RecyclerView
-Design Support Library
-Chrome Custom Tab
-Instant App

āļŦัāļ§āļ‚้āļ­āļ—ี่ 2 : Android Studio 2.2 āđāļĨāļ° New UI Design (āđ‚āļ”āļĒāļžี่āļ•ี๋ GDG Thailand) : āļŦัāļ§āļ‚้āļ­āļ™ี้āļžี่āđ€āļ‚āļēāđ„āļ”้āđāļš่āļ‡āļāļēāļĢāļžูāļ”āđ€āļ›็āļ™ 4 āļŦัāļ§āļ‚้āļ­āļŦāļĨัāļ āļ„ืāļ­ Design, Develop, Build āđāļĨāļ° Test

āļ่āļ­āļ™āļ—ี่āļˆāļ°āđ€āļĢิ่āļĄ āđ€āļĢāļēāļĄāļē Setup Android Studio 2.2 Preview 4 āļัāļ™āļ่āļ­āļ™āļ™āļ°... āđ‚āļ”āļĒāđƒāļŦ้āđ€āļ‚้āļēāđ„āļ›āļ—ี่ http://tools.android.com/download/studio āđ€āļžื่āļ­āļ—āļ”āļŠāļ­āļšāļ‚āļ­āļ‡āļ”ีāļ‚āļ­āļ‡ Google āļัāļ™


āđ€āļ‚้āļēāđ„āļ›āļ—ี่ http://tools.android.com/download/studio/builds/2-2-preview-4


āļŦāļĨัāļ‡āļˆāļēāļ Download āļĨāļ‡āļĄāļēāđ€āļŠāļĢ็āļˆ āđƒāļŦ้āđ„āļ›āļ—ี่ C:\Users\admin\...\android-studio\bin āđāļĨāļ°āļ„āļĨิ๊āļāļ—ี่ studio64.exe āđ€āļžื่āļ­āļ•ิāļ”āļ•ั้āļ‡ SDK

āļāļ” Next āđ€āļžื่āļ­āļ•ิāļ”āļ•ั้āļ‡


āđ€āļĨืāļ­āļ Standard


āļ•āļĢāļ§āļˆāļŠāļ­āļš Path āđāļĨāļ° SDK Component āļ่āļ­āļ™āļ—ี่āļˆāļ°āļ•ิāļ”āļ•ั้āļ‡āļĨāļ‡āđ„āļ›





āļŦāļĨัāļ‡āļˆāļēāļāļ•ิāļ”āļ•ั้āļ‡āđ€āļŠāļĢ็āļˆāđāļĨ้āļ§ āļĨāļ­āļ‡āļŠāļĢ้āļēāļ‡āđ‚āļ›āļĢāđ€āļˆāļ„āđ€āļ­āļ‡āđ„āļ”้āđ€āļĨāļĒ....







āļ„ุāļ“āļŠāļĄāļšัāļ•ิāļ‚āļ­āļ‡ Android Studio 2.2

1.) Design :
āļ‚้āļ­āļ”ี : 
-āđ€āļĨิāļāđƒāļŠ้ XML āđāļĨ้āļ§āļŦัāļ™āļĄāļēāđƒāļŠ้ Layout Editor, Constraint Layout āđāļĨāļ° Layout Inspector
-āļŠāļ°āļ”āļ§āļāđāļĨāļ°āļĢāļ§āļ”āđ€āļĢ็āļ§ āđāļ„่āļĨāļēāļāļ§āļēāļ‡ āļĢู้āļˆัāļāļāļēāļĢ join
-āļŠāļĢ้āļēāļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ App āđāļšāļš Responsive
-āļŠāļĢ้āļēāļ‡ Performance āđ€āļ™ื่āļ­āļ‡āđ€āļĨิāļāđƒāļŠ้āļ§ิāļ˜ีāļāļēāļĢāļ‹้āļ­āļ™ Component āļŦāļĨāļēāļĒāđ† āļŠั้āļ™ āđ€āļ™ื่āļ­āļ‡āļˆāļēāļāļĄāļ­āļ‡āļ§่āļēāļ—āļģāđƒāļŦ้ APK āļĄีāļ‚āļ™āļēāļ”āđƒāļŦāļ่āļ‚ึ้āļ™ āļ•่āļ­āđ„āļ›āļˆāļ°āļĄีāļ§ิāļ˜ีāļ—ี่āļ”ีāļāļ§่āļēāļ™ี้āđāļĨ้āļ§ āđ€āļĒี่āļĒāļĄāļĄāļēāļāđ†
āļ‚้āļ­āđ€āļŠีāļĒ :
-Constraint Layout āļ•āļ­āļ™āļ™ี้āļ­āļēāļˆāļˆāļ°āļĄี Bug āđ€āļĨ็āļāļ™้āļ­āļĒ āđāļ•่āļ–้āļēāđ€āļ§āļ­āļĢ์āļŠั่āļ™āļ™ี้āļŠāļĄāļšูāļĢāļ“์āļāļ§่āļēāļ™ี้ āļ็āļˆāļ°āđ€āļ›็āļ™āđ€āļ„āļĢื่āļ­āļ‡āļĄืāļ­āļ—ี่āđƒāļŠ้āļˆัāļ” Layout āļ‚āļ­āļ‡ Android Apps āļ—ี่āđ€āļĒี่āļĒāļĄāļĄāļēāļāđ†

2.) Develop :
-āļŠāļ­āļ™āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™ Firebase : https://firebase.google.com/

āļ•่āļ­āđ„āļ›āļˆāļēāļāļ็āđ„āļĄ่āļ•้āļ­āļ‡āļˆ้āļēāļ‡ Back-end Developer āđāļĨāļ°āļ™āļ°... āđ€āļžāļĢāļēāļ°āļĄี Firebase āļŠ่āļ§āļĒāļˆ้āļē... 

-āļŠāļ­āļ™āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āļˆāļēāļ Sample Code : https://github.com/googlesamples
-āļŠāļ­āļ™āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āļˆāļēāļ Codelab : https://firebase.google.com/docs/test-lab/

3.) Build : 
-āļŠāļ­āļ™āđ€āļĢื่āļ­āInstant Run : āđ€āļžิ่āļĄāļ›āļĢāļ°āļŠิāļ—āļ˜ิāļ āļēāļžāļāļēāļĢ Build āđ‚āļ”āļĒāđ„āļĄ่āļ•้āļ­āļ‡ Deploy APK āļ—ุāļāļ„āļĢั้āļ‡āļ—ี่āļ—āļģāļāļēāļĢāđ€āļ›āļĨี่āļĒāļ™ Code āđāļĨ้āļ§ Run āļ—āļ”āļŠāļ­āļšāļ—ี่ Emulator
Reference : http://tools.android.com/tech-docs/instant-run

-Merge Manifest Viewer : āļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļš Dependency āļ—ี่āđ€āļžิ่āļĄāđ€āļ‚้āļēāđ„āļ›āđ„āļ”้ āļ‹ึ่āļ‡āļˆāļ°āđāļŠāļ”āļ‡āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āđ„āļ§้
-āļāļēāļĢāđƒāļŠ้ Jack compiler āđ€āļžื่āļ­āđ€āļžิ่āļĄāļ›āļĢāļ°āļŠิāļ—āļ˜ิāļ āļēāļžāļāļēāļĢ Build

4.) Test :
-āļžูāļ”āđ€āļĢื่āļ­āļ‡ Android Emulator āļĄีāļĨัāļāļĐāļ“āļ°āļŦāļ™้āļēāļˆāļ­āđāļĨāļ°āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ—ี่āđƒāļāļĨ้āđ€āļ„ีāļĒāļ‡āļัāļšāļ‚āļ­āļ‡āļˆāļĢิāļ‡

-āļāļēāļĢāļ—āļ”āļŠāļ­āļš UI āļ”้āļ§āļĒ Espresso
Reference : https://developer.android.com/training/testing/ui-testing/espresso-testing.html

-āļāļēāļĢ Monitor āđ€āļžื่āļ­āļ”ูāļ‚āļ™āļēāļ”āļ‚āļ­āļ‡ APK āļŠāļģāļŦāļĢัāļšāļ—āļ”āļŠāļ­āļš Performance āļ”้āļ§āļĒ APK Analyzer


āļŦัāļ§āļ‚้āļ­āļ—ี่ 3 : Play Store Best Practise āđ‚āļ”āļĒāļ„ุāļ“ Aun āļˆāļēāļ GDG Thailand āļ่āļēāļĒ Marketing āļ็āđ„āļ”้āļĄāļē Review āļ§ิāļ˜ีāļ—āļģāļāļēāļĢāļ•āļĨāļēāļ”āļัāļš Google Play āđ€āļŠ่āļ™
-āđ€āļĢื่āļ­āļ‡āļāļēāļĢāđ€āļ็āļšāđ€āļ‡ิāļ™āļœ่āļēāļ™āļœู้āđƒāļŦ้āļœู้āļšāļĢิāļāļēāļĢ
-āļŠāļĢ้āļēāļ‡āļˆุāļ”āđ€āļ”่āļ™āđāļĨāļ°āļĨāļšāļˆุāļ”āļ”้āļ­āļĒāļ‚āļ­āļ‡ App āļ•ัāļ§āđ€āļ­āļ‡
-āļāļēāļĢāļ—āļģ Retention
-āļāļēāļĢāļ­āļ­āļāđāļšāļš Screen Shot, āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āļ§āļēāļĄāļ™่āļēāļŠāļ™āđƒāļˆāļ‚āļ­āļ‡ App, āļāļēāļĢāļŠāļĢ้āļēāļ‡ Contents, āļāļēāļĢāļŠāļĢ้āļēāļ‡ Ads
-āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āļ‚āļ­āļ‡ App āļ”้āļ§āļĒāļ§ิāļ˜ีāđāļšāļš Soft Launch
-āļāļēāļĢāđƒāļŠ้ Keyword āđ€āļžื่āļ­āļŠ่āļ‡āđ€āļŠāļĢิāļĄāļāļēāļĢ Search

āļŦัāļ§āļ‚้āļ­āļ—ี่ 4 : Advanced Espresso āđ‚āļ”āļĒ Inaki Villar : āļšิāļ™āļĄāļēāļˆāļēāļāļŠāđ€āļ›āļ™āđ€āļĨāļĒāļ™āļ°āļ„āļ™āļ™ี้
āđ€āļ‚āļēāļ็āđ„āļ”้āļžูāļ”āļ–ึāļ‡āļāļēāļĢāļ—āļ”āļŠāļ­āļš UI āļ”้āļ§āļĒ Espresso Framework āļ‹ึ่āļ‡āļ›āļĢāļ°āļāļ­āļšāļ”้āļ§āļĒ āļˆāļēāļ...
Link : Android Testing Support Library : https://google.github.io/android-testing-support-library/

āļ›āļĢāļ°āļāļ­āļšāļ”้āļ§āļĒ...

1. Android Junit Runner : https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html
2. Espresso : https://google.github.io/android-testing-support-library/docs/espresso/cheatsheet/


3. UIAutomator : https://google.github.io/android-testing-support-library/docs/uiautomator/

āļŦัāļ§āļ‚้āļ­āļ—ี่ 5 : Firebase āđ‚āļ”āļĒāļžี่āđ€āļ™āļĒ āļžี่āļ•ี๋ āđāļĨāļ°āļžี่āđ€āļ­āļ āļˆāļēāļ GDG Thailand : āđ„āļ”้āļĄāļēāļ™āļģāđ€āļŠāļ™āļ­āļāļēāļĢāđƒāļŠ้ Firebase āļ‹ึ่āļ‡āļ•่āļ­āđ„āļ›āļˆāļ°āđ€āļ‚้āļēāļĄāļēāđ€āļ›็āļ™āļŠ่āļ§āļ™āļŦāļ™ึ่āļ‡āđƒāļ™āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒี Back-end Server āļ—āļģāļŦāļ™้āļēāļ—ี่āđƒāļ™āļāļēāļĢāđ€āļ็āļšāļ‚้āļ­āļĄูāļĨāļāļēāļĢ Login, āļāļēāļĢāļ§ิāđ€āļ„āļĢāļēāļ°āļŦ์āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™ Application āđāļĨāļ°āļāļēāļĢāđƒāļŠ้āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒี Real Time Database āđ‚āļ”āļĒāļžี่āđ€āļ™āļĒ āļ็āđ„āļ”้āđ€āļāļĢิ่āļ™āļŦāļĨัāļāļāļēāļĢāļ—ั่āļ§āđ„āļ›āļ‚āļ­āļ‡ Firebase āđ‚āļ”āļĒāđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļĄัāļ„āļĢāđ€āļ‚้āļēāđƒāļŠ้āļ‡āļēāļ™āđ„āļ”้ āļŸāļĢี !!! āđāļĨāļ°āđ€āļĢāļēāļĒัāļ‡āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚้āļēāđ„āļ›āđƒāļ™ Console āđ€āļžื่āļ­āļ—āļģāđ€āļĢื่āļ­āļ‡āļ•่āļēāļ‡āđ† āđ„āļ”้ āđ€āļŠ่āļ™
-āļāļēāļĢāđ€āļ‚้āļēāļ–ึāļ‡āļ‚้āļ­āļĄูāļĨ āļŦāļĢืāļ­ Authentication : āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚้āļēāđ„āļ› set āđāļĨāļ° reset āļ‚้āļ­āļĄูāļĨāļāļēāļĢ login āļ‚āļ­āļ‡ User āđ„āļ”้
-āļāļēāļĢāļ—āļģāļžāļ§āļ DNS āļŦāļĢืāļ­ Hosting : āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠ้ NPM āđƒāļ™āļāļēāļĢāļˆัāļ”āļāļēāļĢāđ€āļĢื่āļ­āļ‡āļ™ี้āđ„āļ”้
-āļāļēāļĢāđ€āļ‚้āļēāđ„āļ›āļ—ี่ firebase.google.com āđ€āļžื่āļ­āđ€āļ­āļē Firebase āļĄāļēāđƒāļŠ้āđƒāļ™āđ‚āļ›āļĢāđ€āļˆāļ„āđ‚āļ”āļĒāđƒāļŠ่ SHA1
-āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđ€āļŠื่āļ­āļĄāļ•่āļ­ Firebase āļัāļš Android Studio āđ€āļžื่āļ­āđ€āļĢีāļĒāļāđƒāļŠ้ Service āļ—ี่āđ€āļĢāļēāļ•้āļ­āļ‡āļāļēāļĢāđ„āļ”้ āđ€āļžีāļĒāļ‡āđāļ„่ Click āđ€āļ”ีāļĒāļ§ Code āļ—ุāļāļ­āļĒ่āļēāļ‡āļ็āļˆāļ° Generate āļĄāļēāļ—ี่āđ‚āļ›āļĢāđ€āļˆāļ„āļ‚āļ­āļ‡āđ€āļĢāļēāđ€āļĨāļĒ āļŠุāļ”āļĒāļ­āļ”āļ›āļ°āļŦāļĨāļ° !!!
-āļĨāļ”āļāļēāļĢāđ€āļ‚ีāļĒāļ™ Code āđ€āļžื่āļ­āđ€āļĢีāļĒāļāđƒāļŠ้ Service āļĨāļ‡āđ„āļ›āļĄāļēāļ āđ€āļžāļĢāļēāļ° Firebase āļˆัāļ”āļāļēāļĢ Service āđƒāļŦ้āļŦāļĄāļ”
-āļāļēāļĢāđ€āļ็āļšāļ‚้āļ­āļĄูāļĨāļĨāļ‡ Database āđƒāļŠ้āļŦāļĨัāļ key-value
-āđ€āļĢื่āļ­āļ‡āļ‚āļ­āļ‡ Cloud Messaging āļ—ี่āļˆāļ°āđ€āļ›็āļ™ Feature āđ„āļ§้āđ€āļžื่āļ­āļŠ่āļ‡ Message āđāļĨāļ°āļˆāļ°āļŠ่āļ‡ Notification āđ„āļ›āđāļŠāļ”āļ‡āļ—ี่āđ‚āļ—āļĢāļĻัāļžāļ—์āļ‚āļ­āļ‡āđ€āļĢāļēāđ€āļžื่āļ­āļĢัāļšāļŠ่āļ‡āļ‚่āļēāļ§āļŠāļēāļĢ āļ‹ึ่āļ‡āļŦāļĨัāļāļāļēāļĢāļ—āļģāļ‡āļēāļ™ āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļĒิāļ‡ Service āđ„āļ”้ 2 āļ—āļēāļ‡ āļ„ืāļ­ āļœ่āļēāļ™āļ—āļēāļ‡ Console āļ‚āļ­āļ‡ Firebase āđāļĨāļ°āļœ่āļēāļ™āļ—āļēāļ‡ Application āļ—ี่āđ„āļ”้āļŠāļĢ้āļēāļ‡āļ‚ึ้āļ™ āđāļĨāļ° Firebase āļĒัāļ‡āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢ้āļēāļ‡ Group āđ€āļžื่āļ­āļŠ่āļ‡āļ‚่āļēāļ§āļŠāļēāļĢāđ„āļ”้āļ”้āļ§āļĒ āđāļ–āļĄāļĒัāļ‡āļŠāļēāļĄāļēāļĢāļ–āļŠ่āļ‡āļ‚่āļēāļ§āļŠāļēāļĢāđāļšāļš Stand Alone āđ„āļ”้āļ­ีāļāļ”้āļ§āļĒāļ­āļ° āđ€āļˆ๋āļ‡āļĄāļēāļāđ†āđ†āđ†
-āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļžāļ§āļ Crash Reporting : āļžāļ§āļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™ āļŦāļĢืāļ­ āļāļēāļĢ Error āļ‚āļ­āļ‡ Application
-āļāļēāļĢāļ—āļģ Test Report āđāļĨāļ° āļāļēāļĢāļ—āļģ Screen Shot āļ­ัāļ™āļ™ี้āļĒัāļ‡āđ€āļ›็āļ™ Option āļ—ี่āļĒัāļ‡āđ€āļŠีāļĒāđ€āļ‡ิāļ™āļ­āļĒู่ āđ„āļĄ่āļŸāļĢีāļ™āļ°āļˆ๊āļ° !!!
-āļāļēāļĢāļ—āļģ Dynamic Link āđ€āļžื่āļ­āļŠ่āļ‡āđ€āļŠāļĢิāļĄāđ€āļĢื่āļ­āļ‡āļāļēāļĢ Invite āđ€āļžื่āļ­āļ™āļĄāļēāđ‚āļŦāļĨāļ” App āļ•ัāļ§āđ€āļ­āļ‡
-āđ€āļĢื่āļ­āļ‡āļāļēāļĢāļŠ่āļ‡āļ‚้āļ­āļĄูāļĨ āđ€āļ›็āļ™ Option āļ™ี้āļ™่āļēāļŠāļ™āđƒāļˆ !!! āļ–้āļē App āļĒัāļ‡āđ„āļĄ่ Online āļ‚้āļ­āļĄูāļĨāļ็āļˆāļ°āđ€āļ็āļšāđ„āļ§้āļ—ี่āđ€āļ„āļĢื่āļ­āļ‡āđ€āļĢāļēāļ่āļ­āļ™ āđ€āļĄื่āļ­ App Online āđāļĨ้āļ§ āļ‚้āļ­āļĄูāļĨāļ—ุāļāļ­āļĒ่āļēāļ‡āļ็āļˆāļ°āļŠ่āļ‡āđ„āļ›āļ—ี่ Server āļ—ัāļ™āļ—ี āļ§้āļēāļ§āļ§āļ§āļ§... āđ€āļˆ๋āļ‡āļุāļ”āđ†

āđāļĨāļ°āļŠุāļ”āļ—้āļēāļĒ...āļžี่āđ€āļ‚āļēāļĒāļāļ•ัāļ§āļ­āļĒ่āļēāļ‡ App Chat Room āļ—ี่āļ—āļģāļ‚ึ้āļ™āļĄāļē āđ€āļžื่āļ­āđƒāļŦ้āđ€āļŦ็āļ™āļ–ึāļ‡āļ„āļ§āļēāļĄāđ€āļ่āļ‡āļāļēāļˆāļ‚āļ­āļ‡ Firebase āļ—ี่āļ—āļģāļ‡āļēāļ™āđāļšāļš Realtime āļŠุāļ”āđ† (āļŠāļēāļĄāļēāļĢāļ– Create Update Delete āđ„āļ”้āđ€āļĢ็āļ§āļุāļ”āđ†)

āļŦัāļ§āļ‚้āļ­āļ—ี่ 6 VR at Google āđ‚āļ”āļĒāļžี่āļ§ิāļ—āļĒāļē āļˆāļēāļ GDG Thailand : āļŦัāļ§āļ‚้āļ­āļ™ี้āļ็āđ„āļĄ่āļ„่āļ­āļĒāļĄีāļ­āļ°āđ„āļĢāļĄāļēāļ­ัāļžāđ€āļ”āļ•āļĄāļēāļ āļ็āđ„āļ”้āļžูāļ”āļ–ึāļ‡āļ—ี่āļĄāļēāļ‚āļ­āļ‡ VR āļ§่āļē āļĄีāļāļēāļĢāļ„ิāļ”āļĄāļēāļ™āļēāļ™āđāļĨ้āļ§āđ‚āļ”āļĒ NASA āļ•ั้āļ‡āđāļ•่āļ›ี 1990 āđāļ•่āļĒัāļ‡āđ„āļĄ่āļŠāļģāđ€āļĢ็āļˆ āļˆāļ™āļāļĢāļ°āļ—ั่āļ‡ Google āđ„āļ”้āļ™āļģāļĄāļēāļžัāļ’āļ™āļēāļ•่āļ­āļˆāļ™āđ€āļิāļ” VR āļĢุ่āļ™āđāļĢāļ āļ‹ึ่āļ‡āđ€āļ›็āļ™āļĢุ่āļ™āđ€āļ”ีāļĒāļ§āļัāļšāļ—ี่āđ„āļ”้āđāļˆāļāđƒāļ™āļ‡āļēāļ™ Google I/O 2016 āļ™ั้āļ™āđāļŦāļĨāļ° āļŦāļĨัāļ‡āļˆāļēāļāļ™ั้āļ™āļ็āđ„āļ”้āļāļĨ่āļēāļ§āļ–ึāļ‡āļ§่āļē āļ›ัāļˆāļˆุāļšัāļ™āļ็āļĄีāļšāļĢิāļĐัāļ—āļ•่āļēāļ‡āđ† āļ—āļģ SDK āļĄāļēāđƒāļŦ้āđƒāļŠ้āļžัāļ’āļ™āļē āđ€āļŠ่āļ™ Unity āđāļ•่āļ็āļˆāļ°āļ•้āļ­āļ‡āļĄีāļāļēāļĢāđ„āļ› Convert āđ€āļžื่āļ­āđƒāļŠ้āļ‡āļēāļ™āļ­ีāļ āđāļĨāļ°āđƒāļ™āļ­āļ™āļēāļ„āļ• VR āļ็āļˆāļ°āļĄีāļāļēāļĢāļžัāļ’āļ™āļēāđƒāļŦ้āļĄāļēāļ„ู่āļัāļšāđ‚āļ—āļĢāļĻัāļžāļ—์āļ‚āļ­āļ‡āđ€āļĢāļēāđāļĨ้āļ§āļ™āļ° āđ‚āļ”āļĒāļžี่āđ€āļ‚āļēāļ็āđ„āļ”้āđ€āļ›ิāļ”āļ‡āļēāļ™āļ‚āļ­āļ‡ Daydream āđƒāļŦ้āļ”ูāļัāļ™


Daydream Labs: Lessons Learned from VR Prototyping - Google I/O 2016


āđāļĨāļ°āļ­ีāļāđ€āļĢื่āļ­āļ‡ āļ„ืāļ­ Progressive Web App : āļ็āļˆāļ°āļĄีāļāļēāļĢāļžูāļ”āļ–ึāļ‡ āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™ Toolkit : Web + Mobile Web App
āļ™ั่āļ™āļ„ืāļ­ AngularJS 2, Polymer, SW-Toolbox, SW-Prefetch, Push notification, Service Worker

reference :
-Progressive Web Apps : https://developers.google.com/web/progressive-web-apps/
-AngularJS : https://angularjs.org/
-Polymer : https://www.polymer-project.org/1.0/
-Ionic Framework : http://ionicframework.com/

āļŠุāļ”āļ—้āļēāļĒ !!! āđāļŦāļĨ่āļ‡āļ‚้āļ­āļĄูāļĨāļˆāļēāļāļ—āļēāļ‡ GDG Thailand āļ‹ึ่āļ‡āļˆāļ°āļĄี Code Lab āđāļĨāļ° Slide āļŠāļĢุāļ›āđƒāļŦ้āļ‚āļ­āļ‡āļ—ั้āļ‡āļ‡āļēāļ™
https://github.com/Google-IO-extended-bangkok

What's new in aNdroid :
http://www.slideshare.net/nuuneoi/whats-new-in-android-google-io-extended-bangkok-2016

Advanced Espresso :
https://speakerdeck.com/cdsap/espresso-io-extended-bangkok

What's new in Android Studio 2.2 : https://docs.google.com/presentation/d/1XWvLcV1XlcB4llJri6agY3X6BsvT9p7N0QfzItjWvXg/edit?usp=sharing

Introduction to Firebase :
http://www.slideshare.net/nuuneoi/introduction-to-firebase-google-io-extended-bangkok-2016

Firebase Cloud Messaging : https://docs.google.com/presentation/d/1HPLk1PXaGUjqTlPB6RHsgrTunJNo10kbGZ-JX_7JELw/edit?usp=sharing

āđāļĨāļ°āļ™ี่āļ็āļ„ืāļ­āļŠāļĢุāļ›āđ€āļ™ื้āļ­āļŦāļēāļ—ั้āļ‡āļŦāļĄāļ”āđƒāļ™āļ‡āļēāļ™ Google I/O 2016 āđ‚āļ”āļĒāļžี่āđ€āļ™āļĒ GDG Thailand āļ„āļĢัāļš...


āļ§ัāļ™āļĻุāļāļĢ์āļ—ี่ 24 āļĄิāļ–ุāļ™āļēāļĒāļ™ āļž.āļĻ. 2559

Welcome to Codelabs! : āđāļŦāļĨ่āļ‡āđ€āļĢีāļĒāļ™āļĢู้ Coding āļŠāļģāļŦāļĢัāļšāļŠāļēāļ§ Geek āļˆāļēāļāļ‡āļēāļ™ Google I/O 2016

āļŠāļ§ัāļŠāļ”ีāļ„āļĢัāļš āđƒāļ™āļ›ี 2016 āļŠ่āļ§āļ‡āļāļĨāļēāļ‡āđ† āļ›ีāļ—ี่āļœ่āļēāļ™āļĄāļē āļ็āļĄีāļ‚่āļēāļ§āļ§่āļē Google āļˆāļ°āļˆัāļ”āļ‡āļēāļ™āļŠัāļĄāļĄāļ™āļēāļ—ี่āđƒāļŦāļ่āļ—ี่āļŠุāļ”āļ‚āļ­āļ‡āļ™ัāļāļžัāļ’āļ™āļēāļ—ี่āļĢāļ§āļĄāļŦัāļ§āļ‚้āļ­āļšāļĢāļĢāļĒāļēāļĒāđāļĨāļ°āļ§ิāļ—āļĒāļēāļāļĢāđāļ™āļ§āļŦāļ™้āļēāļˆāļēāļāđ„āļ—āļĒāđāļĨāļ°āļ™āļēāļ™āļēāļŠāļēāļ•ิ I/O Extended Bangkok 


āđāļŦāļĨ่āļ‡āļ‚้āļ­āļĄูāļĨ : https://events.google.com/io2016/

āļ‹ึ่āļ‡āđƒāļ™āļ›ีāļ™ี้āļˆัāļ”āđ€āļ•็āļĄāļัāļšāļŦัāļ§āļ‚้āļ­āđƒāļŦāļĄ่āļĨ่āļēāļŠุāļ”āļŠ่āļ‡āļ•āļĢāļ‡āļˆāļēāļāļ‡āļēāļ™ Google I/O āđ€āļŠ่āļ™ Android, Progressive Web App, Firebase āđāļĨāļ° VR āļ„āļĢāļšāļ—ั้āļ‡āļั่āļ‡āđāļ­āļ™āļ”āļĢāļ­āļĒāļ”์āđāļĨāļ°āđ€āļ§็āļšāđāļžāļĨāļ•āļŸāļ­āļĢ์āļĄ

āđāļĨāļ°āļ āļēāļĒāđƒāļ™āļ‡āļēāļ™...āļ—āļēāļ‡ Google āļ็āđ„āļ”้āļ™āļģāđ€āļŠāļ™āļ­āđāļŦāļĨ่āļ‡āđ€āļĢีāļĒāļ™āļĢู้āļ‚āļ­āļ‡ Geek āļ—ี่āļĄีāđƒāļˆāļĢัāļāđƒāļ™āļāļēāļĢāđ€āļ‚ีāļĒāļ™ Code āđƒāļ™āļĢูāļ›āđāļšāļšāđƒāļŦāļĄ่āđ† āļ”้āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāđƒāļŦāļĄ่āđ† āļ—ี่āļ—ัāļ™āļŠāļĄัāļĒ āđāļĨāļ°āļŠāļ™ุāļāļĄāļēāļāļāļ§่āļēāđ€āļ”ิāļĄ āđ‚āļ”āļĒāđāļŦāļĨ่āļ‡āđ€āļĢีāļĒāļ™āļĢู้āļ™ี้āļĄีāļŠื่āļ­āļ§่āļē Codelab āļ™ั้āļ™āđ€āļ­āļ‡...





āđāļŦāļĨ่āļ‡āļ‚้āļ­āļĄูāļĨ : https://codelabs.developers.google.com/

āđ‚āļ”āļĒ Google Codelabs āļˆāļ°āļ™āļģāđ€āļŠāļ™āļ­āļ§ิāļ˜ีāļāļēāļĢāđ€āļĢีāļĒāļ™āļāļēāļĢāļŠāļ­āļ™āļ”้āļ§āļĒāļ§ิāļ˜ีāļŠāļĢ้āļēāļ‡āļิāļˆāļāļĢāļĢāļĄ Lab āđāļĨāļ°āļˆัāļšāđ€āļ§āļĨāļēāļāļēāļĢāļ—āļģ Lab āđ€āļžื่āļ­āļŠāļĢ้āļēāļ‡āđ€āļŠāļĢิāļĄāļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“์ āļ‹ึ่āļ‡āļ āļēāļĒāđƒāļ™ Codelabs āļˆāļ°āļĄีāļāļēāļĢāļŠāļĢ้āļēāļ‡āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđ€āļĢีāļĒāļ™āļĢู้āđ„āļ§้āđ€āļ›็āļ™ Lab āđ€āļĨ็āļāđ†
āđ‚āļ”āļĒāļāļēāļĢāđ€āļžิ่āļĄāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļŦāļĢืāļ­ Feature āđƒāļŦāļĄ่āđ† āđ€āļ‚้āļēāđ„āļ› āđ€āļŠ่āļ™ āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒี Android Wear, Google Compute Engine, Project Tango āđāļĨāļ°āļāļēāļĢāđƒāļŠ้ Google APIs āļšāļ™ iOS





āļŠāļģāļŦāļĢัāļšāđƒāļ„āļĢāļ—ี่āļŠāļ™āđƒāļˆāļ­āļĒāļēāļāļˆāļ°āļึāļāļ›āļĢืāļ­āļีāļĄืāļ­āļ•ัāļ§āđ€āļ­āļ‡ āļ­āļĒāļēāļāļˆāļ°āļĨāļ­āļ‡āđ€āļ‚้āļēāđ„āļ›āļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļ•่āļēāļ‡āđ† āļ‚āļ­āļ‡ Google āļ็āļŠāļēāļĄāļēāļĢāļ–āļ•ิāļ”āļ•āļēāļĄāđ„āļ”้āļ—ี่... https://codelabs.developers.google.com/io2016 āļ™āļ°āļ„āļĢัāļš...




āđāļŦāļĨ่āļ‡āļ‚้āļ­āļĄูāļĨāļ­้āļēāļ‡āļ­ิāļ‡ :
Google Developer Groups (GDGs) : Community āļŠāļģāļŦāļĢัāļšāļ™ัāļāļžัāļ’āļ™āļēāļ—ี่āļĄีāļ„āļ§āļēāļĄāļŠāļ™āđƒāļˆāđƒāļ™āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļ‚āļ­āļ‡ Google āđ€āļŠ่āļ™ Android, Chrome, Drive, Google Cloud platforms, Maps API, YouTube API
http://www.gdg.in.th/
http://www.gdg.in.th/2016/io2016bkk

āļ§ัāļ™āļžāļĪāļŦัāļŠāļšāļ”ีāļ—ี่ 23 āļĄิāļ–ุāļ™āļēāļĒāļ™ āļž.āļĻ. 2559

JSON : J2EE Development

-JSON (JavaScript Object Notation)
http://crunchify.com/what-is-json-javascript-object-notation/

-JSON Manipulation
http://crunchify.com/json-manipulation-in-java-examples/

-āļāļēāļĢāđ€āļ‚ีāļĒāļ™ JSON object āđ„āļ›āļŠู่ File āđƒāļ™ Java
http://crunchify.com/how-to-write-json-object-to-file-in-java/

-āļāļēāļĢāļ­่āļēāļ™ JSON Object āļˆāļēāļ File āđƒāļ™ Java
http://crunchify.com/how-to-read-json-object-from-file-in-java/

-āļāļēāļĢāđāļ›āļĨāļ‡ JSON āđ„āļ›āđ€āļ›็āļ™ HTML table āļ”้āļ§āļĒ Converter Script
http://crunchify.com/crunchifyjsontohtml-js-json-to-html-table-converter-script/

-āļāļēāļĢ Iterate (looping) JSONArray āđƒāļ™ JavaScript
http://crunchify.com/how-to-iterate-through-jsonarray-in-javascript/

-āļāļēāļĢāļŠ่āļ‡āļ„่āļē (Parse) JSONObject āđāļĨāļ° JSONArrays
http://crunchify.com/java-how-to-parse-jsonobject-and-jsonarrays/

-āļāļēāļĢ Merge/Concat Multiple JSONObjects āđƒāļ™ Java
http://crunchify.com/how-to-merge-concat-multiple-jsonobjects-in-java-best-way-to-combine-two-jsonobjects/

-JSON Processing API āđāļĨāļ° āļāļēāļĢāđƒāļŠ้ Pretty Print JSON Output (Gson + Jackson)
http://crunchify.com/java-jsongenerator-json-processing-api-and-how-to-enable-pretty-print-json-output-gson-jackson/

-Escape Character Utility āļŠāļģāļŦāļĢัāļš URL āđāļĨāļ° JSON data
http://crunchify.com/escape-character-utility-for-url-and-json-data-free-to-use-in-your-project/

āļ§ัāļ™āļžุāļ˜āļ—ี่ 22 āļĄิāļ–ุāļ™āļēāļĒāļ™ āļž.āļĻ. 2559

Java Method : J2EE Development


-āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™ Java Method Hiding āđāļĨāļ° Overriding (Override Static Method āđƒāļ™ Java)
http://crunchify.com/java-method-hiding-and-overriding-override-static-method-in-java/

-āļ•ัāļ§āļ­āļĒ่āļēāļ‡āđāļĨāļ°āļ§ิāļ˜ีāļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™ Java Method Overriding
http://crunchify.com/java-method-overriding-examples-and-concepts-overriding-rules/

-āļāļēāļĢāđƒāļŠ้ Primitive Types Instead āļ‚āļ­āļ‡ Wrapper Classes
http://crunchify.com/java-tip-wherever-possible-try-to-use-primitive-types-instead-of-wrapper-classes/

-āļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™ Reflection āđ€āļžื่āļ­āđ€āļĢีāļĒāļ Java Method āļ‚āļ“āļ° Runtime
http://crunchify.com/java-reflection-how-to-use-reflection-to-call-java-method-at-runtime/

āļ­āļ°āđ„āļĢ āļ„ืāļ­ Abstract Class āđāļĨāļ° Abstract Method āđƒāļ™ Java? āđāļĨāļ°āđ€āļĢāļēāļˆāļ°āļĄีāļ§ิāļ˜ีāđƒāļŠ้āļ‡āļēāļ™āļ­āļĒ่āļēāļ‡āđ„āļĢ
http://crunchify.com/what-is-an-abstract-class-and-abstract-method-in-java-when-should-i-use-it/

-Instance Fields āļ‚āļ­āļ‡ Class Public
http://crunchify.com/java-tips-never-make-an-instance-fields-of-class-public/

-āļ„āļ§āļēāļĄāđāļ•āļāļ•่āļēāļ‡āļĢāļ°āļŦāļ§่āļēāļ‡ throw āļัāļš throws āđƒāļ™ Java
http://crunchify.com/what-is-a-difference-between-throw-vs-throws-in-java/

Reference : http://chimera.labs.oreilly.com/books/1234000001805/ch06.html#learnjava3-CHP-6-SECT-6.2

Java HTTP : J2EE Development



-āļāļēāļĢāļŠ่āļ‡āļ‚้āļ­āļ„āļ§āļēāļĄ URL āļ”้āļ§āļĒ HTTP request GET/POST āđƒāļ™ Java
http://crunchify.com/java-url-example-getting-text-from-url/

-āļ§ิāļ˜ีāļāļēāļĢāļĢัāļš HTTP Response Header āđƒāļ™ Java
http://crunchify.com/simple-way-to-get-http-response-header-in-java/

-āļāļēāļĢāļŠ่āļ‡ HTTP Request āđāļĨāļ°āļāļēāļĢāļĢัāļš Response āđƒāļ™ Java
http://crunchify.com/how-to-send-http-request-and-capture-response-in-java/

-āļāļēāļĢāļĢัāļš Entity ContentType āđƒāļ™ HttpClient
http://crunchify.com/java-how-to-get-entity-contenttype-in-httpclient/

-āļāļēāļĢ Ping Status āļ‚āļ­āļ‡ HTTP End Point āđƒāļ™ Java
http://crunchify.com/how-to-get-ping-status-of-any-http-end-point-in-java/

-āļāļēāļĢāļĢัāļšāļ„่āļē Server IP Address āđāļĨāļ° Hostname āđƒāļ™ Java
http://crunchify.com/how-to-get-server-ip-address-and-hostname-in-java/

-āļāļēāļĢ Encode āļŦāļĢืāļ­ Decode URL String āļŦāļĢืāļ­ Form Parameter
http://crunchify.com/java-how-to-encode-or-decode-url-string-or-form-parameter/

-Embedded HTTP Jersey server āļĢāļ°āļŦāļ§่āļēāļ‡āļ—ี่ Java Application āđ€āļĢิ่āļĄāļ—āļģāļ‡āļēāļ™
http://crunchify.com/how-to-start-embedded-http-jersey-server-during-java-application-startup/

-Enable HTTPS āļŦāļĢืāļ­ SSL āļ‚āļ­āļ‡ Apache Tomcat Server – Port 8443
http://crunchify.com/step-by-step-guide-to-enable-https-or-ssl-correct-way-on-apache-tomcat-server-port-8443/

-Social Sharing URLs
http://crunchify.com/list-of-all-social-sharing-urls-for-handy-reference-social-media-sharing-buttons-without-javascript/

Java Collections : J2EE Development


-āļ„āļ§āļēāļĄāđāļ•āļāļ•่āļēāļ‡āļĢāļ°āļŦāļ§่āļēāļ‡ HashSet āđāļĨāļ° TreeSet āđƒāļ™ Java
http://crunchify.com/java-hashset-vs-treeset/

-āļ­āļ°āđ„āļĢ āļ„ืāļ­ Java Collections Framework
http://crunchify.com/what-is-java-collections-framework-benefits-of-collections-framework/

-Java Collections (hashCode() āđāļĨāļ° equals())
http://crunchify.com/how-to-override-equals-and-hashcode-method-in-java/

-Java Synchronized Collections (java.util.Collections)
http://crunchify.com/java-synchronized-collections-examples-java-util-collections/

-āļ§ิāļ˜ีāļāļēāļĢāđƒāļŠ้ Map āļัāļš Values (Map Interface)
http://crunchify.com/java-how-to-sort-a-map-on-the-values-the-map-interface-java-collections/

-āđ€āļ›āļĢีāļĒāļšāđ€āļ—ีāļĒāļš Performance āđāļĨāļ°āļ„āļ§āļēāļĄāđāļ•āļāļ•่āļēāļ‡āļĢāļ°āļŦāļ§่āļēāļ‡ IdentityHashMap āđāļĨāļ° HashMap
http://crunchify.com/in-java-what-is-a-difference-between-identityhashmap-and-hashmap-performance-comparision/

-HashMap Vs. ConcurrentHashMap Vs. SynchronizedMap
http://crunchify.com/hashmap-vs-concurrenthashmap-vs-synchronizedmap-how-a-hashmap-can-be-synchronized-in-java/

-āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ”้āļ§āļĒ Key/Value āļ—ี่āļ­āļĒู่āļ āļēāļĒāđƒāļ™ Map āļ”้āļ§āļĒ Java Hashmap (containsKey(Object key) āđāļĨāļ° containsValue(Object value))
http://crunchify.com/java-hashmap-containskeyobject-key-and-containsvalueobject-value-check-if-key-exists-in-map/