投稿

8月, 2014の投稿を表示しています

radiko.jpプレミアム(妥協)

電話の代わりにはなかなか難しいので050plusを解約。発信はFacetimeオーディオとSkypeで用が足りる。
その代わりにradio.jpプレミアムを契約。放送地域外だからといって有料なのには納得できないのだが,格安に野球中継を聞くことができるので妥協した。
日本ハムやソフトバンク戦は,BSのテレビ中継が少ないが,複数のラジオ局での中継がある。千葉マリンでの試合もよく中継されている。西武は,ホームのときに文化放送ライオンズナイターがある。Windowsだと無料で聞けるが,このご時世にWindows Mediaでのストリーミングなんてリスナーがどれだけいるのだろうか。楽天はTune inで無料で放送しているようだが,接続に成功したためしがない。TBC(エステサロンでなく東北放送)の中継があるときは聞ける。オリックスはラジオ中継があまりない。関西のラジオ局は,阪神戦でなければ巨人戦を放送してしまう。今シーズンは成績がよいので,ぜひオリックスの試合も中継してほしい。

風呂で聞くためにBluetooth接続のスピーカーSONY SRS-X1を購入。モノラルだが,なかなか音は良い。カーナビ同様,多分使わないと思うが電話がかかってくれば受けることもできる。2台でステレオにもなるようだが,1台で満足している。iPhone/iPadの防水ケースとは違い,ボリュームや再生・停止以外の操作はできないので,接続が途切れたときはじっと待つしかない。

手作り地球儀

イメージ
京都大学大学院理学研究科の齊藤昭則先生らによるDagikプロジェクトでは,地球儀の作り方を紹介し,型紙を提供している。
型紙の代わりの白地図GMTで作成した(gist)。30度毎の舟型多円錐図法(polyconic projection)を並べた。
Macのプレビューで印刷するときは,既定では紙に合わせて画像が拡大縮小されてしまうので,100 %になるように設定する。

SwiftでPLplot

イメージ
PLplotの最初のをSwiftに移植してみた。
 プリプロセッサでの#defineは,定数には対応しているが別名には対応していないようで,pl()ではなくc_pl()を直接書く必要がある。PLINTはInt32なので,配列の要素数はInt()で型変換する必要がある。コマンドライン引数argc, argvは,SwiftではC_ARGC,C_ARGVかProcess.argumentsで参照できる。Process.argumentsは[String]を,C_ARGVはUnsafePointerを返すので,どちらかをUnsafeMutablePointer()でキャストして渡す。
main.swiftlet n: PLINT = 101 let xmin: PLFLT = 0.0; let xmax: PLFLT = 1.0 let ymin: PLFLT = 0.0; let ymax: PLFLT = 100.0 var x = [PLFLT](count: Int(n), repeatedValue: 0.0) var y = [PLFLT](count: Int(n), repeatedValue: 0.0) for (index, value) in enumerate(x) { x[index] = PLFLT(index) / (PLFLT(n) - 1) y[index] = ymax * x[index] * x[index] } var argc: Int32 = Int32(C_ARGC) c_plparseopts(&argc, UnsafeMutablePointer(C_ARGV), PL_PARSE_FULL) c_plinit() c_plenv(xmin, xmax, ymin, ymax, 0, 0) c_pllab("x", "y=100 x#u2#d", "Simple PLplot demo of a 2D line plot") c_plline(n, x, y) c_plend() MakefileSWIFT = /usr/bin/xcrun swiftc CPPFLAGS = -I/usr/include -I/opt/local/include/…

SwiftからC

Cの函数は,Swiftから直接呼び出せる。
自前のソース Xcodeを使う場合Xcodeのプロジェクトを作成(例: foo)する。Command Line Toolを選ぶ。言語はSwiftを選択。Cのソースを追加。ヘッダも一緒に作る。Bridging Headerをconfigureしてもらい,foo-Bridging-Headers.hに必要なソースを#include。モジュールはXCodeが作ってくれはる。 コマンドライン オプション-import-objc-headerを使って名前を解決し,Swiftのソースをコンパイルする。推奨しないと断って,stackoverflowの質疑に書いてある。Xcode 6-Beta5からはSwiftコンパイラの名前がswiftcとなった。
$ xcrun swiftc -c main.swift -import-objc-header addtwo.h $ clang -O2 -c addtwo.c $ xcrun swift main.o addtwo.o -o addtwo MakefileCC = /usr/bin/clang CFLAGS = -O3 SWIFT = /usr/bin/xcrun swiftc TARGET = addtwo OBJS = $(TARGET).o main.o HDRS = $(TARGET).h all : $(TARGET) $(TARGET) : $(OBJS) $(SWIFT) $^ -o $@ %.o : %.swift $(SWIFT) -c $< -import-objc-header $(HDRS) clean : rm $(TARGET) *.o addtwo.c#include "addtwo.h" double addtwo(double x, double y) { return x + y; } Swiftvar x = 1.0 var y: Double = 2.0 println(addtwo(x, y)) CのdoubleはSwiftのCDoubleに対応するが,型推論を使っても,Doubleでも正しく動作する。変数は値渡し。
配列 double *はUnSafePointerだが,Swift blogにある通りSw…