ひまつぶし雑記帖

CotEditorからjavascript(JXA)経由でperlへ

2015/9/8 [08:45:50] (火) 天気

CotoEditorで昨日書いたapplescriptと同じことをするjavascript(JXA)を書いたのでメモ。

YosemiteからはOS標準でJavaScript for Automation (JXA)が使えるようになった。
歴史的な流れとしては、HyperCardのHyperTalkからapplescriptへ、applescriptからjavascriptへということらしい。これらは乱暴に理解すると、unixでのシェルスクリプトやWINDOWSのバッチファイルみたいなもの、か。いや、macのことはよく知らない。

こちら、 『JavaScript for Automation (JXA)』鳶嶋工房 がとても参考になった。

これからはjavascriptだというし、初めてでよくわからなかったapplescriptよりは多少いじったこともあるjavascriptの方がたぶん早いだろうと、昨日applescirptで書いたばかりだけど、javascriptで書き直した。

ここんとこいじってるスクリプト、マクロはxyzzyもCotEditorのスクリプトも身も蓋もない言いかたをすると「シェルに渡すためのコマンドライン文字列を生成するだけ」のもの。

実際の作業はperlのスクリプトが担当なのでマクロやスクリプトでは難しいことは何もしていない。

javascirpt(JXA)版スクリプト

CotEditorのスクリプトとして使うには
・ファイル名(拡張子)「.js」
・ファイルの一行め「#!/usr/bin/osascript -l JavaScript」
この2点が必要。



HOMEディレクトリ(のpath)を取得するのに、わざわざstdlib使うのって大袈裟な感じやな、とか思ったりしつつ、アプリをいじるための呪文
var app = Application("CotEditor");
app.includeStandardAdditions = true;
を入れてプロパティを調べるぐらいで、後はほんとJavascript。
わたしの慣れの問題で当たり前の話、applescriptよりJavascirptの方が格段にわかりやすい。わからないところ・書き方などはJXAというかJavascirptで検索すれば情報豊富で解決も早い。

今回、macの「スクリプトエディタ.app」が手軽・便利で大助かりだった。変数に何が入ってるのかを見られたり、エラーチェックできて、こんなアプリがあったとはちょっとした発見&驚き(今さら感)

ただ、残念なことに、このJavascript版はosascriptで使うと
warning: failed to get scripting definition from /usr/bin/osascript; it may not be scriptable.
という警告が毎回出てしまう。いちいちコンソールが出て警告されるのは鬱陶しいけどしかたがないらしい。
こちらが参考になった→ 『JXAの「Error: A privilege violation occurred」の回避』

せっかくだけど、昨日のapplescriptはお蔵入り・塩漬けだなあ。

image 

»電子書籍制作代行についてはこちら

CotEditorからapplescript経由でperlへ

2015/9/7 [18:53:38] (月) 天気

applescriptというのを初めて触ってみた。
平文でわかりやすいシェルスクリプトて感じ、かな。

WINDWOSのxyzzyでやってるのと同じこと、ほぼ近いことをmacのCotEditorでもやりたい、ということでスクリプトメニューにperlのスクリプトを登録。これは気軽手軽に思ったことができるのでありがたい。外部のスクリプト、perlじゃなくてもrubyやphp、シェルスクリプトが使えるなら万能だ。

ということでやってたんだけど。

外部スクリプトはひとつにして、スクリプト内で処理を振り分けたい。処理単位でスクリプトを作ってスクリプトメニューに登録するとキリがない。それには対話的にユーザー入力をスクリプトで受け取りたい。ユーザーが入力したテキストでも処理を振り分けたい。
→ユーザーの入力を受け取る仕組みが必要。

CotEditorが外部スクリプトの処理した内容を受けとるのは編集中のテキスト上か、あるいは使わないかの2択だけど、外部スクリプトは必ずしもフィルタ的な用途だけじゃない。処理した結果(出力内容じゃなくて、戻り値みたいなもの)を受け取って確認するだけ、とか、選択範囲を処理してその部分をWEBの管理ページにペーストするだけ、とか、できれば元テキストはそのままの状態にしておいて欲しいということもある。
→作業用の新規ドキュメントがあれば助かる。

