2012年12月24日月曜日

正規表現の先読み

msdnを見ていたら、こんなソースを見つけた。

public void OnValidatePassword(object sender,
                              ValidatePasswordEventArgs args)
{
  System.Text.RegularExpressions.Regex r =
    new System.Text.RegularExpressions.Regex(@"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})");


  if (!r.IsMatch(args.Password))
  {
    args.FailureInformation =
      new HttpException("Password must be at least 6 characters long and " +
                        "contain at least one number and one special character.");
    args.Cancel = true;
  }
}
パスワードの入力チェックで
  • 長さが6文字以上
  • 数字が1つ以上含まれている
  • 英数字以外の文字が1つ以上含まれている
という3つの用件を
(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})
という一つの正規表現でチェックしていた。 正規表現の『(?=)』は先読みと呼ばれるもので、正規表現の先読みについて解説してみる がとても参考になった。

2012年9月9日日曜日

最近接偶数への丸め(偶数丸め、JIS丸め)について勘違いしていた

最近接偶数への丸め(偶数丸め、JIS丸め)について勘違いしていた話。
最近接偶数への丸めについての仕様は http://www.jisc.go.jp/app/JPS/JPSO0020.html を開き「Z8401」で検索。

当初、小数点以下を丸めて整数にする場合、
  • 小数第一位が4以下ならば切り捨て
  • 小数第一位が6以上ならば切り上げ
  • 小数第一位が5で一の位が偶数ならば切り捨て
  • 小数第一位が5で一の位が奇数ならば切り上げ
と思っていた。
1.50 ⇒ 2     1.51 ⇒ 2
2.50 ⇒ 2     2.51 ⇒ 2
になると思っていたが、正しくは
1.50 ⇒ 2     1.51 ⇒ 2
2.50 ⇒ 2     2.51 ⇒ 3
である。
最近接偶数への丸め(偶数丸め、JIS丸め)は、与えられた数値を近い方へ丸める。
与えられた数値が切り上げた数値の方が近い場合は切り上げ、切り下げた数値の方が近い場合は切り下げとなる。距離が同じ場合は、偶数の方へ丸める。
2.51 ⇒ 3になるのは切り下げた数値(=2)よりも切り上げた数値(=3)の方が近いためである。

2012年8月24日金曜日

Gmail の受信トレイで日付と時刻を表示させる

Gmailの受信トレイで右側に日付が表示させれていますが時刻は表示されていません。 日付にカーソルを合わせるとツールチップスに時刻も表示されるので、グリモン使えばできるじゃないかと調べてたところ見つかりました。

  Gmail で日付と時刻を表示させるようにする Chrome 向け User Scripts

しかし、試してみたところうまくいかず。
以下のように修正したところ正常に表示できるようになりました。

2012年4月8日日曜日

syntaxhighlighter導入

以下の記事を参考にSyntax Highlighterを導入してみた。

以下テスト。
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

2012年3月25日日曜日

Oracleがインストールできない

先日、仕事で自分のWindows端末にだけOracle Clientがインストールできない現象が発生。
setup.exeをクリックしてもインストーラーが起動せず。
原因はWindowsのユーザー名に『!』が含まれていたからでした。

OracleのHPに
  • Oracleソフトウェア用に選択したパス(Oracleホーム・パス、Oracleベース・パスなど)では、ASCII文字のみを必ず使用してください。一部のパスにインストール所有者名がデフォルトで使用されるため、このASCII文字制限はユーザー名、ファイル名およびディレクトリ名に適用されます。
  • データベース・ソフトウェアが使用するすべてのパス(Oracleホーム・パスおよびOracleベース・パスなど)は、"# % & ' () * + , - . / : ; < = > ? @ _ A-Z a-z 0-9の文字のみを使用する必要があります。これには、ユーザー名、ファイル名およびディレクトリ名も含まれます。このリリースでは、Oracle Grid InfrastructureホームまたはOracle Databaseホームでの他の文字の使用はサポートされません。文字セットは、オペレーティング・システムのユーザーおよびファイルのネーミング規則により、さらに制限されます。
http://docs.oracle.com/cd/E16338_01/install.112/b56273/pre_install.htm#CIHIBHIG
と書かれています。
回避方法としては、ユーザー環境変数のTEMP,TMPの値を上記に書かれている使用可能な文字のパスに変更すれば無事インストールできました。

原因を調べているときに見つけましたが、Office2007以上が入っているとOracle Clientがインストールできないようです。http://blogs.yahoo.co.jp/jxxst516/28670802.html
リンク先に書かれているようにMS-IME2007(もしくは2010)を以前のMS-IME、もしくはATOK等に変更すればいんすとーるできるようです。