Chromeのブックマークのリンク切れ、重複削除

※ 2015/11/20 改訂

同期の問題でよく重複が発生する。以下ではモバイルchromeが問題と書いてあるが、どうもPC同士でも重複を生じさせている様子。
Chromeのブックマーク同期で重複し数が増えてしまった時の対処法 Approid大好き

AM-DeadLink というフリーウェアが使えるのだが、いろいろと癖があった。
(Bookmark Sentry という chrome アドオンもあるのだが、アドウェアが仕込んであるらしく… 時間があれば自分でChrome拡張でも作ってみたらよいかもしれないが。)

いろいろやったが、今のところ以下の手順できれいに掃除できそう。
要するに、chromeを使っている端末のうち、一つのPC端末でブックマークをきれいに掃除した後、他の端末は一旦、ブックマークを削除してから同期しなおすということ。

  • google dashboardchrome sync の管理で「同期をリセット」を実行。
    → これをやると、全端末で自動的に一旦、同期がOffになる。
  • ChromeのブックマークをIEにインポート
    • インポート前にIEのブックマークはバックアップの上、削除しておく
    • インポートは「ファイル > インポートとエクスポート」
  • AM-DeadLink で編集
  • IEからChromeにインポート
    • Chromeのブックマークを消してから入れなおし
    • インポートは「ブックマーク > ブックマークと設定をインポート」
  • IEのブックマークを元に戻す。
  • Chromeのブックマークの整理
    • Chromeの「ブックマーク バー」「その他ブックマーク」「モバイルのブックマーク」の区分は一旦、壊れてしまう。
    • 「モバイルのブックマーク」はスマホのを残しておけばそこから復旧されるようなので、PC側では無視してよいかも。
    • IEにインポートする時、勝手にタイトル文字列順でソートされるので、気に入らなければ。
  • ブックマークをきれいにしたChromeで同期を再開。google dashboard で同期ちゃんとブックマークが同期されたことを確認する。
    → AM-DeadLink で表示されたブックマーク件数と google dashboard のブックマーク件数が一致していることを確認。
  • 他のchrome使用端末で、一旦ブックマークを全消去してから同期を再開。
細かい注意点

AM-DeadLinkで 「エラーをリストのトップへ移動」をクリックしても上にこない奴らが居る。どうやらエラーコードが0のものらしい。

直接 AM-DeadLink で Chromeのブックマークをいじろうとしたが、結局ダメだった。

AM-DeadLink でもChromeのブックマークを読めはするが削除はできない。

AM-DeadLink は以下のファイルを直接いじっている。

C:\Users\[ユーザ名]\AppData\Local\Google\Chrome\User Data\Default\Bookmarks

こいつはUTF-8なのだが、一旦Chromeを閉じた上でSJISに変換してから AM-DeadLink を起動すれば編集できた。
しかし、それでも
「同じブックマークを探す」→「Select all duplicates but one」→「削除」
はできなかった。

こんなのに半日もかけてしまった…

Linuxファイル復旧

大事なファイルを rm するありがちなボケをかましてしまい、やり方調べたのでメモ。
extundelete を使うのだが、サーバ環境にあまり影響を与えたくなかったので、なるだけ無難な方法でやったつもり。
rootで以下を実行。

cd /tmp/
curl -L -o e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm "ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.5/x86_64/updates/fastbugs/e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm"
rpm -ivh e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm 

curl -L -o extundelete-0.2.4.tar.bz2 "http://sourceforge.net/projects/extundelete/files/latest/download"
tar xjvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure --prefix=/root/rhase/extundelete
make
make install

なお、e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm の依存関係と gcc-c++ はインストール済みであった。
この後、

/root/rhase/extundelete/bin/extundelete --after 1447727400 --restore-all /dev/sda6

とかやって復旧を実行。

WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates 
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n) 

とかなんだか怖そうなWarnが出たが y で実行。復旧できた。
ただ、ファイルによっては全然別なファイル名で復旧されてたやつもあった(秘密鍵ファイルが known_hosts~ というファイル名になってた)。必ずしもきれいに復旧できる訳ではなさそう。当然ながら、「もう復旧できないinode」みたいなメッセージもいっぱい出てた。

補足

なるだけ環境に影響を与えたくなかったので、e2fsprogs-devel は上記バージョンを使用。(yum すると他のパッケージがバージョン合わせのためにUpgradeされてしまうので)
上記では curl で落とす手順を書いているが、今回は ftp のポートが空いてないためか、サーバに接続できなかったので、自端末で落としたものをSCPした。

# wget "ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.5/x86_64/updates/fastbugs/e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm"
--2015-11-17 17:34:59--  ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.5/x86_64/updates/fastbugs/e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm
           => `e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm'
mirror.switch.ch をDNSに問いあわせています... 失敗しました: 名前解決時の一時的な失敗.
wget: ホストアドレス `mirror.switch.ch' を解決できませんでした。

ほんとはインストール先も自分用のパス(/root/rhase)にしたかったが、再配置不可だった…

# rpm -ivh --prefix=/root/rhase/e2fsprogs-devel e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm                                                                                
警告: e2fsprogs-devel-1.41.12-18.el6_5.1.x86_64.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
エラー: パッケージ e2fsprogs-devel は再配置できません。

Word 謎多すぎ…

「見出し」問題

・「見出し」のインデントが右に寄り過ぎ
・段落番号とテキストが離れすぎ
・設定変更してもファイルを閉じて開く直すと元に戻っている

解決方法

文書の最初の見出しにカーソルを合わせ、「ホーム > 段落 > アウトライン」をクリック。
「新しいアウトラインの定義(D)」をクリック。
「インデント位置」「左インデントからの距離」をいずれも0に設定。
「オプション(M)」をクリックし、「番号に続く空白の扱い(W)」を「スペース」に変更。

これで治った。自動でフォーマットが戻るのは、「番号に続く空白の扱い」が関係しているのか?


箇条書きの書式

デフォの書式を変える術はないっぽい。いつも使う書式をスタイルとして登録するしかない。
ただし、このやり方だと、行頭文字を変えるといちいちスタイルのほうも変更されてしまう。行頭文字毎にスタイルを定義するしかないか。

やり方

スタイルの「リスト段落」を右クリックし「変更」をクリック。
「書式 > 箇条書きと段落番号」で好きな先頭文字を選択。
「書式 > 段落」で左インデントを指定。「最初の行」で「ぶら下げ」を指定。(私の場合、左インデント1.5字、ぶら下げ1.5字とした。)

 

outlookで予定をガントチャートぽく表示

表示 > ビューの変更 > ビューの管理
で「新規作成」をクリックし、「ビューの種類」で「時間帯」を選んでOKを押下。

あくまでガントチャート「ぽい」ものであり、ガントチャートではない。アレげかもしれない…

マイナンバー制度(というか公的個人認証)について思ったこと

itpro.nikkeibp.co.jp

これを読んでまず浮かんが疑問点が2つ。

マイナンバー無しで認証できるなら、なんでわざわざカードにマイナンバー書くの?
 マイナンバーって個人情報に紐付きまくるんだよね?
・システム運用、大丈夫か?
 率直に言って、官公庁のITマネジメント能力はあまり信頼できない…
 FacebookGoogleのほうがよっぽど信頼できそう。

個人認証がやりたいのなら、公的機関がFacebook認証やGoogle認証に対応すれば済む話じゃないか?
そうすれば認証システムの構築・運用に税金使わなくて済むし、もし認証情報が漏洩してもIDを切り替えるだけで済む(Facebookアカウントが乗っ取られたら、そのアカウントとマイナンバーの紐付けを解除し、他のアカウントと紐付けし直す、みたいな)。

$PROGRAM_NAME と __FILE__

結論

$PROGRAM_NAME はmainの実行ファイル名。
__FILE__ はそのコードが書かれているファイルの名前。

検証

以下をを同じディレクトリにおいて実行。

test.rb

#!/bin/env ruby

require './test_class'

p $PROGRAM_NAME
p __FILE__

p 'Now call class.'

tc = TestClass.new
tc.name

test_class.rb

class TestClass
  def name()
    p $PROGRAM_NAME
    p __FILE__
  end
end

実行結果

$ ./test.rb
"./test.rb"
"./test.rb"
"Now call class."
"./test.rb"
"/usr/local/vldmp/script/test/test_class.rb"

Bundler.require したら system関数に環境変数が追加されててトラブった

rubyスクリプト内で、system関数使って Treasure Data のコマンド(tdコマンド)を打つというのをやったらちゃんと動かなかった。
(本来は、Treasureのrubyライブラリ使うべきなんだろうが、ライブラリの使い方調べる時間が惜しくてひとまずやっつけでこういうやり方をやった)
そうすると、tdコマンドがちゃんと動かない。
どうも Bundler.require すると環境変数 RUBYOPT に -rbundler/setup がセットされていて、それが system で ruby コマンド打つ時に悪さしているようだ。

system({ 'RUBYOPT' => '' }, td ...)

のようにやったら正常に動作するようになった。