コピペコードで快適生活

明日使えるソースを自分のために

RSpecで既存のクラスをモックに差し替える

本来はDependencyInjectionでやるべきかもだけど。 そうもいかないケースもあるわけで。 # 既存クラス let(:api_client) { ::MyApp::ApiClient } let(:api_response) { double('api_response', status: 200) } # post_xxxメソッドを上書きして、api_response…

composerで使えるライブラリを作ってみた

PHP

composerで使うライブラリを作ったことがなかったので、試しに作ってみた。 作ってみる ソースはこんなかんじで https://github.com/kinosuke01/convertible-romaji 作るときのコマンドメモ # コンテナ起動してログイン docker compose up docker compose ex…

CSSをあてる要素をどう分割するか

CSS

設計手法 責務をどのように分割するか、名前をつけるか という点でいくつかの代表的なアプローチがある。 OOCSS BEM SMACSS FLOCSS SMACSS 以下のように責務を分割する。 Base ベースとなるデフォルトのスタイルを定義する Layout ページを構成するブロック…

ReactHooksを使ってみる

最近のReactでは関数コンポーネント&ReactHooksを使うのが主流らしい。 キャッチアップしたところ、state管理がコンポーネントからキレイに分離できてよさそうだった。 index.tsx import * as React from "react"; import * as ReactDOM from "react-dom"; …

React+TypeScript+webpackの環境構築

必要なライブラリのインストール ビルドツールをインストールする npm install --save-dev webpack webpack-cli webpack-dev-server typescript ts-loader React関連のライブラリをインストールする。 ビルド後のファイルに含めるので--saveとする。 npm ins…

TypeScriptのコードをJestでテストする

やり方には、ts-jestを使う方法と、babelを使う方法がある。 babelを使うやり方は、https://kinosuke.hatenablog.jp/entry/2020/01/29/115640 と同じアプローチ。preset-envをpreset-typescriptにするだけ。ただし、型チェックはできない。 今回は、型チェッ…

TypeScript+webpack環境を作る - ts-loader使う版

https://kinosuke.hatenablog.jp/entry/2021/07/23/165039 のやりなおし。 babelはTypeScriptからJavaScriptへの変換だけをやってくれるだけで、肝心の型チェックはやってくれなかったので、ts-loaderを使ってやってみる。 必要なライブラリをインストール n…

TypeScript+webpack環境を作る - babel使う版

TypeScriptをはじめてみる - コピペコードで快適生活 の続き 必要なライブラリをインストール npm install --save-dev webpack webpack-cli typescript babel-loader @babel/core @babel/preset-typescript webpack: モジュールバンドラー。 JavaScript等の…

TypeScriptをはじめてみる

TypeScriptの雰囲気を掴むために、5分でできるチュートリアルをやってみる。 環境の準備 PC環境は汚したくないので、dockerで環境を作る。 #{APP_DIR}/docker-compose.yml に以下を書く version: '3' services: node: image: node volumes: - "./:/var/app" …

Kubernetesの設定ファイルの書き方キホン

確認できる環境(minikube)の準備 $ brew install kubectl $ kubectl version --client $ brew install minikube $ minikube version minikube コマンド minikube start # 起動(デフォルトはDockerで起動) minikube status # 状態表示 minikube ssh # ホストO…

シェルで古いファイルを一括で消す

バックアップスクリプトでよくやるのだけど、毎回書き方を忘れているのでメモ。 # -execオプションを使う版 # {} が対象のファイルパスに置換されて実行される。 # -mtime +3 => 最終更新日時が、過去〜4(3+1)日前のファイルを表示する find ${TARGET_DIR} -…

シェルスクリプトのアタマに添えるおまじない

シェルスクリプトを書くときに、アタマに添えるおまじないをメモ。 #!/bin/sh # set -e # スクリプトの実行中にエラー(exit 0以外)が発生すると、そこでスクリプトが終了させる。 # というかつけてないと、エラーしても次の処理に進むから怖い。 # # set -u …

proxy先がTCPコネクションを切ったときブラウザには何が返るか

ブラウザ → proxy(nginx) → origin(apache) の通信経路で、originがTCPコネクションを切った場合、proxyは50xを返す。proxy(nginx)にはこんなログが出る。 proxy_1 | 2021/07/01 13:15:38 [error] 25#25: *2 upstream prematurely closed connection while r…

MySQLのバッファプール使用状況を確認する

ダーティページの使用状況を確認したかったので。 mysql> SHOW GLOBAL STATUS LIKE 'InnoDB\_buffer\_pool%'; +-----------------------------------+---------------+ | Variable_name | Value | +-----------------------------------+---------------+ | …

nginxのproxy設定メモ

/etc/nginx/nginx.conf # 略 http { # 略 # proxy_cache_path: キャッシュファイルの本体 # keys_zone: 1mは共有メモリのサイズ。1MiBあたり約8000個のキーを保持できる # max_size: 全キャッシュファイルのサイズ合計の上限 # inactive: 指定した期間内にア…

screenの代わりにnohup&を使う

時間のかかるバッチ処理を手動で実行するとき、 sshセッションが切断しても大丈夫なようにscreenコマンドを使っていたけど、 他の方法を知ったのでメモしておく。 やりかた サンプルスクリプト #!/bin/sh # 永遠に標準出力と標準エラー出力を繰り返す while …

よく見る圧縮形式メモ

雰囲気でしかわかってなかったので整理。 zip WindowsやMacの標準形式 圧縮率は高くない 4GBを超えるファイルは扱えない 圧縮後に2GBを超えるファイルは扱えない Macの標準機能で圧縮すると、Windowsでファイル名が文字化けする Linuxでは標準で使えない 複…

MySQLでバイナリログを削除する

バイナリログファイルの確認 メインDBで確認する mysql> show master logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000091 | 141 | # 略 | mysql-bin.000107 | 98 | +------------------…

MySQLの文字セットと照合順序

MySQLでは、データベース、テーブル、カラムのそれぞれに対して文字セットと照合順序を設定できる。 文字セット 用語 文字セットとは、文字と符号の対応付けたセット。 文字コードとは、文字セットの符号をビット列に変換する方式。 例: Unicodeは文字セット…

MySQLのストレージエンジンを確認する

-- 使用できるエンジンを確認する -- デフォルトのエンジンを確認する show engines; -- テーブル設定を一覧表示する show table status; -- テーブルの設定を確認する SHOW CREATE TABLE #{table_name}\G

PHPでの日時処理

PHP

PHPよく理解してないので整理。日時まわり。 date関数 出力したい文字列のフォーマットを受け取り、現在日時(or渡したタイムスタンプ)の日時を、文字列で返す https://www.php.net/manual/ja/function.date.php echo date('Y-m-d'); // -> 2021-06-01 echo d…

PHPUnitのテストの書き方 超入門

PHP

いままで書いたことなかったのでメモ。

ポートフォワードして繋ぐMySQLユーザのHostはなに?

結論 踏み台サーバの内部IPアドレス 実験 前提 踏み台の内部IPアドレス: 192.168.10.10 MySQLサーバの内部IPアドレス: 192.168.10.20 ポートフォワードする ssh kinosuke01@fumidai -L 3306:192.168.10.20:3306 -N Hostが127.0.0.1のユーザを作る mysql> sel…

homebrewで複数バージョンのMySQLをインストールして切り替えする

# インストール可能パッケージの確認 brew search mysql # 最新版のインストール brew install mysql # 過去バージョンのインストール brew install mysql@5.7 # unlinkとlinkでバージョン切り替えする % brew unlink mysql && brew link --force mysql@5.7 …

Go言語の環境構築+モジュール管理

Go

Goは2つのモードがある GOPATH モード バージョン1.10までの(過去の)モード。コード管理とビルドをGOPATHで指定されたディレクトリ以下で行う。 パッケージはリポジトリの最新リビジョンのみ扱う。 モジュール対応モード パッケージをモジュールとして管理す…

クリーンアーキテクチャについて学んだことメモ

全体を通した感想 たぶんこういうことかなと。 UIとビジネスルールとDBを疎結合とすること 変更容易性の向上 変更による影響範囲を小さくする テスト容易性の向上 テスト対象が依存するオブジェクトをモックに差し替えやすい レイヤードアーキテクチャ 依存…

データソースのアーキテクチャ

データソースのアーキテクチャについて学んだことメモ。 TableDataGateway インスタンスがテーブル内のすべての行を操作する。 SQLはこのインスタンス内に閉じる。 https://bliki-ja.github.io/pofeaa/TableDataGateway/ RowDataGateWay 1クラス=1テーブル、…

リーン顧客開発の読後メモ

https://www.amazon.co.jp/dp/4873117216 を読んで、いいなと思ったポイントをメモ。 1.顧客開発の目的 顧客が欲しがるものについての誤った思い込みを早く見つける 本当に購入してくれる製品の開発に集中できるように 2.何からやるか チームで時間を作って…

OS起動時に自動でディレクトリやファイルを作成する

たとえば、CentOS7では、/var/run/* がシャットダウン時に削除されるけど、OS起動時にはディレクトリ作っておいてほしいケースとかで使う。 設定ファイル置き場 /etc/tmpfiles.d/*.conf 記法 # ディレクトリがなければ作る d /var/run/my_app 755 root root …

kubectlでpodのログを確認するまで

context、namaspace、deploymentがわかっている状態からどうやって確認するかメモ contextの確認・設定 設定は ~/.kube/config に書いてある。 # 一覧表示 kubectl config get-contexts # 切り替え kubectl config use-context my-context # 現在のcontextの…