2010年8月31日火曜日

Google Maps API V3用の GoogleBar (Local Search Control)登場

Google Codeに。

gmaps-api-v3-googlebar - Project Hosting on Google Code
The idea is to create a GoogleBar-like control for GMaps API v3. Since the original GoogleBar is based on the Search API team's Google Maps Local Search Control, we will approximate that functionality, making tweaks where necessary and appropriate.

どんなもんか試してみないと。V2のGoogle Barって意外にいろんなことやってるんだよねー

FFmpegで iPad用の H.264動画をエンコードする例

FFmpegでiPad用ビデオをエンコード - something visible - othersight blog
それでは、iPadで再生できるビデオをFFmpegでエンコードする方法を示します。まずは、エンコード条件は次の制限に従って設定します。

FFmpegのパラメータも少し見ないうちに変わったなあ

iPad用の H.264動画の仕様

アップル - iPad - iPadをよく知るために必要な、すべての情報。
H.264ビデオ:最高720p、毎秒30フレーム、最高レベル3.1のメインプロファイル(最高160kbpsのAAC-LC)、48kHz、.m4v、.mp4、.movファイルフォーマットのステレオオーディオ

こちらも参考に → iPad 向けの動画を作成できる6 つの動画変換ソフト - フリーソフト・無料ソフトの番外編

2010年8月30日月曜日

Google Chart APIで吹き出し画像を作る

Dynamic Icons - Google Chart Tools / Image Charts (aka Chart API) - Google Code
chst=d_bubble_text_small[_withshadow]&chld=<frame_style>|<text>|<fill_color>|<text_color>

こちらも色を指定しないと黒になる。日本語等のマルチバイト文字でもOK。frame_styleは吹き出しの形を選ぶ。

Google Chart APIで Googleマップ用のシンプルなマーカー画像を作る

Dynamic Icons - Google Chart Tools / Image Charts (aka Chart API) - Google Code
chst=d_map_pin_letter[_withshadow] chld=<character>|<fill_color>|<text_color>

色は省略すると黒になる。文字は省略すると文字無しになる。

Google Chart APIで吹き出し画像を動的に生成

Dynamic Icons - Google Chart Tools / Image Charts (aka Chart API) - Google Code
Bubbles come in various combinations of features: large or small size, with or without icon, single line or multi-line text. The following table describes the types of bubbles, and the syntax for each. The description of each parameter value is described below the table.


bubblesを使うのか

Google Maps API V3版の MapIconMaker

WebTecNote - [gmap v3] Googleマップのマーカーを動的に作成する
MapIconMakerというV2のライブラリが元ネタなんだけど、
V3はGIconとかが無くなってて使えなかったからドキュメント見ながらピンタイプのアイコンを出力する関数を書いてみた。
この関数使えばアイコン素材を用意する必要がなくてとてもお手軽です。

Pamera Foxさんが作ったV2版をV3へ移植したらしい。ピンタイプでない矩形角丸のラベルはムリかな?

iPhone / iPadの動画再生の仕様

iPhone 4およびiPad向け動画をHandBrakeで作る « DailyHckr
 iPhone 4の動画再生機能については、Webサイトにその仕様が掲載されている(日本語のiPhoneページ)。ただし、日本語ページには一部誤訳というか不明瞭な表記があるたので、英語版iPhoneページを確認するほうが確実。これによると、iPhone 4の動画再生仕様は下記の通り。

メモメモ

2010年8月27日金曜日

margin: autoによるセンタリングが効かないのは IE6の互換モード

センタリングの不具合(IE/margin):スタイルシート(CSS)辞典 - HTMLタグボード
しかし、IE5.5以前、もしくは5.5以降でも互換モードで書かれた以下の例のようなページは、IEで見た場合、センタリングされず、正しく表示されません。


IE6未満はもういいとして、IE6はまだいるからなー。(切り捨ててもいいぐらいかもしれないが。)

HTML5で書いてればいいけど(というか最近HTML5しか書かないから気付かなかった)、XHTMLでXML宣言つけたら互換モードになってしまうし。

Rubyでインストール済みの場合のみ gemを requireする方法

Ruby/requireできない時を考慮する方法 - TOBY SOFT wiki
requireできないのをrescueする時は、LoadErrorで明示してトラップしないといけません。

あったら使うけど無くても構わない(少なくとも処理は続行する)ようなお助けツールをgemるときに便利。

PHP Ruby Python Perl Java JavaScript CSSなどのフレームワークを大量に比較できるサイト

Best Web-Frameworks » Find and compare PHP, Ruby, Perl, ASP.net, ColdFusion, JS and CSS Frameworks
The frameworks are listed in a clearly table with different color deposited. Descriptive icons show you at a first glance the existing features. Each framework offers a description with a possibility to add a review or download the framework.

すごいなあ

Railsのテストの結果を緑とか赤にして見やすくする

