ruby on rails lazy developer

70
Lazy developer www.symbolet.com Symbolet

Upload: phamon-symbolet

Post on 17-Jul-2015

117 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Ruby on Rails Lazy developer

Lazy developerwww.symbolet.com

Symbolet

Page 2: Ruby on Rails Lazy developer

สิ่งที่คิด

www.symbolet.com2

Page 3: Ruby on Rails Lazy developer

สิ่งที่ลูกค้ามอง

www.symbolet.com3

Page 4: Ruby on Rails Lazy developer

ความเป็นจริง

อยากกลับบ้าน

ทุกครั้งที่แก้ต้อง restart server

reproduce บั๊กไม่ได้เจอแต่บน production

ไม่ได้กลับบ้านมา 2 วัน

โปรเจคเลย deadline มาแล้ว 1 เดือน

www.symbolet.com4

Page 5: Ruby on Rails Lazy developer

มันเกิดอะไรขึ้นกับการพัฒนา Software บ้านเรา ?

www.symbolet.com5

Page 6: Ruby on Rails Lazy developer

lazy developer

www.symbolet.com6

Page 7: Ruby on Rails Lazy developer

lazy developer

be productive

www.symbolet.com7

Page 8: Ruby on Rails Lazy developer

but.. How ?

www.symbolet.com8

Page 9: Ruby on Rails Lazy developer

1. less code

9

Page 10: Ruby on Rails Lazy developer

less codesolve more problems

10

Page 11: Ruby on Rails Lazy developer

ธรรมชาติของ html

html

11

Page 12: Ruby on Rails Lazy developer

htmlเปิด tags

ปิด tags

ย่อหน้า

ตัวอักษร < >

12

ธรรมชาติของ html

Page 13: Ruby on Rails Lazy developer

htmlเปิด tags

ปิด tags

ย่อหน้า

ตัวอักษร < >

13

ธรรมชาติของ html

Page 14: Ruby on Rails Lazy developer

htmlเปิด tags

ปิด tags

ย่อหน้า

ตัวอักษร < >

14

ธรรมชาติของ html

ความไม่สอดคล้องกันของ html และ css class=“navbar” -> .navbar

id=“app” -> #app

Page 15: Ruby on Rails Lazy developer

html -> slim

lightweight template engine

15 www.symbolet.com

Page 16: Ruby on Rails Lazy developer

16 www.symbolet.com

Page 17: Ruby on Rails Lazy developer

js ->

little language that compile to javascript

17 www.symbolet.com

Page 18: Ruby on Rails Lazy developer

http://coffeescript.org

18 www.symbolet.com

Page 19: Ruby on Rails Lazy developer

ถ้าต้องการ reuse font และ css หล่ะ ?

css

19 www.symbolet.com

Page 20: Ruby on Rails Lazy developer

css ->

ใช้ Sass เพื่อเพิ่มความสามารถให้ css

20 www.symbolet.com

Page 21: Ruby on Rails Lazy developer

21 www.symbolet.com

Page 22: Ruby on Rails Lazy developer

22 www.symbolet.com

Page 23: Ruby on Rails Lazy developer

hello world

java

php

ruby

23 www.symbolet.com

Page 24: Ruby on Rails Lazy developer

find element in array

java

php

ruby

24 www.symbolet.com

Page 25: Ruby on Rails Lazy developer

find element in array

java

25 www.symbolet.com

Page 26: Ruby on Rails Lazy developer

find element in array

java php

26 www.symbolet.com

Page 27: Ruby on Rails Lazy developer

find element in array

java php

ruby27 www.symbolet.com

Page 28: Ruby on Rails Lazy developer

“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

Page 29: Ruby on Rails Lazy developer

less codesolve more problems

29 www.symbolet.com

Page 30: Ruby on Rails Lazy developer

less codesolve more problems

less mistakes

30 www.symbolet.com

Page 31: Ruby on Rails Lazy developer

less codesolve more problems

less mistakes

fast development

31 www.symbolet.com

Page 32: Ruby on Rails Lazy developer

don’t build from scratch

32 www.symbolet.com

Page 33: Ruby on Rails Lazy developer

don’t build from scratch

framework

33 www.symbolet.com

Page 34: Ruby on Rails Lazy developer

Rails

mvc / db-migrate / scaffold / i18n / log

34 www.symbolet.com

Page 35: Ruby on Rails Lazy developer

Ruby Stackslim + sass + coffeescript

nginx / apache

unicorn / passenger

memcached / redis

