鉄馬の工具箱

te2uma(てつうま)のブログです。調べ物のメモなどを共有します。

Mindjet for Androidで、既定のファイル形式をFreeMindに変更してもうまくいかない場合は?

Android版のMindjet は、既定のファイル形式を FreeMind (.mmファイル)に変更できるため、PCと同期を取って作業する場合に便利です。次の手順に従って設定します。

既定のファイル形式をFreeMindに変更

(検証環境は、Nexus 7+Android 4.2.2+Mindjet バージョン3.0です)

  1. Mindjet for Androidのトップ画面で、右上の「…」ボタンをタップし、「Settings」を選択。
  2. 「STORAGE」の「Other」をタップ。
  3. 「GENERAL」の「Default file format」をタップし、「Freemind」を選択。
../../../_images/mindjet_setting.png
  1. 戻るボタンを複数回タップし、設定画面を抜けます。

以降、新規に作成するマップはすべてFreeMind形式で用意されます。

設定を変更したにも関わらず、うまくいかない場合

ただし、一点だけ注意点があります。

データの保存先をMindjetのクラウド上に指定している場合は、上記の設定が無視され、新規に作成するマップがすべてMindjet形式になってしまいます。デフォルトでは「(Last Name) reader account」というタブを選択している状態がそれに当たります。

適宜、Device(ローカル)やDropboxといった保存先を選択しましょう。ローカルおよびクラウドストレージの有効化/無効化は、前節の手順2.で表示される設定画面で変更できます。

Mindjetのクラウドを利用しない場合は、Settingsのメニューを使ってログアウトしてしまってもよいでしょう。タブが非表示になります。

Tinkererで作ったブログのエントリーに画像を埋め込む

特に公式ドキュメントで言及されていなかったのですが、エントリーに画像を埋め込みたい場合は、原稿(rstファイル)と同じディレクトリに画像をアップしておき、imageディレクティブ、またはfigureディレクティブで指定すればよいようです。

例えば、原稿が /path/to/blog/2013/04/10/manuscript.rst にある場合は、/path/to/blog/2013/04/10/picture.png に画像をアップし、次のように(相対パスの形で)ファイル名だけを原稿内で記述します。

.. image:: picture.png

キャプションをつける場合はこちら。

.. figure:: picture.png

   キャプション

tinker -bでビルドすると、自動的に /path/to/blog/blog/html/_images/ にファイルがコピーされ、公開サイトで画像を表示することができます。各エントリーの画像が同一ディレクトリにアップされるようなので、ファイル名は一意になるようにつけておいた方がよいかもしれません(要検証)。

ファイルを削除してもSugarSyncのディスク容量が増えない場合は?

SugarSyncでは、 自動的に5世代前までファイルの履歴を保存する ため、普通にファイルを削除しただけでは、ディスクの空き容量が復活しません。完全にデータを削除するには、別途ゴミ箱を空にするような処理を行い、バックアップを消去する必要があります。

SugarSyncからファイルを完全に削除する

注: この手順では、デスクトップクライアントのバージョン2.0以降を想定しています)

  1. スタートメニューや通知領域のアイコンから、SugarSyncのデスクトップクライアントを起動します。
  2. 左上のメニューから「SugarSync」-「削除済みのアイテムを表示」を選択し、「削除済みアイテム」ウィンドウを表示します。
../../../_images/sugarsync_client.png
  1. 完全に削除して構わないファイルやフォルダを選択して、右下の「完全に削除」ボタンをクリックし、さらに「完全に削除」ボタンをクリックします。すべて不要な場合は、左下の「すべて選択」ボタンを使ってもよいでしょう。
../../../_images/sugarsync_delitem.png
  1. バックアップが消去され、デスクトップクライアントの下部に表示される使用済み容量も回復しているはずです。

補足

