Swiftでインラインアセンブラを書く

残念ですが書けません。インラインアセンブラはC/C++/Objective-C側で書く必要があります。 (・・・最近ARMアセンブラを勉強しているので、iOSでCPSRレジスタとか操作する処理書けないかなとか期待したのですが、そういや最近のiPhoneて64bitだったと気づい…

USBシリアル変換ケーブル(SRC06-USB)をOS Xで使う

USBシリアル変換ケーブルに、バッファローの「SRC06USB・06USM」という製品を使うことになったのですが、あいにくバッファローのダウンロードページにはOS X向けのドライバーがありません。 USBシリアル変換ケーブル | バッファロー そこで、Future Technolo…

プロパティのアクセスコントロール

Swiftのプロパティで、「getterは外部に公開したいけれど、setterはプライベートにしたい。けれどもcomputed propertyを使って値を保持する変数をわざわざ別に持つのは面倒だ」というケースはよくあります。 そのような場合、「private(set)/internal(set)」…

RaspberryPI(Jessie環境)で固定IPアドレスを設定する

RaspberryPIにJessieを入れたところ、どれだけ/etc/network/interfacesの設定を変更しても効果がなかったので、メモ。 これまでのWheezyだと前述の/etc/network/interfacesを編集すればよかったのですが、Jessieでは同ファイルのコメントに # Please note th…

SKViewのバグ?

短いついでに、今日はまった面倒なバグも残しておきます。 SKViewのshowsFieldsプロパティは、マニュアルによると物理フィールドのデバッグ情報を出力できるとのこと。 showsFields Property A Boolean value that indicates whether the view displays info…

iOS SDKで利用できるフォント名一覧を取得するスニペット

今回はちょっと短め。 UIFontのメソッドを使って次のように書くことで、実行環境にインストールされている(&利用できる)フォント名の一覧を取得できます。 SKLabelNode(fontNamed: ... )と書いてはみたものの、さて何を指定すればよかったんだっけ?と困った…

flatMap()の前にflatten()を調べる(予想外に深かった)

Swiftを理解するための勉強中です。 前回、前々回でmap()を読んだので、次はflatMap()…といきたいところですが、flatMap()はmap+flattenなので、先にflattenの実装を読むことにします。 swiftlife.hatenablog.jp swiftlife.hatenablog.jp flatten()メソッド…

CollectionType,SequenceTypeのmap()

前回Optional型のmap()を読んだのに続いて、今回はCollectionTypeとSequenceTypeのmap()を見てみることにします。 プロトコルの定義は次のとおりです。 func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] これらはstdli</t>…

OptionalのmapとflatMapを読み解く

Swiftがオープンソース化されたことにより、私たちでも標準ライブラリの実装を読むことができるようになりました。そこで、今回はOptional型のmap()とflatMap()の2つを読んでみて、どういう違いがあるのかを実装面から考えてみようと思います。 Optional型の…

mapに渡せるのはクロージャだけではない

map()では、transform引数にクロージャを渡します。たとえばInt型の配列を文字列化する処理を考えた場合、次のように書けます。 let foo = [1,2,3,4,5,6].map{ String($0) } // ["1", "2", "3", "4", "5", "6"] ですが、このような初期化を伴う処理は次のよ…

mapを学ぶ

さて、少しずつSwiftにも触れていきます。 巷では「Swiftなら関数型プログラミングだよ」「map/flatMapはSwiftのたしなみ」のようなことが言われていて、実際のところ有名どころのライブラリは、こうした考え方を活用して作られています。ですが、正直なとこ…

Cutter+Jenkinsを使ったC++のテスト(3)

前々回、前回の続きです。ここまでにcutterのインストール方法や使い方、cutterのXML出力をxUnitの出力形式に変換する方法を見てきました。今回は、一連の作業の最後に、実際にジョブとしてビルドスクリプトを設定します。 swiftlife.hatenablog.jp swiftlif…

Cutter+Jenkinsを使ったC++のテスト(2)

前回の続きで、cutterとJenkinsを連携させる方法についてです。 swiftlife.hatenablog.jp cutterは--xml-report=出力先ファイル名とオプション指定することでテスト結果をXMLに出力できます。ですがこの内容は独自のルールで、JenkinsのxUnit Pluginで管理で…

Jenkinsの成功/失敗の判断

新しいジョブをフリースタイル・プロジェクトを作成しビルド手順で「シェルの実行」を選ぶと、ビルド時に実行するシェルスクリプトを入力できます。 Jenkinsは、このスクリプトが返す値(終了コード)によってビルドの成功・失敗を判断します。 終了コードが0:…

linuxカーネルビルド時のコマンドを確認する

カーネルビルド時に、どういうコンパイルオプションでgccが実行されているかを確認する必要がありましたので、メモを残しておきます。 方法は、makeにV=1を付けるだけ。 % make V=1 uImage 2>&1 | tee build.log このVは、kernel.orgのREADMEによるとVerbose…

Jenkinsにプラグイン導入

インストールしたままの素のJenkinsでは色々と不便そうなので、プラグインを導入しました。 ひとまず入れたのは以下のとおり。C++向けテストに使えるものを、と選びました。 Git Plugin - Jenkins - Jenkins Wiki: gitをSCMとして扱うためのプラグイン。こ…

Cutter+Jenkinsを使ったC++のテスト(1)

前回までにインストールしたJenkinsを使い、C++のテスト環境を整えてみます(本当は早くXcode+swift+gitの環境を整えたいけれど、準備が大事)。 swiftlife.hatenablog.jp C++のテストツールは、内輪で評判のいい「cutter」を使ってみます。Jenkinsとの連携…

Jenkinsで作成したジョブの実体はどこにあるか

Jenkinsの基本設定や、新しくジョブを作成したときに、それらのデータはどこに保存されるのだろう?と調べてみました。 そうしたら、なんのことはない、~/.jenkins下に保存されていました。各ジョブは~/.jenkins/jobsの下に、ジョブ名のままでディレクトリが…

OS X El CapitanにJenkinsをインストール(3)

前回の続きです。ここまでにJenkinsのインストールが済んだものの、大量の警告やエラーログが出力されていて使い物にならない状態になっていたのを、DNSマルチキャストを切って問題回避しました。 swiftlife.hatenablog.jp 今回は、ログインと同時にJenkins…

OS X El CapitanにJenkinsをインストール(2)

前回の続きです。Jenkinsをインストールして動かしてみたところ、とりあえず動くもののログが延々と出続けるという問題に遭遇しました。今回はそれを回避するところまで。 swiftlife.hatenablog.jp ログにあるメッセージで issues.jenkins-ci.org を調べてみ…

OS X El CapitanにJenkinsをインストール(1)

Home-brewを使い、OS X El CapitanにJenkinsをインストールしました。 OS X El Capitan MacBook Pro (Retina, 13-inch, Early 2015) 2.9 GHz Intel Core i5 16 GB 1867 MHz DDR3 Homebrewはインストール済み 0. とりあえずインストールしようとしてみる まず…