上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


--.--.--|スポンサー広告||TOP↑

方法 2: .NET Framework のアシスタント Firefox を削除します。

.NET Framework アシスタント Firefox のコンピューターから削除するのには、次の手順を実行します。
  1. 拡張用のレジストリ キーを削除します。そのためには、以下のいずれかの方法を実行します。
    • レジストリ エディターを使用して。
      1. 管理者のアクセス許可を持つアカウントでログオンします。
      2. [スタート] ボタンをクリックし、[ファイル名を指 定して実行] をクリックして、regedit を入力し、Enter キーを押します。
      3. 次のレジストリ サブキーを見つけてクリックします。

        の x86 ベースのコンピューター:
        HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\Extensions
        の x64 ベースのコンピューター:
        HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Firefox\Extensions
      4. {20a82645-c095-46ed-80e3-08825760534b} サブキーを削除します。
    • コマンド プロンプトを使用してください。
      1. 管理者の アクセス許可を持つアカウントでログオンします。
      2. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして [cmd と入力し、Enter キーを押します。
      3. コマンド プロンプトで、適切なコマンドを入力し、Enter キーを押します。

        の x86 ベースのコンピューター:
        reg DELETE"HKLM\SOFTWARE\Mozilla\Firefox\Extensions"/v"{20a82645-c095-46ed-80e3-08825760534b}"/f
        の x64 ベースのコンピューター:
        reg DELETE"HKLM\SOFTWARE\Wow6432Node\Mozilla\Firefox\Extensions"/v"{20a82645-c095-46ed-80e3-08825760534b}"/f
  2. Firefox ユーザー エージェントで、手順 1 で行った変更をリセットします。以下が手順例となります:
    1. 開始 Firefox、型 に関する: 構成 は Firefox のアドレス バー。
    2. スクロールまたは フィルター を使用して、次の基本設定項目を検索します。
      general.useragent.extra.microsoftdotnet
    3. このアイテムをマウスの右ボタンでクリックし、[リセット] をクリックします。
    4. Firefox を再起動します。
  3. .NET Framework の拡張子のファイルを削除します。以下が手順例となります:
    1. 管理者のアクセス許可を持つアカウン トでログオンします。
    2. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして、エクスプローラー を入力し、Enter キーを押します。
    3. 次 のフォルダを開きます:
      プレゼンテーションの Foundation\DotNetAssistantExtension\ %SYSTEMDRIVE%\Windows\Microsoft.NET\Framework\v3.5\Windows
    4. DotNetAssistantExtension フォルダーとそのすべての内容を削除します。


スポンサーサイト
2010.03.31|パソコンな日々コメント(0)TOP↑
refer http://builder.japan.zdnet.com/news/story/0,3800079086,20410607,00.htm?tag=zdnw

CVSを使っていて、困った経験はないだろうか?この記事では、CVSリポジトリをGitに変換する利点とその手順を説明する。

最新特集【一覧】

 何週間か前、私は上流のCVSリポジトリか ら、複数のディレクトリにある複数のファイルを含むパッチセットを抽出しなくてはならない立場になっていることに気づいた。1回のコミットを、1つの簡単 に取り出すことのできるdiffにまとめるという、Subversionのコンセプトに慣れていた私は、今回バージョンコントロールの世界にどれほどの進 化があったのか悟り、ショックを受けた。

 例えば、CVSではコミットを行うと、各ファイルにそ れぞれ別のリビジョンが作成されるため、特定の時点のコミットで何が変更されたかをすべて知りたいとしても、リポジトリ全体のdiffを取ることはできな い。SubversionGitでは、3つのファイルを1度にコミットした場 合でも、変更された部分のdiffをまとめて取ることは簡単にできる。ところがCVSの場合は、同時にコミットされたもので あっても、まずそれら3つのファイルのリビジョンをそれぞれ調べ、それらのファイルのdiffを別々に取らなくてはならない。

 このことによって、CVSで複数のファイルに対する1つのパッチ を作成することは、よくて面倒、悪ければひどく腹立たしい作業になってしまっている。幸運なことに、git-cvsプラグインを使えば、CVSの リポジトリをGitのリポジトリに変換することが可能だ。この裏技を使うことによって、リポジトリに対して同時にコミットした複数のファイルを、1度に扱 うことができる。

 これを行うには、git-cvsプラグインをインストールする必要がある。Fedoraでは、yum install git-cvs cvspsを実行して、git-cvsパッケージをインストールすればよい(CVSのパッチセットを作成するには、 cvspsユーティリティが必要になる)。この作業が終わったら、次のように、Gitに対してCVSリポジトリを指定する。

$ git cvsimport -v -d :pserver:anonymous@cvs.sv.gnu.org:/sources/classpath classpath

 このコマンドは、cvs.sv.gnu.org:/sources/classpathにあるGNU Classpath CVSリ ポジトリを、./classpath/にあるGitのローカルリポジトリに変換する。変換しようとするCVSリポジトリの大きさによっては、この処 理に何時間もかかることがある(上記のコマンドは、終了までに約12時間かかった)。

 これが終われば、git logコマンドを使って、コミットの変更履歴を見ることができる。各ファイルのCVSバージョン番号はなくなっており、そ の代わり、コミットごとに、Gitがコミットを識別するために使っている一意の識別子が割り振られる。また、同時に複数のファイルを対象にしたコミット は、1つのコミットとして扱えるようになる。

 git logの出力を見れば、求めているチェンジセットのコミットIDを知ることが出来る。そのIDと、その直前のコミットのコミットIDをメモしておく。その 後、次のコマンドを実行すれば、そのチェンジセットのdiffを生成することができる。

$ git diff [new_revision] [old_revision]

 このコマンドの出力は、チェンジセット全体を1つにまとめたものになっている。1回のコミットで変更した複数のファイルの差分を、1つのコマンドで得る ことができれば、個々のファイルについて、それぞれリビジョンを調べ、それらのdiffを1つにまとめる場合よりも、はるかに時間を節約できる。ただしこ れは、最初にリポジトリの変換にかかる12時間を考慮に入れなければの話だ(公平を期すために記しておくが、今回の例で使ったリポジトリにあるデータは大 量で、変換されたリポジトリのgitのログだけでも、テキストで6Mバイトもある)。もちろん、cvspsツールだけでも、これらのパッチセットを作るこ とはできるが、Gitに変換することで、Git関連のほかの素晴らしい機能も使えるようになる。

 もしなんらかの理由で、CVSで行き詰まっており、まだ SubversionやGitに移行していないのであれば、変換ツールを使うことを検討してみるといいだろう。簡単に使え、非常にうまく動作する変換ツー ルがあるし、それで利用できるようになる機能は、切り替えるだけの価値のあるものだ。



2010.03.23|パソコンな日々コメント(0)TOP↑

http://www.ruby-lang.org/ja/man/html/_C0B5B5ACC9BDB8BD.html

正規表現記号

以下は、ruby がサポートする正規表現記号(メタ文字)の一覧です。 (正規表現のオプションについては正 規表現リテラルを参照してください)

  • \を伴わない英数字 はメタ文字ではない
  • \を伴う記号 はメタ文字ではない(`\*'は「繰り返し」でなく「アスタリスク」)

という規則があります。

以下の説明の中で「多バイト文字に対応した正規表現」とは、 $KCODE が設定されているか、あるいは明示的に漢字オプショ ン(正 規表現リテラルを参照)を指定するなどにより多バイト文字 にマッチし得る正規表現を指します。

^

行頭。文字列の先頭や改行文字の直後の位置にマッチします。

$

行末。文字列の末尾や改行文字の直前の位置にマッチします。改行自身は含 みません。

ruby 1.8 feature: 以前は、文字列末尾の改行に対して改行の前だけ にマッチしていましたが、常に文字列の末尾にもマッチするように変更され ました。trap::Regexp

p "\n".gsub(/$/, "o")
=> "o\n" (1.6)
=> "o\no" (1.8) # 改行文字の前と文字列末尾の前で1回ずつ
.

改行を除く任意の 1 文字にマッチします。正規表現オプション m (複数行 モード。正 規表現リテラルを参照)では、改行を含む任意の 1 文字にマッチします。

多バイト文字に対応した正規表現では、その 1 文字(1 バイトでなく)とマッ チします。

$KCODE = "sjis"          # 漢字コード指定、Unixなら"euc"
p /..a./ =~ "あああaあ" # => 2 (文字列の3byte目からマッチ)
p /..a./n =~ "あaあ" # => 0 (一時的に漢字コードを"none"に指定)

また、不完全な多バイト文字の一部(その文字だけでは多バイト文字かバイ ナリかASCIIか判断が付かない場合)とはマッチしません。

p /./e =~ "あ"[0,1]     # => nil
\w

英数字。[0-9A-Za-z_] と同じ。

多バイト文字に対応した正規表現では、日本語のいわゆる全角文字(ひらがな・カタカナ・漢字・全角記号)にもマッチします。

\W

非英数字。\w 以外の一文字。

\s

空白文字。[ \t\n\r\f] と同じ

\S

非空白文字。[ \t\n\r\f] 以外の一文字。

\d

数字。[0-9] と同じ。こちらはいわゆる全角文字には決してマッチしません。

\D

非数字

\A

文字列先頭。^ とは異なり改行の有無には影響しません。

\Z

文字列末尾。文字列が改行で終っていればその改行の直前にマッチします。

ruby 1.8 feature: 以前は、文字列末尾の改行に対して改行の前だけ にマッチしていましたが、常に文字列の末尾にもマッチするように変更され ました。trap::Regexp

p "\n".gsub(/\Z/, "o")
=> "o\n" (1.6)
=> "o\no" (1.8) # 改行文字の前と文字列末尾の前で1回ずつ
\z

文字列末尾。$\Z とは異なり改行の有無には影響しません。

\b

文字クラス指定の外では語境界 (\w\W のあいだにマッチ)。 文字クラス指定内ではバックスペース (0x08)。 *1

\B

非語境界

\G

前回マッチした箇所(の直後)にマッチ (幅を持たない)。 初回だけは先頭位置にマッチします(\Aと同じ)。

scan や、gsub で使用できます。前回マッチし た場所の後からマッチさせたい場合に使用します。

簡単な(あまり役に立たない)例は以下。 *2

# 先頭から3桁ずつの数値を(数値が続く限り)取り出す。
str = "123456 789"
str.scan(/\G\d\d\d/) {|m| p m }
[ ]

文字クラス指定。文 字クラスを参照。

*

直前の表現の 0 回以上の繰り返し。できるだけ長くマッチしようとする。

*?

量指定子(quantifiers)。 直前の表現の 0 回以上の繰り返し (最短一致)

orig_str = "Ruby and Perl"
p orig_str.gsub(/(.*)<\/b>/, '\1')
# => "Ruby
and Perl"
p orig_str.gsub(/(.*?)<\/b>/, '\1')
# => "Ruby and Perl"
+

量指定子(quantifiers)。 直前の表現の 1 回以上の繰り返し

+?

量指定子(quantifiers)。 直前の表現の 1 回以上の繰り返し (最短一致)

{m}
{m,}
{m,n}

範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の

  • m 回
  • m 回以上
  • m 回以上、最大 n 回

の繰り返し。{,n} や、{,} に対するマッチは必ず失敗する。

str = "foofoofoo"
p str[/(foo){1}/] # => "foo"
p str[/(foo){2,}/] # => "foofoofoo"
p str[/(foo){1,2}/] # => "foofoo"

正規表現 ?, *, + はそれぞれ {0,1}, {0,} {1,} と同じです。

{m}?
{m,}?
{m,n}?

範囲指定繰り返し制御(interval quantifier)。 それぞれ直前の正規表現の

  • m 回
  • m 回以上
  • m 回以上、最大 n 回

の繰り返し(最短一致)。

?

量指定子(quantifiers)。 直前の正規表現の 0 または 1 回の繰り返し。

p /プリンター?は/s =~ "プリンタは"     # => 0 (0文字目からマッチ)
p /プリンター?は/s =~ "プリンターは" # => 0
p /プリンター?は/s =~ "プリンターーは" # => nil
??

量指定子(quantifiers)。 直前の正規表現の 0 または 1 回の繰り返し(最短一致)

|

選択(alternative)。優先順位が低いので下の「グループ化」とあわせて使うことが多い。

/ス(ー|ウ)プ/s =~ "スウプを一さじ"  # => 0 (0文字目からマッチ)
/ス(ー|ウ)プ/s =~ "スープレックス" # => 0
/スー|ウプ/s =~ "スウプを一さじ" # => 2 (「スー」または「ウプ」)
/スー|ウプ/s =~ "スープレックス" # => 0
( )

正規表現のグループ化。括弧の中の正規表現にマッチした文字列は後方参照 のために記憶されます。

\1, \2 ... \n

後方参照(back reference)。後 方参照を参照。

(?# )

コメント。括弧の中の任意の文字列は無視されます。

(?: )

後方参照を伴わないグループ化。つまり、\1, \2 (あるいは、 $1, $2) などの対象にはならず、 単純なグループ化の用途で使用します。

/(abc)/ =~ "abc"
p $1
=> "abc"

/(?:abc)/ =~ "abc"
p $1
=> nil
(?= )

先読み(lookahead)。 パターンによる位置指定(幅を持たない)

(?=re1)re2

という表現は、re1 と re2 両方にマッチするものにマッチする正規表現で す。

re1(?=re2)

という表現は、後に re2 とマッチする文字列が続く、正規表現 re1 です。

p /foo(?=bar)/ =~ "foobar"      # => 0
p $& # => "foo" (bar の部分の情報はない)
(?! )

否定先読み(negative lookahead)。 パターンの否定による位置指定(幅を持たない)

(?!re1)re2

という表現は、re1 にマッチしないが re2 にはマッチする正規表現です。

# 000 を除く 3 桁の数字
re = /(?!000)\d\d\d/
p re =~ "000" # => nil
p re =~ "012" # => 0
p re =~ "123" # => 0

# C 言語の識別子 ([A-Za-z_] で始まり、[0-9A-Za-z_] が続く文字列)
/\b(?![0-9])\w+\b/
(?> )

バッ クトラックを抑止する。

この表現はまだ試験実装中です。将来なくなる可能性もありますので、 そのつもりで使ってください。特に汎用ライブラリなどで使ってはいけません。

(?ixm-ixm)

正規表現中でのiオプション、xオプション、mオプションのon/off。オプショ ンについては正 規表現リテラルを参照。

re = /A(?i)a(?-i)A/
p re =~ "AaA" # => 0
p re =~ "AAA" # => 0
p re =~ "AAa" # => nil
(?ixm-ixm: )

括弧内のiオプション、xオプション、mオプションのon/off。括弧の範囲内 で設定

re = /A(?i:a)A/
p re =~ "AaA" # => 0
p re =~ "AAA" # => 0
p re =~ "AAa" # => nil

後 方参照

正規表現 \1 \2 ... \n は、後方参照です。n 番目の括弧(正規 表現 ( ) グルーピング)にマッチした文字列にマッチします。

/((foo)bar)\1\2/

は、

/((foo)bar)foobarfoo/

と同じです。

例:

re = /(foo|bar|baz)\1/
p re =~ 'foofoo' # => 0
p re =~ 'barbar' # => 0
p re =~ 'bazbaz' # => 0
p re =~ 'foobar' # => nil

対応する括弧は、後方参照よりも左側にないといけません。

対応する括弧の中に後方参照があれば常にマッチに失敗します。 また、対応する括弧がない 1 桁の後方参照も常にマッチに失敗します。

p /(\1)/ =~ "foofoofoo" # => nil
p /(foo)\2/ =~ "foo\2" # => nil

2 桁以上の後方参照も指定できますが、バッ クスラッシュ記法\nnn (8進 nnn に対応する文字)と混同しないように注意する必要が あります。数値が 1 桁なら常に後方参照です。2 桁以上の指定では、対応す る括弧がなければ 8 進コードと見なされます。

また、逆に正規表現中に 8 進で 1 桁のコードを記述するには \01 など 0 で 始める必要があります(\0 という後方参照はないので曖昧になりません)。

p   /\1/ =~ "\1"   # => nil     # 対応する括弧のない後方参照
p /\01/ =~ "\1" # => 0 8 進コード
p /\11/ =~ "\11" # => 0 8 進コード

# 8 進コード (対応する括弧がないので)
p /(.)\10/ =~ "1\10" # => 0

# 後方参照 (対応する括弧があるので)
p /((((((((((.))))))))))\10/ =~ "aa" # => 0

# 8 進コード(ただし、"\0" + "8" になっている
# \08 という 8 進コードはないので)
p /(.)\08/ =~ "1\0008" # => 0

# 後方参照に続けて数字を書きたいなら括弧でグループ化して区切る
# などするしかない。
p /(.)(\1)1/ =~ "111" # => 0

文字クラス

正規表現 [ ] は、文字クラス指定です。[] 内に列挙したいずれかの一 文字にマッチします。

例えば、/[abc]/ は、"a", "b", "c" いずれか一文字にマッチします。 ASCIIコード順で連続する文字列は間に `-' を置いて /[a-c]/ のように書 くこともできます。また、先頭が `^' であれば指定した文字以外の一文字 とマッチします。

先頭以外にある `^' はその文字そのものとマッチします。また、先頭、末尾 にある `-' は、その文字そのものとマッチします。

p /[a^]/ =~ "^"   # => 0
p /[-a]/ =~ "-" # => 0
p /[a-]/ =~ "-" # => 0
p /[-]/ =~ "-" # => 0

空の文字クラスはエラーになります。

p /[]/ =~ ""
p /[^]/ =~ "^"
# => invalid regular expression; empty character class: /[^]/

先頭(あるいは否定の "^" の直後)にある "]" は、文字クラスの終りではなく "]" そのものを表します。 *3

p /[]]/ =~ "]"       # => 0
p /[^]]/ =~ "]" # => nil

