全然ここを更新出来てませんが、こちらにメモみたいなものを書いてます。
Action required to ensure your GitHub Pages site remains available after December 1st, 2014
というメールがGitHub Supportから来ました。
「お前の独自ドメインで設定しているGitHub PagesのIPアドレス、古いからさっさと変えろよ」というお話のようです。
知りませんでした、すみません…。
いそいそとValue Domainの管理画面を見ると、以下のように設定されていました。
1 2 |
a @ 204.232.175.78 cname www tnantoka.github.io. |
これを
1 2 3 |
a @ 192.30.252.153 a @ 192.30.252.154 cname www tnantoka.github.io. |
に変更すればよさそうです。
あとで気づきましたが、ちゃんと日本語でもお知らせしてくれてました。
GitHub Pagesの旧IPアドレスが利用できなくなります。独自ドメインを利用しているユーザーで旧IPアドレスのままのレポジトリが影響されます。 https://t.co/1XI3X3NheA
— GitHub Japan (@GitHubJapan) November 7, 2014
っていうか@GitHubJapanなんてアカウントあったんですね…。
昔作ったiPadアプリをSwiftでiOS 8なユニバーサルアプリに作り直した
約4年前、Objective-Cの修行のためにオープンソースなテキストエディタアプリ「Edhita」を作りました。(どうせ練習用だし…と適当に名前を付けたことを非常に後悔しています。)
今までほぼ放置しても何とか使える状態でしたが、iOS 8になり、ついに動かなくなってしまいました。
というわけで、今度はSwiftの修行のために、iOS 8用に作りなおしてリリースしました。
ついでに、
- Markdownのプレビュー機能
- エディタとブラウザのデュアル表示
- 全画面表示(横画面の時にTableViewを非表示にする。バグあると思う)
を追加しました。
無料ですのでよろしければどうぞ。
また、引き続きオープンソースですので中身に興味のある方はどうぞ。
お役に立ちましたら、スターよろしくお願いします★
やったこと
古いアプリをなんとか動くようにする
アップデートの挙動をシミュレータで試したいため。(古いアプリをbuildした後、新アプリをbuild)
自動テストで担保しろよという話かもしれませんが、何のテストも書いてなかったのでorz
実機でストアから入れて…でもできるんですが、面倒。
嫌々ながら動くように頑張りました。
汎用的な機能をPod化
今回は以下の4つを切り出しました。
この方針は正解でした。
大きいアプリを1つ作るより、4+1の小さなものを作るほうが楽。
(それSwiftで書き直してないやん、という話は置いといて)
アプリ本体の実装
ここで、ようやくSwift。
上で作ったものや他のPodを利用しながら作っていきます。
古いアプリで作ったデータをそのまま使えればとりあえずOK、という方針であんまり詰め込みすぎないように。
Pod分離+Swift化により、コンパクト(数百行)に実装できました。
感想とか
Xcode 6.0.1の情報。
UISplitViewControllerがiPhoneにも対応
わーい、とか思ったけど、テストのパターン増えた。(iPad、iPhoneに加えてPlusも必要になった。)
とはいえ分岐は少なくて済みそうだったので、ユニバーサルにしてみた。
あたりまえだけど、iPhoneだとDetailViewControllerのViewは表示するまで読み込まれないので、viewDidLoad:でいろいろやると変数がなくて落ちたりするので注意。
Master-Deatailのテンプレートを見ると、DetailViewControllerは「Show Detail Segue」なるもので表示されてる。
コードで書く場合はiPhoneように自分でpushしたりする必要がある。っていうかStroyboards使えということですね。
UIAlertController
messageをnilにすると、タイトルが太字にならない。空白なら太字になる。
無駄にスペースが入るけど、それはnilにしても同じ。
あと、タイトルなしは特にiPhoneでの見た目が残念になるのでやめておいたほうがいい。
enumの省略
1 |
if self.splitViewController?.preferredDisplayMode == .Automatic { |
とかやると、「Command failed due to signal: Segmentation fault: 11」でBuildできない。なんだこれ?
1 |
if label.textAlignment == .Center { |
は動く。やらないけど。
MFMailComposeViewController
2014-10-09 15:37:12.370 Edhita[36937:4381303] viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 “The operation couldn’t be completed. (_UIViewServiceInterfaceErrorDomain error 3.)” UserInfo=0x7f993d335380 {Message=Service Connection Interrupted}
2014-10-09 15:37:30.497 Edhita[36937:4381372] <MFMailComposeRemoteViewController: 0x7f993d24ced0> timed out waiting for fence barrier from com.apple.MailCompositionService
というエラーと共に、シミュレータでメール画面が勝手に閉じる。
実機なら大丈夫だった。
CocoaPodsのplistの出力場所
Pods/Pods-acknowledgements.plist
から
Pods/Target\ Support\ Files/Pods/Pods-acknowledgements.plist
になった。
(Podfileでtarget指定している場合は、Pods/Target\ Support\ Files/Pods-Edhita/Pods-Edhita-acknowledgements.plistとかになる。)
CocoaPodsのtarget
途中で変えると、
ld: library not found for -lPods-Edhita
でbuildできなくなった。
Build Phasesでlib-podsだけにすれば行けた。
(今回ははじめtarget ‘Edhita’ doの中に入れてて途中で外に出した。)
WebViewの表示領域がどんどん小さくなっていく問題
WebViewのwidth, heightに小数点を設定すると表示領域が小さくなっていくという問題に遭遇した。(frameは正しい値だけど右端がどんどん黒くなっていく)
似たような構成作っても再現しなかったので、原因不明。
EditorViewの実装が悪いっぽい。
ひとまずceil()して済ませたけど、ちゃんと原因調べて直したい。
https://github.com/tnantoka/edhita/blob/master/Edhita/Views/EditorView.swift#L73
Swift
まだ慣れない。
気づけば「[self.view addS」ぐらいまで書いて補完されなくて、あ、Objective-Cじゃなかったって気づく。
1日でリリースされた(!)
金曜日に申請して土曜日にリリースされた。正直これが一番心に残ったw
英語のほうをRebuild for iOS 8.って書いたので、単にbuildしなおしただけと思われた?(作りなおしたというつもりで書いた。)
もしくは、iOS 8のみ対応だとテストする時間があんまりかからないから優先されるとか。
TODO
- Gistへの投稿(個人的に欲しいので)
- SFTP(要望有りのため。素のFTPは昔サポートしてたけど、rootViewControllerを差し替えるというとんでもない実装がされてあったので、AdMobのアップデートに合わせて消した。本アプリ唯一のメンテ。)
- アクティビティコントローラ使う(なぜメールだけにしたのか)
- テスト(っていってもモデルの機能はほとんどFCFileManagerに任せてるから、そんなに書くとこないかも?)
- 回転した後にTableViewがNavBarの下に隠れることがあるの解消。EDHFinderのバグだと思う。
だらだら書きましたが、こんな感じです。
それでは。
レイ・アウトのiPhone6用ウルトラスリム・フレキシブルジャケットを約1ヶ月使ってみて
レイ・アウト iPhone6 (4.7インチ)用 ウルトラスリム・フレキシブルジャケット クリア RT-P7TC2/C
こいつです。
以前使っていたiPhone 5は最後の方ケース無しに落ち着いて、iPhone 6もそのつもりだった。
が、いざ使い始めてみると巨大化による落下の不安感が半端無かったので、ケースを買うことに。
材質で迷うこと小一時間。(一応全部使った経験有り)
- シリコン → クリアがないし、安っぽい。
TPU → 耐衝撃性はいいけど、野暮ったい。手触りがあんま好きじゃなかった。
ハード → クリアだけど、ピッタリ合ってないとカタカタなったりして悲惨。
そんな中、レイアウトさんのページで、「特殊手法により、通常のシェルジャケットよりも柔らかく、しなやかに仕上げました。」という文言を発見。
http://www.ray-out.co.jp/products/p7tc2/
これだ!ということで衝動買い。
届いてみると見た目や手触りはポリカーボネイトだけど、確かに柔らかい、まがる。
で、約1ヶ月間使ってるけど、特に不満はない。
つけ始めはたまにずれるのを感じたこともあったけど、馴染んだのかなくなった。
予想通りポケットから何度か落としたけど、今のところ大きな傷はない。
まぁでも、結局ほぼハードと変わらないし、普通のハードでいいかな、という気もする。ちょっと高くなるし。
Dropbox APIのアプリ名を変更する方法
相変わらず、Dropbox APIの日本語情報は少ないですね。
結構使われてるように見えますが、なぜなんでしょう?
というわけで、ほんのちょっとした情報ですが、ブログに書いておきます。
アプリ名(App name)は、StatusがDevelopmentの間は管理画面で自由に変えられますが、
Productionになると変更できなくなります。
(App folder nameなど他の項目は変更できるものが多い。)
今回諸事情でリリース後にアプリ名を変更することになり、少し困りました。
フォーラムを検索すると、サポートに問い合わせればわりと簡単にやってくれるもよう。
https://www.dropbox.com/developers/contact から、”I want to change…”という厨二病のようなメッセージを送ってみたところ、1日後には変更してくれてました。
迅速なサポートで、ありがたいです。
アプリ名を変更したやつはただいま(Appleさんの)レビュー待ちです。
リリースされたらまた宣伝します。
最近のコメント