サイトウ

サイトウ

適当な事ばかり書きます
KH400

KH400メインハーネスの自作について

もうブログの更新自体久しぶりですがKH400の現状について。 メインハーネスを自作する予定でしたので、予定通りメインハーネスの自作しました。そしてうまくいきました!!!(雑) ざっくり手順です 1. タンクを降ろして、まずはとにかくパシャパシャ写真を撮ります。こんなに要らないでしょって思い始めても更に写真を撮ります。何故ならば自分が回線図を頭に叩き込めていないからです。あと、後でワイヤリングで困りたく無いからです。 2. 剥がしたメインハーネスはダンボールに貼り付けます。そして何がどこに繋がっていたのか、そして何色の配線の長さはどれくらいケーブルの本流から飛び出ているのか、なども書き出します。 3. 写真はないですが、メインハーネスをバラして適当な場所(壁など)に貼り付けて、各ケーブルの何色が何メートル必要で、端子(ギボシ端子など)が何種類いくつ必要なのか書き出します 4. 私は秋葉原のお店までケーブルを買いに行っ
1 min read
KH400

KH400のプラグキャップをNGKに変更

新年明けましておめでとうございます。今年もよろしくお願いいたします。さっそくですが去年のKH400メンテナンスの内容です。 プラグキャップをNGKに変更しました。 元々はh.craft販売のイグニッションコイルに付属されていたプラグキャップをそのまま流用していたのですが、KH400 A5は本来ターミナルナット付きのプラグを使用できるプラグキャップが純正なので、新品プラグに交換する度にターミナルナットを外すのはすごくストレスでした。 また、気づいたらプラグキャップのゴム部品がひび割れていました。 というわけでNGK公式でターミナルナット付きの似たデザインなプラグキャップを探しました。 それで今回購入したのは LB05E です。 NGK ( エヌジーケー ) プラグキャップ (1個/箱) 【8332】 LB05Eposted with amazlet at 17.01.01日本特殊陶業(NGK) 売り上げランキング: 50,906 Amazon.co.jpで詳細を見る LB05EPなど似た外観のプラグキャップはあったのですが、なんとなくこれかな〜と。 h.
2 min read
KH400

2016年内最後の長距離ツーリング その3

3泊4日の長距離ツーリング3日目、下呂温泉から根道神社のモネの池へ向かいます。 前回も書きましたが 下呂温泉からは近いのですぐ着きますね。道中は飛騨川沿いを走ったのですが地元の千曲川とは全く違った景色でとても新鮮でした。大きな岩がゴロゴロと転がっていて、渓谷という言い方がすごく似合います。また観に行きたいなと思えました。残念ながら写真は撮り忘れました。。 写真を撮り忘れた場所ほど「また観たいな、行きたいな」と思えてくるのはなんなんでしょう。 千曲川の側で育った自分には、飛騨川の景色は本当に衝撃的でした。いま思い出しても写真を撮り損ねたのは悔しいです。 道中は山道の途中でインカムで動画を取ろうと思ったところ「SDカードが差し込まれていない」というエラーが出て、宿にSDカードを忘れたかと思って焦ったりしました。SDカードが完全に差し込まれていないだけでした。そんなこんなでこれ以外にストレスもなく根道神社に着きました。 神社に着いたのはお昼過ぎでした。混雑具合はこんな感じでした。 根道神社の手前の駐車場(画像左端で車が見えている)にバイクを停められました
3 min read
KH400

2016年内最後の長距離ツーリング その2

午前9時頃に実家を発ってホームセンターへ行き2ストオイルを満タンにして、余りは缶ごとバッグにくくりつけ、篠ノ井と松代と、親の両家の墓参りをしてから諏訪湖へ向かいました。 出る際に母親から「あんたはバイクに乗ると僻地にばかり行くなあ」とぼやかれました。ごめんよ。。。 ルートはざっくりと、18号→143号→152号→142号という流れで岡谷へ。 道中途中コンビニでZ1が停車していたので隣につけてオーナーさんと軽く挨拶して雑談をしたら1時間以上お喋りしてしまいました。 ほとんど当時のパーツを維持していて、ダメになった箇所のみOEMパーツに変更しているとのことで、すごく綺麗でした。通勤でも使われているそうで、走らせてこそのバイクと言われてしまいました。すばらしいですね。 2ショットはもう少しバイクを近くにつければ良かったなぁ。。 その後、岡谷から諏訪湖の諏訪大社へ行きました。 前回の帰省で諏訪大社に寄って、初めて御朱印帳というものを買ったのですが時間が足りず上社本宮しか行けなかったのでリベンジです。 下社秋宮。ちょうど神前式が行われていました。お賽銭を投げる
5 min read
KH400

