僕は発展途上技術者

WordPress のブログを Lokka に移行(第3部) - Redirect プラグインを作りました

» Lokkathon #11 : ATND

に参加してきました。WordPress で書かれているこのブログを Lokka に移行するプロジェクトの3回目。

これまでやったことは、

» WordPress のブログを Lokka に移行しようとしています(まだ途中) : 僕は発展途上技術者

» WordPress のブログを Lokka に移行(第2部) : 僕は発展途上技術者

に書いています。

今回やりたかったことは WordPress スタイルの URL を Lokka スタイルの URL にリダイレクトすること。たとえばこのブログだと、今月のエントリーが見られる

http://blog.champierre.com/archives/date/2011/09/

という URL は Lokka 移行後は

http://blog.champierre.com/2011/09/

というスタイルの URL にリダイレクトしたい。

正規表現でリダイレクトのルールを作成すれば、その通りリダイレクトされるプラグインを作成することにしました。

lokka-redirect プラグイン

今回も @komagata さんにいろいろ聞いて、相当助けてもらいました。

当たり前ですが、Lokka を開発している本人に聞けばほとんどのことは解決、Lokkathon に参加することでかなり捗りました。

» champierre/lokka-redirect - GitHub

からインストールできます。

redirect プラグインの管理画面で以下のようにルールを設定すれば、WordPress スタイルの URL を Lokka スタイルの URL にリダイレクトしてくれます。

僕は発展途上技術者 - Lokka

次回 Lokkathon

次回 Lokkathon は 10/5(水曜日)。

» Lokkathon #12 : ATND

準備はひと通り整った感じなので、いよいよこのブログを Lokka に移行する日が来ました。

次のエントリーはもしかしたら、Lokka からかもしれません。楽しみです。

WordPress のブログを Lokka に移行(第2部)

» Lokkathon #9 : ATND

に参加して、WordPress で書かれているこのブログを Lokka に移行するプロジェクトの続きをやりました。

前回やった内容は、

» WordPress のブログを Lokka に移行しようとしています(まだ途中) : 僕は発展途上技術者

で書いています。

前回までで残されたタスクは

1. http://blog.champierre.com/archives/928 といった同じ URL のままで個別の記事にアクセスできるよう Lokka 側で URL を Rewrite する仕組みを用意する
2. 画像などのメディアファイルも移行する
3. WordPress では改行2つがpタグに自動的に変換されていたのが、Lokka では変換されないため、段落がまったくなくなってしまうのを何とかする

の3つ。このうち、2 と 3 を片付けました。

画像などのメディアファイルを移行

これはとても簡単。

Wordpress で使っていた画像は wp-content/uploads 以下にあったので、これをゴソッと Lokka の public 以下に移して難なく完了。

TextMate

WordPress の p タグ問題

WordPress では本文中に改行2つがあると p タグに、改行1つを br タグにそれぞれ自動的に変換して表示してくれます。

しかし、これに頼って書かれたエントリーのデータ自体に p タグや br タグが差し込まれるわけではないため、エクスポートしたデータを Lokka にインポートすると、WordPress では段落分けされて表示されていたデータは、ズラッと一行になって表示されてしまいます。

これを何とかしないといかん、ということで最初、rails の simple_format のソースを参考にして、改行2つを p タグに、改行1つを br タグに一気に変換したあとインポートしてみました。

一見うまくいきそうなのですが、これだと例えば pre の中の改行2つや改行1つまで変換されてしまいます。そんな感じで例外を考えていくときりがなくて途方に暮れてしまいました。

一緒に調べてくれた @komagata さんが WordPress のソースを見てくれて、じゃあ WordPress が行っている処理を Lokka に移植すればいいんじゃないかと、なったのですが、実際にみてみると、preg_replace (置換)の嵐でとても移植する気になれません。

p タグや br タグへの自動変換は wpautop という関数でおこなわれていることを @komagata さんが突き止めてくれて、そのソースを見ていたのですが、そこでひらめきました。WordPress のエクスポートの処理に wpautop をはさめば p タグへの変換をしたあとの結果が xml ファイルに吐き出されるんではないかと。

