ラベル Dev の投稿を表示しています。 すべての投稿を表示
ラベル Dev の投稿を表示しています。 すべての投稿を表示

2014年10月16日

CentOS 7 と Docker のメモ

さくらインターネットの VPS で OS を CentOS 7 にしたのでメモしておきます。 VPS のデフォルトは CentOS 6 なので、手動でカスタム OS を選択しています。 ディスクのパーティション設定や管理者ユーザーの設定はインストーラーで終わっているものとします。

2013年10月15日

Python でアクセスログを TSV に変換する

Apache のアクセスログを TSV 形式 (or LTSV) に変換するスクリプトが欲しかったので書いてみました。

用途としては、 grepawk の組み合わせでは面倒だけれども、 FlumeFluentd などをインストールする規模でもないサーバーを想定しています。 ちょっとした開発用のサーバーや、社内サーバーのアクセス状況を見るには十分かな、と思います。

2013年9月6日

Yeoman 1.0 がリリースされたので使ってみる

ついに Yeoman 1.0 がリリースされました!

Yeoman を使うことでアプリケーション開発を始めるときに設定ファイルやビルド定義ファイルを自動生成できるようになり、 各種ファイル置き場の共通化を図ることができます。

  • Gruntfile ってどう書くの?
  • JavaScript で使う HTML テンプレートファイルの管理ってどうやるの?
  • CoffeeScriptSass の導入って難しい?
  • 監視するファイルが多岐に渡ると LiveReload の設定が難しい ...
  • テストしてスクリプトを圧縮してパッケージに固めてサーバーに置くまでのコマンドが長い ...

こうした疑問や悩みを解決してくれるのが Yeoman の役割です。 Yeoman を使うことで Bower にも依存することになりますので、 jQuery のようなライブラリ/フレームワークを管理する方法も自然と身に付くでしょう。 また、JavaScript の MVC フレームワークを使う場合は、各レイヤーの定型ファイルを生成できます。

この記事では Backbone.js を使って Web アプリケーションのフロントエンドを作ってみます。 そもそも Yeoman って何? という場合は「 Yeomanについて 」というスライドが分かりやすいと思います。

2013年7月15日

東京の地価公示データを眺める

国土交通省はいくつかの数値情報を提供してくれていますが、 その中のひとつに「地価公示データ」があります。

全国のデータは2007年からの提供ですが、都道府県のデータは1983年から提供されていますので、 東京都の30年の地価のそれぞれを表現してみます。 なお、東京都全域だと広すぎるので、島嶼部は除きます。

作成したものは下記のページに置いてみました。

実装方法としては、こちらの記事のデータセットを変更したものになります。 GDAL のセットアップや d3.js を使った GeoJSON の描画については下記の記事やそのリンク先を参照してください。

2013年7月2日

郵便番号データの「データパッケージ」

郵便番号データのデータパッケージ (DataPackage) を作ってみました。

データパッケージとは:

A Data Package (or DataPackage) is a coherent collection of data and possibly other assets into a single form. It provides the basis for convenient delivery, installation and management of datasets.

(日本語)

データパッケージとは、理路整然としたデータの集合と、その他にも有用なものをひとつにまとめたものです。 データパッケージは、データセットの簡便な配信、導入、管理の土台を提供します。

つまり、配信や管理を簡単にできるよう、データにメタデータなどを付与してまとめておきましょう、ということです。 Open Data Protocols で定義される Simple Data Format (SDF)、JSON Table Schema、CSV Dialect Description Format (CSVDDF) をまとめたものです。

2013年6月18日

Open Data Protocols

Open Data Protocols の仕様を駆け足で紹介します。 いろいろなデータを扱うときに困ってしまうのが、フォーマットがバラバラ、という事態です。 データファイルのフォーマットというと CSV やら JSON やら XML やら、、、色々あります。 Open Data Protocols が取り組んでいるのは、 機械的にデータを処理するときに可搬性のある方法を構築していこう、という感じのことです。

ホームページの説明では(いきなり "a the" なのは残念。。。):

This site is a the home of simple protocols and formats for working with open data. Our mission is both to make it easier to develop tools and services for working with data, and, to ensure greater interoperability between new and existing tools and services.

日本語にするとこんな感じでしょうか。

このサイトは、オープンデータを扱うためのシンプルなプロトコルとフォーマットの出発点となるものです。 私たちのミッションは、データを扱うツールやサービスの開発を簡単にすることと、 新旧のツールやサービスをまたいでも素晴らしい相互運用性を保証することの両方です。

