2014年03月30日

PowerShellでSYLOGを受信する

 ネットワーク機器やサーバーの動作確認をしたいときなど、WindowsでSYSLOGサーバーを起動させたくなることがあります。Vectorなどでダウンロードしてくるという方法もありますが、PowerShellを使えばWindowsの標準機能だけで動作させることができます。

 SYLOGはUDPを使ってアスキー文字列を送信しているだけなので、他のプロトコルと比べて非常に簡単にサーバーを作ることができます。
$udp = New-Object Net.Sockets.UdpClient -ArgumentList 514
$sender = $null

while($true) `
{
  if($udp.Available) `
  {
    $buffer = $udp.Receive([ref]$sender)
    $sender.ToString()+[Text.Encoding]::UTF8.GetString($buffer)
  }
  [Threading.Thread]::Sleep(500)
}

 これを実行するとSYSLOGを受信するたびに、受信したデータと送信元情報を表示します。
192.168.0.1:54677<141>[00:00:00:00:00:00] ABCDEFGHIJKLMN ntpclient: SUCCESS: set time : Sun Mar 30 17:27:37 2014
 途中の<141>はSYSLOGのプロトコルに規定されている部分で、FacilityやSeverityを表しています。141を8で割った余りは5ですが、これはSeverity(深刻度)を表しています。このログは5なので「通知」を意味します。141を8で割った商は17ですが、これはFacilityを表していてます。Facilityはログの種類を表していて、Facilityの17はlocal1です。ちゃんとしたSYSLOGサーバーならFacilityの値によって出力先のログファイルを分けることができます。

 <141>より前の部分は送信元のIPアドレスとポート番号です。送信されてきたUDPデータグラムのIPヘッダー部分に書かれていた情報をここで表示しています。

 <141>より後の部分は実際のSYSLOGのメッセージです。

 FacilityとSeverityの値をそれぞれ以下の表に示します。

Facility
コードFacility
0カーネル
1ユーザー・レベル
2電子メール
3システム・デーモン
4セキュリティー・認証
5syslogd内部生成
6ラインプリンター
7ネット・ニューズ
8UUCP
9クロック・デーモン
10セキュリティー・認証
11FTP(ファイル転送)
12NTP(時刻合わせ)
13監査
14警戒
15クロックデーモン
16local0
17local1
18local2
19local3
20local4
21local5
22local6
23local7

Severity
コードSeverity
0Emergency
1Alert
2Critical
3Error
4Warning
5Notice
6Informational
7Debug


 ここからはスクリプトを解説していきます。

 まず、最初の行は.NET Frameworkのクラス呼び出しであり、System.Net.Sockets.UdpClientクラスのオブジェクト(実体)を生成しています。このとき、-ArgumentList 514の指定は解放するポート番号を意味しています。
$udp = New-Object Net.Sockets.UdpClient -ArgumentList 514

 2行目は送信元を格納するための変数を用意しています。
$sender = $null

 while($true)は無限ループを意味するので、Ctrl+Cなどユーザー操作で終了させられるまで{ }の中身をくり返します。
while($true) { (中略) }

 $udp.Availableは、受信したUDPデータグラムがあるときに$trueになります。UDPデータグラムを読むだけなら後述する$udp.Receiveを実行すれば良いのですが、受信していない状態で$udp.Receiveを実行すると受信待ちになり、受信するまではCtrl+Cを入力しても終了できなくなります。そこで、受信したかどうか判定してから読み込むようにします。
if($udp.Available) { (中略) }

 $udp.Receiveの行では、受信したUDPデータグラムを読み込みます。読み込んだ内容は返却値として得られるので$bufferに格納され、送信元のIPアドレスやポート番号は引数の$senderに格納されます。$udp.Receive()で行われる処理は$senderの値変更を含んでいるので、$senderには[ref]をつけなければなりません。
$buffer = $udp.Receive([ref]$sender)

 次の行は、送信元IP、ポート番号、および受信したUDPデータグラムを表す文字列です。$senderは送信元のIPとポート番号を表すデータなので、$sender.ToString()で、ポート番号を表す文字列が得られます。その後ろは、受信したUDPデータグラムである$bufferをUTF8の文字列とみなして、その文字列を出力することを意味します。+で、その前後の文字列を連結します。
