FrontPage  Index  Search  Changes  RSS  Login

(Ruby)さくらウェブライトでtDiary

ページを編集するにはログインが必要です。

設定など

設置前に

/usr/local/bin にpathを通します。

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin

これでwgetを使用できるようになります。また、/usr/bin/にあるviは日本語が通らないので、alias等で/usr/loca/binのものを使用するようにします。

% alias vi        '/usr/local/bin/vi'

*.cgiの作成

tDiary-FAQの「CGIとして実行してくださいねと言われました」を参考に、index.cgi、update.cgiを作成します。

index.cgi

#!/usr/local/bin/ruby
require 'index'

update.cgi

#!/usr/local/bin/ruby
require 'update'

実行属性付加

% chmod +x *.cgi

これで、ファイルのリネーム作業と1行目を変更する作業は不要になります。

トラックバック関連

tdiary.confに、トラックバックでtb.cgiを使用するよう設定します。

@options['tb.cgi'] = './tb.cgi'

tb.cgi作成

#!/usr/local/bin/ruby
require 'tb'

実行属性付加

% chmod +x tb.cgi

tdiarysearchで検索

tdiarysearchとsearch_form.rbで検索機能を実現してみるメモです。

tdiarysearch取得

tdiarysearchを取得し、適当な名前(ここでは"search.rb")で保存します。

% wget -O search.rb http://i.loveruby.net/archive/d/tdiarysearch.txt

search.cgi作成

いつものように.cgiを作成します。

#!/usr/local/bin/ruby
require 'search'

実行属性付加

% chmod +x search.*

tdiarysearchを改造

素のtdiarysearchだと*.rbを使用してしまうので、以下のように書き換えます。ついでにログも取るようにします。また、サーチエンジンに検索ログを蹂躙されないようにnofollow指定を行います。

*** search.old	Sun May 23 03:45:02 2004
--- search.rb	Tue Dec  7 18:48:38 2004
***************
*** 17,23 ****
  # Static Configurations
  #
  
! LOGGING = false
  LOGFILE_NAME = 'search.log'
  DEBUG = $DEBUG
  
--- 17,23 ----
  # Static Configurations
  #
  
! LOGGING = true
  LOGFILE_NAME = 'search.log'
  DEBUG = $DEBUG
  
***************
*** 35,41 ****
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
      <meta http-equiv="Content-Language" content="ja-JP">
!     <meta name="robots" content="noindex">
      <link rel="stylesheet" href="theme/base.css" type="text/css" media="all">
      <link rel="stylesheet" href="theme/<%= theme %>/<%= theme %>.css" title="<%= theme %>" type="text/css" media="all">
      <title>tDiary Search</title>
--- 35,41 ----
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
      <meta http-equiv="Content-Language" content="ja-JP">
!     <meta name="robots" content="noindex,nofollow,noarchive">
      <link rel="stylesheet" href="theme/base.css" type="text/css" media="all">
      <link rel="stylesheet" href="theme/<%= theme %>/<%= theme %>.css" title="<%= theme %>" type="text/css" media="all">
      <title>tDiary Search</title>
***************
*** 49,55 ****
  EOS
  
  SEARCH_FORM = unindent(<<"EOS", 2)
!   <form method="post" action="#{File.basename(__FILE__)}">
    <input type="text" name="q" size="20" value="<%= patterns.map {|re| escape(re.source) }.join(' ') %>">
    <input type="submit" value="Search">
    <%
--- 49,55 ----
  EOS
  
  SEARCH_FORM = unindent(<<"EOS", 2)
!   <form method="post" action="#{File.basename(__FILE__, ".rb") + ".cgi"}">
    <input type="text" name="q" size="20" value="<%= patterns.map {|re| escape(re.source) }.join(' ') %>">
    <input type="submit" value="Search">
    <%
***************
*** 105,111 ****
    <ul>
    <%
        recent_queries.sort_by {|t,q| -t.to_i }.each do |time, query|
!   %><li><%= time.strftime('%Y-%m-%d %H:%M:%S') %> | <a href="#{File.basename(__FILE__)}?q=<%= escape_url(query) %>"><%= escape(query) %></a></li>
    <%
        end
    %></ul>
--- 105,111 ----
    <ul>
    <%
        recent_queries.sort_by {|t,q| -t.to_i }.each do |time, query|
!   %><li><%= time.strftime('%Y-%m-%d %H:%M:%S') %> | <a href="#{File.basename(__FILE__, ".rb") + ".cgi"}?q=<%= escape_url(query) %>"><%= escape(query) %></a></li>
    <%
        end
    %></ul>

search_form.rbでform作成

直接formを書いてもいいのですが、せっかくだからsearch_form.rbを使用してみます。

<%= search_form("./search.cgi", "q", "Search") %>
<p>
<a href="search.cgi?history=on">[検索ログ]
</p>

weather.rbのタイムゾーンを設定してみる

さくらで使用しているFreeBSDには、Japanというタイムゾーンはありません。正しく修正された時刻を表示するには、/usr/share/zoneinfo/以下から適切なものを指定します。日本標準時であれば、環境変数TZまたはその日の天気プラグインの設定画面で、Japanの替わりにAsia/Tokyoと指定すればOKです。

pre内部でAAを表示してみる

append-css.rbの「CSSの追加」で、以下のようなCSS断片を記述します。(参考:いーたのメモ帳 2004年2月分

pre.aa {
    font-family: "MS Pゴシック", sans-serif; /* 等幅フォントを変更 */
    18px;
}
@media screen { /* MacIE対策 */
    pre.aa {
        overflow: auto; /* 枠からはみ出た時にスクロールバーを出す */
    }
    * html pre.aa { /* WinIE対策 */
         width: 100%;
    }
}

tDiary-FAQの「半角カナは使えないのですか?」を参考にtdiary/lang/ja.rbを書き換えます。 あとは本文を書くときに<pre class="aa">と指定してやればOKです。

<pre class="aa">
 ・− ,(ゝ、  ・−
ー=y; ((ノりヾヽ
   \(゚∀゚从      ー=y;_(Д´イ)&lt;ダレダ!キサマハダレダ!
・− .ノノ| y |\;y=‐        |  |
 ・− /   \  ・−      |_|
  /~~~~~~~~~/         く く
    ・−
ヤンマーニヤンマーニヤンマーニ
</pre>

html_anchor.rbでアンカーを置き換える

まずはドキュメントを読みましょう。さくらではmod_rewriteを使用できないため、「ErrorDocument?を利用する方法」をとります。

.htaccess

.htaccessに以下のような内容を追記します。ディレクトリ名などは適当に変えてください。

<Files ~ "^([0-9]{4}|[0-9]{6}|[0-9]{8}).html$">
    ErrorDocument? 404 /~gom/tdiary/index.cgi
</Files>
Last modified:2008/06/03 11:04:11
Keyword(s):[Ruby] [tDiary]
References:[SideMenu]

*1 現在、さくらウェブライトでCGI、SSIを使用できるコースは募集していません。