カテゴリー : 2011年 12月

[PostgreSQL] テーブル(table)を csv 出力する方法

PostgreSQLにて、tableのデータを csv 出力する方法を調べたのでメモ。

$ psql dbname
 
dbname=> \o tablenams.csv
dbname=> \a
Output format is unaligned.
dbname=> \pset fieldsep ','
Field separator is ','.
dbname=> select * from tablename;
dbname=> \o
 
\o で出力先を指定
\a で桁そろえをしない
\pset fieldsep でセパレータを指定
タブ区切りは '\t'
select 文で対象データを抽出する。
最後の \o で出力先を戻します。

コマンドラインから行いたい場合は、以下の方法があります。

$ psql -c 'SELECT * FROM tablename;' -A -F,
 
-A 桁そろえをしない
-F セパレータを指定(-F, でカンマ、-F\t でタブ)

参考情報

Postgres でテーブルを csv 出力

PostgreSQL のデータをCSV出力する – IT革命~

[資料]「変化の時代で勝つための開発組織のあり方」株式会社Aiming 小林俊仁 氏

株式会社Aiming 小林俊仁 氏が発表したスライド資料「変化の時代で勝つための開発組織のあり方」がとても面白かったのでご紹介します。

小回りが効く開発組織作りのポイントを抑えた良スライドなので、少人数のWeb開発に携わっている方はぜひ目を通しておくべきかと。

・企業サイト:株式会社 Aiming(エイミング) はてなブックマーク - 株式会社 Aiming(エイミング)

[WordPress] トップページに固定ページを表示させる設定方法

WordPressのトップページを個別記事の最新投稿ではなく、固定ページを表示させる設定方法を調べたのでご紹介します。

固定ページを表示させる設定は下記サイトの手順通りにするだけでOKです。

フロントページに固定ページを表示 – WordPressの使い方

以上です。

Facebookアプリ/ページ/広告の規約のリンクまとめ

Facebookでアプリ、ページ、広告を利用する場合は、ちゃんと規約を守らないとアカウント停止などの処分がされることがあるので注意が必要です。
 
Facebookアプリの規約についてはこちら。

Facebook Platform Policies – Facebook Developers

Facebookページの規約についてはこちら。

Facebook Pages Terms

Facebook広告の規約についてはこちら。

Facebook Advertising Guidelines

これらの規約は頻繁に改定されるので、こまめにチェックしておく必要がありそうです。

[書籍]「みんなのPython Webアプリ編」のPDFが無料公開中

絶版書籍「みんなのPython Webアプリ編」のPDFがクリスマスプレゼントということで、無料公開中らしいです。

・DL:クリスマスプレゼント!「みんなのPython Webアプリ編」のPDFを無料公開します | TRIVIAL TECHNOLOGIES on CLOUD はてなブックマーク - クリスマスプレゼント!「みんなのPython Webアプリ編」のPDFを無料公開します | TRIVIAL TECHNOLOGIES on CLOUD

・参考:無料で「みんなのPython Webアプリ編」のPDFファイルがダウンロード可能に – GIGAZINE はてなブックマーク - 無料で「みんなのPython Webアプリ編」のPDFファイルがダウンロード可能に - GIGAZINE

最近、Pythonでコードを書いていないので、この機会にPython再開したいですね。

[Oracle] ORA-12505, TNS:listener does not currently know of SID given in connect descriptor エラーの解決方法

Oracle のDBを使っていたら下記のようなエラーが発生して、解決方法を調べたのでご紹介します。

今回は DB を再起動したらエラーが消えました。

ORA-12505 エラー内容

ORA-12505: TNS:listener does not currently know of SID given in connect descriptor  tips
ORA-12505: TNS: リスナーは接続記述子で指定されたSIDを現在認識していません

サーバ側のリスナーは起動しているが、インスタンスが起動していないエラーでした。

ORA-12505 エラーの解決方法

各サービスの起動と停止手順

リスナー(TNSListener)の起動と停止

lsnrctl start
lsnrctl stop

インスタンス(OracleService)の起動と停止

