アーカイブ: 2008年5月

格安でETCをGET!

パーマリンク 2008/05/31 19:00:00 著者: kumaold メール
カテゴリ: デジタルモノ, ワゴンR

最近高速を使う回数も増えてきて、そろそろETCの導入を考えていた今日この頃。

オートバックスとかで値段を見てみると分離型・音声案内付だと平均1万~
さすがに割引で安くなること考えても買うのをためらってしまいますね。


そこで某オークションを物色してみると、なんと新品でセットアップ料金・送料など全部込で500円のものを発見!

安いものには裏があると思い調べてみると、どうやら

四輪車ETCらくらく導入キャンペーン

なるものがあり、簡単なアンケートで5,250円助成金が出るようです。
これを使わない手はないです。

500円のものは音声案内なしだったので上位の古野電気FNK-M05を購入

わずか3,000円で一般的なETCを導入できました。

燃費とガソリン価格

パーマリンク 2008/05/29 23:51:11 著者: kumaold メール
カテゴリ: 仕事

本日も一六社にアフィリエイター教育で出向いたわけですが、往復180キロ近くになるとガソリン代も馬鹿にならないわけです。

地元で給油すると162円、しかし高蔵寺になると何故かほぼ156円なんですよ。

この値段差なら外出先に安いところがあれば無理にでも給油した方が得。

あと、結構経路選択も重要で今乗っているワゴンRの平均燃費が12km/Lですが、今回高速や混雑の少ない道を走行しただけで最高の15km/Lに!

滑らかな加速など少しでも燃費の向上になる走り方を心がけたいですね。

今後のガソリン価格の予測


2008年1月…NY原油先物1バレル$100→ガソリン150円/L
2008年3月…NY原油先物1バレル$110→ガソリン155円/L
2008年5月…NY原油先物1バレル$120→ガソリン160円/L
2008年6月…NY原油先物1バレル$130→ガソリン175円/L

年末には1バレル$150突破でガソリン200円/L行く気がするなぁ。

6/1値上げ予想

未給油の方はお早めに。

新日石(ENEOS)12.0円
出光14.5円
ジャパンエナジー13.0円
昭和シェル12.5円
エクソンモービル10.0円以上

中津川:162円→175円
高蔵寺:156円→170円

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

アフィリエイター教育

パーマリンク 2008/05/28 23:49:48 著者: kumaold メール
カテゴリ: 仕事

本日はアフィリエイター教育で一六社まで行ってきました。

このブログも適当に書き続けて早々2ヶ月近いですが、最近はGoogle、Yahoo!などの検索からのアクセスもそれなりに増えてきました。

アフィリエイト広告なども若干貼り付けてみようかな~と思っていた時期で、ちょうど良かったです。本日の教育を受けて、ブログネタに合ったものを選んで貼っていこうなと思います。


ところで加子母~高蔵寺ってどう行くのが速くて安上がりなんだ?
ふと試算してみた。燃費10km/L、軽自動車、非ETCにて。

1.加子母~中津川駅=中央本線=高蔵寺駅…91km/2,390円
2.加子母~中津川IC=多治見IC~駅前…93km/2,590円
3.加子母~美濃加茂IC=多治見IC~駅前…102km/2,450円
4.加子母~中津川=R19=愛岐道路=駅前…94km/1,500円
5.加子母=R41=美濃加茂=R248=多治見~駅前…85km/1,360円

2日間、往復あるので行きは高速、帰りは下道で全ルート行ってみます。

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

第7回SE勉強会!

パーマリンク 2008/05/26 15:38:07 著者: kumaold メール
カテゴリ: デジタルモノ

昨日は高蔵寺にて、第7回SE勉強会でした。

先日の東京の一件から帰った後だったので睡眠不足ながら、宿題をやってました。

今回の宿題の方は・・・


☆30桁対応電卓☆
数値は整数のみでOK、ただし30桁まで対応。
加減のみでOK。乗除は不要。
インターフェースは自由ですが、「+」「-」「=」「クリア」ボタンは必須。



なんとなく簡単そうだったので、また少々外観とか操作性に凝ってみるとそれだけで1時間少々経過、中身は一切なしで。

で、実際に計算の方法を考えてみると、やり方としては単に分割してやるだけでも、実際には桁上がり、先頭0切捨てなど結構面倒でした。

で、発表時点では一部の判定条件のif文の「==」を「=」と書き間違える初歩的ミスで15桁以上の数値に問題が発生するなど散々でした。

まだ多少は実用性がありそうなので修正版をうpしときました。

 30桁電卓っぽいもの 改

長々しいソースはこちら

Javacsript部

