動かざることバグの如し

近づきたいよ 君の理想に

Chrome拡張機能で特定のHeaderのときだけブロックする方法

Chrome拡張機能はすごくて、chrome.webRequestのイベントを駆使すると特定の条件のURLをブロックしたり、リダイレクトすることができる 以下はexample.comを含む画像を白紙にするコード 画像かどうかはtypesの「images」で見てる var pattern = "https://exa…

Rubyで複数のバージョン(version number)をソートしたい

かなりニッチなニーズかもしれないけどメモ やりたいこと 例えば以下のようなバージョンの配列があったとして versions = ["1.1", "2.0", "1.1.4", "1.6", "2.4.1"] これを古→新順にソートしたいとする 解決策1 ライブラリを使う 探したらあった なんとGith…

NodejsでファイルからMD5ハッシュを取得したい

md5はこういうの ~/tmp $md5 tmp.wav MD5 (tmp.wav) = a7b3e6a4865d0b5ae39db05371008c2a をNodejsで求めたい 環境 nodejs 8 けど見てる感じ4以上なら動きそう 10でも動いたし コード const crypto = require("crypto"); const fs = require("fs"); function…

sedコマンドで正規表現を使う場合は注意が必要

結論 sedコマンドの正規表現は高級言語の正規表現と同じ感覚で使うと死ぬ 必ず動作テストをすべし 発端 例えば以下のようなテキストファイルがあったとして、 ~ $cat /tmp/sample.txt 1a 2b 3c 4a 5b 「a」を含む行を一括削除したいとする。以下のコマンドで…

npmでグローバルしたパッケージを一括アンインストールする

環境 Mac OS たぶんLinuxでも動く 以下のコマンドを実行するとすべてアンインストールされる npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^npm$'| xargs npm -g rm

Chefでyarnをインストールするレシピ書いた

やりたいこと yarnでnpmパッケージのインストールを行いたいのではなくyarnバイナリファイル自体をChefで自動インストールしたいって話 レシピ include_recipe 'apt::default' apt_repository 'yarn' do uri 'https://dl.yarnpkg.com/debian/' key 'https://…

PHPで複数画像を1枚の画像に結合する

php

