サーバ管理者/開発者メモ書き・Linux、Windows等々

開発情報、サーバ管理・設定、モバイルなどの情報です。

全体表示

[ リスト | 詳細 ]

記事検索
検索

正規表現 C#

■正規化
■0〜99.9
0.0も0も通る。99.9まで。100NG、100.1NG
Regex regex = new System.Text.RegularExpressions.Regex(@"(^0|^[0-9]{1,2})$|(^[0-9]{1,2}\.[0-9]{1})$");
if (!regex.IsMatch(textBox1.Text))
{
MessageBox.Show(textBox1.Text);
}
■yyyy/mm/ddフォーマット
 1990/01/01の形式
Regex regex = new System.Text.RegularExpressions.Regex(@"^(\d{4})/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$");
if (!regex.IsMatch(textBox1.Text))
{
MessageBox.Show(textBox1.Text);
}

開く コメント(0)

C# TIPS2

■画面遷移間の値渡し(セッション)
// 画面遷移前の Web フォーム
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Page2.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Server.Transfer("~/Page2.aspx");
}

// 画面遷移後の Web フォーム
protected void Page_Load(object sender, EventArgs e)
{
if (Page.PreviousPage != null)
{
TextBox text1 = (TextBox) Page.PreviousPage.FindControl("TextBox1");
if (text1 != null)
TextBox1.Text = text1.Text;
}
}
■画面遷移間の値渡し(セッション)
※VB.netだけど・・・・
遷移元aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page.aspx.vb" Inherits="Page" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>遷移元</title>
</head>
<body>
<form id="form1" runat="server">
<div>
遷移元<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="遷移" />
</div>
</form>
</body>
</html>


●遷移元vb

Partial Class Page
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Server.Transfer("page2.aspx")
End Sub
End Class


●遷移先aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page2.aspx.vb" Inherits="Page2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>遷移先</title>
</head>
<body>
<form id="form1" runat="server">
<div>
遷移先<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>


●遷移先vb

Partial Class Page2
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsNothing(Page.PreviousPage) Then
Dim txt As TextBox = Page.PreviousPage.FindControl("TextBox1")
Me.TextBox2.Text = txt.Text
End If
End Sub
End Class

開く コメント(0)

C# TIPS1

■コーディング規約(例)
Pascal形式、Camel形式というものがあります。
例えば、Pascal形式::BackColor、Camel形式::backColor ということになりま
す。

種別     形式 例
namespace Pascal System.Drawing
クラス Pascal SampleClass
クラス変数 Camel _sampleField
プロパティ Pascal SampleProperty
ローカル変数 Camel sampleVariable
メソッド Pascal SampleMethod
定数 全大文字 CONSTANT

■Dictionaryの使い方
//必ずnewすること!
Dictionary<String, String > dic= new Dictionary<String, String>();
dic.Add ("ABC", "123");
dic.Add ("BCD", "234");

■文字列比較
// 文字列比較は、Equals。数字は==または !=
if (dic.ContainsKey("ABC").Equals("123")) {
//条件 trueの処理
} else {
//条件 falseの処理
}



■try catch finaly の使い方
try //エラーハンドリング開始
{
//DB接続
//処理
//コミット
}
catch (ArgumentNullException e) //エラー毎にキャッチできる。
//エラー処理の対処方法は、プロジェクトごとで違うため、確認すること。
{
//ロールバック
}
catch (Exception e) //エラー毎にキャッチできる。
{
//ロールバック
//ハンドリングできないエラーはシステムエラーで落とす
throw e;
}
finally
{
//例外発生しても、しなくてもここは通る。
//例えばDBのコネクションを閉じるなどが必要。
}

■switchの使い方
int n = int.Parse(s);
int cost = 0;

switch(n)
{
case 1:
// +25り
cost += 25;
break; //からなずbreakをつける
case 2:
cost += 25;
break;
case 3:
cost += 50;
break;
default:
  //コンソールに出すだけ
Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
break;
}

■型変換(プリミティブ型のみ)の使い方
//文字列をint型に変換
int i = int.Parse("100");

//文字列をlong型に変換
long l = long.Parse("100");

//文字列をfloat型に変換
float f = float.Parse("100.1");

//文字列をdouble型に変換
double d = double.Parse("100.1");

//文字列をbool型に変換
bool b = bool.Parse("True");


string s;

//int型を文字列に変換
int i = 100;
s = i.ToString();

//long型を文字列に変換
long l = 100L;
s = l.ToString();

//float型を文字列に変換
float f = 100.1F;
s = f.ToString();

//double型を文字列に変換
double d = 100.1;
s = d.ToString();

//bool型を文字列に変換
//sは"True"となる
bool b = true;
s = b.ToString();

※但し、WEBだとunicode等の文字コード変換が求められる可能性があるので、こ
れでうまくいかないかもしれない。


■コーディング規約とクラスの例

