かまたま日記3

プログラミングメイン、たまに日常

JavaでRubyのeach_sliceがしたい

each_sliceというのは配列を指定した要素数の配列に分ける処理です。リストの中身をn件ごとに処理するときに便利です。 Javaには同様の処理が(たぶん)標準APIには無いので、こんな感じで行けそうです。 import java.util.Arrays; import java.util.List; imp…

アメリカに行ってきた

先週1週間会社の出張でアメリカ(マウンテンビュー)に行ってきました。海外は前職でのフィリピン出張以来2年ぶりです。 飛行機 行きは羽田からサンフランシスコ国際空港(SFO)の直行便で9時間ほど、帰りは後述の理由からSFOから香港国際空港(HKG)経由の成田へ…

tfenvのオーナーを移管した

色々issueとかPRとかもらっていたのですが、転職も決まってTerraformユーザーではなくなってしまったこともあり、私自身がメンテナンスするモチベーションが上がらなくなっていたため、別の方にオーナーになってもらうことにしました。 I'm looking for new …

CircleCIでgradle testがOOMで落ちるのを防ぐ

とあるプライベートなリポジトリで急にCircleCI上のgradleのテストが落ちるようになってしまい、レポートのxmlも出力されなくなってしまいました。 うーん、CirclrCIでテストに失敗したんだけど例外のログが何も出ない、その上なぜかJUnitのレポートも作成さ…

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 Andro…

Parallel Streamの並列数を調整する

Streamの parallel メソッドを呼ぶとストリームの処理を並列に実行できますが、これは内部的には前回紹介したForkJoinPoolが使われています。ForkJoinPoolは内部でcommon poolと呼ばれる共通プールを持っており、明示的にPoolを指定しない ForkJoinTask#invo…

ForkJoinPoolについて

ForkJoinPoolはJava 7から導入された新しいExecutorのフレームワークです。 旧来のExecutorと違うのは、タスクのスケジュールのアルゴリズムとして、work-stealingを採用していることです。これは再帰処理やタスクの中で更に細かな子タスクが生成されるよう…

退職しました3

4月で約2年半所属した前職を退職しました。お世話になった皆さんありがとうございました。 これまで SREチームとしてインフラ周りを幅広く見ていました。アプリケーション開発以外の仕事は大体やったと思います。一部ですが具体的には以下の様なことをやって…

embulk-input-remote v0.4.1 リリース

GitHub RubyGems 約1年ぶりのリリース、0.4.0はGemはリリースできたのですが、CircleCIからの自動タグ付けに失敗したので新しいのをリリースしました..w 0.3系から仕様は変わってませんがEmbulk 0.9にあげたりKotlinとかその他の依存ライブラリやGradleのバ…

embulk-filter-hash v0.4.0 リリース

GitHub RubyGems 約1年ぶりのリリース、Embulk v0.9系だと動かなかったようで、対応しました。 あとKotlinも最新版に上げました。

CircleCI上のRSpecのテスト時間をparallel_split_testを使って短縮する

CircleCIを使ってテストを実行する場合、テストはcircleci tests splitコマンドで分割した上で複数コンテナを使うことでテストの実行時間を短縮することができます(参考リンク)。ただ、コンテナ数を増やすのも限界がありますし*1、少し前までtiming-based sp…

envsubstで簡易テンプレートを実現する

