Skip to content

nginxでWordPressのFancy URL

nginxでWordPressのFancy URL published on nginxでWordPressのFancy URL へのコメントはまだありません

最近、仕事と趣味のプロジェクトで立て続けにnginxを使う機会があった。nginx + PHPについてこないだエントリを書いたけど、今回はApapcheのmod_rewriteのような機能を使ってWordPressのFancy URLを実現する方法について少し書く。といっても簡単。

参考にしたのはここ(英語)。

■やりたい事

WordPressは以下のURLでアクセスするものとする。

http://www.example.com/blog/

Permalinkは、デフォルトだと以下のURL。

http://www.example.com/blog/?p=xxx

これを以下のようにしたい。

http://www.example.com/blog/index.php/YYYY/MM/entry-name/

■WordPressはmod_rewriteの有無を判断

ちなみに、Apacheを使っていると、WordPressがmod_rewriteの存在有無をチェックして、上記のURLからindex.phpの部分を除いたURLが選択できるようになってるんだけど、nginx上で動かしている場合はmod_rewriteなしと判断されてしまい、選択できるURLはいずれもindex,phpという文字列が含まれたものになっている。

もちろん、nginxでもmod_rewrite相当の事が出来るので、選択肢から選ばずに、自分でindex.php無しのURLを指定する事も出来るはず。

Continue reading nginxでWordPressのFancy URL

RubyでTwitter APIを使う

RubyでTwitter APIを使う published on RubyでTwitter APIを使う へのコメントはまだありません

RubyのTwitter関連ライブラリには色々あるみたいだけど、Twitter4Rを使った。

■バージョン

先ほどのページを見ると0.3.0が最新のように見えるが、良く読むと「最新版はダウンロードサイトをチェックしてくれ」みたいに書いてある。ちなみに、ダウンロードサイトをみると 0.5.3 が最新版のようにも見えるが、gem installしてみたら0.6.0がインストールされた。

■前提知識

Twitter API、OAuthについての基礎知識はあるものとする。特にClientとBrowserの違いが分かってないと混乱するかも。

今回はClient形式のアプリを作るものとする。まぁボットみたいなものを想像してもらえばいいかと。

ちなみに、"Twitter4R"で検索して出てくるページは結構パスワード認証を使ってるけど、今はパスワード認証は廃止になっていて、APIにアクセスするのにはOAuthを使う必要があるので注意。

Continue reading RubyでTwitter APIを使う

nginx + PHP

nginx + PHP published on nginx + PHP へのコメントはまだありません

こないだ、nginx + unicornについてのエントリを書いた。これでRuby on Railsが動く環境は整った。

同じサーバーでblogも動かしたいという要望があったため、WordPressが動くようにPHPの環境も整える事にした。

■環境

CentOS 5.0 (諸事情により)

Continue reading nginx + PHP

git show

git show published on git show へのコメントはまだありません

検索するとマニュアルにそれっぽい記述が出てくる。以下、引用。

$ git show v2.6.15:a.txt    # a.txt の過去のバージョンを表示する

いや、そもそもタグ付けしてない限りバージョン番号なんて付いてないんじゃないの?

で、検索して別のページを見つける(→ gitで過去のバージョンを取り出す)。やっぱ、git showでよさそうだけど、バージョン番号はhash値でいいのかな?とかやってみたけどうまく行かない。

[kazu@localhost build]$ git show c272cbcd34f34b90bca786e4bffae0889b635a68:LiftProject.scala
fatal: ambiguous argument 'c272cbcd34f34b90bca786e4bffae0889b635a68:LiftProject.
Use '--' to separate paths from revisions

 結論から言うと、git show <リビジョン>:<ファイル名> でOKなんだけど、ファイル名の所は.gitがあるディレクトリからの相対パスを指定しないと行けないみたい。

[kazu@localhost build]$ cd ../../
[kazu@localhost build]$ git show c272cbcd34f34b90bca786e4bffae0889b635a68:project/build/LiftProject.scala

でOKだった。

Lift CSS SelectorとAjax

Lift CSS SelectorとAjax published on Lift CSS SelectorとAjax へのコメントはまだありません