そこで、前回のように wp-admin/includes/export.php を開き、以下の 369 行目の部分を変更、$post->post_content を wpautop で処理した上で xml に吐き出すようにしたところ、うまくいきました。

前回、こんな感じで段落がなかったところが

この通りバッチリです。

lokka.dev

残るは、

1. http://blog.champierre.com/archives/928 といった同じ URL のままで個別の記事にアクセスできるよう Lokka 側で URL を Rewrite する仕組みを用意する

の Rewrite 問題、次回の Lokkathon で取り組みます。

» Lokkathon #10 : ATND

WordPress のブログを Lokka に移行しようとしています(まだ途中)

» Lokkathon #8 : ATND

に参加して、WordPress で書かれているこのブログを Lokka に移行するプロジェクトに取り組みました。

タイトル通り、まだ途中の段階での記録ですが、結構いいところまで行ってます。もうあと数歩といった段階。

Lokka に WordPress のデータをインポートするには、WordPress のエクスポート機能を使って吐き出す WordPress eXtended RSS と呼ばれる xml ファイルが必要です。

ところがこのブログが使っている WordPress ME2.0.5 は結構古いバージョンであるため、エクスポート機能がついていません。

そこで、まずは最新の WordPress 3.2.1 の環境を用意し、そこにこのブログのデータを流し込むという作業から始めました。

WordPress 3.2.1 を Mac で動かす

WordPress 3.2.1 の環境は、ローカルの Mac に用意することにしました。

最初の難関は PHP が動く環境を用意すること。

» Pow: Zero-configuration Rack server for Mac OS X

を使っているため、ローカルへのアクセスはすべて Pow に横取りされてしまい、Apache にアクセスがいかない。

そこで、IPv4 と IPv6 を使い分ける方法で Pow と Apache を共存させます。詳しくは以下の記事を御覧ください。

» Pow and Apache Side-by-Side - Jerod Santo

httpd.conf の

LoadModule php5_module        libexec/apache2/libphp5.so

のコメントアウトを外し、http-vhosts.conf に以下を追加。

<VirtualHost *:80>
  ServerName blog
  DocumentRoot "[home dir]/php/blog"
  ErrorLog [home dir]php/blog/log/error.log
  CustomLog [home dir]/php/blog/log/access.log common
  <Directory "[home dir]/php/blog">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

WordPress eXtended RSS を作成

サーバー側にログインし、ブログのデータを保存している mysql の DB をダンプ、ローカルの DB にリストアします。

WordPress のホームページより WordPress 3.2.1 をダウンロードし、ファイルを http-vhosts.conf で追加した DocumentRoot に置きます。

本当は、テーマファイルなどもコピーしないと完全な移行にはならないのですが、データをエクスポートさえできればいいので、データの移行だけで十分です。

wp-config-sample.php を wp-config.php にコピーし、データベースの情報を書き換えます。

ひとつはまったのは、MySQL のホスト名。

localhost に指定したらうまく接続できず、127.0.0.1 に変えたところ動くようになりました。

/** MySQL hostname */
define('DB_HOST', '127.0.0.1');

http://[wordpress に割り当てた ServerName]/wp-login.php で初めてログインすると、データベースのアップグレードを WordPress 側がよろしくやってくれます。

しばし待つと無事管理画面が開けました。

テーマファイルなどがないため、ブログの表示はまともにはできないですが、管理画面の Tools > Export さえ使えれば OK。

ただし、WordPress のエクスポート機能には

» #15203 (Export function does not properly escape ]]> (CDATA)) – WordPress Trac

でも報告されている をエスケープしてくれないというバグがあり、ソースコードを貼り付けていることが多い僕のブログも影響を受けてしまっていました。

Lokka へのインポートのときに を含むエントリーでインポートが止まってしまい、以降のエントリーがインポートされなくなっていました。

そこで、wordpress の wp-admin/includes/export.php を開き、126 行目の部分を追加。

エクスポートを実行し wordpress.2011-08-31.xml というファイルが吐き出されて一安心。

