はじめに 今回はいよいよ、アプリケーションを作りながら、OpenIDの実践的な使い方を解説します。サンプルとして作成するアプリケーションは、ミニブログと呼ばれるつぶやきブログです。いわゆるTwitterクローンです。利用者はミニブログにログインして、一言つぶやきます。ブログの一種ですので、当然ユーザ認証が必要になります。普通はパスワードを用いた認証が一般的ですが、今回はOpenIDを用いてユーザを認証するようにアプリケーションを作成していきます。 さて、認証と簡単に言いましたが、認証に必要となる機能をもう少し具体的に列挙してみましょう。 ユーザ登録 サービスを利用するために必要な情報(IDやメールアドレスなど)を利用者に入力してもらい、データベースへ登録する。 ログイン(認証) 利用者が入力した認証情報(パスワードなど)を元に利用者を認証し、ログインの可否を判定する。ログインに成功した利用
今回のゲストは、TwitterのCo-founderであるEvan Williamsさん。対談は2007年11月16日、Web 2.0 EXPOでO'Reilly MediaのTim O'Reillyさんとの「A Conversation with Evan Williams」と題したキーノートのあとに行われました(以下、敬称略)。 (左)Evan Williams氏、(右)小飼弾氏(撮影:平野正樹) 今日は働いています 弾:Hello there! Evan:Hi! 弾:今日はTwitterを見ながら対談しましょう。 Evan:そりゃすごい。今日誰か落ちてるって言ってたけど。 弾:今は動いているみたい。 猫はニャン匹? 弾:Twitterを動かすのに猫は何匹必要?[1] Evan:多過ぎて数えられないよ(笑)。 弾:まじめな問題、Twitterの稼働率ってどれくらい? 当初はず
先日ISUCONが行われていた。 ボクは出場してなくて、Twitterから観戦しているだけだったんだけどisuconタグを眺めていると以下のスライドが流れてきた。 今回2位だったpixivチームのkatatsuyさんがisucon前に作っていた神資料らしい。 読んでみたが、なるほど、広告サーバーの構築時の苦労や知見が素晴らしくまとまっている。 で、スライドの最後のほうにおすすめの書籍が記されててそこに『なるほどUnixプロセス - Rubyで学ぶUnixの基礎』があったので購入して読んでみた。 親プロセス、子プロセス、fork、ファイルディスクリプタ、ゾンビプロセス、デーモンプロセス、プロセスグループ、セッショングループ、シグナル、ストリーム、パイプ、IPC、ソケット、コピーオンライト これらの用語の中で説明できない言葉があるRubyエンジニアはこの本を読むと良い。 どれもUnixプログラ
Help us understand the problem. What is going on with this article? 「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみました。 原文はこちらです。紹介については許可を貰っています。 How we've made Raptor up to 4x faster than Unicorn, up to 2x faster than Puma, Torquebox とても読みやすい英語ですので是非原文も読んでみてください。 How Ruby app servers work Rackアプリケーションの構成についての紹介と、コネクションをどのように扱うのかについて。 prefork/threadingやBlocking I/OおよびEvent I/Oの組み
はじめに 前回、HerokuでFacebookアプリを動かすことのメリットについて解説しました。第2回は、Herokuを利用するための前提となる環境と設定方法を紹介し、Heroku上でRailsのサンプルのアプリを動かすチュートリアルを行います。 今回Ruby on Railsを利用したアプリを動かしますが、Railsアプリの作り方やコマンドについて深くは触れません。Rails3を触ったことがない人は、今回Railsの各コマンドでわからないことがあると思います。その場合はもうすでにたくさんのRailsのチュートリアルなどがありますので、そちらを参考にしていただければと思います。 それでは、Facebookアプリで世界を目指すために、まずはHerokuの基本を学んで行きましょう。 Herokuの基本機能について Herokuは基本機能を無料版として提供しています。この無料版は、単純なアプリで
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
前回、前々回の記事では、Rackの生まれた背景、Rackとは何か、実際にRackアプリケーションを作る際に使えるものをご紹介しましたが、もう一つまだ説明していない重要な要素がRackにはあります。今回は、そのミドルウェアという仕組みについてご紹介します。 ミドルウェアとは ミドルウェアとは何かを一言で言うと、「別なアプリケーションをラップして、リクエストやレスポンスを加工したり、処理を切り換えたりするRackアプリケーション」です。 この仕組みがあることで一体何ができるのでしょうか。Webアプリケーションを作っていると、リクエストやレスポンスをアプリケーションに行く前やアプリケーションの処理の後に加工したくなることはよくあります。例えば、条件に応じてURLの書き換えをしたり、エンコーディングの変換をしたり、Cookieの処理をしたり…といったことが日常茶飯事です。こういう処理を、サーバと
はじめに WebサービスのAPIをコールするような、ネットワークを介した通信処理は、今日では頻繁に行われています。 ローカルマシンのみで完結する処理と比べると、通信が必要な処理は多大な時間が必要になります。相手サーバへの接続、相手サーバ側での処理、相手サーバからの受信など、何もすることなくただ待つだけの時間が存在します。 この無駄な時間の間に他の処理ができるならば、トータルの処理時間を大幅に短縮することが可能になります。これを実現するためにスレッドがよく使われています。しかしマルチスレッドプログラミングはいろいろと注意を払う点も多く、使いにくさを感じている方も多いのではないでしょうか。 今回はReactorパターンという、マルチスレッドとは違ったアプローチで非同期処理を実現してみたいと思います。 複数のwebサーバからHTML文章を取得してみる 同期処理 ひとまず非同期処理を忘れて、シーケ
序 「文字列を文字の列とみなす単純化」について議論がありますが、前提が抜け落ちてるように思うので書くことにします。 そもそもこの話はどのような文脈の上にあるかというと、テキスト処理 (wikipedia:en:Text_processing) の文脈になります。ここでいう「テキスト処理」とは plain text (wikipedia:プレーンテキスト) の検索・加工のことで、ここでは特に UNIX Text Processing の系譜が念頭に置かれています。つまり、複雑な装飾を含むリッチテキストではなく、処理の対象を ASCII 文字列といくつかの制御文字へと抽象化することで、正規表現のような強力な道具を用いた処理を可能とした世界です。UNIX でのお話ですから、ここでの具体的な処理の単位は char であり、全体としては char[] になります。この char の中身は上で述べたと
2014年12月にRuby 2.2がリリースされる予定です1。 Ruby 2.2にはRuby 1.9.1のときに外されたtest-unitというテスティングフレームワークが再びバンドルされる予定です。Rubyのテスティングフレームワーク周りに詳しくない人にはよくわからない状況でしょう。そこで、Rubyのテスティングフレームワークの歴史を説明することで状況を整理します。 名称の整理 この説明の中ではたくさんのテスティングフレームワークが登場します。似たようなものもあるため、最初にテスティングフレームワークの名称を整理します。この説明の中で登場する名称は次の通りです。 RubyUnit Lapidary rubyunit Test::Unit test/unit test-unit miniunit minitest RSpec 違いがわかりますか?ざっくり説明すると次の通りです。 RubyU
DataMapperのコンポーネントは、基本的にクラスではなくモジュールとして提供されているため、アプリケーションで利用するモデルクラスにインクルードして使います。 Resourceモジュールをインクルードすると、自動的にModelモジュールがextendされ、PersonクラスはModelクラスとして振る舞うようになります。これは図1のPersonに相当します。 図1のPerson Mapperに相当する仕組みはRepositoryです。Repositoryは、create, update, delete, read_one, read_manyなどの、データストアに対する基本的な操作のインターフェイスを規定します。Modelクラスは、Repositoryへの参照を持っていて、 Modelクラスによるデータストアへのアクセスは、全てRepositoryを介して行われます。この際、データス
前回のおさらい 第28回ではHadoop Streamingの仕組みについて説明しました。今回は、実際にHadoop Streamingを利用してデータ解析したときの具体的な話や、利用してみて困った(ハマった)Hadoop Streaming特有の問題とその解決法について紹介していきます。 実際に利用してみて困った(ハマった)こと さて、第28回でも紹介しましたが今回Hadoopを利用したのはopen('http://tabemiru.com/2009'); return false;">たべみるのデータ解析のためです。たべみるのデータ解析では、食材名や地域名といった特定の値ごとにデータをまとめる処理が多く、またその処理速度が遅いのが問題だったのですが、このような処理はHadoop上(Ruby)でも比較的簡単に実装することができました。 それで最初は「これはスムーズにHadoop上に処理を
先日 @shyouhei さんのTweetに反応して文字列が文字の列かどうかが言語によって異なるという話をTweetしました。 shyouheiさんの投稿: PythonはどうかしらんがRubyの設計思想は「世の中はシンプルじゃない」だからな。文字列を文字の列とみなす発想その物がすでにRubyからすると過度に世界を単純化しすぎている。 https://twitter.com/shyouhei/status/528106973565165568 もうちょっと言っておくと数値計算で勝ち目のないRubyは文字列処理にめっちゃ注力してるんで。文字列処理こそがRubyの主戦場。そこでRubyが文字列をあえてカタマリで扱ってることにはそれなりの理由というものがある。つまり分解しようとするほうが困りごとが増える。IVSとか。 https://twitter.com/shyouhei/status/528
技術部の小野(@taiki45)です。この記事では簡単なアプリケーション(ブログシステム)の実装を通して、クックパッドで作成・使用しているライブラリのGarage の紹介と Garage を使った RESTful Web API の開発をご紹介したいと思います。 Garage は RESTful Web API を開発するための、 Rails gemified plugins です。Rails プログラマは Garage を使って Rails を拡張することで素早く Web API を開発することができます。Garage は新しくアプリケーションを開発する場合にも、既存の Rails アプリケーションに組み込んで Web API を実装する場合でも使用できます。Garage はリソースのシリアライズやアクセスコントロールなど Web API の実装に必要な機能をカバーしています。 Ruby
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く