2019-01-01から1年間の記事一覧

RailsのActiveSupport:Concernの役割

Railsで共通部分をmoduleに切り出し、Concernを使う機会があったが、そもそもRubyであまりmoduleを使ったことがなく、Concermが通常のmodule機能と比べてどう特殊なのかわからなかった。この機会におさらいしてみる。 Rubyのmoduleの使い方 まずはRails以前…

【Java】メソッド参照とラムダ式の関係

Java 8以降には、メソッド参照というものがある。全くなじみがなく今まで触れずにいたが、調べてみるとラムダ式をさらに簡略化した記法らしい。 引数をパススルーしているかどうか Javaをメソッド参照に置き換えられるのは、主にパラメータをパススルーして…

jqで少し複雑なjsonを検索+ソートする

udomomo.hatenablog.com 以前の記事で、jqを使って小さな困りごとを解決したことを書いたが、あれから実際にjqをいろいろな場面で使い始めている。とはいえ最初はけっこう試行錯誤したので、実際に使ったコマンドを忘れないように記録しておきたい。 jqとは …

Javaのジェネリクスを理解する

最近Javaのドキュメントを読む機会が多いが、APIの中では普段の仕事であまり使わないジェネリクスが使われていることが多く、たちまち読めなくなってしまう。時間のあるうちに、ジェネリクスの理解を深めておきたい。 ジェネリクスはなぜ生まれたか 今では当…

きれいに整形されたjsonを1行に戻す方法

JSONを読みやすく整形するツールはいろいろなIDEやウェブサイトにあるが、元に戻すツールはあまりない。しかし、例えばJSON形式のデータを1行ごとに処理するシステムのテストデータを作るときなどは、可読性の高い状態でJSONを作っても、それを1行に戻さなけ…

「ワンストップ見積もり本」で見積もりのやり方を学んだ

note.mu 先日の技術書典6で、親方Projectさんが販売されていた本です。 ちょうどこの前、見積もりが全然できておらず目標を達成できなくて怒られたばかりなので、買ったその日に真剣に読みました。 この本は、プロジェクトやタスクにかかる時間・工数をどう…

@kakakakakkuさんのブログメンタリングを卒業しました

1月から3月まで、@kakakakakkuさん(カックさん)のブログメンタリングを受けました。 メリークリスマス!新規ブログメンティを募集しまーす!今回の募集人数は1-3名です.メンタリング開始日は 1/1 (火) です.・ネタをどう探すか?・どう習慣化するか?・ど…

KafkaをDockerの外から叩けないときに確認すべき設定

Dockerで立ち上げたKafkaを、ホスト環境でビルドしたJavaアプリケーションから叩こうとしたのだが、なぜかエラーになって叩けず。 java.lang.IllegalStateException: No entry found for connection 21729123512 よく調べてみると、advertised_listenerの設…

[GitHub] hub pull-requestの宛先がフォーク元のリポジトリにならない場合の対処法

hub.github.com GitHubの公式コマンドラインツールであるhubの存在を知り、最近使い始めている。いろいろな作業がコマンドからできてとても便利なのだが、フォーク元のリポジトリにプルリクエストを送るところで詰まってしまった。フォーク元のリポジトリを …

コマンドラインでCSVをソートする方法まとめ

結合テスト後の結果比較や生データの処理などのために、数MBくらいのCSVを取り扱いたい時がある。なかでも、いろいろな処理を行う前に、たいていtimestamp等で各行をソートする必要があることが多い。エンジニアになる前はExcelを開いて頑張っていたけれど、…

JUnit 5で同じ流れのテストを繰り返すならParameterizedTestを使おう

Javaのテスト環境をJUnit 5にアップデートしてしばらく経った。JUnit 5にはいろいろな新機能があるけれど、中でも便利だと感じたのがParameterizedTestだった。 ParameterizedTestとは ParameterizedTestを使うと、同じ内容のテストを異なる入力値・出力値で…

LT経験値を上げるには「自由研究LT」イベントがおすすめ