Windowsでテスト結果を見やすくする - Slow Dance
gemからインストールできます。

gem install redgreen


このgemを使うと、テストで「.」(=通過)には緑、「F」は赤で表示されるようになります。便利ですね。

色を着けたいだけというシンプルな要求にシンプルに答えてくれるGemで嬉しい。
シェルの背景色が白(文字色が黒)ならインストールするだけで十分見やすい。

たった8行で簡易Reset & Gridレイアウトを実現するCSSライブラリ

malo - Project Hosting on Google Code
Why should you use Malo?

Because it's:

* Ultra small (compressed is 0,25 kb or 8 lines of CSS! )
* Personalized width of the page in (%, px, em)
* Super flexible.
* Easy to use.

Gridとしてはこれで十分だと思う。

2010年8月26日木曜日

CSSフレームワーク Bluetipsの分かりやすい紹介

調査結果の解説だが、紹介記事としても分かりやすい。

EMXAS IT工房 » CSSフレームワークを解析する
BlueTripは複数のCSSフレームワークから良いところを取り入れて再構成したものとなっています。

Blueprint、Tripoli (名前はここから)、Hartijaの印刷スタイル、960gsの簡潔さ、Elementsのアイコン、を併せた…(HPより)

そこで、元となったCSSフレームワークとBlueTripを比べながら解析してみようと思います。それぞれのCSSファイル構成を見て行きましょう。


.

Railsのテストで assert_not_select()

こんな感じでいいんじゃないかな。
def assert_not_select(css_selector, text, message = nil)
  assert_select(css_selector, {:text => text, :count => 0}, message)
end

どうかな?
属性値を?でテストする場合にはダメか。でも属性値のテストならこれを使わなくても正規表現でなんとかなりそうな気もする。

Railsの View以外で h()を使う方法

Rails の便利メソッド h, html_escape は ERB:Util にあった | METAREAL
render :text => ERB::Util.html_escape(params[:value])

View(ERB)以外でHTMLエスケープする方法。なるほど。
ERB::Util.h()でもOK。

Railsの functinalテストで使う assert_tagは deprecatedらしい

Rails / Testing - WhyNotWiki
Don't use it. It's deprecated in 1.2 in favor of assert_select.

どうりで検索してもあまり見つからわいわけだ。

Fw: ActionMailerのユニットテストの書き方

POSTORO: ActionMailerのユニットテストの書き方
このサイトくらいしか見つからなかった。このサイトが参考にしたらしいサイトはリンク切れ。
あとは公式リファレンス見て調べるか。

ってFromヘッダーのテストの仕方が分からない。
toと同じようにfromをとろうとするとfalseだし、どうするんだろ?実際には送ってないからfalseでいいのかな。でもそれではテストではない。

続 ActionMailerのテストの書き方

Class: ActionMailer::Base
deliveries - Keeps an array of all the emails sent out through the Action Mailer with delivery_method :test. Most useful for unit and functional testing.

あ、やっぱりdeliveriesを使うのが正道なんだ。

ActionMailerのユニットテストの書き方

お手軽なActionMailerのテスト方法 - satoko's blog - s21g
# テスト時に配送したメールの配列を保存する。
ActionMailer::Base.deliveries = []

このサイトくらいしか見つからなかった。このサイトが参考にしたらしいサイトはリンク切れ。
あとは公式リファレンス見て調べるか。

Extがいつの間にか Senchaになっていた

次世代フレームワーク Sencha Touch - C9 tech
ExtJSは彼らの商品名でもありブランド名でもあったが、次世代フレームワークの投入とともに「Sencha」という名前に変更された。もちろん、語源は日本語の「煎茶」である。

Ext Coreは変えないのかな。えっ? Matchaとか?!

IEの印刷設定の余白の大きさの初期値(デフォルト設定)

Strange Machines Internet Explorer の印刷余白(マージン)の初期値
Internet Explorer の印刷余白(マージン)の初期値は、

左(L): 19.05 mm
右(R): 19.05 mm
上(T): 19.05 mm
下(B): 19.05 mm

IE6/7共通の話かな?
IE8で確認したら同じだった。
.

2010年8月25日水曜日

eager loadingとは

eager loadingって何? - おもしろWEBサービス開発日記
tasksテーブルに入っている列の数だけクエリが生成することになり、パフォーマンス的に大変よろしくありません。先にprojectsテーブルからもデータを取得しておけば、クエリの発行回数を減らすことができます。この、「先にデータを取得しておく」ことを eager loading というらしいです。

こんな機能があったんだ。

でも本当に使いたいところで使いこなすにはRailsのソースに深く潜り込まなくちゃいけないかも。それならSQLかそれに近いコードを書いちゃったほうが速い場合が多いからなあ。

Railsでテストを書くときの指針の参考に