設定ファイルとかで一部だけ可変にしたテンプレートを使いたいんだけど、RubyとかPerlみたいな別言語を使うまでも無くシェルスクリプトだけで完結したい場合、envsubstコマンドを使うとテンプレートに環境変数を埋め込むことが出来ます。 インストール (on U…

クラスインスタンス変数はそのクラスからしか参照できない

RubyのクラスはClassクラスのオブジェクトなので、インスタンス変数を持てます。クラスレベルとかクラスメソッドの中で定義された@付きの変数はクラスインスタンス変数(Class Instance Variable)と呼ばれ、そのクラスからしか参照できません、継承されてる場…

JenkinsでJobを起動して、終了まで待つシェルスクリプト

jqとcurlがインストールされている必要があります。Jenkinsのバージョンは 2.46.3 で認証を有効にしています。 #!/bin/bash # # Trigger a Jenkins build and wait for the build to finish. # set -eu JENKINS_HOST="jenkins.kamatama41.com" JENKINS_USER=…

xargsとddcpで高速にファイルをコピーする

総量350GBくらいの大量にファイルが入ってるディレクトリをコピーしないといけなくなったので、xargsとddcpを使って頑張ってコピーした時の記録 もっと簡単に出来る もっといい方法がある ご指摘お待ちしております! #!/bin/bash SRC_PATH=/foo DST_PATH=/b…

加地さん引退

発表されてからだいぶ経ってますが*1、ガンバ大阪やジーコジャパンなどで活躍した加地選手が引退しました。 www.fagiano-okayama.com 引退会見も"500試合にこだわらない"、"半分以上楽しくなかった"など28歳で代表引退した加地さんらしい引き方かなあと思い…

最近Pythonでハマったことメモ

2年前くらいに書いたAWS Lambda用のPythonスクリプトを修正することになったんですが、環境構築でひたすらハマったのでメモっておきます。 前提 私はPythonまともに書くのは2年ぶりのPy弱です 実行環境はMac Pythonのバージョンは2.7 問題1: pip installが上…

TOEIC 227回 結果

Listening: 360(365), Reading: 385(330), Total: 745(695) *1 苦節2年でのようやく700点超え。ただListeningはちょっと限界感があるので何かブレイクスルーが必要かも。 過去ログ TOEIC 224回 結果 - かまたま日記3 TOEIC 217回 結果 - かまたま日記3 TOEIC…

gradle-git-release-pluginでGitHubにMaven成果物をリリースする

Mavenの成果物をアップして使えるようにする場合、MavenCentralやJCenterに上げるのが公式ですが、それらに上げられない*1specificなライブラリである、公式レポジトリに上げるのが面倒などの理由でもうちょっと簡単なソリューションが欲しい時があります。 …

miamでexcludeオプションで除外したいIAMリソースを指定する

AWS

miamというAWS IAMリソースをDSLで管理できる素晴らしいツールがあるのですが、このツールの基本動作としてアカウントに紐づく全部のリソースを管理しようとするので、他のツール(例えばTerraformとかCloudFormation)で管理しているものがあった場合、こちら…

2017年振り返り、2018年の抱負

子育て 父親になった&育休を取りました - かまたま日記3 やはりこれが今年一番のトピックですね。生まれてからは完全に子供中心の生活に変わりました。自由な時間も減りましたし子供に移されて体調不良になることも増えました。が、やっぱり子供はかわいいで…

父親になった&育休を取りました

半年以上前の話ですがずっと下書きのまま放置して忘れてたのを公開します。ついでに他の方の参考になるかもしれないので、既に12/30ですが後付でAdventarにも登録しておきます。25日目の記事、という体です。 adventar.org 5/10に第一子となる子供を授かりま…

minikubeでRBACを有効にした時に、dashboardが見れないのを直す

とりあえず、 cluster-admin のClusterRoleを kube-system:default のServiceAccountにつければ動くようになる。最低限の権限とかは詳しく調べてないので分かりません! $ minikube start --extra-config=apiserver.Authorization.Mode=RBAC $ kubectl create…

Gistをcloneしてpushする

GistのURLを構成しているハッシュ値的な値を使ってcloneします。そのままcloneすると分かりづらいので、ディレクトリ指定でcloneするのが良いと思います $ git clone git@gist.github.com:ab123456789012345678901234567890.git my_gist あとは普通にローカ…

TOEIC 224回 結果

Listening:365 (315), Reading:330 (370), Total: 695 (685) *1 久しぶり(9ヶ月ぶり)のTOEIC, Listeningが上がったけどReadingが下がったので全体的には微増。700超えられなかった。。 過去ログ TOEIC 217回 結果 - かまたま日記3 TOEIC 213回 結果 - かまた…

PostgreSQLでMySQLのshow processlistみたいなのを出す

pg_stat_activity というテーブルに入っているようです。 datname でデータベース単位で絞り込めます。 $ echo '\pset pager off \\ select pid, usename, datname, application_name, client_addr, client_hostname, state, query from pg_stat_activity wh…

NGINXのupstream keepaliveをtcpdumpで確認する

TL;DR UpstreamサーバとNGINXサーバの負荷軽減のために、 upstream keepaliveを導入したときに、実際Keepaliveしてるかをtcpdumpで確認した時の仕方のメモです 登場人物 10.21.2.25: Upstreamサーバ, sinatraアプリが5000でlistenしている 10.21.1.43: NGINX…

CoreOSもろもろメモ

色々ログを見たい場合 journalctl使う、詳しい使い方とかはこちらを参考に。 yomon.hatenablog.com (例) $ journalctl -u docker --no-pager # 特定のユニットのログを見る場合 $ journalctl -u foo.service docker.service.d をカスタマイズしている状況を…

Ubuntu × JRubyでSSLError: certificate verify failed

昨日から急に自社のJenkinsサーバ(Ubuntu)で実行しているEmbulkのタスクが以下のようなエラーを吐いて失敗するようになりました。 at RUBY.block in call(/jenkins/workspace/some-jenkins-job/vendor/bundle/jruby/2.3.0/gems/faraday-0.9.2/lib/faraday/ad…

Ubuntuでgitがアップデートされてるか確認する

先日Gitの脆弱性が発表されて、自分たちのサーバでいろいろ対応した時のメモです。バージョンはUbuntu14.04。 バージョン確認 $ dpkg -l git Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aW…