本当にただのメモ

なるべく Qiita に投稿しよう

Perl で標準モジュールだけで http request したいとき

なんと LWP::UserAgent は非 core module HTTP::Tiny が core module なんだけど、SSL 通信をするには IO::Socket::SSL (非 core module )が必要なので、実質使えない 仕方ないので Perl のスクリプト内で curl を呼んだ ... use IPC::Cmd qw(run can_run)…

show processlist; の結果が多すぎるときに、スロークエリの process id を特定する方法あれこれ

innotop を使う $ innotop -u root -p xxxxxx https://linux.die.net/man/1/innotop デフォルトのソートが Time の降順になっている pager grep ... mysql のコンソールで pager をカスタマイズすることができる どういうことかというと、↓ みたいにすると、…

Mechanize で checkbox を操作するメモ

こういうチェックボックスのとき: <input type="checkbox" name="foo" /> on にする: submit_form(fields => { foo => 'on' }) off にする: submit_form(fields => { foo => 'off' }) こういうチェックボックスのとき: <input type="checkbox" name="foo" value="1" /> on にする: submit_form(fields => { foo => 1 }) off にする: submit…

WWW::Mechanize の strict_forms => 1 オプション便利

存在しないフィールドを指定すると例外を吐くようになる。 v1.82 から使える機能。 https://metacpan.org/pod/WWW::Mechanize#strict_forms $mech->submit_form( fields => { ... }, strict_forms => 1 ); みたいにして使う。 テスト書いてるときに、フィー…

Jenkins で、追い push したら同じ PR の実行中のビルドを abort する

ここに書いてある https://github.com/jenkinsci/ghprb- plugin/issues/379#issuecomment-233019290

Xslate で未定義変数の事故を防ぐための Tips

ほぼ https://github.com/xslate/xslate.github.com/wiki/Text::Xslate::Manual::Debugging.ja に書いてあるとおりですが。 開発環境ではとりあえず verbose => 2 有効にしておく undef に対する警告とか出してくれる。 my $xslate = Text::Xslate->new(verb…

Plack::Request の body とか content の使い分け

いつも迷って調べるのでメモ。 https://metacpan.org/pod/Plack::Request 結論 フォームデータなら ->body_parameters Returns a reference to a hash containing posted parameters in the request body (POST). As with query_parameters, the hash refere…

Carp.pm のメソッド

これいつも忘れる。 説明 警告を出力するメソッド 例外を発生させるメソッド 呼び出し元が分かる carp() croak() スタックトレース cluck() confess()

vgo メモ

go

https://qiita.com/nekketsuuu/items/589bc29f00b507492a96 依存関係は ./go.mod に記述する サブコマンド 説明 vgo build 依存を解決しつつ go build vgo list -m 依存モジュールを出力 vgo list -m -u 依存モジュールでバージョンが古いものがないかを出力…

Perl でメールを送るなら Email::Send より Email::Sender::Simple が良さそう

理由としては、Email::Sender::Simple を使ったほうが良いからと言うよりは、Email::Send を使わないほうが良いから。 Email::Send#send の戻り値は Return::Value という deprecated なモジュールのインスタンスなので、エラーハンドリングがややこい。 Ema…

lsblk

サーバで使っているディスクのデバイス名リストを取得する lsblk コマンドが便利 mac で似たようなことをしたい場合 diskutil list とかがある

tmux + powerline が上手く動かなくなったとき

~/.tmux.conf を見ればわかるけど、tmux 起動時に powerline-daemon -q というコマンドを実行している これは python の powerline-status というパッケージを install するとついてくるコマンド なのでまずは powerline-daemon を素で打ってみると良い powe…

シェルクスクリプトを書くときは set -eu する

シェルスクリプトを書くときはset -euしておく

日付カラムをアプリに入れさせるか、DB に入れさせるか

まだ結論は出せていない。 アプリに入れさせるメリット テストのとき便利 ちょっと時刻を変えたい、とか 並び順を保証させたいとか(逆に DB だと 1秒たりとも変わらないと並び順が不定になる) DB に入れさせるメリット 漏れがない アプリケーションサーバ…

case sensitive にするために BLOB 型にするのは現代では BK 、カラム個別に CHARSET を指定すれば良い

例: name VARCHAR(255) CHARACTER SET ascii COLLATE ascii_bin NOT NULL この方法のメリット: 想定外のマルチバイトが入らない 逆に BLOB だとアプリケーションで気をつけないとバイナリ列を突っ込める ちなみに CHARACTER SET = ascii だとデフォルトで…

BINARY, VARBINARY, BLOB

MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.4.2 BINARY および VARBINARY 型 字の如く、バイナリ文字列を格納する BINARY(N) VARBINARY(M) N, M は文字数でなくバイト数である BLOB = VARBINARY 型で格納できるバイト数を指定しなかったもの、と捉え…

レプリ遅延の原因

漢(オトコ)のコンピュータ道: MySQLにおけるレプリケーション遅延の傾向と対策 ネットワークの遅延 巨大なトランザクションを実行した スレーブの負荷が高すぎる 自分の経験的には圧倒的に 2 番目が多い。 むしろ 3 番目のケースには出会ったことがなかった…

MariaDB

MySQL から fork して作られている RDB https://ja.wikipedia.org/wiki/MariaDB Google のシステムに採用されたりしている Fedora, Red Hat Enterprise Linux をはじめとする代表的なLinuxディストリビューションでも、MySQL に代わって MariaDB が標準 DB …

リクエストヘッダ / レスポンスヘッダを dump して HTTP リクエスト

H → リクエストヘッダ、h → レスポンスヘッダ。 httpie は良い。curl はオプション覚えられなさすぎる ... $ http --print hH GET https://blog.sushi.money/ 'User-Agent:Mozilla/5.0 zgrab/0.x' GET / HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflat…

crontab はどのシェルコマンドで実行されるのか

crontab はどのシェルコマンドで実行されるのか? - それマグで! 基本的には sh /bin/sh と /bin/bash の違い - 双六工場日誌

WebSocket と SSE

WebSocket と SSE による HTTP サーバー Push この 2 つは競合するテクノロジーというわけではない ことに注意 WebSocket クライアントとサーバーとの間でソケットを開き、全二重 (双方向) 通信を可能にする SSE HTML5 の拡張機能として開発された、HTTP サ…

(読んだ) REST API に疲れたあなたへ贈る GraphQL 入門

REST API に疲れたあなたへ贈る GraphQL 入門 Why GraphQL 型定義されたスキーマ API を定義したスキーマからドキュメントを自動生成できる サブスクリプションを利用したリアルタイム処理 かなり実践的な内容だったのでまた読み返したい

(読んだ) 2018年なぜ私達はコンテナ/Dockerを使うのか

https://cloudpack.media/41647 コンテナ(Docker)のメリット ローカル開発環境の統一 本番環境 CI/CDでも 使える なぜVagrantではだめなのか VagrantにくらべてDockerはツールの使い方を覚えなくても、そのOSSのReadme.mdに書いている Dockerコマンドを一発…

オーケストレーション

コンテナオーケストレーションツールの“事実上の標準”という座をつかんだ「Kubernetes」。その重要性とは? | 新野淳一コラム | 東京エレクトロンデバイス株式会社 オーケストレーションとは 多数のコンテナに対する運用管理作業 コンテナ化したアプリケーシ…

クリティカルパス

プロジェクトを進めるうえで、ネックとなる部分 その作業が遅れると、プロジェクト全体のスケジュールが遅れる ものを指す

SHOW PROFILE

再現性のあるスロークエリーには「SHOW PROFILE」を試してみよう | Think IT(シンクイット) 使い所 EXPLAIN 上問題なさそうに見えるけど遅いクエリのプロファイリング 普通のクエリチューニングなら EXPLAIN の結果を見ていく方が断然効率が良い ただし My…

JOIN ON ... table AND ... で絞り込み条件を入れる

SELECT * FROM a JOIN b ON a.id = b.id AND b.foo = 'bar' こんな感じ。 INNER JOINでは、得られる結果に違いはないが、OUTER JOINでは結果が変わってしまう! JOIN ONで絞り込み条件を書くと、「 結果を絞るのではなく、結合前のテーブルのレコードを絞る …

メモ:あとで読む

http://b.hatena.ne.jp/Cside/search?q=yoku0825 あるいは http://b.hatena.ne.jp/Cside/search?q=sql

MySQL の DATETIME 型と TIMESTAMP 型 

MySQLの日付型の扱い方や機能をまとめてみました | つかびーの技術日記 値の範囲 TIMESTAMPの方が表現範囲が小さいです。 データサイズ TIMESTAMPの方が小さいです。DATETIMEは5byte~8byteですが、TIMESTAMPは4byte~7byteです。可変なのは小数部があるから…

DynamoDB

aws

Amazon DynamoDB(フルマネージド型 No SQL データベース) |AWS AWS で使えるフルマネージドな KVS 他の KVS との比較 Memcached, MongoDB, Redis, DynamoDB 簡易比較 これが分かりやすかった