ruby on rails lazy developer

Post on 17-Jul-2015

117 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Lazy developerwww.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 codesolve 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

ruby27 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 codesolve more problems

29 www.symbolet.com

less codesolve more problems

less mistakes

30 www.symbolet.com

less codesolve 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 Stackslim + 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 ProblemPlaces 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 More70 www.symbolet.com

top related