.NETASP.NETパソコンのこと日記

ガベージコレクションとは?

1 Mins read

最近、色々な言語をやっていて頭の中がゴチャゴチャしてます(汗)

整理の意味を含めて少しプログラミングの復習をしてましたので覚書ドス:mad:

Subject通り、ガベージコレクションとは?ですが、古くは70年代からの考えらしいです。
メジャーな言語ではJavaに始まり、MSも.NETでこの法則を使っています。

簡単な説明としてはCやC++などではメモリ管理をプログラマーが行っていて
開放を忘れるとメモリーリークなどバグを見つけるのが一苦労な問題が発生します。

たまにC言語だとmallocとかで確保後、シカトしちゃってるのがあるからね:roll:
異常終了時も泣かされました:cry:

このメモリー管理をシステムサイドに任せる機能がガベージコレクションと言われるもので、
プログラマは好き勝手にメモリーを使用して、使い終わっても解放シカト状態・・・・・でも
定期的にメモリークリーンをシステムサイドで行ってくれるありがたい機能:!:

ここに非常に分かりやすく解説が載っているので必読です!

しかし、使ったメモリーを自分で開放しないとは・・・Oldマンとしては世も末だな・・・・

Read more
.NETASPASP.NET日記

Page(Context)オブジェクトを動的継承?

1 Mins read

さてさてASP.NETのお話です:razz:

ASP.NETで開発をしていると良くUI.Pageを継承したクラスを作成しますが、
継承はご存知のとおり多重にはできない。

しかも、Controls.Add追加するなど共通なロジックを入れたい場合はDLL(コンパイル)にしないといけない・・・

できれば簡単にaspxファイルなどにインプリメント系のテキストに記述したソースで、
ProcessのContextをもらえないかな?

と考えたとき・・・・強引?にありました。

Page_Loadなどイベントゲットできる、実行中のthis.Contextを与えてくれる機能が・・・

自身のクラスには「Inherits System.Web.UI.Page」してから

Public Sub New()
  '以前のトレース状態を保存
  Dim blnTrace As Boolean
  blnTrace = Current.Trace.IsEnabled
 
  'IDをセットしトレースをOffでProcessにセット
  Me.ID = "_" & _strTitle
  Me.Trace.IsEnabled = False
  Me.ProcessRequest(Current)
 
  'OldTrace情報を再セット
  Current.Trace.IsEnabled = blnTrace
End Sub

見事にPage_Load(イベント)やRequest(プロパティ)などのリソースを使用できます!

内部動作はと考えると・・・・

Pageを再度呼んでそうで一寸はロスしてそう:roll:

ま、Traceしてみて問題なさそうだからしばらく遊んでみよう!

Read more
Vistaパソコンのこと日記

これでいいのかVista!

1 Mins read

お盆真っ只中ですが、皆さん如何おすごしですか:roll:
こんな時に働いている人は少ないと思いますが、気になる記事があったのでコメントします。

VistaのUpdateプログラム

ってことで色々有るみたいですが、これまでMSのOSがリリースされるたびに問題があったのは
皆さんも御存知だと思いますが、ここまで酷いのはVistaが初めてではないでしょうか?

ビジネスの世界ではVistaはまだまだ浸透していないのは「安定性」&「下位互換」を求められているからだと
分からないとOSシェアを落としていくことになるでしょう。

Read more
LinuxMySQLWordpress日記

WordPress ME2.0系から2.2系にお引越し(EUC-JPからUTF-8に)

1 Mins read

昨今のServerサイドのWeb環境文字コードはMS=Shift_JIS、Linux=EUC-JPだったが、
どうやらUTF-8に落ち着いてきたらしい。
他国の言葉もこれで一括対応出来る、マルチ言語対応が楽だからだろう:roll:

UTF-8は1Byteから4Byteで1文字を表現する可変文字コードである、
多少脆弱性の問題などあるらしいがこれが主力の文字コードときっとなるなぁ~詳しくはWiki等で:razz:

さて、Wordpress MEも2.2系からUTF-8のみの対応になったらしく、
今後、EUC版はバージョンアップが出来なくなるので、

現在のphp4系、MySQL4.0系、Web文字コードEUC-JP環境から
新版のphp5系、MySQL5.0系、Web文字コードUTF-8環境にお引越しをやります。
さらに試しにドメイン名も変えちゃいます!

もちろん、問題点が続発したので記述しておきます:evil:

作業順序
1.旧Wordpress2.0系のコンテンツ及びDB BackUp
2.新サーバーにBackUpをコピーし、起動&正常動作確認
3.Wordpress2.2を上書きしVersionUp、起動&正常動作確認

こんなところでまず

1.旧Wordpress2.0系のコンテンツ及びDB BackUp

・phpMyAdminでテーブル群をsqlとしてバイナリファイルでBackUp
 この時にCreate Databaseはいらない
・コンテンツをFTPツールでBackUp
・・・無事に終了

2.新サーバーにBackUpをコピーし、起動&正常動作確認