"^", "-", "]" そして "\\"(バックスラッシュ)は、バックスラッシュでエス ケープして、その文字にマッチさせることができます。

p /[\^]/ =~ "^"   # => 0
p /[\-]/ =~ "-" # => 0
p /[\]]/ =~ "]" # => 0
p /[\\]/ =~ "\\" # => 0

[] 内には文字列と同じバッ クスラッシュ記法と、 正規表現 \w, \W, \s, \S, \d, \D (これらは文字クラスの略記法です)が 使用できます。 *4

否定による以下のような文字クラスは改行文字にもマッチすることに 注意してください(正規表現 \W,\D も同様)。

p /[^a-z]/ =~ "\n"    # => 0

文字クラスの中では以下の特殊な指定が使用できますが、この機能は将来に渡っ てサポートされるとは約束されていません(なのでここでは詳細は書きません 詳細を知りたい方は grep(1) 等のマニュアルを参照して ください)。

[:alnum:]  数字とアルファベット 0-9a-zA-Z
[:alpha:] アルファベット a-zA-Z
[:blank:] 空白類
[:cntrl:] コントロール文字
[:digit:] 数字
[:graph:] 空白を除く印字可能な可視文字
[:lower:] 小文字
[:print:] 可視文字
[:punct:] 記号
[:space:] 空白文字
[:upper:] 大文字
[:xdigit:] 16進文字

