タグ

2011年11月7日のブックマーク (4件)

  • Rubyと大クラス主義とダックタイピング、そして名前重要 - ゆとRubyist日記

    最近、Javaを勉強したりしていて、RubyJavaとの対比で昔より客観的に見られるようになったので、Rubyの記事を書きたいと思います。自分でも消化しきれていない話なので、反論は大歓迎です。 内容は、大クラス主義とダックタイピング、そして名前重要に関してです。 大クラス主義 Rubyの考えでよく言われるものに、大クラス主義があります。例えば、RubyのArrayは配列を表すクラスです。しかし、Arrayができることは、単純に値を複数持てるだけではありません。Arrayを調べてみると、popやpushやshiftやunshiftがあります。つまり、RubyのArrayはキューやスタックとしても使えます。一方、JavaのArrayやArrayListでは、配列の要素を扱うことはできますが、そのままではキューやスタックとしては使えません。Javaでキューやスタックが使いたいのであれば、例えば

    Rubyと大クラス主義とダックタイピング、そして名前重要 - ゆとRubyist日記
    gami
    gami 2011/11/07
  • String.hashCode() の変遷 - いけむランド

    もう遠い昔の話だし、今さらどうでもいいことだけど、日語資料が見当たらなかったので、まとめておく。 実は Java2 (1.2) 以降とそれより前で String.hashCode() のアルゴリズムが異なっている。 現在の hashCode 現在 (1.2 以降) のアルゴリズムは単純にすべての文字に適当な係数をかけて算出する。 public int hashCode() この文字列のハッシュコードを返します。String のハッシュコードは、次の方法で計算します。 s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] int 算術を使います。s[i] は文字列の i 番目の文字、n は文字列の長さ、^ は、べき乗を示します。空の文字列のハッシュ値は 0 です。 ちなみに Java で書くと以下のようになる。*1 public int hashCode

    String.hashCode() の変遷 - いけむランド
    gami
    gami 2011/11/07
  • JDK7でAndroidアプリを正しくビルドできない問題を調査した

    ビルドにJDK7を使うとAndroidアプリのrelease版がインストールできない問題に遭遇した。しかもdebug版はちゃんと動く。そして原因判明するまでの調査過程をメモっておく。 解決編→ http://www.kaoriya.net/blog/2012/05/10

    JDK7でAndroidアプリを正しくビルドできない問題を調査した
  • PHP 5.4におけるhtmlspecialchars()の問題 - Opensource days

    PHP 5.4 beta 2が出ているところですが、ソースコード(html.c)を見ていて、XSS対策で使用される htmlspecialchars()の文字コード指定がPHP 5.3とは異なる動作をすることに気が付きました。 内部文字コード(mbstring.internal_encoding)が使用される以下のようなシチュエーションです。 <?php // test.php echo htmlspecialchars("foo",ENT_QUOTES,""); mbstring.internal_encoding="SJIS-win"と指定することにします。(推奨はできませんが、)外字対応(絵文字対応)でCP932を使用したい場合を想定しています。 PHP 5.3で実行 php53/sapi/cli/php -d mbstring.internal_encoding="SJIS-win

    PHP 5.4におけるhtmlspecialchars()の問題 - Opensource days