Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

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

  • Clairをインストールして、Dockerイメージの脆弱性スキャンをする手順 - うなの日記

    Dockerイメージの脆弱性スキャンツール「Clair」 をインストールして、ローカルのイメージをチェックする手順です。微妙にはまったのでメモ。 0.環境 $ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) $ docker -v Docker version 1.10.2, build c3959b1 1.PostgreSQLをインストールして起動 $ docker pull postgres:latest $ docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=<パスワード> -d postgres 2.clairをインストールして起動 $ mkdir ./clair_config $ curl -L https://raw.githubuse

    Clairをインストールして、Dockerイメージの脆弱性スキャンをする手順 - うなの日記
  • OANDA fx Trade API を使って、リアルタイムな為替レートを取得してみる - うなの日記

    今さらですが、OANDA Japan から FXトレードAPI が提供されているのを発見。 www.oanda.jp レート情報の取得から、取引、建玉情報の取得などのFX 取引に必要なAPI一式が提供されています。 初期費用、月額利用料金は無料。ただし、口座残高が25万円以上必要です。 物の口座を使うLive環境のほか、デモ口座のアカウントで使える Practice、アカウントなしで試せるSandbox環境も提供。 REST APIの他、Java/FIX版のAPIも有り。 機能もかなり充実してます。格的なトレードアプリも作れるんじゃないかな。 REST APIだけど、ストリーミングでのレートデータ配信に対応 Transfer-Encoding: chunked で配信する仕組みで、ポーリングなしでリアルタイムなレートデータを取得できます。 OAuth 2.0での認証に対応 サードパーテ

    OANDA fx Trade API を使って、リアルタイムな為替レートを取得してみる - うなの日記
    tarchan
    tarchan 2015/05/26
  • JavaScript Dateのタイムゾーン指定できない問題とその対策 - うなの日記

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

    JavaScript Dateのタイムゾーン指定できない問題とその対策 - うなの日記
  • 今さらながら、今日初めて知ったクラスセレクタの記法・・・ - うなの日記

    div.foo.var { .... } SASSの拡張シンタックスかと思ったら、普通にCSSの仕様にあった・・・。マジか。 CSS3 Selectors - 6.4. Class selectors The following rule matches any P element whose class attribute has been assigned a list of whitespace-separated values that includes both pastoral and marine: p.pastoral.marine { color: green } This rule matches when class="pastoral blue aqua marine" but does not match for class="pastoral blue".foo

    今さらながら、今日初めて知ったクラスセレクタの記法・・・ - うなの日記
    tarchan
    tarchan 2014/08/21
  • Knockout + ContainerJS でテスタブルにToDoリストを作るチュートリアル - うなの日記

    Knockout + ContainerJS + Require.js で テスタブル にToDoリストを作るチュートリアルです。 ポイント MVVMアーキテクチャでテスタブルに MVVMアーキテクチャを採用し、View(HTML/CSS)とViewModel,Modelを分離。 ViewModel、Modelは HTMLに非依存となるため、単体テストが可能になります。 オブジェクトの生成と依存関係を、DIコンテナで一元管理 DIコンテナを利用して、ViewModel、Modelの生成と関連付けを自動化。 コンポーネント間の結合を疎にでき、テスト時のモックへの差し替えも簡単にできるようになります。 JavaScriptソースはクラスごとに分割管理 1ファイル200行超えたらメンテナンスとか無理ですよね! ということで、ソースファイルはクラスごとに分割管理します。 ソース間の依存関係解決と読

    Knockout + ContainerJS でテスタブルにToDoリストを作るチュートリアル - うなの日記
  • Seleniumを使ったWeb UI自動テストシステムの構築でやったことまとめ - うなの日記

    Seleniumを使ったWeb UIの自動テストシステムを作ったので、やったこと・感想などをまとめてみます。 テスト対象 テスト対象は、AJAXなWebアプリです。 サーバーはREST APIを提供するのみで、UIは全てJavaScriptという構成。 サポートブラウザはIE7以降,Firefox3.6以降。(特定の組織内で使うものなので、Operaなどは未サポートです。) 使用したSelenium 2.x 系列を使いました。 WebDriverと統合されたあとのやつです。 言語はJavaを使用。 テストの目的 以下を目的としました。 機能追加/不具合改修でのデグレード防止 機能追加や不具合改修に伴う動作不正を検出し、デグレードを未然に防止する。 動作確認コストの削減による開発効率の向上 ブラウザごとの動作確認を自動テストを利用して行うことで、機能実装時の確認工数を減らす。 リリース前のリ

    Seleniumを使ったWeb UI自動テストシステムの構築でやったことまとめ - うなの日記
  • [Javascript] AJAXアプリでオートコンプリート機能を有効化する際の注意事項 - うなの日記

    ユーザー名とパスワードをブラウザに覚えさせられるオートコンプリート機能ですが、入力されたデータをAJAXで送信して認証するタイプのアプリで使うにはいろいろと工夫が必要です。ということで、AJAXアプリでオートコンプリート機能を有効化する際の注意事項などを調べた範囲でまとめてみました。以下に挙げた手法を適用することで、IEとFirefoxではなんとか動作するようになりましたが、Chrome/Safariはまだダメです。 注意: 動作確認は手元にあった以下のブラウザで行っています(いずれもWindow版。)。他のバージョンでどうなのかは未確認です。 Firefox 3.6.17,4.01 IE 8 Chrome 11 Safari 5.0.5 サマリ IEでの記憶にはwindow.external.AutoCompleteSaveForm(form) を使用する FormをonLoad後に動的

    [Javascript] AJAXアプリでオートコンプリート機能を有効化する際の注意事項 - うなの日記
  • AJAXサイトの定期観測向け性能計測ツールを作ってみた - うなの日記

    AJAXサイトの定期観測向け性能計測ツールを作ってみましたよ。 ページの読み込み時間、サーバーAPIの呼び出し時間ならJMeter、JavaScriptの実行時間ならBenchmark.jsで計測できるけど、 これらをひっくるめた読み込みを開始してから画面に情報が表示されるまでにかかる一連の時間を計測するツールとなるとFireBugくらいしか見当らないなー・・・。 FireBugでも計測はできるけど、計測対象ページがいっぱいあったり、5回計測して平均をとる、とかいう場合にはちょいシンドイ。 FireBug自体のオーバーヘッドも若干気になるし・・。 あと、IE7,8でも測らんといかんので、同じ仕組みでIEでもFireFoxでも計測できるようにしておきたい。 というのが経緯。「ログ出力監視方式」の計測ツールならこれらの要件を満たせそう && 割とさくっと作れそうじゃね?と思い立って作ってみまし

    AJAXサイトの定期観測向け性能計測ツールを作ってみた - うなの日記
  • GAE+JSPではまった点x3 - うなの日記

    GAE+JSPではまった点x3のメモ。雑魚中の雑魚ばかりですが。 1.JSTLが使いたい! GAEではデフォルトで組み込まれているので、WEB-INF/libにjstl.jarとかstandard.jarとかを追加する必要はありませんよ。 「Google App Engine - JDO を利用したデータストアの使用」のヒントのところにさりげなく記述があります。「JSTL」で検索。 2.EL式が評価されない ページ属性の定義で、「 isELIgnored="false" 」にしないとEL式は評価されません。 <%@ page contentType="text/html; charset=UTF-8" isELIgnored="false" %>「JavaServer Pages (JSP) v2.0 Syntax Reference - Page Directive」によるとデフォルトは

    GAE+JSPではまった点x3 - うなの日記
  • miibotのOAuth対応メモ - うなの日記

    TwitterでBasic認証が利用できなくなるらしいので連休を利用してmiibotのOAuth対応をしましたよ、ということで以下は対応手順のメモです。 はじめに miibotはGoogle App Engine/Javaで動いています。 いわゆるbotさんです。OAuth対応といっても、ハードコードした固定のアカウントで認証してつぶやければOK。 botでのOAuth認証 OAuth認証でのAPIアクセスの流れは、大雑把に以下のような感じになります。 dev.twitter.comにアプリケーションを登録し、consumer key, consumer secretを取得 consumer key, consumer secretを元に、Twitterのサイトよりrequest token, request secretを取得。 Twitterの認証サイトで認証。 request tok

    miibotのOAuth対応メモ - うなの日記
  • GAEで作るサムネイル画像作成サービス - うなの日記

    Google App Engineでは画像変換サービスが提供されていて、画像サムネイルサービスをさくっと作れたりします。ということで作成手順をまとめてみました。 仕組み サービスの仕組みは以下のとおりです。 画像のアップロード formのファイル選択を利用して、画像をサーバーにPOST。 マルチパートフォームデータとして画像がサーバーに送られます。 サーブレットでマルチパートフォームデータを解析し、画像データを取得。 解析には「commons-fileupload」を利用します。 GAEの「ImageService」で画像データを処理し、サムネイルを作成します。 作成したサムネイルとオリジナルの画像をデータストアに保存。 レスポンスとして、サムネイルの表示時に使うサムネイルIDを返却します。 画像は、他に適切な場所が見当たらなかったので、とりあえずデータストアに保存しています。 画像の参照

    GAEで作るサムネイル画像作成サービス - うなの日記
  • Java変態?コード最速マスター - うなの日記

    Java変態文法最速マスター - プログラマーの脳みそが面白かった && 参考になったので便乗してリスペクト。変態世間であまり見かけない(かも知れない)Javaコードを、過去のエントリからまとめてみました。 nullでなければループ 「配列がnullでなければループ」というシーンはまれにありますが、nullチェックのためにインデントが深くなるのが我慢ならん、というときにこういう記述はどうでしょう。 String[] strs = // 略 // 配列がnullでなければ各要素に対して処理を実行 if ( strs != null ) for ( String str : strs ) { // 処理 } if文の「{}」を省略してforを繋げているだけですが、インデントをさりげなく削れます。 似たような例で、「例外を無視して次へ」とかも。 // 例外が発生しても無視して次へ for ( S

    Java変態?コード最速マスター - うなの日記
  • データ更新を行うユーティリティ - うなの日記

    検索条件作成ユーティリティ向けに定義したプロパティを再利用して、データの更新を行うユーティリティも作ってみました。専用のユーティリティとペアで使うことで、 ↓のような感じで指定したモデルの属性を更新(以下の例では、年齢を"2"に更新)できるようにするものです。 // 更新対象のモデル Kitten mii = null; // 略 //mii の age プロパティを2に更新 set( KittenProperties.AGE, 2 ).update( mii ); Google App Engineでは、取り出したモデルの属性を再設定すれば、データストアで記録された値も更新されるので、 public void update(Class<X> clazz, Key key, Values<? super X> values) throws UpdateFailedException { X

    データ更新を行うユーティリティ - うなの日記
  • Javaメソッドの呼び出し元をツリー表示するスクリプト - うなの日記

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

    Javaメソッドの呼び出し元をツリー表示するスクリプト - うなの日記
  • これで一区切りとします。 - うなの日記

    「1日1エントリ」のルールで続けてきたこのブログですが、今日の記事で連続投稿1000日目となります。 1000日続けてみた感想ですが、 技術的知識は(当たり前ですが)だいぶ増えましたよ。また、このブログ自体も個人的なデータベースとして日々役立っていますよ。 新しい技術情報を意識して探すようになった。というか、「毎日更新」なので日々新しい何かを探してないとネタが尽きる・・・。 「"1000日毎日コード書く"と決めて実績できる人」らしいということが解った。 といったところは良かったかなと思っています。 さて、今後ですが「1日1エントリ」での更新は一旦終了としたいと思います。諸般の事情で毎日更新するのが難しくなってきたというのもありますが、以下の思惑もあります。 記事のクオリティを多少なりとも何とかしたい 時間がなくてほとんど推敲しないまま投稿してしまったり、 来はまとめて1エントリとしたほう

    これで一区切りとします。 - うなの日記
    tarchan
    tarchan 2010/01/18
    1000日連続すごい!
  • svn:externals - うなの日記

    「svn:externals」プロパティをフォルダに設定しておくと、別の階層にある任意のSubversionフォルダをそのフォルダ以下にまとめてチェックアウトさせるようにできます。 プロパティのキーは「svn:externals」で、値は、 <ディレクトリ名> <svnのURL>の形式で書けばOK。改行区切りで複数の値を設定することも可能です。具体例は以下。 foo http://example.com/svn/test/foo var http://example.com/svn/test/varEclipseからだと、 Subversion管理下のフォルダを右クリック メニューから[Team]-[プロパティの設定] から設定できます。

    svn:externals - うなの日記
  • 指定パッケージ内のクラス一覧を取得するサンプル - うなの日記

    1.6より追加されたStandardJavaFileManagerを使用して、指定パッケージ内のクラス一覧を取得するサンプルです。 import javax.tools.DiagnosticCollector; import javax.tools.JavaCompiler; import javax.tools.JavaFileManager; import javax.tools.JavaFileObject; import javax.tools.StandardLocation; import javax.tools.ToolProvider; ... JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); JavaFileManager fm = compiler.getStandardFileManager(

    指定パッケージ内のクラス一覧を取得するサンプル - うなの日記
  • サイトの仕様変更に対応したclickclient_scrapをリリース - うなの日記

    またサイトの仕様が変わったらしくレート一覧の取得ができなくなっていたので、変更後のサイトに対応したclickclient_scrap-0.1.9をリリースしておきました。 →Github - unageanu / clickclient_scrap →Gemcutter.org - clickclient_scrap あと、これは仕様変更以前からのバグだった可能性が高いのですが、 スワップが1000を超えると、その通貨ペアがレート一覧に含まれない 具体的にはZARJPYのレートが取得できなくなっていた。 という問題もあわせて修正しています。 更新手順 以下の手順でupdateできます。 $ gem update clickclient_scrapjijiで使用している場合は、一旦止めてからお願いします。 $ jiji stop $ gem update clickclient_scrap

    サイトの仕様変更に対応したclickclient_scrapをリリース - うなの日記
    tarchan
    tarchan 2009/12/31
  • クラスファイルを比較するスクリプト - うなの日記

    Javaのクラスファイルを比較するスクリプトを作りました。 引数で指定したディレクトリx2内のクラスファイルを再帰的に探索し、 javapで解析。 解析結果をdiffで比較する。 というものです。 #!/bin/bash javap_r() { mkdir $1 for file in `find $2 -name "*.class"`; do javap_file=`echo $file | sed -e "s/${2//\//\\\/}/${1//\//\\\/}\//"` mkdir -p ${javap_file%/*} class=`echo ${file//\//.} | sed -e "s/${2//\//\.}//"` javap -classpath $2 -c ${class%.*} > $javap_file echo "javap $file to $javap_f

    クラスファイルを比較するスクリプト - うなの日記
    tarchan
    tarchan 2009/12/28
    逆アセンブルして差分をとる
  • 今日知ったハック - うなの日記

    「* + html ...」というセレクタがふんだんに使われていて、なんだこれ?と思ったらハックでした。 →スター + ハック IEにだけ適用したいCSSを定義する時に使うらしい。以下はIEでのみ文字が赤で表示されるサンプルです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> /* IEにのみ適用されるCSS */ * + html #text { color : #FF0000; } </style> </head> <body> <span

    今日知ったハック - うなの日記
    tarchan
    tarchan 2009/12/18