Kinopyo Blog

プログラマとしてRuby, Rails, iPhone, iPad,Macなどなどと向き合う日々のログポース

Archive for 15:46

Javascript window.openで開いたページで親ウィンドウのdocumentを取得には

2010年01月29日

window.open()で新規開いた小窓ウィンドウで親ウィンドウのdocumentを取得するには

下記のプロパティを使います。

window.opener.document

これで親ウィンドウの値を取得するだけではなく、

値を編集することもできます。


例えば下記のコードは親ウィンドwのフォーム内のテキストをAAAに変更します。

新規開いたページに記述します。

window.opener.document.FORM1.TEXT1.value = "AAA";

参考サイト

とほほのJavascriptレファレンス:ウィンドウオブジェクト

headには一番最初にMETAタグで文字コードを指定するのが望ましい

2010年01月27日

HTMLのheadセクションにはタイトルといろんなMetaタグが記述されているが、

その記述順番に気になったことはありますか?

そしてそれがどのような影響があるかぐぐってみました。

headセクション内のタグの記述順に特に決まりはないが、”charset”で示す文字コード指定のタグは、titleタグやmeta description/keywordsタグよりも先に記述することが推奨される。の中身がまさに、文字で書かれ、文字コード判定が必要だからです。

そういえばWordpressを使ってからこの辺全然気にしてないので

早速自分のサイトのheadセクションを確認しました。

下記のようなものです。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">

<head profile="http://gmpg.org/xfn/11">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Kinopyo&#039;s Blog</title>

なるほど、、metaタグでcharsetがUTF-8になってるから

titleのところのシングルクォーテーションがUTF-8の#039になったわけですね。

考えてみれば当たり前のことだけれど。。。

参考サイト

MetaタグとTitleタグの位置関係について

ブラックなSEOで人生を失った悲惨な男の物語 など10記事(海外&amp;国内SEO情報)

Railsの知らないと損になる、便利な定数

2010年01月26日

RAILS_ENV

現在動作している環境。開発終わって、テスト環境でテストしたい場合、この変数を修正すればOKです。

‘development’,'test’または’production’があります。

 

RAILS_ROOT

ルートフォルダのパスです。

自分のサイトURLを”wwwあり”か”wwwなし”に正規化する方法

2010年01月24日

“wwwあり”か”wwwなし”はSEO的には優劣はありませんし、

どっちを使うかはたいてい各人の好き嫌いで決まっています。

例えばこのサイトの場合www.kinopyo.comとkinopyo.comで全部アクセスできますが、

私は”wwwあり”で正規化ています。

この正規化というのは非常に重要で、検索エンジンに対しての知らせです。

Googleのヘルプによると下記の解説になります。

使用するドメインとは、サイトのページをインデックスに登録する際に使用するドメインです。使用するドメインを http://www.example.com と指定すると、http://example.com の形式のリンクが検出された場合、Google ではそのリンクを http://www.example.com として処理します。また、検索結果に表示する URL は設定に基づいて決まります。

なので”wwwあり”と”wwwなし”が同じサイトであれば

正規化する必要があります。

正規化する方法

.htaccessが使える環境では.htaccessを下記のように設定

.htaccessファイルはサイトのルートディレクトリに置いてください。

例えばこのブログのURLはwww.kinopyo.com/blogになっていますが、

.htaccessファイルはwww.kinopyo.comのディレクトリに置いてあればOKです。

設定に基づいてリダイレクトします。

  • wwwありに統一

RewriteEngine on

