2011.06.30
Google maps の「My Places」の移行
  1. http://maps.google.com/ へ行く
  2. 古いGoogleアカウントでログインする
  3. "My Places" をクリック
  4. コピーしたい地図のリンクをクリック
  5. 右上のリンクボタンから "Paste link in email or IM" のリンクをコピーする
    link.png
  6. 別のブラウザタブ(or ウィンドウ)にリンクをペーストし末尾に「&output=kml」を追加し Enter
  7. KMLファイルがどこかへダウンロードされる
  8. 別のブラウザで http://maps.google.com/ を開き、新しいGoogleアカウントでログインする
  9. "My Places" で「CREATE NEW MAP」をクリック
  10. "Title" のすぐ上にある "Import" をクリック
  11. 上でダウンロードされた KML ファイルを選択し "Upload from File"
  12. 保存したらできあがり

2011.06.29
メモ

tcpdump の場合
00:04:4e:2b:b4:00 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110
Actor Information TLV (0x01), length 20
System 00:04:4e:2b:b4:00, System Priority 32768, Key 1, Port 258, Port Priority 32768
State Flags [Activity, Timeout, Aggregation, Synchronization, Collecting, Distributing]
0x0000: 0004 4e2b b400 0001 8000 0102 3f00 0000
0x0010: 0214
Partner Information TLV (0x02), length 20
System 00:23:9c:b4:6f:f0, System Priority 127, Key 1, Port 1, Port Priority 127
State Flags [Activity, Timeout, Aggregation, Synchronization, Collecting, Distributing]
0x0000: 0023 9cb4 6ff0 0001 007f 0001 3f00 0000
0x0010: 0310
Collector Information TLV (0x03), length 16
Max Delay 32768
0x0000: 0000 0000 0000 0000 0000 0000 0000
Terminator TLV (0x00), length 0 (=52)
0x0000: 0000 0000 0000 0000 0000 0000 0000 0000
0x0010: 0000 0000 0000 0000 0000 0000 0000 0000
0x0020: 0000 0000 0000 0000 0000 0000 0000 0000

Wireshark の場合
Ethernet II, Src: Cisco_2b:b4:00 (00:04:4e:2b:b4:00), Dst: Slow-Protocols (01:80:c2:00:00:02)
Destination: Slow-Protocols (01:80:c2:00:00:02)
Address: Slow-Protocols (01:80:c2:00:00:02)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Cisco_2b:b4:00 (00:04:4e:2b:b4:00)
Address: Cisco_2b:b4:00 (00:04:4e:2b:b4:00)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: Slow Protocols (0x8809)
Link Aggregation Control Protocol
Slow Protocols subtype: LACP (0x01)
LACP Version Number: 0x01
Actor Information: 0x01
Actor Information Length: 0x14
Actor System Priority: 32768
Actor System: Cisco_2b:b4:00 (00:04:4e:2b:b4:00)
Actor Key: 1
Actor Port Priority: 32768
Actor Port: 258
Actor State: 0x3f (Activity, Timeout, Aggregation, Synchronization, Collecting, Distributing)
.... ...1 = LACP Activity: Yes
.... ..1. = LACP Timeout: Yes
.... .1.. = Aggregation: Yes
.... 1... = Synchronization: Yes
...1 .... = Collecting: Yes
..1. .... = Distributing: Yes
.0.. .... = Defaulted: No
0... .... = Expired: No
Reserved: 000000
Partner Information: 0x02
Partner Information Length: 0x14
Partner System Priority: 127
Partner System: JuniperN_b4:6f:f0 (00:23:9c:b4:6f:f0)
Partner Key: 1
Partner Port Priority: 127
Partner Port: 1
Partner State: 0x3f (Activity, Timeout, Aggregation, Synchronization, Collecting, Distributing)
.... ...1 = LACP Activity: Yes
.... ..1. = LACP Timeout: Yes
.... .1.. = Aggregation: Yes
.... 1... = Synchronization: Yes
...1 .... = Collecting: Yes
..1. .... = Distributing: Yes
.0.. .... = Defaulted: No
0... .... = Expired: No
Reserved: 000000
Collector Information: 0x03
Collector Information Length: 0x10
Collector Max Delay: 32768
Reserved: 000000000000000000000000
Terminator Information: 0x00
Terminator Length: 0x00
Reserved: 000000000000000000000000000000000000000000000000...
2011.06.23
Google Account から Google Apps Account へ Google Bookmarks のデータを移行するにあたって結構苦労したからメモしておく。

そもそもが Google Bookmarks には HTML ファイルに export する機能はあるのに、その HTML を import する機能が無い。WTF?これもわりと放置気味プロダクトであるが故なのだろうか。

それはともかく、import にはそれでもいくつか方法がある。
  • Firefox (for Windows) + Google Toolbar のブックマークインポート機能を使う
  • 最近(っても少し経ってるけど)実装された Delicious からのインポート機能を使う
  • リバースエンジニアの末発見された微妙な API ( https://www.google.com/bookmarks/mark?op=upload )を使う
(実際には、上の2つは3番目の API を使ってるんだけど)

で、とりあえず一つ目を試そうと Firefox4 on Mac で Google Toolbar をインストールしようとしたら Firefox のバージョンが合わないとか言われたから、わざわざ 3.6.x (for Mac)をダウンロードして再度試したら、今度は「この拡張機能はこのOSでは使えません」とか言われてインストールできず。仕方なくわざわざ VMware Fusion 内の WindowsXP に Firefox 3.6.x をインストールし、Google Toolbar を入れた上で、ようやく古いアカウントの Google Bookmarks から export ( https://www.google.com/bookmarks/bookmarks.html )したHTMLファイルを、まずは Firefox の Bookmark へ読み込み、ついに Google Toolbar の「ブックマーク - Firefox からのインポート」を試した。しかし。まったくもってダメダメだった。一番最悪なのは、あるブックマークにタグを複数付けてた場合(例:tag1 と tag2)、Google Toolbar 経由でインポートしたブックマークのタグは "tag1 tag2" という二つのタグが空白でつなげられた一つのタグになってしまったところだ。これじゃまったく意味がないので速攻あきらめた。

次に、二番目の方法を試した。古いアカウントの Google Bookmarks から export し、そのHTMLファイルを Delicious に作った一時的なアカウントへ import (「Settings - Import / Upload Bookmarks」)、その上で新しいアカウントの Google Bookmarks から「Import Delicious Bookmarks」( https://www.google.com/bookmarks/deliciousimport )を実行した。ぱっと見うまくいったように見えたが、よーく見るとタグがやけに少ない。ちゃんと見てみると、どうやらブックマークあたり高々一つのタグしかついてない。Delicious 側を確認すると、どうやら Google Bookmarks 側で複数タグをつけてても、Delicious 側には一つしか import されてないようだった。これじゃ意味がない。

なんかだんだん面倒になってきたけど、もうひと踏ん張り検索をしてみたら、gbookmark2delicious というスクリプトを見つけた。こいつは Google Bookmarks の内容を Delicious へ同期してくれるらしい。これなら上記のタグがコピーされない問題も解決されてるかも!と思い、早速ダウンロードして実行したところ、Voilà! 無事複数タグもきちんとコピーされ、もとの Google Bookmarks の完全なコピーが Delicious 側にできた(と思ってた)。喜んで新しい Google Bookmarks から「Import Delicious Bookmarks」を実行したところほぼ完璧に Google Bookmarks の移行ができたように見えた。

しかし、よーく見ると、二つ問題があった。
  1. ブックマークの作成日時が全部同じ (当日)
  2. "delicious-export" という余計なタグがすべてのブックマークについてる (これは import 時に Google Bookmarks 側で付けてる)
  3. ("Unlabeled" というタグがついてたけど、これは Delicious 側で削除できた)

まず一つ目の問題は、そもそも gbookmark2delicious でブックマークをコピーする段階で日付の情報がコピーされてないのが原因だった。Google Bookmarks と Delicious 両方から export したHTMLファイルを眺めると、どうやらAタグに ADD_DATE という attribute (Epoch時間)をつけてやれば、作成日付情報もちゃんと移行できそうだった。gbookmark2delicious にちょこっと書き足して ADD_DATE attribute を Google Bookmarks から Delicious へコピーする(ただし、Google Bookmarks は micro second までの時間を使ってたから、下6桁を削除して秒単位までの数字をコピーした)ようにした上で再度実行したところ、今度こそ作成日時も正しく Delicious へコピーされた。で、多少どきどきしながら新しい Google Bookmarks アカウントで Delicious の import を実行したところ無事日時も正しくコピーされた。

この段階で、"delicious-export" という余計なタグが全部のブックマークについてること以外は、古いアカウントからの完璧なコピーができた。あとは、たんにそのタグを削除すればいんだろうと思い、「Manage labels」から "delicious-export" をさくっと削除して「できたできた」と悦に入ってたら、最後の落とし穴があった。なんとすべてのブックマークの日時がその時間になってしまった。つまり Google Bookmarks のブックマークについてる日時は作成日時じゃなくて変更日時なようだ。"delicious-export" を削除する、という変更をおこなうことによってすべてのブックマークの日時も変わってしまった。これじゃ一つ目の問題を解決した意味がぜんぜん無い。

いい加減心が折れそうになったけど、もう少しだけ検索したところ、今度は Delicious Export to Google Bookmarks UploaderGoogle Bookmarks API Guide を見つける。(ここで、Google Bookmarks の「Import Delicious Bookmarks」もこの API を使ってることを理解する) これがうまく動くようだったら「Import Delicious Bookmarks」を使わないで済むので "delicious-export" のタグの問題が発生しないんじゃないかと期待したが、そもそもこの JavaScript では日時はまったく考慮されてなかったので問題外だった。とはいえ、gbookmark2delicious の時と同じようにちょっと追加すればうまくいくんじゃないかと期待して、そもそもどういう値を追加すればいいのか調べるため、「Import Delicious Bookmarks」の最中に出てくる import を確認する画面(これからインポートするブックマークとタグのリストが表示されてる画面)のソースを覗いてみた。

すると、JSCON形式のブックマークのリスト(タイトル、URL、コメント、タグ、日時)を https://www.google.com/bookmarks/mark?op=upload に POST するような JavaScript のコードになってることが一目瞭然だった。しかも、タグの項にはにっくき "delicious-export" もばっちり含まれている。これだ!と思い、一旦 JavaScript のソースをファイルに保存、タグの項から "delicious-export" を削除した上でそのソースを再度ブラウザで読み込むと…、今度こそ本当に Voilà!完全なコピーの形で新しいアカウントへ Google Bookmarks をコピーできた。

簡単に(っても煩雑だけど)まとめると、
  1. gbookmark2delicious で古いアカウントから Delicious へコピーする (ただし、日時をコピーするのに一行追加が必要)
  2. "Unlabeled" というタグを Delicious 上で削除する
  3. 新しいアカウントで Google Bookmarks へログイン、「Import Delicious Bookmarks」を実行
  4. import の確認をする画面でソースを確認、そのまま一旦テキストファイルに保存する
  5. ソースをテキストエディタで開き "delicious-export" というタグを削除する (あと、.js ファイルの読み込みが相対パスになってるから、URL形式に変えとく)
  6. ブラウザでソースを開くと、自動的に再度 import を確認する画面へ遷移する

という感じで、古いGoogleアカウントから新しいGoogleアカウントへの Google Bookmarks のデータの完全なコピーができた。

どう考えても Google Bookmarks がこのまま存続していくとは思えない :-p
2011.06.19
メモ

Ruby

def f
i = 0
return lambda {
i += 1
}
end

x = f
puts x.call()
puts x.call()
puts x.call()

Python 2.x

def f():
i = [0]
def g():
i[0] += 1
return i[0]
return g
x = f()
print x()
print x()
print x()

Python 3.x

def f():
i = 0
def g():
nonlocal i
i += 1
return i
return g

x = f()
print(x())
print(x())
print(x())

ちなみに、ジェネレータのおまけ

def f():
i = 0
while True:
i += 1
yield i

g = f()
print g.next()
print g.next()
print g.next()

2011.06.11
メモ

IaaS

PaaS

2011.06.07
メモ

8.2.3.6 20110414 -> CWM_BLOB_V4
8.2.3.9 20110423 -> CWM_BLOB_V5
8.2.3.13 20110520
8.2.6.9 ?
8.4.4.5 20110527 (Honeycomb 3.1)

The Complete Guide: How To Fully Back Up And Restore Your Android Phone Using Nandroid Backup
http://androidfc.com/tips-tricks/the-complete-guide-how-to-fully-back-up-and-restore-your-android-phone-using-nandroid-backup/

How to set up ADB (Android Debug Bridge) in Mac OSX
http://esausilva.com/2010/10/02/how-to-set-up-adb-android-debug-bridge-in-mac-osx/

STOCK (8.2.3.9/8.2.3.13/8.4.4.5) to 3.1 (Primordial 3.1)
http://forum.xda-developers.com/showthread.php?t=1106587

AsusTransformer Root + CWM recovery
http://androidroot.mobi/asus-eee-pad-transformer-tf101-root-cwm-recovery/

Root Your Asus Eee Pad Transformer (TF101)
http://www.techhackz.com/2011/06/root-your-asus-eee-pad-transformer.html

http://forum.xda-developers.com/showpost.php?p=14250184&postcount=1
Instructions:
1. Copy ROM to sdcard
2. Verify the MD5 of the zip on the sdcard, DO NOT FLASH IF THIS DOESN'T MATCH THE MD5 UNDER THE DOWNLOAD LINK!
3. Boot into clockworkmod recovery
4. Take a nandroid backup (optional but highly recommended)
5. Install the ROM
6. Reboot and wait... The first boot may take a while...

http://forum.xda-developers.com/showpost.php?p=14352646&postcount=22
REVERT TO STOCK RECOVERY:
1) Download 8239usrecovery.zip from http://forum.xda-developers.com/showpost.php?p=14113508&postcount=14
2) Place zip on a microSD and insert into device
3) Boot into CWM, flash 8239USrecovery.zip from CWM and reboot

FLASH ORIGINAL 8239 ASUS FIRMWARE:
1) Download the original ASUS 8239 firmware from: http://dlcdnet.asus.com/pub/ASUS/EeePAD/TF101/UpdateLauncher_US_epad_user_8239.zip
2) Extract the 'ASUS/' folder from that zip onto a microSD card, and insert the microSD into the device
3) You should get a notification that an ASUS update is available. Just click it and it will reboot and load the stock rom.

Rebuild at 2017/09/22 09:51
×

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