tawara's blog

雑記。個人の見解です。

技術

group by と having を使ってみる

SQLの学習で、group by とhavingを学んだ。 こういうテーブルがあるとする。 mysql> select * from book; +---------+-----------------------------------------------+--------------------------+-------+------------+------------+ | book_id | book_me…

今日何日だっけ? は calコマンドで解決できる

画面いっぱいに広げたターミナルでデバッグしてるときに、「そういえば今日何日だっけ」って疑問に思うときがありますよね。 そういうときは、calコマンドで解決できます。 $ cal すごい。 yオプションをつけると、一年分のカレンダーを出力します。 $ cal -…

占いしてくれる Twitter Bot を GASで作った

これは株式会社SUPER STUDIO Advent Calendar 2022の18日目の記事です。 adventar.org きっかけ ある日、占いをしている友人から連絡を受けた。 友達「占いの集客の一つとして Twitter アカウントを利用しててさー」 ボク「へー」 友達「特定のワードを含む…

これから学習したいことの整理

新しい会社に入ってもう半年が経つ。webエンジニアとして働いている中でもっと勉強しないとなーと思うことがたくさんある。 それらを整理するため文章を書く。だらだらと書きながら整理する。 技術力 技術力を高めましょうというフィードバックを上長からも…

IN述語を使うと OR をたくさん並べなくてよい

SQLのお話。あるカラムの複数の値をSELECTしたい。 愚直に書くとこうなる。 mysql> SELECT id, title, author FROM books WHERE id = 1 or id = 2; +----+-----------------------------------------------+--------------------------------+ | id | title …

テストをたくさん書いて体感したこと

仕事でテストをたくさん書いた。Railsのプロダクトなので、Rspecを使っている。一機能の主要部分をまるっと書いたら、得るものがあったので、メモとして残しておこう。 仕様に詳しくなれた まずテストを書く上で、何が正しい状態なのかを知る必要があるので…

select文でASキーワードを利用すると列名に別の名前をつけることができる

三文小説というサービスを運用しているので、それを例にする。DBは postgresql。 作品テーブルがあって、id, user_id, titleをselectしてくるクエリと、その結果は次のようになる。 select id, user_id, title from works; id | user_id | title ----+------…

【小ネタ】SQLクエリを発行した後の結果がターミナルに表示されるが煩わしいときに使える?

先輩に教えてもらった小技だ。rails cで変数を格納したいだけのときに、わざわざターミナルにずらっと結果を出力して欲しくないときに使える。変数に格納する回数が多いときに使えるかも。。。 一般的な書き方だと下記のようになる。オブジェクトの詳細が出…

GithubのPRからpatchファイルに必要な差分を作る方法

ときにパッチファイルが必要になることがある。git diff コマンドで作成することはできるが、今回はGithubのPRから作成する方法を教えてもらったのでメモ。とはいえ簡単で、PRのURLの末尾に.diffを加えるだけだ。 こんな感じ あとはこちらを、hoge.patchなど…

同じ技術書(チェリー本)の2周目を終えて

プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus作者:伊藤 淳一技術評論社Amazon Railsエンジニアとして転職するにあたって勉強をはじめて半年くらい経ってからはじめて読んだように思う。そ…

安易にresucueを使わない

チェリー本の9章「例外処理を理解する」を読んだ。初学者の頃に読んで、なんとなく頭の片隅にあったことが少し整理できた。安易にresucueを使ってはいけいない、が印象的だった。 resucueを利用すると例外を補足できる。なんか問題が起こったときのために r…

ある日時未満、という条件でwhere文を作成する方法

例えば、先月の月初未満に作成されたUserのレコードを抽出する方法はこんなふうに書く。 User.where('created_at < ? ', Time.current.prev_month.beginning_of_month) 参考 現在より前のデータを全て検索する方法を教えてください Railsでの日付操作でよく…

チーム・ジャーニーを読んだ。いつも自分には何かできることがある

チーム・ジャーニー 逆境を越える、変化に強いチームをつくりあげるまで作者:市谷 聡啓翔泳社Amazon と思った。カイゼン・ジャーニーをだいぶ前に読んだときもそうだったが、物語が面白いので、どしどしと読める。ストーリーがあって、そのストーリーに対す…

