chanshige blog

いろんなこと

PHPerKaigi2018 いってきた @東京

3/9 - 3/10 に開催された記念すべき第一回目の PHPerKaigi 2018 に行ってきました!(遅)

phperkaigi.jp

僕は3/10(土曜)からの参加で、久しぶりの東京&練馬ってどこ?やばい楽しいという気持ちで望んだんですが、 率直に楽しかったし笑ったし、最高な1日を過ごすことができたと感じています。

個人的には、フレームワークBearSunday」の郡山さんのセッションを聴きたい!きっかけで参加を決めたんですが、 それも前職でお世話になったエンジニアの師匠がリスペクトをされていた方だというのもあったのでとても楽しみでした。

※ おぉ〜やばいやばいってなってました。

今回の参加で、僕が特に気になったタイトルは以下です!

SOLIDの原則ってどんなふうに使うの? // Speaker Deck

前職の師匠がちょくちょく仰ってたSOLIDの原則でしたが、例えがわかりやすくて理解度がさらに深まったと思います! 実際にやろうとするとなかなかうまくいかないなと思うんですが、良書読んだり、良いコード好きなアプローチを見て真似ることが大事かなと思いました。

Hackで作るマイクロフレームワーク // Speaker Deck

正直なところ、HHVM/Hackを全然チェックしていなかったので新鮮すぎました!!!!

男になるしかねーなっ!という気持ちです!!!!

BEAR.Sunday (2018) // Speaker Deck

コーディング・実装に対する考え方というところが本当にどハマりしてしまいました。 まだまだ理解は浅いですが、いろんなアプローチ方法(デザパタ等)を見る・取り込むことで深まる気がしています!

以下の様にメモ取ってたのですが、まだまとめられていないので改めて書こうかなって思います!

アプリケーション制約こそがフレームワーク
それぞれのドメイン(DB・認証) -> ライブラリ

アプリケーション全体にわたっての制約が"フレームワーク"

DI: 疎結合とコーディングを可能にする、ソフトウェアデザインとパターンのセット
実装ではなく、インターフェースに対してプログラムをする

実装に対するプログラム ができてないソフトウェアとは?

密結合なソフトウェアでもユーザへの価値は提供できる -> get shit done.
ただし、開発者としてメンテナンス性はどうか?
密結合している場合、再度工事が必要になってしまう。

ユーザーに新しい価値を届け続けるには、密結合のソフトウェアは向いてない
成功したソフトウェアは必ず変更し続ける

コンセント:インターフェース

インターフェースに対してコンポーネントを作る。
ドライヤー(例)以外の価値を届けることができる

リスコフの置換原則
decoratorパターン
compositeパターン
NullObjectパターン
adapterパターン

インターフェースに対して依存しているだけ
抽象を使う。インターフェースは中身がない規格だけ。

僕のやっていきがさらに高まった瞬間でもあります (本家からのレスポンスがあああああ!)

また今回のPHPerKaigi2018ですが、03/24現在でYoutubeにセッションがあがっているようですので、 是非観ていただけたらと思います、、、!

あとちょっとおもったのが、LaravelやcakePHPってやはり人気なのですね! やっぱ触っていかないとなっていう気持ちですが、僕はSymfony3(4)/Slim3 も結構好きなので、この好きをもっとアピールできるように鍛えていきたいと思います。

最後に

東京久しぶりに行ったんですよ!もう3年ぶりってぐらいだったんですけど、朝5時起きで福岡->東京(羽田)で着いたのが8:30過ぎで、 そこから京急->地下鉄?->練馬 だたんですが、結構遠いんですね!3/10オープニング間に合わなかったんです笑

結構ドタバタな1日でしたが、PHPerKaigi2018素直に楽しかったです!鳥貴族も行けたので満足です笑

なにかしらの形でしっかりアウトプットしていきたいと思いました!

次回はしっかり前乗りしていこうと思います2019!!!!!

スタッフの皆様ならびにスピーカーの方々本当にありがとうございました!!!

過去のアクセスログから特定のHTTPレスポンスコードが何件あるか調べたとき【メモ】

お仕事で xxxx-ymd.gz というように、日毎ローテートされた複数のログファイルから、特定のレスポンスコード(404,500,503とか)を持ってるレコードが何件あるかを調べることがあって、大量にファイルがあったので以下コマンドでやったんですが、なぜか wc -l のカウント数が合算されているようにみえたときがありました。

find . -type f -name "xxxx-*" |sort |xargs -t -n 1 -I% bash -c 'zcat % |awk "{if(\$9=={該当コード}) print \$0}"| wc -l'

長い!!!!

