管理画面に汎用的で便利すぎる機能追加はもしかすると危険かもしれない

CSVアップロード一括編集機能って便利ですよね

シンプルな PHP7マイクロフレームワーク Karen

php

この記事は PHP7 で PSR-7 と Middleware を使うマイクロフレームワークを書いてみた の続編です。コードは https://github.com/brtriver/karen 前回までの記事の流れをざっくりと書くと Slim3 が PSR-7 と Middleware を採用していたので、PHP7の無名クラス…

PHP7 で PSR-7 と Middleware を使うマイクロフレームワークを書いてみた

php

コードはこちら。https://github.com/brtriver/karen[追記] この記事に書いてあるコードからさらに改良加えてApplicationレイヤーを作りました(v0.2) 詳しくはこっちの記事を参照をば http://d.hatena.ne.jp/brtRiver/20160106/karen_frameworkこの記事の時…

無名クラス(PHP7)をマイクロフレームワークで使ってみた

php

PHP7からは無名クラスが使えるようになりました。 どういった場合に無名関数を使う機会があるかなぁと考えていると、ふとマイクロフレームワークの無名関数部分の代わりに使うと良いんじゃないかと思いやってみましたというのがこの記事。[追記] 実際にSlim3…

Loggerクラスをテストのたびにmockを用意しなくて済むための工夫

この記事は、Symfonyアドベントカレンダー2015の19日目の記事です。でも今日は20日ですね。(ごめんなさい。。忘れてました。。18日はnaoyesさんのSymfonyプロジェクトのテストにCodeceptionを使ってみるでした。今日は11/24 に開催された PHP BLT #1 でLTし…

勉強会で発表するときに役立つ正しいマイクの扱い方

この記事はAdvent Calendar 2015 - VOYAGE GROUP 6日目の記事になります.こんにちは!社内で音響エンジニアしてる @brtriver です。 今日はPA*1屋さん的視点でマイクの正しい扱い方についてお話できればなと思い、アドベントカレンダーで書くことにしました…

#ajiting Advent Calendar 2日目 AJITOで音楽を楽しむためのメモ

1日目こんにちは。VOYAGE GROUPの社内Bar「AJITO」に関するAdvent Calendar 2日目です。 2日目は AJITO で音楽を楽しむ方法についてメモっておきます。 というのも、AJITOで飲むときにBGMがあると、ちょっとおしゃれな感じになったり、懐メロをテロ的に流し…

phpcon 2015 で 「営業・運用を支える "気づける" 管理画面」で話します

php

久しぶりに phpcon にスピーカーとして参加します。 http://phpcon.php.gr.jp/2015/ 場所はいつもの大田区産業プラザPiOですね。ちなみに前回は2012年で 「フラットなPHPからフレームワークへ」でお話させていただきました http://www.slideshare.net/brtriv…

json_encode したらどーなるかクイズ

php

突然ですが問題です。 1 [1] => 2 [2] => 3 [3] => 4 )簡単ですね。じゃあ、次は? 1 [1] => 2 [2] => 3 [5] => 4 )index番号に違いがあります。valueは同じです。これらを踏まえて、…

CRUDっぽいルーティングとアクションを追加できるTraitコントローラーを作ってみた

管理画面で欲しいCRUD処理 いわゆる管理画面作ってると CRUDができるAdmin Gegeneratorっぽいものが欲しくなりますよね。 色々アプローチはあると思います。 テンプレートからひな形のコードを生成してしまう Generetor 方式 必要があれば直接編集したり、直…

monologでPHPのFatalエラーをログに残す

この記事はSymfony Advent Calendar 2014の9日目の記事です。昨日は おかぽんさんの SymfonyのDIを利用してMail送信クラスをインテグレーションテストする:コード編 でした Symfony のエラーハンドリングはとても優秀 (ただし2.4以降) Symfony は monolog …

ミニ四駆よりも熱い ミニッツレーサーのススメ #vgadvent2014

この記事はVOYAGE GROUP エンジニアブログ Advent Calendar 2014の7日目の記事です。 こんにちは、VOYAGE GROUPの Zucks でスマホ広告配信サービス Zucks Ad Networkのエンジニアしている 前田 @brtriver です。去年は簡単にPHPをmakeしてみた だったので、…

Hack で JSON返すシンプルなマイクロWebアプリケーションフレームワーク書いてみた その(2)

この記事は前回の記事の続きです。Hakuのリポジトリはこちら 前回とりあえず書いてみたHackで書いたコードですが、 strictモードで hh_client check を通したい strictモードで書きたいが Aura.Router が PHP なので Strictモードの指定ができない 高負荷で…

Hack で JSON返すシンプルなマイクロWebアプリケーションフレームワーク書いてみた

[追記] PHPカンファレンスのUstのリンク追加 [追加] Hackの面白そうなところを追記 [追記] RouterをHackで書きなおした続編はこちら http://d.hatena.ne.jp/brtRiver/20141019/1413738340 久しぶりすぎるブログ更新ですね。。 Hack_(プログラミング言語) Hac…

GistをDB代わりにしてブログを作ってみた

Gistはほんと便利です。 Markdownで書いておけば、ブログの記事みたいにいつでも公開できるし、編集できるしと。だったらいっそのことAPIでGistの内容をとってきて、自分のブログっぽく表示できたら良いなと思って、AngularJS でやってみた。詳細については…

