ジャムスタ

just another mind Style

今日の振り返り/疑似コマンドラインからEvernote

圧倒的原稿作業により、コード書きはわずか。月末は、いつも忙しい(遠い目)。

最近はプロトタイプの疑似コマンドラインを使い、「この作業を組み込みたい」というアイデアを収集している。

で、本日はその実装。

プロジェクトのフォルダをFinderを開くことにくわえて、対象のプロジェクトのEvernoteのノートを開くことにした。

f:id:Rashita:20141126171235p:plain

疑似コマンドラインから、プロジェクト名を指定(タンッとリターンを叩く)。

f:id:Rashita:20141126171331p:plain

FinderとEvernoteのプロジェクトノートが開く。

わりと良い感じ。

あとは、全体のTodoをどう表示させるか、だ。

今日の振り返り/Evernoteの同期が終了、WikiEverをちょこっと改修

ようやくEvernoteの同期が終わった。今のところ動作は快適である。

ただ、AppleScriptで書いたFind notes:が、ほとんど機能していない気がする。ノートブックを指定しているのに、別のノートブックのノートまで検索で引っかける、ような気がする。

まあ、しばらく様子見。

どうもデータベースの扱い方が変わっている印象。ノートの内容を書き換えた直後に、HTML contentを取得すると中身が空っぽだったりする。おそらく、クライアントで表示するためのデータと、データベースのコアのデータが分離しているのではないかと想像。そのやりとりに、わずかに時間がかかるということだ。

まあ、前のバージョンから実はそうだったのかもしれないけれども。

とりあえず、Evernoteのノートの情報を利用して、ダッシュボードにProjectのタスクを表示させるスクリプトはうまくいった。平のテキストではなく、HTMLを直に利用しているので簡単だ。

その代わり、直接htmlファイルを取得するのはうまくいかなかった。師匠に頂いたスクリプトをいろいろいじってみたのだが、アカウントの情報が取得できない。ファイルの構成がDL版とapplestore版で違うのかもしれない。

まあ、今のところ大きな問題はなし。

wikiEverの改修


Evernoteにwikiのリンク作成的な機能を付加するスクリプト。初回の起動時は、白紙のノートを選 ...

以前書いていたwikiEverを改修した。

発想としては面白いスクリプトなのだが、たぶん使いたい人は少ない。

動作は、Evernoteでテキストを選択して、スクリプトを走らせると、そのテキストがノートリンクとなる。当然、そのノートリンクの先は、テキストをタイトルにした新ノートである。ようするにwikiっぽい使い方をしたい、という私の願望を実現するためのスクリプトである。

wikiの場合、損座しないページのリンクを作ることで、新規ページの作成につなげられるが、それと方向性は近い。

利用法としては、たとえば、ざっとやるべきことを書き出していったあと、その中から「プロジェクト化」する必要があるもの__サブのタスクがたくさんあるもの___を選んでwikiEverを走らせる。すると、新規のノートがノートリンク付きで出てくるというわけだ。

一般的には、「ノートを作る」「タイトルを設定」「ノートリンクを取得」「元のノートに貼り付け」というひたすら手間な作業がまっていたわけだが、ワンスクリプトでそれが完結する。

あげくのはて、これをMacのサービスに登録しておけば(Automater経由で可能)、コンテキストメニューから実行できる。ワンダホー!

これも近々公開しようと思う。

ただ、選択されたテキストが、AppleScriptから参照できないので、わりと強引な方法を採っている点が残念ポイントである。

今日の振り返り/Evernoteの同期は続く、疑似コマンドラインによるサモンプロジェクト

EvernoteのAppStore版から、ダウンロード版に切り替えたのだが、フォルダの構造があまりにも変わってしまっていて驚いた。一部のAppleScriptが完全に動かない。

この辺りの話はまた別に書くが、さすがに都合が悪いので、途中まで進んでいた同期作業をもったなくも感じながら、ダウンロード版を消して、もう一度Appstore版をダウンロード。

で、フォルダ構造を見てみたら、変わっていない。どうやら新しいバージョンはこの構造になっているようだ。

やっかいなのは、アカウントのフォルダ名がなぜかアカウント名ではなく数字になっているところ。つまり、これまでなら「rashita」というフォルダがあり、その下にノートのデータが保存されていたのだが、現在のバージョンでは「131313」みたいなフォルダになっている。でもって、その数字をアカウント情報から取得できない。

