タグ

ブックマーク / unageanu.hatenablog.com (11)

  • instanceof演算子 - うなの日記

    instanceof演算子でオブジェクトがクラスのインスタンスであるか評価できます。 組み込みクラスだけでなく、自前のクラスも正しく判定できます。 プロトタイプチェーンも辿ってくれるようです。 // クラス function Hoge() {}; function Foo() {}; Foo.prototype = new Hoge(); var a = []; stdout.innerHTML += "a is Array? " + ( a instanceof Array ? "true" : "false" ) + "<br/>"; // true stdout.innerHTML += "a is Hoge? " + ( a instanceof Hoge ? "true" : "false" ) + "<br/>"; // false stdout.innerHTML += "a

    instanceof演算子 - うなの日記
  • Javaメソッドの呼び出し元をツリー表示するスクリプト - うなの日記

    JavaClassを使って指定メソッドの呼び出し元を探索しツリー表示するスクリプトを書いてみました。 引数で指定されたパス以下の*.class,および*.jarに含まれるクラスファイルを解析し、 メソッドの呼び出しコードを収集。 収集した情報を再帰的に探索し、呼び出し元メソッドをツリー形式で出力します。 使い方 $ ./caller.rb <クラスが置かれたディレクトリorJarファイル> <呼び出し元を探すメソッド> 呼び出し元を探すメソッドは「<メソッドが定義されたクラスのFQCN>#<メソッドのディスクリプタ表記>」で指定します。具体的には以下のような形になります。 java.Util.ArrayList#indexOf(Ljava/lang/Object;)I クラスが置かれたディレクトリ or Jarファイルは、「;」区切りで複数指定可能です。 具体例 ↓のようなクラスがあったと

    Javaメソッドの呼び出し元をツリー表示するスクリプト - うなの日記
  • コマンドラインからVirtualBoxを操作して、仮想マシンにWindowsを導入する - うなの日記

    コマンドラインからVirtualBoxを操作して、仮想マシンにWindowsを導入する手順です。 VBoxManageを使って仮想ディスクの作成からインストールまで、X Windowシステムなしの環境で行えます。 仮想マシンは、VRDPサーバーとして動作させることで、Windowsの「リモートデスクトップ」で操作できます。 ホスト:CentOS4、ゲスト:WindowsServer2008で試しました。 なお、ほとんど「Sun xVM VirtualBox - User Manual - 7.4.2 Step by step: creating a virtual machine on a headless server」のコピペなので過度な期待はしないでください。 概要 VMの作成と設定 VMで使うストレージの作成と割り当て WindowsServer2008のインストールディスクをVM

    コマンドラインからVirtualBoxを操作して、仮想マシンにWindowsを導入する - うなの日記
  • Closure CompilerでタイプセーフJavaScriptコーディング - うなの日記

    Closure Compilerを使用したタイプセーフJavaScriptコーディングについてまとめ。 Closure CompilerはClosure Toolsの一部で、 JavaScriptコードを解析して圧縮と最適化を行うJavaScriptToJavaScriptコンパイラです。 最適化だけでなく、シンタックスや型のチェック機能も提供。 型チェックは、JsDocコメントの形式で記載された型情報をもとに行われます。 型システムは、ECMAScript4の仕様に準拠している模様。 Closure Compilerを使用することで、ECMAScript3の世界でECMAScript4ライクな型システムが使えます。(型情報をコメントに書くので、スマートさには欠けますが・・) Closure Compilerのインストール Closure Compilerのサイトよりzipアーカイブを取得

    Closure CompilerでタイプセーフJavaScriptコーディング - うなの日記
  • Rakeの基本的な使い方まとめ - うなの日記

    Rakeの基的な使い方のまとめです。 インストールから、Rakefileの書き方、組み込みライブラリの使い方まで。 忘れたときに見返す用に。 Rakeって何? rubyで処理内容を定義できるビルドツール。「xmlでなくrubybuild.xmlを書くAnt」ですな。 ruby専用とかいうわけではなく、javaのビルドなんかにも(使おうと思えば)使えます。 処理内容をrubyで書けるので、ループとか条件分岐も思いのまま。 ただし、組み込みのタスクはちょい少ないので、ちょっとした作業させるにもコーディングが必要そうかな・・・。便利なライブラリがどっかにあったりするのかもですが・・・。 rakeツールのインストールと使い方 インストール rubyrubygems は事前にインストールされている前提で。 $ gem install rakerakeのgemをインストールするとrakeコマ

    Rakeの基本的な使い方まとめ - うなの日記
  • Implicit Conversions - うなの日記

    「暗黙」シリーズ二つめ。「implicit」をつけた型変換用関数を定義しおくと、暗黙の型変換が行われるようになります。 型変換は、必要なときに自動的に変換関数が実行されることで行われます。 型変換用の関数は「implicit」をつけて定義しておく必要があります。 使われる変換関数は型にあわせて最適なものが選択されます。 // テスト用のクラス class Kitten(age:Int, name:String) { def getAge = age def getName = name } object ImplicitConversionsSample { def main(args: Array[String]) { // 型変換用関数。「implicit」をつけておく。 implicit def kittenToString( k:Kitten ):String = { printl

    Implicit Conversions - うなの日記
  • XSSの攻撃手法いろいろ - うなの日記

    html5securityのサイトに、XSSの各種攻撃手法がまとめられているのを発見せり!ということで、個人的に「お!」と思った攻撃をサンプルつきでご紹介します。 1. CSS Expression IE7以前には「CSS Expressions」という拡張機能があり、CSS内でJavaScriptを実行できたりします。 <div style="color:expression(alert('XSS'));">a</div> 確認 @IT -[柔軟すぎる]IEのCSS解釈で起こるXSS で詳しく解説されていますが、CSSの解釈が柔軟なことともあいまって自前で無害化するのはなかなか困難。以下のようなコードでもスクリプトが実行されてしまいます。 <div style="color:expr/* コメントの挿入 */ession(alert('XSS'));">a</div> 確認 <div s

    XSSの攻撃手法いろいろ - うなの日記
  • returnについて思うこと。 - うなの日記

    rubyの関数ではreturnを省略できますが、個人的には明示する方がよいかなと思っています。理由は以下の2つ。 何が返されるのかが、わかりやすい。 returnに続く処理を読めば、何が返されてくるか一目瞭然です。 というか、returnがないと、そもそも戻り値を返すことを意図した関数なのか、最後の実行結果がたまたま返されているだけなのかもわからん。 処理の流れが追いやすい。 returnを探せば処理の終わりが見えます。 また、ネストが嫌いのなので↓こういうリファクタが好き。結果的にreturnをよく使うことになります。 # リファクタ前 def foo(arg) if ( arg ) ...処理 end end # リファクタ後 def foo(arg) return if !arg ...処理 end ということで、ソース中にreturnを書きまくっているわけですが、このせいでよくはま

    returnについて思うこと。 - うなの日記
  • sbazでパッケージをインストールする - うなの日記

    最近気付いたのだけど、scalaの世界にも「Scala Bazaars」というパッケージ管理の仕組み(rubyRubyGems的なモノ)があります。「sbaz」というツールが提供されていて、これを使ってパッケージの追加/削除が可能。基的な使い方は次の通りです。 # インストール済みパッケージの一覧取得 $ sbaz installed base/1.9 sbaz/1.25tmp sbaz-setup/1.0 scala/2.7.1.final scala-devel/2.7.1.final scala-library/2.7.1.final scala-tool-support/2.7.1.final scalap/2.7.1.final 8 packages installed # 利用可能なパッケージの一覧表示 $ sbaz available Actorrent (0.1) ba

    sbazでパッケージをインストールする - うなの日記
  • lazyで値を遅延評価する - うなの日記

    「val」で不変の値を定義する際に、「lazy」修飾子をつけると、値が遅延評価される(最初にアクセスされたときにのみ評価され、定義時には評価されない)ようになります。 「lazy」は「val」にのみ設定できます。「var」や「def」に設定することはできません。 値の評価は「最初にアクセスされたときに1回のみ」行なわれます。 複数回呼び出した場合、2回目以降は値の評価は行なわれず、初回の評価結果が返されます。 ここが「def」と違うところですね。「def」でも値は遅延評価になりますが、値の評価は参照時に毎回行なわれます。 // lazyをつけると、値の評価が初回アクセス時にのみ行われるようになる。 lazy val a = { println("eval a"); "a" } // var や def には適用できない。 // 以下はコンパイルエラー // lazy var b = { "

    lazyで値を遅延評価する - うなの日記
  • パスワードの入力を受け付けるプログラムを作る - うなの日記

    プログラムにパスワードを渡してもらう必要がある場合、引数で指定するのは危険だよね、ということで対話式でパスワードを設定できるようにするやり方を調査。Highlineというライブラリを使うと簡単みたい。 →Hatena Question - Rubyでユーザーからのパスワード入力を非表示(マスク)するためのライブラリ、もしくは方法を教えて下さい。 早速インストールしてサンプル(↑のサイトのコピペだけど)を書いてみました。 インストール: $ gem install highlineサンプル: require 'rubygems' require "highline" pw = HighLine.new.ask('pass: ') {|q| q.echo = '*' } puts pw 実行結果です。 pass: ******* abcdefgおー。

    パスワードの入力を受け付けるプログラムを作る - うなの日記
  • 1