狠狠撸

狠狠撸Share a Scribd company logo
Sinatra
TwitterBootstrap
MongoDB
で書籍管理Webシステム
13年8月19日月曜日
書籍管理システム
? 所持している書籍を管理
? 借りたい本?欲しい本を共有
? 誰がどのスキルを有しているか共有
13年8月19日月曜日
ベース技術
? Sinatra
? Twitter Bootstrap
? MongoDB
13年8月19日月曜日
Sinatra
? Ruby製Webフレームワーク
? MCモデル
? ちょー簡単
? 第1回で発表
13年8月19日月曜日
Hello World
require ‘sinatra’
get ‘/’ do
p ‘Hello World!’
end
13年8月19日月曜日
Ruby :Web Server
? WEBrick
? Mongrel -> thin (<= Heroku推奨)
? Phusion Passenger (Standalone)
? Unicorn
old
new
13年8月19日月曜日
WSGI -> Rack
FW
server
FW
server
FW
server
?
13年8月19日月曜日
WSGI -> Rack
FW
server
FW
server
FW
server
WSGI
13年8月19日月曜日
Rack実装
class App
def call(env)
case env[‘REQUEST_METHOD’]
when ‘GET’
[
200,
{ ‘Content-Type’ => ‘text/html’ },
[‘<html><head></head><body>hello</body></html>]
]
end
end
end
引数を1つ持つ
callメソッドを実装
?ステータスコード
?レスポンスヘッダ(Hash)
?レスポンスボディ(Array)
を返す
13年8月19日月曜日
Rackup
require ‘app.rb’
run App.new
$ROOT
- app.rb
- con?g.ru
$> rackup con?g.ru
13年8月19日月曜日
Twitter Bootstrap
? 簡単に綺麗なWebサイトが作れる
? Bootstrap 3 RC 1
? レスポンシブデザイン強化
? 後方互換なし
? 没個性
13年8月19日月曜日
サンプル
13年8月19日月曜日
ドキュメント
13年8月19日月曜日
MongoDB
? NoSQL
? Not Only SQL != RDBMS
? MongoDBはドキュメント指向型
? JSON形式でデータを保存
? スキーマレス
13年8月19日月曜日
NoSQL
? Key-Value型
? Redis / Riak / Memcached
? ドキュメント指向型
? MongoDB / CouchDB
? カラム指向型
? HBase / Cassandra
13年8月19日月曜日
?	

 テーブル
?	

コレクション
{
"_id" : ObjectId("47cc67093475..."),
"username" : "bob",
"address" : {
"street" : "123 Main Street",
"city" : "Springfield",
"state" : "NY"
}
?}
> db.users.find({"address.state" : "NY"})
User collection
13年8月19日月曜日
ROADMAP
13年8月19日月曜日
開発の流れ
? サンプルHTML作成
? Sinatraで静的Webシステム化
? MongoDB連携
? Amazonとの連携
13年8月19日月曜日
サンプルHTML作成
? Bootstrapのサンプルをベースに
? 大まかなレイアウトを決めるレベル
13年8月19日月曜日
上部メニュー
サイドメニュー
メインコンテンツ
アクティビティ欲しいなぁ…
(RSS配信してみたい)
メインはこんな感じで表示?
とりあえず実装が楽な
ASIN使って登録する形で。
13年8月19日月曜日
静的Webシステム化
? Sinatra使って表示
? Webシステムの雛形を作るレベル
? bundler
? haml
? layout.haml
? git
13年8月19日月曜日
layout.haml
%html
%head
%body
= yield
index.haml
%h1
Hello World!
app.rb
require ‘sinatra’
get ‘/’ do
haml :index
end
<html>
<head>
</head>
<body>
<h1>
Hello World!
</h1>
</body>
</html>
13年8月19日月曜日
DB連携
? mongoid
? Object Document Mapper
? mongoid3の情報が少ない…
? 画像保存方法
? Base64文字列として保存
? 文字列として画像表示
class Book
include MongoID::Document
?eld :title, type: String
?eld :author, type: String
?eld :asin
validates_uniqueness_of :asin
end
13年8月19日月曜日
Base64
? Base64エンコード
CGI.escape(Base64.encode64(open(‘hoge.jpg’).read))
? 表示
<img src=/slideshow/library-slideshare/25380042/”data:image/png;base64,IVFHODIUEE....”/>
13年8月19日月曜日
Amazon連携
? 書籍情報をAmazonから取得
? gem ‘amazon-ecs’
? ASINコードベース
? Amazon Product Advertising API
? AWSアカウント
? Amazonアソシエイトアカウント
13年8月19日月曜日
デプロイ
? heroku
? vagrant / chef
13年8月19日月曜日
heroku
? RubyのPaaS
? 最近Javaも行けるらしい
? gitでデプロイ
? heroku toolbeltでコマンド操作
? 公式からダウンロード推奨
13年8月19日月曜日
herokuでハマる①
? カレントディレクトリがロードパスに
含まれない
? ? require ‘app.rb’
? ? require ‘./app.rb’
13年8月19日月曜日
herokuでハマる②
? sinatra/reloader
? sinatra/reloaderはdev環境でのみ動くよ
うにすべきらしい
require ‘sinatra/reloader’ if development?
con?gure :development do
Bundler.require :development
register Sinatra::Reloader
end
13年8月19日月曜日
herokuでハマる③
? Webrick -> thin
? con?g.ru
? Proc?le(foreman)
? modular style -> classic style
web: bundler exec con?g.ru -p $PORT
class App < Sinatra::Base
get ‘/’ do
‘hello world’
end
end
get ‘/’ do
‘hello world’
end
? なぜかmodularだとforeman動かない…
13年8月19日月曜日
でけた
http://blooming-inlet-2675.herokuapp.com/index
13年8月19日月曜日
vagrant/chef
? 時間が…
13年8月19日月曜日
今後
? ログインシステム
? セション管理
? Chefレシピ
13年8月19日月曜日
読む
13年8月19日月曜日
まとめ
? 色々触ってみるの大事
? 便利なものは広まる(Rack / gem)
? だるいのがどこか分かる(heroku logs)
? Google先生は偉大
? Shut the fuck up, write some code.
13年8月19日月曜日
https://github.com/
kaakaa/BookManager
13年8月19日月曜日