sqlplus system/***** as sysdba
SQL> startup
SQL> shutdown

Database Console(5500番ポート)の起動と停止

set ORACLE_SID=winora10
emctl start dbconsole
emctl stop dbconsole

iSQL*Plus(5560番ポート)の起動と停止

isqlplusctl start
isqlplusctl stop

以上です。

参考情報

Facebookアプリ開発者がチェックしておくべき3つのサイト「Developer Blog」「Developer Roadmap」「Facebook Stack Overflow」+ 日本語サイト5つ

Facebookアプリを開発していると、頻繁にAPIの仕様変更に対応しないといけません。

対応漏れがあると、アプリが使えなくなってしまうので、Facebookアプリデベロッパーはこまめに最新情報をチェックしておく必要がありますよね。

チェックしておくべきサイトは3つ。もちろんどちらもFacebook公式サイトです。
 

Developer Blog

1つ目は Facebook Developer Blog です。

Facebookの最新動向が技術の側面から得られるブログです。ほぼ毎日更新されています。

Developer Blog – Facebook Developers はてなブックマーク - Developer Blog - Facebook Developers
 

Developer Roadmap

2つ目は Developer Roadmap です。

Facebook API の仕様変更がどの時期に行われるか、時系列順にまとめられています。

ここだけでもチェックしておけば、API仕様変更の対応漏れはなくなるはずです。

Developer Roadmap – Facebook Developers はてなブックマーク - Developer Roadmap - Facebook Developers
 

Facebook stackoverflow

3つ目は、エンジニア御用達のサイト Stack Overflow のフェイスブック特化版 Facebook Stack Overflow です。

Facebookアプリ開発をしていてハマったら大体、ここで質問するか探すかすれば解決できます。

Facebook Stack Overflow はてなブックマーク - Facebook Stack Overflow
 

番外編

今回紹介したサイトは全て”英語”で書かれています。

なので、番外編では、英語が苦手って方にオススメの日本語サイトもまとめてみました。

下記、3サイトは Facebook Developer Blog の情報を日本語記事で配信してくれるので、とても参考にさせて頂いてます。

Facebook | FBN Future box news | Facebook、Android、 iPhone WEBのこれからを伝えるメディア はてなブックマーク - Facebook | FBN Future box news | Facebook、Android、 iPhone WEBのこれからを伝えるメディア

小粋空間: Facebook アーカイブ はてなブックマーク - 小粋空間: Facebook アーカイブ

Facebook開発者向けドキュメントの日本語訳とTips はてなブックマーク - Facebook開発者向けドキュメントの日本語訳とTips
 

あと、サイバードが運営する日本のFacebookアプリ開発者向けサイトもチェック。

ただ、RSSが付いてないのが残念で仕方ないです。

Facebook開発者の為のサポートサイト | fb.developers’+ はてなブックマーク - Facebook開発者の為のサポートサイト | fb.developers'+
 

最後に、開発者向けではないけど、Facebookページの運用とかマーケティングの情報も得たいならGaiaXのブログも要チェックです。

ガイアックスソーシャルメディア ラボのブログ はてなブックマーク - ガイアックスソーシャルメディア ラボのブログ
 

「Facebookアプリ開発するならこのサイトも読んでおかないと、ねぇ・・・」という情報があれば、ぜひぜひ教えて頂きたいです!

PHPFog + Symfony2 でステージング環境を作る方法:Symfony Advent Calender 2011 JP – 13日目 –

こんにちは!「Symfony Advent Calendar JP 2011」 はてなブックマーク - Symfony Advent Calendar JP 2011 : ATND13日目です。

昨日の @77webさんからバトンタッチで、今日は「PHPFog + Symfony2 でステージング環境を作る方法」をワタクシ、バコラー (@bakorer) がご紹介します。
 


 

PHPFog と Symfony2 って何?

さて、今日のブログのテーマですが、タイトル通り PHPFog に Symfony2 が動作する環境を作る手順をめっちゃ丁寧に書いていきたいと思います。

みんな大好き Symfony については説明するまでもありません、PHP5向けのウェブアプリケーションフレームワークです。

・公式:High Performance PHP Framework for Web Development – Symfony はてなブックマーク - High Performance PHP Framework for Web Development - Symfony
 

「PHP fog」はPHPの実行環境を提供しているPaaS型クラウドです。先日、3つのアプリケーションまで永久無料にすると発表されたPHPerに優しいサービスなのです。

・詳しくはこちらの記事を参考:ずっと無料で使えるPaaS型クラウドのまとめ。2011年版 - Publickey はてなブックマーク - ずっと無料で使えるPaaS型クラウドのまとめ。2011年版 - Publickey

・公式:PHP Fog — Rock Solid Cloud Platform for PHP はてなブックマーク - PHP Fog — Rock Solid Cloud Platform for PHP
 

Heroku を使うとステージング環境がカンタンに作れて素敵だったから、Symfony2 用のステージング環境をサクッと作りたかったんだ。

ところで、皆さんステージング環境ってどうされていますか?

  • ステージング用の VPS を契約してる
  • 開発環境で確認したら、即、本番アップだぜ!
  • ステージング環境なにそれ?おいしいの?

色々とあると思います。

僕は少し前から、Heroku + Ruby on Rails でも開発しているのですが、本番環境だけでなくステージング環境も簡単に作れることに感動しておりました。

じゃあ、Symfony2 でもPaas使えばできるんじゃない?

ということでやってみました。

(Heroku + Rails でステージング環境を作りたいって方はこちらの記事もどうぞ)

・参考:Heroku + Rails の認証付きステージング(staging)環境を構築する方法 | CodeNote.net はてなブックマーク - Heroku + Rails の認証付きステージング(staging)環境を構築する方法 | CodeNote.net
 

最初は、Heroku で最近 PHP も使えるようになったし、Herokuで作るか!と思ったけど無理でした

あまり知られていないようですが、少し前からHerokuでもPHPが動作するようになりました。

なので、使い慣れた Heroku でやってみよう!と思い Try しましたが、Symfony2 の動作環境としては以下の通り無理でした。

http://symfony2.herokuapp.com/
 

Symfony2 なんだし PHP Fog を使ってみよう!

Heroku が使えないので、他の Paas を検討することに。

Symfony2 は PHP製のフレームワークですし、お寿司。

PHP Fog を使ってみよう!

ということで、名前に惹かれて PHP Fog に決定。

他の候補は、fluxflex はてなブックマーク - fluxflexとかも日本人がやってて、かなり良さそうだったけどまた別の機会に。
 

PHP Fog + Symfony2 でステージング環境を作る手順

さて、やっと手順です。

  1. PHP Fog で新規アプリ作成
  2. Symfony2 アプリケーションを PHP Fog に Pushする
  3. PHP Fog App を Symfony2 用に設定する
  4. Symfony2 に Basic認証を設定する

ここから飛ばしていきます!
 

1. PHP Fog で新規アプリ作成

まず、PHP Fog で新しくアプリケーションを作成します。


 

次に、アプリケーション選択の画面で、「Custom App」をクリックします。

(Cake、Zend、CodeIgniterとかあるのにSymfonyがないじゃないか!)


 

”MySQLのパスワード”と”ドメインの設定”をします。

独自ドメインを使わない場合は、phpfogapp.com のサブドメインが使えます。


 

PHP Fog 上でのアプリ作成完了です。


 

最後に、SSH公開鍵の設定をします。


 

2. Symfony2 アプリケーションを PHP Fog に Pushする

PHP Fog上にアプリを作って、次はいよいよ Symfony2 アプリケーションを設置します。

まず、git clone で PHP Fog からローカルにリポジトリを複製して、初期ファイルを削除します。

$ git clone git@git01.phpfog.com:symfony2.phpfogapp.com
Cloning into symfony2.phpfogapp.com...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
 
$ cd symfony2.phpfogapp.com
$ git rm index.php

 
 
また、新しいリモート Git リポジトリにアクセスしやすいように phpfog という名前をつけて追加します。

$ git remote add phpfog git@git01.phpfog.com:symfony2.phpfogapp.com

 

次に、Symfony2 のファイル一式を設置して、app_dev.php, config.php を編集して、IPアクセス制限の部分をコメントします。

$ vim web/app_dev.php 
$ vim web/config.php

・参考:Symfony2 ドキュメント日本語版 | Symfony2日本語ドキュメント はてなブックマーク - Symfony2 ドキュメント日本語版 | Symfony2日本語ドキュメント
 

編集したら、PHP Fog 上に Symfony2 アプリを設置します。

$ git add .
$ git commit -m 'symfony2 init'
$ git push phpfog master
Counting objects: 3975, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3781/3781), done.
Writing objects: 100% (3974/3974), 3.75 MiB | 290 KiB/s, done.
Total 3974 (delta 1060), reused 0 (delta 0)
remote:  -----> Deploying to the cloud
To git@git01.phpfog.com:symfony2.phpfogapp.com
   5708d64..adab3a0  master -> master

 

Symfony2 の動作環境を /config.php から確認します。

タイムゾーンの設定を app/AppKernel.php に書きます。

ini_set('date.timezone', 'Asia/Tokyo');

PHP アクセラレータはインストールできないのでスルーします。

同様に、short_open_tag の設定も変更できないのでスルー。
 

3. PHP Fog App を Symfony2 用に設定する

PHP Fog では console からコマンドを叩くことができないので、cache:clear などのコマンドをWebアプリ経由で実行できるようにする必要があります。

$ vim web/clean_prod_cache.php
<?php
system('php ../app/console env=prod cache:clear');
system('php ../app/console env=prod cache:warm');
?>

 

また、ドキュメントルートの設定もしておきます。

これにより、http://symfony2.phpfogapp.com/web/app_dev.php/ というURLが

http://symfony2.phpfogapp.com/app_dev.php/

と web を省略できるので、やっておきましょう。
 

最後に、cache, logs ディレクトリに書込み権限を与えておきます。


 

Symfony2 に Basic認証を設定する

ステージング環境ということで、Basic認証ぐらいは設定しておきたいですよね。

security.yml にサクッと書いてしまいましょう。

$ vim app/config/security.yml
security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
 
    providers:
        in_memory:
            users:
                admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
 
    firewalls:
        secured_area:
            pattern:    ^/
            http_basic:
                realm: "Secured Area"
 
    access_control:
        - { path: ^/, roles: ROLE_ADMIN }

ここまでで作ったアプリは下記のリンクから ID: admin / PASS: adminpass でアクセスできます。

http://symfony2.phpfogapp.com/app_dev.php/

以上です。

MVCのどれも全く作ってないのでアレな感じはしますが、とりあえず今日はここまでということで。

「Symfony2のステージング環境ならこれがオススメ!」というのがあれば是非、Twitterやブコメでアドバイス頂ければ嬉しいです。

他の言語でも、「ステージング環境はこうしてるよ!」というアドバイスも絶賛募集中でございます。
 

ちなみに本記事は、先日開催された「第5回 Symfony2 勉強会」のLTで発表したネタを書き起こしたものです。

・参考:人生初のLTを第5回 Symfony2 勉強会でしてきました [ #Symfony2study] – バコラー日記 はてなブックマーク - 人生初のLTを第5回 Symfony2 勉強会でしてきました [ #Symfony2study] - バコラー日記
 

次回予告

さて、明日、2011/12/14(水)は@ganchiku はてなブックマーク - Shin Ohno (ganchiku) は Twitter を利用していますこと、大野さんです。

・大野さんのプロフィールページ:GANCHIKU.com はてなブックマーク - GANCHIKU.com

きっと、めっちゃためになる内容だと思うので乞うご期待です!
 

—-

参考文献

PHP Fog – Supported Frameworks はてなブックマーク - PHP Fog - Supported Frameworks

Using Symfony2 on PhpFog now. – Developly はてなブックマーク - Using Symfony2 on PhpFog now. - Developly

Assetの管理にどうやってAsseticを使うか? | Symfony2日本語ドキュメント はてなブックマーク - Assetの管理にどうやってAsseticを使うか? | Symfony2日本語ドキュメント

セキュリティ | Symfony2日本語ドキュメント はてなブックマーク - セキュリティ | Symfony2日本語ドキュメント

Symfony2の認証を色々試してみる(前編) – 覇王色を求めて はてなブックマーク - Symfony2の認証を色々試してみる(前編) - 覇王色を求めて

[資料] ”PHPFog + Symfony2でステージング環境を作ってみた” at 第5回 Symfony2 勉強会

第5回 Symfony2 勉強会の LT で「PHPFog + Symfony2でステージング環境を作ってみた」というタイトルで発表しました。

そのときの資料を公開します。良ければご覧下さい。

当日の詳しい様子は、プライベートブログをご覧下さい。

人生初のLTを第5回 Symfony2 勉強会でしてきました [ #Symfony2study] – バコラー日記

以上です。

[DataMapper] datamapper undefined method `include?’ for nil:NilClass

Sinatra + DataMapper で DB にデータを保存するときに、下記のようなエラーが発生しました。

datamapper undefined method `include?' for nil:NilClass

書いたコードは、Model の new, create などで、元々あるはずのメソッドを使うと、定義されていないというエラーが発生していました。

原因は、モデルの宣言後にファイナライズ処理をしていなかったせいだったみたいです。

調べてみると、DataMapperの公式ドキュメントにちゃんと書いてありました。

Finalize Models

After declaring all of the models, you should finalize them:

DataMapper.finalize

・引用元:DataMapper – Getting started with DataMapper はてなブックマーク - DataMapper - Getting started with DataMapper

使い始める前に、ちゃんとドキュメントに目を通しておくべきですね。。。

以上です。

【参考】

#159: undefined method `include?’ for nil:NilClass in 1.2.0 but not 1.1.0 – Issues – datamapper/dm-core – GitHub はてなブックマーク - #159: undefined method `include?' for nil:NilClass in 1.2.0 but not 1.1.0 - Issues - datamapper/dm-core - GitHub

The Future is Now: DataMapper.finalize はてなブックマーク - The Future is Now: DataMapper.finalize