相変わらずボチボチLiftを触ってる。Lift 2.2 M1から入った便利な機能として、CSS Selectorがある。詳しくはWikiの該当のエントリを見てもらうとして、それとAjaxを組み合わせる方法。

■環境

Lift 2.2

■やりたい事

<form>タグを使った例はSimply Liftの4.8に載っているんだけど、普通のボタン(ajaxButton)を使いたかった。

DBのテーブルよりデータを取得して、HTMLの表にして出力。各行についているボタンをクリックすると、その行のデータに対する何らかの処理が行われるようにしたい。

結論から言うと簡単。

Continue reading Lift CSS SelectorとAjax

はてなに徐々に移行しようかな。

はてなに徐々に移行しようかな。 published on はてなに徐々に移行しようかな。 へのコメントはまだありません

ふとしたきっかけではてなダイアリーにブログを作った(こちら)。

こっちのブログは2004年から書いてて、つい最近エントリ数が1000を超えたんだけど、区切りとして丁度いいかなぁと思うので、技術系の話は今後ははてなをメインで書いていこうかと思う。完全に移行に踏み切れない理由は以下の2つかな。

  • 過去のエントリを参照している人が結構いる
  • 更新をサボっていた時期にPageRankが0になったんだけど(元々は2だったかな)、最近ようやく1になったので(しょぼい…)、なんかもう少し上げたくなった。

個人的な話、趣味の話とかは引き続きこっちに書こうかと思うけど。最近は技術系のネタばっかりだったので、その辺を今後充実させていこう。

今後の使い分けはこんな感じかな。

  • 本ブログ → 趣味などの個人的な話、技術系の中でも個人のメモ書きレベルのもの。
  • はてな → 技術系全般。基本的には英語で書く予定。特にScalaとLift。
  • 海外エンジニアブログ → 海外インターン、技術英語勉強会など。

まぁ、これ以外にもいくつかブログはあるんだけど…

ソーシャルネットワーク

ソーシャルネットワーク published on ソーシャルネットワーク へのコメントはまだありません

FacebookのMarc Zuckerbergを題材にした映画、「ソーシャルネットワーク」を観てきた。

この映画、プログラムが分かる人ならかなり楽しめるんじゃないかな。一緒に観に行った人は全くそういうのには疎いけどそれなりに楽しんでたようだけど。

映画の内容については色々な人が書いていると思うので、主にプログラマーの視点から観て気づいた点をいくつか。

Continue reading ソーシャルネットワーク

nginx + unicorn

nginx + unicorn published on nginx + unicorn へのコメントはまだありません

つい先日nginxのエントリを書いた。今回はその続き。

■やりたい事

unicorn上でRuby on Railsアプリを動かして、nxinxをフロントエンドとして動作させる。

■unicornの設定

はっきり言って、このページに書いてある事で大体OK。

インストールはgemで行った。

sudo gem install unicorn

Continue reading nginx + unicorn

Scala EnumerationとLift MappedEnum

Scala EnumerationとLift MappedEnum published on Scala EnumerationとLift MappedEnum へのコメントはまだありません

■MappedEnum

LiftにはMappedEnumという型がある。型引数の1つでEnumerationの子クラスを取る。モデルクラスのフィールドにそれを指定すると、フォームではEnumerationの各要素がプルダウンで選択できるようになる。

MappedEnumのシグニチャは以下の通り。

abstract class MappedEnum[T<:Mapper[T], ENUM <: Enumeration] (val fieldOwner: T, val enum: ENUM)
extends MappedField[ENUM#Value, T] 

Continue reading Scala EnumerationとLift MappedEnum

MySQLでrootなのにaccess denied

MySQLでrootなのにaccess denied published on MySQLでrootなのにaccess denied へのコメントはまだありません

MySQLのrootユーザーでDBを作成して、そのユーザーに権限を与えようとしたらAccess deniedのエラーが出た。

mysql> grant all on foodb.* to 'foo'@'localhost';
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'foodb'

■問題の詳細(?)

発生前にやった事。

1. rootユーザーのパスワードが空だったので、パスワード設定。

GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY 'newpassword'

2. DB作成

CREATE DATABASE foodb;

3. 上述の通り、GRANT ALL … をやろうとしてエラー発生。

 

Continue reading MySQLでrootなのにaccess denied