Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

カテゴリー » Web/ミディリン December 28, 2004

2004年度最後のご挨拶 ID:1104204137


今年は本当によく更新をしました。

年始1月1日〜3日
8月30日〜9月5日イタリア旅行
この物理的に家にいない日以外は全日更新をしました。
1年が365日であれば350日以上は更新をしています。

風邪をひいて寝込もうとも、ストックを出すことで更新をし
結婚式があろうとも、当日帰って夜中に更新をし
GWとかも1泊2日で旅行に出かけたりしても、前日の夜中と帰ってからすぐに更新をし
仕事で朝7時前に起きて帰ってくるのが夜中の1時でくたくたに疲れていても更新を1年間続けました。


何度となく過去に書いていますが
「忙しいから●●できない」という言葉は好きではなく
好きなのにできないのは、その人の意思の弱さしか感じないので
仕事が忙しい、プライベートが忙しいなど
忙しい、時間がないから更新できないという言い訳をせず
今年は更新の鬼となりました。


今年一年感じたことは、社会人で家庭持ちでどんなに忙しい状態でも
死ぬ気で根性と気合を入れて、やる気があれば毎日何かをやりつづけることは可能であり
それを体現、示せるということです。
意志の強さが大切だと感じます。


今年11月で、サイト運営も8年目に入りました。
12月には200万アクセスも超えました。


サイト運営は一人でやっているわけではありません。
いろいろな方の協力があって更新を維持できています。


トップページを更新したり、チェルトなどの小説や各コラムを書いたり
コンテンツ案を作成しているのは私ですが
音楽のライブラリや自己紹介広場、リディア同盟、DQ・FF哲学などの各種投稿など
いろいろな人の協力があって初めて成り立つものです。


更新を維持するには、


(1)事前に更新スケジュールをたてる
(2)開いた時間は5分でも無駄にしない
(3)コミュニケーションを大切にする
(4)更新を楽にするようなシステムを考える
(5)気合と根性を入れて更新をする


この5点を考えながら、運営していました。


(1)事前に更新スケジュールをたてる
頭の中でだいたい一週間先までの更新スケジュールをたてておきます。
投稿物が多くあったときは、どれが優先度が高くすぐに更新をするかを決め掲載します。


また執筆物への読者へのリピータを絶やさないために(チェルトなど)
ある一定の期間内に小説を掲載しました。


(2)開いた時間は5分でも無駄にしない


これも以前書いていますが
「時間」
http://midilin.sakura.ne.jp/midilin/yasuda/diary/kimagure_response/majime003.htm
「DQ8をプレイしてみて」(の冒頭部分)
http://midilin.sakura.ne.jp/midilin/php/ppblog/index.php?mode=show&UID=1101699001


5分でも開いた時間を有効に使うということです。


(3)コミュニケーションを大切にする


1人で何でも抱え込まず、自分のある人脈・ネットワークを活用する、
それが大切なことだと考えています。
仕事もそうですが、人一人ができることは少ないです。
しかし多くの人を巻き込めば、できることは無限に広がります。


上でも書いていますが、サイト運営は一人でやっているわけではありません。
いろいろな方の協力があって更新を維持できています。


(4)更新を楽にするようなシステムを考える


今年は、内部をかなりシステム化しました。
以前はHTML+CGIでしたが、PHP+Mysqlを使えるようになり


・小説ライブラリ
-投稿小説をPHP+Mysql
-DQ/FF哲学をHTML→PHPにし、哲学数のファイル数をそれぞれ自動カウントして小説のトップページを自動更新
-DQ/FF攻略コーナーをPHPで作成し、ファイル数を自動カウントして小説のトップページを自動更新
-げっちゅうぺーじのCSV数をカウントし、小説のトップページを自動更新


・音楽ライブラリ
-ライブラリをHTML化→PHP+Mysqlにして検索機能、曲数表示、曲ランキングなどの機能を付加
(ライブラリのHTML更新がなくなり、トップページの曲数も自動カウント)
-ライブラリの登録をブラウザから登録できるよう、PHP+Mysqlでシステム構築
またトップページの更新情報、更新情報ページのHTMLを生成するプログラムも構築
-音楽投稿をメールからCGIの投稿フォームを使うことにより更新係さんに自動送信され、現在未更新リストの表示を付加


