header_medi8

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

2017年4月26日水曜日

VSCode の markdown-pdf でエラーになるときの対処法

最近はエディタはもっぱら Visual Studio Code になっていて、
ちょっとした打ち合わせの議事録なんかを Markdown で書いてます。

打ち合わせ後にファイルを展開したりするのですが、相手によっては .md のファイルが開けないと言われることもあります。。。

そこで、Visual Studio Code で Markdown をさくっと PDF に変換できる機能拡張を使うことにした。

markdown-pdf

  1. VS Code の機能拡張で「markdown-pdf」を検索してインストール
  2. .md ファイルを開く
  3. 「右クリック- Convert Markdown to PDF」で終わりという手軽さ!
インストールして、早速実行してみたらエラー出た。。。

ERROR: phantomjs binary does not exist: /Users/USERNAME/.vscode/extensions/yzane.markdown-pdf-0.1.4/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
phantomjs なるものがないらしい。

ネット繋いである状態で.md ファイルを開いたらインストールされると言ってる人もいたけど、自分の環境ではうまくいかず。

対処法

色々調べまわってたら以下のページにたどり着いた。
vscode-markdown-pdf のGitHub ページの Issue でのやりとり。

https://github.com/yzane/vscode-markdown-pdf/issues/2


homebrew で phantomjs をインストールして、所定の場所にシンボリックリンクを貼ってやればいいみたい。

brew install phantomjs
cd ~/.vscode/extensions/yzane.markdown-pdf-0.1.4/node_modules/phantomjs-prebuilt
mkdir lib/phantom/bin
ln -s /usr/local/bin/phantomjs lib/phantom/bin/phantomjs


2016年12月8日木曜日

Macアプリを起動したけどMenuにアプリ名が表示されるだけでウィンドウが表示されないときの対処法

OS X 10.10 で問題なく動いていた Mac アプリが 10.8 で起動しないという問題に遭遇した。

いや、正確には起動はしてるようだ。
Menuバーにアプリ名は表示されているし、Dock にアイコンも表示されている。

でも、メニューバーのアプリ名以降のメニューの生成や、Window の生成に失敗しているのか、
起動しても何も表示されない。

そこで、次の2つのことを試してみました


  • applicationDidFinishLaunching:: で標準エラー出力に asl_log でログを出力してみる
  • 空のプロジェクトで症状を確認


applicationDidFinishLaunching:: で標準エラー出力に asl_log() でログを出力してみる


アプリケーションの起動後に呼ばれる applicationDidFinishLaunching:: が実行されているかの確認をするために、
ここでログを出力するようにしてみましたが、ターミナルには何も出力されない。

つまり、アプリケーションの起動処理のどこかで失敗してるはず。
そこで、各View の viewDidLoad でも asl_log() でログを出してみることにします。

しかし、これでも何も表示されない。
もっともっと根本的なところが原因なのか?

空のプロジェクトで症状を確認


ということで、空のプロジェクトで同様の問題が発生するのか確認してみた。
すると、同じ症状が発生しやがった!なんでやねん!

ただ、これでプログラムではなく、設定等の問題であることがわかった。
空のプロジェクトと問題のプロジェクトで Project Setting とか見比べてみるも、
特に違いがあるようにはみえないけど。。。

もう1回試してみることにして、新規プロジェクト作成。
ここで、おもむろに「Use Storyboardst」のチェックを外して、
Storyboard を使わずに、xib ファイルを使うようにしてみた。




「まあ、これだけでは何も変わらないですよね〜」と思いながら実行ボタンを押してみた。。。


すると、10.8 でも起動するではないですか。
Storyboard 使えないの?と思ってその辺りのキーワードで検索を掛けてみると、
Apple Developer Forum に以下のスレッドがありました。

https://forums.developer.apple.com/thread/16210

これによると、OSX では Storyboard は10.10 からしか使えないので、
10.9 以前のアプリをサポート対象とする場合は、Storyboard の使用には気をつけましょうとのことらしい。

エラー出すなり、選択できないようにするとかしてよ。。。

てなわけで、全部 xib で作り直して無事 10.8 でも起動できました。

2016年11月19日土曜日

Objective-C からコマンドを実行する方法

