主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

mono で C# .NET 2.0 向けコードのコンパイル

SVN から mono を取り出して Linux-Windows Cross-platform アプリを作ってるんだけど、ソースコードのコンパイルではまったので、むかつきがてらメモ。
mono の C# のコンパイルは mcs だっていうのは知ってたんだけど、どうやっても 2.0 対象のクラスとかもろもろがうまくいかない。
で、小一時間悩んだ挙句、 2.0 向けのコンパイラはそもそも gmcs だということが判明。

$ gmcs EnjoiXXXX.cs
Compilation succeeded - 0 warning(s)
できた。。

PHP で BASIC 認証もどきを実装する

このブログを作成している際に、特定の記事だけ簡単な認証を行いたかったので、 PHP で BASIC 認証 っぽいことをやってみた。
実装は簡単で、ユーザが BASIC 認証を行った場合 PHP_AUTH_USER と PHP_AUTH_PW 環境変数にその際のユーザ名とパスワードが復号化されて格納される。
これを PHP で認証して、違ったら 401 エラーを返せばいいだけ。

$signin = false;

if (isset ($_SERVER['PHP_AUTH_USER']) &&
    isset ($_SERVER['PHP_AUTH_PW']))
{
    if ($_SERVER['PHP_AUTH_USER'] == 'masaki' && 
        $_SERVER['PHP_AUTH_PW'] == 'password')
    {
        $signin = true;
    }
}

if (! $signin)
{
    header('WWW-Authenticate: Basic realm="Enjoi Blog"');
    header('HTTP/1.0 401 Unauthorized');
    print "Error 401";
    exit;
}

PHP の Session を複数ドメインで共有する

例えば www.enjoitech.jp と blog.enjoitech.jp でセッションを共有したい場合は、 php のコードの session_start () 関数の前に、 session_set_cookie_params() でクッキーの影響範囲を enjoitech.jp にしてやることができる。

session_set_cookie_params (0 , '/', 'enjoitech.jp');
もしくは php.ini で
session.cookie_domain "enjoitech.jp"
でも可能。

Access の Macro や Form を Grep する

たまに Access で作成したマクロやフォームから特定の文字列を検索したいときなどがあり困るんですが、
実は Access のマクロやフォームはテキストファイルに変換できます。
しかも簡単な VB スクリプトを書くだけ。
そのやり方のメモ。


もっと読む

IIS の ASP .NET のバージョンを切り替える

Visual Studio .Net/2003/2005 などがインストールされてるマシンで、 ASP .NET のプロジェクトを作成する際に、「ASP .NET Version 1.1 が実行されていません」みたいなメッセージが表示されて、作成できないことがある。
これは、 IIS を再インストールしたり、 .Net は 1.0 、 2003 は 1.1 、 2005 は 2.0 と、 Visual Studio のバージョン毎に動作する .NET のバージョンが違うことから起きたりする。
このエラーを解消するには、 IIS で動作させたい ASP .NET のバージョンにしてやればいい。実際には以下のコマンドを打つ。
1.1.4322 の場合。

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>aspnet_regiis.exe /i
ASP.NET (1.1.4322.0) のインストールを開始します。
ASP.NET (1.1.4322.0) のインストールが完了しました。

もしくは「管理ツール」の「インターネット インフォーメーション サービス」、「既定の Web サイト」のプロパティから、 ASP .NET タブを開いて変更することもできる。

.Net から MySQL へ接続するには

.Net から MySQL に接続するには MySQL AB がリリースしている MySQL Connector/Net を使用します。
MySQL® Connector/Net
MySQL はフリーでかなり優れているので、 .Net からの使用用途もかなり増えました。
とりあえず Visual Studio 2003 で C# ASP .NET から MySQL に接続しました。


もっと読む

borland C++ Builder String tips

Borland C++ Builder の文字列操作関連のチップスです。
もっと読む

Coldfusion 7 から MySQL 5 に接続するには