「削除済みアイテム」ウィンドウでは、タブごとに 非共有ファイル (削除済みのアイテム)、 共有ファイル (プライベート共有済みアイテム)を分けて管理しているようです。必要に応じて、共有ファイルの方のバックアップも削除しておきましょう。

(最終更新日:2013/04/09)

「Purchases from the Amazon.com Kindle Store are not available for your current country settings.」と表示され、Kindle Editionの本が購入できない場合は?

amazon.comのKindleアカウントをamazon.co.jpのものにマージ した後、amazom.comのサイトからKindle Editionを買おうとした際に、最初は

Purchases from the Amazon.com Kindle Store are not available for your current country settings. ……

といったメッセージが出て、うまくいきませんでした(再現できないので条件が違う可能性あり)。

ここに「country settingを変えろ」といった趣旨のリンクがあったのでクリックしたら、「設定が変更できなかったのでサポートに問い合わせろ」と表示されたように記憶しています。

この場合は、 amazon.co.jp のサイトの方で同じ洋書を探せば、普通に買えるようです。

私の場合は、あれこれしているうちに、 amazon.com のサイトでも、

Kindle titles are available for JP customers on Amazon.co.jp. Continue shopping on the Kindle Store at Amazon.co.jp.

と表示され、不具合が発生しなくなりました。

買おうと思った Maffetone先生 の本『 The Big Book of Endurance Training and Racing 』は、ちょうど現在の為替レート換算のようだったので、 ドル建て でも 円建て でも変わりなさそうです(2013/03/31時点)。

(最終更新日:2013/04/09)

Tinkererで作ったブログにソーシャルボタンを追加する

テンプレートの拡張ファイルを置くディレクトリ「_templates」をブログファイルのルートに用意し、その中にpage.htmlを作成して、各種ボタンを記述していきます(参考: Tinkererをカスタマイズする )。 [1]

ここでは、テンプレートの編集を簡略化するため、各エントリの日付・タイトル上にソーシャルボタンを挿入する前提で話を進めていきます。

vi _templates/page.html
{% extends "!page.html" %}

【 …省略… 】

{%- block body %}
    【★ここに以降の節で紹介するタグを入れていく★】

    {{ super() }}
{%- endblock -%}

はてなブックマークボタンを挿入する

はてなブックマークボタンの作成・設置について 」のページでタグを作成します。

URLとタイトルの部分は、エントリーごとに動的に生成する必要がありますが、 Sphinxのグローバル変数 を使うことで対応できます。URLは「【ブログトップのURL】{{ pagename }}{{ file_suffix }}」、タイトルは「{{ title }}」とすればよいです。

例えば、このブログで「シンプル/ブックマーク数あり」のボタンを設置する場合は、次のように記述します。

<a href="http://b.hatena.ne.jp/entry/http://te2uma.com/blog/{{ pagename }}{{ file_suffix }}" class="hatena-bookmark-button" data-hatena-bookmark-title="{{ title }}" data-hatena-bookmark-layout="simple-balloon" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>

ツイートボタンを挿入する

Twitter社の素材ページ でタグを作成します。特にカスタマイズの必要がなければ、「コードのプレビューを見る」のソースコードをコピペするだけ。

Facebookの「いいね!」ボタンを挿入する

facebook developersの「 Like Button 」のページでタグを作成します。「URL to Like」の部分は、前述と同様に「【ブログトップのURL】{{ pagename }}{{ file_suffix }}」を指定しますが、「Get Code」でコードを生成したタイミングで「{{」「}}」の部分が実体参照にエスケープされてしまうので、この部分はコードを生成してから書き換えます。

なお、Send Buttonを外したい場合は、別途JavaScript SDKの設置やアプリケーションIDの取得などが必要となるので、『 XFBML版Facebookの「いいね!」ボタンを設置する。 』を参考に設定してください。

JavaScript SDKを設定する場合、「 たった一言で「いいね!」ボタンが爆速に!全ブロガーに必須の呪文。 」を参考に、非同期読み込みの設定「js.async = true;」も追加しておいた方がよさそうです。