Railsでテストを書く勘所 - moroの日記
で、そこでRailsとTDD(BDD)の話なんかしたので、一週間で思ったことをつらつらと。たぶん不正確というか、理解の足りないところもいろいろあるので、そのへんのツッコミをいただけると感謝です。

RSpecが念頭に置かれているが、「伝統的な」Railsのテスト機能でも参考になる。

Rubyで使える assert系メソッド一覧

Test::Unit - Rubyリファレンスマニュアル
各 assertion の最後の引数 message はテストが失敗したときに表示される メッセージ

assert_not_equalはあるのに、assert_not(あるいはassert_false)は無いんだー

Excelでテスト手順を書くとそれを Seleniumで自動実行してくれるツール

"Excelenium"(エクセレニウム)で,快適な自動回帰テストを  (Seleniumのテストスクリプトとテスト仕様書を自動生成) - 主に言語とシステム開発に関して
テスト仕様を書くだけで,仕様書自身がテストを自動でやってくれる。

それがExcelenium(エクセレニウム)。

けっこういいんじゃない?話題になっていないのはどうしてだろう

mod_rewriteで特定のパターンを除外する方法

OZACC.blog: mod_rewriteの否定パターン
RewriteRule [C] 使わないでも、RewriteCond %{REQUEST_URI} !^/notrewrite/ とかを前置すればいけないかしら?

色々やり方あるけどすぐ忘れちゃう。

Railsで URLエンコードする方法いろいろ

Ruby on RailsでURLエンコード・デコードする
Ruby on RailsでURLエンコード・デコードする

URIを使う方法と、ERB::Utilを使う方法と、CGIを使う方法。
URIの場合、内容によっては第2引数が必要(参考:RailsのURLエンコード方法 - おもしろWEBサービス開発日記Ruby On Rails ピチカート街道 - rubyでURLエンコード -)。

2010年8月24日火曜日

Railsの Fixtureで 省略したときに自動で振られるIDは

ラベルの文字列のハッシュらしい。

Foxy fixtures (Rails 2.2.2)
ただ、一つ気になっていたのは、idが85969009とか、巨大な整数になることです。しかし、今日知ったのですが、これはラベルの文字列のハッシュだったんですね。これは、実に便利で、この例は
'Rosaceae'.hash.abs -> 85969009 なのですが、(私のシステムの場合ですが)
Family.find('Rosaceae'.hash.abs)と書けるわけです。

なるほど。

Railsのテストで Fixtureで作ったデータを簡単に呼び出す方法

Class: Fixtures
Alternatively, you may enable auto-instantiation of the fixture data. For instance, take the following tests:

test "find_alt_method_1" do
assert_equal "Ruby on Rails", @web_sites['rubyonrails']['name']
end

test "find_alt_method_2" do
assert_equal "Ruby on Rails", @rubyonrails.news
end

In order to use these methods to access fixtured data within your testcases, you must specify one of the following in your ActiveSupport::TestCase-derived class:

* to fully enable instantiated fixtures (enable alternate methods 1 and 2 above)

self.use_instantiated_fixtures = true

* create only the hash for the fixtures, do not ‘find’ each instance (enable alternate method 1 only)

self.use_instantiated_fixtures = :no_instances

self.use_instantiated_fixturesの設定が必要。データが多いとパフォーマンスに影響があるみたい。

Railsの Fixtureでは関連のあるモデルを YAMLのラベルでも指定できる

Class: Fixtures
Add a few more monkeys and pirates and break this into multiple files, and it gets pretty hard to keep track of what‘s going on. Let‘s use labels instead of IDs:

### in pirates.yml

reginald:
name: Reginald the Pirate
monkey: george

### in monkeys.yml

george:
name: George the Monkey
pirate: reginald

ID自動生成した場合(YAMLにIDを書かないと981023448とか自動生成される)、どうやって関連付けるのかと思ったらラベルを指定すれば、いい感じに処理してくれる。
「pirate_id: 1」の代わりに「pirate: ラベル」という風に書く。

via Rails の fixtures の書き方を整理してみる

Railsの Fixtureの YAMLには Rubyのコードもかけるらしい

Class: Fixtures
Some times you don‘t care about the content of the fixtures as much as you care about the volume. In these cases, you can mix ERb in with your YAML or CSV fixtures to create a bunch of fixtures for load testing, like:

<% for i in 1..1000 %>
fix_<%= i %>:
id: <%= i %>
name: guy_<%= 1 %>
<% end %>

これは使えるかも

2010年8月23日月曜日

Rails 2.3では テストのassert_validは使えない

assert_valid in unit tests after upgrade to rails 2.3 doesn't work - Ruby on Rails: Talk | Google グループ
It was deprecated at 2.2.2
- "assert_valid is deprecated. Use assert record.valid? instead"

代わりに assert(object.valid?)しろと。まあ確かに文字数はそれほど変わらず、分かりにくくもない。むしろassert_validの存在が冗長だったのか。

