駒形電産

phpでアップロードサイズね。はいはい、upload_max_filesize、ワロスワロスとかいってっとやべーぞ!

nginxのclient_max_body_sizeとphp.iniのupload_max_filesize, post_max_sizeを変える必要がある。

それぞれデフォルトは1MB, 2MB, 8MBになってっからデカイ画像とかアップできない。

# nginx
client_max_body_size 32M;
; php.ini
post_max_size = 32M
upload_max_filesize = 32M

コレ、解決してませんでした。

複数カラムに対してORDER指定は可能だけど、ASC,DESCの指定が最初の一個しか効かない。ソースを読んでも確かにそうなってる。

それはquery_postsの仕様で少なくとも今日時点ではそうなってる。WordPress Query APIはSQLのBad Wrapperだ。

具体的には勝手なパラメーターを追加することで強制的にORDER句を指定することにした。

// functions.php
function force_order($orderby, $query) {
	return $query->get('force_order') ? $query->get('force_order') : $orderby;
}
add_filter('posts_orderby','force_order');

こんな感じで使う。

query_posts('force_order=menu_order ASC, ID DESC')

俺のこの対応方法も酷い。

この「ORDERに複数指定可能だったら当然ASC,DESCも指定可能だろう」という期待が通用しないのがWordPressという修羅の国。

その肌感覚を散々味わってきたハズが、最近触ったpostMashというプラグインのコードがマトモだったことで油断してた俺をWordPress Query APIのコードが打ちのめした。

