Post

2019-05-08 17:05:41

execコマンドによるリダイレクト

概要execコマンドは現在のプロセスを実行するコマンドで置き換えるコマンドだが、引数無しで使うとリダイレクトの動的変更ができる。 ちょうどmaster直プッシュの際にプロンプトで確認するようにするで #!/bin/sh exec < /dev/tty read ANSWER というコードが出てきてよくわからなかったので調べてみたのがきっかけ。 使い方#!/bin/sh echo "Output to stdout" // 標準入力 exec > redirect.txt // ファイルディスクリプタを変更 echo "Output to file" // ファイルに出力される...

プログラミング

bash shellscript exec

2019-05-08 17:04:11

master直プッシュの際にプロンプトで確認するようにする

概要gitでmasterブランチへの直pushを未然に防ぐためのセーフーティネットの作り方。github上でmasterブランチへのpushを禁止すれば良いのだが、DevOpsの都合上でgithubの設定では問題があったのでhooksを使う方向で設定した。 導入グローバルに設定したいので~/.git_template/hooks配下にpre-pushファイルを作成する。.git_templateディレクトリが存在しない場合は作成する。 なお、グローバルに設定しても既存のリポジトリには反映されないので、既存リポジトリに反映したい場合は既存リポジトリの./git/hooks配下にpre-pushを...

プログラミング

git shellscript

2019-04-28 14:59:08

dockerでイメージとコンテナを削除してもボリュームが消えていなかったときのメモ

概要dockerでコンテナとイメージを削除してもvolumeが削除されていなくてちょいちょい忘れてハマるのでメモっておく。 普段は、docker-composeを使っている。 docker-compose builddocker-compose up -d して、 docker rm **docker rmi ** という感じにお片付けしているのだが、どうやらマウントしているvolumeを削除するオプションがあったらしい。 対応ボリュームが残っているか確認。docker volume ls docker volume rm ** 余談docker-composeでdocker-compose....

インフラ

Docker docker-compose

2019-04-21 00:05:50

PHPで学ぶデザインパターン - Stateパターン

概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。 Stateパターンとは状態をクラスで用意することで振る舞いを切り替えることができるようなパターン。 実装スイッチのオンオフの状態を切り替えるような例を想定した。シングルトンを使ったほうが良い気がする。 <?php class OnState { public function getState() { return 'ON'; } public function getNextState() { return ne...

プログラミング

GoF php デザインパターン State

2019-04-20 14:24:47

ゴリラで学ぶソフトウェアの法則10選

概要以前書いたソフトウェア開発の法則 の雑メモをベースにLTをしたのでスライド内容を補足する形でまとめる。 スライドは↓ゴリラで学ぶソフトウェアの法則10選 ゴリラで学ぶには無理があったのでスクリプトを書き残しておく。 ソフトウェア開発の法則ソフトウェアの文脈で語られる法則に縛らず、他分野での法則でもソフトウェアに当てはまるであろうものを”ソフトウェア開発の法則”としている。 経験則に基づくものが多いが、経営工学だったり心理学だったり、はたまたどこかの論文だったり引用元は様々である。 パーキンソンの法則(第1原則)「仕事の量は、完成のために与えられた時間を全て満たすまで増大する」 有名ど...

プログラミング

ソフトウェア開発

2019-04-11 15:09:57

Realizeを使ってgoでホットリロードを実現するメモ

概要github - oxequa/realizeを使ってみたメモ。 準備go get github.com/oxequa/realize 使い方./demo/ ├── .realize.yaml └── main.go .realize.yaml settings: legacy: force: false interval: 0s schema: - name: demo path: . commands: run: status: true watcher: extensions: - go paths:...

プログラミング

go realize

2019-04-12 12:56:17

プログラマの数学

プログラマの数学 第1章 ゼロの物語 ―― 「ない」ものが「ある」ことの意味 第2章 論理 ―― trueとfalseの2分割 第3章 剰余 ―― 周期性とグループ分け 第4章 数学的帰納法 ―― 無数のドミノを倒すには 第5章 順列・組み合わせ ―― 数えないための法則 第6章 再帰 ―― 自分で自分を定義する 第7章 指数的な爆発 ―― 困難な問題との戦い 第8章 計算不可能な問題 ―― 数えられない数、プログラムできないプログラム 第9章 プログラマの数学とは ―― まとめにかえて 付録1:機械学習への第一歩 付録2:読書案内 第1章 ゼロの物語 ―― 「ない」ものが「ある」ことの意味...

数学

2019-04-01 12:42:52

PHPerKaigi2019に参加・登壇してきました

PHPerKaigi2019に参加・登壇してきましたPHPerKaigiに初参加&登壇してきました。 fortee - PHPでURLルーティングをつくるSpeaker Deck - PHPでURLルーティングをつくる 過去登壇した会場よりも客席が近い・スライドが大きい!で結構緊張しました... 登壇を終えてcfpを提出した段階ではまだネタが仕上がっていなくて実装を焦っていました..採択されてからは本番までそこそこの時間を準備に使っていて、ようやく荷が降りたなぁという気持ちになりました。充実したトークができたかどうか正直は自信はないのですが、登壇前後で良い声をいくつか頂いていて、自分としては非...

ポエム

php phpカンファレンス PHPerKaigi

2019-03-22 11:46:37

GoogleChromeでBurp Suiteを使う手順

概要Burp SuiteをChormeで使う際の諸々の設定について。脆弱性診断や対応時にburpをchromeで使えるようにしたかった。 環境Mac OS 準備 burpsuite chrome extension - proxy switchsharp 手順プロキシを設定するchrome extension - proxy switchsharpでProxy Profilesを設定する。 Profile NameをBurp(何でもよいがBurp用のプロキシ設定なのでBurpにしておく)Manual Configurationを選択して、HTTP Proxyに 127.0.0.1を設定、Po...

ツール

Burp Suite セキュリティ 脆弱性

2019-03-24 21:58:28

URLルーティングをつくる エピソード3(完結編)

概要URLルーティングをつくる エピソード1 とURLルーティングをつくる エピソード2 でURLルーティングの自作について試行錯誤の過程を記してきたが、ようやく一段落させることができたので完結編という形で締括くりたい。 完結、といっても課題はいくらでもあるし突き詰めるとこればっかりに時間をかけることができるようなモノであるということは承知している。。。 前回までの話しエピソード1 では、ルーティングのデータ構造を考えたり、とりあえず手を動かして実装のイメージを掴もうとした。(動くところまで持っていけなかった。。。) エピソード2では、データ構造を見直したり、参考になりそうなリポジトリを漁って...

プログラミング

php URLルーティング HTTP アルゴリズム 木構造