ということは、Applescriptからアクセスできない。

もう一つ、ノートの情報を保存しているフォルダ名が、これまでは「p123432」みたいな名前だったのに、長いハッシュ値になっている。で、noteの情報からは、そのハッシュ値が取得できない。別のcoredataというフォルダに保存されているデータにならアクセスできるのだが、そこにはhtmlの情報はない(あるいは私が見つけられていない)。

その代わり、これまでcontent.htmlというファイルで提供されていたノートのHTMLデータが、note.xhtmlに代わり、余計なタグが無くなっている。

余計なタグとは、HTMLとかBODYとか、そういうやつだ。note.xhtmlに入っているのはノートの中身だけになっている。つまり、html content of note で取り出せるのが、bodyの中身だけになった、ということだ。これまでは、HTMLやらHEADやらBODYタグを削除して使っていたので、その点は楽になった。
※ENMLは変わらず、全体を含んでいる。

これまでは直接htmlを取得して、そこに文字列の処理を加えていたが、今後はhtml content of note をいじる方向でスクリプトを修正することになるだろう。

前に比べて正規表現の知識が1mmぐらいは増えたので、なんとか自分で書ける、気がする。

疑似コマンドライン

YukiTaskを眺めていて、思いついたアプリのプロトタイプを作ってみた。

f:id:Rashita:20141124194238p:plain

アプリを立ち上げるとダイアログが表示される。

で、登録したプロジェクト名を打ち込んで、リターン。

f:id:Rashita:20141124194224p:plain

対応した(これもあらかじめ登録してある)プロジェクトのフォルダが開く。そして、さらなる命令入力を待つダイアログが表示される。

endとコマンドを打ち込めば、スクリプトは終了。

これを拡張していけば、同じコマンドでも、プロジェクトごとに違う動作が実現可能になる。

あと、スクリプトを経由させることで、プロジェクトの実行ログを自動的に残すこともできる。

完成の道のりは遠いが、楽しい感じにはなっている。

次のステップは、プロジェクトに移動したとき、タスクを表示させる機能だ。

今日の振り返り/Evernoteの同期は続く、summonProjectの方向性

ほぼコードを書かない日だった。

Evernoteが6.0になったので、二、三気になったことを試してみた。

が、まだ同期の円マークがグルグルと回っているので、しばらくは待ち。プログレスバー的なものがないので、いつまで続くのかという不安さはある。まあ、ノート自体を使うことはできるので、別に気にしなければどうということはないのだけれども、やっぱり処理が重い(&バッテリー消費が進む)。

summonProjectの方向性

結城タスク / YukiTask - A Simple Task Manager for Command Line Lovers.


このツールが気になっている。

私はコマンドラインで作業をしないので、このツールを使うことはないのだけれども、ツールの思想に非常に興味を持っている。

ポイントは2つある。

一つは、「作業を始める前に、Todoが必ず表示される」ということ。GUIで言えば、Finderで特定のプロジェクトのフォルダを開いたら、そのフォルダに含まれている「todo.txt」というファイルの内容を表示する、みたいなものだ。

タスクは、リマインドされなければならない。そのために、自分の「通り道」に置いておくのは非常に有効である。

で、作業するためにはファイルにアクセスする必要があるのだから、ファイルにアクセスすると、Todoが表示されるなら、見逃しようがない。非常に合理的というか実際的である。

もう一つのポイントは、同一のコマンド(mk)でありながら、プロジェクトごとにアクションが違う、という作り方である。

たとえば、私はCotEditorで書いた文章は、AppleScriptを経由して、Evernoteに保存している。その際、ダイアログが立ち上がって、「R-style」とか「シゴタノ!」とか「メルマガ」とかを選択することになる。

で、選択されたものによって、Evernoteに送るアクションが変わるのだ。具体的には、付けるタグと送るノートブックが変わる。

私自身の操作は、一定(ダイアログから一つ選ぶ)だが、ファイルに施される処理は異なる。

これは「実行中はこまかいことを考えなくても良い」というすこぶる良い結果をもたらしてくれる。