postgresql / mysql / ..

rails / sinatra / lotus

35 www.symbolet.com

Page 36: Ruby on Rails Lazy developer

2. use available library

36 www.symbolet.com

Page 37: Ruby on Rails Lazy developer

Dependency management

maven / gradle bundler

composer bower npm

cocoapod

37 www.symbolet.com

Page 38: Ruby on Rails Lazy developer

Library = Gem

38 www.symbolet.com

Page 39: Ruby on Rails Lazy developer

Gem supermarket

https://www.ruby-toolbox.com/categories/by_group

39 www.symbolet.com

Page 40: Ruby on Rails Lazy developer

Gem supermarket

https://www.ruby-toolbox.com/categories/rails_authentication

40 www.symbolet.com

Page 41: Ruby on Rails Lazy developer

Devise - Authentication

Features

41 www.symbolet.com

Page 42: Ruby on Rails Lazy developer

https://github.com/plataformatec/devise

Devise - Authentication

42 www.symbolet.com

Page 43: Ruby on Rails Lazy developer

Devise - Authentication

43 www.symbolet.com

Page 44: Ruby on Rails Lazy developer

Devise - Authentication

44 www.symbolet.com

Page 45: Ruby on Rails Lazy developer

Library networking

Device

45 www.symbolet.com

Page 46: Ruby on Rails Lazy developer

Library networking

Cancancan

Device

OmniAuth(Authorization) (OAuth)

Active Admin(User Management)

46 www.symbolet.com

Page 47: Ruby on Rails Lazy developer

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

Page 48: Ruby on Rails Lazy developer

3. use available tools

48 www.symbolet.com

Page 49: Ruby on Rails Lazy developer

Query N+1 ProblemPlaces Categories

m 1

49 www.symbolet.com

Page 50: Ruby on Rails Lazy developer

Query N+1 Problem@places = Place.all

place.title place.category.name place.latitude place.longitude

50 www.symbolet.com

Page 51: Ruby on Rails Lazy developer

Query N+1 Problem@places = Place.all

1

n

4 queries !!

51 www.symbolet.com

Page 52: Ruby on Rails Lazy developer

Solve Query N+1 Problem@places = Place.includes(:place_category)

1

2

tuning query -> 2 queries

52 www.symbolet.com

Page 53: Ruby on Rails Lazy developer

Solve Query N+1 Problem

Bullet

53 www.symbolet.com

Page 54: Ruby on Rails Lazy developer

Solve Query N+1 Problem

auto detect & how to fix

line of code

54 www.symbolet.com

Page 55: Ruby on Rails Lazy developer

https://github.com/bbatsov/ruby-style-guide

Ruby Guide Style

55 www.symbolet.com

Page 56: Ruby on Rails Lazy developer

Ruby Guide Style

56 www.symbolet.com

Page 57: Ruby on Rails Lazy developer

Ruby Guide Style

57 www.symbolet.com

Page 58: Ruby on Rails Lazy developer

https://github.com/bbatsov/rubocop

Ruby Guide Style

58 www.symbolet.com

Page 59: Ruby on Rails Lazy developer

Ruby Guide Style

59 www.symbolet.com

Page 60: Ruby on Rails Lazy developer

Ruby Guide Style

60 www.symbolet.com

Page 61: Ruby on Rails Lazy developer

4. Automate

61 www.symbolet.com

Page 62: Ruby on Rails Lazy developer

–Mike Co-founder Instagram

“Replace all components of a car while driving it at 100 mph”

62 www.symbolet.com

Page 63: Ruby on Rails Lazy developer

Chef - Provision

63 www.symbolet.com

Page 64: Ruby on Rails Lazy developer

Vagrant - Test config

64 www.symbolet.com

Page 65: Ruby on Rails Lazy developer

Docker

65 www.symbolet.com

Page 66: Ruby on Rails Lazy developer

Mina - Deploy

1. ssh 2. git pull master 3. build 4. create new version 5. restart

66 www.symbolet.com

Page 67: Ruby on Rails Lazy developer

5. Invest

67 www.symbolet.com

Page 68: Ruby on Rails Lazy developer

68

www.symbolet.com

www.symbolet.com

ลงทุนกับความรู้

Page 69: Ruby on Rails Lazy developer

Summary

1. less code 2. use available library 3. use available tools 4. automate 5. Invest

69 www.symbolet.com

Page 70: Ruby on Rails Lazy developer

lazy developer

be productive

Focus More70 www.symbolet.com