0

Python: set

setsPython 2.3で追加され,2.6で撤廃された.
2.6以降は組み込み型のsetを使う.

listやnumpy.arrayを使っても似たようなことができそうだけど,集合は集合ということでsetを使った方が良い.

import random

if __name__ == "__main__":
    # define a ground set
    V = set(range(10))
    S = set([])
    K = 3

    while(len(S) < K):
        i = random.sample(V.difference(S), 1)[0]
        S.add(i)
        print S
Advertisements
0

Python: コールバック関数

関数の引数として呼ぶ関数をコールバック関数と呼ぶ.

C, C++と違い,Pythonのコールバック関数を使うのは非常に簡単ということが分かった.

ひとまず,コールバック関数をarithmetic.pyに保存.

# arithmetic.py
def add(a, b):
    return a + b

def sub(a, b):
    return a - b

def mul(a, b):
    return a * b

def div(a, b):
    return a / b

def add_3(a, b, c):
    return a + b + c

コールバック関数を呼び出すためには,関数ハンドラを定義して,関数ハンドラを通してコールバック関数を呼び出す.

# call_arithmetic.py

import itertools
from arithmetic import add, sub, mul, div, add_3

def handler(function, *arguments):
    print '    ', function.__name__, ':', function(*arguments)


def iterate_function(function):
    for a,b in itertools.product(xrange(5), xrange(3)):
        handler(function, a, b)

if __name__ == "__main__":
    print 'call each callback function'
    a = 10
    b = 3
    c = 1
    
    handler(add, a, b)
    handler(sub, a, b)
    handler(mul, a, b)
    handler(div, a, b)
    handler(add_3, a, b, c)
    
    print 'give a callback function to another function as an argument'
    iterate_function(add)

上記のコードを実行すると,以下のように出力される.
call each callback function
add : 13
sub : 7
mul : 30
div : 3
add_3 : 14
give a callback function to another function as an argument
add : 0
add : 1
add : 2
add : 1
add : 2
add : 3
add : 2
add : 3
add : 4
add : 3
add : 4
add : 5
add : 4
add : 5
add : 6

0

AndroidでARアプリ

GPS情報を基にした簡単な可視化を行うアプリをフルスクラッチで作ろうと思っていたんだけど,SDKを使うのが楽っぽい.

AR SDKの比較表を基に良さそうなのは以下のSDK

  1. DroidAR:
    1. Location-based, marker-basedの両方 (センサーベースがメイン)
    2. GPS, 磁気センサ,加速度センサ,ジャイロスコープ
    3. 一部(マーカ機能?)はC++
  2. Vuforia
    1. vision-basedっぽい
    2. rendering系はCで実装されている
    3. C++もサポートされているようだが,サイトに記載されているサンプルコードを見るとC#かもしれない
  3. Wikitude SDK
    1. Location-based, vision-basedの両方
    2. 実現したいアプリに近いサンプルがあったので,これでいけるっぽい
      1. Point-of-interest (POI): 地球上の特定の座標をマーカとする.Location-based ARに使う.
      2. POIデータの検索
      3. POIのデータの表示
    3. 開発,デバッグ,テストは無料.
    4. 配布&運用にはライセンス購入
0

C++のためのAPIデザイン

C++のためのAPIデザイン
Martin Reddy (著),ホジソン ますみ (翻訳),三宅 陽一郎 (監修)
ソフトバンククリエイティブ

タイトルとは異なり,C++に限らないAPIの設計に関する話も含まれている.必読の一冊と言える.と固く書いてみたけど,卒論レベルのプログラムでも,この本を読んでから書いた方が良いと思う.

内容: 自由度の高い言語C++の可能性を引き出す、珠玉の12章。長期の運用に堪える安全なソフトウェア設計のために。(「BOOK」データベースより)

0

Effective Modern C++ C++11/14プログラムを進化させる42項目

Effective Modern C++ C++11/14プログラムを進化させる42項目
Scott Meyers (著),千住 治郎 (訳)
O’REILLY

C++11/14について色々と勉強.と言っても,現時点でC++11までしか使っていない.自分のコードに今すぐ反映させている内容は

  • auto
  • オブジェクト作成時の()と{}
  • using (エイリアス)
  • scoped enum
  • const_iteratorの優先
  • スマートポインタ (今のところメンバ変数の前方宣言でのみ使用)

内容: C++11/C++14対応!C++界のカリスマが贈る「Effective C++」シリーズ最新刊! (「BOOK」データベースより)

0

リーダブルコード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
Dustin Boswell, Trevor Foucher
オライリージャパン

読みやすいコードの書き方を色々な観点で書いている良書.特定の言語に特化しておらず,非常に良い.

内容紹介: コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介する。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明する。日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。 (引用)