2012/10/20

Python Google Chartを使って大量に作成したQRコードをスライドショーで眺めると、QRコードの中に色々な形が見えてきます

QRコードを大量に作る必要があり、Google Chart APIを使って作成しました。QRコードには、URLの情報を入れています。URLの一部が連番になっていて、プログラムで大量に生成できる構成のURLになっています。

Google Chart Tools
https://developers.google.com/chart/?hl=ja


Google Chart APIを使うだけでも簡単にQRコードは作成できるのですが、更に楽をしたいので、Google Chart APIをPythonから使うためのラッパーがあるかを調べてみました。

Python Google Chartというラッパーがありました。

Python Google Chart
http://pygooglechart.slowchop.com/


下記のPythonスクリプトにて、任意の数の連番情報を持つテキストのQRコードが作成されます。100個のQRコードも数秒で作成できました。実際のスクリプトの「chart.add_data」の箇所はURL を指定していますが、ここでは、テキストだけにしています。
from pygooglechart import QRChart

for i in range(100):
    # Create a 125 x 125 QR code chart
    chart = QRChart(125, 125)

    # Add the text
    chart.add_data('Hello, World!' + str(i))

    # "Level H" error correction with a 0 pixel margin
    chart.set_ec('H', 0)

    # Download
    chart.download('qr-hello' + str(i) + '.png')
 
    i = i + 1
大量に作成したQRコードをチェックの為に次々と眺めていると、QRコードがアニメーションのように見えてきました。スライドショーのように、更に眺めていると、QRコードの白黒の模様が色々な形に見えてきました。人の顔や動物などが見えてきます。

作成したQRコードをスライドショーにして、YouTubeにアップしてみました。

2012/10/14

WordPress(ワードプレス)の カスタムフィールドのプラグイン「Advanced Custom Fields」を試してみました。

WordPress(ワードプレス)の カスタムフィールドのプラグイン「Advanced Custom Fields」を試してみました。

http://www.advancedcustomfields.com/


Advanced Custom Fieldsがとても使いやすそうだったので、試してみました。WordPress3.4.2をXREAのサーバにインストールしてみます。

インストールを完了して、管理画面にアクセスすると、CSSが効いていませんでした。


下記の記載を見つけました。

管理画面で、CSSが効かない
http://ja.forums.wordpress.org/topic/1927

「XREAでダッシュボードのレイアウトが崩れるのは、
Apacheのmod_layoutが原因のようです。

ダッシュボードのCSSはwp-admin/load-style.phpで動的に生成されるのですが、通常text/cssとして送信される情報が、mod_layoutでtext/htmlとして送信されています。なので、FirefoxではCSSとして扱わないので、表示が崩れているようです。

解決策としては、wp-adminディレクトリの.htaccessに
 <files load-styles.php="load-styles.php">
LayoutIgnoreURI *.php
 </files>
を追加したら正常表示されました。」とあります。

教えていただいた通り、wp-adminの階層に、上記の.htaccessを設置することで正常表示されました。


XREAのサーバでは、上記の .htaccessに加えて追記しておく必要がある記載があります。

下記のサイトを参考にさせていただきました。
CoreserverでWordPressを使う際のエラー対処

「テーマテンプレートをインストールするときなどに、エラーメッセージ

『ダウンロードに失敗しました。 ファイルストリーミングの送り先となるディレクトリが存在しないか、書き込み不可になっています。』

が出ることがあります。

XREAのサーバにて、PHPがセーフモードで動作していることが原因です。

XREAは PHP を CGI モードで動かすことができるので、必要なファイルは CGI モードで動作するようにすることで、PHP のセーフモードの制限を回避します。」とありました。

下記の内容を上記の.htaccessに追記しておきます。
 <files async-upload="async-upload" php="php" plugin-install="plugin-install" plugins="plugins" update-core="update-core" update="update">
AddHandler application/x-httpd-phpcgi .php
 </files>
Advanced Custom Fieldsをインストールします。

Advanced Custom Fieldsのインストールが完了すると、「カスタムフィールド」のメニューが追加されます。


カスタムフィールドの管理画面にて、フィールドグループの「新規追加」ボタンを押します。


試しに、旅行の記録をする専用のフィールドを用意することにします。管理する項目として、旅行先(テキスト)、日付(デイトピッカー)、写真(画像)を追加します。上記のキャプチャーは、それぞれの項目を作成した後のものです。「新規追加」を押すと、項目の詳細を設定する画面が表示されます。



