link_to 等のヘルパメソッドは sinatra 本体には含まれていませんが、 sinatra_more という gem が用意されています。 install
もともとSinatraではRack::Reloaderが上手く機能しないのでshotgunを使おうという流れだったのですが、諸般の事情でshotgunを使えない状況になったため、本腰を入れてRack::Reloaderを使えるようにする方法を調べました。 結論として、以下のようにすれば使えました。 config.ru 1 configure :development do 2 class Sinatra::Reloader < Rack::Reloader 3 def safe_load(file, mtime, stderr = $stderr) 4 ::Sinatra::Application.reset! 5 use_in_file_templates! file 6 stderr.puts "#{self.class}: reseting routes" 7 supe
前回の続き: [iPhone] Map Kitで遊ぼう:地図を出して現在位置にピンを立てる http://blog.s21g.com/articles/1596 参考: Drawing polyines or routes on a MKMapView (as an MKAnnotationView) – Part 2 http://spitzkoff.com/craig/?p=108 MKAnnotationを実装するクラスを作成 MyAnnotation.h 1 #import <Foundation/Foundation.h> 2 #import <MapKit/MapKit.h> 3 4 @interface MyAnnotation : NSObject <MKAnnotation> { 5 CLLocationCoordinate2D _coordinate; 6 }
ちょうどタイミング良く@maihaさんから、@yuguiさんが 近くに来てるという情報をもらったので、 @yamazさんも交えて、ネストしたリソースを扱うコントローラの問題の答えを得るべく、ミーティングをしました。 問題の定義: モデル層で Post has_many Comment な関係にある時に、 Commentのリストとコメント投稿フォームを含むPosts#show画面(典型的な例としてはブログの一記事表示画面)から、Commentを投稿した場合に、 Comments#createで受け取ると、Commentのsaveに失敗した時に、Post#showを表示したいが、redirect resource(@comment.post) すると、@comment.errorsの情報がロストしてしまう。 Posts#create_commentなどで受け取ると、Commentリソースの処理
Merb-1.0がリリースされた事もあり、使ってみる事にしました。 Merbの使い方といえば、 優しい Merb の育て方 という素晴らしいまとめがありますが、 1.0になっていくつか新しい情報が必要になっている所があるので、 ざっくりと手順をまとめてみます。 まずはアプリを生成 アプリケーションの生成には、merb-genコマンドを使います。 これは、Railsで言えばscript/generateに相当します。 appというのは何を作りたいかを指示するサブコマンドです。 これでひな形は出来上がったので、あとはmerbコマンドでウェブサーバを起動してブラウザでアクセス、といきたい所なのですが、 そうは問屋が卸さないとばかりに罠が待っていました。 Merb1.0 Install & Create First Application & TroubleCommentsAdd Star と、こ
Objective-Cのコードを書いていると、メモリリークを していないかという所が気になりますが、 scan-buildコマンドを使うと、非常に簡単に静的にプログラムを解析して メモリリークを検出することができます。 プロジェクトのディレクトリに移動して、上記コマンドを実行するだけです。 標準出力と/tmp(あるいはオプションで指定したディレクトリに)レポートが出力されます。 メモリリークはInstrumentsでも検出出来ますが、 これもなかなか便利ですね。 See Also [iPhone SDK] iPhone SDK向けのコードを静的コード解析する CotEditor 0.9.4にclang scan-buildで静的解析をかけてみた
1 #import <objc/runtime.h> 2 3 id (*foo_without_bar)(id, SEL); 4 id foo_with_bar(id self, SEL selector) 5 { 6 /* do your work here */ 7 return foo_without_bar(self, selector); 8 } 9 10 // exchange method implementation 11 SEL fooSelector = @selector(foo); 12 Method method = class_getInstanceMethod(class, fooSelector); 13 *(IMP*)&foo_without_bar = 14 method_getImplementation(method); 15
たいしたものではないですが、 iPhoneアプリ開発用に Linked ListとLRUCacheを実装したユーティリティライブラリを公開します。 http://github.com/genki/s21gutils/tree/master 本当はサードパーティフレームワークの形にしたかったんですが、 iPhoneでサポートされてないようなので、ソースとUnitTest用プロジェクトの形で公開します。 ヘッダファイルをコピーとかするのが面倒なので、 Gitでソースを管理してるプロジェクトで使う場合は、 以下のようにGit submoduleとして追加するとメンテナンスが楽かもです。 1 % git submodule add http://github.com/genki/s21gutils/tree/master Classes/s21gutils
DBのデータから、YAML形式のテストフィクスチャを出力するプラグインとして有名なものに、ar_fixturesがある。 が、いろいろ調べてみたら、いくつか問題点があるようなので、elm200さんの記事を参考に、プラグインを自作してみた。 環境 Rails 2.1.1 elm200さんによると、ar_fixturesの問題点は 内部的にto_yamlメソッドを使用しているため、UTF-8の文字列をうまく扱えない 出力されるカラムの順序がバラバラ とのこと。 これをふまえて、プラグインを製作してみる。 elm200さんのコードからの改良点は Rails 2.1への対応 テスト環境にrspecを使用している場合は、YAMLファイルをspec/fixturesディレクトリに出力 の2点。 インストール せっかくなので、作ったプラグイン(ar_extractor)をgithubで公開してみた。
まだMacの起動スクリプトのことをなんと呼べばいいのかわからないのですが、 とりあえずなくて困ったので、 HyperEstraier用の起動スクリプトを作ってみました。 hyperestraier.plist 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 <plist version="1.0"> 4 <dict> 5 <key>Debug</key> 6 <false/> 7 <key>Label</key> 8 <string>org.macports.hyperestraier</string> 9 <key>OnDem
Railsアプリケーションでpaginationといえば、 will_paginate等のプラグインやGemを使うのが一般的だと思います。 しかし、named_scopeでjoinsを使った場合にうまく paginationができなかったので、 named_scopeだけを使ってpaginationする方法を考えてみました。 まずは以下のようなnamed_scopeを作ります。 以下の例はPostクラスで宣言される事を想定しています。 1 named_scope :paginate, proc{|page, per_page| 2 {:offset => per_page*((page || 1).to_i - 1), 3 :limit => per_page}} do 4 def count 5 proxy_scope.count(:group => 'posts.id').s
近頃は、GitHubやcutagemのお陰で、 Gemを作ったり公開したりするのがどんどん簡単になってきています。 そうなると、今までRailsプラグインとして作っていた機能についても、 バージョン管理機能を持ったGemの形で公開したほうが便利かも知れません。 そんな時は、RailsプラグインをGemとして公開することができます。 方法は非常に単純で、Gemの中にrails/init.rbを含めるだけです。 あとは、Gem pluginを利用するRailsアプリケーションの中から、 config.gemでGemの参照を設定すればすぐに利用できます。 rails/init.rbの中身は、通常のプラグインのinit.rbと同様です。
Generatorプラグインを作る方法はこちらの 「Generatorプラグインの作り方」 を参照していただくとして、今回はGenerator Gemの作り方を紹介します。 Generatorの実装自体は、基本的にはプラグインと同様でOKです。 Generatorプラグインの場合、 vendor/plugins/foo_generator/generators/foo/ 以下にfoo Generatorを置くのですが、Generator Gemの場合は foo/以下をそのままGemのルートディレクトリに持ってきます。 つまり、以下のような感じのファイル構成になります。 注意すべき点は以下の二つです。 Gemの名称はfoo_generatorでなければならない。これは、RailsがGenerator GemをLookupするのにGem名のパターンマッチを行っているからです。 foo_gene
安藤さん とドリコムのご好意により、下記日程でOpenID勉強会を開催する運びとなりました。 日時: 4/19(土) 13:30~18:00 場所: 株式会社ドリコム ミーティングルーム (地図) 準備: OpenIDの基礎知識。ノートPC、e-mobileがあるとなお良いです 内容(仮) OpenIDについて参考資料を配布 瀧内 or rakuto氏が概要を説明 適宜突っ込みを入れながら詳細な議論を行う しかし、あまり形式にはこだわらない予定 参加をご希望のかたは、この記事にコメントしていただくか、Twitterで @takiuchi にご一報ください。 それでは、よろしくお願いいたします。 See Also OpenID勉強会のお知らせ OpenID勉強会オープンチャット
ワークパイル(Work pile)は、並列処理の為のアルゴリズムの一種です。 lucille 開発日記: マルチスレッド化: ワークパイル 簡単に云ってしまえば、ワークパイルはサーバ/クライアント機構と似たようなもので、ジョブを処理するスレッド部分ではマスタースレッドから仕事(ジョブ)を受け取って処理し、仕事がなくなるまでループするというものです。 いわゆる生産者消費者問題を解決する手法の一つですね。 ちょっとサンプルコードを見てもらったほうがはやいかも。 workpile.rb 1 require 'thread' 2 3 class Workpile 4 def initialize(num_workers) 5 @queue = Queue.new 6 @workers = ThreadGroup.new 7 8 # Spawn worker threads 9 num
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く