箱のプログラミング日記。

えんじにあ奮闘記

gemのコードリーディングを初めてやってみる【ActiveSupport】

タイトルの通り、gemのコードリーディングを初めてやってみたので手順などメモ。 なぜやるのか 最近gemのコードを読む機会が多くて、大体はREADMEでは分からない情報を取ってきたい時にGitHubリポジトリ内で検索かけつつ読むくらいだったのだけど、 他人のコ…

AWS Backup でバックアップ作成を自動化する

AWS

サーバーのバックアップ作成を定期実行してくれるAWSのサービスがないかな〜と思って調べたところ、AWS Backupというのがあり、早速仕事にて導入してみたのでメモ。 AWS Backupとは ざっくり特徴だけ掻い摘んでおくと AWSリソースのバックアップ作成をスケジ…

【MySQL】重複しているデータのみを抽出したい(DISTINCTの逆)

MySQLで重複データを除外してSELECTしたいときにDISTINCTを使うけど、反対に重複のあるレコードだけを抽出したり、重複のあるレコードの中身を知りたいな〜って時にどうすれ良いのかなって疑問に思いメモ。 テストデータ Server version: 5.7.34 こんなデー…

Rubyでバブルソートを書いてみる

Rubyにはsortメソッドがあって、その名の通りソートしてくれるんだけど a = (1..9).to_a.shuffle => [1, 2, 8, 7, 4, 3, 9, 5, 6] a.sort => [1, 2, 3, 4, 5, 6, 7, 8, 9] これをsortを使わずに実現したい。 バブルソートで実装してみる。 バブルソートとは …

【MySQL】大文字小文字を区別して検索したい

VARCHAR型のカラムについて、WHERE句での一致検索で大文字と小文字を区別してくれないことに気づいた。 mysql> SELECT id, name FROM clients; +----+------+ | id | name | +----+------+ | 1 | tesT | | 2 | TEST | | 3 | test | +----+------+ 3 rows in …

RubyでFile.openを使うときに気をつけたいこと

タイトル通り。 これまであまりファイルの扱いをするような実装をしてこなかったのでメモ。 Ruby...2.4.3 CSV...2.4.8 File.open ファイルアクセスのためのクラス。openに引数を渡すことでファイルオブジェクトを生成する。 File.openとFile.newで何が違うん…

Nginxをリバースプロキシで使う場合のCORS設定

NginxのCORS周りの設定においてリバースプロキシとして使用する場合の情報が少なかったのでメモ。 前提 サーバーの構成はこんな感じ アプリケーションへのリクエストを捌くために、webサーバーとしてNginxを、アプリケーションサーバーとしてPumaを使ってい…

【Docker】不要なコンテナやイメージを削除する

Dockerイメージを--no-cacheでbuildすることがよくあるのだけど、その度に新しいイメージが溜まっていき、未使用のイメージが結構溜まってしまっていたためメモ。 $ docker -v Docker version 19.03.12, build 48a66213fe 未使用のコンテナを削除 まずはイメ…

Docker for Mac が遅い(怒)

Docker for Mac が遅くて遅くてもう仕事にならないレベルになってきたのでどうにかならないかなと思い調べた。 Docker version 19.03.12 Docker Desktop 2.3.4.0 メモリを引き上げる これまでの対策としてはDockerに割り当てるメモリの上限をデフォルトの2GB…

Twitter API v2 を使ってみた

TwitterのAPIを使ってみました。 v2がリリースされたようでせっかくなのでこちらを。 What's New with Twitter API v2 | Docs | Twitter Developer Platform 手順 今回はとりあえずcurlでツイートを取得できるところまでやりたい。 developerアカウントの作…

「privateメソッド=外から呼び出せないやつ」から抜け出す【Ruby】

「privateメソッドって外から呼び出せないやつでしょ?」「レシーバを指定して呼び出せないんでしょ?」から抜け出すべく色々試してみた。 ※2.7以降はレシーバにselfをとれるようになったようなのでバージョンを変えて検証してみた。 試してみる $ rbenv loc…

awkコマンドを使ってみた

awk

業務でCSVをごにょごにょする必要があったのでawkコマンドを学習してみた。 awkコマンドとは AWKはパターンとアクションを組み合わせるプログラミング言語です。 引用元:「シェル芸」に効く!AWK処方箋 「パターンにマッチした場合はアクションを実行する」…

Capistranoのデプロイが急にコケる【delayed_job】

デプロイが急にコケるようになり、色々試行錯誤して解決したのでメモ。 結論から言うとdelayed_jobのpidが悪さをしていて、うまくworkerを再起動できないのが原因だった。 Ruby 2.4.3 Bundler 1.16.1 Rails 5.1.5 Capistrano 3.9.0 delayed_job 4.1.5 発生し…

【MySQL】特定のレコードのみダンプしたい / 特定のテーブル以外をダンプしたい

MySQLでダンプするときに全てのレコードをdumpすると重いので、特定のテーブルの特定のレコードのみdumpしたいなーと思って調べたときのメモ。 基本のmysqldumpコマンド $ mysqldump [options] db_name [tbl_name ...] データベース全体をダンプするには、db…

bashでdateコマンドのフォーマットを指定する