・リンク集
-各リンク集のCSVをカウントし、リンク集のトップページの各リンク数と総計を自動更新
-CGIによる自動リンクプログラムのCSVをカウントし、リンク集のトップページを自動更新


・掲示板のログ生成プログラムの作成
(Javaによるプログラム)


現在は、音楽のラジオ局一覧をHTML→PHP+DB化し、現在の音楽ライブラリとリンクする仕組みを構築中です。
(ただ曲の一覧が掲載されているだけのものが
音楽ライブラリと連携すると、曲名から曲へのリンクを張られたり、
ラジオ局への個々の放送回数やランキング、総計放送、作曲者の名前にメール情報やURL情報も付加、
検索などの機能が追加できる)


もっとありますが、概略で1年間でこれだけ普段の更新と併用してシステム化もしました。


更新を楽にするため、それをシステム化する必要があります。
システム化するには「知識」と「時間」と「努力」が必要です。


知識が足りず、こういうことをしたいのに何をしたらいいのかわからない
ということが多かったですが、長年サイト運営を行い、
仕事でPC業界にいることから、ようやく
頭のイメージを完成させるためには、何が必要であるか
イメージに知識が追いつくようになってきました。
また知識が足りない、わからないことは、わかるまで調べて技術を習得するようにしました。
PHPもMysqlもCGI(Perl)も仕事では触ったことすらありません。本も1冊も持っていません。
独学でネットですべて調べました。


時間に関しては相変わらずないものの、毎日のHP更新と並行して
通勤中に立ちながら、満員電車の中、Jornada(ミニPC)でコーディングです。
この日記も電車内で立ちながら、少しずつ書いています。


わからなく、調べる時間もないときはサイトごと一括でダウンロードして
それをJornadaに転送して、電車の中で読んで理解しました。


プログラムが動く環境が側になくても、プログラムの概略は文字さえ打てれば作ればできます。
やろうと思えば、携帯電話でメールを書く機能を使って
プログラムを組もうと思えば組めるでしょう。(私は携帯電話持ってないけれど)
各コンテンツのHTML作成でも、電子文字さえ書ければやろうと思えばできるのです。



更新をしよう、システムを作ろう
そう思わせる気力


(5)気合と根性を入れて更新をする


この気持ちを一年間維持できたからこそ、
時間がないという制約を越えて、実現できたものだと思います。


来年以降(実は12月最終週の今週から)、仕事が複数かけもちになり、
今年以上に忙しくなります。既に年末なのに来年度以降の仕事が詰まり息つく暇もありません。これから想像もつきません。


でも「時間がないからできない」という言い訳は、来年もしないつもりです。
待ってくれている読者さんがたくさんいてくれて、
いろんな方からの応援メールを頂くたびに、この7年間実感させてもらっています。
だから「気合い」「根性」それに「ネタ」が続く限りがんばるつもりです。


大晦日、年始は実家に帰るため、PCにつなげませんが
また来年もよろしくお願いいたします。


今年最後の更新はチェルトの冒険348話で締めくくる予定です。

— posted by midilin @ 12:22PM | Comment (5) | TrackBack (0) 

カテゴリー » ゲーム December 15, 2004

メタルスライムの謎 ID:1103082917


ドラクエ8、先週の日曜日にクリアしました。

購入から2週間、プレイ時間は50時間、LV38程度です。


2週間もクリアに時間かかっているの?
遅いんじゃない?
と思っている君、あま〜い!!!!


確かに3日でクリアできる方もいるでしょう。


しかしそれは学生ならではの行為であり
社会人かつ家庭持ちには無理であります。
毎日の仕事に加え、食事作り、風呂掃除などの家事、
それに家族交流など通常あります。
2週間というのは脅威的な早さです。


私の会社の周りにもDQ8を購入した方はおられますが
2週間たったくらいですと