さくらVPS 512のDebian Squeezeに入れた。(さくらVPS 512にSqueezeを入れる方法はこちら

apacheと古いphp5を削除

$ sudo apt-get remove --purge apache2* apache2.2* php5*
$ sudo apt-get autoremove

dotdeb

$ sudo vi /etc/apt/source.list
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all
$ wget http://www.dotdeb.org/dotdeb.gpg
$ cat dotdeb.gpg | sudo apt-key add -
$ rm dotdeb.gpg

nginx

$ sudo apt-get install nginx
server {
        listen 80;
        server_name unk.fjord.jp;

        location / {
                root /var/www/unk.fjord.jp;
                index index.html index.php;
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME /var/www/unk.fjord.jp$fastcgi_script_name;
        }
}

php5-fpm

$ sudo apt-get install php5-fpm

apc

$ sudo apt-get install php5-apc

mysql

$ sudo apt-get install mysql-client mysql-server php5-mysql

wordpress

(略)

速いし良い感じッス。

PHP PaaSのORCHESTRAを試してみた。

Orchestra

komagata/orchestra-test - GitHub

index.php:

<?php
echo 'unk';
?>

http://test-orchestra-komagata-org.orchestra.io/

外部のgit(github)やsvnのリポジトリからビルドってのがスマート。

phpアプリをdeployしたいだけなのにpython製コマンドやbazaar使わされる(gitもOKらしいけど)cloudControlとは段違いの手っ取り早さ。イイネ!

public/theme/(Mac版の場合はLokka.app/Contents/Resources/public/theme/) ディレクトリにテーマ名でディレクトリを作ります。

既存のテーマのディレクトリをコピーして修正しても構いませんが、ゼロからexampleというテーマ作ってみます。

テーマディレクトリの作成

exampleディレクトリの作成

theme

テーマのディレクトリの中にテンプレートファイルを作成します。テンプレートの形式は複数から選べますが、一番簡単なerbで作ってみます。

Lokkaのテーマに最低限必要なテンプレートは下記の二つだけです。

  • entry.erb --- 個別(Individual)ページのテンプレート
  • entries.erb --- 一覧(List)ページのテンプレート

個別ページのテンプレートの作成

まずは個別ページのテンプレートを書いてみます。

entry.erb — untitled

exampleテーマを使うように設定します。themeディレクトリにexampleディレクトリを作成した時点でテーマが認識されているので、管理画面の"テーマ"から"example"のテーマを選択します。

Test Site - Lokka

そして、個別ページを見てみましょう。(最初から1エントリーある筈なので http://localhost:9646/1 にアクセスします。)

Example Individual Page

単なるHTMLですが、ちゃんと表示されました。

しかし、静的なHTMLを表示するだけではつまらないのでサイトのタイトルを表示してみましょう。

entry.erb — untitled

h1タグの部分にサイトのタイトルを表示するように変更しました。<% と %>を囲うのがerb形式のテンプレートの記法です。<%= %>のように=が最初に付くと内容を表示するという意味になります。(これはphp/wordpressの<?= ?>と同じです。)

また http://localhost:9646/1 にアクセスして確認してみましょう。

Example Individual Page

サイトのタイトルが表示されました。この内容は管理画面の"設定" > "タイトル" で変更することが出来ます。同じようにサイトの詳細も <%= @site.description %>と書けば表示されます。

今度は個別ページなので、エントリーの内容を表示してみましょう。

entry.erb — untitled

http://localhost:9646/1 というURLからわかるように、IDが1のエントリーを表示するためのテンプレート内容になっています。

上記URLから判断して、IDが1のエントリーが@entryという変数の中に自動的に入っているので、@entry.titleや@entry.bodyでそれぞれエントリーのタイトルと本文が取り出せます。

Example Individual Page

表示されました。

一覧ページのテンプレートの作成

一覧ページのテンプレートを作る前に、エントリーが一個だけでは一覧になっているかわからないので管理画面の"投稿" > "登録" から幾つか適当に投稿(Post)を登録しておきます。

entries.erbというファイル名で一覧のページのテンプレートを作成します。

entries.erb — untitled

一覧は個別より少し複雑です。<% @posts.each do |post| %>から<% end %>の書き方に注目して下さい。do ~ endは一組になっていて、@posts.each do ~ end は@postsの個数分だけdo ~ endを繰り返すという構文です。投稿(Post)が3個あれば3回繰り返されます。

結果は下記のように表示されます。

Example List Page

画像やCSS等の外部リソースの使い方

画像やCSS、Javascriptといった外部リソースはテーマフォルダに含めることができます。

例えば、example/logo.png は <img src="/theme/example/logo.png"> のようにテンプレート中で指定できます。下記のようにディレクトリを作っても構いません。

example/
 images/
  logo.png
 stylesheets/
  style.css
 javascripts/
  jquery.js

また、テーマまでのパスは下記のように書くこともできます。

<img src="<%= @theme.path %>/logo.png" />

テーマ作成に最低限の知識はこれだけです。Lokkaにはその他に柔軟なテンプレートタイプとテーマAPIを持っていますが、それは別のエントリーで紹介したいと思います。

Fred Wu's Blog | Freelance Ruby on Rails, PHP, Front-end Web Developer

rubycommitters.orgやslim-lang.comのデザインをやってみているdeveloper/designerの方のページ。中華な感じが面白いなあ。日本のイラストともちょっと違うし、アメリカの方だとシンプソンズとかサウスパークとかもっと崩した感じのイメージがある。その中間って感じ。

PyhaLokkaにMLを作りました。

Lokka-ja | Google グループ

僕一人ではすごく悲しい雰囲気になってしまうのでサクラでいいので入ってください・・・。

PyhaLokkaの開発について

ブログってフレームワークのHello world的な扱いで出てくるぐらいなので誰でも作れます。逆に言うと技術的なチャレンジは少なく、どれだけ手を動かせるか的なところがあってプログラマー的には面倒です。だからあまりエッジな人は作りませんよね。あるとすればミニマリストのための超シンプルツールで、これは作ってて楽しい。僕も以前、普通に作り始めたらそうなってしまって、一般ユーザーやデザイナーがWordPressに求めてるようなものは出来ませんでした。

PHP以外で一般ユーザーやデザイナーにも普及するWebアプリなんて無理なんだと諦めていましたが、RedmineはWeb制作会社にいるデザイナーに何人か聞いたら結構な割合で知ってました。なんだ、Rubyでも行けるんじゃん。

「なんで僕らは仕事で、自分のブログで、WordPressを使ってるんだ?Rubyでそういうのが無いのはおかしい!」

そんなよく分からない義務感?が開発の原動力になっていて、元々そういうツールがあればそれを使いたいし、その開発に参加すれば良いと思っています。しかし上記の様な事情があってあまり作りたがる人はいません・・・。

※Radiant CMSは僕的に設計やコードは素晴らしくて若干うっとりしたぐらいです。しかしデザイナーに聞くと、本当に欲しいのは純粋なCMSではなく、ブログツールベースのCMSであるようなのです。

PyhaLokkaはSinatraベースのまだまだ未熟なブログツールなので、Rubyがわかれば誰でもコーディングの余地がいくらでもあります。(例えば投稿した後にflushで「投稿しました」とか出すべきなのを出してないとか、helperその他はpadrinoのモジュールに置き換えたいとか、テストが無いとか・・・)

貧相なプロジェクトの割にWordPress打倒!という分り易くも無茶な目標を掲げてやっていくのは面白いかもなあと最近思いはじめました。

「みんな、オラに力(コード)を分けてくれ!」

「最近ゲームやってないなー」とか思ったのでやったゲームを列挙してみた。

iPhone

まちつく

スマートフォン版のMixiアプリのまちつく。携帯版ともちょっと違うみたい。スマートフォンで出来るソーシャルアプリはもっとやりたい。どんどん増えてくと思うので面白いのがあったら教えて欲しいです。

iPad

Coin Dozer

phaさんのブログで紹介されてたCoin Dozerを何故かiPadで拡大してやってる。大体、コインが無くなるまでやる感じ。ウォー!とか声や音が気持ちイイ。

PC

FacebookのFrontierVille

facebookのFrontier Ville。やっぱりポコッとかウーッ!とか音が気持ちイイ。疲労度があるのでそれが無くなるまでやる感じ。操作感が楽しかったり、ことあるごとにFriendsと絡む必要があったりと、とにかく「よくできてんなー!」って感じ。

怪盗ロワイヤル-zero- - Yahoo!モバゲー

ヤバゲー(Yahoo!モバゲー)の怪盗ロワイヤル-zero-。やっぱり携帯(スマートフォン)でやりたいよなコレ・・・。PCだとFrontier Ville並の動きが欲しくなっちゃう。携帯はハードとかに制約されてたゲーム製作者の作りたいモノが環境の進化でどんどん開放されてくから作ってる人は、「xxxが携帯で使えるようになった!」「封印が解けられた!」「これで勝つる!」とかがしょっちゅう起こってて楽しそうだなと思う。

ニコゲー | GAMEであそぶ

ニコゲー。消費するより作る方が楽しいのは当たり前のことで、コアな人はゲームを作る。結果、カジュアルゲームが沢山できてラッキーってのは仕組み的にすごいなーと思う。サウンドノベルをブラウザで作れるサービスなどはあったけど、ゲームジャンル=ジェネレーターとして一段階抽象化したメタツクールという発想は無かったのでオモロイ。一年後のランキングにはどんなゲームが出てきてるのかが楽しみ。

PSP

PlayStation Storeでダウンロード購入できるのでレイクライシスを買った。後で調べたらレイシリーズの中で最新だけど一番評判悪いみたいで残念。でも十分面白い。(シューティングでは他にも怒首領蜂、R-TYPE⊿なども買いたい)

PSPの十字キーとPlayStation StoreのUIは十分使い易い。ゲームもPSのゲームができるので超面白い。しかし初回クレジットカード登録の煩雑さや600円のゲーム買うのに1000円単位でしか買えないウォレットなど、myGengoのPaypal決済、iTunes Storeの決済、携帯キャリアでの決済等の快適な環境に慣れてると、「おい、なめてるのか」と感じる。

感想

ゲームばっかやってんじゃん。所謂パッケージを買ってないのが"ゲーム買ってない感"の元。既にゲームは偏在しネットと溶け合い消えてしまった。

irc.freenode.netに#lokkaと#lokka-jaというチャンネルを作りました。(#lokka-jaの方は日本語で話す)

pyha (irc.freenode.net)

  • インストールしてみた
  • インストールできない
  • 改造してみた
  • ここバグってる
  • lokka.orgのドキュメント(日本語 or 英語)を書いてくれる方

などいらっしゃったらJoinしていただけると嬉しいです。

  • WordPressのPHPプラグインを書くのにウンザリしていたRubyistの方
  • 「the_post()ってなんだよ!」と思ったことがある方
  • HerokuかわいいよHerokuという方
  • 無駄にスケールするCMSが欲しい方

におすすめです。

ihara.jpg

Mitaka.rb#10 : ATND

Mitaka.rbとは

  • 公式サイト:Mitaka.rb
  • 参考記事:Ruby Freaks Lounge:第20回 Mitaka.rbの作り方

「Mitaka.rb」は東京都三鷹市周辺で不定期に開催されているRuby/Railsの地域コミュニティです。参加者はRuby/Rails関係者,Webサービス関係者などです。

「たのしいRuby,おいしいMitaka」をコンセプトに三鷹市周辺の飲食店を会場に開催しており,懇親会の後にLT(Lightning Talks)をするのが通例です。参加人数は20~40人で武蔵野エリアを中心に東京全域から参加があります。

Mitaka.rb #10でLTさせていただきました。

このブログで書いてきたPyhaについて話してきました。Pyhaのv0.0.1をリリースしたので是非。

Pyha - CMS for Cloud

食事がとても美味しかったです。運営に関わられた皆様ありがとうございます。