仮想マシン上のLinux(RHEL系)でRARPを使うときの注意点

個人的に嵌まった点をメモ。

  • IPアドレスを設定したい機器を(スイッチ経由なり直結なりで)ホストPCにつなぐわけだが、そのつないだNICとブリッジした仮想NICを設定する。
  • 以前TFTPサーバを使っていた場合、rarpd -e としないと、リクエストが来てもレスポンスを返さない場合がある。ブートイメージを返そうとして返すべきイメージが存在しない場合にそう動くようだ。
  • ethersに直接MACアドレスIPアドレスを紐付けて書くだけでよい。hostsは必要なら用意する、といった程度。IPアドレスを振るだけならわざわざhostsに書く必要はないと思う。
  • /var/log/messages を確認すること。リクエストすらログに書かれていない場合は、L2レベルでの疎通を疑う。リクエストがログに書かれていてレスポンスが書かれていない場合はrarpのオプション、ethersの記述を疑う。レスポンスが書かれていて正しくIPアドレスが振られない場合はパケットキャプチャでもしてみる。
  • IPレベルの話では無いので、仮想NICに割り当てるIPアドレスは適当でも良さそうだと思ったが、割り当てようとするIPアドレスと同一サブネットにしないとうまく割り当てられない。
  • ethersを編集してもrarpdを再起動する必要は無い。

Twitterユーザのフォロー関係を調べる

任意の2ユーザ間のフォローの有無を調べるツールを作りました。
Twitter API v1が廃止されて使用できなくなった http://tk4168.info/twitter/check_friendships.html の代替です。

http://tk4168.info/twitter/CheckFriendships.zip

FAQ

  • なんかうまくいかない。
    • 一旦アプリを終了させて、settings.xmlを消してみてください。
  • Windows 8でセキュリティの警告が表示されてブロックされる。
    • ダイアログに従って実行を許可してください。詳しくはメッセージをググって調べてください。
  • OAuthトークンは暗号化して保存される?
    • 暗号化されません!気になる人はトークン保存しない方が良いかと。
  • アプリのアイコンがデフォルトなんですが。
    • アイコン募集中です!

ToDo

特になし。

公式RT後の言及ツイート捕捉ツール

Twitterで公式RTされたときに、RTした人による、そのRTの直後のツイートが気になることがよくあるので、RT後のツイートを自動で取得するツールを作りました。

2014/8/24 バージョン1.0.0.3
http://tk4168.info/twitter/GetAfterRTedTweets_1.0.0.3.zip

2014/6/14 追記

OAuthアクセス権限が不必要にRead and WriteになってたのでRead onlyにしました。気になる方は再認証してください。

FAQ

  • なんかうまくいかない。
    • 一旦アプリを終了させて、settings.xmlを消してみてください。
  • Windows 8でセキュリティの警告が表示されてブロックされる。
    • メッセージに従って実行を許可してください。

参考

  • もっと多くのユーザを取得できるようにならない?
    • 最大取得ユーザ数が100なのは、Twitter APIの制限によるものです。
  • 指定した最大取得ユーザ数より取得数が少ないように見える
    • おそらく非公開ユーザ分少なくなっているものと思われます。
  • 非公開ツイートも取得される?
    • 認証したユーザがフォローしている非公開ユーザのツイートは取得されます。
  • 取得したツイートをTwitter webで開きたい。
    • 該当ツイートをダブルクリックしてください。
  • OAuthトークンは暗号化して保存される?
    • 暗号化されません!気になる人はトークン保存しない方が良いかと。
  • アプリの英名がEngrishなんですが。
    • 気にしないでください。。。

ToDo

更新履歴

2014/8/24 バージョン1.0.0.3公開
・ツイートの取得途中で中断できるようにした
・ツイート取得中は「取得」ボタンを無効に
・APIの残りを表示。ツールチップにリセット時刻が出るように
・ツイート取得中に随時結果を表示するようにした
・URLを含むツイート、ハッシュタグを含むツイートを除外するオプション追加
・改行を含むツイートがあると横スクロールバーが無効になる現象の対応

2014/8/17 バージョン1.0.0.2公開
・ツイート取得の進捗を表示
・対象ツイートの表示
・アプリのアイコンを設定

2014/5/5 バージョン1.0.0.1公開
・常時スクロールバーが表示されるように変更
・ツイートURL/ID入力欄の改良、チェック追加

2014/5/2 バージョン1.0.0.0公開

ドコモメールでローカルからクラウドへコピーする際のコツ

基本的には、下記参考ページの通りに行えばクラウドへのコピーは可能であるが、実際に私が行った際に遭遇した問題点と回避策を挙げておく。

  • ThunderbirdIMAPアクセスする場合、直接emlファイルをエクスプローラからIMAPフォルダにコピーすると、ドコモメールアプリから見た時のメールの受信日時がコピーした時の時刻になってしまう。*1一旦適当なThunderbirdのローカルのフォルダにインポートして、そこからIMAPフォルダへコピーすると回避できる。
  • ドコモのサーバーの不安定、高負荷が原因でコピーの途中で接続を拒否されることがあるようだ。日によっては300通くらいコピーした時点で認証エラーが発生したり、酷いときには完全にアクセスできなくなったり。失敗した場合は時間をずらす、小分けしてコピーする、リトライ機構を備えたローカル→IMAPコピースクリプトを自作するなどの回避策が必要。私の場合は、別の日にコピーを行うと1000通以上メールコピーに成功した。

備考

ちなみに、ドコモメールアプリの不要になった「ローカル」タブは、「ローカルデータの全削除」で消える。

ドコモメール操作ガイド Android版