[1]Tinkerer(というかSphinx)で使用しているテンプレートエンジン「 Jinja2 」を触るのは初めてですが、 Django を参考に作られているらしく、Djangoの知識を活かせて使いやすかったです。しかも、Perlの Template Toolkit のようにタグ前の改行を詰める機能もあるようで個人的に便利な印象。

(最終更新日:2013/04/09)

Laravelでデバッグする際のヒント

Laravelの ログ出力クラス を使うと、実行途中の値の確認などがやりやすいので、デバッグに便利です。

Logクラス の書式は次のとおり:

Log::write('ERROR_TYPE', 'ERROR_MESSAGE')
    ERROE_TYPE: エラーの種類(エラーレベル)。ERROR、WARNING、INFO、DEBUGなどが一般的。
    ERROR_MESSAGE: 表示するエラーメッセージ。

ショートカットとして、以下も定義されています。

Log::ERROR_TYPE('ERROR_MESSAGE');

ログの出力先は「【Laravelプロジェクトのルート】/storage/logs」で、「YYYY-MM-DD.log」といったファイル名で保存されます。

基本的には、次のように使うとよさそうです。

Log::debug('表示したいエラーメッセージ');

複数の個所に仕込む場合は、種類の部分をラベルみたいに使って次のようにしてみてもよいかもしれません。

Log::a('Aポイントまで通過');
Log::b('Bポイントまで通過');

dd()

Laravelのヘルパーメソッドに dd() というものもあるみたいです。「与えられた変数をダンプして、スクリプトを止める」と説明されているので、手っ取り早く変数の中身をブラウザ上で確認したい場合にはよいかもしれません。

dd()の定義部分 を読むと、

die(var_dump($value));

とシンプルな実装。ただ、Chromeで試したら日本語が文字化けした(文字エンコードをShift_JISから手動でUTF-8に切り替える必要があった)のと、スクリプトがそこで中断してしまうのとで、使いどころが少し難しい可能性も。

(最終更新日:2013/04/09)

Tinkererのエントリにカテゴリとタグを設定する

Tinkererで新規エントリ(ポスト)を作成すると、次のような項目があらかじめ文末に入力されています。

.. author:: default
.. categories:: none
.. tags:: none
.. comments::

公式ドキュメントの「 Tinkering 」のページによると、この「categories::」と「tags::」の後ろにある「none」の部分に、カンマ区切りで記述することで、当該ポストのカテゴリやタグを指定できます。

それぞれ文末にリンクが表示され、同一キーワードを持つエントリで絞り込んだリストを表示できるようになりますが、使い分けがイマイチ不明なので、その辺りは別途要調査。

(最終更新日:2013/04/09)

Tinkererでソースコードをハイライト表示する

Tinkererをインストールすると、Sphinxとともにシンタックスハイライターの「 Pygments 」が組み込まれるので、既定のreStructuredText(以下、reST)の書き方に従えば、自動的にソースコードがハイライト表示されます。

記述方法は「 Pygments による コードハイライト表示 」が参考になります。

具体的には、まずソースコード部分をreSTの「 リテラルブロック 」に指定します。これには直前の段落末尾に「::」(コロン2連続)を書けばよいです。

次のように「::」単独で記述する場合と、「::」の前に文章がある場合とで挙動が異なり、前者はレンダリング時に非表示になり、後者は「:」と一つだけコロンが残ります。これは、日本ではあまりなじみがありませんが 英語独特の用法 に由来するものだと思われます。通常は前者を使っておけばよいです。

::

(ソースコード)
例えば次のように記述します::

(ソースコード)

次に、対象のリテラルブロックより前に

.. highlight:: c

のような「highlightディレクティブ」という指定を行うと、以降のリテラルブロックがすべてハイライト表示されるようになります。これは一度書くだけで、次のhighlightディレクティブで設定が上書きされるまで有効です。

