読者です 読者をやめる 読者になる 読者になる

Memo plus Alpha

メモにプラスアルファを加えて価値ある情報に。

IPアドレスからアクセス元のホストを取得する(nslookup)

はじめに

ウェブサイトなどでログをつけていると:

111.11.111.11

111.11.111.22

111.11.111.33

などのIPアドレスのリストを得ることがあります。このIPアドレスのリストからホストを取得し、アクセス元のおおよその国などを特定する方法を紹介します。

方法

Windowsコマンドプロンプトのnslookupを使います。このコマンドのあとにIPアドレスを打つと:

nslookup 182.22.59.229

>サーバー: UnKnown
>Address: 111.111.1.1

>名前: f1.top.vip.ssk.yahoo.co.jp
>Address: 182.22.59.229

などのように「名前」というところにホスト名が記されます。ここにはプロバイダーの情報が表示されますが、これでおおよその国(.jpは日本, deはドイツなど)などの情報がわかります。

これをアドレスの一覧に対して行うにはバッチファイルを作成すればOKです。

エクセルでIPアドレスの一覧をコピペで入力し(「データ」から「重複の削除」をしておくとよいでしょう)、隣のセルに:"nslookup " & A1として下までコピーします(nslookupの後に半角スペースが必要です)。

 

f:id:semanticist:20170330213220p:plain

 

これをテキストエディタに貼り付け、ip.batなどの名前で保存します。

 

f:id:semanticist:20170330213309p:plain

 

その後、コマンドプロンプトからip.bat > result.txtのように実行すればテキストファイルとして一覧を取得できます。

f:id:semanticist:20170330213619p:plain

 

 

Rにread.tableで2次元の表(分割表)を読み込む

データ

f:id:semanticist:20161222201738p:plain

このようなデータをRにクリップボード経由で読み込むには、次のようなコマンドを打ちます。

data=read.table("clipboard",header=T)

f:id:semanticist:20161222201840p:plain

この読み込みでは、Student, Eng, Kokugo, Mathという4つの変数からなる形で認識されています。これでは行に名前がない状態ですので、例えばこのデータを使って対応分析を行うことはできません。

対応策1:row.namesを指定する

row.names="Student"のオプションを加えることで、Studentの列を行名として認識させることができます。

f:id:semanticist:20161222202145p:plain

対応策2:Studentの部分を空白にする

単純な方法としては1行目の第1列を空行しておくと、Rがその列を列名として認識してくれます。

f:id:semanticist:20161222202304p:plain

 

Rのデータ入力:read.tableによるテーブルヘッダーの読み込み

ヘッダーにXがつく現象

Rにデータをロードするには、clipboardから読み込むのが楽です。

f:id:semanticist:20161222200525p:plain

このデータをクリップボードにコピーして:

data=read.table("clipboard",header=T)

で読み込めます。しかしながら、オブジェクトをロードすると次のようにヘッダーの名前がおかしくなります。

f:id:semanticist:20161222200657p:plain

これはヘッダーを数値として読み込んでいるからですが、この現象を回避するには次の形で対処できます。

> data=read.table("clipboard",header=T, check.names=F)

f:id:semanticist:20161222200857p:plain

 

ただし、この場合、各行に$を使ってアクセスするには、変数名をクォーテーションマークで囲む必要があります。

 

f:id:semanticist:20161222201005p:plain

[参照記事]

qiita.com

 

 

対応分析(コレスポンデンス分析)のラベルのはみだしをWordで調整する

はじめに

Rで対応分析などを行ってplotすると、ラベルの端が切れてしまうことがあります。そのときの対処法のメモ。

現象

次のような現象が今回の処理の対象です。

f:id:semanticist:20161101183425p:plain

対応方法

Rのコマンド例:

library(MASS)

plot(corresp(jikken,nf=5))

(1)plot後、右クリックをして「メタファイルにコピー」

※ビットマップではだめです。

(2)Wordの貼り付け

(3)図を右クリックして、「図の編集」

f:id:semanticist:20161101183719p:plain

そうすると、後ろに隠れていた部分が見えるようになります(原理は不明ですが、おそらく編集するためにすべてを可視化するのかもしれません)。

f:id:semanticist:20161101183412p:plain

※図が「前面」に変更されてしまいますので、図を選択して「文字列の折り返し」から「四角」や「行内」など望むものを選んでください。

 

Gmailで添付ファイルのダウンロードが失敗する場合の対処法

はじめに

gmailで添付ファイルが送られてきてChrome等のブラウザからダウンロードしようとすると、「失敗―ダウンロード エラー」となることがあります。

f:id:semanticist:20160219103954p:plain

ブラウザを変えても、キャッシュを削除してもうまくいかない場合の対処法を書いておきます。

解決策:ファイル名を変更する

解決策は、「ファイル名を変更する」ということです。アルファベットなどの単純なファイル名にしてダウンロードすれば、エラーは回避されます。

原因は?

この原因はOS間の「ユニコードの正規化の違い」のようです。

 

「ダ」「ポ」「グ」などの文字列は、一文字(ダ)として表現される場合と結合文字(タ+濁点)として表現される場合があります。このずれによりファイル名を認識できないというのが原因と考えられます。

参考:Unicodeの特殊な文字 “結合文字列” | ものかの

 

例えばMacで「ダウンロード.pdf」というファイルを作り、Windowsでダウンロードしようとするとおそらく失敗します(再現していませんが)。

まとめ

  • 添付ファイルのダウンロードを失敗した場合、「ファイル名」を変えてみる(アルファベットのみ推奨)
  • OS間の違いを考えると、ファイルはアルファベットで命名するのが無難