DevNote: Spring Boot with Docker

finally java banana have to use “Spring Boot”

โน้วววววววววววววววววววววววววววววววววววววววว!!!

พอดีไปรับ consult ทำให้ต้องยุ่งกับ สปริงบู๊ด ครับ

Continue reading

Posted in Uncategorized | Leave a comment

Patterns Describe Code

ก็พอดี มีคิวต้องไปช่วยสอน Design Patterns ให้กับสมาคมโปรแกรมเมอร์ไทย

ก็เลยได้มีสติมาเรียบเรียงเรื่องที่จะพูด

จริงๆเรื่องนึงที่ผมชอบได้ยินจากเจ้านายเก่าผมบ่อยๆคือ

“ปัญหาของเรา (โปรแกรมเมอร์ไทย) คือไม่มี modeling”

คำพูดนี้ค้างอยู่ในใจมานานพอควร (นานจนแทบลืมนึกถึงมันไปแล้ว…)

แต่ก็เพราะต้องมาสอนไอ้ Design Patterns นี่แหละ

ทำให้คิดถึงคำนี้มันขึ้นมาได้

Continue reading

Posted in Software Engineering | Leave a comment

Readability

พอดีได้ไปช่วย อจ. ศรัณย์ สอนน้องๆที่ลาดกระบังมา

แล้วสิ่งนึงที่สะดุดมากๆในการสอนคือ

“น้องๆกำลังเรียน วิชา principle of programming language

แต่น้องๆแต่ละคนเขียน code ไม่ถึง 500 บรรทัด”

จริงๆนะ สำหรับการเรียนภาษาทั่วไป (เช่น ไทย อังกฤษ จีน ..)

เราว่า จะรู้ว่า “ไพเราะ เพราะพริ้ง”  ของภาษาได้

ก็ต่อเมื่อเราเชี่ยวชาญภาษานั้นแล้ว

ซึ่งคำว่าเชี่ยวชาญ มันไม่ได้มาจากเขียน หรือใช้ภาษานั้น ไม่เกิน 500 บรรทัดหรอก

ดังนั้นการจะดื่มดำกับภาษาโปรแกรม ก็ไม่ต่างกัน

เราต้องฝึกจึงเข้าใจความงามของภาษา

Continue reading

Posted in Software Engineering | Leave a comment

TechNote: Reactive Programming

พอดีเมื่อวาน พี่บาส ถามเรื่อง Reactive Programming ใน Facebook

ซึ่งผมก็เพิ่งได้ดู vdo การสอนของ Reactive Programming

ของ Martin Odersky บน coursera พอดี

ก็เลยขออนุญาติ ถอดความสิ่งที่มาตินชี้แจงเป็นภาษาไทยดังนี้ครับ

ปัจจุบัน demand ของ Technology ไม่เหมือนก่อนแล้ว!!!

มาติน เปรียบเทียบให้ดูดังนี้

Server Node                               10 nodes => 1000 nodes

Response time                          seconds => milliseconds

Maintenance downtime         hours => none

Data volume                               GBs => TBs

จะเห็นว่า เทคโนโลยีวันนี้ chellenge เยอะกว่าตอนผมจบ เมื่อ 10 ปีก่อนมาก

Continue reading

Posted in TechnologyNote | Tagged | 6 Comments

Scala: พิมพ์ ‘@’ ในหน้าเว็ป ของ Play Framework

เนื่องจาก ‘@’ เป็น special charactor สำหรับหน้า html ของ Play Framework

ดังนั้น ถ้าเราพิมพ์ @ เฉยๆ มันจะ compile ไม่ผ่าน เพราะมันเป็น special charactor เอาไว้เรียกตัวแปร

เวลาใช้ให้เราพิมพ์ @@ แทน @ ก็จะใช้งานได้

 

Posted in Scala | Tagged , | Leave a comment

Scala: upload file

เขียนต่อๆ มันส์

scala และ play framework upload file

ทำตามดังนี้

1 เขียน form html รับ upload file

<form action="/upload" method="post" class="form-horizontal">
    
Excel file
Upload
</div> </div> </form>

Screen Shot 2016-08-20 at 11.22.28 AM.png

2 map routes ไปหา controller ที่ไฟล์ routes

