モヒカンメモ

髪色が定期的に変わることに定評のある(比較的)若者Webエンジニアの備忘録

エンジニアリング

GitHub Activityをグラフで可視化してくれるGitHub Readme StatsでGitHub映えを狙う

Webエンジニア御用達のソースコード管理ツール "GitHub" でのアクティビティを可視化してくれる GitHub Readme Stats というおもしろツールが、結構映えるグラフを作ってくれていい感じだったのでご紹介します。

useraddコマンドをAmazon Linux2へインストールする

Linuxユーザを追加するときに使うuseraddコマンド。Amazon Linux2のdockerイメージではデフォルトでは入っていなかったのでインストール方法を調べたたときの備忘録。Amazon Linux2に限らず、Linuxのminimal環境にuseraddコマンドを入れるのに使える方法だと…

80番ポートを使っているプログラムをlsofコマンドで特定する

Linux環境で特定のポートを使いたいけど先に使われていてどのプログラムがそのポートを使っているか知りたいとき、lsofコマンドが便利。 lsofコマンド 「lsof」はオープンしているファイルを一覧表示するコマンドです。 www.atmarkit.co.jp lsofコマンドに-i…

Nginxに "413 Request Entity Too Large" と怒られる原因と対処法

Nginxをリバースプロキシとして使っている環境でファイルアップロードなどを行おうとしたとき "413 Request Entity Too Large" というエラーレスポンスが返ることが有る。 nginx.org 413 Request Entity Too Large 原因 Nginxへ送信されたコンテンツのサイズ…

FileReader.readAsDataURLで得られるのはData URIであって純粋なbase64文字列じゃないぞ

ファイルをFileReader.readAsDataURLを使って文字列化したものは純粋なbase64文字列だと思っていたけど、decodeしようとしたら出来なくてなんでやねん!と思ったので残しておく。 まとめ 画像とかの添付ファイルをJavaScriptで扱うときにFileReaderを使う Fi…

海外へWebコンテンツを配信する際はアクセシビリティの法律に気をつけるべし

ふとしたtweetをきっかけに、海外向けにWebコンテンツを配信する際には現地のアクセシビリティに関する法律に気をつける必要があることを学んだ。 アクセシビリティを頑張っているところに、そのモチベーションを聞きたい— ぴんくもひかん (@pinkumohikan) 2…

Lambda@Edgeではオリジンのデータを部分的に書き換えて返すことはできない

Lambda@Edgeのfunctionにoriginからのresponse bodyは渡ってこないので、responseの一部を書き換えて返すみたいな使い方はできないっぽい

Amazon Linux 2へPHP7.4をインストールする

Amazon Linux 2へPHP 7.4をインストールしたので備忘録がてら残しておく。 PHP 7.4.1 前提 2019/12/28 時点の情報 Amazon Linux 2 ( ami-068a6cefc24c301d2 ) amazon-linux-extras Amazon Linux 2には amazon-linux-extras という便利コマンドがある。このコ…

PHPUnit 7系が2020年2月でサポート終了するぞ!バージョンアップを急げ!

PHPでデファクトスタンダードなテスティングツール PHPUnit の7系バージョンが2020年2月7日でサポートが終了します。 ざっくりまとめ PHPUnit 7系(あるいはそれ以下)を使っているひとは、PHPUnit 8系へ乗り換えましょう PHPUnit 8系はPHP7.2以上が必須。7.…

awscliで 'AWSHTTPSConnection' object has no attribute 'server_hostname' って怒られたときにやったこと

ざっくりまとめ awscliをインストールして使おうとしたら何か怒られた よく分からんけど、aptでインストールするのやめてpipで入れ直したら直った 起きたこと とあるUbuntuサーバへawscliをインストールして、aws configureして、awsコマンドを叩いたところ…

Laravelのレートリミットミドルウェアについて調べた

ざっくりまとめ Laravelには任意のエンドポイントに対してレートリミットを行うためのミドルウェアが用意されている 1分当たり10リクエストまで、という感じで制限可能 ログイン中ならユーザ、そうでなければIPアドレス単位でカウントされる レートリミット…

CircleCIのDocker Layer Cachingが有料 & だいぶ高価になっていた

ざっくりまとめ CircleCIのDocker Layer Caching (DLC) がパフォーマンスプラン (従量課金) の有料機能になっていた DLCが有効だと、ジョブが1回走る度にVMを20分間動かしたのと同じぶんのクレジットを消費する クレジットは減ったら自動チャージで課金され…

徳丸基礎試験の試験結果が届いた

8月頭にウェブ・セキュリティ基礎試験(徳丸基礎試験)のベータ試験を受けて、ついに今日、試験結果が届いた。 試験結果 受験直後の記事で私はこう言いました: ちなみに今回の試験としては手応え十分なのでまあ受かっているんじゃないかな。もしこれで落ちて…

徳丸試験(ウェブセキュリティ試験)を受けてきた

セキュリティ界隈で有名な徳丸さん監修のウェブセキュリティ試験(通称: 徳丸試験)を受けてきた。 peatix.com 徳丸試験受けてきた pic.twitter.com/5oRirTvdw0— ぴんくもひかん - サバゲ系Webエンジニア (@pinkumohikan) August 4, 2019 動機 今回、徳丸試…

mysqldumpしたら "unknown option '--show-warnings'" と怒られる問題