ローカルメールビューアは、[メール設定]→[詳細設定]→[ローカルデータ消去]によりローカルメールをすべて削除した場合のみ、非表示となります。

*1:Thunderbirdから見た場合は問題ない。どうやらIMAP上のメールは送信日時・受信日時の他に別の日時を持っているらしく、その日時がサーバコピー時の時刻となってしまい、しかもドコモメールアプリはそれを参照してしまうという感じか。http://www.atmarkit.co.jp/fnetwork/rensai/netpro09/imap4-fetch.html の「INTERNALDATE」と思われる。

Androidの連絡先がおかしくなったときの対処

ドコモのAndroid端末の連絡先(電話帳)はドコモアカウントとGoogleアカウント両方が扱えるようになっていますが、時々挙動がおかしくなったりします。*1
以下は、ドコモアカウントの連絡先は使わず、Googleアカウントの連絡先のみ使用している場合の、連絡先不調時の対処です。

ドコモアカウントの連絡先を使用している人は以下の手順を行わないこと!データが消えます。

  1. PCより、Gmailにログインし、念のために連絡先データをエクスポートしてバックアップする
  2. Android端末の「連絡先」(「ドコモ電話帳」ではない)の「複数選択」を使って「すべて選択」→「削除(ゴミ箱アイコンをタップ)」。全てのデータが削除されていることを確認。この際、連絡先フィルターで全ての連絡先が表示される設定になっていることを確認しておく。
  3. PCのGmailより連絡先を確認。この段階で全連絡先は削除されているはずだが、同期がおかしくなっていて連絡先が残っている場合が考えられる。その場合は手動で残っている連絡先を削除する。
  4. Android端末で連絡先の同期を行い、データが全く同期されてないことを確認。
  5. PCのGmailより、「その他」→「連絡先を復元」を実行し、適切なデータを復元する。
  6. Android端末で連絡先の同期を行い、連絡先が正しく同期されたことを確認。

*1:ドコモアカウントの連絡先は全削除したはずなのに復元していたり、しかも勝手にドコモ連絡先とGoogleとがリンクされてたり、その際にふりがな情報が抜け落ちてソートされなくなってたり。

Twitterでフォローしてる人全員をリストに追加するアプリ Following2List

を作成しました。前回の記事 id:tk4168:20130615:1371276163 の改良版です。

以下リンクからダウンロードしてください。
http://tk4168.info/twitter/Following2List.zip

注意

  • .net 4以上が必要です。Tweenが動作する環境であれば使用できると思います。
  • リストに追加される順番はおおよそフォロー順となりますが、Twitter APIの仕様上、ばらつきがあります。
  • リストへの追加はTwitter APIが頻繁に失敗するので、何回か試す必要があります。

追記
自分が作った適当ツールより、こっちのwebサービスの方がいいと思うよ!!
http://retrorocket.biz/list/

Twitterでフォローしてる人全員をリストに追加するPerlスクリプト

を書いた。コンシューマーキーとかは各自で取得してください(適当)

#!/usr/bin/perl
# フォローしてる人全員を「all」という名前のリストに追加する
# 事前に「all」リストを作成しておく必要あり
use utf8;
use strict;
use warnings;
use Net::Twitter;
binmode STDOUT, ":encoding(cp932)"; #Windows環境
#use Data::Dumper;

my $nt = Net::Twitter->new(
	traits => [qw/AutoCursor API::RESTv1_1 RetryOnError OAuth/],
	consumer_key    => "",
	consumer_secret => "",
); 


my($access_token, $access_token_secret) = ("", ""); 
$nt->access_token($access_token);
$nt->access_token_secret($access_token_secret);

my $my_screen_name = "tk4168"; #自分のユーザ名

# 全フォローを取得
print "フォローリストを取得しています。\n";
my $ids = $nt->friends_ids;

# リストに追加(APIの仕様上、1回につき100ユーザまで)
print "リストに追加しています。\n";
for (my $i = 0; $i < @$ids; $i += 100) {
	my $slice_end_index; #100ユーザごとに配列スライスするが、最後のスライス時の範囲だけ異なる
	if ($i + 99 < @$ids) {
		$slice_end_index = $i + 99;
	}
	else {
		$slice_end_index = @$ids - 1;
	}
	
	my @userids = @{$ids}[$i .. $slice_end_index];

	eval { $nt->members_create_all({owner_screen_name => $my_screen_name, slug => "all", user_id => \@userids}); };
	if ( $@ ) {
		print "リスト追加時にエラーが発生しました。一部のユーザが追加されていない可能性があります。\n再度実行すると追加できるかもしれません。\n";
	}
}

# 自分をリストに追加
$nt->add_list_member({owner_screen_name => $my_screen_name, slug => "all", screen_name => $my_screen_name});

# リストに追加されなかった人を抽出
# ※デバッグ用。members_create_allは1回で全メンバーを追加できないことがある。その場合は何回か実行するとよい。
# また、たまにTwitterの不具合で、アカウント削除されたユーザがフォローに含まれたまま残っていることがあるが、
# その「ユーザ」はリストには追加できないので失敗するという事象がある)

my @list_members;

for (my $cursor = -1, my $r; $cursor; $cursor = $r->{next_cursor}) {
	$r = $nt->list_members({owner_screen_name => $my_screen_name, slug => "all", cursor => $cursor});
	for (@{ $r->{users} }) {
		push @list_members, $_->{id};
	}
}


print "以下のユーザはリストに追加されませんでした。\n";
for (@{$ids}) {
	my $id = $_;
	print $id . "\n" if (! (grep {$_ eq $id} @list_members));
}

print "処理が終了しました。\n";