例: ("[]" を含めて "[:...:]" が1文字を表していることに注意。 文字クラスの "[]" ではない)

p /[[:alnum:]][[:cntrl:]]/ =~ "a\x01"  # => 0

注: 全角文字は考慮されません。正規表現が漢字にマッチするように指定さ れていても [:alpha:] などは、全角のアルファベットとはマッチしません。

p /[[:alpha:]]/e =~ "A"        # => nil

バックトラック

*5

(?> ) という特殊な括弧で正規表現をかこむと、その括弧の中の表現に マッチした部分ではバックトラックが起こりません。その意味を例を挙げて 見てみます。

例えば通常の正規表現では

p /(a*)ab/ === 'aaab'

はマッチします。その過程は以下のようになります。

  1. 正規表現 a* がインデックス 0 で a みっつにマッチする
  2. 正規表現 a がマッチに失敗
  3. 正規表現 a* がマッチした分を少し「あきらめさせて」、 a ふたつにマッチさせる (バックトラックする)
  4. 正規表現 aa にマッチする
  5. 正規表現 bb にマッチする

しかしこの正規表現の括弧を (?> ) に変えるとマッチしなくなります。 その過程は以下のようになります。

  1. 正規表現 a* がインデックス 0 で a みっつにマッチする
  2. 正規表現 a がマッチに失敗
  3. a* がマッチした分をすこし減らして試したいが、 抑止指定されているのですぐに失敗する
  4. 正規表現 a* がインデックス 1 で a ふたつにマッチする

