投稿者の投稿

虫だらけの長ーいトンネル

ソースコード自動作成ツール
一覧画面の作成用のテンプレートがやっと完成した。
これで、8度目の完成した宣言です。
ソフトウェアというものは、恐ろしいものだ、できたと思っても変な所に バグ・
今度は完ぺきだと思ってもまた バグ
今度は完ぺきだと思ってもまた バグ
今度は完ぺきだと思ってもまた バグ
いつになったらバグが消えるのだろう・・
1度目2度目の言い訳は、「えっ!そうですか、わかりました」
3度目の言い訳は「あっりゃ! そうなんですか」
4度目の言い訳は「あっごめんなさい」
5度目の言い訳は「あっ!」
6度目の言い訳は「うっ!」
7度目の言い訳は「・・・・」
このころから変な自問自答がはじまり、「ぶつぶつぶつ・・・・」「この!!ぶたやろう!!」と自分を責め始める。
もう、10回を超えると、自分が信じられなる。
しかし、こんなことを20年もやっていると、それなりに経験も積んできて自暴自棄にはならない、
ソフトウェアを作るということは、長ーいバグのいるトンネルに入っていくことと覚悟ができる。

ソースコード自動作成ツールが作ったソース

ソースコード自動作成ツールが作ったソースです。

 
<?php
require_once ‘html_util/BaseSmarty.php’;
require_once ‘db_access/db_class_商品統合管理.php’;
//require_once ‘user_info_util/session_info.php’;

HTME::form_trim_all();
//HTME::https_needs();
//session_info::login_needs();
form_load();

/**
 * 画面からの入力処理を行う
 */
function form_load()
{
//  $user_info = session_info::is_login();
    $o_smarty = new BaseSmarty();
    HTME::form_post_set($o_smarty);
    switch($_POST[“form_name”])
    {
        case    ‘商品統合管理_list.html’:
            switch($_POST[‘action_cmd’])
            {
                case ‘search’:
                    $_POST[‘page_no’] = page_no(1,0);
                    search_list($o_smarty);
                    break;
                case ‘next’:
                    $_POST[‘page_no’] = page_no($_POST[‘page_no’],1);
                    search_list($o_smarty);
                    break;
                case ‘jump’:
                    $_POST[‘page_no’] = page_no($_POST[‘page_no’],0);
                    search_list($o_smarty);
                    break;
                case ‘prior’:
                    $_POST[‘page_no’] = page_no($_POST[‘page_no’],-1);
                    search_list($o_smarty);
                    break;
                case ‘sort’:
                    $_POST[‘page_no’] = page_no($_POST[‘page_no’],0);
                    search_list($o_smarty);
                    break;
                case ‘clear’:
                    form_clear($o_smarty);
                    break;
            }
            $o_smarty->display(“商品統合管理_list.html”);
            break;
        default:
            HTME::form_get_set($o_smarty);
            form_init($o_smarty);
            $o_smarty->display(“商品統合管理_list.html”);
            break;
    }
}

/**
 * 最初の画面を表示する
 * @param $o_smarty     SMARTYのインスタンスを渡す
 * @param $action_cmd   画面のアクションコマンド
 * @return なし
 */
function form_init($o_smarty)
{
    $_POST[‘sort_key’] = ‘商品コード’; /* 初回のソートキーを入れる*/
    $_POST[‘sort_order’] = ‘asc’;
    search_list($o_smarty);
}

/**
 * フィールドをクリアする
 * @param $o_smarty     SMARTYのインスタンスを渡す
 * @return なし
 */
function form_clear($o_smarty)
{
    $o_smarty->txtput(‘_商品コード’,”);
}

/**
 * 検索する
 * @param $o_smarty     SMARTYのインスタンスを渡す
 * @param $action_cmd   画面のアクションコマンド
 * @return なし
 */
