nDiki : Perl

Perl

Naneyがよく使用しているプログラミング言語。 この nDiki を提供している DiKickerPerl で記述されている。

ちなみに ``Perlプログラミング言語を指し、``perl はその実装を指す(perlfaq1)。

ライブラリ

WindowsPerl

PerlGUI

スポンサード リンク

2018年3月23日 (金)

今日のさえずり: そういえば、東日本大震災東京タワー曲がったよね

2018年03月23日

  • 08:00 そういえば、東日本大震災東京タワー曲がったよね。
  • 19:33 ほー、ウェザーニューズは Perl を使ってるんだ。そして社名はウェザーニュースではなくてウェザーニューズなのね。
[ 3月23日全て ]

2018年7月30日 (月)

今日のさえずり: Google マップの「通勤時にいつも使う経路はどれですか?」で自分が使っている経路が選べるようななるのずーっと待ってる

2018年07月30日

[ 7月30日全て ]

2018年10月14日 (日)

Marked 2 で Markdown プレビュー時に自動的に画像を探すようにした

image:/nDiki/2018/10/14/Marked-2-1200x900.png

ライティングアプリ Ulysses for Mac では画像ファイルのプレビューがいい感じじゃなかったので、 Markdown プレビューアの Marked 2 を使うことにした。

Marked 2 は相対パス指定・絶対パス指定のローカルの画像ファイルや URL で指定したネットワーク上の画像もきちんと扱ってくれるので便利だ。

画像ファイルをどこにおいておくか

さて Markdown ファイルから参照している画像ファイルをどこに置いておくか。Markedown ファイルと同じディレクトリに置くのが素朴だが以下の点で却下。

  • Markdown ファイルを別のディレクトリに移動する時に参照している画像ファイルを一緒に動かすのが面倒。
  • Markdown で書いた日別のノートファイルがたくさんあるようなディレクトリでは画像ファイルが邪魔。

別のところにまとめて置いておくのがよさそうだけれど、そうするとパス指定の問題が出てくる。ファイル移動時の参照書き換えをするは面倒なので嫌。

どうしようかなと思っていたら、 Marked 2 のプリプロセッサ機能で画像のパスを書き換える例を発見。その記事ではローカルホストでのプレビュー時とサイト公開時とでパスが違うことの解決に利用していたんだけれど、ローカルホスト上でも応用できるな。

パス指定はプリプロセッサにやらせてしまえばいいじゃない。画像ファイル名をユニークにしておき(もともとそうしている) Markdown ファイル上ではそのファイル名だけで画像参照として書く。プレビュー時に画像ファイルをローカルホスト上で検索して見つかったパスで書き換えてやれば良いなと。

さっそく Perl プログラムとしてプリプロセッサを作成。 Markdown ファイル中の画像参照があったら、Markdown ファイルのあるディレクトリレクトリ以下および指定したパス以下のディレクトリから File:Find::find で探し、見つかればそのパスに書き換えるようにしてみた。

あ、これ便利。

画像ファイルをいちいち Markdown ファイルの近くにエクスポートするとか、一緒に移動させるとかする必要なくてめちゃくちゃいいわ。

[ 10月14日全て ]

2018年10月23日 (火)

今日のさえずり: どんより小雨パラパラ

2018年10月23日

[ 10月23日全て ]

2018年10月30日 (火)

JavaScript コードで TaskPaper ファイルにノートを挿入する

ちょっとしたメモを Alfred for Mac から一発で TaskPaper ファイルに挿入したい。Packal 上に TaskPaper のための多機能な Alfred Workflow があるので入れたんだけれど、うまくタスク追加ができないことがあるので、自前でスクリプトを作って Alfred から呼ぶことにした。

TaskPaper ファイルはテキストファイルなので書き慣れている Perl でスクリプトを書いてもいいんだけれど、 編集の競合が避けられるし parser も書かなくて済むしということで TaskPaperAPI を使うことにした。

JavaScript for Automation (JXA) を使えば JavaScript コードで TaskPaper API を呼べるっぽい。

以下指定した TaskPaper ファイルに Inbox: プロジェクトがなければ追加した上でその子供としてノートを挿入するコード(エラー処理割愛。実際にはタイムスタンプとかもノートにつけるようにした)。

 #!/usr/bin/env osascript -l JavaScript

 function TaskPaperContext(editor, options) {
   let inbox = editor.outline.evaluateItemPath("//Inbox:")[0];
   if (!inbox) {
     inbox = editor.outline.createItem("Inbox:");
     let projects = editor.outline.evaluateItemPath('@type = project')
     if (projects.length == 0) {
         editor.outline.root.appendChildren(inbox)
     } else {
       editor.outline.root.insertChildrenBefore(inbox, projects[0]);
     }
   }

   let items = ItemSerializer.deserializeItems(options.text, editor.outline, ItemSerializer.TEXTMimeType)
   editor.setCollapsed(items[0])
   inbox.appendChildren(items, inbox.firstChild)
 }

 function run(argv) {
   Application('TaskPaper').open(argv[0]).evaluate({
     script:TaskPaperContext.toString(),
     withOptions: {text: argv[1]}
   })
 }

これを inbox.scpt というファイルで保存し実行権限を与えれば

 ./inbox.scpt $HOME/tmp/test.taskpaper こんにちはこんにちは!!

という感じで呼び出せるようになる。