More Related Content

What's hot (10)

2015 12-04 about_neovim
2015 12-04 about_neovim2015 12-04 about_neovim
2015 12-04 about_neovim
cohama
?
RVM with Server Environment
RVM with Server EnvironmentRVM with Server Environment
RVM with Server Environment
Yukimitsu Izawa
?
Unite vim
Unite vim Unite vim
Unite vim
Shougo
?
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
Hirata Tomoko
?
搁补颈濒蝉のフロントエンド开発を考える
搁补颈濒蝉のフロントエンド开発を考える搁补颈濒蝉のフロントエンド开発を考える
搁补颈濒蝉のフロントエンド开発を考える
Hirata Tomoko
?
リアルタイム飞别产入门
リアルタイム飞别产入门リアルタイム飞别产入门
リアルタイム飞别产入门
Hiromu Shioya
?
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 decmrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
Yoshito Tanaka
?
20091119冲蝉颈苍补迟谤补を使ってみた
20091119冲蝉颈苍补迟谤补を使ってみた20091119冲蝉颈苍补迟谤补を使ってみた
20091119冲蝉颈苍补迟谤补を使ってみた
ngi group.
?
Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料
kayo tozaki
?
2015 12-04 about_neovim
2015 12-04 about_neovim2015 12-04 about_neovim
2015 12-04 about_neovim
cohama
?
RVM with Server Environment
RVM with Server EnvironmentRVM with Server Environment
RVM with Server Environment
Yukimitsu Izawa
?
Unite vim
Unite vim Unite vim
Unite vim
Shougo
?
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
搁补颈濒蝉チュートリアル(蝉别肠辞苍诲)を终えて
Hirata Tomoko
?
搁补颈濒蝉のフロントエンド开発を考える
搁补颈濒蝉のフロントエンド开発を考える搁补颈濒蝉のフロントエンド开発を考える
搁补颈濒蝉のフロントエンド开発を考える
Hirata Tomoko
?
リアルタイム飞别产入门
リアルタイム飞别产入门リアルタイム飞别产入门
リアルタイム飞别产入门
Hiromu Shioya
?
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 decmrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
mrubyボードを使って こんなことしてみました Kansai.mrb 2014 dec
Yoshito Tanaka
?
20091119冲蝉颈苍补迟谤补を使ってみた
20091119冲蝉颈苍补迟谤补を使ってみた20091119冲蝉颈苍补迟谤补を使ってみた
20091119冲蝉颈苍补迟谤补を使ってみた
ngi group.
?
Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料
kayo tozaki
?

More from Nemoto Yusuke (9)

Mattermost Plugin Bounty Programについて
Mattermost Plugin Bounty ProgramについてMattermost Plugin Bounty Programについて
Mattermost Plugin Bounty Programについて
Nemoto Yusuke
?
骋谤补诲濒别布教活动
骋谤补诲濒别布教活动骋谤补诲濒别布教活动
骋谤补诲濒别布教活动
Nemoto Yusuke
?
Gradle handson
Gradle handsonGradle handson
Gradle handson
Nemoto Yusuke
?
厂肠补濒补を触ってみた
厂肠补濒补を触ってみた厂肠补濒补を触ってみた
厂肠补濒补を触ってみた
Nemoto Yusuke
?
厂痴骋事始め
厂痴骋事始め厂痴骋事始め
厂痴骋事始め
Nemoto Yusuke
?
実践プログラミング DSL
実践プログラミング DSL実践プログラミング DSL
実践プログラミング DSL
Nemoto Yusuke
?
ブログる
ブログるブログる
ブログる
Nemoto Yusuke
?
社内勉強会 - chef
社内勉強会 - chef社内勉強会 - chef
社内勉強会 - chef
Nemoto Yusuke
?
Sinatra slideshare
Sinatra slideshareSinatra slideshare
Sinatra slideshare
Nemoto Yusuke
?
Mattermost Plugin Bounty Programについて
Mattermost Plugin Bounty ProgramについてMattermost Plugin Bounty Programについて
Mattermost Plugin Bounty Programについて
Nemoto Yusuke
?
骋谤补诲濒别布教活动
骋谤补诲濒别布教活动骋谤补诲濒别布教活动
骋谤补诲濒别布教活动
Nemoto Yusuke
?
厂肠补濒补を触ってみた
厂肠补濒补を触ってみた厂肠补濒补を触ってみた
厂肠补濒补を触ってみた
Nemoto Yusuke
?
実践プログラミング DSL
実践プログラミング DSL実践プログラミング DSL
実践プログラミング DSL
Nemoto Yusuke
?

Recently uploaded (11)

LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?

社内勉強会 - 書籍管理Webシステム