function search_list($o_smarty)
{
    $sort_key       = sort_key($o_smarty);
    $class          = new db_class_商品統合管理();
    $class->_商品コード = $_POST[‘_商品コード’];
    $line_len       =   line_len($_POST[‘line_len’]);
    $page_no        =   $_POST[‘page_no’];
    $max_page_no    =   0;
    $record_count   =   0;
    $list_data = db_class_商品統合管理::db_select_list($class,$line_len,$sort_key,$page_no,$max_page_no,$record_count);
    $o_smarty->txtput(‘line_len’,$line_len);
    $o_smarty->txtput(‘page_no’,$page_no);
    $o_smarty->txtput(‘max_page_no’,$max_page_no);
    $o_smarty->txtput(‘record_count’,$record_count);
    $o_smarty->htmput(‘list_data’,$list_data);
}

/**
 * ソート順番を求める
 * @param $o_smarty     SMARTYのインスタンスを渡す
 * @return ソート順を格納した配列を返す
 */
function sort_key($o_smarty)
{
    $sort_key = ”; /* この配列にソートキーとソートオーダーを入れる*/
    if(!$_POST[‘sort_key’] && !$_POST[‘sort_key_old’]) return null;
    $key =      $_POST[‘sort_key’];
    if(!$key) $key = $_POST[‘sort_key_old’];
    if($_POST[‘sort_key’]==$_POST[‘sort_key_old’])
    {
        if($_POST[‘sort_order’]==’desc’)
        {
            $sort_key[$key] = ‘asc’;
        }
        else
        {
            $sort_key[$key] = ‘desc’;
        }
    }
    else
    {
        if($_POST[‘sort_key’])
        {
            $sort_key[$key] = ‘asc’;
        }
        else
        {
            if($_POST[‘sort_order’]==’asc’)
            {
                $sort_key[$key] = ‘asc’;
            }
            else
            {
                $sort_key[$key] = ‘desc’;
            }
        }
    }
    $o_smarty->txtput(‘sort_key_old’,$key);
    $o_smarty->txtput(‘sort_order’,$sort_key[$key]);
    return $sort_key;
}

/**
 * ページ番号を加算減算する
 * @param $page_no  現在のページ番号
 * @param $add      加算減算する値
 * @return 結果のページを返す
 */
function page_no($page_no,$add)
{
    if(!is_numeric($page_no)) $page_no=0;
    if(!is_numeric($add)) $add=0;
    $page_no = intval($page_no) + intval($add);
    if($page_no<1) $page_no=1;
    return $page_no;
}

/**
 * 表示行数を求める
 * @param $line_len 表示行数
 * @return 表示行数を返す
 */
function line_len($line_len)
{
    if(!is_numeric($line_len)) $line_len=10;
    if($line_len<1) $line_len = 10;
    $line_len = intval($line_len);
    return $line_len;
}
?>

ソースコード自動作成ツール

先週から始めたソースコードの自動生成ツールもだいぶんできました。途中経過です。

いまは、PHPのソースを生成するのですが、テンプレートをいれると、JavaでもVBでも作成可能です。

このプログラムの威力を十分に発揮するためには、基本となるよくできたソースコードが必要となります。

皆さんの良い意見をお待ちしています。

完成FINALを、お楽しみください。

作成したソースのサンプル

Eclipse のデフォルト文字コードを全部UTF-8にする

ASCII S-JIS EUC UTF-16 UTF-8 EBICDIC IBM漢字 富士通JEF NEC漢字といろいろあるけれど、これからの新規開発はすべて、UTF-8でやる!
そのためのEclipseの設定は、下記のとおり

eclipse.exeと同フォルダにあるeclipse.iniに、

-Dfile.encoding=utf-8
をいれるだけでよい。
デフォルトは、MS932になっているようだ。

TAB(\9)を空白にする関数

誰か、TABをスペースに置き換えてくれる関数を知らないですか~~~
とGoogle BING に叫んでも教えてくれないので、ちょこっと作ってみました。

