SlideShare a Scribd company logo
1 of 30
Download to read offline
Miyazaki
Resistance
を作ってみたよ
  I've developed MiyazakiResistance
おおいし
つかさ

   Tsukasa OISHI
食べログ
                     グルメサイト
                     プログラマ



Tabelog.com
Review site of great restaurants
Programmer
iPhoneアプリ
ver2.0
が出ました


I've released
iPhone application
of Tabelog ver 2.0
本題
Main
Miyazaki
Resistance?
ActiveRecord
のように
Tokyo Tyrantを
使うことが
できます

  Library like ActiveRecord to use Tokyo Tyrant
Tokyo Tyrant?
Tokyo Cabinetと
やりとりするための
ネットワーク
インターフェース



    The Package of network interface to
    Tokyo Cabinet.
Tokyo Cabinet?
Key
Value
Strage
Table構造
【Key】
 id

【Value】
 article_id : integer
 count : integer
 created_at : datetime
記事ID100の
昨日の
アクセス数を
取得する

Search access count of article-ID 100 yesterday.
Ruby API
TTとの接続

rdb =
TokyoTyrant::RDBTBL.new

rdb.open(“localhost”, 1975)
クエリの作成
query =
TokyoTyrant::RDBQRY.new(rdb)

query.addcond(“created_at”,
TokyoTyrant::RDBQRY::QCNUMEQ,
Time.local(2009, 7, 16).to_i)

query.addcond(“article_id”,
TokyoTyrant::RDBQRY::QCNUMEQ,
100)
クエリの作成
query =
TokyoTyrant::RDBQRY.new(rdb)

query.addcond(“created_at”,
TokyoTyrant::RDBQRY::QCNUMEQ,
Time.local(2009, 7, 16).to_i)

query.addcond(“article_id”,
TokyoTyrant::RDBQRY::QCNUMEQ,
100)
データの取得


 article_100_count =  
  query.search.first
メンドくさい...
  orz

    troublesomeness...orz
いいもの
なのに
もったいない!

     Mottainai!
Miyazaki
Resistance!
簡単
ArticleCount.find(
  :first,
  :conditions =>
    [“restaurant_id = ? created_at = ?”,
     100, Time.local(2009, 7, 16)
)
ArticleCount
class ArticleCount <
              MiyazakiResistance::Base

 set_server :localhost, 1975, :write
 set_column :restaurant_id, :integer
 set_column :count, :integer
 set_column :created_at, :datetime

end
Replication
set_server :master, 1975, :write
set_server :slave1, 1975, :readonly
set_server :slave2, 1975, :readonly
DualMaster
set_server :m1, 1975, :write
set_server :m2, 1975, :standby
食べログでも
使っているよ
・各レストランのアクセスカウント

・デュアルマスタ構成

・約1.8億PV
gem
install
tsukasaoishi-
miyazakiresistance
おしまい
 thanks!

More Related Content

Similar to Miyazaki Resistanceを作ってみたよ

Tokyo tyrant
Tokyo tyrantTokyo tyrant
Tokyo tyrantkounan13
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ聡 中川
 
Implements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNetImplements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNetYoshifumi Kawai
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
Visual Studio 2008による 開発環境・プログラミングの進化
Visual Studio 2008による 開発環境・プログラミングの進化Visual Studio 2008による 開発環境・プログラミングの進化
Visual Studio 2008による 開発環境・プログラミングの進化Fujio Kojima
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Shinichi Tomita
 
jazug34 Container Apps Key Vault
jazug34 Container Apps Key Vaultjazug34 Container Apps Key Vault
jazug34 Container Apps Key VaultTakekazu Omi
 
LineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value StorageLineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value StorageSho Nakazono
 
20151002 Android app for Pepper
20151002 Android app for Pepper 20151002 Android app for Pepper
20151002 Android app for Pepper Kenichi Ohwada
 
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情Hirotaka Kawata
 
Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみるRubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる5t111111
 
OpenStack APIを使った新しいアプリケーションモデル
OpenStack APIを使った新しいアプリケーションモデルOpenStack APIを使った新しいアプリケーションモデル
OpenStack APIを使った新しいアプリケーションモデルAPI Meetup
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る健一 辰濱
 
RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニングrecotech
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...Yoshifumi Kawai
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニックmiso- soup3
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんYukari Sakurai
 

Similar to Miyazaki Resistanceを作ってみたよ (20)

Tokyo tyrant
Tokyo tyrantTokyo tyrant
Tokyo tyrant
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
 
RESTful Webサービス
RESTful WebサービスRESTful Webサービス
RESTful Webサービス
 
Implements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNetImplements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNet
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
Visual Studio 2008による 開発環境・プログラミングの進化
Visual Studio 2008による 開発環境・プログラミングの進化Visual Studio 2008による 開発環境・プログラミングの進化
Visual Studio 2008による 開発環境・プログラミングの進化
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携
 
jazug34 Container Apps Key Vault
jazug34 Container Apps Key Vaultjazug34 Container Apps Key Vault
jazug34 Container Apps Key Vault
 
LineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value StorageLineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value Storage
 
20151002 Android app for Pepper
20151002 Android app for Pepper 20151002 Android app for Pepper
20151002 Android app for Pepper
 
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
 
Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみるRubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる
 
React vtecx20170822
React vtecx20170822React vtecx20170822
React vtecx20170822
 
OpenStack APIを使った新しいアプリケーションモデル
OpenStack APIを使った新しいアプリケーションモデルOpenStack APIを使った新しいアプリケーションモデル
OpenStack APIを使った新しいアプリケーションモデル
 
【BS8】GitHub Advanced Security で実践できる DevSecOps 対策
【BS8】GitHub Advanced Security で実践できる DevSecOps 対策【BS8】GitHub Advanced Security で実践できる DevSecOps 対策
【BS8】GitHub Advanced Security で実践できる DevSecOps 対策
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
 
RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニング
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
 

More from Tsukasa Oishi

はてブ砲をくらったときのお話
はてブ砲をくらったときのお話はてブ砲をくらったときのお話
はてブ砲をくらったときのお話Tsukasa Oishi
 
奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法Tsukasa Oishi
 
Iphoneアプリ開発におけるデザインパターン
Iphoneアプリ開発におけるデザインパターンIphoneアプリ開発におけるデザインパターン
Iphoneアプリ開発におけるデザインパターンTsukasa Oishi
 
かんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみましたかんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみましたTsukasa Oishi
 
食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話Tsukasa Oishi
 
Tokyotyrantについて
TokyotyrantについてTokyotyrantについて
TokyotyrantについてTsukasa Oishi
 
はてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよはてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよTsukasa Oishi
 

More from Tsukasa Oishi (8)

はてブ砲をくらったときのお話
はてブ砲をくらったときのお話はてブ砲をくらったときのお話
はてブ砲をくらったときのお話
 
奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法
 
Iphoneアプリ開発におけるデザインパターン
Iphoneアプリ開発におけるデザインパターンIphoneアプリ開発におけるデザインパターン
Iphoneアプリ開発におけるデザインパターン
 
かんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみましたかんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみました
 
食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話
 
Tokyotyrantについて
TokyotyrantについてTokyotyrantについて
Tokyotyrantについて
 
はてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよはてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよ
 
Tdd
TddTdd
Tdd
 

Miyazaki Resistanceを作ってみたよ