あとは Alfred Workflow を作ってそこからこのスクリプトを実行すれば OK だ。

[ 10月30日全て ]

2018年11月5日 (月)

今日のさえずり: 年末調整 2018 クエストクリア!

2018年11月05日

[ 11月5日全て ]

2018年11月6日 (火)

今日のさえずり: 秋葉原って勤務地としていい場所だよなー。ヨドバシカメラあるし。

2018年11月06日

[ 11月6日全て ]

2019年2月14日 (木)

今日のさえずり: 間違いない、奴だ、奴が来たんだ! (月曜日の朝からくしゃみが出始めた)

2019年02月14日

[ 2月14日全て ]

2020年1月24日 (金)

Flickr Pro をやめることにする

2018年に $44.95(2年)で更新した Flickr Pro、来月の更新は $49.99(1年)かーと思っていら、一昨日に $59.99(1年)に値上げするというメールが……。

2005年2月に登録し、その年の5月には Flickr Proアップグレード。ここ最近はほとんどアップロードしなくなったけれど「nDiki 上の過去記事の多くで Flickr 上の写真を表示している」のと「Twitter に投稿した Flickr への URL をデッドリンクにしたくない」のとで Flickr Pro を維持してきた。

nDiki 上の記事の写真の移行が進んでいないのでもう1回更新かなあと思っていたのだけれど、さすがにこの金額はもう無理。2月4日の更新前に移行作業をやりきることにした。

写真をエクスポートする

Flickrアップロードする写真自体は全部ローカルにあるので失っても問題ない。

だけれど Flickr (Pro) をやめることで写真削除となった時に、Flickr 上でのフォト ID に対応する写真がどれだったが分からなくなるのは困る。ということで Flickr からまず写真をエクスポートすることにした。

Account settings ページの「Request my Flickr data」でまずダウンロードリクエストを行う。準備ができるとダウンロード用のリンクがそこに表示される。

自分の場合は「Account data」の ZIP ファイルが1つと「Photos and videos」に ZIP ファイルが7つできた。

前者はメタデータなどが入っており、後者には写真動画ファイル(以下写真ファイル)そのものが入っている。全部で 3,052 写真ファイルだ。

写真ファイルの名前を「<フォト ID>.拡張子」にする

写真ファイルのファイル名に微妙にタイトルが入っていたり入っていなかったりと統一されておらず扱いづらい。幸い必ずフォトID(7桁以上の数字列)が含まれていたので、リネームスクリプトを Perl で書いて「<フォト ID>.拡張子」に変換した。

画像を回転する

www.naney.org に転送してそのまま nDiki に貼れるように Exif Orientation をみて画像を回転させる。

 jhead -autorot *.jpg

画像をリサイズする

nDiki では画像ファイルの画像サイズは長辺 1,200px ピクセル以下にするようにしている(記事)。長辺が指定サイズより大きい画像ファイルだけをまとめてリサイズできる Th-MakerX

を利用した。

www.naney.orgアップロード

出来上がったファイルを1つのディレクトリに入れて www.naney.orgアップロード(同期)。これで Flickr 上にあった写真(を調整したもの)を www.naney.org 上に置くことができた。

nDiki の過去記事で Flickr 上の写真を表示させているものをいくつか編集して www.naney.org 上の写真を表示するようにしてみたところうまくいっている感じ。

思ったより早く移行できちゃうかも。

[ サブスクリプションサービス ]

[ 1月24日全て ]

2020年1月25日 (土)

さよなら Flickr

nDiki 上の過去記事の多くで Flickr 上の写真を表示している」のと「Twitter に投稿した Flickr への URL をデッドリンクにしたくない」のとで Flickr Pro を維持してきた(記事)のだけれど、繰り返す値上げにはついていけないのでやめることにした。

Flickr からエクスポートして www.naney.org にアップロードするところまで昨日できたので、 nDiki 記事中に表示しているところやリンクしているところを書き換えたり削除したりする。

nDiki 記事中の表示を差し替え

レイアウト崩れがないか確認しつつと思って最初は画像指定を手作業で書き換えていたけれど、時間がかかりすぎそうなので Perl スクリプトを書いて一気に書き換えた。記事データがただのテキストファイルnDiki はこういう時の処理が簡単で良い。

アルバムは削除

アルバム(フォトセット)は16個あったのだけれど、どれも残さなくてもいいかな。必要になったら Google フォト上にでもまた作ればいいかと。

いくつかのアルバムは nDiki 記事からリンクしていたので、それを削除しつつアルバムを削除。

Tweet アーカイブ中のリンクはいったん後回し

自分の Tweet まとめ記事にある Flickr 写真へのリンクはデッドリンクになる。短縮 URL を展開すればフォト ID が割り出せると思うけれども、いったんこれは放置でもいいかな。

Flickr から写真を削除

解決すべき Flickr 依存が無くなった。 Flickr Pro から Free に戻った時点で Free の上限 1,000 を超える写真の扱いがどうなるか良くわからないので、すぱっと全削除しておく。

Flickr の Camera Roll で最初の写真を選択後、最後の写真を shift + クリックして全選択し、削除。

Flickr Pro キャンセル

最後に Account settings で Flickr Pro をキャンセル。

終わった。

Flickr 今までありがとう。

[ サブスクリプションサービス ]

[ 1月25日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.112474s / load averages: 0.31, 0.42, 0.44
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker