nDiki : Perl

Perl

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

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

ライブラリ

WindowsPerl

PerlGUI

スポンサード リンク

2018年1月24日 (水)

今日のさえずり: 久しぶりに Perl で集計スクリプトを書いら指があまり踊らなくてちょっとショック

2018年01月24日

  • 11:24 Google スプレッドシートのテンプレートに「2018 年カレンダー」というのがあるので使ってみた。見た目なかなかきれい。他のドキュメントやスプレッドシートと同じフォルダに入れて共有する用途に良さそう。
  • 16:00 久しぶりに Perl で集計スクリプトを書いら指があまり踊らなくてちょっとショック。目的の集計はできたからいいけど。あとでスクリプトは手直ししておくかなー。
  • 22:01 PowerPoint でこの間編集していたファイルを開いたら「お帰りなさい。」って表示が出てホラーかと思った。
  • 22:01 あ、今日と明日、亀戸天神社の「うそ替え神事」だ。
  • 22:29 “昔の日記、見せられる? mixiが招待制だったころの話 | スタッフブログ | マイネ王” http://bit.ly/2n75uvb
  • 24:02 1月26日(金) 9:00 で病院予約完了。花粉症をもらってきておく。
[ 1月24日全て ]

2018年3月10日 (土)

今日のさえずり: 久しぶり。学びにきた。

2018年03月10日

[ 3月10日全て ]

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日全て ]

About Me

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

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

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

月別インデックス
Process Time: 0.103623s / load averages: 0.11, 0.22, 0.23
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker