【Ruby/Rails】JSONのキーをキャメルケースからスネークケースに、文字列からシンボルに変換する
2021/03/03問題 APIを叩いて返ってきたレスポンスがJSON形式でキーがキャメルケースの文字列だった 普通にJSON.parseしても問題ないが、Rubyだったらできればスネークケースのシンボルで扱いたい SwitchBotのAPIレスポンス JSON.parseした結果 解決方法 でス…
問題 APIを叩いて返ってきたレスポンスがJSON形式でキーがキャメルケースの文字列だった 普通にJSON.parseしても問題ないが、Rubyだったらできればスネークケースのシンボルで扱いたい SwitchBotのAPIレスポンス JSON.parseした結果 解決方法 でス…
手順 権限はコピーされないので別途付与 参考 ディープコピーを実行する - Amazon Redshift GRANT - Amazon Redshift
Sinatraに関する小ネタを随時更新していく 小ネタ 開発環境か本番環境か ホットリロード 参考 【Sinatra】オートリロードしてほしい - Qiita Sinatra: README (Japanese)
したあとにしても差分を確認することができないが、 オプション()付けたら確認することができる。 変更ファイルだけじゃなく新規ファイルの中身も確認できるので便利。
Amazon Linuxで使っているmackrel-agentのバージョンが古かったのでアップデートをした 手順 アップデート バージョン確認 再起動 参考 Amazon Linuxにmackerel-agentをインストールする - Mackerel ヘルプ
起きたこと Vimを使っていて、インサートモードからノーマルモードに切り替えようとした時にTouch BarにEscキーが表示されていないことに気づいた。 解決方法 アクティビティモニタで「TouchBarServer」を終了させる。 他にもMac自体の再起動でも復活するみた…
サンプルのために大きめのファイルが欲しかったので探したら、標準で入っているmkfileというコマンドでできるらしい。 手順 使い方の確認 オプションの詳細は参考リンクを 1GBのテキストファイルを作成 1GBあるかの確認 参考 mkfileコマンド - Qiita
以前ブログに書いとおり、Togglで記録した作業時間をPixelaで可視化している。 昨年の7月くらいから毎日続けることができて、可処分時間を無駄にしないで済んでいるのは間違いなくPixelaのおかげである。 Togglの作業時間をPixelaで可視化する GASで作った「To…
とあるGemにプルリクを出すためにminitestを実行したいのにやり方が分からず、ググっても意外とすぐに出てこなかったのでメモ。 どこのリポジトリか忘れたが、GitHub Actionsで実行している記述を見つけて無事解決した。
SwitchBotのスマート加湿器が振動によって安全装置が作動したのか、一定時間連続起動していると止まるのかわからないが、気がついたら止まっていることがある。 ということで、止まっていたら起動させるシェルスクリプトを書いて、Raspberry Piで動かすことにした。 さっそく…
「Upptime」という無料でウェブサイトの死活監視ができるサービス(というかOSS)を見つけたので、 このブログとまだ1記事も書いていないけどエンジニア以外の記事を書く予定の「高木のノート」を死活監視するようにしてみた。 GitHub ActionsやGitHub Pages…
SwitchBotのスマート加湿器を買ったので、ご多分に漏れずAPIで操作してみる。 ちなみに買ったメインの目的が加湿器をAPIを使って操作してみたいという理由だけだけど、加湿器の機能としても大変満足している。 手順 ドキュメント: SwitchBotAPI/README.md…
Nature Remoはアプリなどから操作した際、たとえ家に居たとしてもクラウドAPIを経由して実行される仕様になっている この仕様のせいで、Nature Remoのクラウドで障害が起きたときに電気が消すことができなくて不便な思いをしたので、次に障害が起きても問題ないようにロー…
Nature Remo E / E lite用のAPIクライアント用のGemを作った。E liteでしか動作確認していないけど、Eでも使えるはず。 ytkg/nature_remo_e - GitHub 作った理由 単純にGemを作ってみたかった Nature RemoのGem…
半年くらい前にNature Remo E liteを買って放置していたが、せっかくなのでAmbientに値を投げてグラフ化してみることにした。 Nature Remoの公式アプリでグラフは見れるので、正直何も意味はない。 APIでいろいろ値は取れるが、ばっと見、意味がわかるのは…
AmbientというIoTデータ向けの可視化サービスを見つけたので、RubyからAmbientにデータを送ってグラフを作るところまでをやってみた。 手順 1. ユーザー登録 Ambient 新規登録 2. チャネル作成 様々なグラフを表示するボードみたいなもの。(多分) 「チャ…
Rustも触っておきたいなと思ったので、取り急ぎのHello, World!をやってみた。 手順 事前準備 RustのDockerイメージを取得し、コンテナに入る Vimのインストール 作業用ディレクトリを作成し、移動 Rustファイル作成 コンパイル mainという名前の実行…
Raspberry Pi上にDocker ComposeでHomebridgeを起動する手順。 手順 ディレクトリを作成し、移動 docker-compose.ymlを作成 起動 起動ログ 確認 にアクセスする。 初期ユーザー名: admin 初期パスワード: admin …
Rails6.1にTailwind CSS v1.9.6を導入した手順。 Tailwind CSSのv2系はまだ対応していない部分が多いため、v1.9.6にした。 参考: https://tailwindcss.com/docs/installation#post-css-7-…
Raspberry PiにDockerとDocker Composeをインストールした。 Docker 1. ダウンロードとインストール 2. 権限を追加 3. Dockerサービスの有効化 4. 再起動 確認 Docker Compose 1. GitHubからClone、ブ…
この記事は、「Raspberry Pi Advent Calendar 2020」16日目の記事です。 はじめに 最近、SwitchBot 温湿度計を購入しました。 いろいろ連携させるためには別でSwitchBotハブというものが必要みたいで、急遽代わりにRaspberry P…
正確には温湿度計に入ってるBluetoothセンサーのMACアドレスを確認する方法。 SwitchBot公式のアプリで確認することができる。 iOS: https://apps.apple.com/jp/app/switchbot/id1087374760 Android: h…
ハッシュのキーをシンボルから文字列にしたい時があって調べたのでまとめる。 Rails ハッシュのキーを文字列からシンボルに変える ハッシュのキーをシンボルから文字列に変える ネストがある場合 だと全部は変換できない JSONをパースしたい時 のオプションを付ける Ruby を使…
Speedtest公式のCLIを使って計測する。 https://www.speedtest.net/apps/cli 手順 インストール 実行 この時間帯は8Mbpsしか出ないみたい。。。(23時30分頃) 出力形式をJSONにする 参考 Speedtest.net の公式 …
この記事は、「Jamstackその2 Advent Calendar 2020」7日目です。 はじめに このコマンドを叩いて作り始めた、このブログでやったことをまとめる。 いろいろやったけど、また新しくブログを作った時にもやると思うことをピックアップしている。 タグページについ…
毎月29日対してにごにょごにょしないといけない要件があり、以下のようにDate.parseメソッド使った。 これで問題ないと思ったが、閏年ではない年の2月の場合、29日が存在しないのでコケることが判明。 (閏年ではない年のこと平年いうらしい。以下、平年という。) 条件…
Raspberry Piだって一応サーバーということでサーバー管理・監視サービスのMackerelを導入してみた。 とりあえずモニタリングができる状態までで、監視ルールの設定はしていない。 環境 Raspberry Pi 4 Model B Raspberry Pi OS 10…
IoTをやりたくなったので買ってみた。 いろいろ後で揃えるのは面倒だと思ったので、スターターキットした。 ヒートシンクとファンもついててRaspberry Piは本格的になったな。 https://jp.rs-online.com/web/p/raspberry-pi/20…
Pixelaのグラフの作成がTerraformでできるようなので試してみた。 手順 TerraformはDockerで。 必要なファイルを作成 docker-compose.yml .env main.tf terraform init terraform plan terra…
SinatraでちょっとしたAPIを作った時の構築メモ。 DBなど使わないシンプル構成。 手順 アプリのディレクトリを作って移動 必要なファイルを作成 Dockerfile docker-compose.yml Gemfile app.rb ビルドと起動 動作確認 参考 Doc…
GCPも触っておかないといけないので、とりあえずgcloudコマンドを使える状態にしておく。 インストール方法 インストール 対話形式で質問に答えていけばあっという間にインストールできる。 シェルの再起動 確認 環境の初期化 ブラウザが開くので認証などを済ませる。 参考 Goo…
普段はどんなSQLが発行されたかがわかるのでとても便利だが、大量にSQLが発行される場合は逆に邪魔になる。 しかも出力をしているので、その分処理時間も無駄に掛かってしまう。 その時は、loggerの中身をnilにしてしまえばよい。 元に戻せるように、既存の中身は退避させておくと…
問題 毎時働いてくれているGitHub Actionsのワークフローがコケるようになった。 エラー文を見ると、非推奨となったset-envの警告。 原因 ワークフローでは使っていなかったが、いろいろ調べているとその中で使っている「ruby/setup-ruby」で使わているっぽ…
RailsアプリをAPIモードで新規作成()して、一部機能だけ画面を作成したい時のやり方。 対象のコントローラーでではなく、を継承させてあげれば良い。 あとは通常通り、Viewを用意するだけ。 APIモードで作成すると、は不要な機能を省いたAPI用のを継承している。
.swpなど個人環境依存のファイルはプロジェクトの.gitignoreに含めるべきではないらしい。 した際に作られる.gitignoreにも記述してあった。 ファイルを無視する方法については https://help.github.com/articles/ignoring-f…
過去の電気料金のデータでゴニョゴニョしたかった。 どうやって取るか考えて、やったことのないPDFをパースして取得することにした。 PDFは毎月メールでPDFが送られてくる。 取りたい情報は赤丸で囲った部分。 yob/pdf-reader - GitHub とりあえず雑だけど、…
外部サービスのデータを入れたいときなど、idは自動採番された値ではなく任意に値を入れたい時がある。 Railsで何も考えずにテーブルを作ると、主キーのidはオートインクリメントになるがそれをさせない方法。 articlesテーブルを作る例
rubocop以外にrubocop-performanceとrubocop-railsも一緒に追加する。 手順 おわり 個人的な追加設定 したばかりの状態だとこのくらいの設定になった。 : 基本的に新しいCopは有効にしておきたい : これいる? apiモードじゃなかったらno…
タイトルのまんま。 バージョン Ruby: 2.7.2 Rails: 6.0.3.4 MySQL: 8.0.22 Docker: 19.03.13 docker-compose: 1.27.4 手順 1. アプリのディレクトリ作って移動 2. 各種ファイル作成 Docker…
このブログにtextlintを入れてみた。 本当はGitHub Actionsでいい感じに動かすところまでやりたかったけど、とりあえず今回はローカルで動く状態までにした。 手順 1. textlintとルールプリセットを追加 textlintだけでルールがないと動かないので、複…
※ 下書きにずっと残っていていつまで経っても公開できそうにないので、まとめ終わる前に自分用のメモとして公開する(カリー化の使い所がいまいちわかっていない) カリー化 2つの引数の積を返すメソッド(正確にはProcオブジェクト(ラムダ)) 部分適用 引数を3倍にして返すProcオ…
Rails向けAPM、Skylightを個人アプリに導入してみた 月間10万リクエスト数まで無料で利用できる 導入手順 バージョン Ruby: 2.7.2 Rails: 6.0.3.4 1. SkylightのGemを追加し、bundle install 2. Skylight…
dev.toのソースコードを見たくてアドレスバーから検索しようとしたら 「dev.to github」と入力している途中で表示が変わって、dev.toの検索結果が表示された こんなことできるのかと驚いた OpenSearchというらしい 特に新しい技術ではなく、2005…
問題 GitHub ActionsでRSpecを動かして、Railsのアプリの自動テストをしている 今回、Railsアプリで使うRubyバージョンを2.7.2に上げたいので、GitHub ActionsでもRuby2.7.2を使おうと思ったら使えなかった 2.7.2が見つか…
表題通り、以前書いた記事(Togglの作業時間をPixelaで可視化する)で作ったGASのリプレイス GASからRuby + GitHub Actionsにリプレイスした理由 Github Actionsの利用規約が変更され、サーバーレスコンピューティング目的で使用しても良くな…
URIエンコードにを使っていたらRubocopに怒られてしまった どうやら時代遅れらしい の代わりにを使うことにした URI.escapeメソッドは時代遅れであり、使用すべきではありません。代わりに、CGI.escape、URI.encode_www_form、またはURI.e…
ついにTypeScriptに手を出す時が来た ローカルマシンでの実行環境はts-nodeが代表的らしい バージョン ts-nodeのインストール 対話形式で実行 ファイルから実行 おわり これでカタカタおじさんの仲間入り 参考 りあクト! TypeScriptで始めるつらくない…
問題 文字列で表されたバージョンをソートすると正しくない結果になる “2”と”10”では”2”の方が大きい値と判断される(“10”の”1”の部分を先に評価してしまうため) 解決方法 文字列で表現されたバージョンを比較可能にするためのクラス(Gem::Version)を使えば解決…
Ruby 3.0.0 Preview 1がリリースされたっぽいので一応触ってみた Ruby 3.0.0 Preview 1を手に入れる 追加された機能(ほんの一部)を試す これでirbを起動する 右代入演算子 左辺の値を右辺の変数に代入する演算子 エンドレスメソッド定義構文 ブ…
Herokuの無料プランには30分間アクセスがないとアプリがスリープになるという仕様がある これを回避する方法としてよく使われるのが、Heroku Schedulerを使ってcurlでリクエストを送るという方法 今回はHeroku Schedulerの代わりにGitHub Ac…
GitHub ActionsでRSpecを動かしたくて公式ドキュメントっぽいものを読みながらやっていたがうまく動かなかった actions/setup-ruby: Set up your GitHub Actions workflow with a specific versi…
Herokuで運用しているアプリのデータベースが無料の範囲を超えてしまったので有料プランに変更した 無料のHobby Devプランから9$/monthのHobby Basicプランに変更する Hobby Devプランは10,000レコードまでで、Hobby Basicプランは1…
問題 既存のRailsプロジェクトにAdminLTEを追加して、Herokuにデプロイをしたらコケた バージョン Rails: 6.0.3.2 AdminLTE: 3.0.5 原因 とりあえずnpmがないらしい AdminLTEを入れる前も必要なはずだったのにコケていなかった理…
思考停止した導入方法のメモ 手順 Gemのインストール RailsにRSpecをインストール 設定 参考 RailsアプリへのRspecとFactory_botの導入手順 - Qiita DatabaseCleanerの実装と使い所 - Qiita
問題 RuboCopを実行したら、以下のような警告が出るようになった RuboCopのバージョン 0.89.1 新しく追加されたCopはデフォルトで有効にならないので、rubocop.ymlに設定を追加しないといけないらしい これをちまちま設定していくのはたまにならいいけ…
RailsアプリにTwitterアカウントでログインできる機能を実装したのでメモ Twitterアカウントでログインができればよかったので最低限の実装しかしていない deviseを使うほどでもないので、omniauth-twitterだけ使った バージョン ruby: 2.6.…
手順 git-completion.bashのパスを探す ~/.bashrcに追記 参考 【2ステップ】Gitコマンドでtab補完を有効にする - Qiita
巷で話題のNoCodeでアプリ作成をやってみたかったので、Glideを少し触ってみた Glideとは 簡単に言うと、GoogleスプレッドシートをデータベースとしてノーコードでPWAサイトを作れるサービス https://www.glideapps.com/ 作成するアプリ Y…
別のものを作ろうした時にできた副産物だけど記録として残しておく 青空文庫の小説を本らしく縦書きにする ブックマークレット Before これが After こうなる もっと本らしく読めるウェブサービス 調べたら「えあ草紙」という青空文庫の縦書き書籍リーダーがあった 色もそう…
コロナの影響で在宅勤務なり、可処分時間が増えた せっかく増えた時間を無駄にしないようにと自己研鑽に励み、その時間をTogglで管理している さらに可視化をしたらモチベーション上がるかなと思ったので、Pixelaに草を生やしてみた Lambdaでやろうとしたけど、僕はひよっこエン…
GASでパスワードやトークンなどをハードコーディングしたくなかったので、環境変数的なものに格納する方法を調べた PropertiesServiceを使うといいらしい 使い方 値の登録 ファイル→プロジェクトのプロパティ→スクリプトのプロパティ 値の取得 一括取得 長いし、複数…
普通に実装していたら違いなんてなくてどっちでもいいじゃんって思ってたけど、明確な違いがあった 今までたまたまそういう実装をしていないからハマらなかっただけで、いつかハマるかもしれないからメモしておく スコープとクラスメソッドの違い メソッドチェインができるようにスコープはAct…
いつの間にかプロジェクトルートにという名前のファイルが出来ていることに気づいた。 しかもrootだし、容量もでかい。怖い。 調べてみるとこれはどうやらコアファイルというらしい。 コアファイル プログラムが異常終了した時に出力されるファイルのこと 異常終了直前のメモリの状態などが…
APIで取得できる項目はいろいろあるけど、前日の作業時間だけ欲しかったのでそれだけ調べたメモ 手順 API Tokenの取得 プロフィールページの下の方に表示されている https://toggl.com/app/profile curlで叩く とはドキュメントに載ってたダミー…
Pixela あなたの頑張りや継続を記録し、育てたい。 そのすべてを、APIで。 Pixela はAPIサービスです。このサービスを使えば、あなたの日々の様々な活動量を GitHub のような鮮やかなグラフで表現することができます。 そのすべての操作を、APIで。もちろん、無料…
brewでyarnを入れた時にnodeも一緒に入ってしまい、それがnvmでインストールしたnodeよりも優先されてしまうからnvmでdefaultを指定してもsystemのnodeが使われてしまう
ただし、masterとdevelopは残す 参考 Gitでマージ済みブランチを一括削除 - Qiita
Docker Composeを利用して、Ruby on Jetsの開発環境を構築してみる。 細かい設定はいろいろあるけど、とりあえず最低限のJetsの画面が表示される状態をゴールとする。 そもそもRuby on Jetsとは? サーバーレスアプリケーションをRailsライクに作…
AWS CLIにはバージョン1とバージョン2があるらしい。今回はバージョン1を入れた時のメモ。 バージョン 手順 pip3でAWS CLIをインストール PATHを通す インストールしただけだとそんなコマンドないよと怒られる 正しくイントールをされたか確認する 完璧だね! 参考…
問題 で編集・保存して閉じたらエラー出た。 解決方法 デフォルトのエディタを変更すればいいらしい。でもでも。 理由はわからん
やったこと RailsアプリをHerokuにデプロイする際に、も一緒に実行するようにした。 デプロイした面倒だし、忘れることもあるので一緒に実行してくれたらいいのになと思ったらProcfileに書けばいいらしい。 やり方 設定 Procfileにを追記。 動作確認 ちょうどタイ…
タイトル通り、Herokuで動いているRailsアプリのアプリケーションサーバーをPumaに変更した話。 経緯 そろそろHerokuにデプロイした時に出るWarningを一つ一つ潰していこうかなと思った時に最初に目をつけられたWarningがこちら。 「Procfileが見つか…
HerokuのDB(Postgresql)は10000レコードまで無料で使えるが、超えたらいきなり請求くるらしいので注意が必要。 レコード数はで確認できる。 まだまだ余裕がありそうだ。
ずっとdotfilesを作って整備していきたいなと思っていたけど、なかなか進められずに何年か経ってた。 でも以下のアドベントカレンダー見てたらやらずにはいられなくなったので今日から進めていく! dotfiles Advent Calendar 2019 - Qiita とりあえ…
動作確認したい時に便利。MacにPHPはデフォルト入ってるしね。 正確にはビルトインサーバーっていうらしい。 PHP: ビルトインウェブサーバー - Manual バージョン 起動コマンド エイリアスに 登録 エイリアスにで登録してすぐ起動できるようにしてる。
いつもメニューバーで確認してたけど、ターミナルで確認する方法ってあるのかなって調べた。 で確認できる。 覚えにくいな。software versionの略なのかな。
簡単なサイトの作成やCSSの挙動を確認する時に使う HTML ワンライナー テンプレートをGitHubに上げた。 ytkg/html_template
開発中とかにいちいちユーザー名とパスワードを入力するのはとても面倒。 URLにユーザー名とパスワードを含めると認証を省略できる。 他にもiPhoneのホーム画面に追加するようなWebアプリはこのやり方でアクセスしたあとにホーム画面に追加すれば認証を求められないので便利。
家用のRailsアプリをHerokuで動かしているが、一応認証は入れておきたいなと思ってベーシック認証を掛けた時のメモ やり方 というメソッドが用意されているので、ApplicationControllerに記述するだけで出来る。 最終的には本番時のみ動作してほしいのととは環境…
概要 「Hello World!」を返すGo言語アプリをHerokuにデプロイする。 以下に載っているチュートリアルをそのままやるだけ。 https://jp.heroku.com/go バージョン 手順 Govendorのインストール パッケージ管理ツールを入れる。Rubyで…
やり方 Curlで取得できる。URLは他にもいろいろある。 エイリアスに登録 URL忘れちゃうから でエイリアス設定した
ドキュメント https://swagger.nature.global/ トークンの発行 https://home.nature.global/ 手順 認証確認 電化製品一覧取得 電化製品を操作する赤外線を送る Rubyで書くと
CentOS6だとyumで入るgccが古いから上げる必要ある これでイケる。
インストールなどは端折る。 バージョン 手順 Reactアプリ作成 でアプリ作成。最初のcommitまでやってくれる。 ディレクトリ移動して、で起動確認。 Nowにデプロイ でデプロイできる。未ログイン状態の場合は別途ログイン作業がある。 https://sample-reac…
映画の公開日を取得できるAPIってないのかなと探していたら、映画.comがAPIではないけれど、iCalフォーマットで公開してくれていたのでこれを使うことにする。 iCal公開予定スケジュール - 映画.com からまでが1つの映画の情報で、 が公開日、がタイトルになっている…
手順 というファイルが生成される タスクの中身はこんな感じで書く 実行の仕方 モデルにアクセスしたい場合は、を付ける。 実行結果
手順 以下のコマンドでメンテナンスモードになる。 offにしたい場合。 今のメンテナンスモードかどうか確認したい場合。
静的データだからテーブル作るのはめんどくさいけど、ActiveRecordのように扱いたいって時にはactive_hashというGemが便利 https://github.com/zilkey/active_hash 使い方 ちゃんとActiveRecordのメソッドそれなりに…
前回の記事の続き的な。(codicのAPIを試してみる | 高木のブログ) Rubyで書くとこんな感じになる。
いつもお世話になってるcodicにAPIがあったので試してみる。もちろん認証が必要。 トークンの取得とか使い方の説明は以下を参照 API | codic 手順 こんな感じでcurlを叩く。 実際に叩いてみた結果。 見にくいし、文字があれなので、jq使う。 変換されたものだけ…
圧縮または難読化されたファイルは読みづらい。 赤丸で囲んだところの『{}』マークを押したら見やすい形に整えてくれる。 ほら、見やすくなった! でも例としてGoogle Mapはちょっと微妙だったかも。
Networkタブを開いて、Offlineにチェックを入れたら疑似オフラインになる! このゲームで遊びたくなった時にいちいちWi-Fiを切らなくてもいいから便利だ!
ディスク使用率が100%になっててやべ!ってなったので要らないファイルを消す。 duコマンドで大きいディレクトリを見つける。sortコマンドを組み合わせて見やすく。 procディレクトリってなんだろ。次回「procディレクトリって何」の巻。 homeディレクトリが大きいみたいな…
RubyでCSVファイルを生成して、エクセルで開くと文字化けする。 それをnkfで変換して解消する。
yumで入れてたら 全部一気に 設定ファイルなどは消えないので、これで設定ファイルやIDなども一気に消す
こんな感じになる 登録とかなしでここまでの情報が取れるのは便利 本の定価が取れたらよかったんだけどなあ
簡単なのにいつも忘れるからメモ。マジでメモ。
これでDBはMySQLになる。デフォルトはSQLite。 Gemfileにも config/database.ymlにも mysql2となっているので、MySQLが使えるようになったことがわかる。
gemのインストール Rubyソースコード
TwitterのGemを入れようとしたら なんかエラー吐いた どうやらCommand Line Developer Toolsが必要らしい それに加えて、Xcodeのライセンスに同意しないといけないので これでやっとうまくいく