どちらも、perlやシェルスクリプトなどの外部スクリプトではちょっと難しそう。ていうか、スクリプト側からではアクセスできないこと、かな。

なので、ちょっと調べてみた。
applescriptを使えば、ユーザー入力を取得するdialogを出せる、CotEditorに新規ドキュメントを開くように言うこともできる。

1)テキストに選択範囲があったらば。
dialogを出して、選択範囲のテキストに対してどんな処理をするのか指示を受けとる。
スクリプトに入力されたテキストを引数として渡す。選択範囲のテキストはechoで出力してパイプでスクリプトに流しこむ。
2)選択範囲がなかったら。
ファイル名、パスを見てどんな処理をするのか判断する。
スクリプトにはフルパスのファイル名を引数として渡す。
どちらの場合も出力先は新規ドキュメント「名称未設定」とする。

ごそごそ調べて書いたapplescirpt

↑これを「util-perl.@p.applescript」という名前にして、「~/Library/Application Support/CotEditor/ScriptMenu」フォルダに入れておけばCotEditorで作業していていつでも呼び出せる。

自分環境・自分作業内容に特化したスクリプトで、誰にとっても有用・便利に使えるものではないけど、applescriptにはまったく馴染みがないので、備忘録としてメモしておこう。

明日にはもう忘れているであろう自分のためにもメモが必要なのだ。

[09/07 20:56:44]ちなみに。
applescriptの「do shell script」はスクリプトの標準出力を取得している。
たとえば、perlのスクリプトチェックの「perl -wc」は標準エラー出力。applescriptに出力させるには標準エラー出力(STDERR)を標準出力(STDOUT)に向けてやる必要がある。

perlのスクリプトの中で
open STDERR, ">&", *STDOUT
この1行を該当するサブルーチンに入れておく必要がある。


image 

»電子書籍制作代行についてはこちら

xyzzyとperlの連携でテキスト処理最強環境

2015/9/6 [23:59:56] (日) 天気

こないだからごそごそいじってるxyzzyのマクロとそこから連携するperlのスクリプト。
xyzzyのあまりの便利さ、ラクチンさ、フロントとしての有能さに今さらながら驚いた。もう15年ぐらい使ってるっちゅーのに。

エディタはxyzzy一択だろう(主語:おれ)

自分環境・自分作業内容に特化したマクロなので、誰にとっても有用・便利に使えるものではないけど、備忘録としてメモしておこう。
lispは手強い、というか他とは別モノなので、今回ごそごそ作ってるようなわずか数行のものでもネットで検索しまくり、デフォルトのlispフォルダをgrepしまくってやっと。明日にはもう忘れているであろう自分のためにもメモが必要なのだ。

てことで、先日までのマクロの振り返り。。

1)編集中のバッファの内容をtempファイルに書き出して
2)perlのスクリプトで処理して
3)処理された内容をバッファに読み込む

てところがキモ。

(2)のところ。
今日までは、処理してほしい内容について
(interactive "s[D]elSpace [T]ab4Space [M]akeEPUB [C]heck")
などと、マクロを起動したらperlでどういう処理をして欲しいのか、ユーザー入力を取得してperlに引数として渡すようにしていた。
でも、このユーザー入力のひと手間がけっこう面倒くさい。

面倒くさいものは続かない。そのうち使わなくなるのが目に見えている。
20分ぐらい考えて、macのCotEditorが外部スクリプトの引数に編集中のファイル名(フルパスで)を渡すことを思い出した。この動作をそのままxyzzyのマクロでも使うことにした。