実際には、JSON でメタデータを定義して実データは CSV で管理する、ということになります。 簡単な表形式のデータをターゲットにしています。 複雑なグラフ構造や依存関係を持つようなデータは、おそらく対象にしていませんので注意しましょう。

この記事では、Simple Data Format (SDF)、JSON Table Schema、CSV Dialect Description Format (CSVDDF) を順々に見ていきます。

2013年6月12日

AWS Summit Tokyo 2013 に行ってきた

AWS Summit Tokyo 2013 に行ってきました。 初日は基調講演だけでしたが、2日目は終日参加してきました。 様々な業種の会社の方々が登壇されており、AWS のエコシステムが広がっていることを実感しました。 Amazon.com の CTO の Werner Vogels 氏が引用した、CEO の Bezos 氏の言葉がとても印象的でした。

創造性を解き放ち、夢を追い求める力を人に与えるものが、もっとも革新的で変革力のある発明なのです。

  • 1日目・キーノート
  • 2日目・キーノート
  • デジタルマーケティングにおけるクラウド適用俯瞰図
  • 大規模案件の裏側 ~巨大AWSインフラ事例のご紹介~
  • クラウドで RTB ~50ms or die. を支えるFreakOut の AWS 活用~
  • お客様のビッグデータ活用をナビゲーション ~ビッグデータ×クラウド活用の現状とマーケティング事例~

2013年5月14日

Java Day Tokyo 2013 に行ってきた

Java Day Tokyo 2013 に行ってきました。 「MAKE THE FUTURE JAVA」というタイトルで1日がかりのイベントとなりました。 アメリカのオラクルからもエンジニアが来てくれて、講演や Q&A セッションがありました。

以下のセッションに参加したのでメモをまとめておきます。

  • Keynote (基調講演)
  • Ask The Expert
  • ここからはじめる、JSR-356 WebSocket
  • Java IDE の最新トレンド
  • タブレット用の JavaFX アプリケーション開発

2013年4月24日

CloudFormation を使って Solr4 を動かす

AWS CloudFormation を使って Solr4 を動かしてみます。 こちらの記事をテンプレート化したものです。

初期設定などをテンプレートにまとめることで、素早く環境を構築できるとともにオペレーションミスを予防できます。Cloud Design Pattern の Stack Deploymentパターンに分類されるそうです。 devopscloud.com の "Lesson 5 - Infrastructure Automation" が順を追った説明になっていると思います。

2013年4月19日

Python の LiveReload で任意のコマンドを実行する

Python LiveReload が 0.15 にバージョンアップされ、 shell() という関数で任意のコマンドを実行できるようになりました。 自分が実装したものが取り込まれたので、簡単に紹介しておきます。

Python の Livereload 自体に関しては下記の記事で紹介しています。 ドキュメントをプレインテキストで書いて HTML で読む、という用途とは相性が良いと思います。

2013年4月17日

Amazon EC2 で Solr 4 を動かす

Amazon の EC2 で Solr 4 を動かしてみます。 Web アプリケーションのコンテナには Tomcat を使います。 基本的なことは Solr の Wiki に書かれています。

この記事では、Amazon Linux でインスタンスを立ち上げて、Tomcat を使って Solr を動かす手順を紹介します。

2013年3月21日

Yeoman 1.0 Beta を使ってみる

じわじわと広がりを見せる Yeoman ですが、大きく役割を変えてバージョン 1.0 に進みそうです。 以前は GruntJSBower などを統合したツールでしたが、 今後はこれらと協調して動作するための「雛形を生成するツール」になるようです。

ホームページでの紹介文も変わっています。

Yeoman 1.0 is more than just a tool. It's a workflow; a collection of tools and best practices working in harmony to make developing for the web even better.

また、コマンドライン上で利用するコマンドも yeoman から yo になります。 bowergrunt をラップしていた部分がなくなり、 アプリケーションを書き始めるときの scaffolding のみを提供します。 ホームページに3つの画像が並んでいることがこれらを象徴しています。

この記事では、 backbone.js を読み込む部分までを追ってみましょう。

2013年3月12日

D3.js と GeoJSON でポリゴンを描く

こちらの記事を参考にして、東京都のポリゴンを描いてみます。

違いは2点です。

  • イギリスではなく「東京都」のポリゴンを使う
  • TopoJSON に変換せず GeoJSON を使う

作成したものは下記のページに置いてみました。

「23区」と「島しょ部除く」のデータはすんなり表示されると思いますが、 「全域」のデータは大きいのでかなり時間がかかります。 これは TopoJSON を使う動機付けになりそうです。

2013年3月1日

Python のモジュールスクリプトを使ってアクセスログをだらだら眺める


