(広辞苑より)2015年1月25日日曜日Android端末をサーバにしてPyramidフレームワークを利用するTweetしばらく前に、PythonのWebフレームワークであるPyramidを利用した。これがなかなか良くできており、Android端末上でも動かしてみたくなったので載せてみた。ところで、自分が利用しているキャリアはドコモなんだけど、spモードだとグローバルIPが割り振られないので外部から端末にアクセスできない。UであればグローバルIPが割り振られるのでアクセスすることができるからだ。Uにしていると言っても過言ではない。Pyramidを動作させるにはAndroid端末用のPython環境であるSL4Aを入れる必要がある。次にPyramidを入れるのだが、必要なモジュールなどが複数あるのでそれも一緒に入れる。Worldプログラムを動かすのに必要なものはすべて挙げたが、もし足りない場合は実行時に何が足りないかエラー表示が出るので、それを参考に入れて欲しい。SDKが導入されていることを前提にしている。Android端末にシェルで入ってプログラムを展開するディレクトリを準備する。環境に合わせてディレクトリは読み替えて欲しい。exit適当なディレクトリで以下のプログラム・モジュールをPC側で展開する。pyramid-master.ziptranslationstring-1.3.tar.gzvenusian-1.0.tar.gzWebOb-1.4.tar.gzzope.deprecation-4.1.2.tar.gzzope.interface-4.1.2.tar.gzrepoze.lru-0.6.tar.gzPC側からAndroid端末にプログラム・モジュールをコピーする。/sdcard/sl4a/scripts/pyramid/repoze/pkg_resources.pyについては、PCに入っているPythonのsite-packagesなどから適当に持ってきてコピーする。/sdcard/sl4a/scripts/pyramid/これでプログラム・モジュールについては準備完了だ。次に、Android端末側の設定をする。SL4Aを起動させる。pyramidディレクトリが作成されているはずなので、そこをタップして中を確認してみる。一通り、ファイルがあることを確認したら、メニューからViewをタップし、Interpretersを選択する。Serverをタップして、Publicを選択する。これで、Android端末がサーバとして機能する。Serviceという通知があるので、それをタップすることでServer情報を確認できる。そこに表示されたドメイン名でAndroid端末にアクセスできる。以前の記事でもサーバにする方法を書いたので、そちらも参考にしてほしい。Worldプログラムを動かして、動作確認をしてみる。プログラムをhelloworld.pyとして保存した後、Android端末にコピーする。/sdcard/sl4a/scripts/pyramid/そして、コピー先のディレクトリにhelloworld.pyが表示されるので、それをタップして実行する。する)にポート番号8080でアクセスする。http://12345.mopera.net:8080/hello/worldこれで以下の画面が表示されれば成功だ。携帯の電波が届くところであればどこでも使えて、Pyramidが載っている手のひらWebサーバってなんか良い。プログラミング2015年1月15日木曜日IRCボットの作成Tweet久々のブログ更新。書きたいときに書くというスタンスです。最近、会社でも技術ブログを立ち上げたので、そちらで書いても良いかも。今回はIRCボットの作成について書いてみる。前から社内IRCで技術関連の雑談用チャンネルを利用している。技術系のメーリングリストもあるのだけど、わざわざメールで話題にするようなことでもない、軽い内容を気軽に議論できる場が欲しかったので有志で立ち上げた。IT企業にとって技術的な雑談をできる場はとても大事だと思う。素のIRCの場合、発言内容がサーバに保存されず、途中から参加しても話題についていけないという問題が出たので、適当なボットで対応することにしたが、やはりエンジニアがメインの会社なのだからボットも自作が基本でしょ、ということでPythonで作ってみた。クライアントを作成する」のサイトを参考にさせてもらったのでスクラッチから作成したわけではない。入れると、その日の発言がボットからのtalkで返される。最初は1日分の発言しか取れない仕様だったので、日を跨ぐとその前の発言が取得できないし、一時的にチャットを抜けた分のログが欲しいだけでも強制的に1日分の発言を取得してしまう。そこで、SQLite3を使ってユーザ毎にログイン・ログアウト時刻を管理して、ログアウトしてからログインするまでの発言を取得できるように変更することにした。新規に参加したメンバーでも自動的にデータベースに登録される。いうコマンドを作って、それぞれ自分の滞在時間、ユーザ全員分の滞在時間も取得できるようにしてみた。IRCサーバ上で以下のコマンドを実行すると、IRCにボットが常駐する。&ソースコードは以下の通り。社内IRCも使えるようになったのだが、最近、別プロジェクトで利用を始めたSlackがかなり便利だったので、そこに技術系チャンネルを作ったところ、ほとんどのメンバーがSlackに流れてしまった...。次はSlackでボット作成かなぁ。Engineメッセージボード*当ブログに関する意見や要望などにお使いください。Googleアカウントでログインすることで書き込みができます。Twitterへの送信を同時に行うこともできます。ストリートビューで散歩*Googleマップのストリートビューを利用して散歩をするWebアプリです。ストリートビューとマップを分割してマーカーを視界タイプに変更することで使いやすくしてあります。APIを利用したグラフ・チャート作成ウェブアプリです。クリック一つで簡単にグラフを作成できます。ブログ記事への貼り付けなどにどうぞ。OpenIDテスト*OpenIDによるログインのテストを行います。mixiであればクリック一つで、他のOpenIDアカウントであればそのURLを入力することでテストできます。一言コメント表示機能付きです。HTML文字変換*テキストで使われているHTML特殊文字をウェブで表示できるようにするための文字変換ウェブアプリです。プログラムのソースコードなどをブログ記事に貼り付けるときなどに便利です。短縮URLチェッカー*フィッシングサイト判別機能付き短縮URLチェッカーです。テキストボックスに変換したいURLを入力すればbit.lyの短縮URLが表示され、bit.lyの短縮URLを入力すればもとのURLが表示されます。展開されたURLがリンク付きで表示されますが、もしフィッシングサイトの疑いがある場合は警告が表示されます。Trendsの急上昇ワードをランキング順に表示します。Googleでのキーワード・画像検索やWikipediaによる用語の説明もあります。※GoogleがAPIの提供を終了したため、現在停止中です。自己紹介noxゲームを楽しむだけの余裕と感性は失いたくないnoxです。