/** タブを空白にする関数。
  * @param string $str  変換する元
  * @param Array  $タブ数
  * @return string
*/
function tab2space($str,$n)
{
 $ret = ”;
 $str = preg_replace(“/(\r\n|\n|\r)/”, “\n”, $str);
 $array = split(“\n”,$str);
 foreach($array as $v)
 {
  $s = 0;
  $l = ”;
  $a = explode(“\t”,$v,strlen($v));
  foreach($a as $s)
  {
   $l.=$s;
   $c=strlen($l)%$n;
   if($c==0) $l .= fillspace($n);
   else   $l .= fillspace($n – $c);
  }
  $l = rtrim($l);
  $ret .= $l . “\n”;
 }
 return $ret;
}

function fillspace($count)
{
 $s=”;
 for($i=0;$i<$count;$i++)
 {
  $s.=’ ‘;
 }
 return $s;
}

情報処理試験対策用の良いサイトを見つけた!!

「相手が誰でも関係ない!!!ガンガンメールしてもただ♪♪♪」
なんて歌にはまっている私ですが、ふとネットサーフィンをやっていると、こんなサイトを見かけた。

http://masudahp.web.fc2.com/

むかしむかしあるところに、入門C言語 実習C言語 応用C言語 という本があったそうな・・・・

あの時代にインターネットがあって、こんなサイトがあったら、大枚をはたかなくてもよかったのに。

OpenIDにびっくり

20年以上も開発屋をやっているといろんなことがあるが、自分が考えていることはみんな考えているし、なかなか新しいアイデアなんてものは見つからない。
そろそろ年もくってきたことだし、後進の輩に何か残してやりたいと思い、あれやこれやポンコツの頭をひねっていた。
そういえば、私もいろんなサイトでユーザ登録を行っているのだが、ユーザIDとパスワードの数の多さにはげんなりしている。
何とか、もっと簡単な方法でログインできないものだろうかと考え、「そうだ!、そういうシステムを作ってしまえばいいのだ」なんて思い、久しぶりに興奮していた。
「いや?!まてよ・・・・」 こういういいことを思いついても、また、きっと誰かが先に考えているかもしれない、そう思い、おそるおそるGoogleを検索してみた。
やっぱり・・・・ 
その興奮もわずか数秒でボルテージ200%から一気に0%にたたきおとされた。
そりゃそうだ・・・ ということで、以下のサイトを見れば一目瞭然、大手のサイトは既に行っているようです。

http://www.openid.ne.jp/

http://openid.net/

http://www.sixapart.jp/about/openid/

実に残念であるが、考えてみればラッキーでもある。
世にあるものは、すべて使ってしまおうとプラス思考で考え続けた20数年はだてじゃない、これを利用して新たなシステム作りを考えることにした。

えっ!!?
「この記事は単なる決意表明なんですか?」 って・・

その通りです。
後日(う~んと後日)には、当社のシステムをこれに対応させたいと思います。

 

webFXTreeを使って、TREE表示をする

webFXTreeを使うと、エクスプローラのようなTree表示のウェブサイトが簡単にできます。

http://webfx.eae.net/dhtml/xtree/index.html

これは、javascript のクラスになっています。

これと、WebFXLoadTree を使うとサーバとの連携で、これまた簡単にTree表示が簡単になります。

http://webfx.eae.net/dhtml/xloadtree/xloadtree.html

両方使うと、ウェブアプリケーションがリッチなクライアントになります。

phpMyAdminやphpPgAdminは、これを改造して使っているようです。

使い方は、私に聞いてください。

Windows 7 でデフォルト共有を使えるようにする

regedit  を起動して

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

の下に、以下の値をDWORD8(32)で追加し、値を1にする

LocalAccountTokenFilterPolicy

これで、c$ やらが使える。

 

Windows7には、ファイアウォールという壁があるので、それらを乗り越えてください。
何もかもをOKにしてはだめですよ。

Windows 7 64ビット版での32ビットODBCの設定

Windows7の64ビット版では、コントロール パネル\すべてのコントロール パネル項目\管理ツール\データ ソース (ODBC)で、32ビットのODBCドライバーが設定できない。

32ビット版のドライバを使う場合は、
%systemdrive%\Windows\SysWoW64\Odbcad32.exe
を使う。

一般には、c:\Windows\SysWoW64\Odbcad32.exe