Export ‹ 僕は発展途上技術者 — WordPress

Lokka にインポート

ようやく Lokka 登場です。

インポート機能は最新バージョンの Lokka に実装されているので、まだ Lokka をインストールしていなければ、

git clone git://github.com/komagata/lokka.git

でインストールしましょう。すでにインストール済みの場合は git pull です。

Lokka の管理画面に入り、左メニューの一番下の方にインポートがあります。

僕は発展途上技術者 - Lokka

WordPress でエクスポートした xml ファイルを選んで、「WordPressからのインポート」を押すとインポートが始まります。

WordPress でドラフト状態の投稿を残したままインポートをおこなうと途中でエラーとなる問題がありましたが、

» Comparing 0fb46d0...718137e for komagata's lokka - GitHub

でコミットを push しておきました。

僕のブログの場合は、以上でインポート無事完了。

以下の感じで一応は Lokka にインポートされました。

lokka.dev

残されたタスク

残されたタスクは以下の通り。

  1. http://blog.champierre.com/archives/928 といった同じ URL のままで個別の記事にアクセスできるよう Lokka 側で URL を Rewrite する仕組みを用意する
  2. 画像などのメディアファイルも移行する
  3. WordPress では改行2つがpタグに自動的に変換されていたのが、Lokka では変換されないため、段落がまったくなくなってしまうのを何とかする

これらを次回の

» Lokkathon #9 : ATND

以降で解決していきます。

WordPress を Lokka に移行したいという方、一緒に参加しましょう。

任天堂の偉大さを感じる「ゲーム&ウォッチコレクション」

ポイントが貯まったのでゲットしたニンテンドーDS用「ゲーム&ウォッチコレクション」が届いた。

「ドンキーコング」「オイルパニック」「グリーンハウス」の3本が収録されているのだが、さっそく「ドンキーコング」にはまるこどもたち。

曰く「昔のゲームは簡単なのに面白い」とのこと。

簡単なのに、というのはグラフィックやBGMが豪華でなくても、という意味だと思う。

おっさんが昔を懐かしがって言う台詞ならそうでもないが、最近のゲームをやりまくって目が肥えた息子たちが言う台詞は重みが違う。

30年経っても「面白い!」と言わせるゲームを作った任天堂の偉大さを感じる。

さらにすごいのは、シンプルであるゆえに、「あとで自分で作ってみよう」とこども達の想像力をかきたてるところ。

スクラッチ(最近はまっている教育用プログラミング)でさっそく自分版ドンキーコングをつくるのだそうだ。

Scratch を使ってデータ処理、夏休み期間中のピーク時電力使用量をcsvファイルより抜き出す

長男が自由研究の題材として電力使用量を調べたいというので、東京電力のホームページより過去の電力使用実績データをダウンロードしてきてグラフにすることにしました。

ちょうどいい題材だと思ったので、Scratch でやったらと提案、数字のリストをグラフ化するところは、いろいろと手助けしながらもなんとか自分で進めていけそうなのですが、

» TEPCO : でんき予報|過去の電力使用実績データのダウンロード

からダウンロードできる csv データから必要なデータだけ抽出するところだけは大人力を発揮 :-)

2011/7/20,18:00,3834

といった形で日付、時刻、電力使用量が並んでいるデータから、ビーク時と思われる 14:00 の電力使用量だけを抽出するという処理を Scratch でやってあげました。

カンマ区切りの文字列から最後の部分だけを抽出、14:00 のデータだけを採用するという部分はこんな感じでうまくいきます。

電力使用料を抜き出す- Scratch
Uploaded with Skitch!

実行するとガシガシデータを処理してくれて、自動で動くさまをこどもたちも、「おー、Scratch が働いてくれてるー」と感心しながら眺めていました。

Scratch Project

文字列処理にも使えて Scratch の強力さを改めて思い知りました。

「かなぶん」が3歳〜小学3年生の女児向け雑誌「ぷっちぐみ」で紹介されました

» 「かなぶん」が3歳〜小学3年生の女児向け雑誌「ぷっちぐみ」で紹介されました | つくる社LLC

