田舎の技術者が奮闘中

php ruby node.js javascript などのスクリプト言語とサーバー(Chef、Vagrant)に関して書きます。

git diffで色を付ける

git diffで色を付けるには

 git diff --color

で出来ますが、毎回オプション渡すのは面倒くさいですね。

デフォルトで常に出すには、git configで設定しましょう。

$ git config --global color.diff auto

他にも、statusやbranchも色を付けたい場合は、

$ git config --global color.status auto
$ git config --global color.branch auto

で行けます。

DynamoDBのorder byに関して

前回の記事でDynamoDBはorder byは出来ないと思っていたのですが、簡単な奴だったらできるみたいです。
order byできる条件として、、、

  1. hashとrangeキーが設定されていること。
  2. rangeキーを元にソートする。
  3. queryだけの場合のみ使える。(scanでは使用できない。)

以下がサンプルプログラムです。

DynamoDBテーブル構成

hash_key range_key
mori 2002-01
yoshida 2002-11
suzuki 1999-01
suzuki 2000-09
suzuki 2001-02
suzuki 2008-06
suzuki 2009-01
tanaka 2001-01
tanaka 2001-10

プログラム

require 'aws-sdk'
require 'pp'

dynamo_db = AWS::DynamoDB.new(
                              :access_key_id => '*****',
                              :secret_access_key => '*****',
                              :dynamo_db_endpoint => 'dynamodb.ap-northeast-1.amazonaws.com'
                              )

table = dynamo_db.tables["test"]

table.hash_key = [:name, :string]
table.range_key = [:date, :string]

table.items.query(:hash_value => "suzuki", :scan_index_forward => true).each {|i|
  pp i.attributes["date"]
}

結果

"1999-01"
"2000-09"
"2001-02"
"2008-06"
"2009-01"

「scan_index_forward => true」をfalseにすると逆になります。

"2009-01"
"2008-06"
"2001-02"
"2000-09"
"1999-01"

まとめ

かなり制限されていますが、使用することは可能です。
DynamoDBはイケイケで使うよりは、ちゃんと設計してから構築したほうが良いです。
rangeキーが3つぐらい設定出来ればいいのに・・・

DESIGN HUNTER (β)のバージョンアップ

DESIGN HUNTER (β)のバージョンアップを行いました。
Bookmark機能が追加されたので、利用してみてください。
DESIGN HUNTER | デザインハンター | ホームページデザイン ウェブデザイン まとめ | デザイン解析

住所からgoogle mapを表示するライブラリ

pikonori/googlemaps-get-lat-and-lon · GitHub

会社から要求があったので、久々にバージョンアップしました。
ちょっとだけ使いやすくなっています。

またバグ修正も行なっております。

cakephpの処理の流れ

cakephpの処理の流れってよく忘れてしまいます。
結構重要なので、覚えておくと便利です。

処理の流れ

  1. index.php
  2. dispacher.php
  3. MyController
  4. MyComponentのinitialize()
  5. MyControllerのbeforeFilter()
  6. MyComponentのstartup()
  7. MyControllerのaction()
  8. MyComponentのbeforeRedirect()→そのままリダイレクト先に遷移
  9. MyControllerのbeforeRender()
  10. MyComponentのbeforeRender()
  11. view.php
  12. MyHelperのbeforeRender()
  13. MyHelperのbeforeLayout()
  14. MyHelperのafterLayout()
  15. MyHelperのafterRender()
  16. MyComponentのshutdown()
  17. MyControllerのafterFilter()

処理終了

controllerとcomponentが入り組んでいる・・・

新しいgoogleChartを使ってみた。

DESIGN HUNTER | デザインハンター | ホームページデザイン ウェブデザイン まとめ | デザイン解析にgoogleChartを導入してみました。

f:id:pikonori:20130525201006p:plain

旧のgoogleChartの仕様がURLのパラメータを指定してグラフを作成するタイプだったので、複雑なグラフを作ろうとすると、どうしてもURLが長くなってしまいます。
しかし、新googleChartはJavascriptになっていますので、拡張性が非常に高いです。

Google Charts — Google Developers

ほとんどコピペですが以下がサンプルプログラムになります。

<html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});

      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Task', 'Hours per Day'],
          ['田中', 11],
          ['川崎', 2],
          ['木村', 2],
          ['中原', 2],
          ['渡辺', 7]
        ]);

        var options = {
          title: 'みんなのスコア'
        };

        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>


オプションも多数準備されているので、リファレンスを見ながら構築すると良いと思います。