Objective-C からUnixコマンドを実行したいことがあったので調べてみた。


/**
 * @brief  UNIXコマンドを実行する.
 * @param  [in] command_path   実行するコマンドのパス.
 * @param  [in] args           引数リスト.
 */
- (NSData*)doCommand:(NSString*)command_path args:(NSArray*)args {
    NSTask *task = [[NSTask alloc] init];

    // 標準出力用
    NSPipe *out_pipe = [NSPipe pipe];
    [task setStandardOutput:out_pipe];

    // 標準error
    NSPipe *err_pipe = [NSPipe pipe];
    [task setStandardError:err_pipe];

    // Task に command のパスと引数を設定
    [task setLaunchPath:command_path];
    [task setArguments:args];

    // 設定したコマンドを設定した引数で実行
    [task launch];

    // 標準出力に設定した Pipe からデータを取得する.
    NSData *data = [[out_pipe fileHandleForReading] readDataToEndOfFile];
    return data;
}

ここでは例として、PATH を取得する以下のコマンドを実行してみることにします
uroshika$ echo $PATH 

これをObjective-Cから実行するには、
- (void)getPath {
    NSString* command_path = @"/bin/echo";
    NSArray* args = @[@"$PATH"];
    NSData *data = [self doCommand:command_path args:args];
    NSString* result = @"";
    if (data != nil && [data length]) {
        result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    }
}









2016年10月11日火曜日

Sphinx ドキュメンとのサイドバーに目次を表示する方法

Sphinx で使用するテンプレートによっては、サイドバーに目次が表示されません。
しかし、カスタムテンプレートを作成してすることで目次を表示させることができます。

目次表示用のテンプレートを作成する

目次表示用に使用するテンプレートを作成して「ドキュメントルート/source/_tmeplates」に置いておき、以下の内容で保存します。


<div id="toc" class="sidebarRow">



<h3><a href="{{ pathto(master_doc) }}">目次</a></h3>

{%- if sphinx_version[:3] >= '1.2' %}

{{ toctree (maxdepth=3, collapse=False, includehidden=True) }}

{% else %}

{{ toctree(maxdepth=3, collapse=False) }}

{% endif %}

</div>


conf.pyを編集する

「conf.py」の「html_sidebars」の項目を以下のように記述します。


html_sidebars = {

'**': ['globaltoc.html', 'relations.html', 'sourcelink.html', 'searchbox.html'],

}

  • relations.html
    • 「Previous topic」「Next topic」を表示する
  • sourcelink.html
    • 「Show Source」のリンクを表示する
  • searchbox.html
    • 検索ボックスを表示する

2016年10月10日月曜日

無料のGitホスティングサービス 『Bitbucket』がいい!!

Simple Midi Player」を作っているときバージョン管理を行っていましたが、一人で作っていたため、人とソースコードやリソースを共有する必要がなかったため、ローカルにリポジトリを作成して行っていました。

ところが、現在作成中のアプリは他の人とソースコードを共有したり、デザインを外注したりする関係で、リモートリポジトリが欲しくなりました。
さらに、公開予定のアプリを管理するリポジトリなので、プライベートリポジトリにしたいと考えていました。

GitHub と Bitbucket


これまで、自分の勉強用で「GitHub」を使用していたのですが、「GitHub」は無料だとプライベートリポジトリが作成することができません。

しかし、もう1つの有名な Gitホスティングサービス「Bitbucket」なら、なんと無料でプライベートリポジトリが作れて、5人までメンバーを招待できるのです!

※念のため書いておきますが、GitHubは素晴らしいサービスです!

Bitbucket

Bitbucket は、Atlassian(アトラシアン)が運営している、Webベースの Gitホスティングサービスです。
やはりBitbucket の最大の特徴は、プライベートリポジトリを「無料で」「いくつでも」作れることではないかと思います。
さらに、無料でも最大で5名までリポジトリにメンバーを追加することができます。
これも、複数人で開発を行う場合に非常に便利な機能です。

ちなみに、Bitbucket は Django フレームワークを使って、Python で書かれているらしい。

登録方法

まず「Bitbucket」のページにアクセスし、以下の画面で「Get Started」をクリックします。



次の画面で、メールアドレスを入力して「Continue」をクリック



