6月 14

WordPress2.8にアップグレードしてはいけない。むしろ使うな?

WordPressに待望の新バージョンが出たわけですが、自動アップグレードでWP以外のファイルが削除されるという不具合が発生しているようです。
この不具合は致命的な欠陥です。
フォーラムには手動でアップグレードすれば問題ないと書いてありますが、そもそも「ファイルを勝手に消してしまうコードがどこかにあるわけで、アップグレードの手段を変えただけで本当に回避できるのか?」と疑うべきでしょう。
もちろん、この不具合はアップグレード前、つまり2.7の自動アップグレード機能に問題がある可能性もあるわけですが、それらがはっきりしてない以上、余計なことをしない方がいいのかもしれません。

とはいえ、新し物好きな性分なので、別のサイトのWordPressを2.7.1から2.8に手動でアップグレードしてみることにしました。
特に凝ったこともやってないから、困ったことにはならないだろうという勝手な解釈です。
削除してからアップするべきだけど、2.7.1のときは問題なかったので完全に無視して、上書きで更新。
いよいよwp-adminにアクセスすると・・・画面真っ白。レスポンスヘッダは一応出力されているけど、コンテンツのサイズが0で、まったくの空っぽです。

とりあえず、ファイルを一度削除してアップしなおすことにしました。
これでとりあえず動くようにはなりましたが、今まで使っていたオリジナルのテンプレートが使えなくなってしまいました。
もうくだらないことに時間を割くのももったいないので、初期画面に戻してしばらく様子を見ることにしました。

WordPress2.8は改悪でしたね・・・

4月 18

wordpressでページの親子関係を動的に表示させる

実は今まで、ページの親子関係はいちいち手入力してました。
phpで組めばいいのですが、調べ方がとくわからなかったからです。
何気にふと検索したら、その方法が出ていました。

自分用に若干手を加えたので載せておきます。

<!-- structure tree view -->
<?php
global $wp_query;

if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
} ?>
<?php if(wp_list_pages("title_li=&child_of=$parent&echo=0" )): ?>
<ul>
<?php wp_list_pages("title_li=&child_of=$parent" ); ?>
</ul>
<?php endif; ?>
<!-- /structure tree view -->


テーマ編集、ページテンプレートに追加すると幸せになれることでしょう。
ただし、今見ているページから下のみを表示できるわけではなく、今見ているページから一番上の親から下の全てになります。

4月 04

イラストレーターのEPSデータを考察

イラストレータといっても、手持ちのは古いままで7でのお話です。
EPSで保存すると、プレビューとサムネールを保存するかどうかの確認がありますが、これはいったいどのように格納されているかを調べてみました。

調べるといっても、サムネイルもプレビューも含まないで保存したEPSファイルと、サムネイルまたはプレビューを含んだEPSファイルを比較しただけです。

保存したファイル名と保存日時のデータは無視して、それ以外を比較します。

まず、サムネイルを含んだEPSファイルを比較しました。
違っていたのは、以下のとおりです。
46行目にある
%AI7_Thumbnail: 128 128 8
から
%%EndData
これが、サムネイルデータのようです。
バイナリが16進で格納されているようです。
どの画像形式かはわかりませんが、おそらくTIFFではないでしょうか。

次に、プレビューを含んだEPSファイルを比較しました。
違っていたのは、以下のとおりです。
1行目の先頭にバイナリデータが含まれています。
その後に通常のEPSデータが始まります。
%!PS-Adobe-3.0 EPSF-3.0
そして34行目に、
プレビューを含まないEPSファイルでは
%AI3_DocumentPreview: Header
となっているところが、
プレビューを含むEPSファイルでは
%AI3_DocumentPreview: PC_ColorTIFF
となっいます。
そして一番最後にまたバイナリデータが含まれています。
通常のEPSデータの末尾である
%%EOF
の後に、バイナリデータが追加されています。

他のイラストレータのバージョンでは、また違うかもしれません。
比較に使用したファイルをおいておきます。
サムネイルもプレビューも含まないEPSファイル
サムネイルを含むEPSファイル
プレビューを含むEPSファイル

1月 10

FirefoxのアドオンツールFirebugが1.3.0にアップデート

Firefox2でお世話になったFirebugですが、いつの間にかバージョンもあがり、Firefox3に対応していたようです。
Firebugは開発者にとっては、とてもありがたいツールであり、使い方によってはサイトの脆弱性を付くこともできる魔法のツールです。
これでlolifox(Firefox2)ともおさらばですかね・・・
Firefox3をベースにしたブラウザが出ればそちらを使いたいところなのですが。

12月 14

WordPressを2.7にしてみた

ダッシュボードでずっとアナウンスされていたけど、日本語版がまだ2.5.3のままでしばらく放置していました。

先ほど確認してみたら日本語版も2.7がきていたので更新することに。
何が変わるかというと、管理側が大幅に更新されるということは、定期確認で知っていたけれど、実際に使ってみないとどうなるかまではわかりません。

とりあえず・・・今風になったかな、という感じですね。
原因不明で消失していたメニューのメディアも復活したし、ファイルのアップロードもできるようになったようです。

テーマを自作できればもうちょっと広がるのでしょうけど、今のところは拾ってきたものでガマンガマン。

11月 16

ページと投稿の使い分けをどうするのか

WordPressを使い始めてちょっと経ちますが、この内容は投稿でいいのかとか、この内容はページでいいのかを悩むようになりました。
そもそも、なぜ投稿とページが分かれているのかがなぞです。
使い始めにはまったく疑問に思っていませんでしたが。
WordPressサイトをよくよく見ると投稿しか使ってないところが結構あるようです。

