SlideShare a Scribd company logo
1 of 70
Download to read offline
Lazy developer
www.symbolet.com
Symbolet
สิ่งที่คิด
www.symbolet.com2
สิ่งที่ลูกค้ามอง
www.symbolet.com3
ความเป็นจริง
อยากกลับบ้าน
ทุกครั้งที่แก้ต้อง restart
server
reproduce บั๊กไม่ได้เจอ
แต่บน production
ไม่ได้กลับบ้านมา 2 วัน
โปรเจคเลย deadline มาแล้ว 1 เดือน
www.symbolet.com4
มันเกิดอะไรขึ้นกับการพัฒนา Software บ้านเรา ?
www.symbolet.com5
lazy developer
www.symbolet.com6
lazy developer
be productive
www.symbolet.com7
but.. How ?
www.symbolet.com8
1. less code
9
less code
solve more problems
10
ธรรมชาติของ html
html
11
html
เปิด tags
ปิด tags
ย่อหน้า
ตัวอักษร < >
12
ธรรมชาติของ html
html
เปิด tags
ปิด tags
ย่อหน้า
ตัวอักษร < >
13
ธรรมชาติของ html
html
เปิด tags
ปิด tags
ย่อหน้า
ตัวอักษร < >
14
ธรรมชาติของ html
ความไม่สอดคล้องกันของ html และ css
class=“navbar” -> .navbar
id=“app” -> #app
html -> slim
lightweight template engine
15 www.symbolet.com
16 www.symbolet.com
js ->
little language that compile to javascript
17 www.symbolet.com
http://coffeescript.org
18 www.symbolet.com
ถ้าต้องการ reuse font และ css หล่ะ ?
css
19 www.symbolet.com
css ->
ใช้ Sass เพื่อเพิ่มความสามารถให้ css
20 www.symbolet.com
21 www.symbolet.com
22 www.symbolet.com
hello world
java
php
ruby
23 www.symbolet.com
find element in array
java
php
ruby
24 www.symbolet.com
find element in array
java
25 www.symbolet.com
find element in array
java php
26 www.symbolet.com
find element in array
java php
ruby
27 www.symbolet.com
“I hope to see Ruby help every programmer
in the world to be productive, and to enjoy
programming, and to be happy. That is the
primary purpose of Ruby language.”
หลักปรัชญา Ruby
–Matz, the creator of Ruby
28 www.symbolet.com
less code
solve more problems
29 www.symbolet.com
less code
solve more problems
less mistakes
30 www.symbolet.com
less code
solve more problems
less mistakes
fast development
31 www.symbolet.com
don’t build from scratch
32 www.symbolet.com
don’t build from scratch
framework
33 www.symbolet.com
Rails
mvc / db-migrate /
scaffold / i18n / log
34 www.symbolet.com
Ruby Stack
slim + sass + coffeescript
nginx / apache
unicorn / passenger
memcached / redis
postgresql / mysql / ..
rails / sinatra / lotus
35 www.symbolet.com
2. use available library
36 www.symbolet.com
Dependency management
maven / gradle
bundler
composer
bower
npm
cocoapod
37 www.symbolet.com
Library = Gem
38 www.symbolet.com
Gem supermarket
https://www.ruby-toolbox.com/categories/by_group
39 www.symbolet.com
Gem supermarket
https://www.ruby-toolbox.com/categories/rails_authentication
40 www.symbolet.com
Devise - Authentication
Features
41 www.symbolet.com
https://github.com/plataformatec/devise
Devise - Authentication
42 www.symbolet.com
Devise - Authentication
43 www.symbolet.com
Devise - Authentication
44 www.symbolet.com
Library networking
Device
45 www.symbolet.com
Library networking
Cancancan
Device
OmniAuth
(Authorization) (OAuth)
Active Admin
(User Management)
46 www.symbolet.com
Ruby supermarket
•Tagging
•Background Job
•Json parser
•Blog engine
•CRM
•Shopping cart
•Cache engine
•PDF Generate
•Payment
•Server monitor
•CDN
•File upload
•A/B Testing
•more more …
47 www.symbolet.com
3. use available tools
48 www.symbolet.com
Query N+1 Problem
Places Categories
m 1
49 www.symbolet.com
Query N+1 Problem
@places = Place.all
place.title place.category.name place.latitude place.longitude
50 www.symbolet.com
Query N+1 Problem
@places = Place.all
1
n
4 queries !!
51 www.symbolet.com
Solve Query N+1 Problem
@places = Place.includes(:place_category)
1
2
tuning query -> 2 queries
52 www.symbolet.com
Solve Query N+1 Problem
Bullet
53 www.symbolet.com
Solve Query N+1 Problem
auto detect
& how to fix
line of code
54 www.symbolet.com
https://github.com/bbatsov/ruby-style-guide
Ruby Guide Style
55 www.symbolet.com
Ruby Guide Style
56 www.symbolet.com
Ruby Guide Style
57 www.symbolet.com
https://github.com/bbatsov/rubocop
Ruby Guide Style
58 www.symbolet.com
Ruby Guide Style
59 www.symbolet.com
Ruby Guide Style
60 www.symbolet.com
4. Automate
61 www.symbolet.com
–Mike Co-founder Instagram
“Replace all components of a car while driving
it at 100 mph”
62 www.symbolet.com
Chef - Provision
63 www.symbolet.com
Vagrant - Test config
64 www.symbolet.com
Docker
65 www.symbolet.com
Mina - Deploy
1. ssh
2. git pull master
3. build
4. create new version
5. restart
66 www.symbolet.com
5. Invest
67 www.symbolet.com
68
www.symbolet.com
www.symbolet.com
ลงทุนกับความรู้
Summary
1. less code
2. use available library
3. use available tools
4. automate
5. Invest
69 www.symbolet.com
lazy developer
be productive
Focus More
70 www.symbolet.com