//namespace
namespace Test.A001
{
// クラス名 :の後は、派生元(例は画面クラス)
public class SampleClass : Form
{

//定数
//Stringの場合どちらの場合もOK
private const String CONSTANT = "定数サンプル1";
private readonly String CONSTANT_READ ="定数サンプル2";
//String以外は、constでしか書けない。
private const int LUCKY_COUNT =100;


// クラス変数、またはフィールドともいう
//private String _sampleStringFiled=null; と書けという人もいるが、初期はnull
//数値は初期は0
private double _sampleField;
private String _sampleStringFiled;

// プロパティ
// いわゆるgetter / setter
// インスタンスに注意すること。自分のインスタンスのため、thisを付加
internal double SampleProperty
{
set{this._sampleField = value;}
get{return this._sampleField;}
}


// メソッド クラスと同名のメソッドはコンストラクタ
// newされたときに実行されるメソッド
// クラスの変数初期化などが行われる
public SampleClass()
{
InitializeComponent();
}


// メソッド1
// 戻り値はint型
private int TestMethod(String mojiTest, int iCountter)
{
//ローカル変数
       int iCount = 0;

try //エラーハンドリング
{
//処理
}
catch (ArgumentNullException e) //エラー毎にキャッチできる。
//エラー処理の対処方法は、プロジェクトごとで違うため、確認すること。
{
throw new ArgumentNullException();
}
catch (Exception e) //エラー毎にキャッチできる。
{
throw e;
}

return iCount;
}

// メソッド2
// メソッドは同じでも、引数が違うため、呼び出される時に、引数で判断される
// オーバロードと呼ばれる機能
// voidは戻り値なし
private void TestMethod(String mojiTest)
{
//ローカル変数
       int iCount = 0;

// void指定なので、戻り値はなし
return;
}
}
}

開く コメント(0)

postfixに、ドメインキー、SPF、DKIMを設定

※前提でHDEコントローラを使っているところからです。
HDEではサポートしていない部分はGUIからは不可能です。


1.HDEのメール設定で
 ・SPFを有効にする
・DomainKeysを有効にする
 にチェックをいれる。

アクセス制御で、送信する範囲のIPもしくは、ドメインをいれる。


2.DNSに以下を追加

バーチャルドメインを使用している場合は、管理しているサーバのDNSの全てに必要。
default._domainkey.xxxxx.jp.
には、公開キーを入れてください。作り方の情報はここには載せません。

xxx.jp. IN TXT "v=spf1 a -all"
_domainkey.xxxg.jp. IN TXT "t=y; o=-;"
default._domainkey.xxxxx.jp. IN TXT "t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBfwerwqefrqwd56a4f6TM0r0k2cMGeGD6k6Fsj6YDi6YdfasdfasA9ZZJGQB8P8iHMf6GhmO2BYLilaTiTtd1OZiE1grid Klk4MzWLPcqqqqqqqqqweqdjTBhDJ9ivSdasdDipg47J4llMHlfXDSoQY8 Tc00000000000000000000000"
の記述を確認


HDEからもDNS情報を確認
DNS再起動



3.postfix リターンメールなし設定
 mydestination = xxxx

xxxのドメインを消す
※HDEで自動で補完されてしまうので、いちいち手作業

postfix再起動



4.dkim-milterのインスト
x64の場合、i386の場合は、x86_64を置換してください。

#sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
#sudo yum install dkim-milter


5.dkim-milter.conf設定
/etc/mail/dkim-milter.confの一番下に書き加え
(/etc/mail/dkim-milter/dkim-filter.conf)

Domain xxx.jp
KeyFile /etc/mail/dkim-milter/keys/default
Selector default
Syslog Yes

以下のように#を付加 まんなかあたりにあります
#KeyList /etc/mail/dkim-milter/keys/keylist




6.clientsファイルを作成

127.0.0.1
xxx.ne.jp (dkimを付加するIPまたはISP情報の範囲)

keys/keylist
*:xxx.jp:default


7.defaultに
プライベートキーをはる。HDEからDL。または作成したものを利用
ここは秘密キーをそのままコピペ


# chown dkim-milter.dkim-milter default


8.
/etc/sysconfig/dkim-milterに以下を追加
EXTRA_FLAGS="-bs -i /etc/mail/dkim-milter/clients"


9.
/etc/init.d/dkim-milterの
SOCKET=local:/var/run/${name}/${name}.sock
↓以下に書き換え
SOCKET=inet:10001:127.0.0.1



10.main.cfに付加

#smtpd_milters = unix:/var/hde/lc-postfix/.hde-lc-sid-milter.sock
smtpd_milters = inet:127.0.0.1:10001 unix:/var/hde/lc-postfix/.hde-lc-sid-milter.sock
non_smtpd_milters = inet:127.0.0.1:10001




11.再起動
dkim-milter起動 chkconfig dkim-milter on を忘れずに
 ※エラーがでたらその箇所を見直し
postfix再起動


12.テストメール送信

開く コメント(0)

サーバ移行などでテストサーバを立てた場合。
メールが、新しいサーバになってしまう。

旧サーバに送信したい場合。
DNSの設定だけではだめ!


main.cf 

mydestination = localhost xxx.co.jp xxx.com

この行 のドメインを消す。

そうしないとDNSで設定したサーバではなく、ローカルサーバのバーチャルドメインを見てしまい。
メールボックスが見つからない。とかになる。

開く コメント(0)


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事