「今船とったとこ」
「やっとLV3だけどボスに負けた」


という人ばかりです。


この時期にクリアできた社会人の方がいるとすれば





仕事が暇






以外にありえません(→私)


11月までの忙しい仕事が一息つき、ドラクエ中毒→廃人まっしぐらの私は
毎日ドラクエのこと考えていますが
我が家には、今こんなものがあります。


踊る宝石




踊る宝石のぬいぐるみです。


UFOキャッチャーでドラクエのぬいぐるみがとれるのがあるらしいですね。


ヨメの会社の同僚の女の子がスライムを狙ったところ
あやまって踊る宝石をとってしまったらしく
かわいくないのでいらない

ヨメ:ドラクエ知らないからいらない


とたらい回しにされた品です。


「ドラクエ踊る宝石保護の会」会長(会員現在1名)の安田としては
これはほっておけません。
我が家で保護することにしました。


安田まこと28歳、この年になるまでUFOキャッチャーを
一度もやったことないのですが、この踊る宝石が我が家でちょっとブームになり
DQのUFOキャッチャーを探してみようという話しになりました。


新宿に6プレイ500円でできるところを見つけたので見てみると
スライム、踊る宝石以外にもいるようです。


メタルスライム、爆弾岩
それとこのモンスターは見たことないのですが
コンペイトウという、黄色いスライムにウニのようなイガイガがついたものがいました。


踊る宝石のラベルについているサンプル

サンプル



魔物の比率は
スライム:スライム以外=9:1
です。


ほとんど青一色のスライムに、所々メタルスライムや爆弾岩がまぎれているという感じです。
この中でよく踊る宝石をゲットできたなぁ、と関心しながら
500円を投入します。
これで6プレイできるはずです。


スライムに狙いをつけようとするものの
UFOキャッチャーのやり方がわからず、ボタンに触れたら
キャッチャーがその場で動き、1プレイ終了です。


Oh!!!!NO!!!!


UFOキャッチャーに叫ぶも虚しく、お金は戻ってきません。
今のナシという言い訳もダメのようです。


ヨメに揶揄されながらも、UFOキャッチャーのやり方を聞きます。



むぅ、ボタンを押しっぱなしにしないとダメなのか。


不器用な手つきでスライムに狙いをつけます。
しかしど素人にとれるわけもありません。
あえなく、お金が消えてきます。


それでどうせ終わるなら、レアなメタルスライムに狙いを定めたところ


メタルスライム



メタルスライムを無事保護成功しました。


おぉ、私のようなど素人でも一回目でとれたやん!
ちょっと興奮です。


(そこで辞めればよかったのですが、調子ぶっこいて
次はコンペイトウを保護しようと追加で1500円を機械に吸い込まれたのは秘密です)



しかし「スクウェアエニックス」もアジなことを考えますね。
ちょっとお金がある社会人などで
ドラクエ好きだったら、これやっちゃいますよ。
ゲーム一本売るのもよいですが、これでうまく取ることができなかったら
かなりの儲けです。原価いくらなんだろう。
やるなスクウェアエニックスなんて、そんなことを考えながら、メタルスライムについている帯の裏を見てみると

ナムコ

— posted by midilin @ 12:55PM | Comment (2) | TrackBack (1) 

カテゴリー » Web/ミディリン December 05, 2004

過去ログ検索システム不具合 ID:1102248290


ドラクエ8をのんびりプレイしながら、ミディリンの更新も行っている毎日ですが

先日雑談掲示板の過去ログを1600件ほど、検索システムに掲載しました。

雑談掲示板の過去ログを検索システムに反映させるには

生成された過去ログのHTMLファイル(このHTMLは1つのHTMLに複数の記事が有)を

書き込み1件ずつを1つのHTMLに保存しなおし

namazuが入っているサーバーにFTPでファイルをあげれば、検索結果に反映されるというものです。


例えば、

kakiko300.htmという過去ログがあり、この過去ログに5000〜5020の書込みがある場合

kakiko300.htm→5000.htm〜5020.htm

というように