function InputNum(key) {
    //現在値が0なら押したキーの数字に置換
    if (document.calc.NumberForm.value == 0) {
        document.calc.NumberForm.value = key;
    }
    //通常は現在値に追記
    else {
        document.calc.NumberForm.value += key;
    }
}
function ClearNum() {
    document.calc.NumberForm.value = 0;
}
//演算キーが押されたら数字と演算種別を記憶し、入力窓を消去
function RegNum(type) {
    Num1 = ZeroFormat(document.calc.NumberForm.value, 30);
    CalcType = type;
    document.calc.NumberForm.value = 0;
}
function Calc() {
    //足し算
    Num2 = ZeroFormat(document.calc.NumberForm.value, 30);
    var Calc1 = 0;        //上15桁の計算結果
    var Calc2 = 0;        //下15桁の計算結果
    var NumShift = 0;    //桁繰上下フラグ
    if (CalcType == 'p') {
        //下15桁を計算
        Calc1 = parseInt(Num1.substring(15, 30), 10) + parseInt(Num2.substring(15, 30), 10); 
        Calc1 = ZeroFormat(Calc1, 15) + "";
        if (Calc1.length >= 16){    //桁上がりのあるとき
             NumShift = 1;
             Calc1 = Calc1.substring(1, 16);
        }
        //上15桁を計算
        Calc2 = parseInt(Num1.substring(0, 15), 10) + parseInt(Num2.substring(0, 15), 10) + NumShift;
        Calc2 += "";
        document.calc.NumberForm.value = ZeroShift(Calc2 + Calc1);    //頭に0があれば消去
    }
    //引き算
    else if (CalcType == 'm' && Num1 > Num2) {
        //下15桁を計算
        //桁下がりがある場合は上位桁から10^15を持ってくる
        if (parseInt(Num1.substring(15, 30), 10) < parseInt(Num2.substring(15, 30), 10)) {
            Calc1 = Math.pow(10, 15) + parseInt(Num1.substring(15, 30), 10) - parseInt(Num2.substring(15, 30), 10);
            NumShift = 1;
        }
        else {
            Calc1 = parseInt(Num1.substring(15, 30), 10) - parseInt(Num2.substring(15, 30), 10);
        }
        Calc1 += "";
        //上15桁を計算
        Calc2 = parseInt(Num1.substring(0, 15), 10) - parseInt(Num2.substring(0, 15), 10) - NumShift;
        Calc2 += "";
        document.calc.NumberForm.value = ZeroShift(Calc2 + Calc1);    //頭に0があれば消去
    }
    else if (Num1 > Math.pow(10, 30) || Num2 >= Math.pow(10, 30)) {
        document.calc.NumberForm.value = 0;
        alert("30桁以上のため計算できません。\n");
    }
    //入力値が不正なとき
    else {
        document.calc.NumberForm.value = 0;
        alert("計算結果がマイナスか値が不正です。\n");
    }
}
//ゼロ埋め関数
function ZeroFormat(num, max) {
    var tmp = "" + num;
    while (tmp.length < max){
        tmp = "0" + tmp;
    }
    return tmp;
}
//ゼロ消去関数
function ZeroShift(frm){
    var rep = new RegExp("^0+0?");
    return frm.replace(rep,"");
}

HTML部

<form name="calc">
    <input type="text" name="NumberForm" id="NumberForm" maxlength="30" value="0">
</form>
<table>
    <tr>
        <td>
            <button accesskey="7" onClick="InputNum(7);">
                <div id="key">7</div>
            </button>
        </td>
        <td>
            <button accesskey="8" onClick="InputNum(8);">
                <div id="key">8</div>
            </button>
        </td>
        <td>
            <button accesskey="9" onClick="InputNum(9);">
                <div id="key">9</div>
            </button>
        </td>
        <td>
            <button accesskey="c" onClick="ClearNum();">
                <div id="key" class="clear">C</div>
        </td>
    </tr>
    <tr>
        <td>
            <button accesskey="4" onClick="InputNum(4);">
                <div id="key">4</div>
            </button>
        </td>
        <td>
            <button accesskey="5" onClick="InputNum(5);">
                <div id="key">5</div>
            </button>
        </td>
        <td>
            <button accesskey="6" onClick="InputNum(6);">
                <div id="key">6</div>
            </button>
        </td>
    </tr>
    <tr>
        <td>
            <button accesskey="1" onClick="InputNum(1);">
                <div id="key">1</div>
            </button>
        </td>
        <td>
            <button accesskey="2" onClick="InputNum(2);">
                <div id="key">2</div>
            </button>
        </td>
        <td>
            <button accesskey="3" onClick="InputNum(3);">
                <div id="key">3</div>
            </button>
        </td>
        <td>
            <button name="minus" accesskey="m" onClick="RegNum('m');">
                <div id="key">-</div>
            </button>
        </td>
    </tr>
    <tr>
        <td>
            <button accesskey="0" onClick="InputNum(0);">
                <div id="key">0</div>
            </button>
        </td>
        <td>
            <button accesskey="." disabled>
                <div id="key">・</div>
            </button>
        </td>
        <td>
            <button name="equal" accesskey="e" onClick="Calc();">
                <div id="key">=</div>
            </button>
        </td>
        <td>
            <button name="plus" accesskey="p" onClick="RegNum('p');">
                <div id="key">+</div>
            </button>
        </td>
    </tr>