.. sourcecode:: c

「c」の部分はプログラミング言語の指定で、ここではC言語を選択しています。同様に「bash」「python」「html」など、さまざまなものが指定できます。

サポートしている言語は公式ページの「 Supported languages 」に列挙されており、「highlight::」の後に指定するキーワードは、「 Available lexers 」に記載されている各言語の「Short names:」を指定すればよさそうです(明確な文献が見当たらなかった)。

また、次のようなcode-blockディレクティブを代わりに使うことで、部分的にプログラミング言語を指定できます。エイリアスの「sourcecode」でもOKです。

.. code-block:: python

これは直後のリテラルブロックだけに対して有効になるようです。その後の設定は、直前のものが適用されます。ソースコードの種類が混在する場合に便利。

【追記】なお、code-blockを使うときは、これ自体が次にリテラルブロックが来ることを意味しているようで、直前の「::」は不要なようです(入れると重複しておかしくなる)。

イメージとしてはこんな感じ:

段落1。

.. highlight:: python

::

(Pythonのコード)

段落2。

::

(Pythonのコード)

.. code-block:: html

(HTMLのコード/↑直前に「::」が入らない)

::

(Pythonのコード)

行番号の表示といったその他のノウハウは、sphinx-users.jpのページ などを参照のこと。

ちなみに、デフォルトだとハイライト部分の文字がとても小さくなるので、CSSをカスタマイズする必要がありそうです。

(最終更新日:2013/07/08)

修正履歴

  • 2013/07/08: 誤)「sourcecode」が「highlight」のエイリアス、正)「code-block」のエイリアス。

Tinkerer 1.1以降でFacebookのコメントプラグインを組み込む方法

Tinkerer 1.1 になって、一部のエクステンションが tinkerer-contrib に分割され、同梱されなくなったようです。fbcommentsも対象に含まれていて、従来と組み込み手順を変える必要がありました。

具体的には、 fbcomments.rst に記載されている手順に従います。

まず、適当なディレクトリに移動し、tinkerer-contribのファイル一式をクローンして取得。

cd ~/work
hg clone ssh://hg@bitbucket.org/vladris/tinkerer-contrib

ブログのルートディレクトリ直下に_extsディレクトリを作成し、取得したファイルに含まれるtinkerer-contrib/fbcomments/fbcomments.pyをコピーします(ここでは、~/myblog/にブログファイル一式があるものとする)。

mkdir -p ~/myblog/_exts
cp tinkerer-contrib/fbcomments/fbcomments.py ~/myblog/_exts/

conf.pyを編集し、次のように書き換えます。

vi ~/myblog/conf.py
extensions = ['tinkerer.ext.blog', 'tinkerer.ext.disqus']extensions = ['tinkerer.ext.blog', 'fbcomments']

_templates/page.htmlで、ヘッダー領域にプラグイン用のmetaタグを追加します。【App ID】の部分はFacebookのアプリIDを取得し、適宜書き換えること。

vi ~/myblog/_templates/page.html
{% extends "!page.html" %}

~(略)~

{%- block extrahead -%}
    {{ super() }}
    <meta property="fb:app_id" content="【App ID】"/>
{%- endblock -%}

ブログを再構築すると、記事ページ下部にFacebookのコメント枠が表示されるようになります。

cd ~/myblog
tinker -b

参考文献

(最終更新日:2013/04/09)

Tinkererを使ってブログ立ち上げ

Sphinx (Python製のドキュメント作成ツール)の練習を兼ねて、Sphinxを使ってブログを生成するツール「 Tinkerer 」で、ブログを立ち上げてみました。

少し触った感じ、シンプルで使いやすそう。デフォルトのテーマは、レスポンシブWebデザインにも対応しているようです。

ちなみに「Tinkerer」は何と読むんだろう。「ティンカラー」または「ティンカー」?