2013年 5月 の投稿一覧

散歩(昨日の続き)

正確には昨日の一枚。

ぽつんと空をのぞいた。

空の下にはボートがたくさん。

散歩

そういえば、「前にならえ」と小学校のときに手を上げていたのを思い出した。

紫陽花を白黒で見ると意外と綺麗だった。

登った階段の先で。

ぼんやり眺めたら。

下を何本も電車が通り過ぎていった。

高架の線路はつまらない。

ArduinoでHTTPリクエストをレンタルサーバに投げる方法

突然ですがArduinoの話題。

Arduinoにイーサシールドを接続してDHCPでIPを取得し、ホスト名で示したレンタルサーバへアクセスする際の接続例。
単純にPCからtelnetしてあげるのと同じですが、接続先が共有レンタルサーバ等の場合はHTTPのリクエストヘッダにHostヘッダが無いと当然ですが接続先でホスト名を利用して切り分けられないのでになるので接続できませんね。*1

*1:暫く悩んでしまった…情けない

2020年10月17日注記

WordPress移設に伴いサンプルソースコードが読みにくくなっていたためgistに転載しました。

開発環境で.envに定義された環境変数を取得(Padrinoの場合)

SqaleHerokuといったPaaSサービスを利用していると環境変数.envというファイルに定義しておくと、アプリケーション側でそのファイルの内容を環境変数として解釈してくれますが、rack-envというGemを利用すると開発環境でも.envで記載した内容を環境変数として解釈できる様になります。
以下、Padrinoで利用する場合。まず、Gemfileにrack-env追加。

# Gemfile
# Project requirements
gem 'rake'
gem 'rack-env', :group => "development"

で、app/app.rb に以下の1行を追加します。

module PadrinoSample
class App < Padrino::Application
use Rack::Env unless ENV['RACK_ENV'] == 'production' # 追加

これで本番環境と同様に開発環境上でも.envファイルを利用して環境変数を定義することができます。例えば、

HOGE=foo

と、.envファイルを定義しておけば、

get '/' do
ENV['HOGE'] #=> foo
end

これで、本番環境での動作を想定して開発環境で開発中からコード中で非公開にしたい情報をハードコーディングせずに済みます。

4月に読んだ本

7冊。
中でも一番良かったなと思った本は、以下の本。

 
 

以下、引用。

  • 疑わしきときは、ミニマル化せよ。 ( 105ページ)
  • アップルは、シンプルさの力の証てあり、それを見習いたい人にとっての設計図だ。シンプルさが求めるのは、ただあなたの理解と献身、情熱だけだ。 (304ページ)

hideackの本棚 - 2013年04月 (7作品)
キティの涙
読了日:04月27日
{book['rank']


powered by booklog

ccchartでグラフを描画する

ccchartというグラフ描画ライブラリがとても使いやすくて便利だったのでメモ。もし実際に利用する場合は、サンプルやドキュメントが充実しているのでそちらを参照した方が良いと思います。

最近、REMPで運営者用の管理画面を作っていることは以前書きましたがその中で利用状況等を示すグラフを作りたくなったので今回利用してみました。

使い方

使い方はとてもシンプルで、まずライブラリの読み込みとグラフを描画する領域をHTML上に定義します。

<html>
<head>
  <script src="http://ccchart.com/js/ccchart.js" charset="utf-8"></script>
</head>
<body>
<canvas id="graph-area"></canvas>
</body>
</html>

これで準備は完了。で、この領域(=canvasタグ内)に今回はREMP で利用しているMongoDBの情報を参照してグラフを描画させたかったので、グラフのみ非同期で描画させてAPI経由でグラフに必要な情報を参照して描画させてみました。
まずAPIの準備。ccchartは、JSONオブジェクトをパラメータとしてグラフを描画する仕様になっているので、API側で描画に必要なパラメータを全て作って渡す様にしました。Padrino側でAPIをこしらえてあげます。

# app/controllers/foo.rb
get :graphvalues do
timeScale = ['']
fooNum = ['foo']
minYRange = 0
maxYRange = 1000
Score.where(:created_at => 10.day.ago..1.day.ago).each do |oneScore|
timeScale << "#{oneScore.created_at.day}"
fooNum   << oneScore.foo
end
title = 'foo'
data = [timeScale, fooNum]
colorSet = ["red"]
# JSON
graphValues = {
config: {
titleFont: "100 18px 'Arial'",
title: title,
type: "line",
lineWidth: 4,
minY: minYRange,
maxY: maxYRange,
width: 480,
height: 400,
colorSet: colorSet,
bgGradient: {direction:"vertical",from:"#687478",to:"#222222"}
},
data: data
}
content_type :json
graphValues.to_json
end

なんかごにょごよしてますが、要はccchartで定められているグラフ定義用のJSONをサーバサイドで作っているだけです。
次にフロント側(JS)で、APIから取得したJSONを利用してグラフを実際に描画します。

<script>
$(document).ready(function(){
$.ajax({
type: "GET",
dataType:'json',
scriptCharset: 'utf-8',
url: "/foo/graphvalues",
success: function(res){
ccchart.init('graph-area', res);
}
});
});
</script>

そうすると以下の様なグラフが描画されます。

グラフの種類も多いですし、必要に応じて使ってみようと思います。