記事

Goでmysqldumpツールをつくる

アプリケーション

概要このブログのDBバックアップを原始人のごとく手動でやっていたのでコマンド一発でバックアップをリモートからローカルにバックアップを取れるツールをgoでつくってみた。 パッケージ "net" ネットワークI/O、TCP/IP、UDP、ドメイン名前解決、Unixドメインソケットなどのインターフェースを提供してくれるやつ "time" 時間の計算や表示のため...

Golang MySQL ssh mysqldump

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

アプリケーション

概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。 Bridgeパターンとは機能拡張のためのスーパークラスと実装拡張のためのサブクラスを用意し、機能の橋渡しをするようなパターン。 実装<?php interface Connector { public function __construct(Converter $converter)...

GoF PHP デザインパターン ブリッジパターン

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

アプリケーション

概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。 Adaperパターンとは元となるクラスに修正を加えることなくインターフェースを変更することができるパターン。 異なるインターフェース間の互換性を調整するようなAdapterクラスを用意することで実現する。 実装<?php interface Bird { public function...

アダプターパターン GoF PHP デザインパターン

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

アプリケーション

概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。 Mediatorパターンとは仲介者・調停者の意味。 オブジェクトの振る舞いに関するデザインパターンで、オブジェクト間のやりとり調整するためのパターン。 オブジェクト同士のやり取りが複雑化し、関係性が見えにくくなるような時に有用かもしれない。 実装<?php // Mediator class...

PHP デザインパターン メディエーターパターン GoF

PHPカンファレンス仙台2019に参加した

ポエム

TL; DRPHPカンファレンス仙台2019に参加レポート。 テストが辛いを解決するテスト駆動のアプローチ テストが辛いを解決するテスト駆動開発のアプローチ at PHPカンファレンス仙台2019 違和感から設計判断 TDDのアプローチではなく、実装後にテストをかくアプローチだとテストの書きづらさを感じたときに設計に違和感を感じると思うが、TDDだとそのへんは慣れが必要だろうなぁと思った。...

PHP PHPカンファレンス

grep入門

コンピューターアーキテクチャ

概要grep雰囲気で使っているマンだったのでとざっくり調べてみた。l 基本grep 検索正規表現 ファイル名 ワイルドカードが使えるので、例えばカレントディレクトリ内の全ファイルを対象とした場合は、 grep "foo" ./* といった具合にできる。 カレントディレクトリ以下のディレクトリも対象にしたい場合は、-rオプションを使う。 grep -r "foo&quo...

Linux grep

コンテナ技術概要

インフラストラクチャ

概要コンテナ技術についてのまとめ。Dockerを使わずにコンテナをつくって触ってみる。 コンテナとは ホストOSからアプリケーションとランタイムをまとめて、分離した一連のプロセス。 コンテナの歴史1979年 UNIX OSにchrootが登場。 2000年 FreeBSD jailsがFreeBSD 4.0に登場。chrootの発展系。 2001年 VServer Projectを通じてLinu...

Docker libcontainer lxc lxd コンテナ

URLルーティングをつくる エピソード2

アルゴリズムとデータ構造

概要URLルーティングをつくる エピソード1の続き。 とりあえず動く形のものを仕上げてpackagist - ahi-routerという名前でパッケージ公開した。 エピソード1からの変更点エピソード1では、データ構造に木構造を採用してルーティングを作ろうというと試みた。 パフォーマンスが考慮されているライブラリでは、木構造を生成するロジックを用意して、最適化された探索アルゴリズムを実装するような形...

HTTP URLルーティング 木構造

URLルーティングをつくる エピソード1

アルゴリズムとデータ構造

URLルーティングをつくる エピソード1概要以前、Reactで非常に軟弱なルーティング(cf. ReactとHistory APIを使ってrouterを自作する)を作ったが、改めてそこそこにちゃんとしたルーティングを自作したいと思い、挑戦することにした。きっかけは、最近触っているGolangだ。Golangでは標準ライブラリを駆使することでアプリーケーションをうすーく実装できるようだが、ルーティン...

HTTP URLルーティング 木構造

PHPカンファレンス2018のLT枠で登壇してきた

ポエム

PHPカンファレンス2018「20代が考えるエンジニアキャリア論」というテーマでLTをしてきた。 昨年のPHPカンファレンス2017に引き続き、今年もLT枠で登壇することができてよかったが、来年度こそは25分枠で採択されたい。 PHPカンファレンス参加歴は今年で3回目となるが、毎度PHPのコミュニュティの良さを感じる。 昨年度のPHPカンファレンスから一度も登壇していなかったこともあって、このカン...

PHPカンファレンス キャリア