2017年7月20日木曜日

[Kotlin]スコープ関数のlet, with, run, apply, also の違い

を3日くらいにらめっこして、Kotlinのスコープ関数の違いについてざっくりとまとめてみました。

確認環境
Android Studio 3.0 Canary 7
Kotlin 1.1.3-2
macOS Sierra 10.12.15


returnがレシーバ returnが任意
レシーバの
拡張関数
apply with
run
任意の型の
拡張関数
also let

レシーバの拡張関数のとき
  • thisがラムダ式の内と外で参照先が違う
  • レシーバのprotected, privateの関数は呼び出せない
  • this@MainActivityのような記述で、外のthisも呼び出し可能

任意の型の拡張関数のとき
  • thisがラムダ式の内と外で参照先が一緒
  • レシーバをitで呼び出せる
  • itの代わりに任意の変数名の定義も可能(可読性UPに繋がる)

returnがレシーバのとき
  • 戻り値がレシーバ自身なので、用途に合っていれば1行コードが減る

2017年1月18日水曜日

ママチャリで初出社




ちょっとは自分すごくなってんじゃね?と思ってましたが、


坂道で進めぬ自分に


いままでロードバイクの性能にどれだけ助けられてきたか



自分がいかに無力か


身をもって知る良い朝でした!!!(暑い!!!)

そして今日いい天気。



2017年1月17日火曜日

ロードバイク持ってるけどママチャリ買ってみた

ロードバイク歴10ヶ月なのですが、
  • 通勤に利用すると退社後だとヘトヘトになっていて、ヘロヘロで転びそう
  • 駐輪場に止めても、パーツが盗まれそうで怖い
  • 荷物大きめの買い物ができない
  • ちょっとした買い物に行くだけでも止めてる自転車が気になる
  • 買い物中、自転車が心配でそわそわする
  • そばに自転車いないと心配
  • とにかく自転車心配

な理由から、最近ママチャリも買ってみました。




結論から言うと、


ロードバイクやっぱすごい!


ママチャリを乗ることによってロードバイクの良さを再確認できる!!


ロードバイク最高!!!ヽ(=´▽`=)ノ

な状態になりましたwwあれ?www



1.久々のママチャリ〜漕ぎ始めは生まれたての子鹿の如く〜


びっくりするぐらい、漕ぎ始めにプルプルします。ママチャリってもっと安定してるかと思ってたら、そうでもなかった。
恐怖心半端ないです。

でも、だんだん身体が思い出すのか、すぐ慣れます。


2.無意識の動作で自分でドキッ☆


もう身体にロードバイクが染み付いてます。

1.またがるとき、「あ、ロードバイクのまたがり方やw」とかなります。
2.信号待ちするとき「サドルから降りて足つかないと落ち着かんわw」ってなります。

ロード乗る前じゃ全然したことなかった動作をママチャリでもしちゃってドキッと自分でするのです。なんだかときめきます。

身体に染み付いてるロードバイクの習慣に自分で嬉しくなってテンション上がります。

逆にママチャリ的乗り方の習慣に戻ったら、ロード乗るときに転倒の原因になるので、習慣はママチャリのときでもそのままにしておこうと思います。


3.ロードバイクとママチャリの違いに混乱


漕いでも漕いでも前に進まない。全然進まないぞ。思った以上に体感スピードが遅い。

え?坂道全然進まないんだけど。ロードならギア変えてスイスイと座ったままで行けるはずの傾斜なのに、立ちこぎしても登れる気がしないぞ。

今泉くんはなんでママチャリ小野田くんに負けかけたんだ?え?


4.結果思ったこと


ママチャリを買うことによって、ロードバイクの性能のありがたみが再確認でき、ロードバイクがもっと好きになりました。

ママチャリはママチャリで、ちょっと出かけるが気軽にできていい感じです。
ママチャリ乗ってからロードバイクに乗ると、開放感が半端ないで。すごく自由感じるで。

なんか、最近購入したママチャリの感想書こうと思ったら、ロードバイクの話になったので、ママチャリ感想はまた後日別で書こうと思います。


2017年1月11日水曜日

WebViewでハマってたところをCrosswalkで解決

ifreamを含むページがWebViewでうまく動作してくれない(ブラウザアプリで表示とWebViewで表示とで、挙動が一致しない)問題に直面し、ハマっておりました。

WebViewをIntelが開発しているオープンソースライブラリCrossWalk のXWalkViewに置き換えたところ、ifream内も正常に動作してくれました!

置き換え時にやったこと


1.app/build.gradle

repositories {
    maven {
        url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2' 
    }
}

android {
    // ...
}
dependencies {
    // ...
compile "org.xwalk:xwalk_core_library:17.46.448.10"
 // ...
}

2.Java

  • webview.getSettings().setJavaScriptEnabled(true)の設定は削除(該当メソッドは無いけど、javascriptは有効になってるっぽい)
  • webView.loadUrl -> loadに変更
  • @JavascriptInterface -> @org.xwalk.core.JavascriptInterfaceに変更
  • webview.setWebViewClient -> setResourceClientに変更
    • shouldOverrideUrlLoading 継承(遷移しようとするURLの取得)。戻り値にtrue
    • WebViewClient#onPageStartedのかわりにXWalkResourceClient#onLoadStartedを継承
    • WebViewClient#onPageFinishedのかわりにXWalkResourceClient#onPageFinishedを継承

3.xml

  • <WebView を <org.xwalk.core.XWalkViewに変更


License

3-clause BSD license(三条項BSDライセンス) (New BSD License(修正BSDライセンス ) とも呼ばれている)
ライセンスと著作権の表示が必須で、商用利用、修正、配布、派生物に別の条件を課すことが可能です。

参考


珪藻土バスマット買ってみた。

バスマットをいちいいち洗濯するのが面倒に日々感じていたので、珪藻土バスマットを購入してみました。使用して1ヶ月経過中。


「珪藻土」は「けいそうど」と読みます。



頻繁な手入れ不要!すぐ足裏が乾く!!



すごく楽!!!


楽なのとっても素晴らしい!!!!゚*。☆ヾ(´∀`)ノ☆。*゚