そもそも、マクロを起動したらば。
編集中のファイルの拡張子が.plとか.pmだったらperlのシンタックスチェックをして欲しいし、編集中のファイルがeasy_epubフォルダ以下の.txtファイルだったらeasy_epub.plでEPUB電子書籍を作ってくれ。自分としては、いちいちユーザー入力を待って判定する必要はない。
ファイルと結びつかない新規バッファや*scratch*バッファで作業しているものに関しては、空白の削除やタブを空白4つに変換するなど、その時その場の小ネタ処理で決めうちできないので、ここはユーザー入力で動作を振り分けてもらいたい。

・フルパスのファイル名がわかっているものに関しては、パス・ファイル名を処理・動作の判断にしてくれ。
・ファイル名がわからないものに関しては、指示するからちょっと待てよ。

という自分リクエストを満たしたxyzzyのマクロがこの10行。


やってることは。
01:関数
02:この関数はマクロで呼び出せますよ
03:バッファを書き出すためのtempファイル名の設定
04:編集中のバッファがファイルと結びついてなければどんな処理をするのかユーザー入力待ち
05:tempファイルの削除
06:編集中のバッファをtempファイルに書き出し
07:perlに渡すためのバッチファイル(WINDOWSのダセエところだ)
引数としてフルパスのファイル名と、04の場合の入力された文字。標準入力経由でtemp-file、perlが処理した内容を受けとるところとして「*scratch*」バッファを設定。
08:バッファ全体をマークして
09:バッファをクリップボードにコピー

受けとるperl側は以下。長いのでpackageについては端折るけど。
・フルパスファイル名がわかっているものは、ファイルを読み込んで処理。
・ファイル名がないものは、一行ずつ処理したり、全部読み込んでから処理したり。
(第一引数はファイル名。第二引数がマクロの04で入力した文字)


いやもうほんと滅茶苦茶最強のテキスト処理環境のできあがりだ。
どのぐらい最強かというと、今日まさに立川で観てきた爆音「マッドマックス FR」のお婆ちゃんズぐらい最強だ(実写版ジブリだったなあ)

image 

»電子書籍制作代行についてはこちら

macのキーバインド設定

2015/9/5 [18:08:25] (土) 天気

オサレなmacユーザーは優雅にコーヒーを飲みながらタッチパッドやマウスを駆使するんだろうが、昭和レトロなわたしは麦茶をすすりながらもエディタを使ってる時にキーボードから手を離したくない・ホームポジションにしがみつきたい。

なんでタブを入れるのにいちいちタブキーなわけ?control+iにしてくれよ。
なんで改行するのにいちいちエンターキーなわけ?control+mにしてくれよ。
てことだ。

検索してみるとやはりmacの(というかcocoaの)キーカスタマイズ記事がかなりヒットした。
こちらの 『テキスト編集のキー操作を自在にコントロールする』 が丁寧でわかりやすい解説と有用なリンクがあってオススメ。

システム全体のキーバインド設定は
→「/System/Library/Frameworks/AppKit.framework/Versions/C/Resources/StandardKeyBinding.dict」

でも、こいつはテキストエディタで開くと文字化けして何のことやら皆目見当もつかないし、システム全体のものをいじるのはおっかないので、自分専用のキーバインド設定ファイルを使うことができる。
→「~/Library/KeyBindings/DefaultKeyBinding.dict」

わたしのmac OS 10.10.3にはディレクトリもファイルもなかったので
ホームディレクトリの下の「Library」フォルダに
「KeyBindings/DefaultKeyBinding.dict」を作成した。上記サイトを参考にcontorl+iでタブ入力というのだけの設定ファイル。
→{ "^i" = "insertTab:" }