次に、カスタムフィールドの内容を編集画面でのどの位置に表示するかの設定をします。投稿のカテゴリーに新規のカテゴリー「旅行記録」を作成して、その「旅行記録」カテゴリーを選択した時に、作成したカスタムフィールドの内容が表示されるようにします。



フィールドの設定が完了したら、「更新」ボタンを押して、反映をします。


編集画面での動作を確認します。


通常の投稿画面を表示して、新たに作成したカテゴリー「旅行記録」をチェックします。


旅行記録として用意したカスタムフィールドのフォーム要素が表示されます。確認用の投稿をしてみます。


必要な情報を記載、画像添付をして、公開します。 但し、ブログに表示する用の記載をしていないため、公開されているページには、どこにもカスタムフィールドの内容は記載されていません。

表示用の記載を追記します。

テーマはデフォルトの「Twenty Eleven 」 です。投稿記事にカスタムフィールドの内容を表示するようにしたので、表示用の記載を追記するファイルは、content-single.php になります。

content-single.php に下記の内容を追記します。
  <?= "旅行の行き先"; ?>
  <?php the_field('travel_destination',$post->ID); ?>

  <?= "旅行に行った日"; ?>
  <?php the_field('travel_date',$post->ID); ?>
   
  <?php if( get_field('travel_picture') ):?>
  <img src=" <?php the_field('travel_picture'); ?>" alt="" />
  <?php endif; ?> 
表示を確認します。



トップページより、「国営備北丘陵公園に行ってきました。」の詳細ページへのリンクをクリックします。


カスタムフィールドで追加した項目が表示されています。

Advanced Custom Fieldsの表示用の記載方法については、下記のページにて、各フィールドごとに詳しく説明されています。

 http://www.advancedcustomfields.com/docs/


Advanced Custom Fieldsには、有料版のフィールドもあります。

 

繰り返しフィールドが便利との記載をいくつか見ました。2,000円程度の費用なので、購入して試してみたいと思います。

今回作成した WordPress(ワードプレス)のサイト
http://www.vivo-win.com/wp/



2012/10/09

タブレット用の絵筆、カラーモニター付きラジコンヘリ、大容量モバイルバッテリーが欲しい

最近は、欲しいと思う商品、製品があまりなかったのですが、いくつか欲しい商品を見つけました。

タブレット用の絵筆 Sensu(センス)



見た目は、ごく普通の絵筆のようなのですが、導電性のある合成の毛で出来ていて、iPad(タブレット)で利用出来るようです。この筆を使って絵を描いてみたい。今までも、筆圧感知式のペンタブレットは使ったことがありましたが、馴染めませんでした。このSensu(センス)であれば、実際の絵筆に近い感覚が実現出来そうです。



ラジオコントロール ヘリコプター TVファルコン



カラーモニターでリアルタイム動画をチェック。コントローラーに搭載されたカラーモニターにはヘリのカメラがとらえた映像がリアルタイムで表示されます。

以前より、空撮が簡単に出来たら、面白い写真や動画が撮れるのでは無いかと思っていました。簡単に空撮をする方法として思いつくのは、ヘリウム入りの大きな風船にデジカメを吊るして撮影するぐらいでしょうか。その方法を実現するにしても、このTVファルコンよりは、費用が掛かるような気がします。

撮影サイズのスペックは、下記のように記載されていました。

静止画
30 万画素(VGA 640 × 480)
7.6 万画素(QVGA 320 × 240)

動画
30 万画素(VGA 640 × 480・30fps)
7.6 万画素(QVGA 320 × 240・30fps)

サイトに使うぐらいであれば、なんとか使えるスペックでしょうか。もっと高解像度のカメラが搭載されたら、絶対欲しい製品です。



ルックイースト 大容量モバイルバッテリー12000mAh LE-UBT12K-BK

もう電池切れの心配はいらない!大容量、コンパクト、日本製 リチウムイオン採用! さまざまなポータブル機器に対応する高品質モバイルバッテリー!

スマホのバッテリーは、あっという間に無くなってしまうので、出先でデザリングでネット接続をしている時には、ヒヤヒヤすることがたまにあります。そんな時用に、予備のバッテリーが欲しいと思っていました。そんな時に、フリーペーパーを見ていて、この製品を見つけました。iPhone 、iPad系については、動作確認リストの中に入っていましたが、Xperiaについては、記載が無かったので、調べてみます。

