Skip to main content

Posts

Showing posts with the label programming

āļĨāļ­āļ‡āđ€āļĨ่āļ™ SonarQube āļ„āļĨื่āļ™āđ‚āļ‹āļ™āļēāļĢ์āļŠ่āļ§āļĒāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„ุāļ“āļ āļēāļžāļ‚āļ­āļ‡ code

SonarQube  āļ„ืāļ­āđ€āļ„āļĢื่āļ­āļ‡āļĄืāļ­āļŠ่āļ§āļĒāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„ุāļ“āļ āļēāļžāļ‚āļ­āļ‡ source code āļŠ่āļ§āļĒāļŦāļēāļ‚้āļ­āļšāļāļžāļĢ่āļ­āļ‡āđƒāļ™ source code āđ„āļĄ่āļ§่āļēāļˆāļ°āđ€āļ›็āļ™ Bug āļ—ี่āļ™่āļēāļˆāļ°āđ€āļิāļ”āļ‚ึ้āļ™ āļŠ่āļ­āļ‡āđ‚āļŦāļ§่āļ—āļēāļ‡āļ”้āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ ัāļĒāļŦāļĢืāļ­āļāļĨิ่āļ™āđ„āļĄ่āļ”ีāđƒāļ™ source code āļ‚āļ­āļ‡āđ€āļĢāļē (Code Smell) āđāļĨāļ° āļŠ่āļ§āļĒāļ•āļĢāļ§āļˆāļŠāļ­āļšāđ€āļĢāļēāđ€āļ‚ีāļĒāļ™ code āļ—āļ”āļŠāļ­āļšāļ„āļĢāļ­āļšāļ„āļĨุāļĄāļŦāļĢืāļ­āļ”ีāđāļĨ้āļ§āļĒัāļ‡āļĒัāļ‡ (code coverage) Code Smell āđ„āļĄ่āđ„āļ”้āđƒāļŠ้āļ§ัāļ”āļ§่āļē source code āļ™ี้āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āđ„āļ”้āļ–ูāļāļ•้āļ­āļ‡ āļĄี bug āļŦāļĢืāļ­āļŠ่āļ­āļ‡āđ‚āļŦāļ§่āļŦāļĢืāļ­āđ„āļĄ่ āđāļ•่ Code Smell āđƒāļŠ้āļ§ัāļ”āļ–ึāļ‡āļ„ุāļ“āļ āļēāļžāļ‚āļ­āļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļš āđ€āļžื่āļ­āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§่āļē source code āļ—ี่āđ€āļ›็āļ™āļ­āļĒู่āđƒāļ™āļ›ัāļˆāļˆุāļšัāļ™āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļ•่āļ­āđ€āļ•ิāļĄ āđāļ้āđ„āļ‚āļŦāļĢืāļ­āļ—āļ”āļŠāļ­āļšāđ„āļ”้āļ‡่āļēāļĒāļŦāļĢืāļ­āđ„āļĄ่ āđ‚āļ”āļĒāļŦāļĨัāļāđ€āļāļ“āļ‘์āļ—ี่āļ™āļģāļĄāļēāđƒāļŠ้āļ§ัāļ”āđƒāļ™āļŠ่āļ§āļ™āļ‚āļ­āļ‡ Code Smell āļ„ืāļ­ āļ„āļ§āļēāļĄāļ‹้āļģāļ‹้āļ­āļ™āļ‚āļ­āļ‡ code āļĄี code āđāļšāļšāđ€āļ”ีāļĒāļ§āļัāļ™āđ„āļ›āļ‹้āļģāļัāļ™āđƒāļ™āđ„āļŸāļĨ์āđ„āļŦāļ™āļš้āļēāļ‡ āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ€āļ‡ื่āļ­āļ™āđ„āļ‚āđƒāļ™ if āđƒāļŦ้ āļ§่āļēāđ€āļ‡ื่āļ­āļ™āđ„āļ‚āļ•āļĢāļ‡āļ™ี้āļĄัāļ™āļĄีāđ‚āļ­āļāļēāļŠāđ€āļ›็āļ™āđ„āļ›āđ„āļ”้āđ„āļŦāļĄ āđ€āļžāļĢāļēāļ°āļšāļēāļ‡āļ—ีāđ€āļ‡ื่āļ­āļ™āđ„āļ‚āļ—ี่āđ€āļĢāļēāđ€āļ‚ีāļĒāļ™āļ‚ึ้āļ™āļĄāļēāđ€āļžื่āļ­āļ”ัāļāđ„āļ§้āđƒāļ™āļšāļēāļ‡āļ„āļĢั้āļ‡āļĄัāļ™āđāļ—āļšāļˆāļ°āđ„āļĄ่āļĄีāđ‚āļ­āļāļēāļŠāļ—ี่āđ€āļ§āļĨāļēāļĄัāļ™āļ—āļģāļ‡āļēāļ™āđāļĨ้āļ§āđ€āļ‚้āļēāđ€āļ‡ื่āļ­āļ™āđ„āļ‚āđƒāļ™āļŠ่āļ§āļ™āļ™ั้āļ™ āđ€āļ›็āļ™āļ•้āļ™ āļŠāļēāļĄāļēāļĢāļ–āđ„āļ›āļ­่āļēāļ™āļĢāļēāļĒāļĨāļ°āđ€āļ­ีāļĒāļ”āđ€āļžิ่āļĄāđ€āļ•ิāļĄāđ„āļ”้āļ—ี่āļ™ี่ http://www.somkiat.cc/code-smell-internal-class/ āļ™āļ­āļāļˆāļēāļ SonarQube āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļšāļ­āļāļ–ึāļ‡āļ„ุāļ“āļ āļēāļžāļ‚āļ­āļ‡ source code āđ€āļĢāļēāđ„āļ”้āđāļĨ้āļ§ āļĒัāļ‡āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠ้āđƒāļ™āļāļēāļĢāđāļˆāļāđāļˆāļ‡āļ‡...