</table>

よかったこと
電卓の実際の動作を考えて作れた
反省点・課題
演算バグ出しまくり。ソースが分かりにくい


3時間以上粘ったのに、MICKさんのソースを見て、それがわずか1つの関数で解決されるってのが驚愕でした。

gmp_add(),gmp_sub()なんて関数があったなんて!
調べてみるとGNU Multi Precision(任意精度数演算ライブラリ)っていうPHPのライブラリらしく、コンパイル時に--with-gmpで入るんだとか。

他にも色々な数学演算ができるので便利に使えそうです。

CakePHPでやってみようOpenID入門
あつさんからの発表でした。
OpenIDは聞いたことはあったのですが、具体的な技術話は知らなかったので詳しく分かってよかったです。

prototype.jsをかじってみる
MICKさんからの発表でした。
長くて分かりにくいJavascriptのコードを簡潔に書けるようなので、これから使っていこうと思います。 特に頻繁に使うdocument.getElementByID()が$()はいいですね。
type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

第14期ブロッコリー株主総会

パーマリンク 2008/05/24 23:24:41 著者: kumaold メール
カテゴリ: 投資

本来の目的は元からこれだったわけですが、せめて休日開催してほしいなぁ。
今更ながら昨日の報告を。

10時から練馬産業会館で開催でした。
なんか地元の商工会館並みの小ささなのは気のせいですか?

人数的には60人ほどで、半分以上のスーツ姿の人と私服の個人20人ほどでした。
この会社は一部の大株主と多数の個人株主なのでだいたい納得。

全議決権29,909個/3,622人のうち16,600個/607人は出席or議決権行使書提出とのことなので一応定足数は満たしているということです。

10時~50分間が株主総会。それから11時~1時間ほどが近況報告会でした。


ここの総会は初めてだったのですが、噂どおりあの社長の頼りなさは健在ですねw

自身のなさそうな喋り方の上に資料は読み間違える、質問にすぐに答えられずに後ろで相談役?らと「ざわ・・ざわ・・・」的な相談をするし。

前半の総会での一番前に座っていた人の毎度の鋭い突込みとそれに対応できてない社長の姿は面白かった。役員決議のときにも『異議あり!』(←逆転裁判風に)ってのはある意味格好よかったかも。

何かの大株主かなぁ?


後半の経営近況報告会では、割と和やかな雰囲気で進んでいき、個人株主を中心とした面白い質問など色々ありました。

総評して、とても上場企業の株主総会ではなかったような…

詳しいことはこの業界に詳しいまこなこさんが早速書いてますのでそちらを参考に。

総会の模様はmp3で録音してきたのでこちらから
個人情報保護のため発言株主の番号、名前は伏せてあります。

写真など

 

役員のための株主総会運営法役員のための株主総会運営法
中村 直人

商事法務 2007-02
売り上げランキング : 209742

Amazonで詳しく見る
by G-Tools


 

高速バスにて東京

パーマリンク 2008/05/23 08:00:00 著者: kumaold メール
カテゴリ: 日々の生活

本日は休暇をいただいて深夜の高速バスにて東京まで行って来ました。

バスは瀬戸-中津川-名古屋を中央道経由で結んでいる「中央ライナー」です。

中津川駅前23:40発、新宿駅新南口5:16着なので午前中に東京に行くのには非常にありがたい時間設定となっています。
これで往復7,840円というのは新幹線と比べて半額以下なので嬉しいところです。

中津近辺は安価で深夜に入出庫できる駐車場がないので、恵那の友人宅に停めさせてもらいました。


定員40人ほどのところ、乗客は20人ほどなので隣の席も使えてちょうどいい感じ。

ただ、いくら眠くなる時間帯とはいえ、あれだけの爆音エンジンの上、あの中央道の道の悪さじゃ絶対に寝れねぇーーー!!
おかげで1:30に諏訪湖SA、2:30に双葉SA?あたりで目が覚めましたよ。
しかもリクライニングシートとは言ってもねぇ、動かさないと足が痛い…

