gradle-embulk-plugin v0.3.0 リリース
Release v0.3.0 · kamatama41/gradle-embulk-plugin · GitHub
gem
, gemPush
のタスクの内容を最新のEmbulkのものに追従しました。詳しい使い方は以下の記事を参照ください。
JavaでRubyのeach_sliceがしたい
each_sliceというのは配列を指定した要素数の配列に分ける処理です。リストの中身をn件ごとに処理するときに便利です。 Javaには同様の処理が(たぶん)標準APIには無いので、こんな感じで行けそうです。
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; public class Test { public static void main(String[] args) { // [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] System.out.println(slice(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 3)); } private static <T> List<List<T>> slice(List<T> list, int n) { final int resultSize = (int) Math.ceil((double) list.size() / n); return IntStream.range(0, resultSize) .mapToObj(i -> list.subList(n * i, Math.min(list.size(), n * (i + 1)))) .collect(Collectors.toList()); } }
参考: Is there a way to do the Ruby each_slice in Java 8? - Stack Overflow
アメリカに行ってきた
先週1週間会社の出張でアメリカ(マウンテンビュー)に行ってきました。海外は前職でのフィリピン出張以来2年ぶりです。
飛行機
行きは羽田からサンフランシスコ国際空港(SFO)の直行便で9時間ほど、帰りは後述の理由からSFOから香港国際空港(HKG)経由の成田への便でした、香港での待ち時間含めて22時間くらい。中国は初上陸でしたが、HKGでWi-Fi使う分には普通にTwitterできました。
香港国際空港着、空港内のWi-FiからTwitterはみれる模様。
— かまたま (@kamatama_41) September 1, 2018
気候
滞在した一週間は雨も降らず、サンフランシスコもマウンテンビューも最低10℃最高25℃くらいで朝は肌寒く日中は過ごしやすい、過ごしやすい気候でした。"ベイエリアは湿度が低いので日本ほど暑く感じない" というのをよく聞いていましたが、実感しました。
食事
基本的にアメリカ基準のサイズですべてが大きかったです。会社のランチはEAT Clubというのを使っているのですが、サラダ+主菜
で注文したらサラダが直径25cmくらいのボウルに並々入っていて単体でお腹いっぱいになる量でした。結局食べきれず、持って帰って夜食べていました...w
あと、マウンテンビュー最後の夜にSushitomiという店で寿司を食べましたが、日本のクオリティで普通に美味しかったです。近くのshalalaというラーメン屋も美味しいらしいので、今度MVに行った際は寄ってみたいです。
仕事
1週間と短い間の滞在で時差ボケもありあまり効率的に作業ができたとは言いがたかったですが、直属の上司やプロダクトマネージャー、QAチームなどと初めて直接顔を合わせてコミュニケーションできたので、今後の仕事のやり易さに繋がればなあと思います。
歯の詰め物が取れた
3日目に歯の詰め物が取れてしまいました。治療したかったのですが、HRの方とも相談して日本に帰国後治療することに。IT健保の場合、海外での医療費は後で申請すれば返金してもらえるようなのですが*1、日本の治療費基準で返金されるようなので、日本の3~10倍ほどすると言うUSでの歯科治療費を考えると、申請する手間と割にに合わないと判断しました。
Uber, Airbnb
今回の出張で初めてUberとAirbnbを利用したのですが、なるほどこれは便利だなあという感じでした。特にUberは精算の手間も無くなるし日本でもUberもしくは同様なサービスが流行ってほしいなと思いました。
コンピュータ歴史博物館
マウンテンビューを経つ直前に行ってきました。そろばんから現代のコンピュータまでの計算機の歴史が一同に介しており、とても見ごたえがありました。時間がなく駆け足で見ることになってしまったので、また行ってじっくり見たいです。
US出張の最後に心ばかりの観光を (at @ComputerHistory Museum in Mountain View, CA) https://t.co/zOKJWTZ7Pt pic.twitter.com/y16DSZ97w9
— かまたま (@kamatama_41) 2018年8月31日
余談
出張後に夏休みを取って、家族とアメリカ観光をする予定だったのですが、直前になり子供が熱を出して渡航できなくなってしまうと言うハプニングが。結局諸々の予定をキャンセルし、帰りの航空券も取り直し日本に帰ることになりました。ホテル、ツアーなど直前キャンセルが利かないものも多く、10%ほどしかお金は戻ってきませんでした(泣)
tfenvのオーナーを移管した
色々issueとかPRとかもらっていたのですが、転職も決まってTerraformユーザーではなくなってしまったこともあり、私自身がメンテナンスするモチベーションが上がらなくなっていたため、別の方にオーナーになってもらうことにしました。
I'm looking for new owner or maintainers of #tfenv. Please let me know if you are interested in it, thank you!
— かまたま (@kamatama_41) April 12, 2018
tfenvの新しいオーナーかメンテナーを探しています。興味がある方は私まで何かしらの方法でメッセージを下さい。https://t.co/LeuG2Irboo
2ヶ月ほどの募集期間と話し合いを経て、前からコミットしてくれていたZordrakさんに移管することになりました。
もともとコラボレーターだったZordarkさんにtfenvのオーナーシップを引き継ぎました。 https://t.co/25bILLwccb オーナーではなくなりますが、今後共tfenvをご贔屓にしていただけると幸いです。
— かまたま (@kamatama_41) July 2, 2018
300以上のスターをもらって世界各地の人からissueやPRをもらうようなOSSを作るというのは光栄で、いい経験になりましたが、OSSを個人でメンテし続けるということの難しさも実感しました。唯一残念なのは、移管することで自分のGitHubプロフィールがスター数的に寂しくなってしまったことです(笑)
オーナーではなくなりましたが、今後もtfenvをご贔屓にしていただけると幸いです。
CircleCIでgradle testがOOMで落ちるのを防ぐ
とあるプライベートなリポジトリで急にCircleCI上のgradleのテストが落ちるようになってしまい、レポートのxmlも出力されなくなってしまいました。
うーん、CirclrCIでテストに失敗したんだけど例外のログが何も出ない、その上なぜかJUnitのレポートも作成されないしローカルでは成功する…原因が判らん…
— かまたま (@kamatama_41) July 13, 2018
その時のログの一部
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > Process 'Gradle Test Executor 1' finished with non-zero exit value 137 * Try: Run with --debug option to get more log output. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':test'.
テストのプロセスが exit value 137
で落ちているとのこと。調べてみるとOOMっぽい感じです。
Exit code 137 - Out of memory – CircleCI Support Center
確かに、今回テストの数をParametarizedを使って倍に増やしたので、それが原因っぽいです。
Gradle自体はこちらによるとデフォルトでは1024MBヒープサイズを確保するようなのですが、 test
タスクはビルドプロセスとは別のJVMを使うようになっており、そこにはこの制限が適用されないようです。そこで test
タスクのmaxHeapSizeを使って最大値をCircleCIのデフォルト(4GB)を超えないよう調整します。
参考:
Testing in Java & JVM projects - Gradle User Manual
Test - Gradle DSL Version 4.8.1
test { // Not to exceed the limit of CircleCI (4GB) maxHeapSize = "3g" }
これで落ちずにテストを完遂できました。
Chromeで特定のドメインのアクセスをリダイレクトさせる
Twitterのブックマーク機能は現在PC版のサイトでは提供されておらず、mobile.twitter.com を使ったモバイル版でアクセスする必要があります。
An easier way to save and share Tweets
Bookmarks are now rolling out globally on Twitter for iOS and Android, Twitter Lite, and mobile.twitter.com.
なので、外部のサイトから特定のツイートのリンクを踏んでそれをブックマークしたいとなると、ブラウザバーでドメインに mobile.
加えてという作業が発生します。いちいち面倒だったので、ブラウザの設定でリダイレクトできないか色々調べると、こちらの記事が当たりました、2018-6-28公開、タイムリー!
ということで、最初に紹介されているSwitcherooを今は使ってます。設定はこんな感じです。
最初は from: twitter.com
to: mobile.twitter.com
としていたらうまく動きませんでした。部分一致で探しているようで mobile.twitter.com
でアクセスしたときも mobile.mobile.twitter.com
にアクセスしようとしているようでした。最終的にURLスキームをつけることで解決しました。