私は現状のスタイルでそこそこ満足しているのだが、もう少し拡張できるかもしれない。Evernoteに保存するだけでなく、縦書きのEPUBを作ったり、メルマガの原稿整形を行ったりと、アクションはあり得るだろう。

そうしたものを、スクリプトにプリセットとして書き込んでおけば、「裏ではいろいろなことは行われるが、私の操作は一定」という状況が作れる。十分に検討に値する成果だという気がする。

とりあえず、どういう形で実装するのがよいのかを、自分のデータ管理の方法も含めて考えてみることにする。

今日の振り返り/Evernoteの同期が続く、goremainderの作成

全体的に原稿作業に集中。

Evernoteの同期は続いている。一応ノートの利用は可能だが、同期が完全に終わるまでは動作がもったりした感じなので、ブラウザ版をメインに使う。が、使用後に閉じてしまうので、使い勝手が悪い。やはりEvernoteは開きっぱなしでナンボである。

明日ぐらいには同期が終わると良いのだが。

goremainder

あまりコードを書かない日であったが、数行のコードからなるスクリプトを作成。AppleScript


Evernoteにクイックリーにメモを作るアプリ。「リマインダー」を選択すると、リマインドの日付がな ...

標準のクイックノートでは、リマインダーの設定ができないので、自作してみた。ちなみに、本当の意味でリマインドしたいわけではないので、リマインド日時の設定機能はない。データを渡せばよいだけなので、一応明日とか明後日とかのリマインダーは複雑な操作なしで付け加えられるとは思う。

まあ、その辺は暇があれば作る。

今日の振り返り/Editonの改良、Evernoteの再インストール

alt + d で現在時刻を挿入する機能はよかったのだが、挿入場所が文章最後尾に限定されていたので、それを変更。

キャレットの場所を取得して、そこで文章を分割し、間に時間を挟んで再出力。

普通にデータを取得すると、「15:3」とかになってしまうので、10以下なら0を加える処理も追加。

日常的に使えるレベルになった。

あと、「これまでに完了したタスク」がモーダルを立ち上げないと確認できないので、上部メニューに表示させることに。Boostrapのバッチを仕様。

さらに「完了」ボタンを押したあとに、ピカッと光る感じにした。Jqueryのfadeを使用。思想的にはTodoistのもろパクリ。

Evernoteの再インストール

ちょっとややこしいことをしてしまって、Evernoteが固まるようになってしまった。おそらくだが、クイックノートに大量のテキストを突っ込んでノートを作成してしまったのが問題だと思う。ノートのタイトルは256文字の制限があるので、その辺でややこしいことになってしまったのだろう。

仕方なく、データベースをいろいろいじっていたのだが、結局ノートの再ダウンロードは避けられないようなので、これを機にApplestore版ではなく、公式からのダウンロード版に切り替えた。

これであたらしいバージョンのEvernoteが使える。

もちろん、その前にすべてのノートの再ダウンロード作業という、いささか苦痛すぎる作業があるわけだが(約5万6000ほど)。

とりあえずそれが終わるまではブラウザ版で作業を進めるとしよう。

今日の振り返り/Editonの改良、EvernoteクラウドAPIのさわり

作業記録を書くようになったので、現在時刻のショートカットを作った。

いささかボタンは悩んだのだが、まず使わないであろうalt + dを採用。時間:分の形で挿入される。日付を入れても良いのだが、それは一日一回だけなので、ショートカットは無くてもよいだろうと判断。

また、本文からメモモードに切り替えた際、自動的に一番下までスクロールバーを動かしていた処理が、止まってしまっている不具合を解決。どうも、テキストエリアをフェードインさせたあと、直後にスライドを動かしてしまったのが原因だったようだ。スクロールバーの一番下がまだ読み込まれていなかったので、不十分な位置までしかいかない結果に。

フェードインのコールバック関数でスライドを実装したら即座に解決。快適度がややあがった。

EvernoteクラウドAPI

EditonからEvernoteの操作__具体的には新規ノートの作成__がやりたいので、ちょこっと勉強してみる。「わりと簡単」という話を聞くが、サーバー関係の知識が皆無だし、phpやその他の言語もほぼわからないので、いささか途方に暮れている。

できれば、Javascriptだけで実装したいところ。それはまあじわじわと。