既にあるテストに対してはassert_validヘルパを自作して対応。

PHPは 5.4へ

Annoucing PHP 5.4 Alpha 1 - Do You PHP はてな
2010/09/01にリリースぅ?

バージョン6の開発がポシャったPHPは、5.3の次は5.4になるみたい。
6になる予定だったものを元にするのかな。

jQueryの CSSセレクター記法の一覧

Selectors - jQuery API 1.4.2 日本語リファレンス - StackTrace
Selectorsは、要素を選択するためのjQuery表現です。 簡潔な表現で、DOM要素を取得したり、jQueryオブジェクトを生成することができます。

:contains(セレクタ)とか:has(セレクタ)とかすごいなあ。便利そう。

2010年8月20日金曜日

YUI3に Grids.cssが戻ってくる

Library Examples: CSS Grids
CSS Grids: Examples

Building Pages with YUI CSS Grids

* Using Units: Each unit has a className that provides its percentage width.
* Fixed Page Template: This is a template for creating fixed-width layouts.
* Fluid Page Template: This is a template for creating fluid layouts.

YUI3リリース直前にDeprecatedになって以来、ファイル自体は存在しているもののリファレンスページ等では無いものとして扱われていたGrids.cssがやっと(YUI3.2ぐらいで)復活するみたい。

YUI2のGirds.cssのように全体を#doc, #hd, #bd, #ftで分けたりしないで、あくまでもグリッドレイアウト専門になるようだ。
ページ全体のセンタリングすらしないとは。ページ全体のセンタリングは body{ margin: 0 auto }でいいじゃんということらしい。影響(問題)があるのはIE6未満だけ?

Reset系 CSSの本家?

CSS Tools: Reset CSS
If you want to use my reset styles, then feel free! It's all explicitly in the public domain (I have to formally say that or else people ask me about licensing). You can grab a copy of the file to use and tweak as fits you best

有名みたい。YUIのReset.cssと違いはあるのかな。

2010年8月19日木曜日

ここの画像(アイコン等)素材はけっこういいかも

ここ → Free Images from Ushikai WEB

可愛らしい感じでいい感じ。

商用サイトでもFreeで使えるみたい。ただし受注したWeb制作の場合はダメ?

Passenger (mod_rails)と Apacheの mod_deflate (gzip圧縮)は共存できるらしい

mod_deflate and mod_rails? - Phusion Passenger Discussions | Google グループ
> Quick question: do mod_deflate and mod_rails work together fine? Or
> are there any known problems/caveats with this combo?

There are no known problems.

Phusion社員からの回答?
.

Apacheの mod_cacheを使う場合の注意点

Apache の mod_cache で日記の高速化に挑戦してみた - まちゅダイアリー(2010-06-26)
PC, 携帯, スマートフォンで異なるキャッシュを返してくれる(PCでアクセスしたときに携帯用の画面が表示されることはない)のはいいんだけど、 PC の User-Agent なんてほとんどバラバラなんだから、実質的にキャッシュにヒットする可能性はほとんどないという状態。 ダメじゃん。

ダメじゃん。PCのみならUser-Agentを無視する設定にするのが常道なのかなあ。

Railsは同じ内容のページへの2度目以降のアクセスにはブラウザキャッシュを使わせるらしい

ricollab Web Tech Blog » StL
で、調べてみたところ、答えは response body 全体の MD5 ハッシュでした。

つまり、
  1. 1度目のアクセス:HTTP Response HeaderのEtagとして、Response BodyのMD5を付ける。
  2. 2度目以降のアクセス:ページ生成後、Response BodyのMD5を生成。HTTP Request HeaderのEtagと同じなら304 Not Modified。

なるほど、賢いかも。
ページ生成はしちゃってる訳で、DBアクセスとかも発生してる訳で、サーバリソースの節約にはなってないけど、それでもResponseのネットワーク転送量だけは節約できる。

これってApacheとかのWebサーバが実装しててもおかしくない機能だね。

postgresは Covering Indexによる高速検索ができないらしい

index-only (別名 index covering) - taediumの日記
tgkさんのとこで、PostgreSQLは「インデックスだけ見てデータは見ない」ということができないらしいという話があり、これが気になっていました。

ちょっとショック。


ところで、
ところで、「インデックスだけ見てデータは見ない」機能なんですが、一言でバシッと言えないとわかりにくいですよね。下の本ではindex-onlyと呼んでいます。教科書として使われている本らしいのでこれに倣えばいいよね。これからはindex-onlyと呼んでいこうと思います。(MySQLSQL Serverではindex coveringとかcovering indexとか呼んでいますけどね。)

名無しで扱われてることも多い。
Covering Index! Covering Index! Covering Index!

2010年8月18日水曜日

IEで 200 OKでない場合にもWebページを表示する方法