$sender.ToString()+[Text.Encoding]::UTF8.GetString($buffer)

 この行は、500ミリ秒待つことを意味します。これを入れないと、受信していない間は空っぽの無限ループを実行することになってしまうので少し待ってから受信するようにしています。
[Threading.Thread]::Sleep(500)
web拍手 by FC2
posted by 北条利彦 at 19:54 | Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2013年12月29日

日本語入力システムとは

 百度という日本語入力システムが、変換した文字列を利用者に無断で送信している報じられました。ITmediaなどのITニュースサイトだけでなく、テレビでも報じられているようです。

「日本語入力システムは、かなを漢字に変換したりするソフトですよ」と言われてもコンピューター初心者の方だとピンとこないかも知れない……と私は思っています。「その機能を実現しているのも1つのソフトウェアなんですよ」と言った方がいいかもしれません。人によって、デスクトップのどこかに表示されている人もいれば、タスクバーの端の方に表示されている人もいれば、どこにも表示されていない人もいるこれ(↓)のことです。
IMEツールバー

 Windowsでは最初から使用できるうえに、スタートメニューから起動して使う物でもないので、これが1つのソフトウェアだという認識が薄いかも知れませんが、そうなのです。最初から使えるものや、Microsoft Officeをインストールしたときについでにインストールされるのは、Microsoft IMEというソフトウェアです。これに競合する他社製のソフトウェアとしては、ジャストシステム社の「ATOK(エートック)」やGoogleの「Google日本語入力」があります。ATOKは内蔵されている辞書が豊富で、日本語を正確に変換できると言うことで評判です。Google日本語入力はGoogle検索で収集した単語を辞書に登録しているためインターネットで使われる俗語に強いという特徴があります。

 私が使用しているのはATOKです。変換精度がよいのもメリットですが、アイコン1つで日本語のON/OFF状態がアイコン1つで分かるので非常に使い勝手がよいのです。上の画像で紹介したIMEツールバーは、設定を変更しても、ON/OFF状態を表すアイコン1つだけにすることはできません。そのため、必要以上にタスクバーの場所を取ります。ATOKでは、設定によって次のように通知領域にアイコンを1つだけ表示させることができます。
通知領域のATOKアイコン

 日本語入力システムは1つのソフトウェアですが、常にどれか1つだけが有効になっていないと困るものですから、スタートメニューから起動するわけではなく、Windowsの設定から選択するようになっています。Windows 7の場合、コントロールパネル→「時計、言語、および地域」→「地域と言語」→「キーボードと言語」タブ→「キーボードの変更」→「既定の言語」で選択します。

 冒頭で挙げた百度も日本語入力システムのひとつで、これといって長所があるわけではなく無名なものです。しかし、他の怪しいソフトウェアをインストールしたときに勝手にインストールされていることがあり、日本語入力システムがどういうものか分からない人がそのまま使ってしまっていたというわけです。
web拍手 by FC2
posted by 北条利彦 at 14:09 | Comment(0) | TrackBack(0) | 基礎知識 | このブログの読者になる | 更新情報をチェックする

2013年12月05日

PowerShellでobject型以外の配列を生成する

 C#などのプログラミング言語では配列のオブジェクトを生成するための書き方は簡単です。PowerShellでも@()を使えばobject型の配列を生成できますが、そのほかの型の配列を生成する書き方はなかなか思いつかないかも知れません。

 次のように記述することで、byte[]型で任意の長さを持つ配列を生成することができます。もちろん、他の型の配列もやり方は同じです。

PS U:\> $buffer = New-Object byte[] -ArgumentList 10
PS U:\> $buffer.Length
10
PS U:\> $buffer.GetType().FullName
System.Byte[]
PS U:\>

 配列が生成できると、[IO.Stream]クラスなどのストリームからデータを読み出して格納するのに役に立ちます。
web拍手 by FC2
posted by 北条利彦 at 22:06 | Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2013年11月28日

PowerShellで例外オブジェクトを取得する

 C#などで例外を補足したとき、例外オブジェクト(Exceptionクラスの派生クラスのオブジェクト)を次のように取得できます。

catch(Exception ex)


 PowerShellでは、catchではなくtrap構文を使用しますが、上記のexに相当する変数宣言をする箇所がありません。その代わり、$_変数に自動的に代入されています。

PS C:\> & { 1/$null; trap { "例外が発生しました"+$_ ; continue } }
例外が発生しました0 で除算しようとしました。
PS C:\>
web拍手 by FC2
posted by 北条利彦 at 07:39 | Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2013年10月03日

