#rails

システムを作る時に、パスワードを2回入力してもらって、確認処理をおこなうことが多いですね。 そんなめんどな仕事には、Railsはvalidates_confirmation_of メソッドを用意してくれました。 それでは、使い方を見てみましょうか。

まず、モデルで以下のチェックを行います。

validates_confirmation_of :password  #カラム名
attr_accessor :password_confirmation #カラム名に_confirmation

そして、関連のビューで、以下の処理を書きます。

= password_field :user, :password
= password_field :user, :password_confirmation

これで、自動的に入力されたパスワードは同じかどういかを確認してくれます。

※attr_accessorは、再入力フィールドの値を保存するための仮想カラムです。

#other

この間Yahooアドパートナーを申請しました。 Yahooアドパートナーとはあなたのサイトに広告を掲載し、 閲覧もしくはクリックされたことで報酬がもらえるサービスです。 GoogleのAdSenseに相当するものです(しかし広告の質はまだまだ)。

申請してから一度も使った事なかったのですが、 今日広告のコードを貼りつけたら表示されませんでした。 いろいろ探してみたらサイトURLに”wwwあり”と”wwwなし”が問題となったようです。 Yahooに申請するときは”wwwあり”のwww.kinopyo.comで申請したのですが、 このブログでは今までずっと”wwwなし”のkinopyo.comで利用してました。 その違いで広告は表示されないのです。

解決策

  • Wordpressの一般設定でブログのURLを”wwwあり”に明確に設定
  • SEO対策の一環として”wwwなし”のURLを”wwwあり”にリダイレクト

SEO対策の具体的内容はまた今度まとめます。

#rails

セッションを使って、データを保存する時、 以下のエラーが表示されました。

Status: 500 Internal Server Error
ActionController::Session::CookieStore::CookieOverflow

原因:Railsのセッションに保存できるデータの長さは4KBしかないです。

保存するデータは4KBをオーバーした場合、CookieOverflowエラーが表示されてしまいます。

解決方法:

セッションデータをDBに保存します。

  • セッションデータを保存用テーブルを作成します。 以下のコマンドを実行します。
rake db:sessions:create
rake db:migrate
  • config/environment.rbで以下の行をコメントアウトします。
config.action_controller.session_store = :active_record_store
  • サーバーを再起動します。

これで、解決です。

#eclipse editor

EclipseにMavenのプラグインをインストールした後にEclipseを起動したら以下のエラーメッセージが出ました。

<a title=”Maven Integration for Eclipse JDK Warning” rel=”lightboxpics834” href=”https://images.kinopyo.com/wp-content/uploads/2010/01/MavenIntegrationforEclipseJDKWarning.jpg)><img class=”attachment wp-att-835 “ src=”https://images.kinopyo.com/wp-content/uploads/2010/01/MavenIntegrationforEclipseJDKWarning.jpg) alt=”Maven Integration for Eclipse JDK Warning” width=”441” height=”181” /></a>

The Maven Integration required that Eclipse be running in a JDK,
because a number of Maven core plugins are using jars from the JDK.

Please make sure the -vm option in eclipse.ini is pointing to a JDK and
verify that Installed JREs are also using JDK installs.

使ってた環境は確かにJREのみがあってJDKはなかったんです。 回避策としては

  • JDKをインストール
  • eclipse.iniに-vmオプションでインストールしたJDKと関連付ける

JDKのインストール

JDKのダウンロードはこちら: Sun Java インストール後JAVA_HOMEとPATH環境変数もあわせて編集 エクスプローラ→マイコンピュータ→右クリック→プロパティ→詳細設定タブ→環境変数ボタン

eclipse.iniの編集

jdkのパスはインストール先に合わせて下記内容を追記 vmの後に改行が必要

 -vm
C:\Java\jdk1.6.0_18\bin\javaw.exe

これで再起動したらエラーメッセージは出なくなりました。

#tool

Javaの.classから逆コンパイラしてもともとのソースコードが見れるツールです。 ずいぶん前一度使ったことがあります。 スタンドアロンのJD-GUIツールと、 Eclipseのプラグインとして使えるJD-Eclipseがあるらしいです。 スタンドアロンはJRE環境が必要とせずインストールだけで使えます。 jarファイルもサポートされているようです。

java-decompiler

公式サイト:[JD Java Decompiler](http://java.decompiler.free.fr/)
#wordpress

本文はWPテーマGlowing Amberに二番目のサイドバーを追加する方法を紹介します。

Glowing Amberは今現在このブログで使われているテーマです。 見た目がいいデザインがいいのですぐインストールしましたが、 簡単にカスタマイズするメニューがなくて少し不便を感じました。 マニュアルもなく、作者が提示したURLにも無効となっています。。。

二番目のサイドバーを追加する方法

  • Main Index Templateのindex.phpかSingle Postのsingle.phpを編集します。 それぞれブログのトップページ、個々の記事ページのファイルです。

  • サイドバーを追加したい場所で下記コードを挿入します。

<div id="left">
<?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Left')) : ?><?php endif; ?>
</div>

例えば左に追加したい場合は

の前に上記コードを挿入します。 +
に変更 これはid=mainbody-lrにwidthが適切に設定されているからです。 + Stylesheet (style.css)で幅を編集 104行目近くにある#mainbody-lr と#left, #rightのwidth値を編集すればOKです。 これでWidgetsメニューでSidebar Leftが使えるようになります。
#jquery

$.inArray(value, array)

指定した値が配列中にあれば、そのインデックスを返します。 配列に存在しなければ戻り値は-1になりますので注意してください。

var array = ["a", "b", "c"];

if ($.inArray("d", array) == -1) {
    // d is not in array
}

下記のコードは間違いですよ。。。

if ($.inArray("d", array)) {}

$.isArray(obj)

パラメータで渡された値が配列であるかどうかを判別します。 戻り値はtrueかfalseです。