その後「KeyBindingsEditor」というGUIでキーバインドの設定、キーカスタマイズができるアプリをダウンロードして(https://www.cocoabits.com/KeyBindingsEditor/)DefaultKeyBinding.dictに設定追加していった。

できあがったDefaultKeyBinding.dictが以下。xmlなのでわかりやすい。

これで、emacsもどきでxyzzyもどきとなった。
contol+xをプレフィックスキーにしたキーバインディングなんかも実現できる。

・control+spaceでカーソル位置をマーク
・control+iでタブ入力
・control+mで改行
・control+zでページアップ
・conrol+x control+vで文書末尾にジャンプ
・conrol+x control+zで文書先頭にジャンプ
・conrol+x uでundo

このあたり、よく使うものを設定した。

ただ、
control+x control+f→ファイルオープン
control+x control+s→ファイル保存
control+x control+w→別名保存
なんかが効かないなぁ。ファイル操作系は別なのかな。

しかし、これだけのことで格段に使いやすくなった。
日頃使うエディタのキー入力でストレスが減るのは本当にありがたい。
もちろん、出先のパソコンは、効率が落ちても、デフォルトで使うしかないけど、ウチで使うものに関しては「手に馴染んだやりかた」で使いたい。


以上、んなもん、とっとと設定しろよ、なにを今さら、という話。
image

»電子書籍制作代行についてはこちら

ゴミ屋敷の整理

2015/9/4 [18:18:30] (金) 天気

季節の変わり目だし、今日は各種バックアップ。
仕事系のディレクトリをzipでまとめて、USBメモリに。
雑記帖の画像をFTPでダウンロードしてzipでまとめて、USBメモリに。

仕事系はWEBにしろ、EPUBにしろ、細かいファイルがどっさりあって、万単位になっててびっくりというか我ながら呆れてしまった。何年分溜めこんで散らかしてんだよ。
雑記帖の画像も画像ディレクトリに1000を超えてたので、ディレクトリ単位でのバックアップが面倒くさくなっていた。

仕事系のファイル
そのまま放り込んでると非力なネットブックはエクスプローラで表示させるのにさえ時間がかかってしまう。意外なことにmacも細かいファイルのてんこ盛りには弱いらしく、Finderの動きが鈍くなってしまう。あちこち、目の前で必要のないものはまとめてUSBメモリに退避してもらった。zipでまとめたりファイルのコピーや移動をしてるだけで半日潰してるんだから、放置しすぎ。
一部バックアップ用のスクリプトを書いたので、明日からは少しはマシになる、はず。

雑記帖の画像
ひとつのディレクトリにたかだか1000程度のファイルがあったところで、レンタルサーバーは問題なしだけど、バックアップする手間を考えて画像フォルダを分けることにした。スクリプト中に散らばっている「images/」という生の単語をgrepしまくり、新たにそれ用に書いたサブルーチンが返すものに変更。さらに増えても今後はサブルーチンの部分を変更するだけで大丈夫(最初からきちんと考えて作っとけ、って話だ)


ついでに中途半端に投げっぱなしのxyzzyのマクロから呼び出すスクリプトも。
easy_epub(などのepub作成スクリプト)を呼び出して、編集中の文書のepubを作成。作成したepubをepubcheckにかけてエラーをチェック。さらにepubをbib/iフォルダに解凍。エディタのバッファに表示されるリンクを叩けばEPUBの確認ができる。
こんなものはバッチファイルでいいじゃん、てことでも、エディタ(xyzzy)作業中にエディタから抜けて別操作するとなけなしの集中力が削がれるので、予想以上に捗る。昭和の頃は、パソコンユーザーはパソコンを使ってる時間の8割以上はエディタを使ってる、と言われてたくらいだ、エディタべったりで安心できる。

また、今までは、作ったepubファイルをいちいちmacにコピーしてibooksでチェックしてたけど、 BiB/i のおかげでwindowsのネットブック、chromeでの確認となってひと手間減った(最終的にはibooksで確認するけど、途中途中での確認作業はwindowsでイケるのがありがたい)
これはほぼそのままCotEditorのスクリプトメニューに登録しても使えるなあ。

はなっからmacでCotEditorで作ればいろいろ捗りそうに思われるかもしれんが、我が家のアドビ神はすべてwindows版なのだ。うーむ。

image

»電子書籍制作代行についてはこちら

Ingress Lv16への仕込み

2015/9/1 [14:52:47] (火) 天気

今日、Sojournerがプラチナとなった。
これは24時間以内にHackし続けた日数=毎日Hackし続けた日数が実績となるメダル。雨の日も風の日もカンカン照りの日も毎日最低1回、180日間休まずにポータル詣したらご褒美にプラチナをいただけた。健康祈願の御百度参りみたいなもんだ。
オニキス(黒)メダルは360日間…さすがにこれはどうだろか。

これでとりあえずレベル上限のlv16が見えてきた。

今、lv14(獲得APが約2200万)で、lv15にはメダルは揃っていて後APが200万ほど。
lv16はオニキス(黒)メダルが2つ、プラチナメダルが4つ、APは4000万(lv15からだと1600万)。前にも書いたけど、「Recharger」「Sojourner」「Translator」「Trekker」は難易度の低いメダル。
この4つ、Recharger以外は後から追加されたメダルでlv16に必要なプラチナ4とオニキス2つはこの4つで行けてしまう。黎明期からやってる古参エージェントのlv16よりはハードルが低い。他のメダルでプラチナはかなり大変。先が見えなくて気が遠くなるか、朝昼晩深夜と四六時中アクションしている廃人になるか、だろう。

lv16に向けてAP稼ぎをしている間にも、たぶんRechargerとTranslatorかTrekkerでオニキス2つは獲得できそう=lv16のメダル条件クリア。
(Rechargerの伸びが意外だった。自分のレベルが上がるとリチャージできる量も増えるので、Rechargerメダルの実績が稼ぎやすくなるんだなあ)

image 

プラチナ
Recharger 遠隔で見方ポータルの回復
Sojourner 24時間単位でハックし続けた日数
Translator グリフハック成功ポイント
Trekker 歩いた距離

Builder デプロイ数
Connector リンクを張った回数
Explorer ユニークポータルのハック数
Guardian 自ポータルの維持日数
Mind Controller CF作成数
Pioneer 初めてキャプチャしたポータル数

Engineer 自陣ポータルへのmod差し回数
Hacker ハック回数
Illuminator CF作成時のmu獲得数
Liberator ポータルのキャプチャ数
Purifier 敵のレゾネーター破壊数
SpecOps クリアミッション数【Ingressネタ】
京成の一日周遊切符「下町日和きっぷ」 (2014/10/4)
ポータル巡礼1万8000歩弱 (2014/10/11)
Ingressで連日1万歩 (2014/11/9)
Ingress Lv9になった (2014/12/21)
Ingress Lv10になった (2015/1/6)
下町日和きっぷで2万5千歩のポータル散歩 (2015/1/12)
Ingress Lv11になった (2015/5/4)
Ingress Guardianで金が獲れてLv12になった (2015/6/17)
Ingress Lv13になった (2015/6/30)
Ingress Lv14になった (2015/7/3)
Ingress ガーディアン金の呪い (2015/7/20)
Ingress Lv16への仕込み (2015/9/1)
Ingress Lv15になった (2015/10/3)
Ingress LV16 カンストとなった (2016/3/29)

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/5/1 07:51

国立国会図書館デジタルコレクションで、サンリオSF文庫がラインナップされてるっぽい

2024/5/1 07:51

https://dl.ndl.go.jp/search/searchResult?accessRestrictions=internet&accessRestrictions=ooc&collection=A00001&collection=A00002&collection=A...

2024/4/30 17:34

離間てなんだ、罹患な

検索
<<2024/5>>
   1234
567891011
12131415161718
19202122232425
262728293031

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

[497 Page]« »
41 42 43 44 45 46 47 48 49 50

TOTAL:2982

2024 (5)
1 (2)
2 (2)
3 (1)
2023 (53)
1 (1)
2 (5)
3 (1)
4 (1)
5 (3)
6 (9)
7 (9)
8 (6)
9 (5)
10 (3)
11 (2)
12 (8)
2022 (16)
1 (1)
3 (2)
6 (2)
7 (1)
8 (4)
9 (2)
10 (1)
11 (2)
12 (1)
2021 (12)
1 (3)
2 (1)
6 (1)
8 (2)
9 (1)
10 (1)
11 (2)
12 (1)
2020 (18)
1 (2)
2 (6)
4 (1)
6 (1)
7 (2)
8 (2)
12 (4)
2019 (17)
1 (3)
2 (4)
3 (2)
4 (2)
5 (1)
6 (1)
8 (1)
10 (1)
12 (2)
2018 (21)
1 (3)
2 (2)
3 (2)
4 (1)
5 (1)
6 (6)
8 (1)
9 (1)
10 (2)
12 (2)
2017 (32)
1 (2)
2 (1)
4 (2)
5 (1)
6 (6)
7 (3)
8 (5)
9 (3)
10 (2)
11 (2)
12 (5)
2016 (41)
1 (5)
2 (5)
3 (2)
4 (3)
5 (4)
6 (6)
7 (2)
8 (2)
9 (3)
10 (1)
11 (4)
12 (4)
2015 (99)
1 (11)
2 (12)
3 (9)
4 (6)
5 (8)
6 (8)
7 (3)
8 (5)
9 (16)
10 (6)
11 (1)
12 (14)
2014 (112)
1 (16)
2 (5)
3 (6)
4 (12)
5 (16)
6 (19)
7 (9)
8 (6)
9 (4)
10 (8)
11 (6)
12 (5)
2013 (145)
1 (24)
2 (15)
3 (18)
4 (23)
5 (14)
6 (11)
7 (7)
8 (11)
9 (5)
10 (4)
11 (6)
12 (7)
2012 (103)
1 (1)
2 (1)
3 (4)
4 (3)
5 (7)
6 (26)
7 (17)
8 (5)
9 (8)
10 (10)
11 (11)
12 (10)
2011 (54)
1 (4)
3 (7)
4 (4)
5 (14)
6 (6)
7 (3)
8 (3)
9 (1)
10 (4)
11 (2)
12 (6)
2010 (70)
1 (12)
2 (7)
3 (6)
4 (6)
5 (3)
6 (10)
7 (6)
8 (4)
9 (3)
10 (4)
11 (3)
12 (6)
2009 (144)
1 (15)
2 (12)
3 (12)
4 (6)
5 (15)
6 (6)
7 (10)
8 (9)
9 (17)
10 (12)
11 (14)
12 (16)
2008 (148)
1 (10)
2 (6)
3 (10)
4 (11)
5 (13)
6 (10)
7 (13)
8 (19)
9 (18)
10 (12)
11 (13)
12 (13)
2007 (106)
1 (7)
2 (5)
3 (3)
4 (7)
5 (5)
6 (9)
7 (8)
8 (13)
9 (18)
10 (11)
11 (8)
12 (12)
2006 (158)
1 (28)
2 (28)
3 (25)
4 (7)
5 (9)
6 (7)
7 (12)
8 (13)
9 (10)
10 (7)
11 (6)
12 (6)
2005 (350)
1 (31)
2 (26)
3 (26)
4 (27)
5 (29)
6 (30)
7 (32)
8 (30)
9 (30)
10 (32)
11 (29)
12 (28)
2004 (292)
1 (24)
2 (24)
3 (29)
4 (27)
5 (28)
6 (25)
7 (26)
8 (24)
9 (12)
10 (19)
11 (26)
12 (28)
2003 (318)
1 (22)
2 (25)
3 (21)
4 (28)
5 (28)
6 (28)
7 (28)
8 (29)
9 (26)
10 (29)
11 (28)
12 (26)
2002 (317)
1 (29)
2 (26)
3 (26)
4 (25)
5 (28)
6 (30)
7 (27)
8 (21)
9 (25)
10 (27)
11 (28)
12 (25)
2001 (277)
1 (17)
2 (21)
3 (23)
4 (20)
5 (31)
6 (18)
7 (26)
8 (25)
9 (29)
10 (19)
11 (24)
12 (24)
2000 (53)
6 (9)
7 (4)
8 (2)
9 (3)
10 (1)
11 (15)
12 (19)
1999 (3)
7 (1)
10 (2)
1998 (18)
9 (9)
10 (7)
11 (2)