Python

Raspberry PI の Python で、Bluetooth を使って出退勤管理したい。

  1. やりたいこと
    =================================
    会社に Raspberry PI を置いて、iPhone の Bluetooth を使って出退勤管理を Google スプレッドシートに自動入力したい。仕様としては、
  • Raspberry PI の Bluetooth デバイスの検知と連動して
  • あらかじめ作成しておいた Google スプレッドシートに
  • 会社に出社したら出社時刻、
  • 退社したら退社時刻を自動入力する。

やりたいのはたったこれだけだが、手入力で管理する手間を考えたら自分の貴重な時間を年間 12〜20時間は削減できるはず!(当社比(笑、1日 3〜5分かかるとして年間 240日出勤と仮定)これは約半日〜1日に相当する。それでは実際に作ってみましょう。

続きを読む

AWS SQS を使う

Jenkins 側

#!/bin/bash

export TARGET_HOST='{"hostname":"http://example1.com","username":"user1","password":"pass1"} \
                    {"hostname":"http://example2.com","username":"user2","password":"pass2"}'

export SQS_QUEUE_NAME='eaxmple_queue'

for TARGET_HOST in ${TARGET_HOSTS}; do

  export SQS_QUEUE_URL=$(aws sqs get-queue-url --queue-name ${SQS_QUEUE_NAME} --output text)
  export SQS_MSG_BODY=${TARGET_HOST}
  aws sqs send-message --queue-url ${SQS_QUEUE_URL} --message-body ${SQS_MSG_BODY}

done
続きを読む

デバッグの方法

みなさんは、日ごろプログラミングにおいてデバッグはどのようにされているだろうか。Eclipse などの開発環境を使っている場合は、それを利用すればいいと思う。

続きを読む

Python で、設定ファイルを読み込む方法 (ConfigParser)

Python で、例えば settings.ini などの設定ファイルからパラメータを読み込んで処理したいときには、ConfigParser というクラスを使う。その settings.ini の内容は以下のようになる。ご覧の通り、[credential]や [options] など、任意のセクションが必要になる(セクション名は自身で勝手に名づけてよい)。


[credential]
username=admin
password=password

[options]
port=9999
interval=10

ここでは settings.ini に username、password、port、interval と、4つのパラメータを用意している。このように settings.ini を用意しておき、これを Python スクリプト中から読み込むには以下のようにする。

続きを読む

Python で、XMLRPC を使う。

Python で XMLRPC を扱うには、涙がちょちょぎれる(死語?)ほど簡単であった。XMLRPC サーバ側を Drupal にすると、その生産性は何倍にもなるであろう。

そこでまず、

  • XMLRPC サーバとしての Drupal 側ではアクセスしてきた XMLRPC クライアントの IP アドレスを返してあげる機能、

すなわち get_addr メソッドを実装する。そして

  • Drupal にアクセスして get_addr メソッドをコールする Python の XMLRPC クライアント

を考えてみる。

しかも Drupal の XMLRPC サーバには、Drupal のユーザー名とパスワード(今回は admin / password)でログインチェックも行うようにする。

続きを読む

Python の if文

うちの奥さんの方で不幸があったため、急遽日本に一時帰国していました。更新が滞って申し訳ないです。

さて、Python の if文は次のような感じ。式の終わりはコロン(:)で終るのが Python の文法だから、if文も例外にもれず、if の行の最後はコロンで終わる。

Python の else if は、Perl や Ruby の elsif でも PHP の elseif でもなく、elif である。

if i==1: print "passed 1" elif i==2: print "passed 2" else: print "passed"
続きを読む

Python の for文

Python の for文は、旧来の言語にあるような for (初期値; 条件式; 加算式) { ... } という形式ではなく、最初から Perl の foreach i (a) とか PHP の foreach(a as i) に近い(← a が配列で i が要素のとき)。イテレーションを前提に処理するような感じで面白い。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for i in a: print i
続きを読む

Python のコンストラクタ

コンストラクタは、__init__() であった。以下はコンストラクタの引数に変数 value を渡して、クラス変数に代入する例。 class Example: value = 'a' def __init__(value):
self.value = value
def getValue(self) :
return self.value
続きを読む

Python で、三項演算子の書き方は?

ほとんどのプログラミング言語では、if~else~を1行で書く方法がある。C をはじめ、多くのプログラミング言語では、条件 ? 真の場合 : 偽の場合 という書式(もちろん、C をベースにしている Java も)となる。if(条件) { 真の場合 } else { 偽の場合} と同義である。これを三項演算子という。慣れないと意味不明だろうが、筆者はわりと好んで使う。以下に Perl、PHP、JavaScrip、そして Python と、それぞれの例で考えてみよう。

続きを読む

Python 文法のポイント

Python を覚える際に、まずは以下のポイントを頭に入れておくとよいと思う。基本的に Java + PHP + Perl といった感じだ。

  • ファイルの拡張子は .py
  • コメントは #
  • 区切り文字は改行
  • 他の言語にみられるブロック {...} はインデント
  • 式や宣言の行の 1行目にの最後にコロン(:)
  • 関数や宣言は def で開始
  • クラス宣言は class で開始
  • ライブラリインポートは import
  • 変数の型宣言はなし(ガーベッジコレクションあり)
  • グローバル変数は PHP みたく global キーワードを付ける
  • 配列は [...]
  • リテラルはダブルクォーテーション(")、その前に u を付ける(u")と unicode を表す

追記:

ちなみに、Google の人から今日(2006/11/15)直接聞いた話だが、Google でよく使われるプログラミング言語は、C/C++、Java、Python だそうだ。

Updated: 2006/11/15
Original: 2006/11/14

続きを読む
Python を購読