golangのType Assertionメモ
- Type AssertionはC++のdynamic_cast的な機能。
- interfaceを別の型にキャストする時に使用。
- 2通りの受け方がある。
package main import ( "fmt" "errors" ) type MyError struct { i int } func (e *MyError) Error() string { return fmt.Sprintf("i = %d", e.i) } func check1(e error) { myErr, ok := e.(*MyError) if ok { fmt.Println(myErr) } else { fmt.Println("It's not *MyError") } } func check2(e error) { myErr := e.(*MyError) if myErr != nil { fmt.Println(myErr) } else { fmt.Println("It's not *MyError") } } func main() { e100 := &MyError{100} e200 := errors.New("200") check1(e100) check1(e200) check2(e100) check2(e200) // panic }
http://play.golang.org/p/MY2G3J_QPU
package main import ( "fmt" "strconv" ) func Println(x interface{}) { if i, ok := x.(int); ok { fmt.Println(strconv.Itoa(i)) return } if i, ok := x.(int64); ok { fmt.Println(strconv.FormatInt(i, 10)) return } if _, ok := x.(string); ok { fmt.Println("ニヤ(・∀・)ニヤ") return } } func main() { Println(int(100)) Println(int64(200)) Println("300") }
安定してよく使っているiOS/Androidアプリまとめ
↓の記事見てたら、なんとなくまとめたくなってきたのでまとめ。
2014年版、2ちゃんねるでテンプレ入りしたiPhoneの神アプリ150選 : IT速報
使っている端末
仕事ではNexus5(Lollipop)、iPhone 5sも使ってます。
よく使うアプリ
カテゴライズは上記事を借用します。
ブラウザ
iOSは基本Safari。Chromeは使い勝手微妙*1だけどPCとの連携は便利。
AndroidはChrome。前の端末(4.0)の時はChromeもFirefoxも重かったので標準ブラウザ使ってました。
ウェブクリップ
しない。ブクマか要点をEvernoteにまとめるので十分。
ランチャー
非使用。ホーム画面を整理する派です。横断検索も使わないですね。
RSS
昔使ってましたが、未読放置ばかりになるので使うのやめました。
ファイラー
同列で並べると違和感ありますが、強いてあげるならこれです*2。
iOSは定番のGoodReader。とはいえほぼPDFリーダーと化してますが。PDFをクロップして読めるのが非常に良いです。
AndroidはYahoo!ファイルマネージャーが割りと細かいところまで手が込んでいて良いと思います*3。Yahoo!という安心感もあります。初回起動時にホーム画面にショートカット作ったりステータスバー占拠したりすることだけがネックです。
クラウド、ストレージ
Google DriveはPC非同期で大きめのファイル中心、DropboxはPC同期で小物中心という使い分けしてます。
RAS (リモートデスクトップ?)
特になし。昔はいろいろ試しましたが、結局使う機会ないというのが結論です。
お恥ずかしいことにRAS(Remote Access Service)って言葉初めて聞いたのですがVPN的なものなのですね。そういういみでは元記事のカテゴリ名はリモートデスクトップの方が正しいと思います。
ID、パスワード
日記
特になし。
アドレス送受信
特になし。
コミュニケーション
基本公式アプリしかない世界なので、テンプレもなにもないとは思いますが、普通にLineとかです。
画像編集
色々入ってますが、結局PCでしか画像編集してないというのが結論。
録音
特になし。強いて言うなら標準アプリ。
音楽検索、歌詞検索
ニーズがないので特になし。
ラジオ
色々入れたけど使った試しがないので省略。
動画
特になし。
ダウンロード
特になし。
辞書
ググる。
メモリ管理
特になし。この手のアプリをあまり信用してないということもあり。
家計簿
社会人になってお金入ってくるようになったので、検討し始めようかという所。
広告除去
使ってない。
キーボード
- iOS: 標準
- Android: Google日本語入力
iOSのカスタムキーボードアプリ、増えてきた印象ありますが、まだ使ってないです。
AndroidはGoogle日本語入力。QWERTY入力で上フリックで数字入れられるのがマジで便利です。
株式、FX
特になし。
航空機運行状況
特になし。
まとめ
- 標準アプリが多い。
- 特になし、が多い。
アプリの使用頻度に関しても80対20の法則が成り立つ気がしていて、なるべく2割のアプリに絞ろうというのが信条です。
それが、標準アプリや特になしの増加に繋がっているのかなと思ってます。
Kindle書籍を買ったけどダウンロード・配信できない問題と解決法
ググっても今回起きた問題と同一のものが見つからなかったのでメモしておきます。なおTwitterで検索したら数件見つかったのでごく稀に起きる現象のようです。
今回の現象
- 12月14日0時頃、1-Clickで購入
- 購入完了画面が出る
- Kindle Cloud Readerで読む→試し読み版になる*1
- 配信ボタンを押してもできませんと出る
- Android端末はグーレアウト
- Kindle Cloud Reader, iPod Touchの配信ボタンは押せるが、配信できませんと出る。
- 注文の詳細・領収書は見れる
- 注文履歴に入っている
- 未発送の注文にも入っている*2
- ご注文の確認メールが来ていない
特徴としては、ご注文の確認メールが来てない所になるかもしれません。
解決法
といっても大したことではなく、お問い合わせしただけです。
- 画面下部メニュー、右下「カスタマーサービスに連絡」
- 「カスタマーサービスに連絡」ボタン
- お問い合わせ方法を選択: 電話、チャット、Eメールの3択
- 夜中だったのでEメールにした
- 適当に埋める
- 注文番号とかも書いておいた。
翌日
- 3時頃にご注文の確認メールが来た様子
- 10時頃にお知らせメールが来た
このたびは、Kindle本のご注文について、ご迷惑をおかけしていることをお詫びいたします。
12月13日から14日にかけてご注文いただいたKindle本について、注文の処理に時間がかかりダウンロードが開始されない件について、問題が修復いたしましたのでお知らせいたします。
なお、この問題が発生している間に、同じKindle本を重複してご注文いただいている場合、一方の注文をキャンセルし、返金処理を行います。返金処理が完了しだい、Eメールでお知らせいたしますので、今しばらくお待ちください。(本メールと入れ違いで、お受け取りいただいている場合はご容赦ください。)
その他、ご不明な点がございましたらご遠慮なくお問い合わせください。
どうせこんなことだろうと思い、重複注文しなくて正解でした。
Kindle配信の仕組みの推測
- step
- ユーザ: 1-Clickで購入ボタンを押す。
- step
- サーバ: 該当商品を購入キューに入れる。
- ユーザ: 画面が切り替わる。
- step
- サーバ: なるはやでキューが処理される。完了時にご注文の確認メール送信。
- ユーザ: KindleReaderで書籍をダウンロード。
今までも購入後、Kindel Cloud Readerで読む時にお試し版になる現象は何度も起きていました。この原因は3rdステップのタイミングの問題と推測されます。
今回の問題は、3rdステップのサーバ側処理が何らかの原因でスタックしたことが原因ではないかと推測しています。