IEは404 Not Foundや403 Forbiddenなどの時に、IE独自のエラーページを表示してしまう。
でも513バイト以上の表示データがある場合、独自ページでなく送信されてきたページを表示するらしい。

Internet Explorerで出るエラー
(注) サーバが長いエラーメッセージ(513バイト以上)を出力する場合には、IEは簡易表示ではなく、サーバのメッセージを表示する仕様になっている(参考1、参考2)。AN HTTPDの場合には 512バイト以下のメッセージのときもあり、本来のメッセージが隠されてしまうことがある。


.

CSSで IEのボタンを立体的に見せる方法

IEのFilter、waveを使って立体的に - Domo-Domo
freqは波の数で、lightstrengthが光の強さ加減で

30~50ぐらいが丁度良かった。

透過とかグラデーションよりこれの方がシンプルでかつ見栄えが良い

DD_Roundiesは IE8で動かない

POSTORO
やってみるか

なんと。でもmetaでIE=7もなあ。

jQuery UIの buttonで角丸するには DD_roundies?

Achieving Rounded Corners in Internet Explorer for jQuery UI with DD_roundies | Filament Group, Inc., Boston, MA
jQuery UI is built upon a powerful CSS Framework, including round corners that utilize CSS3's border-radius property. Unfortunately, CSS3 border-radius is only supported by Safari and Firefox, leaving browsers such as Internet Explorer to gracefully degrade to square corners.

やってみるか

jQuery Cornerプラグインは jQuery UIの buttonに効かなかった

POSTORO
jQueryで角丸するならこれが一番メジャー?
JQuery Corner Demo

jQuery Corner Demo


なのかな?

a要素をbuttonにしたのとかには効いたけど、肝心のsubmitボタンなどに効かなかった。詳細は調べてない。
.

jQueryで角丸するならこれが一番メジャー?

JQuery Corner Demo
jQuery Corner Demo

なのかな?

ところでこのページ、JavaScriptファイルをgithubから直読みしてる。

IE9とその他のブラウザの 角丸(border-radius)の比較

IE9 Platform Previewを触ってみました-border-radius編その1 - いちてく
やっぱり、頑張りました!といっている丸角。IEBlogでも紹介されていましたが、全部の線種で試してみました。

おお、IE9は破線でも綺麗に角丸だ。

migrateで indexを作成する

Ruby on Rails : migration 機能リファレンス - WebOS Goodies
add_index(table_name, column_name, options)

検索用のインデックスを追加します。インデックスの名前はデフォルトで "<テーブル名>_<最初のカラム名>_index" になりますが、options に :name を指定することで任意の名前を指定できます。引数の意味は以下のとおりです。

現在(Rails2.3)の場合、indexの名前は "index_<テーブル名>_on_<列名>"になるようだ。

もうちょっと凝ったindexを作る場合、execute()でCREATE文を発行擦る必要がある。

Google Calendarとも連携できる jQueryのカレンダープラグイン

FullCalendar - Full-sized Calendar jQuery Plugin
FullCalendar is a jQuery plugin that provides a full-sized, drag & drop calendar like the one below. It uses AJAX to fetch events on-the-fly for each month and is easily configured to use your own feed format (an extension is provided for Google Calendar).

画面いっぱいに表示するカレンダー。formへの日付入力補助(Date Picker)とは違う。

postgresはテーブルを継承できるらしい

PostgreSQLでテーブルの継承 - 都元ダイスケ IT-PRESS
PostgreSQLには、テーブルの継承なんていう、とんがった機能があります。前衛的~。

created_atとかupdated_atとか登録/更新者IDとか登録/更新IPアドレスとか、ビジネスドメイン共通の決め事的な列がある場合には便利かもね。

2010年8月17日火曜日

Railsで blank?の反対は present?

お題目うぉっち:unlessのelseはわかりにくいのだ
そこで初めて知ったのだけど、blank? の反対の意味の present? というメソッドが導入されたらしい。

これはいい。
反対の反対は賛成なのだーってやらずに済む

2010年8月16日月曜日

Apacheの mod_rewriteのリライトルール定義

mod_rewriteの考え方。 - こせきの技術日記
* http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

を見ながら。

mod_rewriteのルールの書き方のまとめというかチュートリアルというか参考記事。
いつか参考にするかも。

ActionMailerの Viewで helperを使う方法

ActionMailerで、メールのヘッダもビューに書けるようにする。 - こせきの技術日記
ActionMailer::Baseを継承したモデル内で、

helper :application

と書くとApplicationHelperが有効になる。

ActionMailerはModelでありながらControllerのような。

ActionMailer + Gmailでプラグインが不要になったのは Rails2.2.1かららしい

ActionMailer::Base - APIdock
If you’re running Rails >= 2.2.1 [RC2] and Ruby 1.8.7, you don’t need plugin below. Ruby 1.8.7 supports SMTP TLS and Rails 2.2.1 ships with an option to enable it if you’re running Ruby 1.8.7.
 
