log.ソフトウェア関連の技術系記事やウェブサービスに関する話題が中心。2013年9月21日土曜日コマンドラインからHTMLサニタイズするソースコードをブログに貼付ける際に、簡単なサンプルコードをコマンドラインからHTMLサニタイズしたくなりました。そこで、方法を調べたところ、perlやphpをコマンドラインから呼ぶ方法や、recodeコマンドを使う方法が見つかりました。htmlspecialchars($line);'php5.4を前提にしたコードになっていたので、少し修正しました。5.4の場合はHTML5などに対応したオプションフラグが容易されているため、php5.4環境が前提ならばhtmlspecialcharsにフラグを追加するとよいかもしれません。root権限で下記を実行してライブラリを追加する必要がありました。recodeコマンドを使うあまり聞き慣れないコマンドですが、代表的なLinuxディストリビューションのaptやyumパッケージには含まれているようです。様々なテキストコードの変換が可能なので、勉強しておくと結構役立つかもしれません。recodeのインストールrecodeはroot権限にて下記を実行してインストールできます。utf8..htmlutf8のところは文字エンコーディングによって変える必要があります。共有JavaのMapに同じキーの要素を含めるにはJavaのMapに同じキーに対して複数の要素を含めたくなる場合があります。Javaの標準ライブラリに含まれるMapの実装にはHashMapやTreeMapがありますが、これらは重複したキーの要素を単純に登録することはできません。対策1.HashMapなどの要素をコレクション型(ArrayListなど)にするもっとも単純な解決策は要素をコレクション型にすることです。}}対策2.guava-librariesのようなサードパーティライブラリを使用する重複キーをうまく取り扱うことができるサードパーティ製の信頼できるライブラリが公開されています。Guavaプロジェクトのページhttps://code.google.com/p/guava-libraries/重複キーを扱えるMap実装(ArrayListMultiMap)http://guava-libraries.googlecode.com/svn/tags/release03/javadoc/com/google/common/collect/ArrayListMultimap.html下記のサンプルコードを見ると登録がとても簡潔にできるようになっているのが分かるかと思います。共有2013年9月20日金曜日Bloggerでクッキーを使用して初回表示の判定を行うJavaScript(JS)とクッキーを使用して、Bloggerで初回表示の判定をして表示分けをしてみました。BloggerでJSのライブラリを使うためには、どこかのサイトにJSのライブラリを配置する必要がありますが、この2つを配置したCDNサービスが見つかったので、CDNサービスから呼び出すことにしました。テンプレートを修正し、<head>にJSを記述。初回表示エリアに表示内容を記述します。1.<head>部分にJSをロードするタグと追加のスクリプトを記述します。</script>2.次に、<body>の初回表示を行いたい場所に下記のようにブロックを追加して完了です。Componentsという仕様群が作成されている最中です。これには、外部HTMLの読み込み、テンプレートバインディング、カスタムタグなどの機能が含まれており、Web標準の仕様だけで容易にWebコンポーネントの作成を行えるようになります。Componentsを動作させることができます。コンポーネント化のサンプル(BMI計算フォーム)サンプルはBMIを計算するフォームをコンポーネント化しています。フォームのUIと動作はメインのHTML(index.html)とは切り離された外部HTML(gadgets/bmicalc.hml)に記述されています。メインのHTMLからは新たに定義されたカスタムタグをひとつ記述するだけでコンポーネントを表示できます。同じパスに置かないと動作しません。Importsを使ってコンポーネントを定義したHTMLを読み込みます。>3.コンポーネントを表示するカスタムタグを記述します。gadgets/bmicalc.htmlコンポーネントを定義します。1.カスタムタグの名称をpolymer-elementのname属性に指定します。name="devneko-bmicalc">カスタムタグ名はハイフンで区切られている必要があります。2.template要素内にコンポーネントのUIを記述します。3.scriptでPolymer関数を使いカスタムタグを登録します。Polymer('devneko-bmicalc',{Polymer関数の第二引数にはカスタムタグのインスタンスに紐づけるパラメータを指定します。いう属性を使ってハンドラー関数を指定します。gadgets/bmicalc.cssコンポーネントの見た目を定義します。CSSの名前空間が呼び出し元と分離されているわけではないので、呼び出し元や他のコンポーネントと被らないようにクラス名などを指定する必要があります。(Atom)プロフィール@santa128bitdotneet主にウェブ・モバイルアプリの開発をしているソフトウェアエンジニアです。