以下同じように失敗して、最終的にマッチ全体が失敗します。

ひらたく言うと、通常の正規表現の基本が「欲張りマッチ」なのに対して、 (?> ) は一回取ったものは絶対に離さない「超欲張りマッチ」を行います。

サ ンプル

*6

ここにあげるサンプルは流用しやすいように $re_ で始まるグローバル 変数に設定することにしている。

数値

  • 浮動小数点数(整数も含む)

    $re_float = /[-+]?(?:[0-9]+(\.[0-9]*)?|(\.[0-9]+))([eE][-+]?[0-9]+)?/

    p $re_float =~ "1.23" # => 0
    p $&.to_f # => 1.23
    p $re_float =~ ".23" # => 0
    p $&.to_f # => 0.23
    p $re_float =~ "1.23e1" # => 0
    p $&.to_f # => 12.3
    p $re_float =~ "1.23e-1" # => 0
    p $&.to_f # => 0.123

数 字を 3 桁ずつコンマで区切る

  • 方法1: 戻り読みと先読みを利用する方法 (戻り読み(lookbehind)は Oniguruma *7が 必要)

    p "tone of 12345Hz".gsub(/(?<=\d)(?=(?:\d\d\d)+(?!\d))/, ',')
    => ruby 1.8.0 (2003-08-07) [i586-linux]
    "tone of 12,345Hz"
  • 方法2: 先読みだけを利用する方法

    p "tone of 12345Hz".gsub(/(\d)(?=(?:\d\d\d)+(?!\d))/, '\1,')
    => ruby 1.8.0 (2003-08-07) [i586-linux]
    "tone of 12,345Hz"
  • 方法3: 先読みも利用しない方法

    s = "tone of 12345Hz"
    nil while s.gsub!(/(.*\d)(\d\d\d)/, '\1,\2')
    p s
    => ruby 1.8.0 (2003-08-07) [i586-linux]
    "tone of 12,345Hz"



2010.03.10|パソコンな日々コメント(0)TOP↑
カテゴリー
最近の記事
最近のコメント
最近のトラックバック
ブログ検索
管理人のブログ一覧
管理人へメール

名前:
メール:
件名:
本文:

月別アーカイブ
プロフィール

やまもも実験室

Author:やまもも実験室
FC2ブログへようこそ!

RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。