タグ

ブックマーク / brtriver.hatenadiary.org (42)

  • Symfonyの歴史を振り返ってみる - ぷぎがぽぎ

    こんにちは。Symfony Advent Calender 2019 の 7日目です。 (すでに8日目になってしまいましたが気にせず書いていきます。) 昨日は 【初心者向け】よく使うSymfonyコマンド集でした。自分がよく使うコマンドは debug:router かな。コマンド多くて便利なところは Symfony の特徴ですよね。 自分がSymfonyと関わりはじめてから約12年ぐらいたちました。 今日は Symfony の懐かしい思い出話をしてみたいと思います。 connect.symfony.com Symfony は symfony だった 2007年1月。symfony1がリリースされました。 2系からは大文字になりましたが、1系のころはsymfonyと小文字でしたね。そんなsymfonyを初めてしった理由はその当時の所属していた会社で使っていた共通のフレームワークはMojavi

    Symfonyの歴史を振り返ってみる - ぷぎがぽぎ
    brtRiver
    brtRiver 2019/12/08
    ポエム書いた “ ちなみにsymfonyはPHP5用MojaviであるMojavi3のforkとしてスタートしたことを知ってる人は少ないですよね。 ”
  • 管理画面に汎用的で便利すぎる機能追加はもしかすると危険かもしれない - ぷぎがぽぎ

    以前、PHPカンファレンスで運用しやすい気づける管理画面という発表*1しましたが、今もこの考え方を大事にしながら日々サービスの運用、開発をしています。 その中で、最近思ったことがあったのを社内kibelaにポエムってあったのですが、普通に公開できる内容だったのでここにちょっと加筆して投下しておきます。 サービスに大きく影響与えるような大事な情報ってありますよね。たとえば広告配信サービスだと広告の単価設定です。そのような項目の設定作業を画面からぽちぽち1つずつ変更するのは大変なのでCSVで一括で変更できる機能をいい感じに開発すると喜ばれるという場面は管理画面を開発している人にはよくある話だと思います。そして、「この項目も設定できるようにしたい」という声がでてきて、CSVからいろんな項目が設定できる便利機能へと発展していったりすることも。 しかし人間はミスをするものです。一括変更のため変更され

    管理画面に汎用的で便利すぎる機能追加はもしかすると危険かもしれない - ぷぎがぽぎ
    brtRiver
    brtRiver 2019/07/30
  • シンプルな PHP7マイクロフレームワーク Karen - ぷぎがぽぎ

    この記事は PHP7 で PSR-7 と Middleware を使うマイクロフレームワークを書いてみた の続編です。 コードは https://github.com/brtriver/karen 前回までの記事の流れをざっくりと書くと Slim3 が PSR-7 と Middleware を採用していたので、PHP7の無名クラスを使ってみた もっと薄いものほが欲しくなり PHP7で PSR-7 と Middleware を使ったマイクロフレームワークを作ってみた(Karen v0.1) ただ、薄く作りすぎてエンドポイントのコードに色々書かなくてはならなくなって、それは見通しが悪くなったのでもう少し整理しがっつり書いてみた(v0.2) Karen を使ったコード 解説はあとでやりますが <?php $app = new YourFramework(); // Karenアプリケーションを拡

    シンプルな PHP7マイクロフレームワーク Karen - ぷぎがぽぎ
    brtRiver
    brtRiver 2016/01/06
    ajitingでお酒ののみながら書いた。(自己満足
  • PHP7 で PSR-7 と Middleware を使うマイクロフレームワークを書いてみた - ぷぎがぽぎ

    コードはこちら。https://github.com/brtriver/karen [追記] この記事に書いてあるコードからさらに改良加えてApplicationレイヤーを作りました(v0.2) 詳しくはこっちの記事を参照をば http://d.hatena.ne.jp/brtRiver/20160106/karen_framework この記事の時点のコード(v0.1)を見たい場合は https://github.com/brtriver/karen/tree/v0.1.3 からどうぞ。 なにこれ? PSR-7が用意されてからコンポーネントを色々好きなのを選択できる時代が来つつあります。 たとえばzend-expressiveとか。 ただフレームワークががんばってこれらを抽象化しようとしてるのですが、もっとシンプルでもいいなぁと。 というわけで、コンポーネントをむき出しにして、ざぁーっと

    PHP7 で PSR-7 と Middleware を使うマイクロフレームワークを書いてみた - ぷぎがぽぎ
    brtRiver
    brtRiver 2016/01/03
  • 無名クラス(PHP7)をマイクロフレームワークで使ってみた - ぷぎがぽぎ

    PHP7からは無名クラスが使えるようになりました。 どういった場合に無名関数を使う機会があるかなぁと考えていると、ふとマイクロフレームワークの無名関数部分の代わりに使うと良いんじゃないかと思いやってみましたというのがこの記事。 [追記] 実際にSlim3 のアプリで使えるようにcomposerでインストールできるようにコードを整理しなおして用意してみた。 Slim3 ではなく、もっと薄いPHP7フレームワークを書き始めてみた記事はこっち。 無名関数 vs 無名クラス また、PSR-7でリクエストとレスポンスのインターフェースが決められ、それに従ったフレームワークやミドルウェアが出てきています。そこで、PSR-7 のサポートをした Slim3 と PHP7 試してみます。 まずは、Slim3 のドキュメント通りに Hello World すると: <?php use \Psr\Http\Me

    無名クラス(PHP7)をマイクロフレームワークで使ってみた - ぷぎがぽぎ
    brtRiver
    brtRiver 2016/01/01
  • Loggerクラスをテストのたびにmockを用意しなくて済むための工夫 - ぷぎがぽぎ

    この記事は、Symfonyアドベントカレンダー2015の19日目の記事です。でも今日は20日ですね。(ごめんなさい。。忘れてました。。 18日はnaoyesさんのSymfonyプロジェクトのテストにCodeceptionを使ってみるでした。 今日は11/24 に開催された PHP BLT #1 でLTしてきた内容ですが、まだ発表内容をまとめていなかったので書きます。 Symfony では yaml でサービス構成の定義ができる Symfony で 何かサービスを作るとき、必要な外部サービスを次のようにyamlで定義することができ、DI コンポーネントによって hoge_manager が用意されます。 hoge_manager: class: HogeBundle\Service\HogeManager arguments: - @doctrine.orm.entity_manager -

    Loggerクラスをテストのたびにmockを用意しなくて済むための工夫 - ぷぎがぽぎ
    brtRiver
    brtRiver 2015/12/20
    19日分です。。ほんとごめんなさい。ごめんなさい。 #symfony_ja
  • 勉強会で発表するときに役立つ正しいマイクの扱い方 - ぷぎがぽぎ

    この記事はAdvent Calendar 2015 - VOYAGE GROUP 6日目の記事になります. こんにちは!社内で音響エンジニアしてる @brtriver です。 今日はPA*1屋さん的視点でマイクの正しい扱い方についてお話できればなと思い、アドベントカレンダーで書くことにしました。 IT関連では勉強会も多く開催されており、勉強会で発表される機会がある方も多いと思います。 そのときに普段利用しないけど使うことが多いのがマイクです。 でも、そのマイクも正しく使えずに損をしている方がチラホラ見受けられます。 正しく使えることで、発表内容をより参加者に聞こえやすくなり伝えたい事もより伝わると思います。 ある意味カラオケでも活用できるネタですが色々書いてみます。 やってはいけないことを覚えるだけ 正しい持ち方を覚えるよりは、やってはいけないこと覚えると自然と良い持ち方になるということで

    勉強会で発表するときに役立つ正しいマイクの扱い方 - ぷぎがぽぎ
    brtRiver
    brtRiver 2015/12/07
    あと、ワイヤレスマイクはマイク下部に送信機入ってるので下は握らない。マイクは真ん中持つ
  • #ajiting Advent Calendar 2日目 AJITOで音楽を楽しむためのメモ - ぷぎがぽぎ

    1日目 こんにちは。VOYAGE GROUPの社内Bar「AJITO」に関するAdvent Calendar 2日目です。 2日目は AJITO で音楽を楽しむ方法についてメモっておきます。 というのも、AJITOで飲むときにBGMがあると、ちょっとおしゃれな感じになったり、懐メロをテロ的に流して楽しんだりすることもできますよね! AJITO でスマホに入っている音楽を流す方法 AJITO には常設の音響機器があるので、それを使って流すだけです。 入り口にテーブルがあり、そこにミキサーやらマイクやらが配置されています。 この中に Bluetooth でペアリングすればスマホの音声出力を AJITO のスピーカーに繋ぐことができる BELKIN のレシーバーがあります お手持ちのスマホの Bluetoothを有効にして belkin とペアリングするだけです ペアリングができれば belki

    #ajiting Advent Calendar 2日目 AJITOで音楽を楽しむためのメモ - ぷぎがぽぎ
    brtRiver
    brtRiver 2015/12/02
    メモメモ。
  • phpcon 2015 で 「営業・運用を支える "気づける" 管理画面」で話します - ぷぎがぽぎ

    久しぶりに phpcon にスピーカーとして参加します。 http://phpcon.php.gr.jp/2015/ 場所はいつもの大田区産業プラザPiOですね。 ちなみに前回は2012年で 「フラットなPHPからフレームワークへ」でお話させていただきました http://www.slideshare.net/brtriver/php-14295877 で、今回話したいことをざっと書いておきます。 気付ける管理画面とは 現在 Zucks AdNetwork というスマホ向けアドネットワークのサービス開発を行っています。このサービスの管理画面部分のサーバーサイドは PHP で書かれていてそれなりに規模も大きくなってきています。 今回は、この管理画面の開発現場での実践している以下のようなことをお話できればと思っています。 営業、運用の声をどのように管理画面に反映していっているか、言われたままを

    phpcon 2015 で 「営業・運用を支える "気づける" 管理画面」で話します - ぷぎがぽぎ
    brtRiver
    brtRiver 2015/09/19
    がんばります
  • json_encode したらどーなるかクイズ - ぷぎがぽぎ

    突然ですが問題です。 <?php array_unique(array_merge([1,2,3],[4])); これの実行結果のprint_rはどうなるでしょうか? Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )簡単ですね。じゃあ、次は? <?php array_unique(array_merge([1,2,3],[2,3,4])); mergeした結果をuniqueするのだから... Array ( [0] => 1 [1] => 2 [2] => 3 [5] => 4 )index番号に違いがあります。valueは同じです。 これらを踏まえて、次のjson_encodeの結果はどうなるでしょう? <?php json_encode(array_unique(array_merge([1,2,3],[4]))); 簡単ですね。 [1,2,3

    json_encode したらどーなるかクイズ - ぷぎがぽぎ
    brtRiver
    brtRiver 2015/03/01
    メモ。
  • CRUDっぽいルーティングとアクションを追加できるTraitコントローラーを作ってみた - ぷぎがぽぎ

    管理画面で欲しいCRUD処理 いわゆる管理画面作ってると CRUDができるAdmin Gegeneratorっぽいものが欲しくなりますよね。 色々アプローチはあると思います。 テンプレートからひな形のコードを生成してしまう Generetor 方式 必要があれば直接編集したり、直接編集しない場合はカスケード機能みたいなものがあったり Symfony だと `generate:doctrine:crud` コマンドっぽいの ymlなどで定義を書けばDSLで管理画面っぽいCRUDをある程度好きにできる方式 SonataAdminBundle symfony1 のころにあった Admin Generator みたいなの そして、これらはWebアプリケーションフレームワークが標準で用意していたり、別途ライブラリ(バンドル)を入れたりすることで実現可能だったりします。 個人的に、完全generate

    CRUDっぽいルーティングとアクションを追加できるTraitコントローラーを作ってみた - ぷぎがぽぎ
    brtRiver
    brtRiver 2015/02/26
    #symfony_ja
  • monologでPHPのFatalエラーをログに残す - ぷぎがぽぎ

    この記事はSymfony Advent Calendar 2014の9日目の記事です。 昨日は おかぽんさんの SymfonyのDIを利用してMail送信クラスをインテグレーションテストする:コード編 でした Symfony のエラーハンドリングはとても優秀 (ただし2.4以降) Symfony は monolog が標準でバンドルされており、2.4からはエラーハンドリングをFWでとても良い感じにやってくれます。 Symfony 2.4以降の devで Noticeエラー たとえば、dev環境だと <?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Cont

    monologでPHPのFatalエラーをログに残す - ぷぎがぽぎ
    brtRiver
    brtRiver 2014/12/09
    Symfony Advent Calender 9日目 #symfony_ja
  • ミニ四駆よりも熱い ミニッツレーサーのススメ #vgadvent2014 - ぷぎがぽぎ

    この記事はVOYAGE GROUP エンジニアブログ Advent Calendar 2014の7日目の記事です。 こんにちは、VOYAGE GROUPの Zucks でスマホ広告配信サービス Zucks Ad Networkのエンジニアしている 前田 @brtriver です。 去年は簡単にPHPをmakeしてみた だったので、「今年は何をmakeするのですか?」と聞かれましたが、ミニッツレーサーについて語りたいと思います。 ミニッツレーサーとは 今年はミニ四駆が再ブームというニュースもあったぐらい、大人にミニ四駆が流行りました。 自分自身は小さい時はミニ四駆にもハマりましたが、それよりもラジコンが大好きでした。 ミニッツレーサーは一言でいうと「ちっちゃいラジコン」です。ミニ四駆が 1/32 なのに比べて ミニッツは 1/27 なので少し大きいですが、感覚的にはミニ四駆と同じぐらいです。

    ミニ四駆よりも熱い ミニッツレーサーのススメ #vgadvent2014 - ぷぎがぽぎ
    brtRiver
    brtRiver 2014/12/07
    VOYAGE GROUP の Advent Calendar 7日目
  • Hack で JSON返すシンプルなマイクロWebアプリケーションフレームワーク書いてみた - ぷぎがぽぎ

    [追記] PHPカンファレンスのUstのリンク追加 [追加] Hackの面白そうなところを追記 [追記] RouterをHackで書きなおした続編はこちら http://d.hatena.ne.jp/brtRiver/20141019/1413738340 久しぶりすぎるブログ更新ですね。。 Hack_(プログラミング言語) Hackは、Facebookにより開発されたプログラミング言語である。オープンソースとして公開されており、同社が開発したPHP実行環境のHipHop仮想マシン (HHVM) で動作する 前から気にはなっていましたが書いたことはなかった状態でした。 今年のPHPカンファレンスのust (HHVM + Hack == PHP++)を見ていて、Hack欲が高くなり触ってみないとわからないということで JSONを返すだけのいわゆるマイクロフレームワーク(Haku)を書いてみま

    Hack で JSON返すシンプルなマイクロWebアプリケーションフレームワーク書いてみた - ぷぎがぽぎ
    brtRiver
    brtRiver 2014/10/17
    ちょこっと追記
  • "PHP Fatal error: Allowed memory size of xxx" で落ちる前にできること - ぷぎがぽぎ

    PHP Advent Calendar 2013 - 7日目 昨日は@hidenorigotoさんのBeyond MVCでした。 今日は PHPあるある的な問題に対する対策について少しばかり書きたいと思います。 ※ 歯ブラシを持たせてみた *1 メモリ不足でよくやる対応 PHPで大量のデータを扱ったりすると、設定された利用可能な最大メモリ使用量を超えて PHP Fatal error: Allowed memory size of 524288330 bytes exhausted (tried to allocate 351 bytes) in ....というエラーが発生して対応に追われたことの経験がある人はかなり多いと思います。 そもそも環境のメモリに余裕があるならmemory_limitを調整してメモリの使用量を増やしたり あまり余裕がない場合は暫定的対応として、該当処理部分だけ <

    "PHP Fatal error: Allowed memory size of xxx" で落ちる前にできること - ぷぎがぽぎ
    brtRiver
    brtRiver 2013/12/07
    PHP Advent Calender 2013 - 7日目
  • 簡単にPHPをmakeしてみた #vgadvent2013 - ぷぎがぽぎ

    初めての方こんにちは!!いつもお世話になっている方こんにちは!! VOYAGE GROUP エンジニアブログ Advent Calendar 2013 の3日目担当の @brtriver です。 Zucks で広告配信システムのアレやコレをやってるエンジニアです。 冬と言えば鍋。そうPHPですね! 皆さんはどうやってPHPをmakeしてますか? yumやapt-getを使ってるという方も多いと思います。 今回は簡単なmake方法について紹介してみます。 適当な大きさで丸める まずは、軽量樹脂粘土を用意します。PHPなので、青と白があればとりあえず大丈夫ですね。 今回は目玉用に黒も用意してますが、なければマジックペンとかでも大丈夫です。 青は白と混ぜて良い感じの色にします。 じっくりと引き延ばしながらこねるこがコツです。 耳としっぽを作る できあがった青色粘土を適当に丸める。 体をmake

    簡単にPHPをmakeしてみた #vgadvent2013 - ぷぎがぽぎ
    brtRiver
    brtRiver 2013/12/03
  • Symfony 勉強会 #8 を開催しました - ぷぎがぽぎ

    5/25(土)に 半年ぶりとなる Symfony勉強会 #8 を VOYAGE GROUP のajitoにて開催しました。 参加者の方の感想などのブログも上がっています。私はスタッフ側として今回の勉強会を振り返りたいと思います。 Symfonyユーザー会として今回の勉強会の目標は "Symfonyを触ってみたい人にSymfonyの魅力を伝えつつ実際に触れてもらうこと"でした。 過去開催した勉強会はどちらかというと、色々詰め込みすぎて朝早くから夜遅くまでのスパルタワークショップになったりと準備するのも大変だったり、参加者の疲労感もかなりのものになっていました。 そして、回数を重ねて行くと内容もどんどん濃いものになってきました。 今後もできるだけ勉強会の間を開けずに小さく開催することができればということを考えて、Symfonyをなんとなく知ってて触ってみたい人を対象に午後から5時間程度での開催

    Symfony 勉強会 #8 を開催しました - ぷぎがぽぎ
    brtRiver
    brtRiver 2013/05/30
    書いた。 #symfony_ja
  • Symfony をしんふぉにゃん化 (2.3対応版) - ぷぎがぽぎ

    2年前にかいてたこの記事のアップデートです。 Symfony2のエラーページのカスタマイズ - ぷぎがぽぎ composerでインストールできるようになりました。 そして地味にまだリリースされていない2.3に対応すべくRC1で確認済みです。 ゆるふわ Symfony化 開発環境のエラーページ production環境でのエラーページ welcomeページは @tdakak さんが描いてくれたしんふぉにゃんがお出迎え 参照: https://twitter.com/tdakak/status/332021029830533120 デモページ welcomeページ右下には日語ドキュメントへのリンク付き composer でしんふぉにゃん化 あなたの Symfonyプロジェクトの composer.json に以下の1行を追加し composer.phar install するだけ "requ

    Symfony をしんふぉにゃん化 (2.3対応版) - ぷぎがぽぎ
    brtRiver
    brtRiver 2013/05/19
    composerでのインストールに対応した
  • Phalconでマイクロフレームワーク - ぷぎがぽぎ

    久しぶりにPHPのエクステンションで書かれた超高速フレームワークPhalconを見たら 公式ページが見やすくなってた バージョンが1.0.0になってた annotationリーダーのライブラリができてた(そしてPhlconで使える) Microというクラスがあり、マイクロフレームワーク風に書けるようになってた と、相変わらず斜め上まっしぐらな感じがします。 マイクロフレームワークはルーティングだけ欲しいのなら選択肢としてありなきがします。 Phalconのことだからオーバーヘッドも少ないでしょうし。 というわけでGWで遊んでみたい人のためのやってみよう記事。 Phalconをインストール たぶん一番難しいのはここだけ。 インストール方法: http://phalconphp.com/download 自分はmacのローカルに入れたので、以下のコマンドをぽちぽちたたいた。 $ git clo

    Phalconでマイクロフレームワーク - ぷぎがぽぎ
    brtRiver
    brtRiver 2013/05/04
    というわけで、せっかくなので試した内容をまとめた
  • downコマンドがなくupだけのDBマイグレーションツール Dbup - ぷぎがぽぎ

    ビー・バップ・ハイスクールって知ってますか? Dカップって大きいですよね? というわけで、超シンプルなDBマイグレーションツール Dbup を作ってみたので紹介。 Dbup http://brtriver.github.io/dbup/ 日語: http://brtriver.github.io/dbup/ja/ インストールから実行までのデモンストレーション dbup.pharをダウンロード 必要なディレクトリや設定ファイルを作成 statusで確認しつつ、upで実行 dbup demo from brtriver on Vimeo. 特徴 準備はdbup.pharをダウンロードするだけ up コマンドしかありません。down コマンドは存在しません マイグレーションの記述は親しみあるSQLそのままです。ORMやDSLを新しく覚える必要はありません PHP標準のPDOクラスを利用してい

    downコマンドがなくupだけのDBマイグレーションツール Dbup - ぷぎがぽぎ
    brtRiver
    brtRiver 2013/05/02
    ブログに書いた