オープンソースこねこね

Webプログラミングなどについてあれこれ。

PHP

OmnibusでPHPアプリケーションをRPMにパッケージングする

要約: Omnibusを使うとApacheとPHPをバンドルしたオールインワンなPHPアプリケーションのRPMパッケージを作れます。 最近CLIツールやAPIサーバなどはGoで書くようになって、PHPをさわる頻度が減ってきているのですが、それでもPHPの実行環境が不必要になるこ…

PHPでcronのように定期実行をするプログラムを書いた

PHP

kohkimakimoto/workerphp kohkimakimoto/workerphp · GitHub 自分で使う分には最低限、必要な機能を実装できたので紹介します。以下のようなPHPファイルを記述してPHPのコマンドラインから実行するとプロセスが起動しっぱなしになりcront_timeで指定したスケ…

PHP5.5+OPcacheでシンボリックリンクでデプロイするとキャッシュが消えない

PHP

という問題にぶち当たりました。 どういうことかを話す前にPHPアプリケーションの個人的なデプロイ構成について説明します。 要はCapistranoのデプロイと同様なのですが、デプロイ先は以下のようなディレクトリ構成になっています。 . |-- current -> /path/…

第77回PHP勉強会でAltaxをとりあげていだだきました

PHP

4/28にEngineYardさんで行われた第77回PHP勉強会で、私がオープンソースで作っているAltaxというPHPデプロイツールをとりあげていただきました。とっても嬉しかったのでブログに書いちゃいます。PHP勉強会についての詳細はリンク先を参照ください。 第77回PH…

コード上の利便性からオブジェクト指向を考える

今回はオブジェクト指向について書きたいと思います。 私がオブジェクト指向を初めて学んだのは8年くらい前で、そのときはJavaでコードを書いていました。 クラス、オブジェクト、継承、ポリモーフィズムなどは 「個々の犬オブジェクト(ポチ、シロとか)があ…

Composerがパッケージのstabilityを解決するしくみ

PHPとComposerで先日composer/composerのdev-masterに依存したプログラムを作っていたら、composer installのときに以下のようなエラーがでてインストールできない問題にぶちあたりました。 Your requirements could not be resolved to an installable set …

PHPデプロイツールのAltaxのバージョン3をリリースしました。

PHP

去年10月位にバージョン2に書き直して、今回さらにまるっと書き直しました。 タスクの記述方法などもごっそり変えてしまったので、すでに使っている人は今までの設定ファイルは使えないので注意してください。 https://github.com/kohkimakimoto/altax ドキ…

SymfonyとLaravelを比べてみての考察