概要 長年困っていた、.my.cnfに "show-warnings" のオプション書いてたらmysqldumpしたときにunknown optionって怒られる問題。show-warningsを "client" じゃなくて "mysql" ディレクティブに書いとけば、mysql clientのときだけshow warningsできることに…

Ubuntu 18.04.2 LTSへtracerouteコマンドをインストールする

Ubuntu 18環境でネットワーク経路を確認しようとtracerouteコマンドを使おうとしたら入ってなかったのでシュパッとインストールする traceroute --version tracerouteコマンドとは 特定のIPやホストへのネットワーク経路や疎通を確認するためのコマンド 詳し…

docker alpineイメージでtimezoneをAsia/Tokyoに設定する

なぜやるか dockerで良く使われる軽量イメージalpineは、デフォルトtimezoneがUTCになっており、Asia/Tokyo (JST) に設定しないと日本時間から9時間ずれてしまう。 どうやるか Dockerfileに下記のように記せばOK FROM alpine:latest RUN apk --no-cache add …

mysqldumpコマンドで "Unknown table 'COLUMN_STATISTICS' in information_schema (1109)" と怒られる原因と対策

エラーメッセージ mysqldump コマンドでMySQL上のデータのバックアップを取ろうとしたとき、下記のようなエラーが出た。 mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_s…

Scalaで使えそうなメールライブラリの調査

Scalaでメール送りたくなってメールライブラリを探したのでまとめておく。 2019年になぜメールか アプリのプッシュ通知やLINE@などの通知手段が普及した2019年でも、保存性やエビデンス、長文の書きやすさ、所有の証明といったの観点でメールという手段も無…

自宅からメールが送れない?それOP25Bのせいかも

メールを送るシステムを開発していて、会社のネットワークからはメールが送れるのに、自宅やポケットWiFiからだとメールが送れないことがあります。例えば、メールを送ろうとすると No route to host や Destination host unreachable Request timed out が…

MySQLに投げられたすべてのSQLクエリをロギングする

概要 クエリビルダやORMが生成するクエリを確認したいなどの理由で、MySQLに投げられたクエリを確認したくなることがある そういうときは、MySQLのクエリログ (general_log) と言う設定をONにすることによって、すべてのクエリをログに吐かせることができる …

"[skip ci]" とコミットメッセージに書くと、CIをスキップできる

TravisCIやCircleCIを使ってCI/CDするのはだいぶメジャーになりましたね。 ドキュメントのみの更新時やwipのときなど、「git commitはしておきたいけどCIは走らせなくて良いだよな〜」というときありますよね。 そういうとき [skip ci] とコミットメッセージ…

ゆるゆる無限LTというクレイジーイベントへ参加してLT3本やってきた

自分もワイワイしている若者ものづくりコミュニティ Oysters主催、ゆるゆる無限LTというクレイジーイベントへ参加した。 oysters.connpass.com 会場はウィルゲートさん提供。サンクス! 雰囲気 無限LTとwはwww 他の人の LT を聞きながら、LT の資料を作る。 …

MySQL8をバージョンアップしたら起動しなくなった

背景 個人プロダクト用にMySQL8を運用していて定期的にバージョンアップを行っている 8.0.14 から 8.0.16 にマイナーバージョンアップしたところMySQLが起動しなくなった ファーーーーーーー pic.twitter.com/FrFW5kfi1K— ぴんくもひかん (@pinkumohikan) A…

Scalaで使うテンプレートエンジンの検討 (Scalate、Twirl、Beard)

Scalaでテンプレートエンジン使いたくなったので調べた。 www.scala-lang.org 探し方 GitHubでホスティングされているホットなものを探す。 github.com こういうのを探すときは、 そこそこstarがついている (= みんなに使われている) 定期的に新バージョンが…

CircleCIでdockerを使うときはバージョン指定を忘れないこと

学び CircleCI上でdockerを動かすとデフォルトではバージョン17.09っていう化石エンジンで動いてしまうので気をつけるべし。 背景 とあるOSSアプリ のCIをCircleCIでしようと思って悪戦苦闘していたら、こういうリプを貰った。 よい子はちゃんとバージョン指…

Docker for Macが路頭に迷わないようにたくさんメモリを食べられるようにする

こんにちは。 軽量でポータブルな開発&実行環境としてDockerが人気ですね。 僕は数年前までは開発環境にはもっぱらVagrantを使っていたのですが、最近は仕事でもプライベートでもDockerしか使ってないです。 Dockerは単純に捨てやすい開発環境という使い方…

30日間brew cleanupしてなかったらbrew upgradeのついでに実行されるようになっていた

僕は仕事でもプライベートでも開発環境としてMacBookを使っているのですが、毎朝 brew upgrade コマンドを叩いています。今日は何が上がったかな?を確かめるのが日課です。これをせずにbrew installをした日にはたくさんのupgradeが走ってめちゃめちゃ待た…

travis encrypt-fileに気をつけろ!2回コマンド叩くと復号に失敗する!?

なんか釣りっぽいタイトルになってしまいましたが、そんな意図はありませんw CI/CDツールとして良くTravis CIを使っています。CDの際などにアプリ設定やDB接続情報と言った機微情報を扱うとき、travis-cliの travis encrypt-file というコマンドを使うとTr…

MySQLにパスワードポリシーで怒られるときの回避策

MySQL5.7.8以降で、ゆるいパスワードでユーザを作成しようとした際に下記のようなエラーで怒られる mysql> create user "user_name"@"localhost" identified by "some_weak_password"; ERROR 1819 (HY000): Your password does not satisfy the current poli…