他にも、カテゴリ自体に説明文を追加したい時や、そのカテゴリのインデックスページが作成できないなど、よくよく考えると足らない機能が多いようです。
とはいえ、そこそこ人気のあるCMSですし、ただ単に使い方があっていなかったということだけのような気もします。

10月 13

サイトマップを出力するプラグイン

WordPressの理解を深めようと、プラグインを調べていました。
そういえば、データベースで構成されているんだから簡単にサイトマップが作れるはず。
ということで、Sitemap Generator Plugin for WordPressを発見しました。

プラグインのファイル(書庫)はwordpresのページよりダウンロードする。
 ↓
解凍したファイルをディレクトリ(sitemap-generator)ごと/wp-content/plugins/にコピーする。
 ↓
wordpressにログインし、設定からプラグインの使用を選択する。
 ↓
言語を日本語にして、サイトマップのアドレス(/sitemap.xml)を設定する。

あとはgoogle先生にサイトマップの通知を行えば、しばらくすると反映されるでしょう。

9月 08

WordPressでタグを扱う

デザインを弄ろうとしましたが、Smartyに慣れてしまうと、WordPressのテンプレートは違った感触です。
タグを表示する”タグ”は以下のものだとこちらで見つけました。


<?php the_tags(); ?>

the_tags()には3つの引数を指定できるようで、

  • 1つ目:ヘッダ
  • 2つ目:セパレータ
  • 3つ目:フッタ

ということだそうです。
必死に”Tags”を検索してて見つからないわけです。

7月 21

VB.NETでMicrosoft Outlookのメールを読む

はじめに
VB.NETの環境は、Microsoft Visual Basic 2005 Express Editionを利用しています。
Microsoft OutlookではないOutlookには、対応していません。
準備
新しいプロジェクトを作成してください。
次に、APIの読み込みを行います。「メニューバーのプロジェクト > 参照の追加」より、COMタブを選択し、「Microsoft Outlook 9.0 Library」コンポーネントを選択します。数値の部分は、インストールしてあるMicrosoft Officeのバージョンで変化することがあります。ちなみに、Microsoft Office2000では9.0です。
受信トレイのメールを読む
まずは、受信トレイのメールを読んでみたいと思います。
受信したメールタイトルを表示するためのリストボックス(ListBox1)を用意します。
受信トレイのメールを読むタイミングは、起動時に行います。つまり、Form1_Loadに記述します。
  Private Sub Form1_Load( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs _
  ) Handles MyBase.Load

      Dim myOlApp As Outlook.Application = CreateObject("Outlook.Application")
      Dim myNameSpace = myOlApp.GetNamespace("MAPI")
      Dim myFolder = myNameSpace.GetDefaultFolder(6)

      Dim i As Integer
      For i = 1 To myFolder.Items.Count
          Dim myitem = myFolder.Items(i)
          ListBox1.Items.Add(myitem.Subject)
      Next

      myFolder = Nothing
      myNameSpace = Nothing
      myOlApp = Nothing

  End Sub
myNameSpace.GetDefaultFolder(6)の6が受信トレイのフォルダを指します。
フォルダにある各メールは番号で管理されており、Itemsのインデックス番号で参照できます。
Microsoft Outlookの受信トレイにメールがあるのを確認してから、実行してください。
outlook1
問題なく表示できたでしょうか?
メールの本文を読む前に
次は、メールのタイトルを読むことができたので、リストを選択すると内容が表示されるようにします。
メールの内容を読むためには、そのメールのインデックス番号が必要です。
そこで、メールタイトルをキーに、メール番号を値としたハッシュを用意します。
    Public mail As Hashtable = New Hashtable

    Private Sub Form1_Load( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
    ) Handles MyBase.Load

        Dim myOlApp As Outlook.Application = CreateObject("Outlook.Application")
        Dim myNameSpace = myOlApp.GetNamespace("MAPI")
        Dim myFolder = myNameSpace.GetDefaultFolder(6)

        Dim i As Integer
        For i = 1 To myFolder.Items.Count
            Dim myitem = myFolder.Items(i)
            ListBox1.Items.Add(myitem.Subject)
            mail(myitem.Subject) = i
        Next

        myFolder = Nothing
        myNameSpace = Nothing
        myOlApp = Nothing

    End Sub

変更した場所を赤く表示しています。これで、リストの値からメール番号を得られるようになりました。
メールの本文を読む
内容を表示するためのテキストボックス(TextBox1)を用意します。
TextBox1はプロパティの設定で、MultilineとScrollBarsをTrueに変更しておきます。
内容を表示するには、ListBox1のSelectedIndexChangedイベントを利用します。
  Private Sub ListBox1_SelectedIndexChanged( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs _
  ) Handles ListBox1.SelectedIndexChanged

      Dim myOlApp As Outlook.Application = CreateObject("Outlook.Application")
      Dim myNameSpace = myOlApp.GetNamespace("MAPI")
      Dim myFolder = myNameSpace.GetDefaultFolder(6)

      Dim myitem = myFolder.Items(mail(ListBox1.Text))
      TextBox1.Text = myitem.Body

  End Sub
メール番号は1から始まります。
outlook2
これで、選択したメールの内容を表示することができました。
メールの内容は、text形式かhtml形式かの判断は行っていません。
html形式では、ソースが表示されますが、一部は「?」という文字に化けます。
おまけ
myitem.Subject 件名
myitem.SenderName 送信者名
myitem.SentOnBehalfOfName 送信者名(SenderNameとどう違う?)
myitem.Body 内容
myitem.ReceivedTime 受信時間
myitem.To 送信先

更新履歴

2007-07-21
公開