ココログの広告を消す

 2013年の7月、ココログ無料版の広告が増えました。詳細は次のウェブページに記載されていますが、すべての無料版ブログの上部と下部、および、30日以上更新されていないブログの記事の先頭へ、新たに広告が表示されるようになりました。

【再掲】ココログフリー(無料版)への広告領域の追加について
http://info.cocolog-nifty.com/info/2013/07/post-9167.html

 ……というわけで、Firefoxを使用している人は、アドオンの力を使ってこの広告を消してしまいましょう。

 まずはアドオンの準備です。Stylishというアドオンを利用しますので、このアドオンをインストールしていない方は次のURLへアクセスし、インストールしましょう。

Stylish :: Add-ons for Firefox
https://addons.mozilla.org/ja/firefox/addon/stylish/

 インストールすると、Firefoxのウインドー内のどこかに白い「S」の字をしたアイコンが表示されるかと思います。下の画像の例だとウインドー右上に表示されていますが、人によってウインドー下部かも知れませんし、表示されないかも知れません。表示されない場合はAltを押しながらV→T→Cのキーを順に押して「ツールバーのカスタマイズ」のダイアログを表示し、「Stylish」のアイコンをツールバーにドロップすることでアイコンを追加して下さい。
Stylish.png

 表示されたら、このアイコンをクリック→「新しいスタイルを書く」→「cocolog-nifty.com専用」をクリックして「新しいスタイル」ダイアログを開きます。

 あとは「名前」欄に「広告の非表示:ココログ」と記入し、本文にもともと書かれている内容は削除して次のコードを貼りつけて下さい。最後に「保存」ボタンをクリックします。

@-moz-document domain("cocolog-nifty.com")
{
  .ad-container, .adsense
  {
    display:none !important
  }
  
  #banner-header
  {
    margin-top: 1.1em !important
  }
}


 成功すると、適当なブログに移動したとき、広告が消えていて、Stylishのアイコンがカラフルに表示されるようになります。
web拍手 by FC2
タグ:広告
posted by 北条利彦 at 21:37 | Comment(0) | ウェブ | このブログの読者になる | 更新情報をチェックする

2013年09月16日

ほしい物リストに注意

 Amazon.co.jpで買いたい商品を見つけたとき、カートに入れておくか1クリックで今すぐ買うかと思います。近日中に買いたい物ならそれで良いのですが、「そのうち買おうかな」程度にしか思っていない商品を買い物かごに入れておくと、商品値段が変わったり、当初の出品者から入手できなくなったときにいちいちメッセージが表示され、少し邪魔に感じます。そこで、買い物かごに入れずにほしいものリストに入れておこう……なんて使い方があります。

 「ほしい物リスト」は、名前の通りに考えれば、そのような使い方をする物に見えます。しかし、この機能はそれだけではありません。

 この画像をご覧下さい。

ほしい物リスト.png

「ほしい物リスト」と大きく書かれているすぐ下に「このリストはほかの人が検索することができます」と書かれています。さらに、その右には「ほしい物リストサーチ」というものがあり、ここに人名を入力して検索すると、その名前の人が何をほしがっているのか表示されます。Amazonは大多数の人が実名で登録するでしょうから、ここから個人の趣味が漏えいしてしまうのです。

 ほしい物リストが漏えいしてほしくない場合は「ほしい物リスト」という見出しのすぐ下にある「公開/非公開の設定を変更する」のリンクをクリックして「非公開」を選べばOKです。

 Amazonの利用者がするべきこととしてはこの対策をすることくらいですが、Amazonがやるべきことは何でしょうか。自分の趣味を全世界に公開してしまうという重大な問題に対して、目立った警告も出さないAmazon.co.jpの姿勢には不信感を覚えます。商品購入の確認画面のように、画面1つ大きく使って、重要な部分を赤い文字にして情報が公開されることを警告するか、もしくは、明示的に公開の設定を入れない限り非公開にしておくべきだと思います。

 同様の問題は、Amazonのほしい物リストだけではありません。Googleのマイマップも標準では情報を公開するようになっており、自宅や職場の所在地を公開してしまった人がいます。

Googleマイマップで意図せぬ情報公開多発、「うっかり」で済めばいいが
http://www.itmedia.co.jp/enterprise/articles/0811/09/news001.html

 ほしい物リストは「ほかの人が検索することができます」という、他の情報に埋もれた中にある小さい文字まで読まないと情報が公開されていることに気付かない仕様です。もしかすると、他のサイトの同様の機能や全然別の機能にも、気づかないうちに情報を公開してしまうものがあちこちにあるのかも知れません。漏えいして欲しくない情報を入力する場合は、サイトごと、機能ごとに、このように埋もれた短文すらも見落とさないよう念入りに探さないと情報を漏えいを防げない時代になりつつあります。

 安心して買い物もできない、地図に目印もつけられない状態になるくらいなら、不要な情報公開ができない方がよほど望ましいと私は思います。

Amazonの「ほしい物リスト」で本名や趣味がばれる? ネットで騒動に
http://www.itmedia.co.jp/news/articles/0803/12/news082.html
web拍手 by FC2
posted by 北条利彦 at 11:48 | Comment(0) | ウェブ | このブログの読者になる | 更新情報をチェックする

2013年09月14日

ユーザーとアカウント

 記事の見出しに挙げた2つの単語「ユーザー」と「アカウント」は区別があいまいに使われていることが多々あります。「ユーザーアカウント」という、両者をあいまいなまま区別しないように呼ぶための単語まであるくらいです。

 しかし、実際にはこの2つの単語は意味が異なります。e-Wordsで「アカウント」を調べてみると……

アカウント 【 account 】
コンピュータやネットワーク上の資源を利用できる権利のこと、または利用する際に必要なIDのこと。PPPアカウントやメールアカウントなどがある。

……と書かれています。「権利のこと」と言われてもピンとこないかも知れませんが、元々の「アカウント(account)」の意味が銀行の「口座」であることを考えると分かってきます。

 銀行の利用者(ユーザー)が人であるのと同じように、コンピューターの「ユーザー」も人のことを指します。銀行に口座という概念があるのと同じように、コンピューターにもアカウントという概念があるのです。コンピューターのユーザーは、コンピューター上にアカウントを作ることで、そのアカウントに許された操作ができるようになるというわけです。

 銀行口座と同じようにコンピューターのアカウントも1ユーザーにつき1件が基本ですが、そうでない使い方もできます。たとえば、鈴木さんがコンピューターを使うためにsuzuki1とsuzuki2というアカウントを作成した場合、1人のユーザーが2つのアカウントを持っているということになります。逆に、administratorというアカウントを、鈴木さんと佐藤さんの2人のユーザーが使う……という(望ましくない)管理をする組織もあります。

 アカウントの説明は、前述したように「コンピュータ(中略)の資源を利用できる権利のこと」と端的に書かれますが、その中には、上記のような意味が含まれているのです。
web拍手 by FC2
posted by 北条利彦 at 10:49 | Comment(0) | TrackBack(0) | 基礎知識 | このブログの読者になる | 更新情報をチェックする

2013年05月11日

IEと書いて「ただしい」と読む

 ただの小ネタですが、IEと書いてIの字を小さくしてみると、漢字の「正」に見えます。

IE2.png


 Eの字の左上が伸びているように見えるのは気のせいです。
web拍手 by FC2
posted by 北条利彦 at 13:01 | Comment(0) | TrackBack(0) | ウェブブラウザー | このブログの読者になる | 更新情報をチェックする

2013年04月18日

スクリーンショットの保存

JPEGはスクリーンショットの保存には不向き

 JPEGでスクリーンショットを保存したがる人もいますが、JPEGは写真を保存するために設計されたフォーマットなので、PC画面を保存するには不向きです。

 人が写真を見るとき、空など色がなだらかに変化している部分に画質劣化があるとその劣化部分が目立ちますが、物と背景の境界部分など、色が急に変化している部分は画質劣化が目立ちません。それを利用して、ファイルサイズを小さくしつつ、画質の劣化はあまり目立たないところに集中させるようにしたのがJPEGです。

 写真の場合はこれでよいのですが、色が急に変化する部分こそが重要な画像の場合、その重要な部分が集中的に劣化します。また、JPEGは色数の少ない画像には対応しておらず、65536色やフルカラー(1677万色)の画像しか扱えません。スクリーンショットは色数が少ないうえ、文字の部分は色が急に変化するのでJPEGは適していないといえます。

画像の保存方式の違い

