Go研修を修了しました

2017/11~2018/4の6ヶ月間、柴田先生のGo研修を受講しました。無事修了したので感想やメモをまとめておきます。

研修概要

こちらの研修を受講しました。 第5期Go言語研修を開講しました:柴田 芳樹 (Yoshiki Shibata):So-netブログ

「プログラミングGo」の書籍を半年間書けて読み、課題もすべて解いていくスタイルの研修になります。 予習時間はすべてプライベートの時間を使って行うこととなっており、私はプライベートの半分以上の時間はこのGo研修の予習に費やしたと思います。

第5期Go研修が終了しました:柴田 芳樹 (Yoshiki Shibata):So-netブログ

続きを読む

Picasso 2.5.2→2.71828へのマイグレーションについてのメモ

Picasso 2.71828にバージョンアップする際にissueや関連レポジトリを探しまくったので、どんなことがあったのかと思考フローと調べたこと等を雑に記録しておく。

2.5.2での問題

発端は一部の端末でresize()関数を挟むと画像がロードできない問題があった。(必ずonError()関数が呼ばれてしまう。) 手元で再現したのはOS version 6.0.1、Picasso version 2.5.2。

続きを読む

3年が過ぎた

年度末は胃腸炎になったりバタバタしていて3月中に振り返りエントリを書けなかった。 完全にタイミングを逃したが未来の自分のためにやっぱりまとめておく。

[参考]

1年目 文系からエンジニアになって1年が経っちゃったよ - C-FRONT

2年目 社会人2年目をエモめに振り返る - C-FRONT

続きを読む

社内ISUCON合宿に参加してきた感想

社内で1泊2日の合宿形式で行うチューニングコンテスト(通称社内ISUCON)に参加してきた。非常に学びがありモチベーションもあがったので、色々感じたことや新しく知ったことを書き残しておく。

前提知識

アプリケーションの開発経験しかなく「チューニング」に関しては知識なし。Android→サーバーサイドの開発に移った際、開発だけではなくサーバーの運用・保守までできるような知識をつけたいと思っていたのでISUCONのことは気になっていた。

続きを読む

初めてのサンフランシスコ/海外カンファレンス〜KotlinConf2017に行ってきた〜

初めて海外カンファレンスに行ってきた。次行く機会に自分でも見直せるように書き残しておく。

www.kotlinconf.com

きっかけ

  • ちょうどGoogle IOがあった時でTLでtwitterでいつも見ている人が皆Google IOに行っていることを知る
  • 自分の会社、他の部署・他の関連会社では同じ年くらいの人も行っていたのでいいなーと思う。
  • 会社で行かせてもらうほど自分に技術やスキルに自信がなかったのですぐには行けないけど、いつか行きたいなと思っていた
  • シリコンバレーや海外で働くことに対して漠然とした憧れはあったけど実際に何が良いのかうまく自分の中で説明できなかった。
  • 「とにかく海外カンファレンス行ってみたい!」何が良いのかも一回行ってみないとわからないでしょう、一回行ったら気が済むのでは、と思っていた。
続きを読む

Groovy入門して躓きメモ

Java→Groovy初日で出会ったエラーたちやメモたち。 syntaxもよくわからない中で出会って、解決するのに慣れなかったのでメモしておく。

メソッドの呼び出し間違い

メソッドの呼び出しが間違った時

Caught: groovy.lang.MissingMethodException: No signature of method: hogepackage.hogefile.hogemethod() is applicable for argument types: (java.math.BigDecimal, java.util.ArrayList, groovy.sql.Sql) values: ...

特にクロージャの中でエラーが起きるとクロージャのどこでそれが起きているのかよくわからなくて慣れるまで時間がかかった。

変数の宣言のスコープ

http://d.hatena.ne.jp/Kazuhira/20120318/1332083318

before

def sql = Sql.newInstance()

Map.each{k,v->
    searchUuidByUser(k,v,sql)
}

eachの中からsqlは呼び出せない。

Caught: groovy.lang.MissingPropertyException: No such property: sql for class: hogepackage.hogefile
groovy.lang.MissingPropertyException: No such property: sql for class: hogepackage.hogefile

after

sql = Sql.newInstance()

Map.each{k,v->
    searchUuidByUser(k,v,sql)
}

def をつけているとクロージャ内やメソッド内から呼び出せない。

列名が無効

before

def SELECT_USER_POINT_HISTORY = "SELECT ID,POINT,INSERT_AT from POINT_HISTORY where ID = $userId ORDER BY INSERT_AT"
        List<Point> pointList = new ArrayList()
        sql.eachRow(SELECT_USER_POINT_HISTORY){
            Point dto = new Point()
            dto.type = it.type
            dto.point = it.point
            dto.insertAt = it.insert_at
            pointList.add(dto)
        }
警告: Failed to execute: SELECT ID,POINT,INSERT_AT from POINT_HISTORY where ID = ? AND TYPE != 0 ORDER BY INSERT_AT because: 列名が無効です。
Caught: java.sql.SQLException: 列名が無効です。
java.sql.SQLException: 列名が無効です。

てっきりSQLが悪いのかと思ってタイポかどうか必死に探したけどSQLが悪いわけじゃなかった

after

def SELECT_USER_POINT_HISTORY = "SELECT ID,POINT,TYPE,INSERT_AT from POINT_HISTORY where ID = $userId ORDER BY INSERT_AT"
        List<Point> pointList = new ArrayList()
        sql.eachRow(SELECT_USER_POINT_HISTORY){
            Point dto = new Point()
            dto.type = it.type
            dto.point = it.point
            dto.insertAt = it.insert_at
            pointList.add(dto)
        }

eachRowの中で参照しているit.typeがselectするものに含まれてないため。 エラー行数をよく見るとit.typeを使っている行を指しているのでわかる

for文の抜けかた

https://stackoverflow.com/questions/3049790/can-you-break-from-a-groovy-each-closure 次のイテレートに入るならeachのままcontinueしてもOK そもそもループを中止したい時(Javaでいうbreakをしたい時)はfindにしてその中でtrueを返してループを終わりにする

pointList.find{
                Data data = new Data();
                if(nowPoint<it.point){
                  //breakと同じ。ループを抜ける
                    return true;
                }else{
                    //continueと同じ。
                    return false;
                }
}