RewriteCond %{HTTP_HOST} ^example\.com [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
  • wwwなしに統一

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.example\.com [NC]

RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

※”example.com”は自分のドメイン名に置き換えてください。

Googleウェブマスターツールでの設定

Googleウェブマスターツールは自分のサイトとGoogle検索の関係いついて

いろいろ設定できる支援ツールです。

ここでは自分が”www有り無し”をGoogleに伝えるための設定をします。

そうしないとGoogleは”www有り無し”をそれぞれ別のページへの異なる参照として処理されます。

  • Googleウェブマスターツール使うにはまずサイトを登録

サイトを正規化するためにはwwwありとwwwなしの両方を登録する必要があります。

Googleウェブマスターツール

Googleが提供するMetaデータをサイトのページに貼り付けることでサイトが確認されます。

(具体的な認証方法はGoogleのヘルプを見てください)

  • 使用するドメイン

登録完了後はサイトを選択し、「サイト設定→設定→使用するドメイン」で

利用するドメイン、つまりwww有りなしを指定してください。

Googleウェブマスターツール

WordPressお使いの方は注意を

WordPressの「設定→一般」でサイトURLが正しく設定されるか確認してください。

もし.htaccessでは”wwwあり”で指定しWordpressでは”wwwなし”と指定した場合は

無限ループとなるため、サイトがエラーとなり表示できなくなります。

WordPressの仕様は調べていないが、どうやらWordpressの設定によりリダイレクトするように見えます。

参考サイト

wwwあり/wwwなし、どちらを使用するか?

Rails validate処理

Railsのvalidateチェックはすばらしいです。

使いかた非常便利だし、機能が強いです。

それでは、一緒に見てみましょう。

validate

validateを使って、カスタマイズのvadidationチェックを定義できます。

例:


def validate

    errors.add(:content, "を入力してください") if content =~ /^(ここに感想を書いてください。|ここに感想を書いてください)$/

end
validates_acceptance_of

チェックボックスがチェックされたかを確認。

チェックされていない場合、エラーが起こリます。

validates_confirmation_of

再入力を確認します。

詳細の使い方は、「validates_confirmation_of の使い方」を参照してください。

validates_exclusion_of

指定した値に含まれていないかをチェックします。

例:


validates_exclusion_of :sex,:in => ['female','male'] 
validates_inclusion_of

指定した値に含まれているかをチェックします。

validates_exclusion_ofの逆です。

例:


validates_inclusion_of:sex, :in => ['female','male'] 
validates_format_of

正規表現を使って、値をチェックします。

例:


validates_format_of :code,:with=> /^[0-9A-Za-z]/, :message=>"は半角英数字で入力してください。"
validates_length_of

値の長さをチェックします。

例:


validates_length_of :name, :maximum=>30
validates_numericality_of

値は数字かどうかをチェックします。数字ではない場合、エラーを表示します。

例:


validates_numericality_of :code
validates_presence_of

必須値のチェック。値が入力されていない場合、エラーを表示します。

例:


validates_presence_of :code
validates_uniqueness_of

値の重複チェック。DBに既に同じ値が存在した場合、エラーを表示します。

例:


validates_uniqueness_of :id
validates_size_of

validates_length_ofと同じ。

Rails validates_confirmation_ofの使い方

2010年01月23日

システムを作る時に、パスワードを2回入力してもらって、確認処理をおこなうことが多いですね。

そんなめんどな仕事には、Railsはvalidates_confirmation_of メソッドを用意してくれました。

それでは、使い方を見てみましょうか。

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

  validates_confirmation_of :password               #カラム名

  attr_accessor             :password_confirmation  #カラム名に_confirmation

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


<%= password_field :user, :password %>

<P>

<%= password_field :user, :password_confirmation %>(確認用)

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

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

Yahooアドパートナー利用時サイトURLの”wwwあり”と”wwwなし”に注意

2010年01月22日

この間Yahooアドパートナーを申請しました。

Yahooアドパートナーとはあなたのサイトに広告を掲載し、

閲覧もしくはクリックされたことで報酬がもらえるサービスです。

GoogleのAdSenseに相当するものです(しかし広告の質はまだまだ)。


申請してから一度も使った事なかったのですが、

今日広告のコードを貼りつけたら表示されませんでした。

いろいろ探してみたらサイトURLに”wwwあり”と”wwwなし”が問題となったようです。

Yahooに申請するときは”wwwあり”のwww.kinopyo.comで申請したのですが、

このブログでは今までずっと”wwwなし”のkinopyo.comで利用してました。

その違いで広告は表示されないのです。


解決策

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

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

Ruby – ActionController::Session::CookieStore::CookieOverflowエラー

2010年01月21日

セッションを使って、データを保存する時、

以下のエラーが表示されました。


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にMavenプラグインインストール後のエラー: “Eclipse is running in a JRE, but a JDK is required”

2010年01月20日

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

Maven Integration for Eclipse JDK Warning

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

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

Javaの.classファイルからソースを見れるツール:Java Decompiler

2010年01月18日

Javaの.classから逆コンパイラしてもともとのソースコードが見れるツールです。

ずいぶん前一度使ったことがあります。

スタンドアロンのJD-GUIツールと、

Eclipseのプラグインとして使えるJD-Eclipseがあるらしいです。

スタンドアロンはJRE環境が必要とせずインストールだけで使えます。

jarファイルもサポートされているようです。

java-decompiler

公式サイト:JD | Java Decompiler