・sqlファイルをバイナリーEditで開き、URLとサーバーパスを置換で変更、普通のEditだと駄目ですよ:cool:
 例:URLは「hoge.mein.jp/blog」などを「hoge2.main.jp/blogman」に置換
 例:Server内コンテンツPathは「/usr/local/htdocs」などを「/usr/local/htdocs2」に置換
 あくまでドメイン(URL)を変える時なので変えない人は上記作業はいらない
・phpMyAdminで新規DBを作成する。文字コードは「UTF8」なので照会は「UTF8_unicode_ci」でCreate!
・先ほどBackup&編集したsqlファイルをphpMyAdminで作成したDBに対してインポート処理
 BackupしたsqlファイルはEUC-JPなので、ファイル種類のオプションは「eucjpms」にしてsqlオプションは「MySQL4.0」互換でGo!
・FTPでbackUpコンテンツをUpLoad!

完了!・・・・と行きたい所だけど、もちろんそうは問屋が卸さない:cry:

問題点
1.Wordpress内のオプションの文字コードがEUCのまま
 
2.これまたオプションのrole権限がEUCのまま
 「Warning: Invalid argument supplied for foreach() in /XXXX/wp-includes/capabilities.php on line 19」などのエラーがでる
 
3.テーマファイルがEUCのままなので日本語を使用している場合は文字化けする
 UTF-8はASCIIと互換があるのでASCII系の文字列の場合はEUCファイルでも問題ないが、日本語を使用しているWordpressファイルは基本的に文字化け対象に・・・
 
4.Wordpress2.0系のdbアクセス部分にMySQL5.0系のUTF-8に対応するコードが必要
 MySQLがUTF-8の場合、アクセス時に教える必要がある。
 
5.wp-config.phpの修正

解決方法 (注:DB系のプレフィックス文字「wp_」は環境により違う)
1.Wordpress内のオプションの文字コードがEUCのまま

A.phpMyAdminで「wp_options」テーブルを開き、option_nameが「blog_charset」のレコードを開くそして「option_value」値を「UTF-8」に変更しUpdate!

2.これまたオプションのrole権限がEUCのまま

A.phpMyAdminで「wp_options」テーブルを開き、option_nameが「wp_user_roles」のレコードを開く、「option_value」値が

「a:5:{s:13:"administrator";a:2:{s:4:"name";s:6:"管理人";s:12:"capabilities";a:31:」

などになってると思いますが、ここがみそで「s:13:”administrator”」はs:13とは文字数を表していてEUCでもUTF-8でも”administrator”は13Byteなのですが、「s:6:”管理人”」などはEUCだと全角2Byte×3=6Byteですが、UTF-8だと全角が3Byteなので=9Byteでなくてはいけません。なので「s:9:”管理人”」として、他にも漢字、ひらがながあれば同じように修正してからDBをUpdateする。

3.テーマファイルがEUCのままなので日本語を使用している場合は文字化けする

A.これはEUCファイルをUTF-8文字コードに変換できるツールで修正して:razz:
KanjiTranslatorなど良いですよ!

4.Wordpress2.0系のdbアクセス部分にMySQL5.0系のUTF-8に対応するコードが必要

A.これはphpファイルを修正する必要があります。
「wp-includes/wp-db.php」ファイルの以下の部分に「 mysql_query(“SET NAMES utf8”, $this->dbh); 」を追加する

function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
if (!$this->dbh) {
...
}
mysql_query("SET NAMES utf8", $this->dbh);
$this->select($dbname);

5.wp-config.phpの修正
A.これはEUCの部分をUTF-8と変えてください。
また、2.2系からconfigに追加がありますので詳しくはWordpressMEを参照して:roll:

以上の対応で修正完了、そのあとWordpress2.2系を上書きコピーしてupgradeすればOK:razz:

関係ないけどこんなのありました!
FFFTPでUTF-8を扱える拡張版・・・ここに・・・作者さん使わせて頂きます!感謝

Read more
Linux日記

Fedora7にxamppをInstall

1 Mins read

VMの続きですが、xampp for linux版の1.6.1をインストールしてみました。

・「su -」でrootになって、ここxamppから最新版をDownload!
 
・「tar xvfz xampp-linux-1.6.1.tar.gz -C /opt」コマンドで解凍&/opt直下にlamppをコピー
 注意:以前の開発名がlamppだったのでファイル名やconfファイル等がlamppになっている箇所が多々ある!?
 
・「/opt/lampp/lampp start」で起動確認、うまく起動できたらブラウザから「http://localhost/」で確認
 
・OKなら「/opt/lampp/lampp security」でセキュリティー設定

・OS起動時にデーモンとして走らせるなら
1.「/opt/lampp/lampp」を「/etc/rc.d/init.d/」にコピー
2.「chkconfig --add lampp」でサービス追加
3.「chkconfig --list」でランレベルを確認(基本的にそのままでOK

以上・・・本当はmake、./configure したい・・・:wink:

Read more