nDiki : Perl

Perl

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

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

ライブラリ

WindowsPerl

PerlGUI

スポンサード リンク

2017年5月31日 (水)

今日のさえずり: としまえんって都営大江戸線で行けるんだ

2017年05月31日

  • 09:02 スマートフォンを握ったまま寝落ちして 27:00 起床だった昨晩。さすがに夜は明けてなかった。
  • 09:29弁当買ってみた。 (@ ライフ 渋谷東店 in 渋谷区, 東京都) https://www.swarmapp.com/c/f99OYUfnmEc
  • 13:01 としまえんって都営大江戸線で行けるんだ。乗り換え的に思ったより気軽な経路だ。
  • 16:14nanacoオートチャージ」おっと思ったけれど対象クレジットカードがセブンカード系だけだった。無理。
  • 16:25 Perl 5.26.0 出ましたね。
  • 17:07 @mkamimura 周囲で Perl 6 で書いている人見かけないですね……。
  • 18:41 「ただの Vim か。ちくちょう。」
  • 19:28 チームに新しく入ったエンジニア、 Vim 使いだったので vim -y での起動をお勧めしました。
  • 19:30 FacebookAndroid 4.0.3 以上か。
  • 21:38 牧場しぼり ラムレーズン、自分には酒感が強くてもういいかなという感じ。やっぱバニラ。
[ 5月31日全て ]

2017年7月19日 (水)

Perl の Date::Calc::Mktime() の 2038年問題(仕様)

Perl で書かれているシステムで未来の年を使うと不具合が起きるという報告をもらいました。 perl 5.12.0 で Perl コアの時刻関係の関数は2038年問題クリア済みとなっているし、どこでひっかかっているのかなとコードを追ったら Date::Calc::Mktime() が out of range を返していました。

Date::Calc 6.4 のドキュメントにこのことは明記されているしきちんと入力値チェックもされているので、ライブラリ的には問題無く仕様ですね。

対応方法はこれから検討です。

[ 7月19日全て ]

2017年9月15日 (金)

Perl バージョンと perl バージョンの表記

Perlプログラミング言語を指し、 perl は Perl で書かれたプログラムを実行するプログラムというには良く知られています。

Perl 5.6.0 から v1.2.3.4 というリテラル形式が v-strings が出てきたので Perl v5.6.0 のように表記したりしていたのですが、調べてみると v-strings でバージョン番号を示しているのは perl に対しての場合が多く (perl -v でも v-strings で出力される)、Perl については v はつけない方がほとんどでした。

なので nDiki での Perl バージョン表記する際は v をつけないように修正・統一してみました。

[ 9月15日全て ]

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月22日 (木)

今日のさえずり: もしかして再来週には新卒入社か。春だなー。

2018年03月22日

  • 08:00 MacBook Pro の VLC を 3.0.1 にしたら Chromecast にストリーミングできた。 http://bit.ly/2FSpIo4
  • 08:03 RT @bonnu: はるか昔、初めて Perl を学ぶ時に読んだ本に載ってる内容のうち一つが「DBD を作ってみましょう」だったの、題材が秀逸だったなぁ。あれはよかった。
  • 09:47 図書館の本を返却してからの出社。 (@ 株式会社ミクシィ (NBF渋谷イースト) in 渋谷区, 東京都) https://www.swarmapp.com/c/2eQ7IEwedmO
  • 21:54 RT @sseze: 去年の今ぐらいの時間に当時好きだった子に告白してOKもらったのが人生でもっとも幸福度の高い誕生日だった。そこからの今年は独り誕生日。人生山あり谷ありだ。
  • 22:27 もしかして再来週には新卒入社か。春だなー。
  • 23:59 ポチった。
[ 3月22日全て ]

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

About Me

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

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

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

follow us in feedly

月別インデックス
Process Time: 0.156032s / load averages: 0.42, 0.63, 1.02
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker