エンジニアのはしがき

プログラミングの日々の知見を書き連ねているブログです

中古のMacBook Air(2014)にUbuntuをインストールした

自宅に眠っていた中古MacBookをどうにか有効活用したい… そう思ってネットの海をさまよっているとUbuntuをぶち込むことができるようなので 実際にやってみたことを備忘録として残そうと思います。 使ったもの Macbookを初期化する isoファイルをDLする isoフ…

BunからFirestoreにDocumentを追加しようと思ったらうまく動かなかった

ちょっとハマってしまったのでメモがてらに書きます。。 やりたかったこと 以下のようなFirestoreのあるCollectionにDocumentを追加するような処理を書いてました。 import { cert, initializeApp } from "firebase-admin/app"; import { getFirestore } fro…

ポートフォリオサイトをNext.jsからReact.jsに置き換えました

最近ずっと放置していたポートフォリオサイトをアプデしました。 My Portfolio 元々はNext.jsで構成していたのですが、今回React.jsに置き換えをしました。 何で置き換えたの? ビルド、デプロイはGitHub Actionsで実行されるようにしていたのですが、その際…

Spring(Java)で雑にOpenAI APIにニュースを要約させてみた

日頃技術系のニュースを追う際に、よく見るサイトの記事を俯瞰して見たいので毎日スクレイピングした記事をDBに格納して、自作アプリから見れるようにしています。 ↓こんな感じ https://birds-eye.ts-soda.net/news 特に大きな問題はなく運用できていたんで…

Spring FrameworkでRDBMSと通信する手段について調べた

以前Spring Frameworkについて調べていた時、RDBMSとの通信方法をまとめていたのですが記事として公開せず放置していたので公開しておきます。

MySQL(InnoDB)のTransaction Isolation Levelsについてまとめる

DBのロックについて考える際にTransaction Isolation Levelsを確認することはよくあると思いますが、バックエンドを触ってない期間が長くなると細かい部分を忘れてしまうのでまとめてみました。

Mockito+Springで単体テストを書く

業務ではバックエンドにSpringを使っているのですが、単体テストを書く場合のモックフレームワークとしてMockitoを使っています。 割合としてはE2Eテストの方が多く単体テストを書く機会が少ないのですが、今後は単体テストも割合を増やしていきましょうとい…

GitHub ActionsからFirebase Hostingへデプロイするようにしてみた

プライベート用のReactアプリをたまに手直しすることがあるのですが、いい加減CI/CDでデプロイを楽できるようにしとかなきゃなぁと思い、先日GitHub Actions用の設定を追加しました。

Maven -> Gradle移行でライブラリのバージョンが意図せず変わった

Gradleあるあるだとは思いますが、先日ちょっとハマったことを書きます。

VSCodeのターミナルをUbuntu on Windowsにしたらたまにディレクトリ名がおかしくなるぞ

プライベートの開発機はWindowsを使っているのでターミナルは基本的にGit Bashを使っていたのですが、最近Ubuntu on Windowsに変えてみました。 crontabは別途設定しないと動いてくれなかったりしますが、基本的にはWindowsの仮想環境でUbuntuが動くのでGit …

複数台のRaspberry Piの初期設定がつらいのでAnsibleで設定した

年末は自宅で稼働する5台のラズパイ達のパッケージアップデートやスクリプト整理などをやっておりました OSのメジャーアップデートもそろそろやらなきゃなということで、ついにbullseyeへアプデすることにしました。 なお既存環境からメジャーアップデートさ…

スクリプトからLocalizationのStringTableCollectionのCSVインポートをさせる

UnityのLocalizationを利用する際、制作中のゲームではStringTableCollectionをCSVからインポートしていました。 ただ用途によってStringTableCollectionを複数に分割している為、CSVも分割した数だけ存在するのでGUIからのインポートがとても苦痛…。 そこで…

ExcelでCSVの集計頑張るのが辛いならSQLiteでSQL書くのもアリ

SQLiteを今まで使ったことが無かったのですが、先日ExcelでSQL的なことをしようとして思うように書けず辛かったのでSQLiteへデータを流し込んでSQLのクエリで集計しました。 SQLiteはPostgreSQL, MySQL等と比較すると気軽にデータを格納・集計できるので、普…

InnoDBのlocking read

tm-progapp.hatenablog.com ↑の記事にてInnoDBのロックについてまとめましたが、公式ドキュメントを読み漁る中で「locking read」と「non-locking read」という言い回しがあり、気になったのでまとめてみました。 MySQL :: MySQL 8.0 Reference Manual :: 15…

InnoDBのロックについてまとめた