Python でちょうど良いスクリプトが見つからなかったので、 下記のパッケージのモジュールスクリプト (*) として実装してみました。

アクセスログのファイルが /var/log/nginx/access.log にある場合、 下記のようにして実行できます。

$ pip install clitool
$ tail -f /var/log/nginx/access.log | python -m clitool.accesslog

入力データは標準入力でも引数にファイル指定でも、どちらも受け付けます。 --color オプションを付けると、ステータスコードが400台と500台の場合に色が付きます。 デフォルトのフォーマットであれば Apache でも Nginx でも一緒だと思います。

ログ形式を LTSV (Labeled Tab-separated Values) に変更した方が管理しやすいのかもしれませんが、 過去数年分に遡って変換するとなると気力が持たないので、生ログを処理できるようにしています。

(*) 正式名称が分からなかったので、モジュールとして実行するスクリプト、の意味で使用。

2013年2月22日

2013年のJリーグのカレンダー

今年もJリーグが開幕しますのでカレンダーフィードを作りました。

「Google」というボタンをクリックすると、チームごとのスケジュールを Google Calendar に追加できます。 パソコンでもスマートフォンでもカレンダーを共有している人は便利だと思います。 まだ前半戦のスケジュールしか公開されていませんが、後半戦のスケジュールが発表されたら追随する予定なので、 追加漏れも無くなると思います。(去年は後半戦の反映が遅れて自分でも困りました)

iCal 配信部分は去年作ったものがありますので、そのデータを更新しただけですが、 昇格・降格の反映、スタジアム名称の反映の2点も実施しました。 ネーミングライツの関係で名称が変わったスタジアムがあるためです。 オフィシャルサイトは短縮表記を使っていますが、これでは検索しても引っかかりにくいので、 できるだけ正式名称を使うようにしています。

また、表示順序をランダムにし、リロードする度に変わるようにしました。 特に意味はありませんが、何かの縁のあるクラブのスケジュールを登録するのも良いかもしれませんね。

今シーズンから J1 に昇格した湘南ベルマーレのスケジュールはこんな感じになります。

JFA がスケジュールをオープンデータで配信してくれると嬉しいんだけどなぁと思いました。

関連:

2013年2月16日

Sphinx と LiveReload を組み合わせる

こちらの記事の Python 版です。

Sphinxの更新をguard-livereloadで検知してブラウザを自動リロードする

sphinxでドキュメントを書く際に生じる「文章の記述 => ビルド => ブラウザでの確認」 という一連のサイクルを人力でやるのは効率が悪い。 いろいろな省力化対策が考えられるが、ここでは guard-livereloadを使って、 文章のビルドとブラウザのリロードを自動化する方法を説明する。

2013年1月18日

NetworkX を使って GEXF ファイルを作成する

Python でネットワークもしくはグラフデータを扱うライブラリ NetworkX を使って GEXF ファイルを作成してみます。 GEXF は XML でグラフを表現するフォーマットです。

NetworkX is a Python language software package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

2012年12月11日

FC東京の2012年の成績をグラフ化してみる

今年のJリーグもシーズンが終わりましたので、FC東京の結果をグラフで確認してみます。 FC東京をグラフの中心に据えて、他のチームを環状に配置し、それぞれのチームを接続します。 接続線の太さは得点数とします。 それを機械的に描画してみるとこんな感じになります。

個別のチーム名を確認したいときは、こちらのページで色々と動かせるようになっています。

2012年12月6日

Python パッケージを作ってみた (clitool)

似たような処理を書く機会が増えてきましたので、Python のパッケージを作ってみました。

Unix 系のツールのお作法として、次のようなルールがあると思います。

  • 引数でファイルのパスを複数与えられた場合は、それらを連続して処理する
  • 引数が無い場合は標準入力から読み込む

grep, sed, awk, sort などはこれらの挙動をしますので、 パイプライン処理を簡単に実現できます。

上記の条件に沿ったコードを書くこと自体は難しくないと思いますが、 存在しないファイルが指定されたときにどうするか? 入力テキストの文字エンコーディングを指定したときにどうするか? ログ出力のレベルをどうするか? といったことを考え始めると、 それはそれで煩雑になっていくと思います。 1週間に2回以上もそんなことを考えているとうんざりするでしょうし、 そういったエラー処理を考慮しないスクリプトを運用するのも大変でしょう。

上記のパッケージを使うと、Python を素のまま使うよりは簡単に記述できると思います。 Python 2.7 と Python 3.3 で動かせるように書いているつもりです。

この記事ではパッケージの導入方法と簡単なスクリプトを紹介してみたいと思います。