ということでさっそく買って来ました。

なんとなく並べてみました、MacBook Air と「ぷっちぐみ」。

おー、載ってる!

小学生低学年の女の子もスマートフォンを使いこなす、すごい時代になりました。

小学館様、「かなぶん」を見つけてくださった担当者様、どうもありがとうございます。

» ことばであそぼう ひらがな知育ゲーム「かなぶん(カナブン)」

» 小学館ファミリーネット|ぷっちぐみ

Scratch.app for iOS : Run any Scratch project on your iPhone/iPad

I made the joke Scratch project below. This is a story that my wish(or curse :-)) might come true a little.

このプロジェクトについてもっと知る

I sent an email to Mr. John M McIntosh(@squeaker68882), the developer of Scratch.app for iOS(Scratch.app existed a while in App Store until it was sadly rejected later) asking if there is a way to personally build the app on my iPhone and iPad. He kindly pointed me where I can get the source code.

I built it with Xcode. At first, the app could just start but any Scratch project did not run. I followed John's advice that probably URL for download the projects might be changed, so I changed the source code and I could finally made it run.

It is very nice that John also published the source on GitHub so that anyone can contribute.

Twitter / @squeaker68882: Scratch.app for iOS goes t ...

» johnmci/Scratch.app.for.iOS - GitHub

Anyone who has iOS Developer Account can git clone the source and build it for iPhone or iPad.

I am sorry that not everyone can do this, but if you have some friends who have the build environment, why don't you ask him/her?

I help a volunteer group that teaches Scratch to kids

» こどもプログラミングサークル‘スクラッチ’

and also hold the following Scratch Meetup.

» 大人のための Scratch 勉強会 #4 : ATND

If you have iPhone or iPad, catch me at that place and ask me to build the app for you.

Scratch のプロジェクトを iPhone/iPad 上で動かせる Scratch.app for iOS

Scratch で Apple と Steve Jobs を揶揄する動画をつくった願い(呪い?)が通じたのでしょうか?

» Please Mr. Jobs : 僕は発展途上技術者

iPhone/iPad 上で Scratch のプロジェクトを動かせる Scratch.app for iOS の開発者 John M McIntosh(@squeaker68882) 氏に、「Scratch.app が AppStore で却下されたのは悲しい。なんとか僕の iPhone/iPad で動かしたいんだ 」という旨のメールを送ってみたところ、快くソースコードを送っていただきました。

最初、Xcode でビルドしてみて動かしてみたところ、起動はするのですが、Scratch プロジェクトを動かすことができませんでした。「Scratch のサイトがアップデートされいくつか URL が変わっているので該当部分をいじれば動くんじゃないか」という John 氏のアドバイス通り修正してみたところ、動かすことに成功!

さらに、GitHub でソースを公開すれば興味がある人が貢献できていいのではないか、と進言してみたところ、すぐ公開されました。素晴らしいです。

Twitter / @squeaker68882: Scratch.app for iOS goes t ...

» johnmci/Scratch.app.for.iOS - GitHub

これで、iOS のデベロッパーアカウントを持っていて、実機で動かす環境を持っている人は、上記よりソースを git clone してビルドすれば Scratch.app を動かすことができます。

残念ながら一般のユーザーが誰でも使えるというわけにはいかないですが、まわりに実機でビルドできる環境を持っている人がいたら、お願いしてみてはどうでしょうか。

僕も、こどもたちにスクラッチを教える

» こどもプログラミングサークル‘スクラッチ’

で少しお手伝いをしていたり、

» 大人のための Scratch 勉強会 #4 : ATND

といった勉強会を主催しているので、そういった場で遠慮なく声をかけてください。お持ちの実機で使えるようにビルドします。

「はんだづけカフェ」で Scratch につなげて遊べる「なのぼ〜ど」を作ってきました

週末、末広町にある「はんだづけカフェ」に行ってきて、Scratch につなげてフィジカルコンピューティングが楽しめる「なのぼ〜ど」を作ってきました。

» おとなも なのぼ~ど を作ろう! « ちっちゃいものくらぶ