記事に分割するという処理をしています。


以前、この作業はテキストエディタと置換ツールなどを駆使して行っていました。

10個くらいの手順を踏んで作成するので、作業が複雑で手順書を作って行っていましたが

これが面倒くさい!


時間も無駄だし、手作業だと間違えることもあるので

先日Javaで下記のプログラムを作りました。


書いたプログラム↓



package log;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.util.ArrayList;

import comm.Fileuse;


public class log_create_mainbbs {


 public static void main(String[] args) {

  

  String inputPath = "D:\\dummy\\midilin\\log\\input\\";//取得元

  String outputPath = "D:\\dummy\\midilin\\log\\output\\";//書き出し先

  

  //ファイル一覧取得

  Fileuse fu = new Fileuse();

  ArrayList fileichiran = fu.getFileIchiran(inputPath);


  fileCreate(inputPath,outputPath,fileichiran,"0","SJIS");

  

 }

 

 

 public static void fileCreate(String inputPath,String outputPath,ArrayList
fileichiran,String outputname ,String moji_code){

  int i=0;

  int debug_count = 0;

  String debugstr = "";

  try{

   

   for(i=0;i<fileichiran.size();i++){


    //ファイル解析

    File file = new File(inputPath + "\\" +fileichiran.get(i).toString());

    FileInputStream fs = new FileInputStream(file);

    InputStreamReader ir = new InputStreamReader(fs,moji_code);

    BufferedReader br = new BufferedReader(ir);

    StringBuffer buffer = new StringBuffer();

    char[] readBuffer = new char[8192];

    int length = br.read(readBuffer, 0, 8192);

   

    while(length>=0){

     buffer.append(readBuffer,0,length);

     length = br.read(readBuffer, 0, 8192);

    }

    String out = buffer.toString();

   

    String search_start_text = "<center>[";

    String search_end_text = "] <font color";

    

    String hr_endtext = "</table><hr width=95% color=#a0e0f6 size=1>";

    

    int searchStartNo = 0;

    int searchEndNo = 0;

    

    while((out.indexOf(search_start_text))!=-1){

    

     searchStartNo = out.indexOf(search_start_text) + search_start_text.length();

     searchEndNo = out.indexOf(search_end_text);


     String indexNo = out.substring(searchStartNo,searchEndNo);//No

     

     //String outnext = out.substring(searchEndNo+1);//次の対象テキスト

     String outnext = out.substring(out.indexOf(hr_endtext)+hr_endtext.length()+1);//次の対象テキスト

     

     int searchStartNoNext = outnext.indexOf(search_start_text) + search_start_text.length();  


     String outputText =out.substring(out.indexOf(search_start_text),out.length()-outnext.length()
+ searchStartNoNext - search_start_text.length());


     outputText = headHtml() + outputText + footer();

     //ファイル書き込み開始

     File outfile = new File(outputPath + outputname + indexNo + ".html");

     outfile.createNewFile();


     FileOutputStream outfs = new FileOutputStream(outfile);

     OutputStreamWriter ow = new OutputStreamWriter(outfs,"SJIS");

     BufferedWriter bw = new BufferedWriter(ow);

     

     StringBuffer outbuffer = new StringBuffer(outputText);

     bw.write(outbuffer.toString(), 0, outbuffer.length());//書き出し

     bw.flush();

     bw.close();

     ow.close();

     

     out = outnext;

     

     debug_count++;

     debugstr = indexNo;


    }    

    

    fs.close();//ファイル読み込み1つ終了

   

   }

   System.out.print("ファイル出力正常終了\n");

  }catch (Exception e){

    e.printStackTrace();

    System.out.print("i="+ i + "\n");

    System.out.print("debug_count = " + debug_count + "\n");

    System.out.print("index=" + debugstr + "\n");

  }


 }

 


package comm;


import java.io.File;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;




public class Fileuse {

 /**

  * <DL>

  * <DT><b>メソッド概要:</b><DD>

  * ファイル一覧取得<BR>

  * <BR>

  * @param pass

  * @return

  * </DD><BR>

  * </DL>

  */

