<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>橋本商会 &#187; wordpress</title>
	<atom:link href="http://shokai.org/blog/archives/tag/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://shokai.org/blog</link>
	<description>なんか作ったりした記録を忘れないうちに書くblog</description>
	<lastBuildDate>Mon, 06 Feb 2012 13:32:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com/" />
			<item>
		<title>さくらのWordPressを2.9から3.1へアップデート</title>
		<link>http://shokai.org/blog/archives/5534</link>
		<comments>http://shokai.org/blog/archives/5534#comments</comments>
		<pubDate>Tue, 31 May 2011 20:40:20 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[sakura]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=5534</guid>
		<description><![CDATA[ずっと面倒でやってなかった、さくらのレンタルサーバーで動かしているwordpress2.9を3.1にアップデートを行った。 文字化けで死ぬかと思った！！！ このへんを見ながらやった。 さくらインターネットでWordPre [...]]]></description>
			<content:encoded><![CDATA[<p>
ずっと面倒でやってなかった、さくらのレンタルサーバーで動かしているwordpress2.9を3.1にアップデートを行った。<br />
文字化けで死ぬかと思った！！！<br />
<br />
<br />
<br />
このへんを見ながらやった。<br />
<ul>
  <li><a href="http://bloggingfrom.tv/wp/2010/01/10/3223">さくらインターネットでWordPressを2.9にアップデートするためにMySQLをバージョンアップ &#8211; カイ士伝</a></li>
  <li><a href="http://bamboostudio.tank.jp/archives/1692">さくらインターネットのレンタルサーバで WordPress 2.9 へアップグレードできない方へ &#8211; Bamboo Studio ＊ バンブースタジオ | Blog™</a></li>
  <li><a href="http://site-ichijo.net/blog/archives/date/2009/1222-233915.php">WordPress2.9へ、MySQL4.0から5.1へ＠さくらのレンタルサーバ : *n.on.log</a></li>
</ul>
<br />
が、文字化けした。状況としては、<br />
<ul>
  <li>PHPMyAdminでのimport時に、記事が全件読み込まれない</li>
  <li>文字化けしている</li>
  <li>新規作成したMySQL5.1はutf-8でデータベースを作成した</li>
  <li>SQLファイルをnkfでutf-8に変換してからPHPMyAdminでimportすると全件読み込まれたが、依然文字化けしている</li>
  <li>WordPress上でも、コントロールパネルのPHPMyAdmin上でも、どちらも文字化けしている</li>
  <li>SQLファイルにexportした時点で18MBあった</li>
  <li>bzipに圧縮してexportすると2MBぐらいになった。でもこれをimportさせてもダメ。</li>
  <li>そもそもexportしたSQLファイルの文字コードをnkf -gで調べてもBINARYと表示される</li>
</ul>
<br />
<br />
<br />
文字化けの原因がよくわからない。<br />
どうも最初にMySQL4.xをセットアップしたときに文字コードをutf8ではない物にしていたっぽい。そして書き出しの時に文字コードをutf8に指定しなかったかもしれない。どちらも思い当たるフシがある。<br />
<br />
<br />
まあ文字化けの原因はどうでもいいので、今あるデータを加工して確実な方法でimportすればいいか、と思ってやってみたらうまくいった。<br />
<br />
<br />
■解決方法<br />
DBは削除して、utf8で新規作成する。PHPMyAdminは使わない。<br />
<br />
<br />
exportしてきたshokai.sqlをMacでnkfでutf8にする<br />
<pre>
nkf -u shokai.sql > shokai_utf8.sql<br />
</pre>
<br />
ファイルの10行目あたりの<br />
<pre>
/*!40101 SET NAMES ujis */;<br />
</pre>
を<br />
<pre>
/*!40101 SET NAMES utf8 */;<br />
</pre>
に修正し、さくらレンタルサーバーに転送。<br />
<br />
<br />
terminalでsshでさくらにログインして、<br />
<pre>
mysql shokai < shokai_utf8.sql -h mysql1234.db.sakura.ne.jp -u shokai -p<br />
</pre>
これで文字化けせずにいけた。<br />
<br />
さくらにsshでログインできない人は、適当なUNIXマシンにMySQL5.1をインストールして、そこからmysqlコマンドを使えばimportできると思う。<br />
<br />
<br />
※データベースの名前や、テーブル名（サーバー名と同じ）は適宜自分の環境に変更すること。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/5534/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressにFacebook like buttonプラグインをインストールした</title>
		<link>http://shokai.org/blog/archives/5151</link>
		<comments>http://shokai.org/blog/archives/5151#comments</comments>
		<pubDate>Fri, 30 Apr 2010 06:57:20 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=5151</guid>
		<description><![CDATA[FacebookのlikeボタンのWordPress用プラグインがあったのでインストールした。 Creating a WordPress plugin: Add the new Facebook Like button  [...]]]></description>
			<content:encoded><![CDATA[<p>
FacebookのlikeボタンのWordPress用プラグインがあったのでインストールした。<br />
<br />
<a href="http://blog.bottomlessinc.com/2010/04/creating-a-wordpress-plugin-add-the-new-facebook-like-button-to-your-posts/">Creating a WordPress plugin: Add the new Facebook Like button to your posts  Bottomless, Endless</a><br />
<br />
<br />
<pre>
wget http://blog.bottomlessinc.com/wp-content/uploads/2010/04/like.zip<br />
unzip like.zip<br />
cp like/tt_like_widget.php /path/to/blog/wp-content/plugins/<br />
</pre>
<br />
<br />
でWordPressのダッシュボードからpluginを有効化して、設定する。<br />
<br />
Facebook User IDは<a href="http://wiki.developers.facebook.com/index.php/User_ID">User ID &#8211; Facebook Developer Wiki</a>で自分の名前をクリックしたら表示された。<br />
<br />
blogのcssがいけないのか、Show Facesチェックボックスを入れていても顔アイコンが表示されなかった。plugin設定ページでHeightを70にしたら表示された。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/5151/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WP PubSubHubbubインストール</title>
		<link>http://shokai.org/blog/archives/4733</link>
		<comments>http://shokai.org/blog/archives/4733#comments</comments>
		<pubDate>Sun, 16 Aug 2009 00:08:58 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[PubSubHubbub]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4733</guid>
		<description><![CDATA[wordpressのPubSubHubbubプラグインをインストールした。 WordPress › WP Pubsubhubbub WordPress Plugins でもプラグインが動いてないような・・・LDRもGoo [...]]]></description>
			<content:encoded><![CDATA[<p>
wordpressのPubSubHubbubプラグインをインストールした。<br />
<a href="http://wordpress.org/extend/plugins/wp-pubsubhubbub/installation/">WordPress › WP Pubsubhubbub  WordPress Plugins</a><br />
<br />
でもプラグインが動いてないような・・・LDRもGoogleReaderも即更新はされない。よくわからないけどgoogle側が調子悪いのかもしれないししばらく様子見する。<br />
<br />
<pre>
cd wp-content/plugins<br />
wget http://downloads.wordpress.org/plugin/wp-pubsubhubbub.zip<br />
unzip wp-pubsubhubbub.zip<br />
rm wp-pubsubhubbub.zip<br />
</pre>
<br />
管理画面から有効化するだけ。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4733/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Related Posts Pluginインストール</title>
		<link>http://shokai.org/blog/archives/4730</link>
		<comments>http://shokai.org/blog/archives/4730#comments</comments>
		<pubDate>Sat, 15 Aug 2009 23:43:45 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4730</guid>
		<description><![CDATA[このblog(wordpress)で使っているinoveテーマをアップデートしたので、LDRize/AutoPagerizeが動くようにするためにmicroformatsを埋め込んだりやってたらwp23_related_ [...]]]></description>
			<content:encoded><![CDATA[<p>
このblog(wordpress)で使っている<a href="http://wordpress.org/extend/themes/inove">inoveテーマ</a>をアップデートしたので、<a href="http://shokai.org/blog/archives/4308">LDRize/AutoPagerizeが動くようにする</a>ためにmicroformatsを埋め込んだりやってたらwp23_related_postsというプラグインがあるか判定をしている箇所があった。<br />
<br />
調べてみた。<a href="http://wordpress.org/extend/plugins/wordpress-23-related-posts-plugin/">発見した。</a>記事のtagで類似度を判定して似た記事のリストを返すプラグインだった。<br />
たぶん本文は解析してない。<br />
<br />
<br />
インストールしよう<br />
<pre>
cd wp-content/plugins<br />
wget http://downloads.wordpress.org/plugin/wordpress-23-related-posts-plugin.1.0.zip<br />
unzip wordpress-23-related-posts-plugin.1.0.zip<br />
rm wordpress-23-related-posts-plugin.1.0.zip<br />
</pre>
<br />
wordpressの管理画面からpluginを有効化すると、設定タブの下の方にWordPress Related Postsという設定項目が現れる。<br />
表示する記事数などが設定できる。<br />
inoveテーマではwp23_related_postsがあるか確認して表示しているけど、設定画面から記事の下に自動的に挿入するというオプションもある。<br />
<br />
<pre class="prettyprint">
if(function_exists('wp23_related_posts'))&nbsp;{<br />
&nbsp;&nbsp;wp23_related_posts();<br />
}<br />
</pre>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4730/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>google-code-prettifyをインストール</title>
		<link>http://shokai.org/blog/archives/4637</link>
		<comments>http://shokai.org/blog/archives/4637#comments</comments>
		<pubDate>Thu, 30 Jul 2009 17:26:00 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4637</guid>
		<description><![CDATA[google-code-prettify &#8211; Project Hosting on Google Code wget http://google-code-prettify.googlecode.com/fi [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://code.google.com/p/google-code-prettify/">google-code-prettify &#8211; Project Hosting on Google Code</a><br />
<br />
<pre class="prettyprint">
wget http://google-code-prettify.googlecode.com/files/prettify-21-May-2009.zip<br />
unzip prettify-21-May-2009.zip<br />
</pre>
<br />
srcとtestsのディレクトリが解凍されたので、httpで見える場所に置く<br />
<pre class="prettyprint">
mkdir ~/www/shokai.org/js<br />
cp -R src/ ~/www/shokai.org/js/pre<br />
</pre>
<br />
inoveテーマを使っているので、 wp-content/themes/inove/header.php を編集<br />
headの中に<br />
<pre class="prettyprint">
  &lt;script type="text/javascript" src="http://shokai.org/js/pre/prettify.js"&gt;&lt;/script&gt;<br />
  &lt;link rel="stylesheet" type="text/css" href="http://shokai.org/js/pre/prettify.css" /&gt;<br />
</pre>
<br />
bodyタグを修正<br />
<pre class="prettyprint">
  &lt;body onload="prettyPrint()"&gt;<br />
</pre>
<br />
これでpreやcodeタグでclass=&#8221;prettyprint&#8221;すれば色が付く<br />
<br />
さすがに&gt;や&lt;は&amp;gt;と&amp;lt;に置換しないとならんかった<br />
line-heightが広くなりすぎたのでcssで修正<br />
<br />
c++テスト<br />
<pre class="prettyprint">
#include "cv.h"<br />
#include "highgui.h"<br />
#include &lt;boost/program_options.hpp&gt;<br />
#include &lt;iostream&gt;<br />
using namespace boost;<br />
using namespace std;<br />
<br />
int main(int argc, char* argv[]) {<br />
  program_options::options_description opts("options");<br />
  opts.add_options()<br />
    ("help,h", "ヘルプを表示")<br />
    ("cascade,c", program_options::value&lt;string&gt;(), "haarcascade設定ファイル")<br />
    ("input,i", program_options::value&lt;string&gt;(), "入力画像ファイル名")<br />
    ("output,o", program_options::value&lt;string&gt;(), "出力ファイル名")<br />
    ("preview,p", "プレビュー表示");<br />
  program_options::variables_map argmap;<br />
  program_options::store(parse_command_line(argc, argv, opts), argmap);<br />
  program_options::notify(argmap);<br />
  if (argmap.count("help") || !argmap.count("cascade") || !argmap.count("input")) {<br />
    cerr &lt;&lt; "cascadeとinputが必要です" &lt;&lt; endl;<br />
    cerr &lt;&lt; opts &lt;&lt; endl;<br />
    return 1;<br />
  }<br />
  <br />
  CvHaarClassifierCascade *cascade;<br />
  cascade = (CvHaarClassifierCascade*)cvLoad(argmap["cascade"].as&lt;string&gt;().c_str(), 0, 0, 0);<br />
  if(!cascade){<br />
    cerr &lt;&lt; "error! Cascade not Found" &lt;&lt; endl;<br />
    return -1;<br />
  }<br />
  <br />
  IplImage *image = cvLoadImage(argmap["input"].as&lt;string&gt;().c_str());<br />
  if(!image){<br />
    cerr &lt;&lt; "error! Image File not Found" &lt;&lt; endl;<br />
    return -11;<br />
  }<br />
  <br />
  CvMemStorage *storage = 0;<br />
  storage = cvCreateMemStorage(0);<br />
  CvSeq* faces = cvHaarDetectObjects(image, cascade, storage,<br />
                                     1.1, 2, CV_HAAR_DO_CANNY_PRUNING,<br />
                                      cvSize(30, 30));<br />
<br />
  bool isOutput = (argmap.count("preview")||argmap.count("output"));<br />
  for(int i = 0; i &lt; faces-&gt;total; i++){<br />
    CvRect *rect = (CvRect*)cvGetSeqElem(faces, i);<br />
    cout &lt;&lt; "x:" &lt;&lt; rect-&gt;x &lt;&lt; ", y:" &lt;&lt; rect-&gt;y<br />
         &lt;&lt; ", width:" &lt;&lt; rect-&gt;width &lt;&lt; ", height:" &lt;&lt; rect-&gt;height &lt;&lt; endl;<br />
    if(isOutput){<br />
      CvPoint center;<br />
      center.x = rect-&gt;x + rect-&gt;width/2.0;<br />
      center.y = rect-&gt;y + rect-&gt;height/2.0;<br />
      int r = (rect-&gt;width + rect-&gt;height)/4.0;<br />
      cvCircle(image, center, r, CV_RGB(255, 0, 0), 2, CV_AA, 0);<br />
    }<br />
  }<br />
<br />
  if(argmap.count("output")){<br />
    string out_filename = argmap["output"].as&lt;string&gt;();<br />
    cout &lt;&lt; "save! " &lt;&lt; out_filename &lt;&lt; endl;<br />
    cvSaveImage(out_filename.c_str(), image);<br />
  }<br />
  <br />
  if(argmap.count("preview")){<br />
    char winName[] = "haarcascade test";<br />
    cvNamedWindow(winName, CV_WINDOW_AUTOSIZE);<br />
    cvShowImage(winName, image);<br />
    while (1) {<br />
      if (cvWaitKey(1) == 'q') break;<br />
    }<br />
    cvDestroyWindow(winName);<br />
  }<br />
  <br />
  cvReleaseImage(&#038;image);<br />
  return 0;<br />
}<br />
</pre>
<br />
<br />
rubyテスト<br />
<pre class="prettyprint">
#!/usr/bin/env ruby<br />
require 'rubygems'<br />
require 'active_record'<br />
require 'feed-normalizer'<br />
require 'open-uri'<br />
require 'kconv'<br />
require 'yaml'<br />
require File.dirname(__FILE__) + "/model_post.rb"<br />
<br />
config = YAML::load open(File.dirname(__FILE__)+'/config.yaml')<br />
<br />
user = config["usernum"] # twitterID<br />
if user == nil<br />
  puts 'Error!: usernum not Found on config.yaml'<br />
  exit(1)<br />
end<br />
<br />
ActiveRecord::Base.establish_connection(<br />
                                        :adapter =&gt; 'sqlite3',<br />
                                        #:dbfile =&gt; ':memory:',<br />
                                        :dbfile =&gt; File.dirname(__FILE__) + '/db',<br />
                                        :timeout =&gt; 30000<br />
                                        )<br />
<br />
last = 10<br />
last = ARGV[0].to_i if ARGV[0].to_i &gt; 0<br />
first = 1<br />
first = ARGV[1].to_i if ARGV[1].to_i &gt; 0<br />
<br />
errors = Array.new<br />
for page in first..last<br />
  uri = "http://twitter.com/statuses/user_timeline/#{user}.atom?page=#{page}"<br />
  begin<br />
    if(config["user"] != nil &#038;&#038; config["pass"] != nil)<br />
      feed = FeedNormalizer::FeedNormalizer.parse open(uri, :http_basic_authentication =&gt; [config["user"], config["pass"]])<br />
    else<br />
      feed = FeedNormalizer::FeedNormalizer.parse open(uri)<br />
    end<br />
    <br />
  rescue<br />
    puts "feed fetch error! page:#{page}"<br />
    errors.push(page)<br />
    sleep 10<br />
    next<br />
  end<br />
  <br />
  puts uri<br />
  feed.entries.each{ |e|<br />
    if Post.find_by_uri(e.url) == nil<br />
      post = Post.create(:uri =&gt; e.url,<br />
                  :message =&gt; e.content.gsub(/&#(?:(\d*?)|(?:[xX]([0-9a-fA-F]{4})));/) { [$1.nil? ? $2.to_i(16) : $1.to_i].pack('U') },<br />
                  :time =&gt; e.last_updated<br />
                  )<br />
      puts post<br />
    end<br />
  }<br />
  puts "-----page:#{page} (#{first}-#{last}) finished-----"<br />
  sleep 10 if page &lt; last<br />
end<br />
<br />
if errors.size &gt; 0<br />
  print "feed fetch error at page:"<br />
  puts errors.join(' ')<br />
end<br />
</pre>
<br />
<br />
jsテスト<br />
<pre class="prettyprint">
var radio = new Object();<br />
radio.id = 1;  <br />
radio.channel = 15;<br />
<br />
var led = new Object();<br />
led.pin = 7;<br />
led.state = false;<br />
pinMode(led.pin, true); // 出力設定<br />
<br />
nodes = new Array(16);<br />
for(i = 1; i &lt; nodes.length; i++){<br />
	nodes[i] = new Node(i);<br />
}<br />
<br />
radioInit(0xDEAD, radio.id, radio.channel, 31);<br />
serialInit(9600);<br />
<br />
for(i = 0; i &lt; 6; i++){<br />
	pinMode(i, true); // pull-up<br />
}<br />
<br />
<br />
function Node(id){ // Node型<br />
	this.id = id;<br />
	this.led = true;<br />
}<br />
<br />
function loop() {<br />
	for(i = 0; i &lt; 6; i++){	<br />
		if(serialAvailable()){<br />
			recv = serialRead();<br />
			serial_parse(recv);<br />
		}<br />
		if(digitalRead(i)){<br />
			id = i+6;<br />
			node = nodes[id];<br />
			digitalWrite(led.pin, led.state = !led.state);<br />
			request = "id:" + node.id + ",led:";<br />
			if(node.led) request += "1";<br />
			else request += "0";<br />
			radioSend(0xFFFF, request);<br />
			serialSend(request+"\r\n");<br />
			sleep(50);<br />
		}<br />
	}<br />
}<br />
<br />
function serial_parse(data){<br />
	for(i = 0; i &lt; data.length; i++){<br />
		c = data.charAt(i);<br />
		switch(c){<br />
			case "a":<br />
				nodes[6].led = false;<br />
				break;<br />
			case "b":<br />
				nodes[7].led = false;<br />
				break;<br />
			case "c":<br />
				nodes[8].led = false;<br />
				break;<br />
			case "d":<br />
				nodes[9].led = false;<br />
				break;<br />
			case "e":<br />
				nodes[10].led = false;<br />
				break;<br />
			case "f":<br />
				nodes[11].led = false;<br />
				break;<br />
			case "A":<br />
				nodes[6].led = true;<br />
				break;<br />
			case "B":<br />
				nodes[7].led = true;<br />
				break;<br />
			case "C":<br />
				nodes[8].led = true;<br />
				break;<br />
			case "D":<br />
				nodes[9].led = true;<br />
				break;<br />
			case "E":<br />
				nodes[10].led = true;<br />
				break;<br />
			case "F":<br />
				nodes[11].led = true;<br />
				break;<br />
		}<br />
	}<br />
}<br />
<br />
function sleep(count){<br />
	for(var i = 0; i &lt; count*10; i++){<br />
	}<br />
}<br />
<br />
while(true){<br />
	loop();<br />
}<br />
<br />
function pinMode(pin_id, mode){<br />
}<br />
<br />
function digitalWrite(pin_id, state){<br />
}<br />
<br />
function digitalRead(pin_id){<br />
}<br />
<br />
function analogWrite(pin_id){<br />
}<br />
<br />
function analogRead(pin_id){<br />
}<br />
<br />
function soundWrite(value){<br />
}<br />
<br />
function radioInit(panID, deviceID, channel){<br />
}<br />
<br />
function radioConnect(){<br />
}<br />
<br />
function radioSend(){<br />
}<br />
<br />
<br />
function radioClose(){<br />
}<br />
<br />
function serialInit(baudRate){<br />
}<br />
<br />
function serialAvailable(){<br />
}<br />
<br />
function serialRead(){<br />
}<br />
<br />
function serialSend(message){<br />
}<br />
<br />
function debug(message){<br />
}<br />
</pre>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4637/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AutoPagerize/LDRizeのmicroformatsを埋め込んだ</title>
		<link>http://shokai.org/blog/archives/4308</link>
		<comments>http://shokai.org/blog/archives/4308#comments</comments>
		<pubDate>Tue, 17 Mar 2009 02:13:28 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[AutoPagerize]]></category>
		<category><![CDATA[LDRize]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4308</guid>
		<description><![CDATA[wedataにSITEINFOを書くのではなく、wordpress2.7.1のHTMLにmicroformats埋め込んで設定した。 これでインデックスページやタグページなどで無限スクロールでjjjjkpjjpjpjkj [...]]]></description>
			<content:encoded><![CDATA[<p>
wedataにSITEINFOを書くのではなく、wordpress2.7.1のHTMLにmicroformats埋め込んで設定した。<br />
これで<a href="http://shokai.org/blog/">インデックスページ</a>や<a href="http://shokai.org/blog/archives/tag/tech">タグページ</a>などで無限スクロールでjjjjkpjjpjpjkjpoできる<br />
<br />
たいへん参考になった：<br />
<a href="http://alpha.mixi.co.jp/blog/?p=252">mixi Engineers’ Blog ? Find Job !がAutoPagerizeとLDRizeに対応</a><br />
<br />
<br />
HTMLってひとつのtagに複数classを設定する時は、スペース区切りで列挙できるんですね<br />
<br />
■LDRize対応<br />
wp-content/theme/テーマ個別ディレクトリ/ 以下の記事に関わるファイル全部修正し、jk移動に関わる情報を埋め込む<br />
<ul>
<li>記事1つのコンテナタグに class=&#8221;hentry&#8221; → スクロールする区切りになる</li>
<li>記事タイトルに class=&#8221;entry-title&#8221; → pした時に右下に記事タイトルがたまる</li>
<li>記事permalinkに rel=&#8221;bookmark&#8221; → vやoした時に開くリンク</li>
</ul>
<br />
<br />
■AutoPagerize対応<br />
wordpressの関数を修正する。次のページへのリンク要素を指定しておくと、自動で継ぎ足してくれる<br />
参考：<a href="http://www.jaco-bass.com/blog/2008/02/for-autopagerize-of-wordpress-site/">WordPress サイトの AutoPagerize 対応 &#8211; JACO-BASS</a><br />
wp-includes/link-template.php を編集<br />
<ul>
<li>function get_previous_posts_link</li>
<li>function get_next_posts_link</li>
</ul>
の最後でreturnしてるaタグ内にそれぞれ rel=&#8221;prev&#8221;とrel=&#8221;next&#8221; を追加<br />
<br />
autopagerizeの場合、prevはいらないか<br />
<br />
pageElementとinsertBeforeは書かなくても<a href="http://wordpress.org/extend/themes/inove">inoveテーマ</a>だと動いた<br />
<br />
<br />
LDRizeのほうはテーマに書けたからいいけど、AutoPagerizeはwordpress本体の関数を修正してるので本体アップデートでリセットされそう。毎回手動で書き直すしかない。</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4308/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress 2.7へアップグレード</title>
		<link>http://shokai.org/blog/archives/4069</link>
		<comments>http://shokai.org/blog/archives/4069#comments</comments>
		<pubDate>Tue, 06 Jan 2009 00:38:02 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[さくら]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/archives/4069</guid>
		<description><![CDATA[日本語版も出ていたのでアップグレードした。 さくらインターネットスタンダードプランなのでshellでやる 参考：WordPress のアップグレード &#8211; WordPress Codex 日本語版 プラグイン全 [...]]]></description>
			<content:encoded><![CDATA[<p>
日本語版も出ていたのでアップグレードした。<br />
さくらインターネットスタンダードプランなのでshellでやる<br />
<br />
参考：<a href="http://wpdocs.sourceforge.jp/WordPress_%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89">WordPress のアップグレード &#8211; WordPress Codex 日本語版</a><br />
<br />
プラグイン全停止してから<br />
<br />
</p>
<blockquote><p>mkdir ~/tmp<br />
cd ~/tmp<br />
wget http://ja.wordpress.org/wordpress-2.7-ja.zip<br />
unzip wordpress-2.7-ja.zip<br />
cp -R ~/www/blog/ ~/tmp/blog-backup<br />
rm -rf ~/www/blog/wp-admin/<br />
rm -rf ~/www/blog/wp-includes/<br />
cp -R ~/tmp/wordpress/ ~/www/blog/</p></blockquote>
<p>
一応バックアップして、wp-admin, wp-includeを削除してから上書き。<br />
wp-adminにアクセスするとDBがupdateされる。<br />
プラグインを有効化。Akismet, brBrbr, Ktai Entry, WP Multibyte Patch, WPtouch iPhone Theme<br />
<br />
テーマエディタで、タイトルが「記事名 blog名」になってるのが気に入らないので「blog名 記事名」に直す<br />
header.phpを<br />
</p>
<blockquote><p>&lt;title&gt;&lt;?php bloginfo(&#8216;name&#8217;); ?&gt;&lt;?php wp_title(); ?&gt;&lt;/title&gt;</p></blockquote>
<p>
<br />
<br />
しばらく様子みてから<br />
</p>
<blockquote><p>rm -rf ~/tmp/blog-backup</p></blockquote>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4069/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MT3.2からWordPress2.6に移行した時の不具合をWWW::Mechanizeで修正</title>
		<link>http://shokai.org/blog/archives/3424</link>
		<comments>http://shokai.org/blog/archives/3424#comments</comments>
		<pubDate>Fri, 19 Dec 2008 02:26:57 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WWW::Mechanize]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=3424</guid>
		<description><![CDATA[今年の春にSFCで動かしていたMovableType3.2が調子悪くなって、さくらに置いたWordPressに移行したわけだけど（さくらレンタルサーバ+wordpressにしてみた） その時に過去ページのいくつかが見えな [...]]]></description>
			<content:encoded><![CDATA[<p>
今年の春にSFCで動かしていたMovableType3.2が調子悪くなって、さくらに置いたWordPressに移行したわけだけど（<a href="http://shokai.org/blog/archives/1513">さくらレンタルサーバ+wordpressにしてみた</a>）<br />
その時に過去ページのいくつかが見えなくなる不具合があった。んで今朝からそれを解消するスクリプトを動かしている。今1000件目あたり。昼過ぎには完了するはず。<br />
<br />
どういう不具合かというと、wordpressにログインしていない人がアクセスしたページは404ステータスになる。apacheが吐く404ではなくwordpressが吐く404で、「エラー 404 &#8211; 見つかりませんでした」と出る。ログインしていると普通に記事を見る事が出来る。<br />
このせいで、俺は見れているのにURLを送ると「記事がないですよ」とみんなに言われて、原因を特定するのに時間がかかった。<br />
<br />
そしてその修正方法だが、単に個別記事編集画面で「保存」を押すだけでその記事は復活した。なぜだかわからない。<br />
さくらのコントロールパネルからMySQLのテーブルを見ても、どのテーブルが悪さしているのかよく分からなかったのでRubyのWWW::Mechanizeを使って全ページ「保存」ボタンを押しなおす事にした。<br />
<br />
WWW::Mechanizeはログインフォームにパスワードを入れたり、UserAgentを偽装してwebページにアクセスしたりできる非常に有用なモジュール。Perlでは使った事あったけどRubyでは今回が初。<br />
<br />
参考<br />
<ul>
	<li><a href="http://mono.kmc.gr.jp/~yhara/rubyscraping/?Mechanize">Ruby Scraping &#8211; Mechanize</a></li>
	<li><a href="http://mono.kmc.gr.jp/~yhara/d/?date=20070205">Greenbear Diary &#8211; RubyでHTMLとWebを操作するためのライブラリ、HpricotとWWW::Mechanize , HikiReload</a></li>
	<li><a href="http://d.hatena.ne.jp/kitamomonga/20081215/ruby_mechanize_faq_for_v_0_9">RubyのMechanizeのよくある質問 &#8211; きたももんががきたん。</a></li>
</ul>
<br />
<br />
<br />
必要なものをインストール<br />
</p>
<blockquote><p>sudo gem install mechanize hpricot</p></blockquote>
<p>
<br />
<br />
普通にwp-login.phpからログインしてdashboardへ行き、cookieを持った状態で各記事個別ページへ移動して保存ボタンを押していく。記事個別ページが連番で助かった。あと自分のサーバをいじめたくないのでsleepは長めにしてある<br />
<br />
shokai-blogfix.rb として保存<br />
</p>
<blockquote><p>
#!/usr/bin/env&nbsp;ruby<br />
require&nbsp;&#8217;rubygems&#8217;<br />
require&nbsp;&#8217;kconv&#8217;<br />
require&nbsp;&#8217;mechanize&#8217;<br />
require&nbsp;&#8217;pp&#8217;<br />
user&nbsp;=&nbsp;&#8221;username&#8221;<br />
pass&nbsp;=&nbsp;&#8221;password&#8221;<br />
<br />
puts&nbsp;&#8217;start&#8217;<br />
<br />
agent&nbsp;=&nbsp;WWW::Mechanize.new<br />
page&nbsp;=&nbsp;agent.get(&#8220;http://shokai.org/blog/wp-login.php&#8221;)<br />
login_form&nbsp;=&nbsp;page.forms_with(&#8220;loginform&#8221;).first<br />
login_form.log&nbsp;=&nbsp;user<br />
login_form.pwd&nbsp;=&nbsp;pass<br />
dashboard&nbsp;=&nbsp;agent.submit(login_form)<br />
<br />
puts&nbsp;&#8221;login:&nbsp;&#8221;&nbsp;+&nbsp;dashboard.title<br />
<br />
#&nbsp;各ページ処理<br />
for&nbsp;i&nbsp;in&nbsp;1..1558<br />
&nbsp;&nbsp;sleep&nbsp;10<br />
&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;=&nbsp;agent.get(&#8220;http://shokai.org/blog/wp-admin/post.php?action=edit&#038;post=#{i}&#8221;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;post_form&nbsp;=&nbsp;page.forms_with(&#8220;post&#8221;).first<br />
&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;=&nbsp;agent.submit(post_form)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;i.to_s+&#8221;success!&#8221;&nbsp;if&nbsp;page.body&nbsp;=~&nbsp;/投稿が更新されました/<br />
&nbsp;&nbsp;rescue<br />
&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;i.to_s+&#8221;error&#8221;<br />
&nbsp;&nbsp;end<br />
end<br />
<br />
puts&nbsp;&#8217;&#8211;finished&#8211;&#8217;<br />
</p></blockquote>
<p>
パスワードなどは適宜変更。<br />
URLもハードコーディングしている。1回しか使わないスクリプトだし</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/3424/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPressの投稿画面のアクセスキーがMacのemacsキーバインドとバッティングするのを無効化</title>
		<link>http://shokai.org/blog/archives/2359</link>
		<comments>http://shokai.org/blog/archives/2359#comments</comments>
		<pubDate>Thu, 11 Dec 2008 05:13:22 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=2359</guid>
		<description><![CDATA[素のwordpressだと、ctrl+dで文字を消そうとするとdelタグが挿入されたり、ctrl+aでアンカータグが入ったりする。 wp-includes/js/quicktags.jsとかをいじってうまくいったと思った [...]]]></description>
			<content:encoded><![CDATA[<p>
素のwordpressだと、ctrl+dで文字を消そうとするとdelタグが挿入されたり、ctrl+aでアンカータグが入ったりする。<br />
<br />
wp-includes/js/quicktags.jsとかをいじってうまくいったと思ったら、ctrl+Pはquicktags.jsと別の所で定義されていた。カーソル上に移動させようとしたら「公開」されてしまった。<br />
<br />
Firefoxの設定でやる方が良い<br />
<a href="http://retlet.net/log/2008/04/vimperator-accesskey-off.html">retlet.net &#8211; VimperatorのキーバインドとバッティングするのでFirefoxのaccesskeyを無効化</a><br />
about:configでui.key.generalAccessKey = 0にする。</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/2359/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPressで複数改行を有効にするプラグインを入れた</title>
		<link>http://shokai.org/blog/archives/2319</link>
		<comments>http://shokai.org/blog/archives/2319#comments</comments>
		<pubDate>Sat, 06 Dec 2008 17:41:49 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=2319</guid>
		<description><![CDATA[何行改行しても、空行が1行しか入らなくて困っていた。 CamCam WordPress　改行プラグインを使う ダウンロードして解凍してプラグインディレクトリに設置、ダッシュボードで有効にする wget http://ca [...]]]></description>
			<content:encoded><![CDATA[<p>
何行改行しても、空行が1行しか入らなくて困っていた。<br />
<br />
<a href="http://camcam.info/wordpress/101">CamCam  WordPress　改行プラグイン</a>を使う<br />
<br />
<br />
ダウンロードして解凍してプラグインディレクトリに設置、ダッシュボードで有効にする<br />
</p>
<blockquote><p>wget http://camcam.info/wps/wp-content/uploads/2007/02/brbrbrphp.zip<br />
unzip brbrbrphp.zip<br />
mv brBrbr.php ~/www/blog/wp-content/plugins/</p></blockquote>
<p>
<br />
大変ありがたい。<br />
preタグ内の改行が2つになってしまうのはしょうがないか<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/2319/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