モジュールの include と extend と prepend

モジュールをクラスや別のモジュールへ読み込ませること、つまりモジュールの機能を追加することをミックスインという。そのミックスインの方法には include と extend に大別できる。 例えばクラスにモジュールを include すると モジュールのメソッドを、…

【Rspecメモ】before内で定義した変数は、it内で使えない

表題のとおり。テストコードを書いていて詰まった。before内にbinding.pryを仕込んでみたら、ローカル変数からテストしたいメソッドは呼べたのに、it内では呼べない、という現象だった。 よく考えればあたりまえのことだ。before内はひとつのブロックとみな…

チームで働くということの何が好き?

個人でひそひそと作業することは好きだ。一時期少しだけ早く起きて小説を書いてから他人との生活へ戻ることを習慣にしていたし、別の時期には深夜にstand.fmなるラジオアプリでちょっとしたエッセイみたいなものを毎日投稿していたこともあった。個人でひそ…

チェリー本の第7章クラスを復習した。

クラスの復習をしている。超マイクロアウトプット クラス内にて、メソッド内でインスタンス変数の属性をセットする(更新)する際にはselfをつける必要がある。でないとローカル変数を格納するだけになり、期待した結果を得られない。 なんとなくでいつもsel…

整数っぽくない文字列をto_iすると0が返る

整数ぽい文字列に to_i をすると数値に変換してくれる。このことがわからず詰まったのでメモしておく。 irb(main):001:0> '100'.to_i => 100 このメソッドを例えば整数っぽくない文字列に対して利用するとエラーにはならず、0が返る。 irb(main):002:0> 'ta…

個人開発をテーマに、社内でLT会をやったら、やっぱり楽しかった話

個人開発をテーマに社内でLT会を主催したら楽しかったし勉強にもなった。 これがそのときのスライド。個人開発している三文小説というサービスについて話した。 sanmonsyousetu.com docs.google.com 登壇者は6人で、発表7分・質疑応答3分で、1900からざっ…

HTML・CSS・JavaScript

フォームに新しい項目を追加するチケットを担当している。別のページで使用している箇所を別のページに移植させることで達成できるので、一見簡単に見えるが、どうもフロント周りが苦手だ。というか理解が不足していることがわかった。 たとえばHTML。Rails…

褒められるとうれしい

チームの中でエンジニア歴が長い人に褒められてうれしかったので、せっかくなので記録しておく。 少し複雑なフォームから値を受け取ることができなくて詰まっていた。わかれば簡単な部類の悩みだった。しかし時間をかけてもわからないので、素直に聞いてみた…

nilガード

book || = Book.first 上記のコードの || = が nilガードと呼ばれるイディオムだ。よく見るし、体で覚えてしまっているけれど、もう一度頭で理解しておく。 これは省略せずに書くと、こうなる。 book || book = Book.first book変数にnil / false以外が格納…

web + dbpress 「実践データモデリング」 を読んだら、いろいろ腑に落ちた

amzn.to とても良かった。設計に対していつも徒手空拳というやつで自信がなかった。みんな何を基準にテーブル設計の良し悪しを決めているのだろう、どうしてテーブルを分けるという判断をしたのだろうか、といつももやもやしていた。それに対するひとつの明…

文字列の任意の記号までだけを削除する方法

いま、文字列をこのように変換したい。任意の記号(この場合は'_')までを削除したい。 "29_子供の洋服_2" => "子供の洋服_2" 回答例1 split で配列にして、drop(1)で先頭の要素を削除して、再度joinする "29_子供の洋服_2".split('_').drop(1).join('_') 回…

ネストしたhashのvalueを加工する

弊社には技術に関する質問チャンネルがある。Ruby力がないため恥をしのんで質問したら、たくさんの知見を含む回答がもらえたので、忘れないように書いておく。 ## 問題 一番深いhashのvalueを[]で囲った文字列にしたい。 irb(main):015:1* hash = {3=>{0=>"…

毎日コードを書く宣言

panda-program.com というブログを読んだ。 JQueryの作者が毎日コードを書く習慣を身に付けて実践した話と、ブログの作者が同じように実践してみた感想が書いてある。 実践したメリットとしては、必要最低限の小さなコードを書くようになった、閃きに目覚め…