 public ArrayList getFileIchiran(String pass){

  ArrayList array = new ArrayList();


  File f = new File( pass );

  String files[] = f.list();

  int N = files.length;

  int k;


  for( k=0; k<N; k++ )

  {

   //System.out.println( pass + "/" + files[k] );

   array.add(files[k]);

  }

  

  return array;

 }


}



上のプログラムを実行すると自動的にファイルを分割して、新しいログのHTMLを生成してくれます。




その後、検索ページのヒット件数の表紙を作成する必要があります。


表紙作成は2つの工程を得て作成しています。


(1)分割したHTMLをDBに登録

(2)DBに登録したデータをSQLを使って、結果をHTMLで保存




(1)のHTMLをDBに登録するという作業も、以前手作業でエクセルを使って

Insert文を列挙してDB登録していたのですが、面倒くさいので

これもJavaのプログラムを組んで、登録する仕組みを作りました。








package log;

import java.sql.*;

import java.util.ArrayList;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;


import org.apache.xml.utils.Trie;


import comm.Fileuse;

import comm.Struse;

/**

* <UL>

* <LI>ProjectName :</LI>

* <LI>SystemName :</LI>

* <LI>PackageName :</LI>

* <LI>@author :<BR>

* </UL>

* <DL>

* <DT><b>クラス概要:</b></DT><DD>

* 雑談掲示板の過去ログをDBに登録するプログラム]<BR>

* </DD><BR>

* </DL>

*/

public class log_mainbbs_insert {

 private static String DBname = "●●●";//DB名

 private static String userid = "●●●";//ID

 private static String password = "●●●";//PASSWORD

 private static String sv = "●●●";//ホスト名

 private static String encode = "Shift_JIS";//文字コード

 private Connection conn;

 

 public static void main(String[] args) throws Exception {

  log_mainbbs_insert app = new log_mainbbs_insert();

  String r[] ={DBname,userid,password,sv,encode};

  app.init(r);

 }

 private void setParameter(String[] args) {

  // 引数の数チェック

  if (args == null || args.length < 3) {

   System.out.println("引数の数が足りません。");

   System.exit(1);

  }

  DBname = args[0];

  userid = args[1];

  password = args[2];

  sv = args[3];

  encode = args[4];

 }

 

