PHPでMonologを利用してRollbarにメッセージを送信

php

Monologを利用してRollbarにメッセージを送信する方法です ちなみにRollbarとはエラーをモニタリングしてくれるサービスです。(NewRericと類似サービス)rollbar.comまずはcomposerを使用してrollbarのクライアントをインストールします。 ./composer.json "r…

PHPでSQSのFIFOキューを使った時のメモ

SQSのFIFOキューを使用する時に調べた事を記述します。みんな大好きSQSは昔から存在する手軽に利用できるキューシステムですが、メッセージの順序保障と二重送信などはアプリ側で考慮する必要がありました。 しかし何時の間にやらFIFOキューとして機能が強化…

PHPのslim3でEloquent\Modelを使用したモデルの実装

illuminate/databaseはEloquentというORM機能も利用できるのでslim3での利用法を記述github.com以下のようにモデルクラスを作成します。 # src/Sample/Model/User.php

illuminate/databaseを使用したデータベース操作

php

素で「illuminate/database」を使用したデータベース操作のまとめgithub.com前回の記事で以下のような感じにdbの接続設定を追加したので、それを使用します。 $container['db'] = function ($c) { $capsule = new \Illuminate\Database\Capsule\Manager; $ca…

PHPのslim3でデータベースに接続する

今回はデータベースに接続する設定を追加します。DBに接続するライブラリは以下を使います。github.comcomposer.jsonに以下の設定を追加してcomposer updateします。 composer.json @@ -15,6 +15,7 @@ "php": ">=5.5.0", "slim/slim": "^3.1", "slim/twig-vi…

PHPのslim3にtwigの設定を追加

前回TOPページのコントローラの追加を行ったので、今回はテンプレートの追加をします。 テンプレートにはtwigを使用します。composer.jsonを更新してtwigのパッケージをインストールします $ vi composer.json "require": { "php": ">=5.5.0", "slim/slim": …

PHPのslim3で環境構築

久しぶりにslim3で素のフォームを作るまでを勉強しなおしたので筆をとりました。 この記事ではコントローラの追加までを記述します。slimはマイクロフレームワークですが、公式でスケルトン機能を用意されているのでそれを利用します。github.comスケルトン…

pyramidのjinjaテンプレートで独自filterを定義

pyramidのテンプレートで「nl2br」のような独自フィルターを挟みたいと思った時にメモです。 今回は「hoge2hage」という「hoge」を「hage」に変換するフィルターを定義してみます。1. フィルター処理を作成 適当なところに処理を作成します。 $ vi myapp/fil…

pyramidでpyramid-deformを使ってみる

前回の記事で簡単なdeform利用はできるようになりました。 pyramidにはpyramid-deformと呼ばれるdeform連携パッケージが存在するので今回はpyramid-deformを利用してのdeform利用を試します。 1. リソースの定義 自分はpython歴が浅いのでpython界で常道なの…

pyramidでdeformを使ってみる

以前の記事でmongoengineの使い方が解ってきました。今度はdeformを使ってのフォームの作成を試してみました。 最終的にはpyramid-deformを利用したフォーム連携を目指しますが、まずはdeformを素で使ったシンプルなフォームを作成してからpyramid-deformを…

PyCon APAC 2013に行ってきた(2日目)

前日朝までFF14をやってましたが、エオルゼアのご加護のおかげでなんとか遅刻せずに2日目に参加できました。 PofEAA in SQLAlchemy 資料はなかったので動画が以下です。 http://www.youtube.com/watch?v=nClPtRhlDxsSQLAlchemyと関連してPofEAAに記載されて…

pyramidでmongoengineを使ってみる

pythonのmongodb用ODM(ORM)であるmongoengineのお話です。 mongoengineでmongoのデータを更新するフォームの勉強をしたかったので、mongoengineを軽く触ってみました。 1. 環境構築 今回のテスト用にmyform環境を作成し「/form」をルーティングに追加します…

PyCon APAC 2013に行ってきた(1日目)

最近、仕事でpythonに触れる事が多いのでPyCon APAC 2013にいってきました。1日目に聞いたセッションの感想です。 パッケージングの今と未来 資料は以下です。 http://www.slideshare.net/aodag/ss-26183017自分は7月から本格的にpythonを触り始めたのでpyth…

pyramidで開発環境と本番環境でタイトルの表示を切り分ける方法

pyramidで作成した管理画面で本番と開発環境でタイトルを切り分けたいとの要望があったのでその対応した時の手順を記します。 プロジェクトの構成は下記となります。 $ pcreate -s starter taka512 $ tree taka512 |- development.ini |- production.ini |- …

djangoのチュートリアルをさくっとやってみた(フロントサイト構築)

前回の記事でdjangoチュートリアルの2までの内容(管理サイトの構築)まで行ったので、チュートリアルの3以降の内容(フロントサイトの構築)を行います。3.2 フロントサイトの作成 投票一覧(index)・詳細(detail)・投票(vote)・投票結果(result)のページを作成…

djangoのチュートリアルをさくっとやってみた(管理サイト構築)

お仕事の事情でpythonエンジニアにスキルチェンジが求められたので awsにさくっとdjango環境を構築してチュートリアルを行いました。 djangoのチュートリアル1. サーバ環境準備 awsにマイクロインスタンスでAmazon Linuxを立てました。 対象サーバにログイン…

slimでknp-componentsのpaginatorを使う(データベースアクセス版2)

前回の記事ではページ捲り用のクラスを作ってページ捲り機能を実装してました。 今回はデータの取得/計算をコントローラで行いpagination機能だけを使いたい場合の例を記します。 素のphpの場合、この実装がやりやすいと思います。Controllerの変更 リミット…

slimでknp-componentsのpaginatorを使う(データベースアクセス版)

前回の記事では最初から全データを用意してページ捲りを実装してました。 ただ、データベースに対象データが存在する場合は全件データを取得するのは現実的ではありません。 データベースからデータの一部を取得する形でページ捲りを実装する方法を記します…

slimでknp-componentsのpaginatorを使う(非データベースアクセス版)

knp-componentsを利用してページ捲りを実装する方法を記す。 今回は[domain]/page/1でアクセスできるページ捲りテスト用のページを作成し、a~zまでのアルファベットを表示するページを作成します。knp-componentsのインストール $ vi composer.json "requir…

slimでphpunit使用して結合テスト

今回は、結合テストを行う方法を記す。 goutteはブラウザエミュレートしてくれるphpライブラリです。 今回はgoutteを使ってブラウザのリクエストをエミュレートして正常に表示が行われるかのテストを行います。goutteのインストール $ vi composer.json "req…

slimでphpunit使用してユニットテスト

今回はphpunitをインストールした上で、ユニットテストを行う手順を記します。 ユニットテストはメソッド単体だったりの小さい粒度のテストで 今回はsrc/Taka512/Services/NameService.phpのgetNameメソッドをテストします。 サービスクラスは以下のような感…

slimでpimpleを使ってデータベースに接続

pimpleを使ってデータベースへの接続を行いデータベースからデータを取ってくるようにします。データベースにテーブルとデータを追加MYSQLのhogeデータベースにユーザ「hoge」パスワード「hogepass」で接続できるように設定してます。 create databases hoge…

slimでpimpleを使ってroutingを行う

pimpleを使ってslimのroutingを構造化してみます。routes.phpの作成configディレクトリを作成し、routing情報を記述するroutes.phpを作成します。 $ mkdir config $ vi config/routes.php get('/', function() use ($container) { $container['ContentsContr…

slimでネームスペースを利用するように修正

プロジェクトディレクトリの構造化を行っていきます。 今回は前回index.phpに作成したNameServiceクラスをファイルから分離して、ネームスペースを利用するように修正します。composer.jsonの修正autoloadの項目を追加します。srcが設定ディレクトリで「Taka…

slimでpimpleを使う

pimpleはphpでDIコンテナを実現するためのライブラリです。 今回はslimでpimpleを使ってみます。インストールcomposer.jsonにpimpleを追加 $ vi composer.json "require": { "slim/slim": "2.*", "slim/extras": "2.0.*", "twig/twig": "1.*", "pimple/pimpl…

slimでログを出力

前回インストールしたslim/extrasを利用してログ出力を行う設定のメモログディレクトリを作成 $ mkdir -p logs $ chmod 777 logsindex.phpを編集 $app = new Slim(array( 'view' => new Twig, 'templates.path' => '../templates', 'log.writer' => new \Sli…

slimでtwig連携

最近slimを使う機会がありそうなのでphpのマイクロフレームワークであるslimを基礎から触った。 まずはインストールしてslimとtwigで連携するところまで行う。composerからのslimのインストール $ curl -s http://getcomposer.org/installer | php $ vi comp…

cookpad開発コンテスト24に参加してみた。

6/15(土)に第4回cookpad開発コンテスト24に参加して応募してみました。 結果は箸にも棒にもかからなかったのですが、提出までこぎ着けたのは有意義な経験だったので感想がてら振り返ってみました。提出ソースhttps://github.com/taka512/symfony_cookpad_de…

会社ブログ用に書いたchefのレシピをリファクタしてみた。

会社の技術ブログで「vagrant + chef + serverspecを使った~」みたいな記事を書きました。 その際のchefのレシピはいくつか問題点があると思ってます。 今回はその問題点を解消すべくリファクタしてみた!っていうお話です。会社ブログの記事http://tech.vo…

Provisioning Frameworks Casual Talks いてきた感想

きたる5/10、定時ダッシュで会社を飛び出しProvisioning Frameworks Casual Talks に 参加してきました。内容はchefとpuppetなどのサーバの構成管理ツールのあれこれというお話で、個人的には「サーバの構成をコード化して共有する」「サーバの構成をテスト…

Amazon Web ServicesでSymfony2.1の動作環境を10分で構築する手順

去年は少し忙しくてブログの更新をさぼった一年でしたが、今年は更新頻度を上げていこうかなと思います(笑 awsでSymfony2.1の検証的な環境を構築する手順です。 Symfony2を触ってみたいけど、わざわざ設定するのはメンドクサイなーってな人向けです。awsな…

Symfony2 ドキュメントの翻訳手順 cookbookを翻訳

前回の記事で確認環境の準備ができたので今回はcookbookを翻訳をしてみます。 基本的に本家と日本語版のディレクトリ構造は同じではありますが、 日本語版が本家について行けてない部分がありますので、そこは推測する感じで行きます。本家のドキュメントの…

Symfony2 ドキュメントの翻訳手順 環境準備

久しぶりにユーザ会のコンテンツを翻訳してみようと思い立ったけど 割と忘れていたので、振り返りがてらメモした手順となります。Symfony2のドキュメントはsphinxというPython製ドキュメンテーションビルダーで 構築されています。 まずはsphinxでSymfony2の…

10分ぐらいで学べるSymfony2 〜Doctrine2のassociationsを見てみる〜

masterとcategoryのように複数テーブルに情報が分かれている場合でもDoctrine2はよろしくMAPしてくれます。 ただ、ORMを使っているとSQLが直接見えない分、残念なSQLになってしまう事があるので挙動を調べたメモです。 Doctirne2のテーブル間の関係性におい…

Symfony2コマンドの出力先を変更 : Symfony Advent Calender 2011 JP - 4日目 -

taka512です。Symfony Advent Calendar JP 2011の4日目の記事です。 Symfonyユーザ会の大御所から引き続いての4日目ということで緊張で手がプルプル震えつつ書いてます。 今回はSymfony2コマンドを実行した際の出力先を変更する方法を紹介します。 Symfony2…

10分ぐらいで学べるSymfony2 〜configの読込編〜

configの読込についてメモです。 app/configの下には各dev/test/prod環境の設定ファイルも含めて4つ存在します。 (1)config.yml (2)config_dev.yml (3)config_test.yml (4)config_prod.yml ・dev環境の場合 (2)→(1) ・prod環境の場合 (4)→(1) ・test環境の場…

10分ぐらいで学べるSymfony2 〜DataFixturesの使い方編〜

Symfony2にはDoctrineFixturesBundleというデータを投入するバンドルが存在し、コマンドからデータを投入する方法はマニュアルに記載があります。 phpunitのsetUp処理でデータを「クリア→投入」したかったのですが、やり方が見当たらなかったので調べたメモ…

10分ぐらいで学べるSymfony2 〜データベース接続設定編〜

memcachedにつないだり、mongoにつないだり、複数のmysqlにつないだりとデータベースにつなぐ際の設定のメモとなります。 1. 通常の設定 $ vi app/config/parameters.ini [parameters] database_driver = pdo_mysql # myslを使うならこのまま database_host …

10分ぐらいで学べるSymfony2 〜Symfony2のログ設定を見てみる編〜

Symfony2のデフォルトの設定を見ていきます デフォルトコンフィグログ出力例loggerは「Symfony\Bridge\Monolog\Logger」で「Monolog/Logger」を継承しており そこでinfoやerrメソッドが定義されてます。 メイン処理は「vendor/monolog/src/Monolog/Logger.ph…

10分ぐらいで学べるSymfony2 〜monolog理解編〜

自分がmonologについて社内のwikiにまとめた内容を公開してみます。 monologとはPythonのLogbookライブラリにインスパイヤを受けて作ったライブラリだそうです。 (みたいな事がreadmeの下の方に書いてありました) Symfony2ではこのライブラリをログ出力の標…

10分ぐらいで学べるSymfony2 〜自分のloggerを設定してみる編〜

なんとなくloggerに慣れてきましたが複数ファイルに出力をだしたい時の設定について、もやもやしてました。 (同じメッセージを複数出力する場合はconfig.ymlのmonolog項目に設定を追加すれば良いですが、apiの入出力値はAファイル、アプリケーションのメッセ…

10分ぐらいで学べるSymfony2 〜app/config/config.ymlに自分の設定追加編〜

app/config/config.ymlに自分のバンドル設定を追加した際のメモ Taka512\GooglePlaceBundleみたいなバンドルを制作しましたが google placeはアクセスするのにapi keyが必要なため、app/configに 自分のバンドルの設定項目が欲しくなり追加してみました。 $ …

10分ぐらいで学べるSymfony2 〜メール送信サービス作成編〜

Symfony2ではある機能を利用する際にクラスをnewして呼び出すのではなく サービスとして呼び出すみたいな事を行います。 今回は仮登録メールを送信するサービスを実装する例として実装します (1)サービスクラスの作成 サービスの本体を作成します。 Symfony2…

10分ぐらいで学べるSymfony2 〜admin generator編〜

informationテーブルに対してアドミンジェネレータでCRUD処理を作成するメモ SonataAdminBundleを利用します。今回はエンティティは「src/Root/SiteBundle/Entity/Information.php」に作成済とします(1)インストール vendor下にインストールするが結構な数の…

10分ぐらいで学べるSymfony2 〜pager編〜

今回はSymfony2でpageを実装する際のやり方のメモとなります。 symfony1だとsfPager又はsfDoctrinePager オブジェクトが存在してpager機能を実装してたのですが Symfony2だとそんな機能はコア機能にはないようです。 そこでPagerBundleというバンドルを利用…

memcachedコマンドリスト

検索コマンド 検索を行うコマンド戻値書式 VALUE []\r\n \r\n key 送信したキー flags ストレージコマンドで送信したflag bytes 取得データのデータ長 cas unique casコマンドで使用するキー(getsコマンドで取得) data block キーのデータ getコマンド 実行…

memcached-toolの使い方

以前も調べた記憶がありつつも毎回忘れるのでメモ memcachedにはアクセスするための「memcached-tool」という便利ツールが存在する バージョンによって表示内容が少し異なりますが、新しいバージョンの「memcached-tool」でも 古いバージョンのmemcachedに対…

10分ぐらいで学べるSymfony2 〜Doctrineテーブル作成編〜

データベースにテーブルを作成するまでとメタデータ回りのメモmysqlに今回の接続に使用するアカウントとパスワードとデータベースを作成 $ mysql -u root -p create database symfony20 GRANT ALL PRIVILEGES ON symfony20.* TO symfony20@localhost IDENTIF…

10分ぐらいで学べるSymfony2 〜基本構造編〜

前回は環境を作りましたので今回は簡単にバンドルの作成と それに付随する構造のメモです。 基本的にはSymfony Bookに書いてある内容だったりします。 基本ディレクトリ構造 Symfonyのプロジェクトルート以下の構造 web/ # ドキュメントルート src/ # プロジ…

10分で試せるSymfony2 〜環境構築編(ubuntu)〜

AWSを利用してSymfony2 スタンダード環境の構築メモ 既にCentOS6がリリースされてますが、AWSでCentOS6イメージが用意される気配が無いので 今回は「ubuntu-natty-11.04」の64bit版のイメージを利用曖昧な記憶ですがAWSに↓の特典があり、無料で試せると思わ…