「なのぼ〜ど」は、簡単に言うと、ゲームなどが簡単に作れる教育用プログラミング言語の Scratch とつなげ、光センサやマイク、スライダなどで遊ぶことができるちっちゃいボードなのです。と言ってもややこしいので以下の動画を見て下さい。

これを自作することで低価格で作れてしまうのです(価格など詳細はなのぼ~ど 頒布はじめました « ちっちゃいものくらぶを参照してください)。しかも設計した @tomonnn1 さん直々の教えを受けながら組み立てていける、というぜいたくな機会でした。

では、さっそく写真とともにレポートしていきます。

はんだづけカフェは、末広町にある 3331 Arts Chiyoda という施設に入っています。着いてみて、外観をみると。。。あれ?これって学校です。

もとは中学校だった校舎がいい感じで改造されています。昔懐かしい手洗い所のところにフロアマップが描かれています。

はんだづけカフェはこんな場所。

今回、半田ごてなどの工具一式は貸していただけました。

こいつらをボードにはんだ付けしていくわけです。

まずは各種抵抗をはんだ付けしたところ。茶黒赤で 1KΩ とか、昔技術家庭の授業でやったなー。

ちょうど半分くらいまではんだ付けしたところで、@tomonnn1 さん直々のチェックが入ります。なんか先生にチェックしてもらっている生徒の気分、緊張します。

試験用の PC に USB ケーブルをつなげ、接続チェック。おー、ばっちり認識されてます。ポートのところの Profic なんちゃら、ってやつです。

その後は、いろいろとコツも教わり、スピードもアップ!!これで工場でバイトできるんじゃないか、とか勘違いしながら、順調にはんだ付けしていき。。。

完成!!かかった時間は2時間半くらいでした。

自分の Mac にドライバをインストールし、なのぼ〜どをつなげてすべてのセンサをチェック。全部ちゃんと動いたときは感動ものです。

今回こどもたちの都合がつかなかったので、我が家からは僕一人の参加だったのですが、ほかの参加者は親子で参加。こども達がはんだ付けをしていました。これまで何組かサポート、指導してきた @qramo さん、@tomonnn1 さんによると、大人は油断してよく間違えるが、こども達は注意深くやるから間違えない、とのこと。こども達が組み立ててきたなかで、これまで動かなかったことはなかったそうです。

こどもでも作れてしまう自作ボードを、こどもでもプログラミングできるゲームにつなげることができる。いやーすごい時代になりました。

なのぼ〜ど、作ってみたいというかたは、頒布もおこなっている

» ちっちゃいものくらぶ

をチェックするといいと思います。

うちの子にも Scratch やらせてみたいという方は、

» こどもプログラミングサークル‘スクラッチ’

で定期的におこなわれているワークショップに参加するといいかもしれません。

また、僕が主催で、大人のための Scratch 勉強会というのもやっているので、こどもに Scratch をやらせてみたい、あるいは自分がやってみたいという大人の方(Scratch はプログラミングを覚えたいという昔こどもだった方にもおすすめです)はぜひ。

» 大人のための Scratch 勉強会 #3 : ATND

» 大人のための Scratch 勉強会 #4 : ATND

Please Mr. Jobs

Learn more about this project

教育用プログラミング言語 Scratch で作ったジョークプロジェクトです。。

以前、Scratch Viewer for iPhone という iOS 上で Scratch のプロジェクトを動かせるアプリが一度は公開されたのですが、Apple の方針によりその後削除されてしまいました。(参考 ScratchがiPhoneにやってきた! « こどもプログラミングサークル‘スクラッチ’)

せっかくこどもでも簡単に使える UI を持っている iPhone や iPad なのに、Scratch が動かないなんて残念過ぎる、Jobs さんなんとかならないの?というのを表現してみました。

Scratch って何?興味あるって方は、下記やっていますので、気兼ねなくご参加ください。

» 大人のための Scratch 勉強会 #3 : ATND
» 大人のための Scratch 勉強会 #4 : ATND

Recent Entries

Recent Comments

Tags

Archives

Admin