"PHP Fatal error: Allowed memory size of xxx" で落ちる前にできること

php

PHP Advent Calendar 2013 - 7日目昨日は@hidenorigotoさんのBeyond MVCでした。今日は PHPあるある的な問題に対する対策について少しばかり書きたいと思います。※ 歯ブラシを持たせてみた *1 メモリ不足でよくやる対応 PHPで大量のデータを扱ったりすると、…

簡単にPHPをmakeしてみた #vgadvent2013

php

初めての方こんにちは!!いつもお世話になっている方こんにちは!! VOYAGE GROUP エンジニアブログ Advent Calendar 2013 の3日目担当の @brtriver です。Zucks で広告配信システムのアレやコレをやってるエンジニアです。冬と言えば鍋。そうPHPですね! …

JSONのフォーマットを読みやすくする

たとえば、 {"name":"fabpot/silex-skeleton","description":"Apre-configuredskeletonfortheSilexmicroframework","license":"MIT","type":"project","require":{"php":">=5.3.3","silex/silex":"~1.0","silex/web-profiler":"~1.0","symfony/browser-kit":…

Symfony 勉強会 #8 を開催しました

5/25(土)に 半年ぶりとなる Symfony勉強会 #8 を VOYAGE GROUP のajitoにて開催しました。 参加者の方の感想などのブログも上がっています。私はスタッフ側として今回の勉強会を振り返りたいと思います。Symfonyユーザー会として今回の勉強会の目標は "Symfo…

Symfony をしんふぉにゃん化 (2.3対応版)

2年前にかいてたこの記事のアップデートです。 Symfony2のエラーページのカスタマイズ - ぷぎがぽぎ composerでインストールできるようになりました。 そして地味にまだリリースされていない2.3に対応すべくRC1で確認済みです。 ゆるふわ Symfony化 開発環境…

Phalconでマイクロフレームワーク

php

久しぶりにPHPのエクステンションで書かれた超高速フレームワークPhalconを見たら 公式ページが見やすくなってた バージョンが1.0.0になってた annotationリーダーのライブラリができてた(そしてPhlconで使える) Microというクラスがあり、マイクロフレーム…

downコマンドがなくupだけのDBマイグレーションツール Dbup

ビー・バップ・ハイスクールって知ってますか? Dカップって大きいですよね?というわけで、超シンプルなDBマイグレーションツール Dbup を作ってみたので紹介。 Dbup http://brtriver.github.io/dbup/ 日本語: http://brtriver.github.io/dbup/ja/ インスト…

[PHP] Hamcrestを利用した超シンプルdocコメントでのテスト方法

PHPでテストを書くというとPHPUnitがデファクトスタンダードで、次がSimpleTestでしょうか。 以前はインストールも大変でしたが、今となってはcomposer使えば楽ですし、実績もあります。 でも、本当にこの2択でPHPらしい開発ができていますか?たとえば、テ…

3分でできる俺PHPテスト環境

※この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2012の15日目の記事として書いてます。 3種の神器 PHPUnit, Stagehand_TestRunner, Phake 初めての方はじめまして。いつもの方こんにちは。 VOYAGE GROUP の adingo という会社で 広告配信に関…

Symfony を楽しむためのポイント - Symfony Advent Calender 2012 1日目 -

この記事は Symfony Advent Calender 2012 の1日目の記事です。 全体のカレンダーは Symfony Advent Calender 2012で見ることができます。 Symfonyの基礎 まず最初に、Symfonyをあまり知らない方のために簡単に特徴をまとめます。 Symfony はフランス Sensio…

配列のキーの存在チェック(isset)をしながらhtmlspecialcharsするのをちょっと読みやすくする

php

1枚のPHPでGETパラメータの値をそのまま出力したりする場合、何も考えずに書くとこんな感じになります。 さすがに、毎回これを埋め込むのは嫌ですよね。 なぜなら、同じkey名を2回間違わずに書かなくてはなりませんし、なによりも長い。 なので、次の考える…

フラットなPHPからSlimへ

フラットなPHPからSilexへの姉妹版記事です。追記 configにモデルを突っ込むコードからcontainerプロパティを作り、配列としてクロージャを登録する方式に変更 $app全体を持ち回す必要がないところは必要な情報のみ渡すように修正 追記 2014/08/13 slimがバ…

フラットなPHPからSilexへ

追記 DB接続時にcharset=utf8を指定 bindValueで暗黙の型変換されないように変更 Pimpleをサービスロケータとして使う場合の注意点を追加 テンプレートとしてフラットなPHPからTwigで書いた場合を追加 前提 スクリプト、ファイル、DBの文字コードはすべてUTF…

これからのSilexのインストール方法

七夕ですね。BEAR.Sundayが楽しいですね。詳細についてはまだ発表されていませんが7/19(木)についに BEAR.Sunday Meetup #0 が開催されるようですよ。今日はSilexのインストール方法について色々変更があったのでまとめておきます。 silex.pharは配布しない…

Symfony勉強会 #6 が無事終了!!

無事開催できました。 2012/6/30に VOYAGE GROUP にて Symfony勉強会#6 が開催されました。 レポートはユーザー会にもアップされる予定です。アップされました。 http://www.symfony.gr.jp/blog/20120630-symfony2-workshop6-report それに、参加者のみなさ…