2.2.1からは:enable_starttls_autoをtrueにすればTLSに対応するとのこと。


Rails 2.3.3以降では ActionMailer + Gmailでのメール送信にプラグインは不要みたい

Rails 2.3.3 + Ruby 1.8.7 + Gmail SMTP settings | Nutsmuggling
Unlike pre 2.2 Rails, no plugin is required. Not sure this setup works with Rails 2.2 though, never tried it.

手元のRuby1.8.7 + Rails(ActionMailer) 2.3.8でtlsmailとかsmtp_tls.rbとか無しでもGmailでメール送信できてしまって。
本当に大丈夫か調べたけどあまり情報がない。上記のブログでは大丈夫って書いてある。

ActionMailer::Base.raise_delivery_errors = true を入れとかないとエラーでもスルーしてしまうので入れといた方がよい?

ActionMailerで Gmailを使う

# Ruby Rails Gmail SMTP #
Update: For Ruby > 1.8.7 and Rails >= 2.2.2, you can simply specify 'enable_starttls_auto => true'. I put the following in 'config/initializers/actionmailer_gmail.rb'

このあたりが最新情報?

tlsmailの作者はruby 1.8系でsmtpにtlsを使う - zorioの日記みたい。

2010年8月13日金曜日

今どきのwill_paginateのインストール方法

まずconfig/environment.rbで使用gemとして定義する
(sourceの指定までは要らない?)
config.gem "mislav-will_paginate", :lib => "will_paginate", :version => "~> 2.2", :source => "http://gems.github.com/"

そしたらrakeでインストールできる(gem installと同じ結果になる)
rake gems:install

複数の環境でバージョン等のズレを防ぎたいなら、unpackの方がポータビリティが高いかも
rake gems:unpack


via POSTORO: mislav-will_paginateを config.gemで定義する方法






Rubyで翌月の日付を求める方法

Date - Rubyリファレンスマニュアル
self >> n

self から n ヶ月後の日付オブジェクトを返します。 n は数値でなければなりません。

こんな感じ
date = Date.new(2010, 1, 1)
date >> 1 # => 2010-2-1

31日まで無い月はこんな感じに前倒しになった
Date.new(2010, 3, 31) >> -1 #=> 2010-2-28




2010年8月12日木曜日

ActiveRecordの悲観的ロック

楽観的ロック、悲観的ロック - takihiroの日記
上記の例では、ターミナル 1 で sleep している間に ターミナル 2 の更新を実行しても、(1)、(2) の順に結果が出力されます。

ターミナル 1 が id: 1 の Book をロックしているため、ターミナル 2 は待たされます。

悲観的ロックはDBのロックなので、ロックが解除されるまで他の更新は待たされる。(タイムアウトしない限りは。)

ActiveRecordの楽観的ロックは例外を投げてしまう。まあ同時更新なんてないでしょう、とか、同時更新しようとしたら片方はやり直せばいいじゃん、とか、楽観的なケースで使える。

悲観的ロックは、同時に更新することはありえるし、もしそうなったときに更新できなかったらどうしよう嫌だなあと、悲観的なケースで使う。

Railsの database.ymlの pool

Rails 1.2.3 ~ 2.2.2 までの主な変更点のまとめ - Slow Dance
コネクションプーリングにより、Railsはコネクションプールを通じてデータベースリクエストを行います。(コネクション数の上限はdefaultで5。database.ymlで:poolを追加することにより設定可能)これにより複数同時実行ユーザがいる場合のボトルネックを解消します

デフォルトは5。

RPMforgeの PGP keyは CentOS5と4では違う

AdditionalResources/Repositories/RPMForge - CentOS Wiki
Install DAG's GPG key

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

これがCentOS5用。短縮URL?
CentOS4用のを書いてあるブログが多くてはまった。

Linuxの OSのバージョンを調べる方法

floatingdays: Linuxコマンド備忘録
# less /etc/redhat-release

* ディストリビューションのバージョンを確認する(Redhat系の場合)

すぐ忘れる。なかなか見つけられない

2010年8月11日水曜日

CentOSに Railsをセットアップする

CentOSにRails: Rails開発日記
レンタルサーバが CentOS4。そこにRailsをインストールしたときのメモ。
まず、ruby

レンタルサーバにはyumでruby1.8.1が入っていたので、とりあえずuninstallして1.8.7をインストール

checkinstallを使わないやり方。readlineとかの対応も

Rubyの文字コード変換ライブラリ NKFのオプションパラメータ

Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv
NKF は変換を converted = NKF.nkf( option_string, string ) といった文法で行います。オプションを文字列として与える方法は複雑で覚えづらいものではありますが、その一方で Kconv を使う場合に比べてはるかに複雑な処理を行うことが可能となります。なお、オプションは NKF モジュールのベースとなっている nkf のオプションをほぼ全て使うことが出来ます。