虫がわくとか書いてるレビューがありましたが、使用して1ヶ月経ちますが、珪藻土バスマットとても綺麗です。


2、3回足踏みするだけで、びっくりするくらい足の裏がさらっとした感覚になり、気持ちいいです。

足踏みしたての写真がこちら↓↓↓

2、3回足踏みして、さぁ、写真を撮ろうとしたら、みるみる乾いていって足跡が薄くなっていくので焦って撮りましたww



3千円未満で、面倒な洗濯物が一つ減らせるので、とってもお得です!

2016年12月2日金曜日

[iOS]UITableViewCellにpaddingを実装しようとしてハマった

やりたいこと
リスト表示している項目の間に隙間を作りたい

Androidならxmlで簡単に設定できるから、iOSもstoryboardだけで簡単にできる方法があるのではと探したけど、結局コード書きました。

やったこと1(項目の下だけPadding)


  • UITableViewCellのframeをオーバライドし、setされるときにframe.size.height - padding してframeを更新する
  • tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) で戻り値をCellの高さ + paddingの値で返す

import UIKit

class ListCell : UITableViewCell {

    static let paddingBottom : CGFloat = 20
    static let height : CGFloat = 478 + paddingBottom

    class func getHeight() -> CGFloat {
        return height
    }

    override var frame: CGRect {
        get {
            return super.frame
        }
        set (newFrame) {
            var frame = newFrame
            frame.size.height -= ListCell.paddingBottom
            super.frame = frame
        }
    }
}

class ListViewController: UITableViewController {

    //・・・

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return ListCell.getHeight()
    }
}

やったこと2(項目の上下にPadding)


  • storyboardのAutoLayoutで、上下に隙間を作るConstainsを追加
  • tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) で戻り値をCellの高さ + paddingの値で返す

import UIKit

class ListCell : UITableViewCell {
    class func getHeight() -> CGFloat {
        return 518
    }
}

class ListViewController: UITableViewController {

    //・・・

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return ListCell.getHeight()
    }
}

参考

http://stackoverflow.com/questions/19649144/ios-add-horizontal-padding-to-tableview-cells

Objective-C
http://stackoverflow.com/questions/2539021/how-to-set-the-width-of-a-cell-in-a-uitableview-in-grouped-style

Swift
https://www.reddit.com/r/swift/comments/2fr849/uitableviewcell_with_custom_width_in_swift/?st=iw6l44mk&sh=fd1d9a6e

2016年5月22日日曜日

Free Apple Developer Acountの使用でハマったこと

環境

OS X El Capitan
Xcode7.3

Free版で実機にインストールできるけど。。。

  • インストール後起動できるようにするのが面倒
  • アプリ起動時はネットワークが接続されている状態になっている必要がある

現状の起動許可の設定方法

設定 > 一般 > デバイス管理 > デベロッパAPPでアカウント選択 > ○○を信頼を選択


デベロッパー登録して、アプリの申請へ

Free版で使用していたBundle Idが登録できない

Xcode7から、Bundle Idの自動登録がされる関係か、Free版で使用していたBundle Idが、Register iOS Apps IDs で登録できない状態になっていました。

Free版で登録したBundle Idは、自分で編集や削除はできないようです。。。
参考
http://stackoverflow.com/questions/33432903/remove-app-id-with-free-apple-developer-account

アップルへFree版で使用したBundle Idの削除要請

https://developer.apple.com/contact/submit/

I want to remove app id "(Bundle Id)"  with free Apple Developer Account

なメッセージを送りました。
結果は後日追記。


2016/6/10 追記
問い合わせの返事はすぐ日本語でメールが来ました。
削除できるIDか確認するため、理由の提示を求められました。

最初の問い合わせから1週間後くらいで削除完了のメールがきました。
BundleIDをどうしてもこれがいいって理由でないのであれば、違うBundleIDを生成し直してリリースしたほうが楽そうです。

※審査に提出したバイナリのBundleIDは途中から変更することは不可能なので注意