2019-01-01から1年間の記事一覧
この記事は、write-blog-every-week Advent Calendar 2019の20日目の記事です。 ブログを定期的に書くようになって大体1年くらい経つ。このブログを作ったのは2017年のことだが、最初の頃はほとんど更新せず、2018年は月1回未満のペースだった。しかし2019年…
ローカル環境でKubernetesのClusterを動かす方法はいろいろある。よく紹介されているのはminikubeを使う方法だが、自分の場合Docker Desktopを使っている。Docker DesktopにはKubernetesが付属しており、追加のインストールなしでClusterを立ててkubectlで操…
先日Kubernetesの特定のnamespaceでJobを実行しようとしたところ、権限がなかったため、まずClusterの管理者に権限を申請するところから始める必要があった。これを機会に、KubernetesのRBACについて学んでみた。 RBACとは RBACとは、Role-based access cont…
git log -p や git diff などで差分を見るとき、行単位での追加/削除は表示されるが、行の中のどこが変わったのかは表示してくれない。例えば行の中の一単語を書き換えただけで、しかもその行が長い場合、どこに差分があるのか目で探すのが結構大変だった。 …
ccc2019fall.java-users.jp 半年に一度のJavaカンファレンスです。個人的にこの半年は扱う技術範囲が広がり、自分の興味や課題意識も大きくなったので、今回は気になるセッションが増えました。 参加したのは以下の3つです。 入門 例外 github.com 例外処理…
仕事でKubernetesを扱うことが不可欠になりつつあるので、最近重点的に学んでいる。Podの立て方は理解したが、Serviceというものが何をするのかわからなかったので、実際に動かして学んでみる。 今回使っているのは、Docker DesktopのKubernetes。Docker Des…
先日、テスト実行で生成された大量のログファイルを消そうとしてうまくいかず、少し時間を使ってしまったので書いておく。仮に log0000.json から log9999.json まで10,000ファイルあるとする。 これらを一気に消そうと思い普通にrmを使ったところ、実行に失…
React + TypeScriptで作られたコードにstyled-componentsを適用する作業を進めている。基本はSCSSファイルで指定されたデザインをそのままstyled-componentsに移すだけなのだが、正しく移植したはずなのにデザインが乱れることが最近よく起こっていた。 //元…
動的計画法のアルゴリズムには前から興味があったが、なかなか身につかなかった。どのようなものか理解するために単純な問題を動的計画法で解いてみることにする。 動的計画法とは 動的計画法は、決まったアルゴリズムを指すものではなく、より広い概念であ…
自分のdotfilesをメンテナンスするにあたって、他の人のを参考にしていたら、Brewfile上で知らないコマンドがいろいろ使われていたのでまとめる。これらをうまく使えば、インストール作業の自動化の幅が広がりそうだ。 Tap TapはHomebrewに登録されていない…
以前EKS上のClusterを一月以上に渡って止め忘れ、大変な請求が来てしまったことがある。 個人練習用のEKS Clusterを落とし忘れてて5万溶ける悲劇が起きました。これを教訓に請求アラームを設定することにしよう。— どもも (@Udomomo) August 13, 2019 二度と…
先日CircleCIの設定ファイルを書いていたとき、思うように読み取ってくれず詰まったのでメモ。 YAMLのインデントは、ファイルの中で統一されてさえいれば任意の数で良いのだが、一つ意識しなければいけない場合がある。 下のようなyamlを書くと連想配列とみ…
先月から、スクラムチームに入って仕事をするようになった。スクラムというやり方自体が会社としてほとんど前例のない取り組みであったため、うまくいっている所もあれば、チーム外に非常に迷惑をかけてしまっている部分もある。 個人的には、1人とか2-3人で…
gihyo.jp GitHubは普段の開発でよく使っているので基本的な操作は問題ないと思っていたが、今後恥をかきたくないと思い改めて学ぶことにした。 この本はgitコマンドの基本的な使い方から始まり、GitHubのコンソールの機能の紹介、hubコマンドやいくつかのCI…
先日のAtCoder Beginners Contest 141に参加したのだが、問題Dを解くことができなかった。 この問題を言い換えると、要は「数値型の要素で構成される配列において、最も値が大きいものを1/2にするという作業を繰り返し、最終的な要素の合計を求める」という…
tddyyx.connpass.com 最近会社のチームでTDDをやり始めたばかりなのですが、チームの先輩に誘われてTDDをやってみるイベントに参加してみました。TDD本は読んだことがあるのですが、あまり腹落ちしきっておらず、もう一度読まないといけないかなと思っていた…
builderscon.io 金曜日にBuildersconに行ってきました。今回聞けた発表は全部で3つだけでしたが、この1年で経験が増えたためか、闇雲に部屋を回っていた去年よりもそれぞれの発表を面白く聞くことができました。とても満足しています。 はじめてのB2B SaaSデ…
Railsでdeviseを使ってメール送信機能を作るとき、送信元のアドレスは通常いつも同じで済むことが多い。 セオリーなのは、 config/initializers/devise.rb にある config.mailer_sender の項目に送信元アドレスを書くことだろう。 # ==> Mailer Configuratio…
booth.pm 以前からソフトウェア設計に興味はあったものの、単にデザインパターンを暗記したところで役に立ちそうにないし、どう学べばいいだろう?というのがずっと悩みだった。そんなとき読んだこの本が、設計との向き合い方に対する一つの指針を示してくれ…
今個人で扱っているアプリケーションでは、Firebase Analyticsでデータを計測し、それをBigQueryにエクスポートした後に処理している。過去の日付分のテーブルを置いたままだと料金がかかるので普段は日付ごとに消しているのだが、過去にテストとして流した…
先日、数GBある大きなログファイルをテストに使う機会があったが、同じ日付のファイルが複数あるときのテストがしたかったのでファイルを適当に分割する必要が生じた。自分でファイルの一部をコピペしてもいいのだが、splitコマンドを使うと手軽に分割できる…
先日、会社の開発チーム全員でアジャイル研修を受けた。プロのアジャイル講師が来て、1日かけて講義と実践を交えてアジャイルのやり方を説明してもらったのだが、いろいろな気づきがあった。 研修前の状況 自分のチームでは一応1週間ごとにスプリントを区切…
gihyo.jp 最近、社内の同じ開発チームの人とのコミュニケーションに悩むことが多く、見かねた先輩がこの本を勧めてくれた。 実はこの本は前にも一度読んだのだが、その時は何の課題意識も感じていなかったのか大して頭に残っていなかった。それが今回もう一…
タイトルは先日、会社の先輩に突然出題されたもの。その時は答えられず教えてもらった。 コミットオブジェクトとは Gitによって記録されるのは、SHA-1でハッシュ化されたものにすぎない。Gitの内部では、ファイルのコンテンツをハッシュ化したblobオブジェク…
先日、とあるリポジトリをBitbucketからGitHubに移行させた。念のためプッシュしていない変更がない状態にしておき、リモートリポジトリを無事に移した。あとはローカルリポジトリで指定しているremoteを更新するだけだったのだが、その時以下のようにやって…
dpct.connpass.com 会社の人に紹介されてイベントの存在を知りました。 普段は自社サービス(一種の分析ツール)のデータ処理・加工部分の機能開発を担当しており、大量のデータをアプリケーションから分析・表示できるようにすることがミッションです。最近…
「プログラマが知るべき97のこと」をGWから少しずつ読み直していた。実は昔一回一通り読んだのだが、それから公私でいろいろな経験を積んだためか、今回読み直してみたらまさに何度もハンマーで殴られる感覚を味わうことになった。 GWに「プログラマが知るべ…
12factor.net Dockerに関するウェブ記事の中にたまたま名前が出ており、気になって見てみたら、示唆に富み奥の深い資料だった。 この資料は、HerokuのエンジニアであったAdam Wiggins氏が、大小様々なSaaSアプリケーションのデプロイに接した経験をもとに、…
RSpecでは、before do ... endを使うことで、各テストケースの前に共通して行う処理を記述できる。これを使ってテストデータを投入する処理などを書いておくと、テストケースが書きやすくなる。 しかし、例えばデータが1件もない状態での挙動をテストしたい…
RailsでStrong Parametersを使ったパラメータの受け渡しをするとき、よく params.require(:task).permit(:title, :content)のように書く。このとき、requireと permitはどう異なり、なぜ両方使うのかがよくわからなかった。 公式にあたってみると、APIドキュ…