Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rapid Web Development by Example
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Szu-Kai Hsu (brucehsu)
May 09, 2012
Programming
3.1k
3
Share
Rapid Web Development by Example
TechWed@CCU #1
Video:
http://zh-tw.justin.tv/alan77916/b/317618710
Szu-Kai Hsu (brucehsu)
May 09, 2012
More Decks by Szu-Kai Hsu (brucehsu)
See All by Szu-Kai Hsu (brucehsu)
Running Life Lean
brucehsu
0
180
Core Unleashed Part II: Introduction to GobiesVM (and STM) @ RubyKaigi 2014
brucehsu
0
2.2k
[RubyConf.tw 2014] Cores unleashed - Exploiting Parallelism in Ruby with STM
brucehsu
0
2.3k
用 Go 打造程式語言執行環境:實例剖析 [OSDC.tw 2014]
brucehsu
3
2.4k
pickbox @ OSDC.tw 2013 Lightning Talk
brucehsu
0
83
Building Web 2.0 APIs
brucehsu
1
160
由Spanner來看Google資料庫的前世今生
brucehsu
4
320
TechWed@CCU #0
brucehsu
2
550
Chromium OS
brucehsu
2
230
Other Decks in Programming
See All in Programming
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
320
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
AIとRubyの静的型付け
ukin0k0
0
510
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
530
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
210
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
150
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
5
1k
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
410
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
2k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
160
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
380
Deep Space Network (abreviated)
tonyrice
0
160
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Visualization
eitanlees
152
17k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
130
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Transcript
Rapid Web Development By Example Presenter: Szu-Kai Hsu (brucehsu)
treehole https://github.com/brucehsu/treehole http://photos.nj.com/photogallery/2010/05/squirrel_in_tree_hole.html
你有聽過安X嗎? MVC
Model
View http://www.freefoto.com/preview/19-26-9/Mountain--Carinthia--Austria
Controller
None
Sinatra
None
D-Live Coding
None
宅
復古、潮
潮到出水
None
None
<this><is><html>orz</html></is></this>
this is html orz
None
None
Variables
Mixin =
D-Live Coding
None
None
None
Database?
None
SELECT isbn, title, price, price * 0.06 AS sales_tax FROM
Book WHERE price > 100.00 ORDER BY title;
Object Relational Mapper
None
比較表 ORM SQL 寫法 安全性 LOC 結語 OO Query 較佳
因人而異 少 多 潮 勝 回不去了 不要怕 加班
None
Define Models
Define Models
D-Live Coding
None
None
None
不能動 不夠潮
JavaScript! not
return $('[id^=del_]').click(function(event) { var post_id; event.preventDefault(); post_id = /del_(\d+)/.exec($ (this).attr('id'))[1];
return $.ajax({ type: 'delete', url: '/delete/post/' + post_id, data: $(this).serialize(), success: function(data) { if (data['success']) { return $('.post_' + post_id).fadeOut(); } else { return alert('Failed!'); } } };
return $('[id^=del_]').click(function(event) { var post_id; event.preventDefault(); post_id = /del_(\d+)/.exec($ (this).attr('id'))[1];
return $.ajax({ type: 'delete', url: '/delete/post/' + post_id, data: $(this).serialize(), success: function(data) { if (data['success']) { return $('.post_' + post_id).fadeOut(); } else { return alert('Failed!'); } } });
None
None
None
None
None
D-Live Coding
None
Demo