サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
udomomo.hatenablog.com
RSpecでは、before do ... endを使うことで、各テストケースの前に共通して行う処理を記述できる。これを使ってテストデータを投入する処理などを書いておくと、テストケースが書きやすくなる。 しかし、例えばデータが1件もない状態での挙動をテストしたいときなど、一部のケースではbeforeをスキップしたいという場合もある。そのための直接の機能はRSpecにはないが、以下のようにすると実現させることができる。 describe 'test_case' do before do |example| unless example.metadata[:skip_before] ... end end context 'condition A' do it 'needs before procedure' do # beforeが実行される ... end it 'not need bef
社内勉強会で教えてもらった内容。 Terraformで既存のresourceの名前を変えたいとき、普通にtfファイル内でresourceの名前を変更するだけだと、resource全体が作り直し(destory->create)されてしまう。 例えば以前の記事で使った aws_internet_gateway resourceの名前を変更しようとすると、resource全体に差分が生じてしまう。 $ cat aws_internet_gateway.tf resource "aws_internet_gateway" "container-era-webapp-internet-gateway" { vpc_id = aws_vpc.container-era-webapp-vpc.id } $ cat aws_route.tf resource "aws_route" "container
Dockerで立ち上げたKafkaを、ホスト環境でビルドしたJavaアプリケーションから叩こうとしたのだが、なぜかエラーになって叩けず。 java.lang.IllegalStateException: No entry found for connection 21729123512 よく調べてみると、advertised_listenerの設定を忘れていたことに気がついた。 advertised_listenerとは KafkaのコアであるKafka brokerはListenerを持っている。クライアントからListenerに接続があると、そのListenerは自身がアクセスできるIPアドレスまたはホスト名を返し、それを使ってその後の処理が行われる。 しかし、Kafkaとアプリケーションが同じ環境にあれば全く問題ないが、Dockerを使っているとこれが問題になりうる。Listener
git log -p や git diff などで差分を見るとき、行単位での追加/削除は表示されるが、行の中のどこが変わったのかは表示してくれない。例えば行の中の一単語を書き換えただけで、しかもその行が長い場合、どこに差分があるのか目で探すのが結構大変だった。 しかし先日、 diff-highlight という便利なモジュールが提供されていることを知り、早速導入してみた。 diff-highlightとは github.com gitコマンドの、行単位での差分を探す動作のポストプロセスとして実行され、同じ行の中の差分をハイライトしてくれる。 例えば、行の一部分だけ変えたときの git diff は、今までこんな感じだった。 それがこうなる。差分がわかりやすい。 diff-highlightの設定 この機能は gitコマンドに同梱されているため、インストールは不要。設定作業のみで使える。 ま
Gitを覚えたての初心者が一番よくやらかすミスは、パスワードやAPIキーをハードコーディングしたものをリモートリポジトリにプッシュしてしまうことじゃないだろうか。 もちろん速やかにパスワードやキーの変更をすることは前提だが、問題は恥ずかしいコミット履歴がその後も残ってしまうことだ。 そんなときにどうすればいいか、この前teratailで他の人の回答を見る機会があったので実際に試してみた。 はじめに この方法は、ざっくり言えば歴史を改変することに等しい。多人数で開発をしているときに何の断りもなく使うと、トラブルが起こる可能性が高いので注意すること。 やらかしたコミットを作る 実際にリポジトリを作り、プッシュを2回行った。内容はteratailのAPIを叩くサンプルコードだ。 github.com $ git log --oneline bd6c846 (HEAD -> master, ori
tddyyx.connpass.com 最近会社のチームでTDDをやり始めたばかりなのですが、チームの先輩に誘われてTDDをやってみるイベントに参加してみました。TDD本は読んだことがあるのですが、あまり腹落ちしきっておらず、もう一度読まないといけないかなと思っていたタイミングだったので、実践で理解を深める良い機会でした。 進め方 4人1チームに分かれて、cyber-dojoのお題をやっていくというオーソドックスなスタイルなのですが、一番良かったのはワイワイ会の運営スタッフの方にファシリテーションを行っていただけたことです。TDDの進め方のスライドがあらかじめ準備されており、導入部分が型として磨かれていたので、スムーズにTDDに入ることができました。 今回のTDDはモブプロ形式を取り入れ、REDの状態からDriverが作業を開始し、最低限の実装でGREENにする->コードをリファクタリング
udomomo.hatenablog.com 以前の記事で、jqを使って小さな困りごとを解決したことを書いたが、あれから実際にjqをいろいろな場面で使い始めている。とはいえ最初はけっこう試行錯誤したので、実際に使ったコマンドを忘れないように記録しておきたい。 jqとは 以前の記事でも書いたが、jqはJSONデータに特化したsedコマンドのようなもので、JSONの特定のキーの値を使った検索・ソート・置換などが簡単にできる。(以前同じようことをsedやawkでやろうとしたことがあるが、かなり手間がかかったのでおすすめはしない) JSONで吐かれる大量の生データ・ログデータを集計したいときなどに非常に重宝する。 今回はサンプルとして以下のようなJSONファイルを作ってみた。1行ごとにJSONが1つ吐き出される形式だ。 # test.json {"x":"hoge","y":"foo","s":{
1月から3月まで、@kakakakakkuさん(カックさん)のブログメンタリングを受けました。 メリークリスマス!新規ブログメンティを募集しまーす!今回の募集人数は1-3名です.メンタリング開始日は 1/1 (火) です. ・ネタをどう探すか? ・どう習慣化するか? ・どう読まれる記事を書くか? ・などなど を話しながらブログ以外のアウトプットにも挑戦してもらおうと思っています.— カック@ブロガー / k9u (@kakakakakku) 2018年12月16日 3ヶ月間、週1回など事前に決めたペースで記事を公開し、カックさんからアドバイスをいただくことができます。 今のところなんと無料。 ちなみに以下がカックさんのブログです。質の高い記事が定期更新されていてとても勉強になります。 kakakakakku.hatenablog.com メンタリングを受けた背景 自分がブログを続けている最
アルゴリズムの勉強のために、幅優先探索を書いてみた。 使ったのはAtCoder Beginers Contest 007Cの問題。この頃はアルゴリズムがそのまま出題されてたようだ。 特殊事項として、この問題ではスタートからゴールまでは必ず行くことができる前提がある。さらに周り中が壁で囲まれているので、盤面からはみ出すのを考慮する必要がない。 実装 from collections import deque def bfs(maze, visited, sy, sx, gy, gx): queue = deque([[sy, sx]]) visited[sy][sx] = 0 while queue: y, x = queue.popleft() if [y, x] == [gy, gx]: return visited[y][x] for j, k in ([1, 0], [-1, 0],
Redashを使っていて特に便利だと感じるのがアラート機能。うちの会社では、自社サービスの異常値検知のためにアラート機能を多用している。 しかし、アラートの設定画面にある Rearm Seconds という項目は、公式サイトの説明が少なく、どのような動きをするのかよくわからなかった。そこで、実際にコードを見て仕様を確かめることにした。 2019/02/13現在、アラートを制御するコードは以下にまとまっている。 github.com @celery.task(name="redash.tasks.check_alerts_for_query", time_limit=300, soft_time_limit=240) def check_alerts_for_query(query_id): logger.debug("Checking query %d for alerts", query
この記事は、#セイチョウ・ジャーニー Advent Calendar 21日目の記事です。 今年は去年と比べて、幅広いことをやりました。GolangとRuby on Railsを学び始め、LTにも2回登壇しました。いろいろなイベントに行き、また仕事以外のエンジニアコミュニティにも登録するようになり、情報源が大きく広がりました。 ただ、今年大きく成長したか?と言われると、半分はYesなのですが、残り半分は自信を持って答えられないところがあります。成長というのは、捉えまちがえると大きな遠回りになってしまうからです。 自分の悪い癖 昔からよくいろいろな人に言われているのですが、私は「全てを一足飛びに理解しようとしすぎる」ところがあるようです。 勉強することはとても良いことなのですが、今必要ないことまで完璧に理解しようとして時間をかけすぎてしまいます。 その結果、タスクを終わらせるスピードが他の人
会社のソフトウェアがVue.jsによってリファクタリングされることになり、急に身につけなければいけないことになった。 まさか自分がVue.jsをやるなんて、先週までは考えもしてなかったんだが... 今公式ドキュメントを読み始めたところだけど、computedとmethodsの違いがよくわからなかったので、そこだけしっかり調べてみた。 computedはプロパティ ドキュメントでcomputedの説明を見てみる。 Vue インスタンスに組み込まれる算出プロパティ (Computed property) です。 ん、プロパティ? ここがmethodsとの違いその1。computedとmethodsって何が違うの?という問いには、「プロパティとメソッドは違うだろ」という答えを返せる。 試しに、computedとmethodsの部分だけを変えた、同じ処理を書いてみた。 computed <div
10月に行われた技術書典3、行きましたか? 私も当日いろいろ本を買ったのですが、その中の一冊「オブジェクト指向言語解体新書」が、今年読んだ本の中で一二を争うレベルですばらしい内容だったので、感想を書き残しておきます。 ※技術書典から1ヶ月以上経っているのは、単に積ん読してたからです。こんなにいい本だとは思わなかったもので... http://shop.comiczin.jp/products/detail.php?product_id=34612 オブジェクト指向は、初心者でつまづかない人はほぼいない、一種の鬼門なわけですが、 入門書では何かしらの比喩を使って説明しているものが多いです。 例えば「哺乳類を継承した犬と猫がいて、両方とも「鳴く」「歩く」などができる」みたいな。 こういう比喩を使う理由もわかります。全くの初心者が相手の場合、「なんとなくわかる」レベルでもいいのでとりあえずコード
Reactでイベントを作るとき、引数にeを渡す例がよくある。 例えば公式ドキュメントにもこんなコードが載ってる。 function ActionLink() { function handleClick(e) { e.preventDefault(); console.log('The link was clicked.'); } このeはSyntheticEventを表すものらしいが、どんなものなのかいまいちつかめないのでいろいろ調べてみた。 特にこのページがわかりやすく、役に立った。 www.kirupa.com 通常のイベントとの違い Reactを使わず、通常のJSでイベントを実装するときは、イベントの種類によって様々なインターフェイスがある。 例えばクリックイベントを作るならMouseEventを使い、キーボード入力をイベントリスナーとするならKeyBoardEventを使う。 イ
このページを最初にブックマークしてみませんか?
『りんごとバナナとエンジニア』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く