しもむブログ

技術メモ。といっても高度なことは書けないので…初心者がハマったところや、ググってもすぐには出てこないようなものを書くつもり。

Gradleプロジェクトをアップグレードする

  • Gradleプロジェクトはリポジトリをクローンしてgradlewを叩くだけだが、Gradleのバージョンが古いことがある
    • 過去に作ったプロジェクト
    • 落としてきたプロジェクト
    • ローカルのGradleが古いまま作っちゃったプロジェクト
  • そんなときはこのコマンドでアップグレードできる
./gradlew wrapper --gradle-version=4.8
  • 結果はgradle/wrapper/gradle-wrapper.propertiesが変わるだけだけど、これで指定したバージョンのGradleが落ちてくる

  • 存在しないバージョンも指定できてしまう

./gradlew wrapper --gradle-version=4.99

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
  • この場合はもうgradlewできなくなってしまうので注意
  • やってしまったら、gradle/wrapper/gradle-wrapper.propertiesを手動で修正する
./gradlew wrapper --gradle-version=4.99
Downloading https://services.gradle.org/distributions/gradle-4.99-bin.zip

Exception in thread "main" java.io.FileNotFoundException: https://downloads.gradle.org/distributions/gradle-4.99-bin.zip
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1836)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
        at org.gradle.wrapper.Download.downloadInternal(Download.java:60)
        at org.gradle.wrapper.Download.download(Download.java:45)
        at org.gradle.wrapper.Install$1.call(Install.java:62)
        at org.gradle.wrapper.Install$1.call(Install.java:48)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69)
        at org.gradle.wrapper.Install.createDist(Install.java:48)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

Gebでブラウザとドライバーのバージョンが合っていない時に出るエラー

はじめに

  • Gebで不思議なエラーに悩まされた時の話です。
  • Gebについてはぷーさにさんの記事が詳しいので割愛します。

codezine.jp

  • Yokohama.groovy #42Gebについて学んだ後、ひさしぶりに動かしてみると全然動きません。
  • 原因はブラウザのドライバーのバージョンが古かったからなのですが、エラーからは直接わからず…
  • そこでバージョンが合っていないとどんなエラーが出るか試してみました(とりあえずChrome Driverだけ)。
続きを読む

TDDBC Tokyo 2017-09に行ってきた #tddbc

  • TDDBC | Doorkeeperを見つけてからずっと参加したいと思ってけどなかなか都合が合わず
  • Twitterで今回のconnpassのページが流れてきて参加

tddbc.connpass.com

  • togetterまとめ

togetter.com

  • 自分のやったことをメインにまとめておきます

基調講演

ペア決め〜お昼

  • @hika_riruさんとGroovy+Spockでやることに決定
    • twitter等ではお互い知ってたものの初対面、よろしくお願いします
  • お昼はオシャレなお店
    • 2階が貸切状態でそのままもくもくしたかった

ペアプロ

  • お題はセマンティック・バージョニング
  • テストするクラスはsutにしたいって言ったら、鈍器を持ってると思われたw
  • JUnit実践入門にも書いてあるからこわくないよ

  • 2回目のコードレビューで指名されて前で喋ることになってしまった
    • 1回目のコードレビューのしゃべりが面白すぎたのでハードルが高かった
  • 勉強会で初めて人前で喋ったのだが、TAの方々がやさしくフォローして頂いたので感謝
  • 喋ったこと(記憶にあること)
    • お題は、仕様変更の練習としてあえて全部読まずに1つずつ進めた(ペアでの合意はなし!)
    • 仮実装(茶番)は大事。そもそも実行環境がちゃんとできていなかったのも検出できた
    • Spockのよさを2人で感じた(特に@Unroll)
    • IDEのショートカットを共有できた

懇親会

  • 余り物頂きました

感想など

  • Twitterで知ってる人と会えていろいろお話できた
    • TAの@nyasbaさんに観測されていて嬉し恥ずかし
  • 長丁場なので途中で帰りたくなったらどうしようと思ったけど、ペアプロしてるとあっという間に時間が過ぎて楽しかった
  • TAの層も厚く(ペア:TA=1:1ぐらい?)、絶妙なタイミングでフォローいただけたのでよかった
  • レビューで喋ったこと自体もいい経験だったし、結果として自分達はどういうことを考えて進めたのか勉強会内で振り返るきっかけになった
  • まねしてみたいこと
    • ナビゲーターは少し先を見る。車の運転と一緒
    • JUnitのテストメソッドが数字で始まるときは"_"入れる
    • PRの質問に対しての回答をコードのコメントに書く

Jenkinsfileでnode指定するとmasterノードジョブの一部として実行される

  • Jenkinsfileでnodeを指定してもビルドキューに入ったまま動かない
  • ビルドキューを見るとnode指定しているのにmasterで実行しようとしているし、なにか書き方が間違っているのかと思いめちゃくちゃ時間を費やす

f:id:mshimomu:20170204164256p:plain

  • masterノードでジョブを実行したくないという事情からあえてオフラインになっていたのが原因
  • masterをオンラインにしてみると動いた
  • masterで動いた後に指定したnodeで実行されているのがわかる
    • まず、masterにはjenkinsfile-sample >> master と表示される
    • 次に、slaveにはpart of jenkinsfile-sample >> master と表示される

f:id:mshimomu:20170204162508g:plain

バッチファイルからUTF-8のファイル(日本語あり)を作りたい

  • 文字コードを変えて、echoしてファイルにリダイレクトすればいけるもんだと思ったら謎な挙動だったのでメモ
  • 人様のマシンで実行してもらうのでコマンドプロンプトのフォントを変えるとかそういう操作もなしにしたかったという前提あり

  • 結果として、日本語入力が可能な状態で変数に出しておかないといけないっぽい

続きを読む

PropertiesからConfigSlurperに乗換えようとしてハマった話

はじめに

  • ConfigSlurperはGroovyスクリプト形式で書かれた設定ファイルを読み込むためのユーティリティクラスです。*1
  • Groovy使い始め直後にConfigSlurperを使おうとしてハマった話です。
  • ちなみにJavaではpropertiesファイルをよく使っています。
続きを読む

JJUG CCC 2016 Fallに行ってきた #jjug_ccc

  • サイトはこちら
  • 前回は、ツイートを見返すと行くのがつらかったらしいので今回はまず行くところから!
  • 公開されているスライドはのちほど貼り付けていきます
  • 今回の戦利品
    • ショートカットは自席の見えるとこに置いておきたいし、コピーして配りたいくらい
    • あと、コーティングされた名刺。コーディングに空目したのが僕だけじゃなくてよかった。

f:id:mshimomu:20161204152743j:plain

続きを読む