POST        /upload                             controllers.web.Controller.uploadFile

Screen Shot 2016-08-20 at 11.26.38 AM.png

3 ที่ controller จับยัดใน path ที่กำหนด

อันนี้ผมยัด excel มันเลยมีคำว่า excel

def uploadFile = Action(parse.multipartFormData) { request =>
  request.body.file("uploadFile").map { excel =>
    val filePath = s"./storage/uploaded/${excel.filename}"
    excel.ref.moveTo(new File(filePath))

    Ok(views.html.page.upload("success"))
  }.getOrElse {
    Ok(views.html.page.upload("fail"))
  }
}

Screen Shot 2016-08-20 at 11.27.28 AM

เย้เย!!!

Posted in Scala | Tagged | Leave a comment

Scala อ่าน excel (อีกรอบ)

ไม่ได้เขียนนาน เขียนซะหน่อย

เราเข้าสู่ยุค scala banana กันแล้วนะครัช!!!

วิธี real excel ด้วย scala บน Play Framework

Continue reading

Posted in Scala | Tagged | Leave a comment

Architecture: Solution Architect

สวัสดีครับ,

ครั้งที่แล้วผมโปรยไว้นิดนึง เรื่อง Solution Architect

แต่ตอนสุดท้าย ดันไปอธิบายเรื่อง Software Architecture

ผมก็กลัวคนจะเข้าใจผิด ว่า Solution Architect มันเหมือนหรือต่างกับ Software Architecture ยังไง?

เพราะเห็นหลายที่ชอบเขียนตำแหน่งลงในนามบัตรว่า Solution Architect

หลายคนก็เรียกตัวเองเป็น Solution Architect

แต่การเป็น Solution Architect จริงๆ นั้นเป็นอย่างไร

Continue reading

Posted in Architecture, Uncategorized | Tagged , | Leave a comment

Architecture: ไม่เขียน spaghetti code

สวัสดีครับ,

ไม่ได้เขียนซะนาน แต่วันนี้ตกผลึกอะไรบางอย่าง เลยอยากเล่าให้ฟัง

จริงๆ อยากเปิดเป็นคอส Design Patterns & Solution Architecture

สำหรับสอนวิธีคิดของคนที่อยากเป็น Solution Architect

แต่คงต้องใช้เวลาเตรียมตัวอีกซักพักใหญ่ๆ

วันนี้เลยมาเขียนเป็น introduction ให้ดูก่อน

เวลาเราเขียน code คุณรู้มั้ยเรากำลังทำอะไรอยู่…???

.

.

.

.

.

.

.

.

Continue reading

Posted in Architecture | Tagged , | Leave a comment

Scala: อะไรที่ Scala เป็น

scala เป็นภาษาที่เริ่มต้นโดย Martin Odersky คนเขียน compiler ให้ java (ไอ้ที่เราพิพม์กัน javac นั่นแหละครับ)

เล่าแค่นี้ ถ้าเป็นเจ้านายเก่าผมเค้าจะเรียกว่า เจ้าพ่อมาทำเอง

แปลว่า ประสบการณ์ของคนเริ่มทำให้ลดการลองผิดลองถูกได้เยอะ

Scala มาจากคำว่า Scalability ทีแปลเป็นไทยว่า “ขยายขีดความสามารถ”

ก็แปลว่า ตัวภาษาสามารถขยายตัวมันเองได้

ถ้าจะเอาให้ชัด Martin เขียนไว้ในหนังสือ “Programming in Scala” ว่า

Scala -> “A language that grows on you” หรือแปลเป็นไทยว่า “ภาษาที่เติบโตด้วยคุณ”

ซึ่งเราสามารถ พัฒนา library เพิ่มให้ Scala ได้ โดยที่ผู้ใช้ยังรู้สึกว่ามันเป็น native library ของ Scala

และเช่นเคยครับ อ่าน Java Banana (ซึ่งขณะนี้กลายเป็น Scala Banana ไปแล้ว)

ก็จะได้หลักคิดของคนที่ออกแบบภาษานี้

(โดยผมเอามาจากหนังสือ “Programming in Scala” ของ Martin Odersky เช่นเคย)

Continue reading

Posted in Scala | Tagged | Leave a comment