ブログタイトル変えました
どうもちゃんしげです。CHANSHIGELOG にしてみました。CHANGELOGっぽい。
3月から全くブログを書いていなかったので、ここ最近の出来事をざっくりと。
- 4月:東京出張(親会社の開発チームと顔合わせ&仲良しになる会)
- 5月:Amazon Payと再度仲良くなる(仕事)
- 6月:PHPカンファレンス福岡に参加!・セリーヌディオンの生歌を聴く(東京)
- 7月:PHPカンファレンス関西に参加!(初)・健康診断
といったかんじで、公私ともにPHPerの日々を送っております。
PHPカンファレンス福岡2018
PSR関連のセッションがあったのは個人的に嬉しかった。 今回はLog(PSR-3)だったけど、僕的に好きなPSR-7系の話もどこかで聞きた、、(登壇
今年も盛り上がりと場の雰囲気作りがすごくよかったです!運営スタッフの方々ありがとうございます。
PHPカンファレンス関西2018
名札にスキルとか好きなものをステッカー貼ってアピれるの良い!
PHPerKaigiから追っかけてた「続・SOLIDのってどんなふうに使うの?」の集大成をみることができてよかった。デザパタ大事ですよ!!!!!!
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜 - Speaker Deck
話の進め方が、センパイとコウハイくんの対話形式っていうのが親しみやすくて、面白い。日々の設計・実装(保守でも)ちょっとした意識だったり見方・捉え方を変えてみるっていうのは、やり続けたいと思いました。
PHPカンファレンス関西の会場であるグランフロント大阪
いつみてもイケてる。なぜかグランフロント好きなんだなー(ロゴも)
やっとチリチリいけた(人の回転よすぎて驚き)
トッピングありきであることを後で気づいたのでまた行く
セリーヌディオンすごすぎた、、最高。(10年ぶりの来日とのこと)
番外編:福岡・大濠公園近くの「炭焼きとりこ」美味しい
来月は今のところ福岡から出る予定はないけど、お盆だし実家帰ろうと思います。あとひきラーメン食べたいし
PHPerKaigi2018 いってきた @東京
3/9 - 3/10 に開催された記念すべき第一回目の PHPerKaigi 2018 に行ってきました!(遅)
僕は3/10(土曜)からの参加で、久しぶりの東京&練馬ってどこ?やばい楽しいという気持ちで望んだんですが、 率直に楽しかったし笑ったし、最高な1日を過ごすことができたと感じています。
個人的には、フレームワーク「BearSunday」の郡山さんのセッションを聴きたい!きっかけで参加を決めたんですが、 それも前職でお世話になったエンジニアの師匠がリスペクトをされていた方だというのもあったのでとても楽しみでした。
#phperkaigi でBEAR.Sundayの話をすることになりました。よろしくお願いします! https://t.co/Nkfmm6A5nQ
— BEAR.Sunday (@BEARSunday) 2018年2月3日
※ おぉ〜やばいやばいってなってました。
今回の参加で、僕が特に気になったタイトルは以下です!
SOLIDの原則ってどんなふうに使うの? - Speaker Deck
前職の師匠がちょくちょく仰ってたSOLIDの原則でしたが、例えがわかりやすくて理解度がさらに深まったと思います! 実際にやろうとするとなかなかうまくいかないなと思うんですが、良書読んだり、良いコード好きなアプローチを見て真似ることが大事かなと思いました。
Hackで作るマイクロフレームワーク - Speaker Deck
正直なところ、HHVM/Hackを全然チェックしていなかったので新鮮すぎました!!!!
Hackのstrictモードで男になれるらしいのでやってみたい
— chanshige (@chanshige) 2018年3月10日
男になるしかねーなっ!という気持ちです!!!!
BEAR.Sunday (2018) - Speaker Deck
コーディング・実装に対する考え方というところが本当にどハマりしてしまいました。 まだまだ理解は浅いですが、いろんなアプローチ方法(デザパタ等)を見る・取り込むことで深まる気がしています!
以下の様にメモ取ってたのですが、まだまとめられていないので改めて書こうかなって思います!
アプリケーション制約こそがフレームワーク それぞれのドメイン(DB・認証) -> ライブラリ アプリケーション全体にわたっての制約が"フレームワーク" DI: 疎結合とコーディングを可能にする、ソフトウェアデザインとパターンのセット 実装ではなく、インターフェースに対してプログラムをする 実装に対するプログラム ができてないソフトウェアとは? 密結合なソフトウェアでもユーザへの価値は提供できる -> get shit done. ただし、開発者としてメンテナンス性はどうか? 密結合している場合、再度工事が必要になってしまう。 ユーザーに新しい価値を届け続けるには、密結合のソフトウェアは向いてない 成功したソフトウェアは必ず変更し続ける コンセント:インターフェース インターフェースに対してコンポーネントを作る。 ドライヤー(例)以外の価値を届けることができる リスコフの置換原則 decoratorパターン compositeパターン NullObjectパターン adapterパターン インターフェースに対して依存しているだけ 抽象を使う。インターフェースは中身がない規格だけ。
僕のやっていきがさらに高まった瞬間でもあります (本家からのレスポンスがあああああ!)
— BEAR.Sunday (@BEARSunday) 2018年3月11日
また今回のPHPerKaigi2018ですが、03/24現在でYoutubeにセッションがあがっているようですので、 是非観ていただけたらと思います、、、!
PHPerなみなさま、こんばんは!🌟
— PHPerKaigi 2019 @3/29-31 (@phperkaigi) 2018年3月23日
前夜祭セッション、本編セッション、LTのトークをYoutubeにアップしました!
聞きたくて聞けなかったあの話も、もう一度聞きたいあの話も…。
思う存分聞いてください!👂✨ #phperkaigi
▼PHPerKaigi 2018 プレイリストhttps://t.co/nEs7HZB0i9
あとちょっとおもったのが、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}"'
whois検索のためのPHPライブラリを作ってみた
whoisは、ドメイン名の登録者などに関する情報をインターネット上で誰でも参照できるサービスで、ドメインを登録(取得)すると必ず設定・公開の義務がある情報です。
※ ドメイン取得業者(サービス)によっては、個人情報を公開したくないユーザー向けに、取得業者の情報を代わりに公開する"代理公開サービス"が用意されていることが多いですね。
そんなwhoisですが、ドメインのTLD(com, jp, tokyo etc..)ごとに検索できるサイトが分かれていることが多く、検索するためのサイトをGoogleで検索するみたいなことをやっていたので、気軽に検索できるように3年前から https://whoisproxy.info を運営しているのですが、以下気になることが出てきたので思い切って自前で作ってみました。
Dependencies for Net_Whois PHP 4.0.0 !!!!!!!!!!!!
whoisproxy.info は、僕がまだカスタマーサポート職の頃にPHPすらよく知らない状態で作ったサイトで、whoisコマンドが叩けるサーバ上にサイトを置いてshell_exec('whois example.com')
の結果を出すみたいな、割と危なっかしい実装をしていた記憶があります。笑
そんな淡い思い出もありますが、今回作ったものはこちらです!
以下を気にしつつやってみました。
というところで、これを使った検索サイトに作り変えていこうと思っています。 ちゃっかり、packagistにも登録してみましたよ。
※ これ間違ってるよ!こうしたほうがいいよ!などありましたら、ぜひご連絡ください!
それでは、なにかあったら書きます!
初めてPHPカンファレンス福岡に参加してきました #phpconfuk
約9ヶ月ぶりの更新となりました @chanshige です!
先日(2017/06/10)、福岡で開催された PHPカンファレンス福岡2017 へ初めて参加してきました。
福岡での開催は今回で3度目とのことで、以前からあることは知っていたのですが、 なかなか参加できずな感じで、、今回やっと参加できた感想は率直に めっちゃ面白かった です。
僕は、サポートからエンジニアに転職し1年半が経つ頃で、どのくらいPHPと仲良くなれているのか?だとか、 色々理解できているか?とか再確認できる場でもあり、色々な方のお話を聞いて交流もできてとても充実した1日でした。
そんな僕は、基本的にメイン会場(Fusic ホール)から動くことがなく(結果そうなってた) 以下のセッションをガン見してきました。
- PHP7で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計
- 新卒2年目がサービス開発の際に乗り越えた課題とその解法など
- 実践Action Domain Responder(GitHub)
- 僕達がやってきたレガシープロジェクトとの付き合い方
- 海外からのアクセスを制御する
- 1人から始める大規模 Web アプリケーションの言語バージョンアップ
- Progressive Web Apps + AMP = PWAMP for PHPer
- PHPerに覚えて欲しい日本語の重要性
- エラーと例外の再入門
- PHPでWebサーバ作ろう
- WHERE 1 =1
- カンファレンスのこちら側とあちら側
- ガラケーの世界
- SendGridで人生変わった
- バックエンドからのSEO対策 〜JSON-LDでのschema.org入門〜
- 〜わたしの外国語学習法〜 ← スライドを探しきれなかったのですが、英会話スクール行こうと思えました笑 海外も行きたい!!
- CakePHP3アプリを徹底チューニングしてみた
- クイズを支える技術2017
本当は一つずつ感想をババっと書いていきたいのですが、スライドを見つつ話を聴くに集中しすぎて、 メモを取ることを忘れていましたがしがし、心に刻んだのでちょいちょいどこかでアウトプットしてこうと思います!
やっぱりネットだけじゃ手に入らない情報だとか、ニュアンスだとか、実際に自分の目で見て聴いて実践したほうがいいと思ったし、 今後もどんどん色々なイベントに参加したいと思います!!
最後に、PHPカンファレンス運営者の方々、登壇者の皆様、楽しい1日をありがとうございました! 朝のスポンサー様紹介からすごく丁寧で、初参加な僕でも居心地よくて雰囲気作りがすごいなと感じました。
来年も参加するぞー!福岡ー!
macOS Sierra のインストールUSBをつくる
9月21日にリリースされたmacOS Sierra。
やっぱり"新しい"ものは使いたいという事でアップデートする。
ただ普通にアップデートするより、中身をまるっと綺麗にして、
改めてインストールしてみたほうがよさそうな気がしている僕なので、
そのためのUSB起動ディスクを作ってみたので記録
では早速、
今使ってるMacのAppStoreから macOS Sierra を入手する。
ダウンロード後、自動的に起動するインストーラーは一旦閉じておく。
OSを入れるUSBをMacにつなぐ。
MacBook は USB-Cってやつでこんなアダプタ付けないと刺さらない
この辺ちょっと不便だな〜
USBの中身をフォーマットする。
アプリケーション>ユーティリティ>ディスクユーティリティを使う。
完全にインストールディスクとなるので、使ってないUSBにする。
そして、名前は判り易いように"Sierra"と名付ける
フォーマット後、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で、デスクトップにこれが出現
ここまで完了したら、USBを刺したままMacを終了させて、
[option]キー を押しながら起動すると、どのディスクを使って起動するか
選択が出てくるので、[Install macOS Sierra]の方を選択してください。
そうすると、ユーティリティが表示されるので、
ハードディスクのフォーマットを行ってから、再インストールすれば、
クリーンインストール完了!になります。
注意!現時点(2016/09/24)で、本作業手順はMacの公式手順になっておりません。
Mavericks時代からある方法なのでいずれ出るかもしれませんが、作業をされる際は必ず、
必要なデータのバックアップを行ってから、お試しくださいね!!!
ちなみに僕が使ってるMac はMacBook Early2016で、
あまり良い話を聞かないんだけど、僕の印象としては軽くて持ち運び便利だし、
爆速!ではないけどゲキ重!でもない"普通にいいやつ"です。
また何かあったら書きます!
音楽ストリーミングサーバを構築する
僕の音楽ライブラリをいつでも引き出せるように、
サーバ上で管理するための記録。
SSLが安心するので、無料の Let's Encrypt で証明書つくる。
- さくらのVPS (1G SSD:30GB)を利用
CentOS Linux release 7.2.1511 (Core)
Server version: Apache/2.4.6 (CentOS)
事前に git wget を入れておく# yum install git wget
SELinuxはdisabledにする。 (面倒だから。。。
サブドメイン「hoge.hogehoge.hoge」を例にしています(ホゲホゲ
SuperSonicをインストール
リポジトリを追加
# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
こちらも追加
# yum install http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
必要なライブラリ群を追加
# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel # yum install ffmpeg flac faad2 lame vorbis-tools rpmlint # yum install rpm-build
SuperSonicを取得
# mkdir /usr/local/src/supersonic # cd /usr/local/src/supersonic # git clone https://github.com/Mach5/supersonic.git
# cd /usr/local/src/supersonic # wget http://ftp.jaist.ac.jp/pub/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz # tar zxvf apache-maven-3.3.3-bin.tar.gz
デプロイ(割と待つ)
# cd supersonic # export PATH=$PATH:/usr/local/src/supersonic/apache-maven-3.3.3/bin # mvn -P full -pl subsonic-booter -am install # mvn -P full -pl subsonic-main -am install # mvn -P full -pl subsonic-installer-rpm -am install
インストールと自動起動設定
# cd subsonic-installer-rpm/target # rpm -ivh supersonic-4.7.beta1.rpm #インストール # /sbin/chkconfig supersonic on #自動起動設定
http://mydomain:4040 でアクセス。 ※ 4040ポートを開けないとだめ 今回はSSL接続にしたいのでポート開放は割愛。
Let's Encrypt を導入するぞ
Let’s Encrypt のクライアントは GitHub で公開されている。 事前に openssl, mod_ssl をいれておく。
# yum install openssl mod_ssl
Let’s EncryptをGitHubから取得。今回はこの場所におく
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt #/user/local/letsencrypt ができる
Let’s Encrypt のパッケージをインストール
# cd letsencrypt # ./letsencrypt-auto --help
証明書発行
# ./letsencrypt-auto certonly \ --standalone -d {証明書を発行したいURL hoge.hogehoge.hoge} \ -m {hoge@hogehoge.hoge}
# firewall-cmd --permanent --add-port 443/tcp (# firewall-cmd --permanent --add-service=https) #こちらでも良い # firewall-cmd --reload # systemctl restart firewalld.service # 再起動 # firewall-cmd --list-all # firewallの状態を確認
ssl.confまたは、VirtualHost用のconfファイルがあればそちらにSSL証明書の設定をする
<VirtualHost *:443> ServerName hoge.hogehoge.hoge SSLEngine on SSLProxyEngine on ProxyPass / http://{YourServerName}:4040/ retry=0 timeout=5 ProxyPassReverse / http://{YourServerName}:4040/ SSLCertificateFile /etc/letsencrypt/live/hoge.hogehoge.hoge/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/hoge.hogehoge.hoge/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/hoge.hogehoge.hoge/chain.pem ErrorLog /var/log/sslvirtual_error_log_supersonic CustomLog /var/log/sslvirtual_access_log_supersonic combined env=!no_log </VirtualHost>
Let's Encryptは90日しか持たない&Port80をListenしている場合、Apache停止が必要なので、 一連の作業をcron設定し、サーバリロードする。
00 05 01 * * /bin/systemctl stop httpd && /usr/local/letsencrypt/letsencrypt-auto certonly --standalone -d {証明書を発行したいURL hoge.hogehoge.hoge} -m {hoge@hogehoge.hoge} && /bin/systemctl start httpd
これで快適なミュージックライフを送れる気がする
参考サイト
この作業を行う上で、超参考になりました。感謝