MySQLを実務で触っているのですが、改めてInnoDBのロックの仕様について頭の整理をするためにまとめてみました。 ロックの種類 共有ロック 排他ロック ロックの範囲 レコードロック ギャップロック ネクストキーロック テーブルロック ロックの範囲はどのよ…

npm linkでローカルのnpmパッケージを参照できた

最近知ったnpm linkというものについて書いてみようと思います。 やりたかったこと とあるnpmパッケージの実装を変更した後、npm publish前にパッケージをimportしている別プロジェクト側から動作が確認したいというケースがありました。 具体的には、プロジ…

VSCodeでファイルの文字列比較ができることを知った

VSCode便利ですよね。 拡張機能を使いこなすと大体やりたいことができちゃう凄いエディタだという印象を持っていますが、実はデフォルトでも便利な機能が実装されています。 文字列比較した時の表示 例えば以下はVSCodeで異なるテキストファイル同士を比較し…

Unityのエディタ拡張でシーンビュー上にシェルスクリプト実行ボタンを置く

Unityのエディタ拡張を使えば、シーンビューにボタンを配置することが出来ます。普段はWindowsで開発をしているので、Git Bashで実行するシェルスクリプトのボタンを置いてみました。

Cloud Watch Insightsのクエリをシェルスクリプトから実行する

Cloud Watch Insightsは、膨大なCloud Watchのログから必要なものをフィルタリングするのに便利です。 AWSコンソール上から利用できるようになっていますが、AWS CLIからも利用ができるとのことで実際に試してみました。 動作環境 # uname -a Linux b93945d4…

Chromeの開発者ツールで捕捉した通信をcurlコマンドでコピーする

デバッグをしていて一部のHTTPリクエストのパラメータだけ変えてcurlしたいなーと思っていたところ、Chromeの開発者ツールで既に便利な機能が用意されていたことを知りました。 やり方 Chromeで開発者ツールを開き、「Network」タブを表示する。 コピーした…

React + TypeScript + CSS ModulesでChrome拡張機能の開発環境を構築する

前回、webpack + TypeScriptの構成でChrome拡張の開発環境を構築しました。 tm-progapp.hatenablog.com ただ、DOMを拡張機能側で動的生成したりするよう場合、TSXで書きたいなァ…🤤という思いから構築してみました。

Chrome拡張の開発環境をWebpack+TypeScriptで構築する

このWebサイトのココをちょっと直したい…そんな思いからChrome拡張の開発を始めました。 ただやっぱりJavaScriptよりTypeScriptが書きたいと思い、環境を構築してみました。

JavaでJsoupとSeleniumでWebサイトをスクレイピングしてみた

最近IT系のニュースサイトをスクレイピングするプログラムを走らせて、ネットサーフィンする時間を節約するようになりました。 スクレイピングにはJavaのJsoup, Seleniumを使っているのですが、今回はその実装内容について書き残してみます!

任意の容量のファイルを生成したいとき

やりたかったこと 動作環境 生成方法 コマンドの解説 base64 /dev/urandom head -c 1000 あとがき やりたかったこと 任意の容量のファイルを生成したい 背景としてファイルのアップロード処理における容量制限の手動テストをしたかった 動作環境 macOS, Linu…

SpringでInterfaceを@Autowiredするだけで動作するのはなぜ?

JavaとC#は似て非なるものだと日に日に感じる今日この頃です。

Raspberry PiがWifi接続できなくなった(No wireless interfaces found)

いつも使っているラズパイにVNC接続できなくなりました。

WindowsのGit Bashでmysqlに接続できなかった

Windowsで開発する時は、ターミナルとしてGit Bashを多用しています。が、たまに特有の仕様にひっかかってしまうことがあり、今回もそんなトピックとなります。

Serverless Framework+AWS Lambda(Java8)でHello worldしようとしたらNoClassDefFoundError

少しずつですがJavaのビルドツール周りも分かりかけてきたなという矢先、エラーで数時間ハマりました…😭

JavaのStream APIでよく使いそうな処理をまとめてみる

Javaの勉強中、コレクションを扱う時にC#のLinq的な書き方ができたらなぁと思っていたのですが、Stream APIでかなり近いことができるようなのでまとめました。

Raspberry Pi OSのMariaDBへ別ホストからアクセスできるようにしたかった

Spring Data JPAについて調べる際に、ラズパイのMariaDBを検証用DBとして使っていたのですが、別ホストからのアクセス制御にちょっと時間を食ったので記録を残しておきたいと思います。なお、JPAについての記載は主題ではないため、あえて割愛しました。