しかし、別の日にやると普通にファイルごとでカウントされた結果を吐いてる。謎!!!!!!! 見間違いならよいけど、ちょっと気になったので備忘録としてメモでした。

※とりあえずその日は別で思いついた以下で対応して終了でした。

ls |xargs -t -n 1 -I% sh -c 'zcat % |awk "BEGIN{count = 0} \$9=={当該} {count = count+1} END{print count}"'

Dockerでsystemctlすると怒られた

コンテナ内でサービスを起動しようとするとこうなった。

# systemctl start httpd.service
Failed to get D-Bus connection: Operation not permitted

であれば、 --privileged という特権を与えて /sbin/init でrunすればOKだった。

% docker run --privileged -d -p 8080:80 --name sv01 centos /sbin/init
% docker exec -it sv01 /bin/bash

ただ、--privileged はやばそうなオプションだし、もっと違う方法がありそう。

Dockerのイメージとしては、httpd単体で使うこと(1コンテナ=1プロセス)がそれっぽいし、上だとリソース食い散らかしそうだけど、さっと立ち上げて使って捨ててレベルなら便利だなと思いました!

AirPodsすごいかもしれない

最近、昔より音楽聴かなくなってきたなーと感じている。

昔はやたらCDを買い漁ってたし、レコードにも手を出して飽きてとか、 そんなこともありましたが、今やAppleMusic や Spotifyのように、 インターネットでどうにでもなっちゃう時代になっていて、 手にとって音楽を感じることが減ったとおもった。

(僕は “Spotify” を契約しています。インターネットありがとう!!!!)

そんなことを思いながら、家にはイヤホンがその辺に置いてあるんですけど、 iPhone7から、3.5mmのイヤホンジャックがなくなったせいで、 聴く時間がかなり減ったんです。(lighteningのイヤホンなんかでかい)

そんなときにAirPodsという耳から白い棒が出てるようにみえるBluetoothのイヤホンがでて、 全く期待もなく、物欲もなかったので結構な期間スルーしてたんですが、この前ヤマダ電機に行ったらあったんです。(在庫が)

コレが。

AppleStoreじゃ発送まで6週間とか、相当人気じゃん!みたいな(今は2〜3週間?)印象が強かったので気づいたら買ってたんですが、使ってみる意外と"イイ"んです。 無線だから絡まることもないし、音も悪くない、操作のタイムラグも気にならない。さすがアップル製品。

おかげで、通勤時やちょっとした時間でも聴くようになって、なんか嬉しい!!音楽でテンションは結構変わる。

ただ、手元でボリューム操作ができないのは辛いなとおもいました。

Siriに"ボリューム40%にして" と頼むのなんて、街のど真ん中ではちょい恥ずかしさがある!! 電車の中だと更にハードルが高くなるお願いですね。

割と"モノ"に左右されまくってますが、何きっかけでもいいと思うので、たくさん聴いていきたいと思いました!

whois検索のためのPHPライブラリを作ってみた

whoisは、ドメイン名の登録者などに関する情報をインターネット上で誰でも参照できるサービスで、ドメインを登録(取得)すると必ず設定・公開の義務がある情報です。

ドメイン取得業者(サービス)によっては、個人情報を公開したくないユーザー向けに、
 取得業者の情報を代わりに公開する"代理公開サービス"が用意されていることが多いですね。

そんなwhoisですが、ドメインTLD(com, jp, tokyo etc..)ごとに検索できるサイトが分かれていることが多く、検索するためのサイトをGoogleで検索するみたいなことをやっていたので、気軽に検索できるように3年前から https://whoisproxy.info を運営しているのですが、以下気になることが出てきたので思い切って自前で作ってみました。

  • whoisproxy.info は PEARのNet_Whois を使っている
  • Net_Whoisの更新が数年ない (Current Release : 2011-08-10 )
  • 超ライトに使いたいが、自分好みなwhoisライブラリが無い

github.com

Dependencies for Net_Whois PHP 4.0.0 !!!!!!!!!!!!

whoisproxy.info は、僕がまだカスタマーサポート職の頃にPHPすらよく知らない状態で作ったサイトで、whoisコマンドが叩けるサーバ上にサイトを置いて shell_exec('whois example.com') の結果を出すみたいな、割と危なっかしい実装をしていた記憶があります。笑

そんな淡い思い出もありますが、今回作ったものはこちらです!

github.com

以下を気にしつつやってみました。

  • シンプル
  • tldwhoisサーバ名と検索対象ドメインをセット出来ればいい
  • へんな加工なしで、そのままのレスポンスを受け取りたい

というところで、これを使った検索サイトに作り変えていこうと思っています。 ちゃっかり、packagistにも登録してみましたよ。

packagist.org

