サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
blog.designrecipe.jp
Nanoc で最近の記事一覧を表示できるようにしてみる。このサイトでいうと、以下の部分。 Table of Contents Open Table of Contents 標準で用意されているヘルパーを活用する サイドバーに直近 10 件の記事一覧を表示させる 関連記事 標準で用意されているヘルパーを活用する Nanoc には、標準で幾つかのヘルパーが用意されており、これからやろうとしていることは、そのヘルパーを Mix-In することで容易に実現できる。 Module: Nanoc3::Helpers 上記のヘルパーを利用するためには、事前にヘルパーを include しておく必要がある。 lib 配下の Ruby スクリプトはコンパイル時に全てロードされるので、適当なファイルで必要な Module を include しておけばよい。 ここでは、lib/default.rb にこれから
Nginx に関して、とりあえず最初の一歩としてこれだけ知っておけば何とかなる、という内容をまとめておきたくメモを残すことにした。 Basic Nginx Configuration – Linode Library のページがとてもよくまとめられていたので、このページの内容をベースに書かせてもらった。 全体的な構成 グローバルな設定 サーバの設定 - server ディレクティブ listen ポートの設定 - listen ディレクティブ バーチャルホストの設定 - server_name ディレクティブ リソース(ロケーション)の設定 - location ディレクティブ 設定ファイルの管理 Table of Contents Open Table of Contents 全体的な構成 グローバルな設定 サーバの設定 - server ディレクティブ listen ポートの設定 -
環境を整理していていたついでにメモを残しておく。 irb でシンタックスハイライトなどを行うには Wirble など便利な gem があるが、awesome_print はオブジェクトのデータ構造もわかりやすくインデントして表示してくれる。 michaeldv/awesome_print · GitHub Awesome Print is a Ruby library that pretty prints Ruby objects in full color exposing their internal structure with proper indentation. Rails ActiveRecord objects and usage within Rails templates are supported via included mixins. Table of Conte
Rails のコントローラで利用できるフィルターのような機能を Rails ではないアプリに組み込みたく、実装してみることにした。 ちなみに、Rails のコントローラ内で利用できるフィルタには、以下のものがある。 before_filter: アクションの前に実行 after_filter : アクションの後に実行 around_filter: アクションの前後で実行 あまりよい例を出せないのだが、現在以下のクラスが既に実装されているものとする。 class Greeting def initialize(out = STDOUT) @out = out end def hello @out.puts 'hello!' end end Rails のフィルターのように上記の hello メソッドの前後で実行するための機能をClass Macroで追加できるようにしたい。 実装イメージとし
Ubuntu(TurnKey Linux) で Java 環境を OpenJDK ではなく Sun Java をデフォルトに + Tomcat も 何かと便利な仮想アプライアンスライブラリ。 TurnKey Linux のものをよく使わせてもらっているが、Tomcat のオールインワン環境を提供している Tomcat Applicance では、JDK は OpenJDK を使っている。これを Sun Java 環境に変更し、併せて Tomcat も Sun Java で起動するように変更する。 Standalone Tomcat Appliance - Java Servlet and JSP Platform TurnKey Linux Virtual Appliance Library このアプライアンスライブラリにはデフォルトで Tomcat 6.0.24 と MySQL 5.1
Table of Contents Open Table of Contents Koans とは watchr を使って回答に集中 triangle.rb Koans とは クイズ形式で Ruby を学ぶ Koans。その手法がなかなか凝っている。 Learn Ruby with the EdgeCase Ruby Koans ここでは上記からダウンロードできる 2010/12/23 日版を利用した。 edgecase/ruby_koans - GitHub GitHub でソースは管理されている。 The goal is to learn the Ruby language, syntax, structure, and some common functions and libraries. We also teach you culture. Testing is not just
Google が公開している日本語入力システムの Mozc。 これまで日本語の入力には skk を使い続けていたのだが、少しは世間の流行りにも倣ってみようと、Mozc を使ってみることにした。 Ubuntu 10.10 であれば、 Ubuntu の日本語入力環境を劇的に改善する「Mozc」導入手順 | LiberOS にある方法で簡単に導入が行える。 もうしばらくは、10.04 を使い続けるので、10.04 でインストールする方法をメモしておく。 Table of Contents Open Table of Contents Ubuntu 10.04 LTS での Mozc のインストール Emacs でも Mozc を利用可能に - mozc.el を使う編 Emacs でも Mozc を利用可能に - ibus.el を使う編 Ubuntu 10.04 LTS での Mozc のイン
Table of Contents Open Table of Contents Unicorn とは? Unicorn のインストールと事前準備 Unicorn の設定ファイルを用意する Unicorn サーバを起動する nginx と Unicorn を連携する Unicorn を停止する Unicorn の設定の再読込 サービスの提供を止めずにプログラムの再読込 Unicorn とは? Rails、Rack アプリケーションを動作させるコンテナとしては、Passenger、Thin、Mongrel などの選択肢がある。 それ以外にも Unicorn という Rack アプリケーション向けの HTTP サーバがあり、今回試しに使ってみたのでそのメモ。 Unicorn: Rack HTTP server for fast clients and Unix 設計方針に特徴的な部分があり、以
Refinery CMS というのは、Rails をベースにした CMS。 公式サイトにもテストに関するガイドはあるのだが、テストを開始する前の準備の記載がないのでメモしておく。 How to test Refinery - Guides - Refinery CMS そもそも、Refinery CMS は CMS なので、Refinery CMS 自体のテストを実施する必要があるの?という話もあるかもしれないが、 Refinery CMS は既存の動作を override できたり、通常の Rails アプリの感覚で拡張できたり、はたまた engine の仕組みを使って必要な機能を拡張していける。 いろいろ手をいれていくと新たに追加した部分だけでなく、既存の環境を壊していないよね?と確認したくなるもの。既存環境のテストをできる状態にはしておきたい。 テスト環境の構築には、Refinery
Ubuntu だけに限った話ではないが、海外の IaaS サービス(EC2 など)や仮想専用サーバ(VPS)を使う際に、ロケールやタイムゾーンを日本向けの環境に変更しておく必要がある場合がある。 ここではその簡単な手順をメモしておく。 環境は、Ubuntu 10.04 LTS Server (厳密には、TurnKey Linux)。 Table of Contents Open Table of Contents ロケールの変更 タイムゾーンの変更 ロケールの変更 まずはロケール。以下の状況となっている。 # locale LANG=en_GB LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="
Table of Contents Open Table of Contents Refinery CMS における Engine 独自の機能を Engine を使って作成する 作成された Engine の仕組みを少しみてみる Refinery CMS における Engine Refinery CMS の機能を拡張するには、Engine と呼ばれるものを追加する。 Getting Started with Refinery - Guides - Refinery CMS Engine という言葉を使っているが、その実体は、RAILS_ROOT/vendor/engines に配置されて動作する Rails アプリのミニ版であり、独自のルーティング、コントローラ、ビューなどを持たせることができる。ディレクトリ構成も同様のものとなる。 Refinery 本体も Engine で構成されており、
Rails3 は完全な Rack アプリケーションになったと、ものの本では目を通していたが、実際に試していなかったので確認してみた。 $ rails new rails_in_rack $ cd rails_in_rack Rack 準拠のサーバは、Rack の決まりに従って、RAILS_ROOT/config.ru から読み込む。このファイルの中身を見てみると、 require ::File.expand_path('../config/environment', __FILE__) run RailsInRack::Application RAILS_ROOT/config/environment.rb を読み込んだ後に、RailsInRack::Application を run している。 Rack のエントリポイントと同様になっている。 また、ルーティング先に指定するオブジェクト
テストの無いプログラムは、クリープの無いコーヒー・・・。いや、趣向の問題ではない、おっかなくて使う気になれない。 ここではテストを行う際に、実施条件下で変わる情報、外部リソースを扱う場合などに有効な Stub と Mock の簡単な使い方をメモしておく。 Ruby では、Stub と Mock を扱う場合の選択肢はいろいろあり、また、いろいろ熱すぎて何を選択していいのかわからなくなる。。 他にも RSpec、Mocha などあるが、ここでは、FlexMock を使うことを前提とする。 Flex Mock RubyGems でインストールできるので、インストールしておく。 $ sudo gem install flexmock Mockfight! FlexMock vs. Mocha のスライドなどは、使い方のサンプルとしても参考になる。 Table of Contents Open Ta
Rails をベースにした CMS も多く出ているが、Refinery CMS は既に Rails3 に対応しており、開発も活発に行われている。 Ruby on Rails CMS that supports Rails 3 - Refinery CMS 元となったアプリは 2004 年に作成され、しばらくクローズドな状態で開発されていたようだが、Refinery CMS という名前に変更し、2009 年にオープンソースとしてリリースされている。 philosopy として、以下のような項目が挙げられている。 The Refinery philosophy includes several guiding principles: “The Rails Way” where possible - Refinery embraces conventions used in Rails, all
一昔前は関数型プログラミングには無頓着だったが、Scala を使うようになってその楽しさを覚えた。 Ruby 自体は関数型言語ではないが、関数型言語のテクニックは有効な武器になる。副作用のないプログラミングを意識しつつ、遅延評価、メモ化、無限リストなど活用できる場面ではドンドン使っていければと思う。 ActiveRecord の named_scope を見た時には、なるほど、遅延評価とはこう使うのか、と感心させられたし、また、最近ちょっと見た Rails3 の ActiveRecord の Arel などは、関数型言語の発想が相当盛り込まれているように感じた。 今回は、以前、Scala での無限リスト(遅延 Stream)について書いた内容を Ruby でやってみることにした。 必要な要素だけを必要な時に、オンデマンドリストを作成できる Scala の Stream Ruby の標準ライ
リバースプロキシを必要としており、当初、Apache でいこうかとも思っていたのだが、より軽量(メモリ消費量が少ない)で、パフォーマンスの高い Web サーバがないものかと物色していた。 nginx というロシア製のエンジンがなかなかよさそうなので、しばらく使ってみることにした。ちなみに、読み方は「エンジンエックス」のようだ。 nginx Main ついでに、 Apache + Passenger で運用していた環境も nginx + Passenger に変更した。その際の設定メモを残しておく。 Table of Contents Open Table of Contents 作業の前提 nginx のインストール init script を用意する nginx の設定 nginx + Passenger の設定を行う SSL を有効にする 作業の前提 ここでの作業の前提としては、 既に
Web ベースのプロジェクト管理ツールである Redmin。 さほど苦労せずに導入を行えるものであるが、ベースとなるサーバを用意して、Ruby/Rails 環境を準備して、DB 用意して・・・ など、それなりに時間を要する。 ここでは、Redmine を「まずは試してみたい」、「小規模なプロジェクトですぐにでも使いたい」、というような場合に、virtual appliance を使った手っ取り早く使い始められる方法をメモしておく。 手順としては、以下の流れとなる。 必要なものを準備する 新規に仮想マシンを作成する Redmine 仮想アプライアンスのインストールと起動 スクリーンショットの数が多くなったので、投稿を 2 回に分けることにした。この投稿では、上記手順の 2 まで記載する。 Table of Contents Open Table of Contents Virtual App
辞書アプリにはいろいろあるが、Linux で使用可能な ”StarDict - The best dictionary program in linux and windows” で、英辞郎の辞書を使用できるようにする。 以下は Firefox と StarDict の GUI アプリで英辞郎の辞書ファイルを利用している例。 また、今回、英辞郎の辞書ファイルをどの辞書アプリで使用するか調べていて知ったのだが、この StarDict の辞書ファイルのフォーマットである stardict 形式は、iPhone/iPad などの電子書籍リーダなどでもよく利用されているようだ。 作業の大枠の流れは、以下の通りとなる。 StarDict をインストールする 英辞郎辞書ファイルの取得 英辞郎辞書ファイルを stardict 形式の辞書ファイルに変換 変換した辞書ファイルを配置する 辞書アプリの設定を行
Scala の Web framework と言えば、Lift などが有名だが、コンパクトで Sinatra 風味の Web framework と呼ばれる Scalatra も面白い。 Scalatra | A tiny, Sinatra-like web framework for Scala scalatra/scalatra - GitHub Sinatra は、Rack をベースに、簡潔で分かりやすい記述を可能とした DSL で彩りを加えている。Scalatra は、Servlet をベースに、簡潔で分りやすい記述を可能とした DSL で彩りを加えている。 Hello Wold を表示させる Web アプリケーションは以下のように書ける。 Sinatra は、 require 'rubygems' require 'sinatra' get '/' do "Hello, Worl
Ubuntu 10.04 で形態素解析エンジンである MeCab を使用できるようにする。 Ruby と Java/Scala からも扱えるようにしておく。 Table of Contents Open Table of Contents MeCab のインストール Ruby で MeCab を利用する Java/Scala で MeCab を利用する Java/Scala は GoSen を使う 参考 MeCab のインストール まずは、MeCab 本体のインストール。apt のパッケージでインストールする。 $ sudo apt-get install mecab mecab-ipadic-utf8 libmecab-dev 辞書ファイルは mecab-ipadic-utf8 で入れておいてあげれば、MeCab の辞書として、UTF-8 を使用してくれるようだ。手動で UTF-8 へ変
Twitter では Basic 認証が廃止され、OAuth への移行が完了している。 Twitter ブログ: Twitter アプリケーションと OAuth 過去に用意していたちょっとしたツールで対応していないものがあったので、Basic 認証から OAuth に切り替えを行った時の OAuth に関するメモを残しておく。 Table of Contents Open Table of Contents OAuth の流れ Scala を使って Twitter の OAuth を利用する 2. リクエストトークンの取得 3. 認可用 URL へのリダイレクトとユーザによる認可 4. アクセストークンの取得 5. API の呼び出し OAuth を利用したアプリを利用する利用者としての留意点 参考にしたサイト OAuth の流れ OAuth における主な登場人物は、Consumer、Pr
単語の出現頻度を調べることはよくある。 最近使い始めた Scala で、何気に Ruby でやっていたことをすぐに書くことができなかったので、整理しておく。 Table of Contents Open Table of Contents まずは集計 Ruby 編 まずは集計 Scala 編 出現頻度順で降順にソート Ruby 編 出現頻度順で降順にソート Scala 編 集計と出現頻度によるソートを一気に Scala 編 まずは集計 Ruby 編 まずは、Ruby で、以下のようなデータあるとする。 >> gosanke = ["Goro", "Hideki", "Hiromi", "Hideki", "Goro", "Hideki"] [ [0] "Goro", [1] "Hideki", [2] "Hiromi", [3] "Hideki", [4] "Goro", [5] "Hid
既存のクラス、または、third party のライブラリにメソッドを追加したい時がある。 Ruby と Scala で実現してみる。 例として、文字列のストリームから次の行の文字列を取得するメソッドを追加してみることにする。 Table of Contents Open Table of Contents Ruby は Open Class で Scala は trait を利用 Ruby は Open Class で Ruby の場合だと、Open Class を使って容易に実現できる。標準ライブラリにある StringIO で実施してみる。 >> sio = StringIO.new("line one\nline two") #<StringIO:0x3cc670> >> sio.next_line NoMethodError: undefined method `next_
Table of Contents Open Table of Contents Nanoc とは? Nanoc を使ってみる インストール 新規サイトの作成 コンテンツの作成 関連記事 Nanoc とは? Nanoc とは、静的な Web サイトを生成するための Ruby で書かれたコンテンツビルドツールである。 nanoc: a Ruby site compiler that generates static HTML » home 自身の好みのフォーマットで記載した文書を他のフォーマット(標準では HTML)に変換して出力してくれる。 それだけではない。 作成した文書群を 1 つの文書の集合体(所謂サイト)として管理することができる。 結果として作成されるコンテンツは静的だが、その静的なコンテンツを作成する段階で、最近の文書の一覧、タグ付けされたページの一覧など、文書の属性に合わせた
別館ブログ Design Recipe の別館ブログになります。 Design Recipe テクニカルチームが運用を行っており、Design Recipe で扱っている技術情報の内容がメインとなります。 本サイトに関するお問い合わせは、以下 Social Links の何れかから、お願いいたします。
Radiant の Extension を書いみる。 チュートリアルが存在するので、それにならって手を動かすことにする。 使用している Radiant のバージョンは、0.7.1 になる。 Table of Contents Open Table of Contents カスタム Radius Tags を作成する generator を使用して Extension の雛形を作成 まずは spec を書く Radius Tag を定義する Radius Tag を使用可能とする tag メソッドのブロックの記載方法 追加したカスタム Radius Tags を確認する オプショナル属性 参考サイト カスタム Radius Tags を作成する Radiant には、コンテンツの編集に使用する Radius Tags と言われるパワフルなタグが存在する。 まずは、そのカスタムタグを作ってみよ
地味ではあるが、bash が標準でもっている機能だけで、知っておくと結構便利に bash コマンドを利用できるので、メモしておく。 Table of Contents Open Table of Contents ディレクトリの移動 ディレクトリをスタックして活用する/pushd、popd、dirs 直前のディレクトリに戻る/cd - 引数の再利用 {}(ブレース)を利用したファイルパスの展開 履歴(history)を活用 履歴をインクリメンタル検索/C-r 履歴の残し方をカスタマイズ ディレクトリの移動 ディレクトリをスタックして活用する/pushd、popd、dirs ディレクトリの移動には、pushd、popd、dirs コマンドに慣れると便利。 pushd は移動したディレクトリをディレクトリスタックに追加していく。 popd はその逆で、ディレクトリスタックを削除していく。 $
Rails を触り始めるまではあまり意識していなかった Ruby のクラスインスタンス変数。 「インスタンス変数」、「クラス変数」はメジャーなので言うまでもないのだが、 「クラスインスタンス変数」と言ったところで何だそれ?という感じだった。。 どのような使われ方がされているのか? いろいろな例があるが、例えば、ある日、Rails のコントローラで、コントローラ毎に CRUD 処理の決まりきった同じ処理を何度も書きたくなくなったとする。 そう、これは、以前紹介文を書いた Rails Plugin::ResourceController などのプラグインを使用すればで実現できるのだが、仮にそういうものがなかった時期に自分でこのような機能を追加するとした場合、どうするか? 決まりきった同じ処理を書かないで済むようになるコードを super クラスに書いて継承させる、もしくは Module として
日本発の言語でありながら、Ruby の YAML 標準ライブラリには弱点がある。。 Ruby の YAML ライブラリは、日本語を正しく扱ってくれない。 具体的には、Object#to_yaml を使用した際に、UTF-8 な日本語が binary 扱いになってしまう。 $ irb --prompt simple >> $KCODE => "NONE" >> $KCODE = 'u' => "u" >> str_ja = '日本語' => "日本語" >> str_ja.to_yaml => "--- !binary |\n5pel5pys6Kqe\n\n" この問題を回避するためのライブラリが幾つかある。 kakutani’s yaml_waml at master - GitHub ptb’s ya2yaml at master - GitHub ここでは、yaml_waml を使って
次のページ
このページを最初にブックマークしてみませんか?
『Design Recipe 別館 Blog - Home』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く