2016年内最後の長距離ツーリング その1

もう1ヶ月くらい前の内容になりますが、11月3日から3泊4日、年内最後の長距離ツーリングをしました。 ざっくりと経路 1. 調布IC@東京 2. 諏訪IC@長野 3. 御射鹿池 4. 千曲の実家で一泊@長野 5. 諏訪大社で4つ全てまわる@長野 6. 下呂温泉で一泊@岐阜 7. 根道神社&モネの池(名前のない池?)@岐阜 8. 豊田のビジホで一泊@愛知 9. 1日目 東京→長野 当日の朝に早起きをして荷物をバタバタとまとめました。長距離ツーリングの基本装備にはタンクバックとシートバックにしています。 タナックス(TANAX) MOTOFIZZ スラントタンクバッグM /ブラック MFK-084[容量5.1ℓ]posted with amazlet at 16.12.
4 min read
objc

Date型の比較@ObjC/Swift

Date型の比較をするとき、多くの場合は"2016-12-09"とか"2016-12-09 10:00:00+0900"とか、年月日か年月日と時分秒までの比較が多いのかなと思いますが。 Objective-C -[NSDate earlierDate:]と-[NSDate laterDate:]が使えるので、挙動を理解していればそれがラクかなと思いますが、可読性を考えると[NSDate compare:]で比較した方がわかりやすいときもあるかもしれない。 -[NSDate earlierDate:]と-[NSDate laterDate:]は自身とanotherDateの値が等しい場合には自身の値を返すことだけ覚えておく必要がある。(なのでログ出力ではポインタを吐いている NSDateFormatter *df = [[NSDateFormatter alloc] init]; df.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"
1 min read
mvno

携帯キャリアをdocomoからIIJに変えた

タイトルの通り、今までdocomoの回線を使用していましたがIIJに変えました。 MNPでMVNOで切り替える MVNOの切り替えでやったことまとめ MVNO業者を決める 結果IIJにしました。理由は 1. 大手だから(法人向けISPの老舗) 2. 留守番電話機能がある 3. 音声通話SIM+データ通信SIMのセットで契約して契約形態をシンプルにしたかった(パケット上限も共通で問題無し) 4. これらの条件でIIJが安かったから 既存回線の解約更新月を確認 既存回線の解約手数料がかからない月を調べる。解約月によっては数ヶ月後には差額で元が取れるので計算する。 IIJに申し込みする IIJに申し込みする段階ではMNPの移行用番号は不要なので、まず先に移行先のIIJに申し込みすることにしました。 申し込みは公式からだと初期費用3000円と書かれていますが、Amazonで売られている申し込みパックが初期費用です。購入時点では450円だったので2500円くらいお得でした。 既存回線の解約月に入る3日前くらいに購入しました。この申し込みパックの
4 min read
xcode8

Xcode8でBundle IDを設定する

Xcode8でBundle Identifier(以降Bundle ID)を設定する方法。 たしかXcode7あたりから設定箇所が変わりましたよね。 プロジェクトを作る Bundle IDはプロジェクトを作るときに設定する項目から自動的に作成されます。 <Bundle ID> = <Organization Identifier>.<Product Name> Bundle IDを変更する ただ単にBundle IDを変更する場合の手順 1. Project Navigator(左ペインの一番左のアイコン) 2. プロジェクトの設定を開く 3. Bundle IDを変更したいTARGETを開く 4. Bundle Identifierを書き換える Bundle IDをConfigurationで分ける DebugビルドとReleaseビルドでBundle IDを分けたい場合。 1. Project Navigator(左ペインの一番左のアイコン) 2. プロジェクトの設定を開く 3. Bundle IDを変更したい
1 min read
Mac

MacのシェルでISO8601フォーマットの日付を出力したい

最新のdateコマンドでは--iso-8601オプションがあるので簡単にISO8601フォーマットの日付を出力できるけど、Macに同梱されているdateコマンドには--iso-8601なんてオプションが無い。 これはhomebrewでcoreutilsをインストールすれば解決する。coreutilsをインストールすることでgnuのコマンドが使えるようになる。 $ brew install coreutils https://www.gnu.org/software/coreutils/coreutils.html coreutilsでインストールしたコマンドにはgの接頭辞が付与される。 $ gdate --iso-8601 2016-11-30 $ gdate --iso-8601=sec 2016-11-30T12:20:39+09:00 おめでとう。
ios

iOS開発初心者に知ってもらいたい開発スキル

この記事は画像がたくさんだったりしてすごく長いです。 SwiftでiOS開発の勉強をしている会社の新人と話をしているときに実装中のコードを見せてもらうと気になる実装があった。 let action = UIAlertAction(title: "title", style: .default, handler: { (action: UIAlertAction!) in ... }) UIAlertActionのイベントハンドラになるクロージャの引数の型が違う。 このイニシャライザのメソッド定義はこちら。 open class UIAlertAction : NSObject, NSCopying { public convenience init(title: String?, style: UIAlertActionStyle, handler: ((UIAlertAction) -> Swift.Void)? = nil) } handlerの引数クロージャの引数はUIAlertActionなのに、なぜかUIAlertAction!と書
6 min read
ios

iOSバージョンのシェアとアプリの対応OSバージョン@2016秋

iOSバージョンのシェアとアプリが対応するOSバージョンについて考える。 2016秋っていうのはざっくりとした期間にしたかっただけ。 Apple公式が出しているおおよその数値 2016年10月の時点でiOS8系とそれ以前のバージョンはAppStoreにアクセスしているうち8%ってことみたいですねー。だいぶ減りましたね。 私がかかわっているアプリではfabricをクラッシュレポートとしてとして使っていて、オマケ感覚でfabricのAnswersというDAUとか計測できるトラッキング機能を使用しているのですが。そのアプリだとiOS8系のユーザは3%弱でした。iOS8以降をサポートしているアプリなのでAppStoreとは分母も違うしってところですが、リテラシーが高い人向けというわけでもないアプリでiOS8系ユーザが3%弱ってことは、今後開発するアプリはもうiOS9以降サポートでいいよね!iOS8系は切り捨てちゃっていいよね! ここ数年で「古いOSもきっちりサポートしてよ」みたいな話は聞かなくなってきた気がします。 個人的にiOS8が切り捨てられて嬉しいこと 説
1 min read
Backup

Ghostのバックアップ

このブログはGhostを使っていますが特に今までまともにバックアップを取っていなかったので、バックアップを作成することにしました。 Ghostでバックアップすべきなのはこの2点かなと思っています。 1. /contents 2. /config.js 環境など * さくらVPS * Scientific Linux 6系 * Dropboxのアカウントあり 処理の流れ 1. これらをまとめたディレクトリを作る 2. tarで圧縮する 3. dropboxにアップロードする 4. 残骸を削除 この流れをcronで毎日4時に行うことにしました。 Dropboxにファイルをアップロードする DropboxへのファイルアップロードにはDropbox-Uploaderを使うことにしました。Starも多くユーザも多そうだったので。 cloneするとdropbox_uploader.shはパーミッションが775だったのでchmodする必要はありませんでした。 # /usr/local/src 移動 cd /usr/local/src
2 min read
xcode

iOS10.1 ATS

前回の検証がBeta版だったので安定版でも検証した 検証環境 * iPad Pro 9.7 * iOS10.1 * Xcode 8.1 * Swift3 検証方法 * 非SSLリクエスト先はhttp://www.example.com * SSLリクエスト先はhttps://www.example.com * 非SSLリクエストとSSLリクエストを行い結果を確認する(合計8つのリクエスト) * UIWebView * WKWebView * NSURLSessionで該当URLのソースコードをダウンロードして表示 * NSDataで該当URLのソースコードをダウンロードして表示 * これらのリクエスト結果がATSの設定パターンでどのように変わるのかを比較する 検証手順 * 上記検証方法に対応したプロジェクトを作成して実機起動(シミュレータは実機と異なる動作をすることが多いため) * http(s)リクエストのキャッシュが残らないよう都度アプリを再インストールする * 8リクエストが終わったら次の
1 min read
KH400

KH400の落し物その後

※ この記事は公開し忘れていたもので、現在は直っています。 前回では対応をどうするか決めあぐねていたのですが、今後も板金に絡んだトラブルは起きるだろうと思ったので、今回は家からそう遠く無い板金関係にも強いバイクショップを探して依頼する方向にしました。 バイクショップを信用していないわけでは無いのですが、自分でもできることはしたくて色々と国内外のオークションや中古などインターネット上であされる情報はほとんど見ましたがバッフルはやはり見つからず。 それで、バッフルのスペック情報として見つけたのはこのサイトです。 http://3cyl.com/mraxl/partid/baffles/baffleid.htm http://3cyl.com/mraxl/partid/baffles/sseriespipes/comparison.htm で、KH400についてのおさらいになります。 KH400は350SSからボアアップされた400SSがブレーキや発電系、排ガス規制などでリニューアルされたモデルで、350SS/400SS/500SS/その他マッハシリーズとの共通部品は多
3 min read
ios

iOS10ライフサイクル

先日Xcode8のフレームがどうのって記事を書いたんですけど、そんなことよりライフサイクルだな。と思ったのでシーケンス図風のものを書き出しました。png貼ってますがサイズ大きめです。参考程度に。上から下へ処理が進んで行きます(意味わかるよね? 今回使ったアプリ 確認した内容はこんな感じ + AppDelegate | | | + UINavigationController | | | +-+ UIViewController | | | +-+ UIView(UIViewController.view | + Notification * Storyboard使って、画面遷移などはしていないです * UITabBarControllerも使っていないです(ライフサイクルが結構かわるのですごく長くなるから 起動 その他バックグラウンド/フォアグラウンドなど その他 * バックグラウンドに移行する ≠ フォアグラウンドではなくなる(アプリが見えなくなる) * バックグラウンドに移行したかどうかは did
1 min read
ios10

iPad@iOS10.1でキーチェーンのパスワードが表示されなくなった

iPad Pro 9.7にiOS10 BetaやGMなどを入れていて、安定版が出たタイミングで安定版を入れなおしたりしていたら、Safariでキーチェーンに保存されているはずのパスワードが表示されなくなっていたという問題。 結論 1. 設定.app → iCloud → キーチェーン がオンになっていることを確認 2. 設定.app → Safari → パスワード → Touch IDで認証 3. 設定.app → Safari → 自動入力 → ユーザ名とパスワード → オンにする(オフになってた) https://support.apple.com/ja-jp/HT203783 地味にこういうトラブルは時間がかかって嫌だ。
xcode8

Xcode8 UIViewController.view.subviewsのframeについて(追記しました)

ビューのサイズが1000x1000になる Xcode8からStoryboardやxibでオブジェクトがframe値を持たなくなった影響で、UIViewController.view.subviewsのビューが正常なサイズを取得できなくて困るという話をよく耳にしている。 こんな感じのやつ <UIView: 0x7ff823d04e80; frame = (0 0; 1000 1000); autoresize = RM+BM; layer = <CALayer: 0x61000003dca0>> 自分もこれで困ることはあったけど、まぁ仕方ないからラクしないで修正しようか。くらいの気持ちでした。 検証した まずは通常のライフサイクルを確認する。 UIViewControllerとUIViewを拡張してログ出力するようにした。 // UIViewControllerのログ print("\(Date().description) : \(type(of: self)).\(#function):\(#line)") // UIViewのログ pri
7 min read
ios

UICollectionViewで横スクロールページングのインデックス取得

UICollectionViewでシンプルなページングする横スクロール画面を実装した時に、何番目のセルを表示中か取得しようとしたらうまくいかない状況があったのでほぼメモ。 // Before - (NSInteger)visibleIndex { NSInteger index = NSNotFound; NSArray<NSIndexPath *> *indexPaths = [self.collectionView indexPathsForVisibleItems]; NSIndexPath *indexPath = [indexPaths firstObject]; if (indexPath) { index = indexPath.row; } return index; } // After - (NSInteger)visibleIndex { NSInteger index = NSNotFound; NSArray<NSIndexPath *> *indexPaths = [sel
1 min read
KH400

KH400が落としたバッフル

GWに夏休みとたくさん走ったためか、昨晩なんとなく走りたくなりKH400で出ました。 家を出て5分くらいしてからカタカタという音が聞こえたのでメットのシールドを上げて少しかがんで、やっぱり音がするなと思ったものの、そこまで気にせずに青梅街道を流して数分後、急に改造4mini(ゴリラやエイプなど)のような音が聞こえて来てミラーを見ると自分の真後ろは煙で真っ白でした。 焦って左車線へ寄りちょうど見つけたセブンイレブンに止まりマフラーを確認すると右マフラーのバッフルチューブがありませんでした。直管仕様になっていました。 実はこの数日前にバッフルチューブにグラスウールを巻きつけたところでした。この時のネジの締め付けが問題だったのだと思います。 右気筒はグラスウールを巻く前にも燃調は少し濃いめだったので大きく回さなければ走れると思いUターンをしてから再度同じ道を走ってバッフルを探しました。 バッフルは信号待ちをした地点から数十メートル先の加速した辺り、白線の近くに飛ばされていました。見つけたらすぐさまウインカーを点けヘッドライトを消して路肩に停めて、走って拾いました。 バッフ
2 min read
ios

UniversalLinksを実装した

仕事でUniversal Linksを実装することになったので検証環境を用意した。検証に使用したドメインは www.ikenie3.org 。Universal Links単体の実装というよりはHandoffとUniversal Linksの設定を同時に行っていく流れになりました。雑なので他の人が見ても意味がわからないかもしれないレベルのメモです。 作業内容 1. サーバ: https化 まず http://www.ikenie3.org をhttps化した。 が、必須ではなかったらしい。 URLがhttpsに対応している、もしくはUniversal Linksで使用するJSONファイルが署名されていることが条件ということでした。 証明書に関してはHandoffProgrammingGuideに指定の記載があります。 その際、iOSが信頼する認証局 (http://support.apple.com/kb/ht5012に列挙されている認証局)が発行した証明書とキーを、IDとして 指定します You can perform this tas
6 min read
server

Let's Encryptの証明書を自動更新する

Let's Encryptの証明書でSSL対応を行ったので、Let's Encryptの証明書を自動更新するよう設定しました。 自動更新を行うスクリプト ScientificLinux6.6にSoftware Collectionを使用してpython2.7をインストールしたのでenvの設定が必要でした。 #!/bin/sh # # Cronから実行されるhttps証明書更新用スクリプト # # load bashrc and profiles sudo -u root -i env cd /root # try renew /usr/local/src/certbot/certbot-auto renew -q -q オプションは出力をしない設定です Silence all output except errors. Useful for automation via cron. Implies --non-interactive.
server

WebサイトのSecure証明書設定評価をA以上にする

前回のHTTPS対応に引き続き、今度はQualys SSL LabsというWebサイトでSSLSererの評価を行いました。 設定できました。A+になりました。対応ブラウザもIE6とJava6が非対応ということなので、こんなもんでまぁいいかなと思っています。 参考にしたWebサイトはたくさんありすぎてわけがわからないことになりました。基本的に検証結果で評価が低くなる原因など記載されていたので、それをググって評価を上げていきました。 Ghost.conf ## blog.ikenie3.org server { listen 443 ssl; server_name blog.ikenie3.org; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; # https://weakdh.org/sysadmin.html ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-E
2 min read
linux

ScientificLinux6+Nginx+Ghost+SSL+LetsEncrypt

このブログで使用しているドメイン blog.ikenie3.org をhttps対応しました。 今までhttpで済ませていたのは「Secureじゃなくても別にいいかな」という適当な考えだったのですが、httpsの環境を作る必要が出たので対応方法の勉強のために対応しました。 このブログ環境の構成 * サーバ: さくらVPS * OS: Scientific Linux 6 * Webサーバ: Nginx * ブログエンジン: Ghost 最終目標 blog.ikenie3.org をhttpsに対応して、httpのリクエストはhttpsにリダイレクトする。 やったこと OSのアップデート OSはScientific Linux 6といっても6.2と古かったので6.6(final)にマイナーアップデートを行いまいました。 # OSバージョンの確認 cat /etc/redhat-release rpm -qa sl-release --qf '%{v}\n' # リポジトリ更新 sudo yum
3 min read
ios

Swiftでアプリのバージョンチェック

アプリのバージョンチェックを実装するときは、特に何も考えず String.compare: メソッドを使えばいいじゃんと思っていたのですが、 String.compare: だけだと問題がありました。 結論 こんな感じで、 compare:options: で . NumericSearch を指定すればOKでした。 extension String { static func checkVersion(lhs lhs: String, rhs: String) { switch lhs.compare(rhs, options: .NumericSearch) { case .OrderedAscending: print("lhsの方がrhsよりも小さい") case .OrderedSame: print("lhsとrhsは等しい") case .OrderedDescending: print("lhsの方がrhsよりも大
1 min read
KH400

ツーリング用品買い物

もう先月の話ですが、7月頭にGWの代休をもらい私用で帰省しました。もちろんKH400で。 今回の帰省はインカムを使ってみようと思っていて、目星をつけていたのがこちら SENA(セナ) バイク用インカム Bluetooth インターコム 10C カメラ内蔵 10C-01 0410001Kposted with amazlet at 16.07.20SENA(セナ) (2015-08-10) 売り上げランキング: 2,662 Amazon.co.jpで詳細を見る カメラ機能のついているインカム。 実際に使ってみましたがスピーカーのスポンジが自分の使っているヘルメットとは相性が良くなかったのかインナーパッドの装着に難儀しました。音はまぁこんなもんかといったところですが動画が撮影できてカメラで写真も撮れるので走りながら片手で景色を撮れるのは良かったです。 スマホアプリを使って設定をいじれるのも良かったです。 動画は今度アップロードしたいと思っています。 あとついでに買ったのがメロースモークのシールドです。ヘルメットはGT-Airを使っているのですが、今までは標準の
1 min read