 private void init(String[] args) throws Exception {

  int i=0;

  String sql = "";

  try {

   

   String inputPath = "C:\\data\\log\\mainbbs\\";//取得元

  

   //ファイル一覧取得

   Fileuse fu = new Fileuse();

   ArrayList fileichiran = fu.getFileIchiran(inputPath);

   

   // 引数よりパラメータをセットします。

   setParameter(args);


   Class.forName("com.mysql.jdbc.Driver").newInstance();

   

   //DB接続

   //conn =DriverManager.getConnection("jdbc:mysql:///" + DBname,
userid, password);

   String db_url = "jdbc:mysql://" + sv + "/" + DBname

      + "?user=" + userid

      + "&password=" + password

      + "&useUnicode=true&characterEncoding=" + encode;

   conn =DriverManager.getConnection(db_url);

   

   

   conn.setAutoCommit(false);//Autocommit解除

   

   for(i=0;i<fileichiran.size();i++){


    //ファイル解析

    File file = new File(inputPath + "\\" +fileichiran.get(i).toString());

    FileInputStream fs = new FileInputStream(file);

    InputStreamReader ir = new InputStreamReader(fs,"SJIS");

    BufferedReader br = new BufferedReader(ir);

    StringBuffer buffer = new StringBuffer();

    char[] readBuffer = new char[8192];

    int length = br.read(readBuffer, 0, 8192);

   

    while(length>=0){

     buffer.append(readBuffer,0,length);

     length = br.read(readBuffer, 0, 8192);

    }

   

   

    String out = buffer.toString();

   

    String index_search_start_text = "<center>[";

    String index_search_end_text = "] <font color";

    String txt_search_end_text = "</div>";

    

    

    int searchStartNo = 0;

    int searchEndNo = 0;

       

       

    searchStartNo = out.indexOf(index_search_start_text) + index_search_start_text.length();

    searchEndNo = out.indexOf(index_search_end_text);

    

    String indexNo = out.substring(searchStartNo,searchEndNo);//No


       

    //String outnext = out.substring(searchEndNo+1);//次の対象テキスト

    //int searchStartNoNext = outnext.indexOf(index_search_start_text) + index_search_start_text.length();

    int searchEndNo_text = out.indexOf(txt_search_end_text);

    

    String outputText =out.substring(searchStartNo-1,searchEndNo_text);

    outputText = outputText.trim();

     

    //ステートメントオブジェクトを生成

    Statement stmt = conn.createStatement();

    Statement stmt_in = conn.createStatement();

    

    sql = "select id from mainbbs where id = '" + indexNo + "'";

    //クエリーを実行

    ResultSet rs = stmt.executeQuery(sql);


    //検索された行数分ループする

    int rs_cnt=0;

    while(rs.next()) {

     String temp = rs.getString("id");//Maxid取得

     rs_cnt++;

    }


    //レコードが存在しなかったらinsert作業

    if(rs_cnt == 0){

     //String del_str[] = {"&nbsp;"," ","%",".","'","\\"};

     Struse stru = new Struse();

     outputText = stru.conv_text(outputText,"'","\\'");//文字列置換

     //outputText = stru.delete_text(del_str, outputText);

     sql = "INSERT INTO mainbbs(id,comment) values (" + indexNo +
",'" + outputText + "')";

     stmt_in.executeUpdate(sql);

    }

   }


   conn.commit();

   System.out.print("正常終了しました");

  } catch (InstantiationException e) {

   rollbackAndPrint(sql, e);

  } catch (IllegalAccessException e) {

   rollbackAndPrint(sql, e);

  } catch (ClassNotFoundException e) {

   rollbackAndPrint(sql, e);

  } catch (SQLException e) {

   rollbackAndPrint(sql, e);

  } catch(Exception e){

   rollbackAndPrint(sql, e);

  }

  finally{

   conn.close();//切断

  }

  

 }

 private void rollbackAndPrint(String sql, Exception e) throws SQLException
{

  e.printStackTrace();

  System.out.print(sql);

  conn.rollback();

 }



}





上のプログラムは分割したHTMLがあるディレクトリを指定すると、

ファイルを解析し、必要なデータのみを取得してファイル名をキーとしDBに登録するプログラムです。

これでデータの登録も楽になりました。


今までフリーソフトを何本も使って作業をしていたのですが

プログラムを組むことで、上のプログラムを一回ずつ実行するだけで処理が行われるようになりました。


この後、(2)のDBに登録したデータからHTMLを作成するという作業をするのですが

これは以前PHPを使って作成していたので、PHPを実行します。


過去ログが10000件以上あるので、このHTMLを作成するだけでも2時間くらいかかるのですが

ここで1つ不具合を発見してしまいました。


それは、実際にログを検索していただくとわかるのですがnamazuの方で

「POPS」というキーワードで検索すると30件以上検索結果がでるのに

PHPで作成された表紙の方では(5)という表示になっています。


これが何故起こるのか、検証していたのですが

どうやらnamazuでの過去ログ検索システムでは大文字小文字を区別しないで検索を行い、

PHP+Mysqlで組んでいる方では大文字小文字を区別して検索結果を出しているようでした。


つまり、namazu検索システムでは「POPS」で検索すると「Pops」という小文字を含んだものも検索されますが

PHP+Mysqlの方では完全一致全部大文字のものしかされていませんでした。


使い勝手としては大文字小文字を区別しない方がよいので、

PHP+Mysqlの方を直そうと思い、ネットでいろいろ情報を探していたのですが

原因がわかりませんでした。


日記なのに専門的な話ばかりで申し訳ないのですが

ネットでわかったことはMysqlでは文字列を格納するにも2つのタイプ


・テキストとバイナリオブジェクトがあること

・CHAR ・ VARCHAR の場合は、テーブル定義の際に BINARY 属性がつけられない限り、