SymfonyとLaravelはPHPのWebアプリケーションフレームワークで 2014年現在、モダンなPHPフレームワークとして人気があるようです。 両方ともComposerによるパッケージ管理、MVCアーキテクチャ、 開発時のPHP組み込みサーバのサポート、 バンドル(Laravelでは…

LaravelのRouteクラスがグローバル空間で呼び出せる仕組み

最近Laravelを触っています。 で、LaravelだとURLと実行するアクションを関連付けるルーティング部分を Route::get('/', function() { return 'Hello World'; }); こんなふうに、RubyのSinatraっぽくかけるんですよね。ところがこのRouteというクラス、事前…

TravisCIでSSHクライアントのテストをする。

AltaxというPHPで並列SSHするデプロイツールを作っているのですが、 これのSSH接続部分のテストは当然SSHサーバが必要で、そのへんをTravisでどーやるのかわからず、ずっと悩んでいました。 で、調べていたら、 https://github.com/libgit2/libgit2/pull/177…

JenkinsをCentOSにインストールしたときのメモ

Githubで公開しているプロジェクトのCIにはTravisが使えて便利なのですが、 仕事で開発しているWebアプリとかは公開するわけには行かなかったりするので、Travisは使えません。 そんなわけで、仕事でもCIの環境が欲しくなったので、今更ながらjenkinsをイン…

Composerのドキュメントを日本語訳してみてる話

先週末からComposerのドキュメントを個人的に日本語訳してみてます。 http://kohkimakimoto.github.io/getcomposer.org_doc_jp/doc/ 英語むずいいぃぃぃ~~~~~! はい。英語が苦手なんです。キライなんです。使えるようになりたくはあるのだけど、本腰入…

PHPのArrayを少し便利に扱えるクラスを書いた。

PHP

大したコード量じゃないので毎回コピペして使ってたコードなのですが、せっかくなのでテスト書いて、TravisCIとCoverallsでテストして、Packagistに登録してみました。 https://github.com/kohkimakimoto/EArray EArray PHPで配列にアクセスするとき存在しな…

デプロイツールAltaxをバージョン2に更新しました

Capistrano的なPHP製デプロイツールAltaxをバージョン1→2としてアップデートしました。 https://github.com/kohkimakimoto/altax このソフトウェアはPHPで記述したタスクを、複数のリモートサーバに対して実行します。 サーバ接続には鍵認証のSSHを使用し、…

PHP Webアプリケーションから非同期にコマンドを実行するライブラリをつくりました。

PHP

こんなの作りました。 BackgroundProcess Webのプロセスから重い処理を実行したいのだけど。。。 PHPでCSVファイルなどから一括で大量のデータ投入を行いたいときがあります。 これをWebアプリケーションのプロセスでやろうとすると、処理時間が長いため、だ…

最近のPHPWebアプリケーション開発環境

PHP

というタイトルでスライドを作りました。 http://kohkimakimoto.github.io/MySlide/slides/phpenvironment/index.html 内容はともかく、スライド作成のために利用したreveal.jsがすごくいいです。HTMLベースのかっこいいスライドを簡単に作れます。スライド…

PHP WebアプリケーションのテストにSeleniumを使う - その2:PHPからテストを実行する

前回のお話 PHP WebアプリケーションのテストにSeleniumを使う - その1:SeleniumIDE編 に引き続きSeleniumについて。今回はSelenium Serverを立てて、PHPUnitと連携させてみます。 これができるとユニットテストでは難しいMVCのコントローラのテストや、エン…

テストがないとコードが書けない身体になってしまった。。。くやしいっ!

これまでテストコードなんてほとんど書いてこなかったのですが、この数日でいつのまにかテストを書くようになっていました。ずっと毛嫌いしていたのですが。今回はそんな過去と決別し、テスト環境を用意した過程やテストへの雑感などをつらつらと書き出した…

デプロイツールAltaxをPackagistに登録したよ。

以前作ったPHP製デプロイツール。 Altax PHP Deploy tool - PHPでデプロイツールを作った kohkimakimoto/altax - Github これをPackagistに登録しましたよ。 kohkimakimoto/altax - Packagist というわけで、composerを使っているユーザはcomposer.jsonに以…

求人募集をHTTPレスポンスヘッダに埋め込む

PHP

http://www.codebreak.com/ のHTMLソースに求人が書いてあって、ちょっとニヤリとしたのです。 ...あ。いいこと思いついたよ! それなら、HTTPレスポンスヘッダに求人情報を埋め込むってのはどうかな? エンジニアなら新しいサービスやサイトを見つけると、H…

LTSVをyamlぽいフォーマットで色付き表示するPHPスクリプト

LTSVをyamlぽいフォーマットで色付き表示するだけ。 以下の記事のPHP版適当実装。 http://d.hatena.ne.jp/naoya/20130206/1360154312 Code #!/usr/bin/env php

MySQL server version for the right syntax to use near 'delimiter ... というエラーで少しハマった件

PHPMigrate - PHPでマイグレーションツールを作った というMigrationプログラムを自作したのですが、このプログラムでMySQLのトリガを作成するSQLを実行したら、 mysql server version for the right syntax to use near 'delimiter ... というエラーがでて…

PHPMigrate - PHPでマイグレーションツールを作った

デプロイツールに引き続き、今度はPHPでMigrationツールを作りましたので、記事を書きます。 PHPMigrate - https://github.com/kohkimakimoto/phpmigrate フレームワークとMigration 最近のWebアプリケーションフレームワークを使えば、まあだいたいMigratio…

Altax PHP Deploy tool - PHPでデプロイツールを作った

PHPでデプロイツールを作ってみました。 Altax PHP Deploytool. https://github.com/kohkimakimoto/altax なんでこんなものを作ったかというと 開発メモ#1 : Cinnamon によるデプロイ - naoyaのはてなダイアリー シンプルなデプロイツールを書いているという…

バックエンドのアプリケーションサーバでHTTPSリクエストを判定するための設定

サーバの構成として、軽量なリバースプロキシをフロントに置きバックエンドにPHPなどが動くアプリケーションサーバを配置する構成はよく使われると思います。この場合、リバースプロキシとアプリケーションサーバ間の通信は通常HTTPでおこなわれているので、…

Adminer - PHPの1ファイルを置くだけで簡単に使えるDB管理ツール

これ。 http://www.adminer.org/ あんまり使っている人をみたことないのだけど、個人的に最近よく使っていて気に入っているツールなので紹介。Adminer(アドミナーって読み方でいいのか?)はPHPのDB管理ツールで、なんと1ファイルをWebサーバに置くだけで動作…

symfony, Doctrine1.4でページャの生成をDoctrine_Queryクラスに含めるための拡張

PHP

Doctrine1.4はsymfony1.4系のデフォルトORMです。symfonyにはORMにバンドルする形でページャ機能も最初から含まれていて便利ですが、一般的にページャの生成はこんな感じのコードになります。 (Jobeetから拝借) // apps/frontend/modules/category/actions/a…

PHPでUnicodeアンエスケープしたJSONを出力する関数

PHP

PHPの標準のjson関数だと日本語部分がunicodeエスケープされてしまい、「\u65e5\u672c\u8a9e」とか、ぱっと見よくわからん文字列になってしまうので、ちょっとデバッグがし難かったりします。JSONの仕様上では日本語そのままより、このようにエスケープされ…

MeCabのインストール手順

先日ベイジアンフィルタを実装した際にCentOSにMeCab(形態素解析エンジン)をインストールしたので、そのへんの手順をメモしておきます。ソース直で入れるのは好きではないので、checkinstallでrpmにしてからインストールしています。 checkinstallをインスト…

機械学習 - PHPとMeCabとMySQLでベイジアンフィルタを実装してみた。

PHPとMeCabとMySQLを使ってベイジアンフィルタを実装してみました。ひとまず動くようにはなったので公開します。機械学習によってテキストドキュメントの自動分類ができます。 高校数学すら忘れてしまっていたので、ついでに条件付き確率などを基礎から勉強…