インプットの文字コードは指定した方がいいらしい

CSVダウンロードでの header=presentとは

text/csvについて - Torisugari の日記
つまり、CSVファイルの一行目がヘッダであると見なすためには、mimeの指定を"text/csv; charset=utf-8; header=present"にしろ、ということです。

そういうことか。HTTP Response Headerはファイルと一緒に保存するわけではないので、ダウンロードをしたアプリにしか分からない情報。Excelで開く分には関係ない話か。

Railsで CSVの文字コードを Shift_JISにする方法

Ruby on Rails Tips - CSV出力 - | Agenda Labs IT技術ブログ
NKFでutf-8のデータをShift_jisに変化し、文字化けを防ぎます

header=presentってなんだろう

Railsで FasterCSVを使って CSVダウンロードをする方法

FasterCSVによるCSVダウンロードサンプル1 - ろくでなし無職の勉強日記
ActiveRecordを継承したモデル、データベースのデータなんかをCSVでダウンロードするサンプル1です。

Rubyに標準で入っているCSVパーサーが遅いらしいので、FasterCSVというライブラリを使います。

こっちか

mislav-will_paginateを config.gemで定義する方法

Rails 2.1.0のconfig.gemに失敗する件 - idesaku blog
Rails2.1.0から、config/environment.rbでRailsアプリケーションが依存するgemを定義しておけるようになった。

:libが必要とのこと。:versionは必須なのだろうか?

Railsで必要な gemパッケージを明示的に定義する方法

Ruby On Rails ピチカート街道 - Rails 2.1・その10(gemの依存関係を明示的に指定) -

さて、こういう風に設定しておいて実際プロジェクトを実行しようとすると怒られます。

怒られるというのは、environment.rb に指定した gem がインストールされていない場合は、怒られます。

メモめも。

2010年8月10日火曜日

jQuery UIの Themeを簡単に切り替えて見せられる Widget

jQuery UI - Documentation: UI/Theming/ThemeSwitcher
Theme Switcher Widget

If you have a demo page using the jQuery UI CSS Framework, you can easily add our theme switcher widget to your page to show off a variety of themes. This is also very useful for development as it can reveal areas where your CSS is not quite flexible enough to be fully themeable using our framework.

To put a Theme Switcher Widget on any page, simply add a script tag referencing our plugin and call themeswitcher(); on any element to which you'd like to append the widget. Here's a code sample:

Bookmarklet版よりもスマートで良い。
WidgetはCSSで"posion:aboslut;top:0:right:0"とかした方が使いやすい場合が多い。

jQuery UIのトップページからこれを探しにくいのが難点。

jQuery UI 1.8.4リリース

jQuery UI - Home
Download jQuery UI
Build custom download

* Stable (1.8.4: jQuery 1.3.2+)
* Legacy (1.7.3: jQuery 1.3+)

1.8.3はGoogle Libraries APIの方が一足先に公開したかと思ったら、本家の方は1つ飛ばして(?)1.8.4になってた。Blogでの報告はまだだけど。

Google Libraries APIの方はまだ1.8.3のまま。

2010年8月5日木曜日

ActiveRecordで変更前の値を取得する方法

Chapter 18. Active Record Part 1: The Basics - seven the programmer
変更前、変更後の値

値を更新するとき、ソース上で変更された属性のみが更新される。なので、Active Record はモデルオブジェクトの属性単位で変更されたかどうかを管理している。その値を取得する方法もある。

Modelのプロパティに値をセットした後でも、saveされているDB上の値を取得できる。
ActiveRecordはすみずみまで機能を使い倒せばいろいろできるんだろうけど、なかなかそこまでできない。調べるのも面倒でついついゴリゴリとコードを書いてしまう...

jQuery UI 1.8.3がきた

Google AJAX API Alerts: [Libraries][Update] jQueryUI 1.8.3
jQueryUI was updated to 1.8.3.

Google Libraries APIに一足先にjQuery UIの1.8.3が登場。

jQuery UI BlogjQuery UI本家はまだ1.8.2のまま。

チェンジログが見たい。


.

商用でも無料の写真素材サイト

商用でも無料・ハイクオリティ・解像度高め、と3拍子揃った写真素材配布サイト・4freephotos - かちびと.net
久々に個人的にありがたいフリー写真
素材サイトがあったのでシェア。配布
されている写真がなかなかクオリティ
が高く、使いやすそうです。ライセンス
はパブリックドメインみたいですので、
安心して使えますね。

パブリックドメインはありがたい。
写真はファイルサイズが大きいので使ったことはないけど一応メモ。
.

2010年8月4日水曜日

海外のソーシャルブックマークやFeed Readerへの登録を簡単にできる Widget配布サイト

