AtomPubを使ったRubyによるHatena::Diaryへの投稿(指定ファイルの内容)
参考:
[m2w]AtomPub によるブログ記事の取得はブログの種類に依存する。 - 自分の歩いた道に落ちてるコード http://www.ownway.info/Blog/2012/02/mail2weblog-8.html
エントリの本文を引数のファイル名の内容から、タイトル名はSTDIN.getsで、コマンドラインから入力を促すようにしました。
#!/usr/bin/ruby # coding: UTF-8 require 'atomutil' USERNAME = 'hirono2011' PASSWORD = 'パスワード' ENTRY_COLLECTION_URI = 'http://d.hatena.ne.jp/hirono2011/atom/blog' auth = Atompub::Auth::Wsse.new(:username => USERNAME, :password => PASSWORD) client = Atompub::Client.new(:auth => auth) # ブログ記事を投稿する unless ARGV[0].nil? then f = open(ARGV[0]) text = f.read f.close file_name = ARGV[0] print("#{file_name}を本文に投稿します。タイトル名を入力してください。\n") title = STDIN.gets.chomp else print("ファイル名を指定してください!! \n") exit(1) end #text = <<END #あああ #テスト中 23 #END new_entry = Atom::Entry.new( :title => title.encode('BINARY', 'BINARY'), :content => text.encode('BINARY', 'BINARY')) p client.create_entry(ENTRY_COLLECTION_URI, new_entry).sub("atom/blog/","")
AtomPubを使ったRubyによるHatena::Diaryへの投稿
参考:
[m2w]AtomPub によるブログ記事の取得はブログの種類に依存する。 - 自分の歩いた道に落ちてるコード http://www.ownway.info/Blog/2012/02/mail2weblog-8.html
これだけで記事の投稿ができました。atomutilはgemでインストールです。
# coding: UTF-8 require 'atomutil' USERNAME = 'hirono2011' PASSWORD = 'パスワード' ENTRY_COLLECTION_URI = 'http://d.hatena.ne.jp/hirono2011/atom/blog' auth = Atompub::Auth::Wsse.new(:username => USERNAME, :password => PASSWORD) client = Atompub::Client.new(:auth => auth) # ブログ記事を投稿する new_entry = Atom::Entry.new( :title => "タイトル".encode('BINARY', 'BINARY'), :content => "本文".encode('BINARY', 'BINARY')) p client.create_entry(ENTRY_COLLECTION_URI, new_entry)
直前のコミットを変更する方法(git)
#10 直前のコミットを変更する | gitの基礎 - ドットインストール http://dotinstall.com/lessons/basic_git/6710
git commit --amend
rdiff-backupを使った過去のデータの復元
まずは-lオプションで履歴を確認してから期日を指定しています。Gitより直感的でわかりやすいです。
こんな感じです。
ak@ak-Prime-Series:~/tmp/t % rdiff-backup -l /var/backup/aaa/ Found 3 increments: increments.2012-06-09T13:08:16+09:00.dir Sat Jun 9 13:08:16 2012 increments.2012-06-09T13:25:16+09:00.dir Sat Jun 9 13:25:16 2012 increments.2012-06-09T13:32:05+09:00.dir Sat Jun 9 13:32:05 2012 Current mirror: Sun Jun 10 11:59:47 2012 ak@ak-Prime-Series:~/tmp/t % ls ak@ak-Prime-Series:~/tmp/t % rdiff-backup -r 2012-06-09T13:25:16+09:00 /var/backup/aaa/ ./ ak@ak-Prime-Series:~/tmp/t % ls H04-04-04_勾留状.jpg h-twit-Diary.rb~ twilog-f-url.sh~ yahoo-mai-rb.txt H18_最高検察庁からの書面 no-follower.rb~ wordpress-img-a-link.sh h-blogger-rss.rb~ twilog-f-date.sh~ wordpress-img-a-link.sh~ ak@ak-Prime-Series:~/tmp/t %
rdiff-backup -r 2012-06-09T13:25:16+09:00 /var/backup/aaa/ ./
が肝の部分です。
この場合、/var/backup/aaa/rdiff-backup-dataというディレクトリの中身を見ただけでもだいたいのことがわかります。/var/backup/aaaディレクトリの中のrdiff-backup-dataディレクトリ以外が、最新版の内容みたいです。テスト用なのでファイルの数も少ないですが、バックアップ用の沢山のファイルが作られているのがわかります。最初がフルバックアップで、あとは差分の追加や削除という扱いみたいです。
ak@ak-Prime-Series:/var/backup/aaa % tree ./ ./ ├── 2009年9月10日付石川県警察本部宛上申書.wp ├── H04-04-04_勾留状.jpg ├── H18_最高検察庁からの書面 │ ├── H18_最高検察庁からの書面_01.jpg │ ├── H18_最高検察庁からの書面_02.jpg │ ├── H18_最高検察庁からの書面_03.jpg │ ├── H18_最高検察庁からの書面_04.jpg │ ├── H18_最高検察庁からの書面_05.jpg │ ├── H18_最高検察庁からの書面_06.jpg │ ├── H18_最高検察庁からの書面_07.jpg │ └── H18_最高検察庁からの書面_08.jpg ├── a ├── life_1st_1920_1080.png ├── rdiff-backup-data │ ├── access_control_lists.2012-06-09T13:08:16+09:00.snapshot │ ├── access_control_lists.2012-06-09T13:25:16+09:00.snapshot │ ├── access_control_lists.2012-06-09T13:32:05+09:00.snapshot │ ├── access_control_lists.2012-06-10T11:59:47+09:00.snapshot │ ├── backup.log │ ├── chars_to_quote │ ├── current_mirror.2012-06-10T11:59:47+09:00.data │ ├── error_log.2012-06-09T13:08:16+09:00.data │ ├── error_log.2012-06-09T13:25:16+09:00.data │ ├── error_log.2012-06-09T13:32:05+09:00.data │ ├── error_log.2012-06-10T11:59:47+09:00.data │ ├── extended_attributes.2012-06-09T13:08:16+09:00.snapshot │ ├── extended_attributes.2012-06-09T13:25:16+09:00.snapshot │ ├── extended_attributes.2012-06-09T13:32:05+09:00.snapshot │ ├── extended_attributes.2012-06-10T11:59:47+09:00.snapshot │ ├── file_statistics.2012-06-09T13:08:16+09:00.data.gz │ ├── file_statistics.2012-06-09T13:25:16+09:00.data.gz │ ├── file_statistics.2012-06-09T13:32:05+09:00.data.gz │ ├── file_statistics.2012-06-10T11:59:47+09:00.data.gz │ ├── increments │ │ ├── 1to01.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── 2009年9月10日付石川県警察本部宛上申書.wp.2012-06-09T13:32:05+09:00.missing │ │ ├── 27223.tmp.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── H04-04-04_勾留状.jpg.2012-06-09T13:08:16+09:00.missing │ │ ├── H18_最高検察庁からの書面 │ │ │ ├── H18_最高検察庁からの書面_01.jpg.2012-06-09T13:08:16+09:00.missing │ │ │ ├── H18_最高検察庁からの書面_02.jpg.2012-06-09T13:08:16+09:00.missing │ │ │ ├── H18_最高検察庁からの書面_03.jpg.2012-06-09T13:08:16+09:00.missing │ │ │ ├── H18_最高検察庁からの書面_04.jpg.2012-06-09T13:08:16+09:00.missing │ │ │ ├── H18_最高検察庁からの書面_05.jpg.2012-06-09T13:08:16+09:00.missing │ │ │ ├── H18_最高検察庁からの書面_06.jpg.2012-06-09T13:08:16+09:00.missing │ │ │ ├── H18_最高検察庁からの書面_07.jpg.2012-06-09T13:08:16+09:00.missing │ │ │ └── H18_最高検察庁からの書面_08.jpg.2012-06-09T13:08:16+09:00.missing │ │ ├── H18_最高検察庁からの書面.2012-06-09T13:08:16+09:00.missing │ │ ├── a.2012-06-09T13:32:05+09:00.missing │ │ ├── a.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── aptana.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── cat-files.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── cocolog-xmlrpc.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── dm2011.txt.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── fdate.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── fname-date-mv.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── follow_ibs.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── follower_ibs.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── fwdate.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-Flicker-upload.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-blogger-rss.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-blogger-rss.rb~.2012-06-09T13:25:16+09:00.snapshot.gz │ │ ├── h-blogger-rss2.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-expect-git.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-make-lightbox-html-etc.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-make-lightbox-html.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-opt.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-pukiedit2index.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-pukiwiki-lightbox-No.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-rename-dejikame.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-tex2pdf.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-tex2pdf_br.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-Diary-rts.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-Diary.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-Diary.rb~.2012-06-09T13:25:16+09:00.snapshot.gz │ │ ├── h-twit-api-hirono-hideki.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-api-kokuhatu.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-api-s_hirono.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-clipbord-rts.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-clipbord.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-hatena-mail.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-print.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-s_hirono-cron.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-s_hirono-mail.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twit-s_hirono-xmlrpc.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twitter-nofollow-html.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── h-twitter-nofollow.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── jjj.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── life_1st_1920_1080.png.2012-06-09T13:25:16+09:00.missing │ │ ├── ma.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── make-jpeg-js-etc.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── make-jpeg-js-html.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── make-jpeg-js-xpwiki.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── make-jpeg-js.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── mb2.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── mb3.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── mb4.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── no-follower.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── no-follower.rb~.2012-06-09T13:25:16+09:00.snapshot.gz │ │ ├── org-tex-n.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── p.txt.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── photozou-up.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── platex-utf8.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── pukiwiki-lightbox-No.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── rmail.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── ruby-twitterAPI-hirono_hideki.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── sugarsync.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── termtter-nofification-demon.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── termtter.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── tw-api-no-follow-list.rb.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── twilog-f-date.html.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── twilog-f-date.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── twilog-f-date.sh~.2012-06-09T13:25:16+09:00.snapshot.gz │ │ ├── twilog-f-url.html.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── twilog-f-url.sh.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── twilog-f-url.sh~.2012-06-09T13:25:16+09:00.snapshot.gz │ │ ├── wordpress-img-a-link.html.2012-06-09T13:08:16+09:00.snapshot.gz │ │ ├── wordpress-img-a-link.sh~.2012-06-09T13:25:16+09:00.snapshot.gz │ │ ├── まねきでこざる.txt.2012-06-09T13:32:05+09:00.missing │ │ └── 無題のドキュメント 1.2012-06-09T13:25:16+09:00.missing │ ├── increments.2012-06-09T13:08:16+09:00.dir │ ├── increments.2012-06-09T13:25:16+09:00.dir │ ├── increments.2012-06-09T13:32:05+09:00.dir │ ├── mirror_metadata.2012-06-09T13:08:16+09:00.diff.gz │ ├── mirror_metadata.2012-06-09T13:25:16+09:00.diff.gz │ ├── mirror_metadata.2012-06-09T13:32:05+09:00.diff.gz │ ├── mirror_metadata.2012-06-10T11:59:47+09:00.snapshot.gz │ ├── restore.log │ ├── session_statistics.2012-06-09T13:08:16+09:00.data │ ├── session_statistics.2012-06-09T13:25:16+09:00.data │ ├── session_statistics.2012-06-09T13:32:05+09:00.data │ └── session_statistics.2012-06-10T11:59:47+09:00.data ├── wordpress-img-a-link.sh ├── yahoo-mai-rb.txt ├── まねきでこざる.txt └── 無題のドキュメント 1 4 directories, 132 files ak@ak-Prime-Series:/var/backup/aaa % ls rdiff-backup-data/ access_control_lists.2012-06-09T13:08:16+09:00.snapshot access_control_lists.2012-06-09T13:25:16+09:00.snapshot access_control_lists.2012-06-09T13:32:05+09:00.snapshot access_control_lists.2012-06-10T11:59:47+09:00.snapshot backup.log chars_to_quote current_mirror.2012-06-10T11:59:47+09:00.data error_log.2012-06-09T13:08:16+09:00.data error_log.2012-06-09T13:25:16+09:00.data error_log.2012-06-09T13:32:05+09:00.data error_log.2012-06-10T11:59:47+09:00.data extended_attributes.2012-06-09T13:08:16+09:00.snapshot extended_attributes.2012-06-09T13:25:16+09:00.snapshot extended_attributes.2012-06-09T13:32:05+09:00.snapshot extended_attributes.2012-06-10T11:59:47+09:00.snapshot file_statistics.2012-06-09T13:08:16+09:00.data.gz file_statistics.2012-06-09T13:25:16+09:00.data.gz file_statistics.2012-06-09T13:32:05+09:00.data.gz file_statistics.2012-06-10T11:59:47+09:00.data.gz increments increments.2012-06-09T13:08:16+09:00.dir increments.2012-06-09T13:25:16+09:00.dir increments.2012-06-09T13:32:05+09:00.dir mirror_metadata.2012-06-09T13:08:16+09:00.diff.gz mirror_metadata.2012-06-09T13:25:16+09:00.diff.gz mirror_metadata.2012-06-09T13:32:05+09:00.diff.gz mirror_metadata.2012-06-10T11:59:47+09:00.snapshot.gz restore.log session_statistics.2012-06-09T13:08:16+09:00.data session_statistics.2012-06-09T13:25:16+09:00.data session_statistics.2012-06-09T13:32:05+09:00.data session_statistics.2012-06-10T11:59:47+09:00.data ak@ak-Prime-Series:/var/backup/aaa % cd rdiff-backup-data/ ak@ak-Prime-Series:/var/backup/aaa/rdiff-backup-data % pwd /var/backup/aaa/rdiff-backup-data ak@ak-Prime-Series:/var/backup/aaa/rdiff-backup-data %