2012/10/08

Pythonのマイクロウェブフレームワークの「Flask」のチュートリアルを試してみました。

Pythonのマイクロウェブフレームワークの「Flask」のチュートリアルを試してみました。


Flaskへ ようこそ - Flask v0.5.1 documentation
http://a2c.bitbucket.org/flask/

のサイト内のチュートリアルを基に試してみます。
但し、日本語に訳されてるこのバージョンは古く、最新版のFlaskは、0.9です。

Welcome to Flask - Flask 0.9dev documentation
http://flask.pocoo.org/docs/

しかし、チュートリアルの内容は、変わっていないようでした。

MacBook AirのMac OSXの10.7.4の環境で行います。
まず、virtualenvの環境構築を行います。

Flaskのインストールについて - virtualenv
http://a2c.bitbucket.org/flask/installation.html#virtualenv

Flaskのチュートリアルにvirtualenvの環境が必須という訳ではありません。しかし、virtualenvを使った方が、MacBook AirのPythonの環境に影響を与えず、仮想環境内のPythonで完結するので、virtualenvを使います。

Linuxでは、システムの管理自体にPythonを使っていることが多く、Pythonのバージョンを上げてしまうと、システム自体に支障が出ることもあります。以前、間違ってPythonのバージョンを上げてしまい。yumが動かなくなって、困ったことがありました。

virtualenvについては、下記でのサイトの説明が分かりやすいです。

今日のPython - VIRTUALENV について
http://blog1.erp2py.com/2011/07/virtualenv.html

virtualenvをインストールします。
$ pip install virtualenv
仮想環境の入る前に、Pythonの環境について確認しておきます。
$ pip freeze
Django==1.3.1
PIL==1.1.7
PyRSS2Gen==1.0.0
Twisted==11.0.0
altgraph==0.7.1
bdist-mpkg==0.4.4
bonjour-py==0.3
distribute==0.6.26
include-server==3.1-toolwhip.1
macholib==1.3
modulegraph==0.8.1
numpy==1.5.1
py2app==0.5.3
pyOpenSSL==0.12
pyobjc-core==2.3.2a0
pyobjc-framework-AddressBook==2.3.2a0
pyobjc-framework-AppleScriptKit==2.3.2a0
pyobjc-framework-AppleScriptObjC==2.3.2a0
pyobjc-framework-Automator==2.3.2a0
pyobjc-framework-CFNetwork==2.3.2a0
pyobjc-framework-CalendarStore==2.3.2a0
pyobjc-framework-Cocoa==2.3.2a0
pyobjc-framework-Collaboration==2.3.2a0
pyobjc-framework-CoreData==2.3.2a0
pyobjc-framework-CoreLocation==2.3.2a0
pyobjc-framework-CoreText==2.3.2a0
pyobjc-framework-DictionaryServices==2.3.2a0
pyobjc-framework-ExceptionHandling==2.3.2a0
pyobjc-framework-FSEvents==2.3.2a0
pyobjc-framework-InputMethodKit==2.3.2a0
pyobjc-framework-InstallerPlugins==2.3.2a0
pyobjc-framework-InstantMessage==2.3.2a0
pyobjc-framework-InterfaceBuilderKit==2.3.2a0
pyobjc-framework-LatentSemanticMapping==2.3.2a0
pyobjc-framework-LaunchServices==2.3.2a0
pyobjc-framework-Message==2.3.2a0
pyobjc-framework-OpenDirectory==2.3.2a0
pyobjc-framework-PreferencePanes==2.3.2a0
pyobjc-framework-PubSub==2.3.2a0
pyobjc-framework-QTKit==2.3.2a0
pyobjc-framework-Quartz==2.3.2a0
pyobjc-framework-ScreenSaver==2.3.2a0
pyobjc-framework-ScriptingBridge==2.3.2a0
pyobjc-framework-SearchKit==2.3.2a0
pyobjc-framework-ServerNotification==2.3.2a0
pyobjc-framework-ServiceManagement==2.3.2a0
pyobjc-framework-SyncServices==2.3.2a0
pyobjc-framework-SystemConfiguration==2.3.2a0
pyobjc-framework-WebKit==2.3.2a0
pyobjc-framework-XgridFoundation==2.3.2a0
python-dateutil==1.5
virtualenv==1.7.1.2
wsgiref==0.1.2
xattr==0.6.1
zope.interface==3.5.1
次に、myprojectというフォルダを作って、envと言う名前の仮想環境を作成します。
$ mkdir myproject
$ cd myproject
$ virtualenv env
New python executable in env/bin/python
Installing setuptools............done.
envという仮想環境をアクティブにします。
$  . env/bin/activate
あるいは
$ source env/bin/activate
シェルの前に括弧付きで仮想環境名が表示されれば、仮想環境に入っています。
(env)$ 
仮想環境を抜け出すためには、deactivateコマンドを使います。
(env)$ deactivate
仮想環境の状態で、Pythonの環境を確認します。
(env)$ pip freeze
wsgiref==0.1.2
別のPython環境に入っていることが分かります。 Flaskをインストールします。
(env)$ pip install flask
インストール後、Pythonの環境を確認します。
(env)$ pip freeze
Flask==0.9
Jinja2==2.6
Werkzeug==0.8.3
wsgiref==0.1.2
Flaskは、2つのライブラリの依存しているので、その2つのライブラリも一緒にインストールされています。「Jinja2(ジンジャ2)」というテンプレートシステムと、Werkzeug(ウェルクツォィグ)というWSGIツールキットです。