あとは、送られてきたメールのリンクから手順通りに登録作業を進めればOK!

プライベートリポジトリの作成

プライベートリポジトリの作成方法を見てみましょう。

1. 画面上部の「リポジトリ」メニューから「リポジトリの作成」を選びます


2. 以下の画面が表示されるので、適当なリポジトリ名を入力し、「これは非公開リポジトリです」にチェックを付けてリポジトリの作成を行うと、プライベートリポジトリとして作成されます。


Advanced Settings をクリックすると、もう少し設定項目が表示されます。


リポジトリの説明文を書いたり、フォークの設定、プロジェクト管理の機能を入れるかどうかなどを設定することができます。
私はいつも課題管理とWikiは有効にしておいて、アプリ内を開発する際にメモなどを残しておくときはWiki に、やらないといけないことなどは課題管理でリスト化したりします。

3. リポジトリを確認

これで、無事にプライベートリポジトリが作成できているはずですが、きとんとプライベートリポジトリになっている場合は、以下の図のように鍵マークが表示されているはずです。


ぜひ皆さんもBitbucket を利用してみてください!


2016年10月9日日曜日

sphinx-quickstartで生成されるMakeifileの内容を変更したい

以下のファイルの「MAKEFILE」の項目を編集することで生成されるMakefileを変更することができます。


~/.pyenv/versions/2.7.7/lib/python2.7/site-packages/sphinx/quickstart.py


※上記のパスは「pyenv」でインストールしたpythonのsphinxを使用している場合なので、自分のPython 環境に合わせて読み替えてください。

なお、どうしても "quickstart.py" が見つけられない場合は、以下のコマンドを自分のHomeディレクトリで以下のコマンドを実行してみてください。

$ find . -name "quickstart.py"


2016年8月1日月曜日

VisualStudioCodeでPython デバッグ中に、VSCodeが Exception を投げて終了してしまう場合の対処法

Python のコードをデバッグしているときに、途中でいきなり Visual Studio Code が勝手に終了して、デバッグができない問題が発生しました。

コンソールには、以下のようなエラーが出力されていました。

Traceback (most recent call last):
  File "/Users/uroshika/.vscode/extensions/donjayamanne.python-0.3.18/pythonFiles/PythonTools/visualstudio_py_debugger.py", line 1646, in loop
pyProc.stderr: Traceback (most recent call last):
  File "/Users/uroshika/.vscode/extensions/donjayamanne.python-0.3.18/pythonFiles/PythonTools/visualstudio_py_debugger.py", line 1646, in loop
    cmd()
  File "/Users/uroshika/.vscode/extensions/donjayamanne.python-0.3.18/pythonFiles/PythonTools/visualstudio_py_debugger.py", line 1918, in command_execute_code
pyProc.stderr:     cmd()
  File "/Users/uroshika/.vscode/extensions/donjayamanne.python-0.3.18/pythonFiles/PythonTools/visualstudio_py_debugger.py", line 1918, in command_execute_code
    thread.run_on_thread(text, cur_frame, eid, frame_kind, repr_kind)
  File "/Users/uroshika/.vscode/extensions/donjayamanne.python-0.3.18/pythonFiles/PythonTools/visualstudio_py_debugger.py", line 1246, in run_on_thread
    self.schedule_work(lambda : self.run_locally(text, cur_frame, execution_id, frame_kind, repr_kind))
  File "/Users/uroshika/.vscode/extensions/donjayamanne.python-0.3.18/pythonFiles/PythonTools/visualstudio_py_debugger.py", line 1238, in schedule_work
    self.unblock()
  File "/Users/uroshika/.vscode/extensions/donjayamanne.python-0.3.18/pythonFiles/PythonTools/visualstudio_py_debugger.py", line 1234, in unblock
    self._block_lock.release()
error: release unlocked lock

調べてみたところ、WATCH に登録している変数を削除したら治るようです。

https://github.com/DonJayamanne/pythonVSCode/issues/135

これまで、WATCH に変数を登録して値を確認していることはあったけど、今回初めてこの問題に遭遇しました。

どうも、ループ等で同じ変数を何度も参照していると発生ているような感じ。

原因はよくわからないけど、おそらくpythonVSCode のバグかな。