Coldfusion 7 の管理画面からデータソースへいって、データソースの設定をしようとしても、 MySQL 5 用のドライバは標準では用意されてない。
でも MySQL からしっかりと配布されているのでそれを入手して設定すれば普通に使えます。
そのときのメモ。


もっと読む

ASP .NET でファイルを出力する

ASP .NET でイメージファイルや CSV ファイルを出力する aspx を作成するには、出力ヘッダを書き換えてファイルを出力してやる。
this.Response.AddHeader("Content-Disposition","attachment;filename=CSVData.csv");
this.Response.AddHeader("media-type","application/octet-stream");
this.Response.WriteFile(csvFilelPath);
this.Response.End();

C# .NET で schema.ini を使用した CSV 処理

C# .NET で CSV をOLE で読み込んで、データベース処理をするやり方のメモ。 csv ファイルの置き場所は C:\text.csv 。
string strDir = "C:\\";
string strFile = "test.csv";
OleDbConnection myConn = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
  + strDir + ";Extended Properties='TEXT;HDR=NO'");
myConn.Open ();
OleDbDataAdapter sqlda = new OleDbDataAdapter ("SELECT * FROM " + strFile, myConn);
DataTable dtbl = new DataTable ();
sqlda.Fill (dtbl);
dgrdCsv.DataSource = dtbl;
myConn.Close ();
ちなみに、読み込む CSV のフィールドタイプを指定した場合は、 schema.ini を用意して CSV と同じフォルダにおいておく。
[filename.csv]
ColNameHeader=True
Format=CSVDelimited
Col1=user_id Integer
Col2=user_name Char Width 32
Col3=notes LongChar

といった感じ。はじめの一行目が CSV ファイル名をセクションで指定して、二行目がヘッダの有無、三行目はデータファイルの書式(ここでは CSV )を指定してます。それ以降が実際のカラムの指定。

ASP .NET でボタンクリック時に JavaScript を実行