朝から寝起きの悪い一日になりました。
しかも新宿で朝5時から暇を潰す手段もなく、適当に電車を乗りまわすことに。

まあ今回は目的があってこれしかなかったわけなんで仕方ないですが。
やっぱ寝る目的で夜行バスなんか使うんじゃなかった。

 

高速バス時刻表 Vol.36 (2007~08冬号) (36) (トラベルムック)高速バス時刻表 Vol.36 (2007~08冬号) (36) (トラベルムック)

交通新聞社 2007-12
売り上げランキング : 214757

Amazonで詳しく見る
by G-Tools

CentOSサーバ構築4日目 一応最終?

パーマリンク 2008/05/22 18:25:16 著者: kumaold メール
カテゴリ: サーバ関係

前回までで一応ほとんどのことは終わってます。
しかし実運用ではソースからのインストールをすることがほとんどで、設定ファイルのパスが違うなどするので慣れるためそれもやってみることにしました。

もちろんソースからのインストールなどやったことあるはずもなく、ここは先駆者の知恵を借りることに。

結果、パッケージとソースからではほぼ全てのファイルの位置が違っていますね。
まとめてみると、こんな感じ。(デフォルトの場合)

パッケージインストールの場合
Apacheconfig/etc/httpd/conf/httpd.conf
doc_root/var/www/html
PHPconfig/etc/php.ini
PostgreSQLconfig/var/lib/pgsql/data/postgresql.conf
/var/lib/pgsql/data/pg_hba.conf

 

ソースインストールの場合
Apacheconfig/usr/local/apache/conf/httpd.conf
doc_root/usr/local/apache/htdocs
PHPconfig/usr/local/lib/php.ini
PostgreSQLconfig/usr/local/pgsql/data/postgresql.conf
/usr/local/pgsql/data/pg_hba.conf

 

サーバ環境まとめ
PocessorCeleron 1.4GHz/L2:256k(Tualatin)
MemorySDRAM 256MB
OSCentOS 5.1
HTTP ServerApache 1.3.41
ScriptPHP 5.2.6
DatabasePostgreSQL 8.3.0


次は一通りの動作テストとか文字化けが起きないかのテストかな。
既在のスクリプトとか移して動作確認して問題なければOK!
 

CentOSサーバ構築バイブル (MYCOM UNIX Books)CentOSサーバ構築バイブル (MYCOM UNIX Books)
川井 義治

毎日コミュニケーションズ 2006-06
売り上げランキング : 149484

Amazonで詳しく見る
by G-Tools

CentOSサーバ構築3日目

パーマリンク 2008/05/20 18:28:39 著者: kumaold メール
カテゴリ: サーバ関係

昨日は色々と忙しくて時間が割けなかったので本日はPostgreSQLについて。

今日は朝から胃腸の調子が悪かったりして大変でした。
最悪の胃腸風邪でないことを祈りつつ遅れて出社しましたがまあ何とか…

6.PostgreSQLの導入
  • PostgreSQLのインストール
  • サービスの起動・登録
  • ユーザの管理
  • PostgreSQL設定
  • 動作確認

PostgreSQLのインストール

標準レポジトリからのインストールで8.1.xが導入できるので手間要らずです。

yum -y install postgresql-server

サービスの起動・登録

PostgreSQLはサービスが起動していないと設定が行えないのでまずは起動

/etc/rc.d/init.d/postgresql start

ついでに自動起動するようサービスにも登録しましょう

chkconfig postgresql on

ユーザの管理

PostgreSQLをインストールすると、postgresというPostgreSQL管理ユーザが自動的に作成されるのでパスワードを設定しておく

passwd postgres

PostgreSQL上のユーザにもパスワードを設定するためpostgresユーザに切り替え

su - postgres

とりあえず最初からあるtemplate1に接続する

psql template1

PostgreSQL上のユーザpostgresにパスワードを設定

alter user postgres with password 'パスワード';

一旦\q(¥q)でpsqlコマンドを終了する

PostgreSQL上の一般ユーザを作成する(OSに同名のユーザを作成しておく)
パスワード入力を求められるので間違えないよう2回入力する

createuser -AdPE 一般ユーザ名

PostgreSQL設定

認証設定ファイルを自身からのみパスワード認証(md5暗号化)で許可するように
/var/lib/pgsql/data/pg_hba.conf を編集する

TYPEDATABASEUSERCIDR-ADDRESSMETHOD
localallallmd5
hostallall127.0.0.1/32md5

これでほぼ設定完了なのでユーザpostgresからexitする
ここからの操作は通常のユーザでやる