最近bashで色々試してみるのにハマっている。 $ date 2021年 4月 4日 日曜日 16時43分52秒 JST dateコマンドは現在時刻を表示する。 フォーマットを指定したいときは $ date +'%Y%m%d%H%M%S' 20210404191221 $ date +'%Y/%m/%d %T' 2021/04/04 19:14:18 引数…

NoMethodError: undefined method `new' for BigDecimal:Class と言われた時

Rubyのバージョンを2.7.0にあげてrake taskを実行したら見たことないエラーが出たので対処法をメモ。 Ruby...2.7.0 Rails...5.1.5 発生したエラー NoMethodError: undefined method `new' for BigDecimal:Class 下記の記事によると、decimal型のカラムがある…

RailsEngineでRubyのバージョンを変えたい

RailsEngineでRubyのバージョンを変えて使えないのかな〜と思って色々と調べた結果をメモ。 RailsEngineとは エンジン (engine) は、ホストとなるRailsアプリケーションに機能を提供するミニチュア版Railsアプリケーションとみなせます。 ** すなわち、エン…

Amazon Linuxにbundlerがインストールできない

rubyのバージョンを変えた後に新しいbundlerがインストールできずに困ったのでメモ。 Ruby2.4.3(→2.5.0) Rails5.1.5 Amazon Linux AMI release 2018.03 Rubyのバージョンを特定のディレクトリのみ変更 今回、以下のような状況だった。 元々Ruby2.4.3が入っ…

mysql2のインストールでエラーになる / opensslのパスを通す

Railsのプロジェクトでbundle installしたところ、mysql2のインストールでエラーになってしまったのでメモ。 Ruby...2.4.3 Rails...5.1.5 mysql2 発生したエラー Fetching mysql2 0.4.10 Installing mysql2 0.4.10 with native extensions Gem::Ext::BuildEr…

ffiがインストールできない

ffiが突然インストールできなくなったためメモ。 発生したエラー Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/hako/Project/sample_app/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c /Users/hak…

curlの-dやら-Fやらがよく分からない

最近curlのPOSTリクエストでAPIの検証をすることが多いのだけど、最初数あるオプションの使い分けがいまいちよくわかっていなかったのでまとめる。 -d オプション --dataを短く表記したもの。 フォーマット curl -d 'name=admin&shoesize=12' http://example…

Google Ads API をRESTで使いたい

業務でGoogle Ads APIを使うことになったのだけど、クライアントライブラリが訳あって使えずRESTでAPIを叩く羽目ことになったのでメモ。 Google Ads API とは Google広告のAPI。 クライアントライブラリが用意されており、実運用ではこちらの使用が強く推奨…

Google Ads API を使いたい【基礎編】

Google Ads API を使おうと思って色々調べたものの、そもそもGoogle広告のサービス自体を全然理解していなくて実装までに相当時間がかかってしまったのでまとめる。 Google Ads APIとは Googleのサービスのうちの一つである「Google広告」を外部から操作する…

aws-cliにいくつも引数を与えるのがめんどくさい

AWS

前回の記事でaws-cliを使えるようになったのは良いものの、もう少し便利に使えないかなと思って色々ドキュメントを読みあさっていたら便利そうな使い方を見つけたのでメモ。 そもそものAWS CLIについての概要やインストール手順に関しては前回の記事をご覧く…

AWS CLIをインストール + 初期設定まで

AWS

業務で色々とAWSを触らせてもらい、コンソールからの操作にだいぶ慣れたのでCLIに挑戦してみようかなと思い立ちインストールしてみた。 AWS CLIとは AWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS サービスとやり…

【Google APIs】OAuth2.0を使って認証を通す

Google APIsの使用にあたりOAuth2.0を使って認証を通すまでの過程をメモ。 前提知識がなさすぎて全体像を把握するまでに相当時間がかかってしまったのと、あちこちに散らばっているドキュメントをつなぎ合わせつつ理解するのがめちゃくちゃしんどかったので…

【MySQL】SELECT文の結果をCSVファイルにエクスポート

MySQLでSELECT文の結果をCSVファイルにエクスポートしようとした時に少しハマったのでメモ。 発生したエラー いつものようにMySQLにログインして、こちらの記事を参考にSELECT文の結果をCSVファイルにエクスポートしようとしたところ mysql>SELECT name FROM…

Dockerコンテナを立ち上げようとして「OCI runtime create failed」「" 〜 permission denied": unknown.」 と言われたとき

Dockerイメージを元にコンテナを立ち上げようと思ったら権限がないよーと怒られたのでメモ。 $ docker -v Docker version 19.03.12 実現したいこと 用意したDockerfileを元にイメージをbuildして、それを元にコンテナを立ち上げたい。 myimage ├── Dockerfil…

Redisでデータベースを指定して接続する

Redisでデータベースを指定して接続する手順についてまとめていきます。 Redisとは Redisは、オープンソース(BSDライセンス)のメモリ内データ構造ストアであり、データベース、キャッシュ、およびメッセージブローカーとして使用されます。 引用元:Redis…

【RSpec】CSVダウンロードのcontrollerテストを書く

RSpecでCSVダウンロードのcontrollerテストを書く方法をまとめていきます。 環境 ruby 2.4.3 Rails 5.1.5 rspec-rails (3.7.2) factory_bot_rails (4.8.2) 完成したソースコード 先にソースコード貼っちゃいます。 まずはコントローラー app/controllers/use…