ASP .NET でボタンが押下されたり、サブミットされた際に、サーバにデータを送る前に confirm を実行したり、特定のチェックや処理をクライアント上で行いたい場合、 RegisterOnSubmitStatement などを使うと便利です。
public void Page_Load(Object sender, EventArgs e)
{
    RegisterOnSubmitStatement ("submit", "return window.confirm ('削除します。よろしいですか?');");
もしくは、特定のボタンのみに登録したい場合は以下も有効。
public void Page_Load(Object sender, EventArgs e) {
    Button1.Attributes["onclick"] = "return window.confirm ('削除します。よろしいですか?');";

ASP .NET の VIEWSTATE を暗号化する

ASP .NET はコントロールデータが全て一つの BASE64 エンコードされた __VIEWSTATE っていうフォーム変数に格納されてるんだけど、それ用のソフト等を使えば内容が閲覧できるし、書き換えることもできる。
これを暗号化して、改ざんされた際にはエラー処理するようにするようにするには、 web.config で Page.EnableViewStateMac を有効にすればいい。

<configuration>
<system.web>
<machineKey validation="3DES" />
<pages enableViewStateMac="true" />
</system.web>
</configuration>
Mac stands for "message authentication check".

Style Sheet(CSS) で Scroll bar

HTML で、限られたスペースに、可能な限りのドキュメントを入力してスクロールバーで制御したい場合があります。 iframe や textarea でも行えますが、スタイルシートで overflow を使用してスクロールバーを出すこともできます。
例えば幅 400x40 のスクロールバーつきエリアを作成するには以下のようにします。

<div style="overflow: auto; width: 400px; height: 40px">
    ここに入力したいドキュメントを書く。
</div>

実際どのようになるかというと、このように入力したドキュメントの長さに応じて、必要なスクロールバーを自動的に表示してくれます。当然 textarea とは違いタグも書けまし、 iframe みたいに別の HTML を作成する必要もありません。

JavaScript で HTML Control の表示/非表示を切り替える

ものすごいベーシックですが、なぜかよく忘れるのでメモっておきます。 StyleSheet の display を使用して行うやり方です。 例えば以下のような div コントロールを対象として切り替えたい場合を取り上げます。
<div id = "tarishou">test</div>
JavaScript は以下のようになります。
var ctl = document.getElementById ("taishou");
if (ctl.style.display == "none")
    ctl.style.display = "inline";
else
    ctl.style.display = "none";

Coldfusion でファイルを出力する

Coldfusion でサーバ上の画像などのファイルを読み込んで出力するには、 cfcontent を使用します。
<cfcontent type = "image/gif" file = "path/to/file" />

Coldfusion で動的な Form 変数を処理する

Coldfusion で Form 内に Dynamic variable name を使った場合、その入力内容の取得したい場合 Evaluate 関数を使う。
例えば abc_ という固定 name に通し番号の 1, 2, 3 などを付加した場合を考える。

for (i = 1; i LTE < 5; i = i + 1)
{
abc[i] = Evaluate ("form.abc_" & i);
}

Coldfusion で Form 構造体に繰り返し要素を持たせる

Coldfusion で、例えば form タグ内に同じ name 属性を持った要素を複数含んでいた場合、 Form 構造体にはその名前のリストが作成されます。
言葉で伝わりづらいので具体的に以下のコードを見てください。

<form action = "./" method = "post">
<input type = "checkbox" name = "sameopt" value = "1" />
<input type = "checkbox" name = "sameopt" value = "2" />
<input type = "submit"/>
</form>
name 属性が sameopt チェックボックスが二つあります。このフォームでチェックボックスの両方にチェックをし submit すると、 Form.sameopt は以下のようにセットされます。
1,2
,区切りのリスト構造です。 PHP なら、
<form action = "./" method = "post">
<input type = "checkbox[]" name = "sameopt" value = "1" />
<input type = "checkbox[]" name = "sameopt" value = "2" />
<input type = "submit"/>
</form>
$_POST["sameopt"][0] と [1] とい感じで配列になる感じです。で、このリストを一つずつ処理するには、 list 関数を使ったり、 cfloop の list 指定で処理したりするといいでしょう。具体的には、
<cfloop index="i" list="#Form.sameopt#">
という感じです。

perl モジュールで RPM の依存関係を解決したい


cpan2rpm を使うと、 perl モジュールを RPM としてインストールできます。
以下からパッケージをダウンロードしてインストールします。
http://perl.arix.com/cpan2rpm/
↑がリンク切れてたら、↓から RedHat 4 用のも利用可。
http://atrpms.net/name/cpan2rpm/

rpm -ivh cpan2rpm-2.027-1.noarch.rpm

もっと読む

Smarty で年月日 drop down を簡単に作る

Smarty で年月日を表示するドロップダウンを作るには html_select_date というカスタム関数が便利。
これを使うといちいち select だ option だ、何日前を表示だ、とか考えなくてする。実際のコードはこんな感じ。

{html_select_date year_empty="-" month_empty="-" \
day_empty="-" prefix="start" start_year="-4" time=$start_time}

こうすると、ドロップダウンのトップ項目に - を含んだ 4 年前からのドロップダウンが生成され $start_time がデフォルト値になる。
prefix は name に start を付加させて startYear, startMonth とかなるような感じ。詳細は Smarty Documentation参照。

PHP を CGI として実行させ suExec

通常 PHP は Apache にモジュールとして取り込まれている。
これを cgi として動かしたいときには apache の設定ファイルに変更を加える必要がある。
PHP を cgi として動作させると、 suExec も有効にさせることができる。
ただしデメリットもあり、動作が若干遅くなる。
環境は以下のとおり。
CentOS-4.4
PHP-5.1.6


もっと読む
ページ: | 1 | 2 | 3 | 4 | 5 |
フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank1, rank2, rank3, rank7, rank9, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google