名前256色対応フルカラー対応画質劣化備考
JPEG×あり輪郭部分は画質劣化が激しい
GIF×なし透過色対応
PNGなし透過色対応・各種ソフトのデフォルトではフルカラーで保存
Windowsビットマップなし圧縮しないのでファイルサイズが非常に大きい


減色する方法

画像を256色に減色

 JTrimの右下のビット数のところをクリックして8bitを選択すると、1ピクセルあたり8bit(256色)に減色されます。この画像自体もJTrimで8ビットカラーに減色してPNGで保存したものを貼りつけています。PrintScreenでコピーした物を貼りつけた時点では8ビットカラーではなくフルカラー(ディスプレーの色数に依存?)として保存されてしまうので、減色操作を行ってから保存して下さい。
web拍手 by FC2
posted by 北条利彦 at 22:15 | Comment(0) | TrackBack(0) | 基礎知識 | このブログの読者になる | 更新情報をチェックする

2013年04月09日

かな入力で苦労すること

 ローマ字入力では仮名1文字あたり2回弱のキー操作が必要なのを面倒と感じ、仮名入力に切り替えたのは10年以上も前です。ローマ字入力に戻ろうとまでは思わないものの、仮名入力は仮名入力の面倒というものがあるのでご紹介します。

丸括弧()を入力するとき
 ローマ字入力で丸括弧を入力するときはShiftを押しながら「8」のキーを押し、括弧の内容を入力した後でShift+「9」を押すかと思います。かな入力だと8や9のキーを押しても仕方ないので、「かっこ」と入力して変換します。
 ここで1つ目の小さな問題が生まれます。「かっこ」を変換すると閉じる方も変換されるので、変換後のキャレットは括弧を閉じたあとの位置にくるのです。括弧内を入力するには方向キーの左を押してから入力しますし、括弧内の入力が終わったら方向キーの右を押して後続の文を入力します。
 この方向キーを押す操作は、Excelを操作するときに2つ目の小さな問題を引き起こします。Excelでは、どこかのセルを選択している状態でいきなり文字入力を始めてもセル内に文字が入りますが、方向キーを押すと文字入力を終えてその方向に移動してしまうのです。 そのため、Excelで丸括弧を入力したい場合はF2キーを押して編集を始めます。

一発で変換できなかったとき
 一発で変換できなかったとき、誤変換されている文節でもう1度スペースキーを押すと変換候補が一覧表示されます。この変換候補一覧を選ぶときにスペースキーを複数回押すのもいいですが、正しい変換候補の左に書かれている数字のキーを押すと即座に正しい候補が選ばれます。
 変換候補の選び方が2通りあることは便利なのですが、かな入力では誤入力の原因になることがあります。
 変換候補が一覧表示されているときにスペースキーで正しい候補を選んだら、次の文字の入力を始めるかと思います。このとき、数字のキーにも文字が割り当てられているのが厄介です。たとえば変換候補一覧が表示されているときに次の文字を入力しようとして「や」のキーを押すと、7番の候補が選ばれてしまうのです。

共有アカウントで日本語入力するとき
 これはあまり長々と説明することはなく、同じPCの同じアカウントを複数の人で使い回すとき、他の人は大概ローマ字入力なので、かな入力をするために入力モードを切り替えて使用後に戻すか、少しの間だけ我慢してローマ字入力をする必要がでてきます。

最後に
 かな入力のマイナス面ばかり挙げてきましたが、最初に書いた通り、ローマ字入力に戻ろうという気はありません。
 Excelで括弧を入力することも、変換候補が間違って選ばれることも、普通に文字を入力する頻度に比べたら圧倒的に低いのです。
 共有アカウントに関してはローマ字入力に戻し忘れて文句を言われたこともありましたが、アカウントの使い回し自体が望ましくないことであって、ローマ字入力に戻し忘れたことをどうこう言われるのは妥当でないのです。かな入力をきっかけに望ましくない運用を見直すことのできる組織と、開き直って個人を中傷する組織と、どちらが良いでしょうか。
 ちなみに、記事タイトルの「かな入力で苦労すること」を見て、「かな入力」を入力モードの「ひらがな」を勘違いした方、違いますよ! 「かな入力」の他には「ローマ字入力」があるのです。入力モードには「ひらがな」以外に「カタカナ」とか半角英数や全角英数があります。
web拍手 by FC2
posted by 北条利彦 at 23:18 | Comment(1) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。