More Related Content

Similar to Ruby on Rails Lazy developer

รายงาน คอม
รายงาน คอมรายงาน คอม
รายงาน คอม
NooLuck
 
รายงานคอม
รายงานคอมรายงานคอม
รายงานคอม
dekthai
 

Similar to Ruby on Rails Lazy developer (20)

ศักยภาพของนักพัฒนาซอฟต์แวร์ไทย กับ การบริหารจัดการสิทธิเหนือลิขสิทธิ์
ศักยภาพของนักพัฒนาซอฟต์แวร์ไทย  กับ การบริหารจัดการสิทธิเหนือลิขสิทธิ์ศักยภาพของนักพัฒนาซอฟต์แวร์ไทย  กับ การบริหารจัดการสิทธิเหนือลิขสิทธิ์
ศักยภาพของนักพัฒนาซอฟต์แวร์ไทย กับ การบริหารจัดการสิทธิเหนือลิขสิทธิ์
 
Joomla NetDesign2
Joomla NetDesign2Joomla NetDesign2
Joomla NetDesign2
 
IT Skills for Teacher path 2
IT Skills for Teacher path 2IT Skills for Teacher path 2
IT Skills for Teacher path 2
 
Python Programming for Lecturer_RUS_Nonthaburi 17may2019
Python Programming for Lecturer_RUS_Nonthaburi 17may2019Python Programming for Lecturer_RUS_Nonthaburi 17may2019
Python Programming for Lecturer_RUS_Nonthaburi 17may2019
 
Joomla Talk ครั้งที่ 6 Back to basic Joomla and Template
Joomla Talk ครั้งที่ 6  Back to basic Joomla and TemplateJoomla Talk ครั้งที่ 6  Back to basic Joomla and Template
Joomla Talk ครั้งที่ 6 Back to basic Joomla and Template
 
Proposal
ProposalProposal
Proposal
 
Joomla present at Bangkok University
Joomla present at Bangkok UniversityJoomla present at Bangkok University
Joomla present at Bangkok University
 
Copyright license-sipa2
Copyright license-sipa2Copyright license-sipa2
Copyright license-sipa2
 
รายงาน คอม
รายงาน คอมรายงาน คอม
รายงาน คอม
 
Kafka for developer
Kafka for developerKafka for developer
Kafka for developer
 
เปรียบเทียบ RPA Opensource
เปรียบเทียบ  RPA Opensourceเปรียบเทียบ  RPA Opensource
เปรียบเทียบ RPA Opensource
 
4 Docker.pdf 4 Docker.pdf 4 Docker.pdf 4 Docker.pdf
4 Docker.pdf 4 Docker.pdf 4 Docker.pdf 4 Docker.pdf4 Docker.pdf 4 Docker.pdf 4 Docker.pdf 4 Docker.pdf
4 Docker.pdf 4 Docker.pdf 4 Docker.pdf 4 Docker.pdf
 
Web application with PHP
Web application with PHPWeb application with PHP
Web application with PHP
 
รายงานคอม
รายงานคอมรายงานคอม
รายงานคอม
 
Build Website with Joomla! 3.3
Build Website with Joomla! 3.3Build Website with Joomla! 3.3
Build Website with Joomla! 3.3
 
Joomla present at TOT Academy2
Joomla present at TOT Academy2Joomla present at TOT Academy2
Joomla present at TOT Academy2
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Yii framework 2 basic training
Yii framework 2 basic trainingYii framework 2 basic training
Yii framework 2 basic training
 
Red5 streaming
Red5 streamingRed5 streaming
Red5 streaming
 
Docker 101 for developer
Docker 101 for developerDocker 101 for developer
Docker 101 for developer
 

Ruby on Rails Lazy developer