モヒカンは正義

プログラマー風林火山で言う「風のエンジニア」になりたい(比較的)若者Webエンジニアの備忘録

エンジニアリング

Makefileを使ってcomposerをスマートにダウンロードする

やりたいこと composerをダウンロードしたい 繰り返し実行できるように、composerが既にDL済みのときは何もしたくない (毎回DLするのは無駄なのでやりたくない) やりたいことを叶えるMakefile .PHONY: setup setup: composer.phar # ここにアプリケーション…

IntelliJに "ext-json is missing in composer.json" って怒られた

背景 phpプラグインを有効にしているJetBrains IntelliJで、とあるphp拡張を利用した実装をしたとき下記のような警告がでた ext-json is missing in composer.json 「ext-jsonって確か組み込みモジュールだよなー。足りないはずはないし、なんで警告でるねん…

ブログをSSL対応させましたッ

時代はフルSSLなので追従しました staff.hatenablog.com SSL化してURL Schemeが変わるとソーシャルブックマークが(はてなブックマーク以外は)リセットされるし、Google Search ConsoleやAnalyticsの設定変更なども必要になってvery 面倒なので腰が重く、着…

LumenでCache DriverにRedisを使う

Laravelベースなマイクロフレーム LumenでキャッシュドライバとしてRedisを使おうとしていくつかハマったのでメモ (改めて公式ドキュメントみたら大体書いてたw)。 必要なこと Redisを使えるようにする Redisサーバの用意 (割愛) .env に REDIS_ 系環境変数…

#isucon8 予選参加して、無事爆死してきたンゴ

Iikanjini Speed Up Contestへ人生2回目の参加をして、無事爆死してきました ▼ チームメンバー がんばるぞ〜!起床に成功したので、今のところ優勝ペース#isucon #isucon8— 寝具突撃部隊 寝無理隊 (@pinkumohikan) September 15, 2018 予選おつかれさまでし…

名前をつけてgit stashする

