Blog Archives

SciPyで線形計画問題を解く

Pythonの数値計算ライブラリ SciPy には線形計画問題を解くための scipy.optimize.linprog という関数が存在します。 この関数を使って、線形計画問題を実際にといてみます。 例として次のような線形計画問題を考えましょう maximize subject to 目的関数の右辺に -1 をかけて、目的関数の最大化を目的関数の最小化に変えます。 minimize これを行列で表します。 あとは、行列をリストで表現し、SciPyプログラム(linear-prog.py)に落とします。 実行します。 linprog関数の引数で {“disp”: True} にしていると のブロックのメッセージが表示されます。 “Optimization terminated successfully.” というメッセージからわかるように、問題は無事とけました。 出力結果をもう少し詳しく見てみましょう。 status: 0 最適化の終了ステータスです。 最適解を見つけられると 0 になります。 指定されたイテレーション内にとけないなど、とけなかった時は1以上の値になります。 slack: array([ 0., 0., 4.]) 制約の不等式を等式標準形に直します。

Tagged with: ,
Posted in algorithm, python

tornadoでWebSocketサーバを動かしてみる

Tornado で HTTP サーバを用意 HTML ファイルの JS が WebSocket サーバと通信 ブラウザでこの HTML ファイルを表示。 WebSocket クライアントが WebSocket サーバにメッセージを送信すると、HTML が書き換わる というようなシナリオを実現するシンプルなデモを作ってみました。 WebSocket Server サーバには表題の通り Python Tornado を利用します。 パッケージのインストール Tornado のビルドには Python のヘッダーファイルが必要です。 以下は RedHat 系でのインストール例です。 コード クラス Tornado.websocket.WebSocketHandler を継承して WebSocket サーバを実装します。 WebSocket

Tagged with: ,
Posted in python, web

AWS CLIにオレオレwaitコマンドを追加する

aws cliには API 呼び出し後、特定のステータスになるまでポーリングする wait コマンドがあります。 例えば ec2 インスタンスを起動する API を呼び出し後、インスタンスの起動が完了するまで待つには $ aws ec2 wait instance-running –instance-ids xxx のようにします。 この wait 機能が実装されるまでは というように、ポーリング処理を自前で実装しなければいけ ませんでした(例外処理も真面目にやるとさらにごちゃごちゃする)。 この wait 系コマンドを独自追加する方法をメモ。 cloudformationでスタック構築完了を待つ 例として cloudformation でスタックの作成APIをたたいたあと (crete-stack)、スタックの構築が完了するまでポーリングするコマンド $ aws cloudformation wait stack-completed を実装してみましょう。 AWS CLI で

Tagged with: , , ,
Posted in aws, python

[Python]Clickでコマンドラインアプリケーションを作る

Python でコマンドラインプログラムを書くときのライヴラリに Click というのがある。(キャッチコピーは “Command Line Interface Creation Kit”) “The Hitchhiker’s Guide to Python” の “Command-line Application” でも CLI 用のライブラリとして clint などとともに取り上げられている。 作者の @mitsuhiko が YouTube に “Building Command Line Applications with Click” という20分弱の動画を投稿している。 固定メッセージを返すシンプルなアプリケーションを少しつづ拡張していき、最後には git 風のサブコマンドを実装する。 勉強がてら書き起こしてみる。 動画が公開されたのは Click

Tagged with: , ,
Posted in python

Ansibleのコールバックプラグインを使ってみる

Ansible にはコールバックプラグインというのがあり、プレイブックの実行終了や異常終了などの各種イベントをフックして特別な処理を仕掛けることができる。 なかなか便利な機能だと思うけど、ポインター的なドキュメントしか存在せず、自分でコールバックプラグインを作りたければ、既存のプラグインのコード読めみたいな書き方しかされていない。 プレイブックを実行し、hipchat コールバックプラグインでチャットループに実行結果を通知するところまでをメモ。 ping するだけのプレイブックの作成 まずは Ansible プレイブックの作成。 localhost に対して ping を実行するだけのプレイブックを作成する。 hosts ファイル プロビジョン対象。 今回はローカルホストに対して実行する。 ping するだけのプレイブック ping モジュールを呼び出して、ターゲットに ping を実行する。 プレイブックを実行 面白くもなんともないが、プレイブックは無事実行終了。 コールバックプラグイン連携 次に hipchat のコールバックプラグインと連携し、hipchat のチャットルームにプレイブックの実行結果を通知させる。 hipchat の API を取得 hipchat 管理画面から Group Admin ->

Posted in middleware, python

rsyslogのアウトプットプラグイン機能(omprog)を使ってみる

概要 rsyslog のアウトプットモジュールには omprog というのがあり、好きな言語でsyslog データを標準入力で受け取り、データを処理するプラグイン機構がある。 この機能は rsyslog 4.3.0 と結構昔から存在するにもかかわらず、自分は知らなかったのだけど、rsyslog のブログでこの機能を知ったので、ミニマムで動かすところまでを試してみた。 http://www.rsyslog.com/writing-external-output-plugins-for-rsyslog/ # omprog は v4 のころからあるのに with v8, we officially support external plugins とコメントされているのは突っ込まないでおく。 検証環境 OS : CentOS 6 rsyslogd 8.2.2 rsyslog external plugin 通常のモジュールは、アウトプットを例にすると ローカルのファイルシステムに出力に出力する omfile や MySQL

Tagged with: ,
Posted in linux, middleware, python

[Python]cramテストをsetup.pyから実行させる

最近利用した Python ライブラリでは cram を使ってテストがかかれてあり、setup.py からテスト実行できるようになっていた。ミニマムな実現方法をメモ。 cram とは URL : https://bitheap.org/cram/ 一言でいえばコマンドラインの実行結果をテストする機能テストツール サイトから引用すると Cram is a functional testing framework for command line applications based on Mercurial’s unified test format. Cram tests look like snippets of interactive shell sessions. Cram runs

Tagged with: , ,
Posted in python
Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 4 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 4 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago