まず本年(2018年)4月以降の投稿記事を一覧でご紹介します。
2018年04月03日10時46分の登録: # 小木港東一文字で釣れた40センチ前後のサバの写真を調べていて発見した、前日2017年4月4日撮影の金沢地方検察庁からの処分通知書のスマホ撮影写真 # http://hirono2017kk.blogspot.com/2018/04/40201744.html>
2018年04月03日12時00分の登録: # 「優秀なヤメ検もいるし(例えばさっきコメンテーターをしていた落合洋司)」という江川紹子氏にも向けた高島章弁護士のツイート # http://hirono2017kk.blogspot.com/2018/04/blog-post.html>
2018年04月03日12時00分の登録: # 高島章弁護士(新潟県弁護士会)による、新潟県新発田市の連続強姦致死事件、金玉踊り、金玉神社、新潟水俣病裁判のとりあえずのご紹介 # http://hirono2017kk.blogspot.com/2018/04/blog-post_3.html>
2018年04月03日16時34分の登録: # 郷原信郎弁護士@nobuogoharaのツイートのデータベース記録状況の確認 # http://hirono2017kk.blogspot.com/2018/04/nobuogohara.html>
2018年04月03日17時06分の登録: # 「甘利」をキーワードにした郷原信郎弁護士のツイートの記録 # http://hirono2017kk.blogspot.com/2018/04/blog-post_99.html>
2018年04月03日17時38分の登録: # 【「刑事免責」導入で文書改ざん問題の真相解明を】という郷原信郎弁護士のブログ記事を紹介するジャーナリスト江川紹子さんのツイート # http://hirono2017kk.blogspot.com/2018/04/blog-post_28.html>
2018年04月04日09時34分の登録: # 「第三者委員会」をキーワードにしたジャーナリスト江川紹子さんのツイートの記録 # http://hirono2017kk.blogspot.com/2018/04/blog-post_4.html>
2018年04月04日09時35分の登録: # 「野党の追及よりずっと厳しい大阪地検の女性特捜部長は何者か│NEWSポストセブン」というネット記事を読んでの感想 # http://hirono2017kk.blogspot.com/2018/04/news.html>
2018年04月04日09時36分の登録: 2018-03-29-113615_籠池氏と佐川氏の証人喚問における補佐人について、ジャーナリスト江川紹子さんのツイートから見る、落合洋司弁護士(東京弁護士会)を http://hirono2017kk.blogspot.com/2018/04/2018-03-29-113615.html>
2018年04月06日22時00分の登録: # 平成11年の建設・建築現場への日雇い派遣の仕事、その中でも一番長く通った金沢市山科の河川の災害復旧工事の現場 # http://hirono2017kk.blogspot.com/2018/04/11_74.html>
2018年04月06日23時15分の登録: # 不思議なタイミングでの「かぐや姫の物語」高畑勲監督死去のニュースと、初めに能登町天坂のラーメン店のテレビで知った医王山遭難事故のニュース # http://hirono2017kk.blogspot.com/2018/04/blog-post_6.html>
2018年04月19日16時57分の登録: # 桜の名所としてテレビで紹介されていた金沢の高尾城址と宇出津の遠島山公園に共通する「じょうやま」という呼び名から思い出した月見御殿の姫のお話 # http://hirono2017kk.blogspot.com/2018/04/blog-post_19.html>
2018年05月01日17時51分の登録: # 能登町藤波の海蔵院末薬師堂と輪島市門前町の高尾山、宇出津の天徳寺と祖父母の関係、実行しなかった京都の母親の妹からの頼まれごと # http://hirono2017kk.blogspot.com/2018/05/blog-post.html>
2018年05月03日15時06分の登録: # 急遽記録措置を決定したジャーナリストの江川紹子さんと清水潔氏のツイート、福岡の初めてのセクハラ裁判と同じく福岡県で起こった飯塚事件のシンポジウム # http://hirono2017kk.blogspot.com/2018/05/blog-post_3.html>
2018年05月03日16時42分の登録: # ジャーナリストの江川紹子さんと清水潔氏の「飯塚事件」をキーワードに含むツイートのまとめ # http://hirono2017kk.blogspot.com/2018/05/blog-post_43.html>
2018年05月04日13時29分の登録: 2018-05-04-124341_データベースの問題を発見、後から追加された重複ツイート1932件を削除で対処 http://hirono2017kk.blogspot.com/2018/05/2018-05-04-1243411932.html>
2018年05月06日12時19分の登録: # 記録作成措置としての弁護士等ツイートのまとめ記事におけるタイトル名の書式変更について # http://hirono2017kk.blogspot.com/2018/05/blog-post_6.html>
2018年05月06日18時54分の登録: # 「奥村先生の凄さがわからないから、悪徳弁護士とか言っちゃう人がいるんだな。」と奥村徹弁護士を評価するモトケンこと矢部善朗弁護士(京都弁護士会)のツイート # http://hirono2017kk.blogspot.com/2018/05/blog-post_89.html>
数は数えていませんが、中断が多く個々の小項目に盛り込みすぎたと思う割には、けっこうな数になっていて、正直本当なのかと少々驚きました。やはり数を調べておきましょう。
[3104] % kp -p| egrep '^\[link\:\] 2018年0[4,5]月.*' | wc -l
18
結果は18件でした。年月日時分の登録となっている時間は、Bloggerで記事が最終更新された時刻です。APIで投稿したものを編集し直して更新することは、まずないのですが、すぐにちょっとした訂正をすることもあるかもしれないと思い最終更新時の取得時刻を使っています。
GoogleAPIを使ってBloggerの情報を取得し、それをデータベースに登録しているのですが、記事の作成時刻と最終更新時刻の値が別の変数として取得できます。次の自作のコマンドを実行することでデータベースへの登録作業を行っています。
PYTHONIOENCODING=utf-8 api-blogger_hirono2017kk.py 139 > bl.txt && insert-blogger_hirono2017kk.rb bl.txt
他にも対処法はあったように思いますが、pythonでは、日本語を含んだ文字列をリダイレクトとするとエラーが起こることがあるので、事前に環境変数にUTF-8の文字コードを指定しています。多めに見積もって取得する件数を139件としています。bl.txtは作業用の一時ファイルです。
数日前に書いたと思うのですが、Ubuntu1804に移行してから、ローカルのJekyllからのgitのデプロイで、GitHub Pagesの更新が出来なくなってしまいました。どちらもMarkdownのマークアップ言語を前提にしたレイアウトとなっています。
Bloggerの方は、Markdownとは無関係なのですが、APIでの投稿の際に、独自に作成したストリームのフィルターをかますことで、HTMLやCSSのレイアウトを適用しています。あくまで基本はただのテキストファイルで、それに最も近いのがMarkdownの書式です。
具体的には次の内容のファイルを使っています。やっていることは文字列の置換ですが、少々複雑です。今ならもっとましなものが作れると思うのですが、難儀して時間も費やしました。
[3069] % cat h-local-bin/qt_kpost_css.sh
#!/bin/bash
f=$1
#
cat $f | ruby -e 'puts readlines.join.gsub(/^((\* リツイート:.+?>) (https:\/\/[^ ]+?) >) \n(.+?)\n\n/m) {"<span style=\"background-color: #F8E0E6;>\">" + $1 + "</span>\n<div style=\"color: #FF00FF; font-size: 11px;\">" + $4 + "</div><blockquote class=\"twitter-tweet\" data-lang=\"ja\"><p lang=\"ja\" dir=\"ltr\">#{$3}<a href=\"#{$3}\"></a></blockquote><script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\n<br />"}' \
> temp && mv temp $f
cat $f | ruby -e 'puts readlines.join.gsub(/^((\* ツイート:.+?:) (https:\/\/[^ ]+?) :) \n(.+?)\n\n/m) {"<span style=\"background-color: #F7F8E0;>\">" + $1 + "</span>\n<div style=\"color: #848484; font-size: 11px;\">" + $4 + "</div><blockquote class=\"twitter-tweet\" data-lang=\"ja\"><p lang=\"ja\" dir=\"ltr\">#{$3}<a href=\"#{$3}\"></a></blockquote><script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\n<br />"}' \
> temp && mv temp $f
#sed -i -E '/^\* ツイート:.*$/N; :loop; /\n$/{N; b loop}; s/^((\* ツイート:.*[:>]) (https:\/\/[^ ]+) [:>] .*(> .*))/<div style="color: #A4A4A4; font-size: 11px;">\1<\/div>\n<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">\2<a href="\2"><\/a><\/blockquote><script async src="https:\/\/platform.twitter.com\/widgets.js" charset="utf-8"><\/script>/' $f
sed -i '/^$/N; :loop; /\n$/{N; b loop}; s/\n\(> .*\)/\n<blockquote>\n\1/' $f
sed -i '/^> .*$/N; :loop; /\n$/{N; b loop}; s/> \(.*\)\n\n/\1\n<\/blockquote>\n\n/' $f
sed -i '/^$/N; :loop; /\n$/{N; b loop}; s/\n```/\n<pre><code class="bash">/' $f
sed -i '/^```$/N; :loop; /\n$/{N; b loop}; s/```\n\n/<\/code><\/pre>\n\n/' $f
sed -i 's/^> //' $f
sed -i 's/\[link:\] \(.\+\) \(http.\+\)$/<span style="color: #01DFA5; font-size: 12px;">\1 \2<\/span>/' $f
sed -i 's/$/<br \/>/' $f
sed -i '/^<pre><code class=.*$/,/^<\/code><\/pre>.*$/s/<br \/>//' $f
sed -i 's/<pre>/<pre style="font-size: 9px;">/' $f
sed -i 's/^\(#\+ .* #\+\).*$/<span style="background-color: #0c343d; color: white;">\1<\/span><br \/>/' $f
sed -i 's/^\(\*\*\*>>\)\(.*\)\(>>\*\*\*\).*$/<span style="background-color: #FBF2EF;">\1<span style="color: #cc0000;">\2<\/span>\3<\/span><br \/>/' $f
sed -i 's/^\(\*\*\*<<\)\(.*\)\(<<\*\*\*\).*$/<span style="background-color: #FAFAFA;">\1<span style="color: #00BFFF;">\2<\/span>\3<\/span><br \/><br \/><br \/><br \/>/' $f
#***>>2017-11-08(水曜日)15:29_[これからの記述範囲の開始時刻]>>***
# sed -e '/^$/N; :loop; /\n$/{N; b loop}; s/\n\(> .*\)/\n<blockquote>\n\1/' \
# -e '/^> .*$/N; :loop; /\n$/{N; b loop}; s/> \(.*\)\n\n/\1\n<\/blockquote>\n\n/' \
# -e '/^$/N; :loop; /\n$/{N; b loop}; s/\n```/\n<pre><code class="bash">/' \
# -e '/^```$/N; :loop; /\n$/{N; b loop}; s/```\n\n/<\/code><\/pre>\n\n/' \
# -e 's/^> //' $f
一つだけTwitterに投稿しました。[link:] を記しにして、リンクと文字列の色付けを行っている部分です。独自のアイディアですが、ネットでは見かけることがありません。使っている人は使っていると思いますし、情報があっても目には触れづらいのかと思います。
なお、WordPressだとAPIの投稿と当時に、返却された記事のIDを使ってデータベースへの登録処理ができるのですが、Bloggerでは時分の調べた範囲で方法を見つけ出すことは出来ませんでした。
Markdownですが、近年、ネットで需要を多く見かけます。はてなのブログなどはMarkdownの書式を優先させており、簡単に目次を作ることも出来ます。[:contents]と記述するだけです。はてな、は以前より、はてな記法が使えるサービスとなっていました。
最近は見かけなくなっていますが、Wiki記法も主流の時代がありました。Markdownはそれに似ていると思いますが、より簡潔になっているという気もします。
個人的にはEmacsを使っているのでorg-modeの方が扱いやすいのですが、汎用性を重視してMarkdownを使うようになりました。Markdownでは半角の#を行頭に置くことで、#の数に応じた見出しの階層化が簡単に出来ます。
私はEmacsでMarkdownのモードを使っています。mdと拡張子のあるファイルは、そのモードとして開かれます。1階層目の見出しを作るには、カーソルのある対象の行で「C-c C-t 1」とキーボードを打ちます。数字の数に応じて階層が変わりますが、私は1階層のみにしています。
このMarkdownでの1階層目の見出しが、私の言うところの「小項目」です。そして、一つのMarkdownのファイルをエントリーとしています。ページ内の階層を1つに限ったのも、ややこしい複雑化を避けるためです。時間が経つと忘れることも多いので、シンプルに行こうと決めました。
小項目は、Emacsでカーソル位置のある直近の見出しを、見出しをタイトル名としてBloggerに投稿しています。Emacs-Lispで作成した独自の関数とキーバインドしているので、CAPS-]とキーボードを打つことでBloggerへの投稿を行っています。省力化です。
現在、エントリーとなるファイルの作成には、g-create-entry-github_pages.shというスクリプトを使っています。第一引数の文字列が、mdの拡張子の後付でファイル名としてファイルが生成されます。
具体的には、次のようなコマンドの実行になります。
g-create-entry-github_pages.sh 江川紹子氏と清水潔氏に見るジャーナリストとしての社会的役割と使命の実績、疑問点の多い警察・検察・裁判所批判に懸念される本件告発事件に対する悪影響
上記のコマンドの実行で生成されるのが次のファイルになりますが、生成前にコマンドラインの対話で、タグとカテゴリーの指定を行い、それをJekyllのYMLデータとしてヘッダー部分をファイルに書き込んでいます。
2018-05-03-082727_江川紹子氏と清水潔氏に見るジャーナリストとしての社会的役割と使命の実績、疑問点の多い警察・検察・裁判所批判に懸念される本件告発事件に対する悪影響.md
ファイル名の行頭に日付と時刻を入れていますが、これはディレクトリ(Windowsパソコンのフォルダ)内での、ファイル名の並び順にもなります。
気をつけるのはファイル名の文字列の長さと、ファイル名には使えない特殊文字の扱いです。そういえば昨日の夕方、テレビで見た「能登比咩神社」の「咩」の漢字が表示できないという情報を見ました。
ファイル名の文字数もPATH全体の文字数に影響を受け、ファイルシステムによって異なるという情報を見ています。私はLinuxで標準のext4のファイルシステムを使っていますが、Windowsパソコンの主流のファイルシステムはNTFSで、文字コードもLinuxとは異なります。
Linuxの文字コードはUTF-8ですが、これはインターネットの標準の文字コードのより近いのではと考えています。
私もつい最近、Ubuntu1804への移行時のトラブルで初めて知ったのですが、「utf8mb4」が絵文字にも対応しているとのことです。バイト数が異なるので扱える文字数にも違いがあるという話ですが、以前より不安に感じていた特殊文字について理解を深めることが出来ました。
他に「機種依存文字」という以前より問題があるはずなのですが、LinuxであるUbuntuの環境では問題に遭遇したことがなく、めったに使うことのないWindowsのパソコン環境では確認もしていないので、多少気にかけてはいます。
最近は、Twitterのプロフイールの名前でも絵文字の使用をよく見かけるようになりました。以前は、プログラムの処理でエラーを起こす可能性を高めるための嫌がらせではないかと考えることもありました。
あと、大事なことですが、エントリーとしてのファイルの数はなるべく増やさない方針です。エントリーとそれに含まれる小項目の内容の整合性も重視しないことにしました。細かく振り分けを考えるとややこしくなったり、書いておきたいことを躊躇する傾向が強くなっていたからです。
エントリーとそれに含まれる小項目は、時系列を重視、優先することとしました。いずれも下書きのようなもので、内容と記録を最優先事項と致します。
のちのちは、必要があれば、その場の状況に応じて、ファイルの内容を小見出しを単位として別のファイルとして書き出すことも考えています。スクリプトを作ればそう難しいことではないと考えていましたが、比較的最近になってcsplitというコマンドが標準でUbuntuにあることをしりました。
次のようにテストの実行済みです。
[3077] % grep csplit history/*
history/history-20180429.txt: 8486 csplit /^#{1,4}.+#{1,4}$/ 2018-04-04-100838_高尾城址から振り返る、平成9年から平成11年の被害者安藤文さんの父親安藤健次郎さんとの関係・告発に至る経緯.md
history/history-20180429.txt: 8487 csplit 2018-04-04-100838_高尾城址から振り返る、平成9年から平成11年の被害者安藤文さんの父親安藤健次郎さんとの関係・告発に至る経緯.md /^#{1,4}.+#{1,4}$/
history/history-20180429.txt: 8488 csplit 2018-04-04-100838_高尾城址から振り返る、平成9年から平成11年の被害者安藤文さんの父親安藤健次郎さんとの関係・告発に至る経緯.md /^\#{1,4}.+\#{1,4}$/
history/history-20180429.txt: 8489 csplit 2018-04-04-100838_高尾城址から振り返る、平成9年から平成11年の被害者安藤文さんの父親安藤健次郎さんとの関係・告発に至る経緯.md /^#/
history/history-20180429.txt: 8490 csplit 2018-04-04-100838_高尾城址から振り返る、平成9年から平成11年の被害者安藤文さんの父親安藤健次郎さんとの関係・告発に至る経緯.md /^#/ {*}
失敗しているものも含まれているかもしれません。実行したコマンドは、このようにテキストファイルとして保存するようにしています。
エントリーのファイルの投稿のは、kpost.pyというスクリプトを使っています。投稿する内容のファイル名を引数に指定しています。次が実行例です。
kpost.py 2018-05-04-124341_データベースの問題を発見、後から追加された重複ツイート1932件を削除で対処.md
2018年05月04日13時29分の登録: 2018-05-04-124341_データベースの問題を発見、後から追加された重複ツイート1932件を削除で対処 http://hirono2017kk.blogspot.com/2018/05/2018-05-04-1243411932.html
ファイルの拡張子はブログのタイトル名から取り除いているようです。Twitterの文字数が常に気がかりなので、文字数というのは極力少なくするようにしています。
0 件のコメント:
コメントを投稿