AddToAny - Buttons FAQ
Why place an "AddToAny" widget on my site?
The button makes it easier for visitors to share and bookmark your content, resulting in:

* Easy distribution
* More traffic
* Better rankings
* Extended reach

言語選択もあるけどEnglish以外だとどうなるんだろ
.

Amazon.com (US)や Amazon.co.uk (イギリス)のアソシエイトリンク例

Amazon.com, Amazon.co.uk での購入法
SEARCHの項目に探しているタイトルを入れると一覧が出てきます。購入サイトのトップページからお勧めな物を選ぶのもいいでしょう。
「フレンズ」のタイトルについては直リンクを用意しておきました。下のリンクや画像をクリックすると別ウィンドウで Amazonのページが開きます。アソシエイト・プログラムのリンクですが勘弁してやってください。

参考に。

Google AJAX Libraries APIの名前と URLが変わってた

前からAJAX限定でないのにAJAXとはこれいかにと思ってたけど、いつの間にかGoogle AJAX Libraries APIから"AJAX"が取れてた。

Google Libraries API - Google Code
What is the Google Libraries API?

The Libraries API is a content distribution network and loading architecture for the most popular, open-source JavaScript libraries. Using the Google API Loader's google.load() method increases your application's speed while providing access to a growing list of the most popular, open-source JavaScript libraries, including:

AJAXが取れるのはいいけど、URLも変わってた。プロジェクト内トップページは新URLにリダイレクトしてくれるけど、1階層下のdocumentationページは404 Not Foundになってて驚いた。

デーモンモードのWebrickを killコマンドで終了させる方法

kill コマンドって、プロセスを終了させるものかと勘違いしていた - Slow Dance
結論言うと、デーモンのwebrick は次のようにすれば終了する。

$ kill -INT [webrick デーモンのプロセス番号]

メモメモ。その他にも強制終了させる方法なども。

2010年8月3日火曜日

ActiveRecordのコピー

ActiveRecord オブジェクトをコピーする - 夜の Discovery
clone_user = user.clone
dup_user = user.dup

2種類あって用途によって使い分けるようだ
.

ActiveRecordで update_attributesするけど saveしたくない場合

update_attributes のsaveしないやつ - harukazepcの日記
confirmなアクションとかで、params[:hoge]で渡ってきた更新内容を、saveせずにvalid?したいとか。そんな感じ。

正解は、

Hoge.attributes = params[:hoge]

カッコかイコールかって、ややこしいなあもう
.

WordPressの自動アップデート失敗対策(解決)

POSTORO: WordPressの自動アップデート失敗対策 その2
その他にもPHP実行時間制限のタイムアウトで止まる場合もあるらしい。

自分の場合、原因はタイムアウトだった。
3.0.1はダウンロードだけで30秒以上かかる?5分にしたら無事解決。
.

2010年8月2日月曜日

Amazon新着アイテム Feed化サービス その2

Amazon Rss Feeds Generator - Convert Keywords Into Feeds - FREE
Choose Amazon categories to generate products rss feeds from:

Amazon以外にもいろいろ

Amazon新着アイテム Feed化サービスその1

Amazon RSS Feed Generator
Amazon RSS Feed Generator

たしかもう1つあった
.

Railsの form_forの selectヘルパーの使い方

簡単な検索フォーム - nyaagoの日記
selectヘルパーは「select( method, choices, options = {})」というシンタックスとなります。choicesには、選択肢となる項目のArrayを指定します。その要素も配列で、0個目に表示する名称、1個目に送信される値を指定します。

マニュアルでうまく探せないけど、selectヘルパーに準じた仕様ということかな

WordPressの自動アップデート失敗対策 その2

WordPress › フォーラム » 2.8自動アップグレードが途中でとまります
wp-settins.php は、コアファイルになりますので、次回バージョンアップした際に上書きされてしまいます。
wp-config.php であればバージョンアップしても上書きされないので、この設定は wp-config.php の2行目以降に以下を追加しておいた方が、より良いでしょう。

define('WP_MEMORY_LIMIT', '64M');

こっちの方が本命かな。プラグインなら問題なくできるし。

その他にもPHP実行時間制限のタイムアウトで止まる場合もあるらしい。
.

WordPressの自動アップデート失敗の対策

chibiegg日誌 » WordPressの自動アップデートエラーについて
WordPressにはプラグインや本体をFTP経由で自動でアップデートする機能がありますが、だいたいは「ディレクトリが見つかりません」といわれてしまいます。

そんな場合は「wp-config.php」に以下の三行を追加するだけで直ります。
上から順番に「FTPのルートディレクトリ」「wp-contentディレクトリ」「pluginsディレクトリ」へのパスです。

以前は成功してたけど、ある時から成功しなくなった。でも1回だけなぜか成功したこともある。
エラーメッセージが違うから違うかもしれないけど試してみよう。
.

ブログ アーカイブ

カテゴリー