DJI PC Simulator for Windows

こんな感じの画面です。 v1.0なので出来たばっかりっぽい。

f:id:onmineyuki:20151027161907p:plain

DJIのデベロッパープログラムへ登録方法

Phantom3の発売で盛り上がっているドローンシェア最大手のDJI。

先日深センに旅行したことをきっかけに非常に興味を持ちまして、色々調べてみるとこのPhantom3はSDKがあるではないですか!!

 

APIドキュメントをサラッと眺めていると、AirCraft Controllerがありました。

ドローンの飛行がプログラミングできる!?

http://developer.dji.com/mobile-sdk/documentation/

 

映画撮影で使われているウン百万クラスのドローンならともかく、10万円台のPhantom3でそれが出来るのであればなんとも面白そうじゃないですか!

 

Windowsオンリーだけどシミュレータもある様子。

入手にはデベロッパー登録が必要です。

DJI Developer

 

DeveloperはSDK LEVEL1とSDK LEVEL2があって、LEVEL1はカメラとかだけみたいで、LEVEL2になるとAirCraft Controllerが使用可能に。

 

どちらも料金は発生しないみたい。

LEVEL2だと身分証明書が求められます。

 

ものは試しとLEVEL2を申請しました。

承認までは3~5日かかるそうです。

 

また承認が帰ってきたら更新しようと思います。

とりあえずはPhantom3を入手しないと。家庭内の手続きが一番難関かも(笑)

 

Swiftでのシングルトン

Swift 1.2ではシングルトンは

class Manager{
    static let sharedInstance = Manager();
    var menbers: Array<xxxx>;
    private init(){
        //do init..
    }
}

ポイントはイニシャライザがprivateとなっているところです。 たのクラスからは初期化が出来ないので、sharedInstance経由での取得が強制されるわけです。

ただし、privateのスコープはファイルであるので、同じファイルに書かれたクラスからはイニシャライザが使用できてしまうため注意が必要です。

データ保存にRealmを使ってみる

TabelViewとRealmを組み合わる。

Realmのインストール、手引などは下記サイトを参考にさせていただきました。 感謝致します。m( )m

qiita.com

www.gaprot.jp

途中、pod installがうまく動いていなくて躓く。 cocoaPodがインストールできていなかった。permissionのエラーでている。 以下のサイトの記述を参考に、クリアしました。これまた感謝です。

changesworlds.com

まだ作業途中ですがGithubにあげておきます。

github.com

SwiftでUIViewにUITableViewを貼り付け

Qiitaでもよく似た記事がありますが、サンプルとして上げておきます。 よくわからないまま「nib but didn't get a UITableView.」と言われ続ける人が減りますように。

まずは親クラスとプロトコル

継承するのはUIViewControllerです。UITableViewControllerとするとエラーになります。

import UIKit
class SampleUIViewController: UIViewController, UITableViewDelegate, UITableViewDataSource  {
    //中略   
}

デリゲートメソッドはoverrideしない

UITableViewControllerを継承した場合はoverrideですが、今回はプロトコルなので普通にfuncで定義します。 必須のデリゲートメソッドはこうですね。

   func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Potentially incomplete method implementation.
        // Return the number of sections.
        return 1
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete method implementation.
        // Return the number of rows in the section.
        return self.logData!.menbers.count
    }

    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("membercell", forIndexPath: indexPath) as! UITableViewCell

        // Configure the cell...

        return cell
    }

datasource,delegateも忘れずに

storybord上でテーブルのdatasource,delegateをViewControllerにつなぐのを忘れないように。

これでとりあえず動くと思います。

ORA-01467 ソート・キーが長すぎます ってさ

多分キヤッシュブロック不足で発生してるっぽい。 varchar2(2000)みたいなカラムを取得しまくる時に出るという。 ただ、今回そんなのはなかった。

だがOBの取得結果をよく見るとある列だけ実行結果の列幅が異様にデカくなっている。もしかしたらSQLに組み込んだストアドファンクションの戻り値格納にメモリ大量に確保しているのではという気がしてきた。

物は試しにsubstr(column,1,1)としてみると。。。

エラー消えた。

嘘みたい、予感は的中なのか。

山登りに持っておきたい道具

これは前日行ってきた小野アルプス 紅山からの眺望です。

https://www.city.ono.hyogo.jp/p/2/7/18/

天気の良い週末、メジャーな山は人の渋滞が起きるほど登山好きな人が増えてますね。 Facebookのグループも賑わっていて結構な事かと思います。

でも、ヤマネチだけはダサいのでやめて欲しい。

これがまず言いたかった。

山登りにプラスしておきたい道具

登山靴、ザック、ウェアなどなど、基本装備があるかと思います。

その道具に、カラビナ、スリング、ロープを是非プラスされてはどうでしょう。

カラビナはロック環つき2つ。 スリングはナイロン、ダイニーマで120cm2つ。 ロープは6mm径で6mほど。 (ロープはクライミング用でなくて良い)

大休憩時のザック吊り下げ、確保などに

スリングとカラビナがあれば、ザックを木に吊るしたり、いろんな小物類を吊るしたり出来ます。背の高いザックは立てても倒れやすく、またザックを落としてしまう心配も無くなります。

危険地帯での確保

120cmスリング一本で、簡易ハーネスが作れます。危険な場所ではペアでハーネスをつけてロープでお互いを繋いで進めます。 小野アルプスで紅山の岩登りルートを子供と進んだとき、まさにこれで安全に登ることができました。 体が大きいひとは180cmをチョイスして下さい。

メンバーの荷物持ちの時に

例えばメンバーが体調を崩した場合、誰ががザックを代わりに持ってあげるでしょう。 スリング、カラビナをうまく使うことで自分のザックにもう一つザックを固定する事も出来ます。

カラビナもスリングも1000円程度、ロープも6mmの6mなら1500円くらいです。

お店の人の話も聞いてみましょう

ライミングをしなくても、持っておいて便利な道具です。買うときは是非お店の人に色々相談してみてください。 僕なんかよりずっと知識もありますので良いアドバイスが得られると思います。

それでは良い山行を。