タグ

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

  • JavaScript Dateのタイムゾーン指定できない問題とその対策 - うなの日記

    JavaScriptのDate型では、タイムゾーンを外部から指定できない JavaScriptのDate型は、タイムゾーンの情報を持ってはいますが、APIで外から変更することはできません。 getTimezoneOffset() はあるけど、setTimezoneOffset(timezone) はありません。 getTimezoneOffset() の値は実行環境のタイムゾーンになります。 getHours()やgetMinutes()はローカルのタイムゾーンにおける時刻表現を返すので、実行環境によって結果が異なり、問題になる場合があります。 Dateを表示用の文字列に変換する処理のテストを書いていたら、CI環境(CircleCI)で動かしたときに結果が違ってエラーに。 変換APIの仕様としては、「実行環境に合わせた時刻表現を返す」のが期待の動作なので、動きとしては間違っていないのですが

    JavaScript Dateのタイムゾーン指定できない問題とその対策 - うなの日記
  • Cordova + React.js + Material UI で、 Material Design な Android アプリのプロトタイプを作ってみた - うなの日記

    Cordova のお試しということで、 Cordova + React.js + Material UI で Material Design な Android アプリのサンプルを作ってみました。 HTML+CSS+JavaScript でネイティブアプリが作れるCordova ですが、やはり遅いという話をよく耳にするので、実際どうなのか確認してみるのが目的。 使えそうなら、フロントはJavaScriptで書いて、せめてモデル層だけでも共通化したい。 UIは Material Designにしたいので、 Material UI フレームワークを使ってみました。 Material UI は、Material Design を実装したフレームワークです。 Navigation Drawer や Action Bar といったUIパーツを、React コンポーネント + LESS で提供していま

    Cordova + React.js + Material UI で、 Material Design な Android アプリのプロトタイプを作ってみた - うなの日記
  • JavaScriptアプリケーション用のDependency Injection コンテナ「ContaienrJS」の新版をリリース - うなの日記

    夏休みの宿題ということで、作成してから長らくメンテナンスしていなかった ContaienrJS の新版をリリースしました。変更点は以下です。 新機能 : モジュールの非同期遅延読み込みに対応 require.jsと連携し、コンポーネント(=コンテナ管理下のオブジェクト)が実際に必要とされるまで、そのJavaScriptソースの読み込みと評価を遅延します。 ユーザーがボタンを押したらダイアログを表示するようなシーンで、ボタンが押されたタイミングでダイアログクラスをロードしてインスタンスを作成するといった制御が容易に実現できます。 ↑これに伴い、 コンポーネントの取得が非同期になりました。 Deferredを介してインスタンスを得るようになります。 非同期化のため実現できなくなった一部の機能(Type指定でのコンポーネント取得とか)を整理して削除しました。 ダウンロード ダウンロードは以下より

    JavaScriptアプリケーション用のDependency Injection コンテナ「ContaienrJS」の新版をリリース - うなの日記
  • 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コーディング - うなの日記
    waman
    waman 2011/01/11
    なんかスゲー!
  • 続 リフレクションはやっぱり重いのか? - うなの日記

    昨日の続き。フィールド値の読み込みなど、他に気になっている操作についても測ってみました。 特定の処理を50万回実行した場合の合計所要時間を計測する。(←回数を増やした) 10回試行し平均を取得。 JRE1.4,1.5,1.6でそれぞれ測る。 書き忘れたけど、計測マシンは CPU: Pentium4 2.8Ghz、メモリ:1GB です。 結果 まとめ リフレクション呼び出しはやはりそれなりに重い。 けど、50万回実行してこの程度の差であれば、よっぽどクリティカルな箇所以外では問題ないのでは。 JREごとに見ると、1.6 > 1.4 > 1.5 の順で、1.6が最速(というほど差はないけど)。 リフレクションを使ったメソッド呼び出しは、リフレクションを使ったフィールドアクセスより若干早い。でもメソッドやフィールドの検索時間を含むと微妙。 「Class#isInstance(Object)」「C

    続 リフレクションはやっぱり重いのか? - うなの日記
    waman
    waman 2010/12/02
  • ファイル/デイレクトリを再帰的に削除する。 - うなの日記

    ファイル/ディレクトリを再帰的に削除する関数です。 File.delete()を使って削除します。 存在するにもかかわらずFile.delete()で削除できなかった場合、deleteOnExit()を設定してVM終了時に削除を試みます。 デイレクトリは、中にファイルがあると削除できないため、先に消してから削除します。 /** * ファイル/ディレクトリを削除する。 * @param root 削除対象 */ public static final void clean( File root ) { if ( root == null || !root.exists() ) { return; } if ( root.isFile() ) { // ファイル削除 if ( root.exists() && !root.delete() ) { root.deleteOnExit(); }

    ファイル/デイレクトリを再帰的に削除する。 - うなの日記
    waman
    waman 2010/11/20
    File.delete() はディレクトリの場合空でないとでないと削除してくれない。
  • Rakeの基本的な使い方まとめ - うなの日記

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

    Rakeの基本的な使い方まとめ - うなの日記
    waman
    waman 2010/08/29
  • 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の攻撃手法いろいろ - うなの日記
  • 軽量サーブレットコンテナ「Winstone」でjspをさくっと動かす環境を作る - うなの日記

    軽量サーブレットコンテナ「Winstone」を使って、jspをさくっと動かすための環境を構築する手順のメモです。 ※[http //winstone.sourceforge.net/:title=Winstone]とは:サーブレットコンテナの一種。300kくらいの1つのファイルでHTTPサーバー、サーブレットコンテナの機能が提供されており、インストールが激しく容易。起動も高速でjspやサーブレットをさくっと動作させたい場合に便利です。 概要 手順の概要は以下の通りです。 Winstoneをダウンロード Tomcatからjasper関連のjarを取得して配置 jspの実行を有効化するオプションを付けて、Winstoneを起動する 1.Winstoneをダウンロード Winstoneのサイトからjarをダウンロードします。以下では、最新の「winstone-0.9.10.jar」を取得して使用

    軽量サーブレットコンテナ「Winstone」でjspをさくっと動かす環境を作る - うなの日記
    waman
    waman 2009/08/03
  • 1