※ これ間違ってるよ!こうしたほうがいいよ!などありましたら、ぜひご連絡ください!

それでは、なにかあったら書きます!

[追記] 2017/09/20 chanshige/whois リポジトリを新しくしました!

初めてPHPカンファレンス福岡に参加してきました #phpconfuk

約9ヶ月ぶりの更新となりました @chanshige です!

先日(2017/06/10)、福岡で開催された PHPカンファレンス福岡2017 へ初めて参加してきました。

福岡での開催は今回で3度目とのことで、以前からあることは知っていたのですが、 なかなか参加できずな感じで、、今回やっと参加できた感想は率直に めっちゃ面白かった です。

僕は、サポートからエンジニアに転職し1年半が経つ頃で、どのくらいPHPと仲良くなれているのか?だとか、 色々理解できているか?とか再確認できる場でもあり、色々な方のお話を聞いて交流もできてとても充実した1日でした。

そんな僕は、基本的にメイン会場(Fusic ホール)から動くことがなく(結果そうなってた) 以下のセッションをガン見してきました。

本当は一つずつ感想をババっと書いていきたいのですが、スライドを見つつ話を聴くに集中しすぎて、 メモを取ることを忘れていましたがしがし、心に刻んだのでちょいちょいどこかでアウトプットしてこうと思います!

やっぱりネットだけじゃ手に入らない情報だとか、ニュアンスだとか、実際に自分の目で見て聴いて実践したほうがいいと思ったし、 今後もどんどん色々なイベントに参加したいと思います!!

最後に、PHPカンファレンス運営者の方々、登壇者の皆様、楽しい1日をありがとうございました! 朝のスポンサー様紹介からすごく丁寧で、初参加な僕でも居心地よくて雰囲気作りがすごいなと感じました。

来年も参加するぞー!福岡ー!

macOS Sierra のインストールUSBをつくる

9月21日にリリースされたmacOS Sierra。
やっぱり"新しい"ものは使いたいという事でアップデートする。

ただ普通にアップデートするより、中身をまるっと綺麗にして、 改めてインストールしてみたほうがよさそうな気がしている僕なので、 そのためのUSB起動ディスクを作ってみたので記録

では早速、

今使ってるMacのAppStoreから macOS Sierra を入手する。

f:id:tanakashigeki:20160924180833p:plain

ダウンロード後、自動的に起動するインストーラーは一旦閉じておく。

f:id:tanakashigeki:20160924180840p:plain

OSを入れるUSBをMacにつなぐ。

MacBook は USB-Cってやつでこんなアダプタ付けないと刺さらない
この辺ちょっと不便だな〜
f:id:tanakashigeki:20160924182250j:plain

USBの中身をフォーマットする。

アプリケーション>ユーティリティ>ディスクユーティリティを使う。
完全にインストールディスクとなるので、使ってないUSBにする。
そして、名前は判り易いように"Sierra"と名付ける f:id:tanakashigeki:20160924182648p:plain

フォーマット後、USBを Sierra の起動ディスクにする

ターミナルを起動して、以下コマンドをたたく

sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ Sierra.app

--volume /Volumes/Sierra USBのマウント先のパスですね
createinstallmedia というコマンドをつかって、--volume とか --applicationpath なオプションを使うとぺろりと出来る様子

コマンドを叩くとこんな感じで進む

shigeki@Shigeki-MacBook ~ % sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ Sierra.app
Password:
Ready to start.
To continue we need to erase the disk at /Volumes/Sierra.
If you wish to continue type (Y) then press return: y
Erasing Disk: 0%... 10%... 20%... 30%...100%...
Copying installer files to disk...
Copy complete.
Making disk bootable...
Copying boot files...
Copy complete.
Done.

Done. ってなったらOKで、デスクトップにこれが出現

f:id:tanakashigeki:20160924184440p:plain

ここまで完了したら、USBを刺したままMacを終了させて、
[option]キー を押しながら起動すると、どのディスクを使って起動するか
選択が出てくるので、[Install macOS Sierra]の方を選択してください。

そうすると、ユーティリティが表示されるので、
ハードディスクのフォーマットを行ってから、再インストールすれば、
クリーンインストール完了!になります。

注意!現時点(2016/09/24)で、本作業手順はMacの公式手順になっておりません。
Mavericks時代からある方法なのでいずれ出るかもしれませんが、作業をされる際は必ず、
必要なデータのバックアップを行ってから、お試しくださいね!!!

ちなみに僕が使ってるMacMacBook Early2016で、 あまり良い話を聞かないんだけど、僕の印象としては軽くて持ち運び便利だし、 爆速!ではないけどゲキ重!でもない"普通にいいやつ"です。
また何かあったら書きます!