āļĨāļ­āļ‡āđ€āļĨ่āļ™āđāļĨāļ°āđ€āļĢีāļĒāļ™āļĢู้āļžื้āļ™āļāļēāļ™āļ‚ั้āļ™āļ•้āļ™āļ‚āļ­āļ‡ Spring Framework

** āļŠāļģāļŦāļĢัāļšāđƒāļ„āļĢāļ—ี่āđ„āļĄ่āđ€āļ„āļĒāđ€āļĢีāļĒāļ™āļĢู้āđƒāļ™āļ”้āļēāļ™āļ‚āļ­āļ‡ Java EE āļŦāļĢืāļ­ J2EE āļ­āļēāļˆāļˆāļ°āļĄึāļ™āļ‡āļ‡āļัāļšāļĻัāļžāļ—์āļŦāļ™่āļ­āļĒāļ„āļĢัāļš āļ—āļģāđ„āļĄāļ•้āļ­āļ‡ Spring Spring āđ€āļ›็āļ™ framework āļ—ี่āļ™ิāļĒāļĄāļĄāļēāļāđƒāļ™āļāļēāļĢāļ™āļģāđ„āļ›āļŠāļĢ้āļēāļ‡āļĢāļ°āļšāļšāđƒāļ™āļĢāļ°āļ”ัāļš enterprise āđƒāļ™āđ€āļĢิ่āļĄāđāļĢāļāļ—ี่ Spring āđ€āļิāļ”āļĄāļē āļĄีāļˆุāļ”āļĄุ่āļ‡āļŦāļĄāļēāļĒāđ€āļžื่āļ­āļ—ี่āļˆāļ°āļĄāļēāđāļ—āļ™āļ—ี่āļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡ Java āļ­āļĒ่āļēāļ‡ J2EE (Java 2 Enterprise Edition) āļ—ี่āļĄัāļ™āļ—ั้āļ‡āļŦāļ™่āļ§āļ‡āļ—ั้āļ‡āļ­ืāļ”āđāļĨāļ°āļĒุ่āļ‡āļĒāļēāļ āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āđƒāļ™āļŠ่āļ§āļ™āļ‚āļ­āļ‡ EJB (Enterprise Java Bean) āļ—ี่āļ–ืāļ­āļ§่āļēāđ€āļ›็āļ™āļัāļ™āļĢ้āļēāļĒāļ‚āļ­āļ‡āļ™ัāļāļžัāļ’āļ™āļē āļ—āļģāđƒāļŦ้āļูāļĢูāļŠāļēāļĒ Java āđƒāļ™āļŠ่āļ§āļ‡āļ™ั้āļ™āļ–ึāļ‡āļัāļšāđāļ™āļ°āļ™āļģāļ§่āļē āļ–้āļēāļˆāļģāđ€āļ›็āļ™āļ—ี่āļ•้āļ­āļ‡āļžัāļ’āļ™āļēāļĢāļ°āļšāļšāļ”้āļ§āļĒ J2EE āļˆāļ‡āļ­āļĒ่āļēāđƒāļŠ้ EJB āļ–ึāļ‡āļ‚ั้āļ™āļ–ึāļ‡āļัāļšāļĄีāļŦāļ™ัāļ‡āļŠืāļ­āđāļ™āļ°āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļžัāļ’āļ™āļēāļĢāļ°āļšāļš J2EE āđ‚āļ”āļĒāđ„āļĄ่āđƒāļŠ้ EJB āļ­āļĒ่āļēāļ‡āđ„āļĢāļ็āļ•āļēāļĄāļ—āļēāļ‡ Sun āļœู้āđ€āļ›็āļ™āđ€āļˆ้āļēāļ‚āļ­āļ‡ Java āđƒāļ™āļŠāļĄัāļĒāļ™ั้āļ™ āļ–ึāļ‡āļัāļšāļ•้āļ­āļ‡āļĄāļēāļĨ้āļēāļ‡āļĢāļ°āļšāļš J2EE āđƒāļŦāļĄ่āđƒāļ™āļ›ี 2006 āļˆัāļ”āļāļēāļĢāđƒāļ™ EJB āđƒāļŦ้āđƒāļŠ้āļ‡่āļēāļĒāļ‚ึ้āļ™ āļĄีāļ›āļĢāļ°āļŠิāļ—āļ˜ิāļ āļēāļžāļĄāļēāļāļ‚ึ้āļ™ āđāļĨāļ°āļĄีāļāļēāļĢāđ€āļ›āļĨี่āļĒāļ™āļŠื่āļ­āļˆāļēāļ J2EE āđ€āļ›็āļ™ Java EE (Java Enterprise Edition) āđ€āļžื่āļ­āļĨāļšāļ āļēāļžāļ­ัāļ™āđ€āļĨāļ§āļĢ้āļēāļĒāļ‚āļ­āļ‡āđ€āļ”ิāļĄāđƒāļŦ้āļŦāļĄāļ” āđāļĨāļ°āđ„āļ”้āļĄีāļāļēāļĢāļ™āļģāļŸีāđ€āļˆāļ­āļĢ์āđ€āļ”็āļ”āđ† āļ‚āļ­āļ‡ open source framework āļŦāļĨāļēāļĒāđ† āļ•ัāļ§ āļ­āļĒ่āļēāļ‡āđ€āļŠ่āļ™āđāļāļ™āļŦāļĨัāļāļ‚āļ­āļ‡ Spring āļ­āļĒ่āļēāļ‡ IoC (Inversion of Control) āļŦāļĢืāļ­ OR Mapping (Object Relational Mapping) āļ—ี่āđ€āļ›็āļ™āļ—ี่āļ™ิāļĒāļĄāļ­āļĒ่āļēāļ‡ Hibernate āđāļ•่āļ็āđ„...