Flaskのインストールが出来たので、チュートリアルの内容を行います。
http://a2c.bitbucket.org/flask/tutorial/index.html

完全なソースは、下記からダウンロードできるので、まず動作確認からしたい人は、そのソースを基に動作を確認できます。
https://github.com/mitsuhiko/flask/tree/master/examples/flaskr/

ダウンロードしたファイルを解凍して、flaskrフォルダの中に入ります。
まずデータベースの作成と初期化を行います。
(env)$ python
>>> from flaskr import init_db
>>> init_db()
あとは、flaskr.pyを起動すれば、動作確認が出来ます。
(env)$ python flaskr.py
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
http://127.0.0.1:5000/にアクセスをすると、トップページが表示されます。ログインのリンクと、まだ記事が何も無い旨のメッセージが表示されます。


ソースに記載されているログイン情報で、ログインします。


ログインできたメッセージ表示と、タイトルと内容を投稿するフォームが表示されます。


タイトルと内容を記載して、「Share」ボタンを押します。


投稿した記事が表示されます。


ソースの内容については、下記のページにて詳しく説明されています。特に迷うこともなく、分かりやすい説明で、その通り動作しました。
http://a2c.bitbucket.org/flask/tutorial/index.html

Djangoのようなフルスタックのフレームワークではないので、覚えることが少なく、気軽にウェブアプリケーションが作れそうなフレームワークだと思います。

2012/10/06

「Unityで作るiPhone/Androidアプリ入門」のサンプルデータ「JumpMan」をFlash Player用にビルドしてみました。

「Unityで作るiPhone/Androidアプリ入門のサンプルデータを試してみました。」の続きです。

「Unityで作るiPhone/Androidアプリ入門」のサポートサイトからダウンロードできる「JumpMan」のファイルを基に作業しました。ダウンロードしたファイルは、スマホ用にデバイス操作の部分を記載しているので、パソコン用の操作に記述を戻してみました。


ビルド設定をFlash Playerにして、ファイルを作成しました。作成したswfが、下記のものです。
http://www.vivo-win.com/unity/JumpMan_20121006.html

スタート画面が表示されます。どこでもいいので、クリックをすると、ゲームスタートです。


このゲームは、プレイヤーが壊れた消火栓を直して、戻ってくるというゲームです。

空に浮かぶブロックの上に、プレイヤーがいます。一番奥のブロックにある水の吹き出している消火栓を修理して、スタート地点まで戻ってくると、ゲームクリアです。

移動方法

上下左右のキーで、前後左右に移動できます。
同様に「w」キー、「s」キー、「a」キー、「d」キーでも前後左右に移動します。

ジャンプは、「スペース」キー
「Shift」キーを押しながら移動すると、走ります。


途中のブロックに、消火栓修理の道具として、レンチが浮かんでいます。近くまで行くと、レンチを持つことができます。


レンチを持ったまま、消火栓のところまで行くと、噴水が止まります。後はスタート地点まで戻れば、ゲームクリアです。


Unity Proと、iOS、Androidのライセンスを購入すれば、スマホ版も作成できます。

人気の投稿 (過去 30 日間)