大文字・小文字を区別しないでソート・比較されること

(BINARY 属性があれば大文字・小文字を区別してソート・比較される)

・BLOBとTEXTの違いはTEXTとBLOB の違いは、 TEXT はケースに依存しないでソートと比較され

BLOB はケースに依存して比較されること



でした。



文字列を格納するデータの型としては


char(文字数) 固定長文字列 (最大 256 文字)

varchar(文字数) 可変長文字列 (最大 256 文字)

text ラージ文字列 (最大 65535 文字)

mediumtext ラージ文字列 (最大 1677215 文字)

largetext ラージ文字列 (最大 4294967295 文字)

blob ラージバイナリ(最大 65535 bytes)

mediumblob ラージバイナリ(最大 1677215 bytes)

largeblob ラージバイナリ(最大 4294967295 bytes)


という型があります。


掲示板の過去ログはかなりテキスト容量が多いので「mediumtext」型で定義しているのですが

mediumtext型って、大文字小文字の区別がついちゃうのでしょうか。


調べた感じでは、テキスト型の場合は大文字小文字の比較がされないので

大丈夫のような気がするのですが。


参考URL


・Mysqlの型

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_s01.htm

・テキストとバイナリオブジェクトについて

http://www.rfs.jp/sitebuilder/sql/02/03.html




もう1つの可能性としてはMysqlの方でSQLを発行した後、

タグの有無で検索結果をPHPで再度カウントしなおしているので

そちらで大文字小文字を判定してしまっている可能性もあります。


まぁ、判定するには実際にSQLを流せば特定できるのでしょうが。



説明を長々と書きましたが、要約すると



「過去ログと検索結果の表紙は一致しないよん」




ということです。1行で書けることなら長々と書くなと怒られそうですが

最近DQ8レポートばかりアップしてこの遊び人め!!

と思われないために

ミディリンのことも考えているよという自己アピールをしてみました。


— posted by midilin @ 09:04PM | Comment (2) | TrackBack (0) 

カテゴリー » フリーソフト December 22, 2004

キャプラ ID:1103675317


http://homepage1.nifty.com/chappy/lib/libcawr.htm
1 / 2| 次のページ »

— posted by midilin @ 09:28AM | Comment (0) | TrackBack (0) 

カテゴリー » フリーソフト December 22, 2004

縦横幅 ID:1103675260


http://homepage1.nifty.com/sugit/width/
1 / 2| 次のページ »

— posted by midilin @ 09:27AM | Comment (0) | TrackBack (0) 

カテゴリー » フリーソフト December 22, 2004

Versatile-Thumbnail ID:1103675223


http://homepage3.nifty.com/ProjectDARTS/soft_vt.html
1 / 2| 次のページ »

— posted by midilin @ 09:27AM | Comment (0) | TrackBack (0) 

カテゴリー » フリーソフト December 22, 2004

HTML Filter 2.1 for Office 2000 ID:1103675154


http://www.microsoft.com/downloads/details.aspx?FamilyID=209ADBEE-3FBD-482C-83B0-96FB79B74DED&displaylang=JA
1 / 2| 次のページ »

— posted by midilin @ 09:25AM | Comment (0) | TrackBack (0) 

カテゴリー » フリーソフト December 22, 2004

OpenOffice ID:1103675097


http://ja.openoffice.org/
1 / 2| 次のページ »

— posted by midilin @ 09:24AM | Comment (0) | TrackBack (0) 

カテゴリー » フリーソフト December 22, 2004

ページマスター for IE4/IE5 ID:1103675055


http://www2.lint.ne.jp/~lrc/hp_edithtml3.htm
1 / 2| 次のページ »

— posted by midilin @ 09:24AM | Comment (0) | TrackBack (0) 

カテゴリー » フリーソフト December 22, 2004

PerlEditor ID:1103675017


http://www.k-collect.net/pe/index.htm
1 / 2| 次のページ »

— posted by midilin @ 09:23AM | Comment (0) | TrackBack (0) 


カウンター