Inversion of Control āđāļĨāļ° Dependency Injection

Inversion of Control (IoC) āļ„ืāļ­āļ­āļ°āđ„āļĢ IoC āđ€āļ›็āļ™āļ—āļĪāļĐāļีāļ—ี่āļ§่āļēāļ”้āļ§āļĒ āļāļēāļĢāļĨāļ”āļ„āļ§āļēāļĄāļœูāļāļĄัāļ” (dependency) āļัāļ™āđƒāļ™āļĢāļ°āļŦāļ§่āļēāļ‡ module āđ€āļžื่āļ­āđƒāļŦ้ application āļ‚āļ­āļ‡āđ€āļĢāļēāđāļ้āđ„āļ‚ (maintain) āļ•่āļ­āđ€āļ•ิāļĄ (extensible) āļŦāļĢืāļ­āļ—āļ”āļŠāļ­āļš (test) āđ„āļ”้āļ‡่āļēāļĒāļ‚ึ้āļ™ āļ‹ึ่āļ‡āđ€āļ­āļēāļˆāļĢิāļ‡āđ† IoC āđ€āļ›็āļ™āļ­āļ°āđ„āļĢāļ—ี่āļ—āļģāđƒāļŦ้āđ€āļĢāļēāļŠัāļšāļŠāļ™āđāļĨāļ°āļ‡ุāļ™āļ‡āļ‡āļĄāļēāļāđ† āļ§่āļēāļĄัāļ™āļ„ืāļ­āļ­āļ°āđ„āļĢ āļŦāļĨāļēāļĒāđ† āļ„āļ™āļˆึāļ‡āļĒāļāđƒāļŦ้āļ§่āļē IoC āļ„ืāļ­ Dependency Injection (DI) āļ‹ึ่āļ‡āļˆāļĢิāļ‡āđ† āļĄัāļ™āļ็āđ„āļĄ่āļ–ูāļāļ‹āļ°āļ—ีāđ€āļ”ีāļĒāļ§  Dependency āļ„ืāļ­āļ­āļ°āđ„āļĢ Dependency āļ„ืāļ­āļāļēāļĢāļœูāļāļĄัāļ”āļ—ี่āđ€āļิāļ”āļ‚ึ้āļ™āđƒāļ™āļĢāļ°āļšāļš āđ€āļĄื่āļ­ module āļ™ึāļ‡āļĄีāļāļēāļĢāđ€āļĢีāļĒāļāđƒāļŠ้āļ­ีāļ module āļ™ึāļ‡āļ”้āļ§āļĒāļāļēāļĢāļ­้āļēāļ‡āļ­ิāļ‡ (reference) āļ•āļĢāļ‡āđ† āđāļĨ้āļ§āļ­āļ°āđ„āļĢāļ—ี่āđ€āļĢีāļĒāļāļ§่āļēāļāļēāļĢ āļ­้āļēāļ‡āļ­ิāļ‡ (Reference) āđāļšāļšāļ•āļĢāļ‡āđ†   āļ­āļĒ่āļēāļ‡āļ āļēāļž diagram āļ”้āļēāļ™āļšāļ™ class LogEngine āļĄีāļāļēāļĢāđ€āļĢีāļĒāļāđƒāļŠ้ ConsoleLog āđ‚āļ”āļĒāļ•āļĢāļ‡ āļ‹ึ่āļ‡āļĄāļ­āļ‡āļœ่āļēāļ™ diagram āļ­āļēāļˆāļˆāļ°āđ„āļĄ่āđ€āļŦ็āļ™āļ āļēāļžāļĨāļ­āļ‡āļ”ู code āļัāļ™ public class ConsoleLog { public void openLog(){ //do something to open log } public void log(String message){ //do something to log } public void closeLog(){ //do something to close log } } public class LogEngine { private ConsoleLog log; public LogEng...

āļĨāļ­āļ‡āđ€āļĨ่āļ™ Lambda Expression āļŸีāđ€āļˆāļ­āļĢ์āđ€āļ”่āļ™āđƒāļ™ Java 8

āļ›āļĢāļ°āļ§ัāļ•ิāļ„āļ§āļēāļĄāđ€āļ›็āļ™āļĄāļēāļ‚āļ­āļ‡ Lambda expression Lambda expression āđ„āļĄ่āđƒāļŠ่āļŠิ่āļ‡āđāļ›āļĨāļāđƒāļŦāļĄ่āđƒāļ™āļ§āļ‡āļāļēāļĢ āļ āļēāļĐāļēāđ‚āļ›āļĢāđāļāļĢāļĄ ( Programming Language ) āđ€āļžāļĢāļēāļ° lambda āļĄัāļ™āđ€āļ›็āļ™āđāļāļ™āļŦāļĨัāļāļ‚āļ­āļ‡ āļāļēāļĢāđ€āļ‚ีāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļŠิāļ‡āļŸัāļ‡āļ์āļŠัāļ™ ( Functional Programming ) āļ‹ึ่āļ‡āļĄีāļ­āļēāļĒุāļĄāļēāļ™āļēāļ™āļĄāļēāļāđāļĨ้āļ§ āđāļ•่ Java āđ€āļžิ่āļ‡āļ™āļģāđ€āļ­āļēāļ„ุāļ“āļŠāļĄāļšัāļ•ิāļ™ี้āđ€āļ­āļēāļĄāļēāđƒāļŠ่āļĨāļ‡āđƒāļ™āđ€āļ§āļ­āļĢ์āļŠัāļ™ 8 āļŦāļēāļāļˆāļ°āļāļĨ่āļēāļ§āļ–ึāļ‡āļ—ี่āļĄāļēāļ‚āļ­āļ‡ lambda āļ„āļ‡āļ•้āļ­āļ‡āđ„āļ›āļ”ูāļ—ี่āļ–ึāļ‡āļ—ี่āļĄāļēāļ‚āļ­āļ‡ lambda calculus āļ‹ึ่āļ‡āļ–ูāļāļŠāļĢ้āļēāļ‡āļ‚ึ้āļ™āļĄāļēāļ•ั้āļ‡āđāļ•่āļ›ี 1930 āđ‚āļ”āļĒāļ™ัāļāļ„āļ“ิāļ•āļĻāļēāļŠāļ•āļĢ์āļŠāļēāļ§āļ­āđ€āļĄāļĢิāļัāļ™  Alonzo Church  āđ€āļžื่āļ­āđƒāļŠ้āđƒāļ™āļāļēāļĢāđāļ้āđ‚āļˆāļ—āļĒ์āļ›ัāļāļŦāļēāļ—āļēāļ‡āļ„āļ“ิāļ•āļĻāļēāļŠāļ•āļĢ์āļ—ี่āļĄีāļ„āļ§āļēāļĄāļ‹ัāļšāļ‹้āļ­āļ™ āđƒāļ™āļšāļēāļ‡āļ„āļĢั้āļ‡āļŠāļĄāļāļēāļĢāļ—āļēāļ‡āļ„āļ“ิāļ•āļĻāļēāļŠāļ•āļĢ์āļ—ี่āļĒāļēāļ§āđ„āļ›āļ­āļēāļˆāļˆāļ°āļ—āļģāđƒāļŦ้āđ€āļิāļ”āļ„āļ§āļēāļĄāļ‹ัāļšāļ‹้āļ­āļ™āđ‚āļ”āļĒāđƒāļŠ่āđ€āļŦāļ•ุ lambda calculus āļˆāļ°āļ—āļģāļāļēāļĢāļĒุāļšāļšāļēāļ‡āļŠ่āļ§āļ™āļ‚āļ­āļ‡āļŠāļĄāļāļēāļĢāļ™ั้āļ™āļ­āļ­āļāļĄāļēāđ€āļ›็āļ™āļŸัāļ‡āļ์āļŠัāļ™āļĒ่āļ­āļĒāđ† āđ€āļžื่āļ­āļ—āļģāđƒāļŦ้āļŠāļĄāļāļēāļĢāļ™ั้āļ™āđ€āļ‚้āļēāđƒāļˆāļ‡่āļēāļĒāļ‚ึ้āļ™ āļ•่āļ­āļĄāļēāļŦāļĨัāļāļāļēāļĢāļ‚āļ­āļ‡ lambda calculus āđ„āļ”้āļ–ูāļāļ™āļģāđ„āļ›āđƒāļŠ้āđƒāļ™ Turing Machine āļ‹ึ่āļ‡āđ€āļ›็āļ™āđāļšāļšāļˆāļģāļĨāļ­āļ‡āđƒāļ™āļ­ุāļ”āļĄāļ„āļ•ิāļ‚āļ­āļ‡ Alan Turing  āļ—ี่āļ•่āļ­āļĄāļēāļāļĨāļēāļĒāđ€āļ›็āļ™āļ•้āļ™āđāļšāļšāļ—ี่āļ–ูāļāļ™āļģāđ„āļ›āđƒāļŠ้āđƒāļ™āļāļēāļĢāļœāļĨิāļ•  Von Neumann Machine  āļ‹ึ่āļ‡ Von Neumann Machine āļ•ัāļ§āļ™ี้āđ„āļ”้āļāļĨāļēāļĒāđ€āļ›็āļ™āļ•้āļ™āđāļšāļšāļ‚āļ­āļ‡āļ„āļ­āļĄāļžิāļ§āđ€āļ•āļ­āļĢ์āđ€āļ„āļĢื่āļ­āļ‡āđāļĢāļāļ‚āļ­āļ‡āđ‚āļĨāļāđƒāļ™āđ€āļ§āļĨāļēāļ•่āļ­āļĄāļē āļ—้āļēāļĒāļ—ี่āļŠุāļ”āđāļ™āļ§āļ„ิāļ”āļ‚āļ­āļ‡ lambda calculus āļ็āļ–ูāļ...

Apache Ant

Apache Ant Apache Ant āđ€āļ›็āļ™ project opensource āļ‚āļ­āļ‡ Apache āļ—ี่āļˆāļ°āļŠ่āļ§āļĒāđƒāļŦ้āđƒāļ™āļāļēāļĢ build āđƒāļ™āļāļēāļĢ compile āđāļĨāļ°āļ—āļģāđƒāļŦ้āļ‡āļēāļ™āļ‚āļ­āļ‡ programmer āļ™ั้āļ™āļ‡่āļēāļĒāļĄāļēāļāļ‚ึ้āļ™ āļ‹ึ่āļ‡āđƒāļ™ project āđƒāļ™āļĢāļ°āļ”ัāļš enterprise āļ‚āļ­āļ‡ java āļĄัāļāļˆāļ°āđƒāļŠ้ ant āļŠ่āļ§āļĒāđƒāļ™āļāļēāļĢ build āļĒัāļ™ deploy āđāļĨāļ°āđƒāļ™ IDE Java āđāļ—āļšāļ—ุāļāļ•ัāļ§āļ‚āļ­āļ‡ Java āļ็āđƒāļŠ้ Apache ant āđƒāļ™āļāļēāļĢ build, compile, āļŦāļĢืāļ­ pack āđ€āļ›็āļ™ archive file āļ‹ึ่āļ‡āļœāļĄāļˆāļ°āđ€āļāļĢิ่āļ™āđ€āļ„āļĢื่āļ­āļ‡āļ‚āļ­āļ‡ ant āļ„āļĢ่āļēāļ§āđ†āļ”ัāļ‡āļ”ัāļ‡āļ™ี้āļ„āļĢัāļš āļāļēāļĢāļˆāļ°āđƒāļŠ้ Apache Ant āđ„āļ”้āļ•้āļ­āļ‡āļ•ิāļ”āļ•ั้āļ‡āļ”ัāļ‡āļ™ี้āļ„āļĢัāļš Apache Ant : load here Java RE(āđāļ™āļ°āļ™āļģāļ•ิāļ”āđ€āļ›็āļ™ SDK āđ„āļ›āđ€āļĨāļĒ) 1.4 āļ‚ึ้āļ™āđ„āļ› āļāļēāļĢāļ•ิāļ”āļ•ั้āļ‡ java āļ™ั้āļ™āļ‚āļ­āļ‚้āļēāļĄāđ„āļ›āđ€āļĨāļĒāļĄāļēāļžูāļ”āđ€āļĢื่āļ­āļ‡āļ•ิāļ”āļ•ั้āļ‡ apache ant āļัāļ™āđ€āļĨāļĒ āļ่āļ­āļ™āļ­ื่āļ™āļ™āļģ apache ant āļ—ี่āđ€āļĢāļēāđ‚āļŦāļĨāļ”āļĄāļēāļ™āļģāļĄāļē extract āļĄāļēāļ§āļēāļ‡āđ„āļ§้āļ—ี่āđ„āļŦāļ™āļ็āđ„āļ”้āđāļ•่āļ–้āļēāļˆāļ°āđƒāļŦ้āļŠāļ°āļ”āļ§āļāđƒāļŦ้āļĄāļēāļ§āļēāļ‡āđ„āļ§้āļ—ี่ drive C: āļˆāļēāļāļ™ั้āļ™āļ็āļ•้āļ­āļ‡ set environemnt variable āļ„āļĢัāļš āđƒāļ™ windows āļĨāļ­āļ‡āļ•āļēāļĄ link āļ™ี้āđ„āļ›āļ”ูāļ„āļĢัāļšāļ§่āļēāļ•ั้āļ‡āļĒัāļ‡āđ„āļ‡āđ‚āļ”āļĒāļ—ี่āļŠāļģāļ„ัāļāļ—ี่āļ•้āļ­āļ‡ set āļĄีāļŠāļ­āļ‡āļ„่āļēāļ„āļĢัāļš set ANT_HOME=C:apache-ant-1.7.0 set PATH=%PATH%;%ANT_HOME%bin;.;

Ajax āđ€āļĢีāļĒāļ Cross Domain āđ„āļĄ่āđ„āļ”้

āđ„āļĄ่āļĄีāļ­āļ°āđ„āļĢāļŠāļģāļŦāļĢัāļš entry āļ™ี้āđ„āļĄ่āļĄีāļ­āļ°āđ„āļĢāļ™āļ­āļāļˆāļēāļāļšāļ­āļāļ•ัāļ§āđ€āļ­āļ‡āļ§่āļē Ajax āļĒิāļ‡ request āļ‚้āļēāļĄ Domain āđ„āļĄ่āđ„āļ”้ āđ€āļžāļĢāļēāļ°āļĄัāļ™āđ„āļĄ่āđ„āļ”้āļ­āļ­āļāđāļšāļšāļĄāļēāđ€āļžื่āļ­ request āļ‚้āļēāļĄāđ€āļ„āļĢื่āļ­āļ‡āđ„āļ”้āļ•้āļ­āļ‡āđ€āļĢีāļĒāļāđƒāļ™āđ€āļ„āļĢื่āļ­āļ‡āļ•ัāļ§āđ€āļ­āļ‡āđ€āļ—่āļēāļ™ั้āļ™ āļ”ัāļ‡āļ™ั้āļ™āļāļĢāļ“ีāļˆāļ°āđƒāļŠ้ Ajax āļĒิāļ‡ Webservices āđ€āļ›็āļ™āđ„āļ›āđ„āļĄ่āđ„āļ”้ āļ•้āļ­āļ‡āļŠāļĢ้āļēāļ‡ servlet āļŦāļĢืāļ­ jsp āļ—ี่ call webservices āđāļĨāļ°āđƒāļŠ้ Ajax āđ„āļ›āđ€āļĢีāļĒāļ servlet āļŦāļĢืāļ­ jsp āļ™ั้āļ™āđ†āđāļ—āļ™ ref: http://www.simple-talk.com/dotnet/asp.net/calling-cross-domain-web-services-in-ajax/

HTML 5

āļœāļĄāļĄีāđ€āļŦāļ•ุāļ•้āļ­āļ‡āļĻึāļāļĐāļē HTML 5 āđ€āļžื่āļ­āļ™āļģāļĄัāļ™āļĄāļēāđƒāļŠ้āđƒāļ™ project āđƒāļŦāļĄ่ āļ§ัāļ™āļ™ี้āđ€āļĨāļĒāļĄāļēāļˆāļ” log āļŠิ่āļ‡āļ—ี่āđ„āļ”้āđ€āļĢีāļĒāļ™āļĢู้āđ„āļ› (āļ—āļģāļ„āļ§āļēāļĄāļĢู้āļˆัāļāļัāļš HTML 5 āļĄāļēāļāļāļ§่āļē) āļ‹ึ่āļ‡āļ­āļēāļˆāļˆāļ°āļ”ูāļĨ้āļēāļŦāļĨัāļ‡āđ„āļ›āļŦāļ™่āļ­āļĒ āđ€āļžāļĢāļēāļ°āđ€āļ›็āļ™āđ€āļĢื่āļ­āļ‡āļ—ี่āļ„āļ™āļ­ื่āļ™āđ€āļ„้āļēāļžูāļ”āļัāļ™āļĄāļēāļ•ั้āļ‡āđāļ•่āļ›ีāļĄāļ°āđ‚āļ§้āđāļĨ้āļ§ āđāļ•่āļœāļĄāđ€āļžิ่āļ‡āļĢู้āļˆัāļāļัāļšāļĄัāļ™ āđ€āļžāļĢāļēāļ°āļ่āļ­āļ™āļŦāļ™้āļēāļ™ั้āļ™āļžāļĒāļēāļĒāļēāļĄāļ—āļģāļ•ัāļ§ "āļĒิāļ™āļ”ีāļ—ี่āđ„āļĄ่āļĢู้āļˆัāļ" āđ„āļĄ่āļ­āļĒāļēāļāļˆāļ°āļĒุ่āļ‡āļัāļšāļŠ่āļ§āļ™ design āļ‹ึ่āļ‡āļĄัāļ™āđ€āļ›็āļ™āļŦāļ™้āļēāļ—ี่āļ‚āļ­āļ‡ designer āđ€āļĢāļēāđ€āļ‚ีāļĒāļ™ web application āļ็āđ€āļ‚ีāļĒāļ™āđ„āļ› āđāļ•่āļ§ัāļ™āļ™ี้āđ€āļĨี่āļĒāļ‡āđ„āļĄ่āđ„āļ”้ āļ็āđ€āļĨāļĒāđ€āļิāļ”āļĄี content āļ™ี้āđ€āļิāļ”āļ‚ึ้āļ™ HTML 5 āļĄัāļ™āļ›āļĢāļ°āļĄāļēāļ“āļ§่āļēāđ€āļ­āļē HTML + CSS + JS(javascript) APIs āļ”ัāļ‡āļĢูāļ›āļ”้āļēāļ™āļšāļ™āļ™ั้āļ™āđāļŦāļĨāļ°āļ„āļĢัāļš āļĄัāļ™āļ”ูāđ€āļŦāļĄืāļ­āļ™āđ„āļĄ่āđƒāļŠ่āļŠิ่āļ‡āđƒāļŦāļĄ่āđ€āļĨāļĒ āđ€āļ›็āļ™āļŠิ่āļ‡āļ—ี่āđ€āļĢāļēāļĢู้āđ†āļัāļ™āļŦāļĄāļ”āđāļĨ้āļ§āļ­āļĒ่āļēāļ‡ HTML, CSS āļŦāļĢืāļ­ javascript āđ€āļžีāļĒāļ‡āđāļ•่ W3C āļ™āļģāđ€āļ­āļēāļŠิ่āļ‡āļ—ี่āđ€āļĢāļēāļĢู้āļˆัāļāļ­āļĒู่āđāļĨ้āļ§āļĄāļēāđ€āļžิ่āļĄāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļĨāļ‡āđ„āļ› āđāļĨ้āļ§āļĄāļē pack āđƒāļŦāļĄ่āļˆāļ™āļāļĨāļēāļĒāđ€āļ›็āļ™ HTML5 āļ™ั่āļ™āđ€āļ­āļ‡ āđ€āļĢāļēāļĄāļēāļ”ูāļัāļ™āļ”ีāļāļ§่āļēāđāļ•่āļĨāļ°āļŠ่āļ§āļ™āļ—ี่āđ€āļžิ่āļĄāđ€āļ‚้āļēāļĄāļēāļĄีāļ­āļ°āđ„āļĢāļš้āļēāļ‡ HTML Semantics (New tags, Link Relations, Microdata) āļĄัāļ™āļ–ูāļāļ­āļ­āļāđāļšāļšāļĄāļēāđƒāļŦāļĄ่āđƒāļŦ้āļˆัāļ”āļ§āļēāļ‡ layout āđ„āļ”้āļ‡่āļēāļĒāļ‚ึ้āļ™ āļ‹ึ่āļ‡āđāļ•่āļ่āļ­āļ™āđ€āļĢāļēāđƒāļŠ้ <div> āļŦāļĢืāļ­āđ„āļĄ่āļ็ <span> (āļ•ัāļ§āļ™ี้āđ„āļĄ่āļ„่āļ­āļĒāļĄีāļ„āļ™āđƒāļŠ้āļŦāļĢāļ­āļ) āđāļĨ้āļ§āđ€āļĢāļēāļ็āļāļģāļŦāļ™āļ” id āđ€āļ­āļēāļ§่āļēāļĄัāļ™āļˆāļ°āļŠื่āļ­āļ­āļ°āđ„āļĢ āļĄัāļ™āđ€āļ›็...

Tableless design

Tableless design āđ€āļ›็āļ™āļāļēāļĢāļ­āļ­āļāđāļšāļš layout āļ‚āļ­āļ‡ HTML āđ‚āļ”āļĒāđ„āļĄ่āđƒāļŠ้ table āļĄāļēāļŠ่āļ§āļĒāđ€āļĨāļĒ āđ‚āļ”āļĒāļāļēāļĢāļ—ี่āđ„āļĄ่āđƒāļŠ้ table āđ„āļĄ่āđ„āļ”้āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§่āļēāļˆāļ°āļ•ัāļ” table āļ­āļ­āļāļˆāļēāļ html āđ„āļ›āđ€āļĨāļĒ āđ€āļžีāļĒāļ‡āđāļ•่āđ„āļĄ่āđƒāļŠ้ table āđƒāļ™āļāļēāļĢ design layout āļŠ่āļ§āļ™ table āļ็āđ„āļ›āļ—āļģāļŦāļ™้āļēāļ—ี่āđƒāļ™āļ•āļ­āļ™āđāļŠāļ”āļ‡āļ‚้āļ­āļĄูāļĨāļ­āļ­āļāļĄāļēāđƒāļ™āļ•āļēāļĢāļēāļ‡āđ€āļ—่āļēāļ™ั้āļ™ āļ–้āļēāđ„āļĄ่āđƒāļŠ้āļ•āļēāļĢāļēāļ‡āļˆāļ°āđƒāļŠ้āļ­āļ°āđ„āļĢāđāļ—āļ™āļŦāļĨāļ° āļ„āļģāļ•āļ­āļšāļ•ืāļ­āđƒāļŠ้ <div> āđāļĨāļ° <span> āļŠ่āļ§āļĒāđƒāļ™āļāļēāļĢāļ§āļēāļ‡ Layout āđāļ—āļ™ āđ‚āļ”āļĒ <div> āđƒāļŠ้āđƒāļ™āļ­āļ­āļāđāļšāļšāđ€āļี่āļĒāļ§āļัāļš layout āđƒāļ™āļŠ่āļ§āļ™āļ—ี่āđ„āļĄ่āļĄีāļ•ัāļ§āļ­ัāļāļĐāļĢ āđ€āļŠ่āļ™āļāļēāļĢāđāļš่āļ‡āđ‚āļ„āļĢāļ‡āļŠāļĢ้āļēāļ‡āļ•่āļēāļ‡āđ†āļ‚āļ­āļ‡ web āđ€āļŠ่āļ™āļŠ่āļ§āļ™āļ‚āļ­āļ‡āđ€āļĄāļ™ู āļŠ่āļ§āļ™āļ‚āļ­āļ‡ Banner āļŠ่āļ§āļ™āļ‚āļ­āļ‡ content āļŠ่āļ§āļ™āļ‚āļ­āļ‡ footer āđ€āļ›็āļ™āļ•้āļ™ āļŠ่āļ§āļ™ <span> āļˆāļ°āđ€āļ­āļēāļĄāļēāđƒāļŠ้āđƒāļ™āļāļēāļĢāļˆัāļ”āđ‚āļ„āļĢāļ‡āļŠāļĢ้āļēāļ‡āļ‚āļ­āļ‡āļ‚้āļ­āļ„āļ§āļēāļĄāļ•่āļēāļ‡āđ† āđ„āļ›āļ”ูāđ€āļŦāļ•ุāļœāļĨāļžāļ§āļāļ™ี้āļ—ี่ http://www.divland.com/blog/2007/03/23/div-or-span/ āđāļĨ้āļ§āđ€āļĢāļēāļˆāļ°āļ­āļ­āļāđāļšāļšāļĒัāļ‡āđ„āļ‡ āđ€āļĢāļēāļ็āļ­āļ­āļāđāļšāļšāđ‚āļ”āļĒāļĄāļ­āļ‡āļ§่āļē 1 <div> āđāļ—āļ™āđ‚āļ„āļĢāļ‡āļŠāļĢ้āļēāļ‡āđƒāļ™āļŠ่āļ§āļ™āļŦāļ™ึ่āļ‡ āļ­āļĒ่āļēāļ‡āđ€āļŠ่āļ™ <div id="banner">Banner</div> āļ­āļēāļˆāļˆāļ°āļĒัāļ‡āđ„āļĄ่āđ€āļŦ็āļ™āļ āļēāļžāļĢāļ§āļĄāļ‚āļ­āļ‡āļĄัāļ™āđ€āļĢāļēāļĨāļ­āļ‡āļ”ูāļัāļ™āđ€āļ•็āļĄāđ†āļ§่āļēāļ–้āļēāđƒāļŠ้ <div>āđ€āļ•็āļĄāđ†āđāļĨ้āļ§āļˆāļ°āđ€āļ›็āļ™āļĒัāļ‡āđ„āļ‡