engineers.connpass.com 先日、テーマ自由のLT大会「自由研究LT」で登壇してきました。 このイベントですが、単に各自が好きなことを話すだけのものではありません。これはエンジニアのコミュニティが主催する、LTの経験を積むためのイベントなのです。そし…

「オタクが最新技術を追うライトニングトークイベント #3」で最新技術を追った

yumenosora.connpass.com LT枠で参加してきました。今回はとらラボの方3名+一般参加3名のLT会です。 Google Cloud Functions + Go Google Cloud FunctionにGolangが追加されたので、画像処理をする関数を作ったというLTです。さらに、Golang 1.11から導入さ…

【LT】Redashでデータ活用の壁をなくす #toralab_lt

yumenosora.connpass.com RedashについてLTしてきました。もともとは単に仕事として会社にRedashを導入する担当になっただけなのですが、運用するうちにRedashの使い勝手と哲学が好きになりました。このブログで記事を書いたり、Redashにプルリクを出したり…

RedashアラートのRearm Secondsとは何をするものなのか

Redashを使っていて特に便利だと感じるのがアラート機能。うちの会社では、自社サービスの異常値検知のためにアラート機能を多用している。 しかし、アラートの設定画面にある Rearm Seconds という項目は、公式サイトの説明が少なく、どのような動きをする…

GCPのJavaライブラリに見るenumの使い方

今までJavaを書いてきた中で、定数クラスをゼロから設計した経験があまり多くなく、今でもよく迷ってしまう。そこで、実際のコードで定数定義をどのように行っているのかを見てみた。 以下のコードは、Google CloudのJavaライブラリで使われているもの。ソー…

Gitのコマンドを簡単に探せるGit Explorerの使い方 & プルリクエストを送る方法

Git

gitexplorer.com 今朝会社で話題になっていたので見てみたのですが、エンジニア1年目の頃にこのサイトがあれば...!と思うくらい良かったです。 どんなサイト? Gitのコマンドを、よくあるシチュエーション別に簡単に探せるサイトです。 gitコマンドは新人エ…

初めての主催イベント「積み残し解消もくもく会 #01」を開催しました

tsuminokoshi-moku.connpass.com 「積み残し解消もくもく会」を1/27(日)に開催しました。イベントを自分で主催したのはこれが初めてです。 自分がふだん仕事や目の前のタスクに追われ、長期的なタスクや、やりたかったけど時間がなくて放置していたことを積…

Javaの関数型インターフェースとラムダ式・Streamの関係

新しいプロジェクトでJavaのコーディングルールが変わり、ラムダ式やStreamを積極的に使っていく方針になった。それなりに書き方はわかっているつもりでいたが、「今回は関数型インターフェースを多用することになるので、見た目が独特かもしれませんが慣れ…

Docker環境下でKafka Connectを気軽に試す

前回の記事では、Docker Imageを使ってKafkaを立ち上げた。今回は、Kafkaを使うならほぼ確実にお世話になるKafka Connectを試したい。 Kafka Connectとは 前回の記事では、コンソールからコマンドを叩いてTopicに直接メッセージを出し入れしていた。しかし、…

Docker環境でKafkaに気軽に入門する

Kafkaを扱うことになり、なんとかして手軽に触ってみることはできないかと思っていたら、このDocker imageをおすすめされた。 https://hub.docker.com/r/landoop/fast-data-dev KafkaのDocker imageはいろいろあるが、これは必要なサーバが自動で立ち上がる…

cp -RTでディレクトリの中身だけ別のディレクトリにコピーする

先日、Railsチュートリアル用の環境をDockerで整えてみたが、そのときに詰まったのが「ゲスト環境で rails new して生成されたファイルを、ホスト環境との共有ボリュームにコピーする」ところ。ゲスト環境で /myapp (←自分のアプリ名)配下に生成されたファイ…

「Go言語らしくGoコードを実装するための手法と思想」を読んだ感想

昨年末、海外出張の機内で暇つぶしのつもりで読んだのですが、最近Go言語を学び始めた私にとって思った以上に良い本でした。 Go言語というのは他の言語に比べて書き方や文化が独特です。 そのため、他の言語に慣れた身では戸惑うことも多く、「Go言語らしい…