動作確認

データベースの作成

createdb --encoding UTF8 データベース名

正しい所有者、文字コードで作成できたか確認する

psql -l

あとはCREATE TABLE、INSERT、SELECT、DROP TABLEなどやってみる。

今日のところはPostgreSQLを動かせるようにするまで。
次回はPHPからデータ挿入、抽出して文字化けなど起きないようにしてみる。

 

CentOS徹底入門 第2版 (DVD付)CentOS徹底入門 第2版 (DVD付)
飛田 伸一郎

翔泳社 2008-02-05
売り上げランキング : 47011
おすすめ平均

Amazonで詳しく見る
by G-Tools

CentOSサーバ構築2日目(2)

パーマリンク 2008/05/19 18:06:42 著者: kumaold メール
カテゴリ: サーバ関係

前回長すぎて書ききれなかった個別のアプリケーションについてをここで。

4.Apache(httpd)の導入
  • httpdの設定
  • サービスに登録

Apacheはデフォルトでインストールされるので設定のみ
/etc/httpd/conf/httpd.conf を編集。
変更点は多々あるので主なところを抜粋

ServerName [サーバのドメイン]:80
 
DocumentRoot "[公開するディレクトリ]"
 
AllowOverride All #.htaccessの全機能を有効に
 
LanguagePriority ja en ca… #ja(日本語)を先頭に

自動起動するようシステムサービスに登録

chkconfig httpd on


5.PHPの導入
  • PHPのインストール
  • PHPの設定
  • 動作確認

PHPとマルチバイト処理、PostgreSQLの各モジュールをインストール

yum -y install php php-mbstring php-pgsql

/etc/php.ini を編集

doc_root = "[ドキュメントルート]"
 
#マルチバイト文字列処理モジュールを追加
extention=php_mbstring.dll
#PostgreSQLにアクセスするモジュールを追加
extention=php_pgsql.dll

#日本語を扱うための設定(UTF-8の場合)
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = None

PHPはhttpdの付随モジュールなのでサービス登録の必要なし

viで以下の内容のテストファイルを作成し、ドキュメントルートに設置。
外部からアクセスし、『mbstring』と『pgsql』の項目があるか確認する。
確認後ファイルは速やかに削除しておく。

<?php phpinfo(); ?>


とりあえず今日はここまで。
設定項目が多いとまとめるだけでも一苦労…
PostgreSQLに触れるのは今回が初めてなので、よく調べておきたいです。

 

CentOS 徹底入門CentOS 徹底入門
中島 能和

翔泳社 2005-11-09
売り上げランキング : 325170

Amazonで詳しく見る
by G-Tools

CentOSサーバ構築2日目(1)

パーマリンク 2008/05/16 20:00:00 著者: kumaold メール
カテゴリ: サーバ関係

無事にインストール作業もできたので、ここからが重要な設定作業。

長くなるので今日の投稿では初期設定にあたる部分のみ書いときます。

ある程度は学校の課題研究で、Fedoraでやったことあるので大丈夫ですが。

CentOS 5は、4の頃にあった日本語表示系の問題はほぼ修正されており、また設定項目も簡略化されるなど機能を減らすことなく操作性の向上が図られています。

1.ユーザ設定
  • 一般ユーザの作成
  • パスワード設定
  • 管理者グループのみrootになれるように

ユーザを管理者グループに追加(ユーザ、パスワード作成後に)

usermod -G wheel [ユーザ名]

