Kinopyo Blog

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

Posts Tagged ‘トラブル’

IE6でSSL(https)に接続する時、src属性なしのiframeを使うとセキュリティの警告が出る

2010年04月27日

現象

IE6を使ってSSL(https)経由で接続する時に以下の警告が出るなら

iframeのsrc属性をまずチェックしてください。

security-info


このページにはセキュリティで保護されている項目と保護されていない項目が含まれています。

ダメな書き方

<iframe />
<iframe src="" />

解決策

src属性にちゃんと値を設定するか、javascriptでfalseを指定する

<iframe src="/dummy.html" />
<iframe srec="javascript:false" />

存在しないファイルを指定するとサーバ側のログにエラーが出るかもしれないので、

設定する場合は実際存在するファイルを設定してください。

Java:Integer.parseInt時のNumberFormatExceptionについて

2010年04月16日

ハマっちゃったException第二弾です。

実際はハマったワケではありませんが、

一応こんなExceptionがあると。

String blank = "";

int i = Integer.parseInt(blank);

これで余裕に下記のExceptionが出ます。


java.lang.NumberFormatException: For input string: ""

何も考えずにあるJavascriptの処理をJavaに書き換える作業で発生したんです。

JavascriptはブランクをparseIntするとNaN(Not a Number)になるが、

Javaは完全におちますね。。。

Java:List操作時のUnsupportedOperationExceptionについて

久々にJavaを書いたので、表題のExceptionにハマっちゃいました。

こんなコードでした。

String[] array = {"a", "b", "c"};

List<String> list = Arrays.asList(array);

list.add("d");

ちょこっとググッてみたらasListで作ったListに

add()で要素を追加すると上記のExceptionになるそうです。

asListのJavadocでの記載は

指定された配列を基にする固定サイズのリストを返します。返されたリストへの変更は、そのまま配列に書き込まれます。(後は省略)

なるほど。。。

とりあえず深く考えずに下記のように書き換えて回避しました。

String[] array = {"a", "b", "c"};

List<String> list = new ArrayList<String>();

list.addAll(Arrays.asList(array)); 

list.add("d");

jQuery1.3.2 bind時にnamespaceを使うとIE6ではメモリリーク

2010年04月04日

表題の通り、IE6 + jQuery1.3.2の状態でbindする時に

jQueryのnamespaceを使うと確実にメモリリークが発生します。

jQuery1.4.2では発生しないことを確認しました。

メモリリークが発生するコード

$("#foo").bind("change.abc", function(){});

上記”change.abc”のabcがnamespaceです。

それをなくすことでメモリリークは解消されます。

イベントハンドラの中身とは関係ありません。

メモリリークは発生しない

$("#foo").bind("change", function(){});

これはjQueryのbugとして上げられましたが、

完全に修正できなかったみたいです。


#4241 (Namespaced events cause memory leaks)
– jQuery Core
– Bug Tracker

当時の担当者のコメントを見ると

I had a really difficult time getting a reliable test case to verify this actually solves the memory leak. r6321 appears to have fixed this issue

「時間ないからちゃんとテストしてない、r6321の対応で解決できたように見える」と、

ずいぶん適当な回答ですよね。。。

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

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

WordPress Flexible upload pluginのWarning: call_user_func_array() [function.call-user-func-array]

2009年12月11日

エラー詳細

Flexible uploadのプラグインを使うときに出たエラー内容です。

Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'feed_links_extra' was given in ***/***/wp-includes/plugin.php on line 339

回避方法

blog/wp-content/plugins/flexible-upload/flexible-upload-wp25.phpに以下のコードを追加


function media_admin_css() {  

	wp_admin_css('css/media');  

} 

バージョン情報

  • WordPress : 2.8.6
  • Flexible upload: 1.1.3

参考サイト

WordPress2.6のFlexible upload 1.13不具合解消

Firebugがバグる:「Failed to load source for sourceFile top-level…」

2009年12月02日

現象

FirebugでJavaScriptをデバッグしようとするとこんなエラーになりました。

Failed to load source for sourceFile top-level http://sample.com/jquery.js script.tags( X| 1094 1095 ...

環境

  • Firefox : 3.5.5
  • firebug : 1.4.5

調査

ぐぐって見ましたが、いい回答が見つかりませんでした。

同じバグにあった方のブログでのやり方で、

firebugを1.3.0に戻してもダメでした。

さらに1.3.3ではこの問題が解決されたと、firebugの公式サイトの回答がありました。


結局は..

エラーとなるプロジェクトを丸ごとTomcatサーバに置いたら、firebugで普通に見れました。

なぜかははっきり分かりませんが、この同じプロジェクトをずっとローカルで開発してきて、

firebugも全然問題なく使ったから、やたらおかしいです。

IE8でbackground-colorが白とその値がnullとの表示が微妙に違う

2009年11月24日

現象

f:id:kinopyo:20091124235949j:image

まず画像を見てみましょう。

最初の二つ白い背景のエリアに注目してください。

一番目は背景色を白い色(#FFFFFF)に設定したもので、

二番目が背景色をnullに設定したものです。

白い色に明確に設定したほうのborderの左と上の表示が少し違ってます。


またIE8の開発ツール(F12で呼ばれる、Firebugと似たデバッグツール)で見ても

background-colorが#ffffffになってる以外に、何の余計なスタイルもありませんでした。

なのでやはりbackground-colorが指定してないものと#ffffffに指定したものには差異が存在してます。


サンプルコード

<div>
<input id="foo" type="text" />
<input id="bar" type="text" />
</div>
<div>
<input id="hoge" class="gray" type="text" />
<input class="gray" type="text" />
</div>
$(document).ready(function(){
  // 元の背景色を保持
var original = $("#foo").css("background-color");
alert(original);	// output is "ffffff"
  // 元の背景色を再設定、値は同じはず
$("#foo").css("background-color",original);
// 他の背景色はこんな現象がないみたい
// あるとしても発見しづらい	
  var hogeColor = $("#hoge").css("background-color");
alert(hogeColor);	// output is "gray"
$("#hoge").css("background-color",hogeColor);
});