環境 php 5.6 多分7以降でも動くと思う(未検証 やりたいこと 例えば以下のような画像3枚があったとして こんな感じに縦並びで1枚の画像に結合したい ImageMagickを使う方法 PHPからImageMagickを叩くことができる(imagick.soのインストールが必要) PHP:…

Debian系でlibjpeg8-devが「404 not available」でインストール出来ない

環境 docker Debian Jessie 原因 ubuntuとパッケージ名が違う apt-get install libjpeg62-turbo-dev でおk 参考リンク libjpeg8-dev is not available on Debian Jessie · Issue #524 · Automattic/node-canvas

Dockerのphp-fpmでImageMagickを使う方法

やりたいこと PHPの公式ドキュメントを見て貰えればわかるように、PHPからImageMagickを通して多くの画像処理を行うことができる。が、当然サーバー上にImageMagickがインストールされてなければならない。 docker上で操作したいときに若干はハマったのでメ…

RailsのActionMailerで差出人のメールアドレスを取得したい

環境 rails 5.x やりたいこと ActionMailerを使ったメール送信周りのテストをしていて、 # メール1通送れているか expect(ActionMailer::Base.deliveries.size).to eq(1) mail = ActionMailer::Base.deliveries.last expect(mail.subject).to eq("たいとる"…

msgpackをコマンドラインで使う

MessagePackと呼ばれるJSONのような、、だけど似て非なるオブジェクト形式がある。 MessagePack: It's like JSON. but fast and small. 具体的な説明は公式ドキュメントに譲るとして、phpやruby 、Pythonで扱うライブラリはあるものの、linuxのコマンドで使…

毎回flexboxでググるのツラくなってきたので自分用まとめ

css

多分一番見やすい基本的な使い方まとめ 日本語対応!CSS Flexboxのチートシートを作ったので配布します | Webクリエイターボックス 応用まとめ ロゴだけ左端に、ほかは右寄せにってのがすごく役に立った(:first-child と margin-right: auto; の合わせ技) Fl…

関東唯一の「海の見える露天風呂」横須賀温泉 へ行った話

まとめ 都内から近い 温泉きもちいい 海は広かった 日帰り温泉 ふと日帰りで温泉行きたい衝動に駆られた。駆られてしまったからには行かなければならないが、当日で箱根とか熱海に行くのは若干厳しいものがある。ってことで前にツイッターで見て気になってい…

Railsに「Honoka」なBootstrapをyarn経由でインストールする

Honokaというじゅりあん(@MITLicense)氏作のBootstrapテーマがある。 Honoka - 日本語も美しく表示できるBootstrapテーマ サンプルを見てもらうとわかるが、日本語の表示が綺麗になっている。加えて配色も標準と変わってて、Bootstrapの触り心地をキープしつ…

Ubuntuでmailコマンドでメール送信できない時に確認すべき事

環境 Ubuntu 18.04 最終的に echo "本文" | mail -s "タイトル" hogehoge@example.com でメール送信ができるようにしたい 確認1 そもそもmailコマンドがインストールされているか apt install mailutils 確認2 /etc/postfix/main.cf にて mydestinationを…

Railsで生SQL実行時にプレースホルダー付けてSQLインジェクション対策

環境 Rails 5 やりたいこと RailsでActiveRecordの生成するSQLではなく、生SQL実行したいときは以下のようにしてできる。 ActiveRecord::Base.connection.execute("select count(1) from users where date = '2018-10-20'") が、プレースホルダー機能を使お…

Amazon Linuxのsysctlの設定を参考にすべき

EC2でハイスペックなインスタンスを作成してAmazon Linuxを起動すればベストな設定のsysctlの値が取得できるのでは説 abi.vsyscall32 = 1 crypto.fips_enabled = 0 debug.exception-trace = 1 debug.kprobes-optimization = 1 dev.hpet.max-user-freq = 64 d…

Chefで設定ファイル等の文字列を置き換えしたり削除したりする方法

環境 chef 14 やりたいこと chefでレシピを当てるターゲット先のサーバーでファイル内の文字列を置き換えたり削除したりと操作したい時がある。 ググるとexecute内でsedコマンド叩けとかいうのもあるが、あまりスマートなやり方ではない。 やり方 Chef::Util…

estat apiで遊ぶ

まずは登録 まずはここから登録しろ 話はここから 一覧よこせ 本家の検索フォームくっそ使いづらいが、公式が出しているサンプルアプリが100倍使いやすい 統計データベースブラウザ - 統計表の取得 こっちをデフォルトにしろ フォーマットメモ statsDataId= …

innoDBのデータベースがぶっ壊れたときの対応メモ

/var/lib/mysqlのib_logfile0、ib_logfile1、ibdata1は生命線になる xxxx.frmとxxxx.ibdもとっておくこと 復活手順 同一DBに同じスキーマのテーブルを作成(別テーブル名で可) ALTER TABLE example_table DISCARD TABLESPACE;を実行 example_table.ibdが消…

Ubuntuでdebファイルをインストールせずに解凍だけする

環境 Ubuntu 18.04 やりたいこと 通常apt install nginxのようにaptコマンド経由でパッケージのインストールを行うが、事情的に.debファイルを落としてきてインストールってパターンもある。 ただパッケージマネージャー経由じゃないだけあって先に手元で解…

Chromeのタブをショートカットキーで移動できる拡張機能「Rearrange Tabs」

環境 chrome 60 今回、なかなかいい拡張機能を見つけたのでメモ 経緯 普段Macを使っているが、Chromeでalt+Command+→を同時に押すと今閲覧しているタブを右に移動できる。(アクティブタブ?カレントタブと言うべきなのだろうか) それはそれでよく使ってい…

dockerでWineをインストールするときにライセンス確認画面から進めない問題

環境 Ubuntu 18.04 wine 1.6 症状 ubuntuのイメージを使ってdockerをbuildする。 RUN apt-get update RUN apt-get install wine1.6 xvfb -y みたいにwineインストールしようとすると、 (略) If you acquired this product in the United States, this EULA…

シェルスクリプトからrbenv上のrubyを実行したい

環境 rbenv 通常rbenvは/etc/profile.dか~/.bashrcなどの読み込み時にロードされる。 が、シェルスクリプトからだとロードされないのでrbenvが無い環境扱いになってしまう。 ので、以下のように明示的にrbenvを読み込ませる必要がある。 #!/bin/bash export …

Linuxでパーミッション情報やシンボリックリンクを維持したままコピーしたい

特定のディレクトリをバックアップしたいとき、cp -r target destすればもちろんコピーできるが、とっても大切なデータの場合慎重になる。 というのもcpコマンドではパーミッションまで保持してくれないからである。 -aオプションをつけると属性を引き継いだ…

Capistrano3のデフォルトのデプロイタスクをoverrideする方法

環境 Capistrano 3.10 やりたいこと Capistranoにはデフォルトでdeploy: やgit:でたくさんのタスクが用意されていて、cap production deployでいろんなタスクが実行されるが、一部のタスクをオレオレにカスタマイズしたかった 方法 公式サイトにトピックがあ…

SSL証明書エラーのテストに使える badssl.com が便利

SSL証明書絡みのエラーは厄介である。が、その状況を再現するのって結構難しかったりする。 そんなときはbadssl.comが便利 期限切れの証明書 https://expired.badssl.com/ このサーバーが expired.badssl.com であることを確認できませんでした。セキュリテ…

Let's EncryptのワイルドカードSSL証明書の更新に苦労した話

経緯 一応ドメインを持っていて、turai.work ドメインを持っているのだが、Let's EncryptのワイルドカードSSL証明書で運用している。 期限も近づいてきたし、certbot-autoコマンドで更新するか〜と思って更新を実行したのだが /root/certbot/certbot-auto re…

GCPのGoogle Cloud Storage無料枠を使うには注意が必要

gcp

GoogleはAWSと違って半永久的に使える「枠」が用意されている。例えばUSリージョンの一番スペックの低いマシンならずっと起動していても課金されない(1台のみだが) AWSでいうEC2にあたるGoogle Cloud Storageにも無料枠が用意されている。さすがGoogle先生…

NodejsでGoogle Cloud Storageへファイルをアップロードしてみる

環境 nodejs v8.8.1 ここではAWSでいうS3にあたるGoogle Cloud StorageへNodejsでローカルのファイルをアップロードしたりしてしてみる。 サービスアカウントの作成 まずは権限設定 アクセスに必要なキーを含むJSONファイルをゲットする必要がある。 GCPコン…