gitには、今作業中なんだけどすぐに別の作業したくなって一時的に変更を退避させたいんだよねーという時に使える git stash という便利コマンドがあります。 gitを使い始めて6年ぐらいの先日、stashに名前をつけられることを知りました (厳密には名前じゃあ…

インスタンスが再起動するとホスト名の設定がリセットされる原因と対策

症状 ConoHa のVPSで /etc/hostname へホスト名を書いても、インスタンスが再起動すると初期値へ戻っている。 原因 インスタンスの初期化に使われている cloud-init というソフトウェアの「ホスト名を変更する機能」が有効になっているため。 なので、ConoHa…

AlpineLinuxでdigコマンドを使えるようにする

Dockerイメージを作る際のベースイメージとしてよく使われるOSに AlpineLinux がある。超軽量なのが特徴で、イメージサイズはわずか4MByte強!参考までに、CentOS7.4のイメージは約200MBある。 $ docker images alpine REPOSITORY TAG IMAGE ID CREATED SIZE…

CircleCI: docker_layer_cachingを有効にしてdocker buildでキャッシュを効かせる

CircleCIでdocker buildする際、初期状態ではbuild cacheが無効になっている。documentを漁っていたら、オプションでbuild cacheを有効にできるようだったので試してみた。 By default, the Remote Docker Environment doesn’t provide layer caching, but y…

Laravel tinkerで、DBへつながっていることを確認する

Laravel tinkerからデータベースへつながっていること (SQLを発行出来る状態になっていること) を確認したい!そんなとき コマンド DB::select('select 1'); 実行するとこんな感じ >>> DB::select('select 1'); => [ {#2300 +"1": 1, }, ] 赤くハイライトさ…

プライベートプロダクトのpackage.jsonのlicenseフィールドには "license: UNLICENSED" と指定すればいいらしい

package.jsonのlicenseフィールドに何も指定しないと、下記のような警告が出てしまい目障りである warning package.json: No license field プライベートプロダクトでpackage managerとしてnpm / yarnを使っているだけで、publishしたりオープンソースにする…

2つの設定ファイルから空行やコメントを除いていい感じにdiffを表示するプチテクニック

▼ アイキャッチ画像は適当です ミドルウェアなどのバージョンアップやマイグレーションなどの際に、「今の設定ってデフォルトからどこがどう変わってるんだっけ?」って気になることありますよね? でも、単純に diff コマンドで差分を出すだけだと改行やコ…

dockerコンテナ内から /dev/stdout へ書き込もうとすると "Permission denied" になる

PHP Laravel 5.5系のアプリをdockerコンテナにして、所定のログファイルpathから /dev/stdout へのsymlinkを貼って動かしたところ Permission denied エラーが出た。原因を調べたところそれなりにめんどくさかったので調べたことをまとめておく。 症状 docke…

DockerHubのnginx:latestイメージでpsコマンド叩いたら「そんなもの無い」って言われたのでインストールする

背景 DockerHubにある nginx:latest イメージから起動したコンテナ内で ps を叩いたら root@de0ff7733246:/# ps bash: ps: command not found と言われてしまったので、インストールする インストール nginx:latest の Dockerfile をちら見してみたら、Debia…

PHP用HTTPクライアント「HTTP_Request2」をcomposerでinstallする

PHPで使える 古参 HTTPクライアント、 HTTP_Request2 をcomposerを使ってインストールする方法を紹介します。 今時composerを使っていないPHPプロジェクトなんて有るわけないですからね! pearライブラリをcomposerでinstallするには事前にリポジトリを追加…

/etc/cron.dへ置くファイルにはownerとpermissionに制約があるっぽい

crontabファイルを etc/cron.d へ置いても期待通り動かなかったことがあって調べたメモ まとめ /etc/cron.dへ置くファイルは ownerは、rootでなければならない permissionは、owner以外に書き込み権限があってはならない 検証 ownerがroot、かつowner以外のw…

Matz氏による「若手エンジニアの生存戦略」勉強会に行って来た #colab_matz

エンジニアにはお馴染みRubyのパパ、Matz氏による「若手エンジニアの生存戦略」勉強会に行って来た 講師: まつもとゆきひろ 提供: サポーターズ 特別協賛: Speee 会場提供: DRECOM ↑ 会場設営中の様子。素敵な空間でした!DRECOMさんありがとうございます! …

CentOSへaws-cliを入れようとしたらPython.h,pyconfig.hが無いって怒られた

CentOSへpipでaws-cliを入れようとしたら、下記のようなエラーが出た。 $ pip install aws Collecting aws Downloading aws-0.2.5.tar.gz ...snip... No package 'libffi' found c/_cffi_backend.c:2:20: 致命的エラー: Python.h: そのようなファイルやディ…

正規表現 "?:" の意味 #些細な検証メモ

正規表現って構文が色々あって、読むごとに学びがありますよね。 今回は “?:” っていう構文について調べたので、備忘録がてらメモっときます (写真は昨日の夜に行った 七志 とんこつ編 渋谷道玄坂店 です) 正規表現 “?:” の意味 MSDNによると、 (?:pattern) …

sudoコマンドをパスワードなしで使えるようにする

unix系OSには任意のユーザとしてコマンドを実行する sudo というコマンドがあります。 Linuxコマンド集 - 【 sudo 】指定したユーザーでコマンドを実行する:ITpro このコマンドは、一般ユーザでログインした状態でroot権限でコマンドを実行したいときに良く…

`set -e` していても `command1 || command2` みたいな書き方ができる #些細な検証メモ

ことのはじまり シェルスクリプトを書くときに set -e しますよね これをしておくとシェルスクリプトの途中でエラーが発生した場合に処理を中断してくれるので、ある処理が失敗したあと、意図せず後続の処理が動いて悲劇が起こるのを防いてくれます ところが…

PHPでマジックメソッド __toString 内で例外を投げるとfatalになる #PHPの不思議な世界

はじめに PHPは素敵な言語です。 ※ 「素敵」という表現は主観的なものであり、何を素敵と思うかは個々の自由である。そのため異論は一切認めない。 この #PHPの不思議な世界 という謎のタグの付いている記事は、職業プログラマーとしてPHPコードを書いていて…

MySQLのtimestamp型カラムにUTC1970年1月1日 00:00:00よりも前の日時を入れようとしてハマった

timestamp=0よりも前の日時をinsertしようとして怒られたときの備忘録 できごと いつものように怪しいWebアプリ作りに勤しんでいたら、とある怪しいWebアプリがエラーを吐いていた Next Illuminate\Database\QueryException: SQLSTATE[22007]: Invalid datet…

WordPressの予約投稿が仕事しなかったのでcronの設定をした

WordPressの予約投稿がきちんと動かずに、「投稿失敗」してしまったのでその原因調査と対応の備忘録を残しておく できごと WordPressでブログを構築して翌日公開の予約投稿を設定したが、時間になっても公開されなかった (記事が公開されるとJetPackのパブリ…