/etc/pam.d/su の以下の行の先頭のコメントアウト(#)を外す

#auth required pam.wheel.so use_uid
  ↓
auth required pam.wheel.so use_uid


2.パッケージの管理
  • 不要な自動起動を停止
  • 不要なパッケージを削除
  • 自動アップデート停止
  • パッケージのアップデート

初期設定では、不要なサービスが起動しているので、setupを実行するか、

chkconfig --list

で自動起動するサービスを確認後に、以下のように停止させる

chkconfig [サービス名] off

不要なサービスは以下のとおり。

acpidLinuxデスクトップではACPIの電源管理が不十分なため
apmd電源管理機構(APM)。常時稼動サーバなら不要
atdコマンドを指定時間に実行。crondで代用できる(*)
auditdSELinuxの詳細なログ収集
bluetoothbluetoothは使用しないので不要
cpuspeedTualationコアのCPUは周波数変える意味がないので
cupsプリンタサービス
gpmコンソールでのマウス入力
hiddBluetooth HID daemon(*)
ip6tablesIPv6環境でのファイアウォールなど
irqbalanceマルチCPU環境での割り込み処理
mcstransSELinuxのセキュリティレベルを分かりやすく変換(*)
mdmonitorソフトウェアRAID状態監視
netfsNFSを使用しないので不要
nfslockNFSを使用しないので不要
pcscdスマートカード(ICカード)認証(*)
portmapRPCのポート割り当て。NFSを使用しないので不要
restorecond新ファイル作成時にSELinuxの適切なラベル作成(*)
rpcgssdRPCのセキュリティ関連。NFSを使用しないので不要
rpcidmapdNFSの名前,IDをマッピング。NFSを使用しないので不要
sendmailメールサーバを稼動しないので不要
smartdHDDの障害予測。どうせ中古HDDなので…
yum-updatesd自動アップデート。手動でやるので結構
(*)後日不要だと気付いて追加停止したもの(5/20)

自動アップデートが有効だとメモリ消費、競合などするため停止

/etc/rc.d/init.d/yum-updatesd stop

yum-updatesdパッケージを削除

yum -y remove yum-updatesd

アップデート時に自動的に速いサーバに接続するプラグインの導入

yum -y install yum-fastestmirror

パッケージの一括アップデート(しばらく放置後にRebootさせる)

yum -y update


3.SSHの設定
  • rootログインの禁止
  • パスワード無しのログインを禁止

/etc/ssh/sshd_config を編集

#PermitRootLogin yes
  ↓
PermitRootLogin no #rootログインを禁止
 
#PermitEmptyPassword no
  ↓
PermitEmptyPassword no #パスワード無しのログインを禁止


これでほぼCent OS自体の初期設定は完了しました。
Apache、PHP、PostgreSQLなどについてはまた後日書きます。

 

はじめてのCentOS 5 (Linuxサーバ構築編) (TECHNICAL MASTER (48))はじめてのCentOS 5 (Linuxサーバ構築編) (TECHNICAL MASTER (48))
アイティーブースト

秀和システム 2007-08
売り上げランキング : 67048

Amazonで詳しく見る
by G-Tools

CentOSサーバ構築1日目&date_format()文字化け

パーマリンク 2008/05/15 19:31:19 著者: kumaold メール
カテゴリ: サーバ関係

やはり専用のLinuxテストマシンが必要ということで、CentOSによるサーバ構築をすることになりました。

バージョンは、安定版の4.4でも良かったのですが、どうせやるならということで最新の5.1を使用することにしました。


で、昨日から放置したインストール作業ですが・・・
何故かフォーマット中画面で1時間以上停止。

パーティション切ったところでも怪しいエラーが出ていたので仕方なくHDDを別のものに交換してやり直すことにしました。

何やらインストールを続けていると、ほぼ最少構成になるよう設定したはずなのに、CD6枚組中1-4枚目を要求される羽目に。
結局ダウンロードだけで今日は終わってしまいそうです。



先日から製作中の無線放送データベースですが、思いもよらぬところで文字化け問題に当たってしまいました。

$date_format()で$formatに『年』が入ると出力が『・』になってしまうのです。
同様に$date()でも同じ問題が発生しました。

本来、この手の関数はマルチバイト文字なんか考えて作ってあるわけもないので仕方ないのですが、解決策を探してみました。


1.文字参照

&を&amp;と書くように、代替となるコードを出力する。

&#24180;

これで『年』が表示できます。

2.一度別エンコードに変換

どうやらShift_JIS固有の問題で、2バイト目がASCIIの『N』になるらしく、それで誤作動するのだとか→Yoheis.net

そこで一度UTF-8/EUC-JPに変換

Shift_JIS→UTF-8/EUC-JP→date_format()→Shift_JIS


そんなわけで1.の方法で解決しました。
別の文字でも発生するようなら汎用性も考え2.の方がいいですね。
 

はじめてのCentOS 5 (Linuxサーバ構築編) (TECHNICAL MASTER (48))はじめてのCentOS 5 (Linuxサーバ構築編) (TECHNICAL MASTER (48))
アイティーブースト

秀和システム 2007-08
売り上げランキング : 67048

Amazonで詳しく見る
by G-Tools

無線放送ヘッドラインのDB化

パーマリンク 2008/05/14 10:41:59 著者: kumaold メール
カテゴリ: 仕事

最近は、仕事も割と落ち着いて開発勉強に割ける時間が増えてきました。

そこで、地域ホームページ加子母内の無線放送ヘッドラインのデータベース化をやってます。

従来(現在)は、放送毎にテキストファイルを手動で作成し、スクリプトで読み込むようになっており、ある程度の分が蓄積されたら月ごとにhtmlに書き出していました。
しかし、それではデータの肥大化と処理、手間がかかるので過去の分も含めて全てデータベース化をしようと思い立ちました。

これで、任意の期間指定で出力、検索などの応用もやりやすくなります。
現在、順調に入力、データ出力、地域HP用表示など製作中です。

第6回SE勉強会&IISでcakePHP

パーマリンク 2008/05/12 11:48:24 著者: kumaold メール
カテゴリ: 仕事, 勉強会など

GWを挟んだので3週間の空きがありましたが、昨日は第6回SE勉強会でした。

今回の宿題は・・・
一言で言うと、「押しボタン式信号機」を作りましょう、ということです。
詳しくは勉強会ブログにて。


仕組み自体は、適度な間をおきつつ色を順次変えていくだけだと思ったので、setTimeoutで単純に各パターンを呼び出しているだけです。

しかし●と■を画面上に並べただけでは個人的に納得できなかったので、無駄に信号っぽい感じに並べてみましたw

こんな感じです。(IEだと間隔が崩れるのでFirefoxで見てください)


ソースはこちら
html部分は、各信号の色にidを振りonclick=signal()で呼び出しているだけです。

function signal(){
    var t = 0;
                                        //青黄赤 赤青
    setTimeout(signal2, t += 1000);     //●○● □■
    setTimeout(signal3, t += 1500);     //●●○ □■
    setTimeout(signal4, t += 1000);     //●●○ ■□
    setTimeout(signal5, t += 3000);     //●●○ ■■
    //点滅の回数指定
    for (var i = 0; i < 4; i++) {
        setTimeout(signal4, t += 300);  //●●○ ■□
        setTimeout(signal5, t += 300);  //●●○ ■■
    }
    setTimeout(signal6, t += 300);      //●●○ □■
    setTimeout(signal1, t += 1000);     //○●● □■
}

//赤消灯、青点灯
function signal1() {
    document.getElementById("green").style.color = "lime";
    document.getElementById("red").style.color = "black";
}

//青消灯、黄点灯
function signal2() {
    document.getElementById("green").style.color = "black";
    document.getElementById("yellow").style.color = "yellow";
}

//黄消灯、赤点灯
function signal3() {
    document.getElementById("yellow").style.color = "black";
    document.getElementById("red").style.color = "red";
}

//歩行赤消灯、歩行青点灯
function signal4() {
    document.getElementById("walk_red").style.color = "black";
    document.getElementById("walk_green").style.color = "lime";
}

//歩行青消灯
function signal5() {
    document.getElementById("walk_green").style.color = "black";
}

//歩行赤点灯
function signal6() {
    document.getElementById("walk_red").style.color = "red";
}


◎良かったこと
実際の信号機の見た目、動作を再現できた。

◎反省点
1度ボタンが押された後で、再度押されたときを想定していなかった。
(押されると時間差で同時に複数点灯してしまう)



午後からは、まだcakePHPについていける自信がなかったので一人で自主勉強。

サーバに上げるのが面倒で、ノートPC内のIISで動かそうと四苦八苦。
色々調べた結果、mod_rewriteまわりの絡みで挙動が怪しいことが判明。

無理矢理cakePHPディレクトリ内のindex.phpの58行目を書き換える。

$uri = setUri();

  ↓

$uri = env('PHP_SELF') . env('QUERY_STRING');


アクセスURLは、

http://localhost/index.php?/コントローラ/メソッド/パラメータ...


これで一応問題なく動きます。
ただ、自動生成されるURL類に若干の書き換えが要りますが。

・・・結論、mod_rewriteの使えるLinuxサーバを用意しましょう!

ブロッコリー総会通知キタ━(゚∀゚)━!!

パーマリンク 2008/05/10 23:52:14 著者: kumaold メール
カテゴリ: 投資

昼近くに起きて机の上を見ると、ブロッコリーからの見慣れた茶色い封筒が。

過去2回も行き逃したここの株主総会、今年こそは行かねば!
日程的には2週間の週末で都合はつきそうです。

去年は新社長が、『有利子負と連呼しまくったことで一躍、笑いものにされ有名になったことは伝説ですが、今年は一体どうなることやら。。。

新合弁会社の設立先行投資で赤字ですが、来期には期待したいものです。


まあ本当はお土産目当てというのは内緒・・・

 

Oisix ゆで色あざやか! ブロッコリー(千葉県産)Oisix ゆで色あざやか! ブロッコリー(千葉県産)

オイシックス
売り上げランキング :

Amazonで詳しく見る
by G-Tools

Windows XP SP3リリース

パーマリンク 2008/05/09 13:34:25 著者: kumaold メール
カテゴリ: 新情報いろいろ

やっと待ちに待ったWindows XPのServicePack 3(SP3)が先日正式リリース。

延期に告ぐ延期で、最初は2006→Vista延期で2007→Vista SP1を優先して2008→互換性バグで4/30から延期→やっと先日って流れ。
どんな糞ゲーでも流石に2年も延期は聞いたことないがw

もちろんこういう人柱的なことは好きなので入れてみたところ・・・

変化なし!

結局SP1みたいにバグ修正パッチの詰め合わせかよ!
そりゃ真っ黒ソフトも顧客がXPに居座られると困るからかw


さて、同時にIMEの最新語辞書2008年5月もリリース

毎度毎度ネタが満載のこの変換辞書、またやらかしてくれました。
(成歩堂@07.11、冬コミ@07.11、月面兎兵器@07.8、灼眼@06.8)

若干、何故に今更感がありますがそれだけ認知度があるということで

…いつの間に「萃夢想」「花映塚」「魔理沙」やらが変換できるようになったんだ?

爆速RAIDの脅威!?

パーマリンク 2008/05/07 16:02:26 著者: kumaold メール
カテゴリ: デジタルモノ, 自宅鯖

さて、昨日あと10時間なる表示だった構築も昼見たら無事に完了!

お待ちかねのベンチマークを取ってみましょう
使用するソフトは、データの信頼性に定評のあるCrystalDiskMarkにて。


流石に150MB/sまでいかないとはいえ、RAID 5なことを考えると上出来では。

ちなみに、ごく普通の(?)自作機による結果は、こんな感じ

Read[MB/s]Write[MB/s]
Seq74.7368.82
512K39.3239.23
4K0.6851.128


次に、ネットワーク速度の計測。

まずは、100BASE-TXで繋がった旧ファイルサーバ
まあ100MのLANとしては理論値の90%近くで実に良好。

Read[MB/s]Write[MB/s]Network[Mbps]
100BASE-TX10.4111.4891.84


次に、今回構築したRAID 5による新ファイルサーバ。
スイッチングHUBにはBUFFALOのLSW-GT-5NSを使用。

理論上HDDがボトルネックになるのは117.5MB/s*8=940Mbpsで実質なし
そこでGigabit-LANの成果の見せ所ですよ。

この速度だとフレームサイズにより転送ロスが増えるので、フレームサイズを変えてみたところ、何回やっても4Kあたりが最も良好な結果に。
HDDのクラスタサイズが4KBなのも関係あるのか?

フレームサイズRead[MB/s]Write[MB/s]Network[Mbps]
(default)151446.6274.02592.16
408854.1985.39683.12
901451.2283.90671.20


まあこれだけスピード出ればむしろクライアント側の方が明らかにボトルネックになるのは確実なのでこれで良しとしましょう。

やっぱ1桁違うと(・∀・)イイ!!


RocketRAID 2300を税込15,225円で販売中!
パソコンショップ プロクシー RocketRAID 2300

RocketRAID 2300によるRAID 5構築

パーマリンク 2008/05/06 20:38:48 著者: kumaold メール
カテゴリ: 自宅鯖

ファイルサーバを組むためのパーツが今日揃ったので構築に入ってみます。

RAID 5というのは要約すると、「同じHDDを複数台組み合わせて、1台分容量喰うけど1台壊れてもデータ復元できるよ」って奴です。

ただ、演算処理がいる関係でオンボードや安物ブランド(玄人志向等)ではWriteが20MB/sで単体HDD以下という噂を聞き、調べていたところこちらのページを発見。

そいつはなんと160MB/sという爆速を叩き出しているではないか( ゚д゚)

そのカードなら手頃な値段かつ、高速なんで早速ヤフオクにあったものを落札!。

メーカーHP HighPoint RocketRAID 2300

RocketRAID 2300

クリックで拡大画像


適当にヤフオクやらの余りパーツ組み合わせた構成は、
M/B: ASUS P5WD2
CPU: Pentium 4 630
RAM: PC2-4300 512MB
HDD: 20G ATA + 500G SATA x3 @先日の大須にて


無事にRAIDアレイの設定やらOSインストールが完了し、構築作業を進めると…

Remaining time 10:23.12[残り時間 10時間]


そんなに時間かかるのかよ!!
まあ確かに総容量1.5TB[実容量1.0TB]あるなら仕方ないか

ベンチマーク取ったり、ネットワーク速度計測したかったのにこりゃ明日か

RocketRAID 2300ユーティリティソフト

クリックでユーティリティソフト画面

 

RR2300 RocketRAID 2300LF HighPointRR2300 RocketRAID 2300LF HighPoint

Amazonで詳しく見る

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2008年5月
 << < 現在> >>
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

検索

XMLフィード

16ブログ     blogging tool