2014年9月29日月曜日

reveal.js + Markdown のちょっとしたメモ

reveal.js + Markdown でスライドを書くことが多いので、それ関係でちょっとしたことを備忘録として残しておく。

表題が大文字表記にならないようにする
表題が大文字に変換されてしまうのが嫌だったので対処してみました。

## Sample

これは sample です。


例えば上記の場合、デフォルト設定では以下のように表示されます。


これは、theme の css で表題のスタイルに text-transform: uppercase; があるためです。
これを無効にすれば良いので、theme css の指定の後に以下の記述を追記します。

<style type="text/css">
  .reveal h1,
  .reveal h2,
  .reveal h3,
  .reveal h4,
  .reveal h5,
  .reveal h6 {
    text-transform: none;
  }
</style>

これで大文字ではなく、書いたとおりに表示されます。

空行を入れる
## Sample

これは sample です。__
<!-- -->__
↑空行を入れたい。__

※わかりやすいようにスペースを "_" で表記してます。

改行をする場合、末尾にスペースを2つ入れるのですが、前方になんらかの文字が必要です。
なので、コメント + スペースとすることで空行を出力しています。


タグを直接記述する
こちらは以前にもブログに書きました。 Markdown でテキストカラーの変更
Markdown の記述中に html タグを含めてもなんら問題ありません。そのまま html に出力されます。
なので、Markdown で表現できないことも html で表現すれば OK です。

## テスト

タグを<span style="color:red">直接記述</span>することで<span style="color:blue">色</span>を変えます。



公開する
書いたスライドを公開するときは github pages が便利です。
github pages については割愛します。
GitHub Pagesホスティングサービス(ほぼ)完全活用ガイド | ゆっくりと…


手順としてはとっても簡単で、gh-pages ブランチを作って push するだけです。
例)
github: https://github.com/srz-zumix/slide
github pages: http://srz-zumix.github.io/slide/iuwandbox/#/

最後に
今回は以上です。
今後も reveal.js + Markdown でスライドを書くと思うので、また何かあったらブログに書こうと思います。


2014年9月22日月曜日

Boost.勉強会#16 大阪に行ってきました

Boost.勉強会#16 大阪に行ってきました。

久しぶりの勉強会参加です。
今回は LT で発表してきました。
勉強会でしゃべるのは初めてのことでとても緊張しました。
あまりうまくしゃべれなかった気がします。。。

発表資料はこちら

話した内容は iutestWandbox 対応したという話でした。
LT では触れませんでしたが Google Test にはない機能もたくさんありますので、ドキュメントをみていただけると幸いです。
今回これを実装した理由は、Wandbox でテスティングフレームワークを使おうとした場合、選択肢が Boost.Test しかなかったので、普段 Google Test を使っている身としては Google Test の構文で書きたいなと思ったからです。

まだパッケージリリースはしてませんが、trunk で確認できます。(trunk/tools/wandbox)
詳しいことはリリースしたときに、このブログに書きたいと思います。

これができるようになったことで、C++ に対応していない CI サービスでも Wandbox を使ってテストをすることができます(たぶん)。現在、Shippable を使って検証中ですので、これもまたブログに書けたらと思います。

最後になりましたが、発表者・参加者の皆様お疲れ様でした&楽しい時間をありがとうございました。

2014年9月16日火曜日

[LLVM 3.5] Clang for Windows

LLVM 3.5 がリリースされたので clang for windows を更新。
LLVM 3.4 では type_traits のエラーがあってビルドができませんでしたが、どうなったのか確認してみました。

対象プログラムは例のごとく iutest を使用しました。

※ LLVM 3.4 のときの対処は「ブログズミ: [LLVM 3.4] Clang for Windows を使ってみた」を参考にしてください。
※ clang for windows はこちらからダウンロードできます。

error : cannot compile this try statement yet
ostream(800,3): error : cannot compile this try statement yet
                  _TRY_IO_BEGIN
                  ^~~~~~~~~~~~~
ostream(19,24) :  note: expanded from macro '_TRY_IO_BEGIN'
   #define _TRY_IO_BEGIN  _TRY_BEGIN      /* begin try block */
                          ^
xstddef(30,21) :  note: expanded from macro '_TRY_BEGIN'
   #define _TRY_BEGIN     try {

try ステートメントでなぜかエラーが出ます。まだ対応していないようです。
[LLVMdev] Clang Integration with MSVS 2013
こちらを参考に /GR- /D_HAS_EXCEPTIONS=0 をコンパイルオプションに追加することで解決しました。
(/GR- :「ランタイム型情報を有効にする」を「いいえ」に設定)


error : expected class name
typeinfo(190,11): error : expected class name
          : public exception
                   ^
typeinfo(194,5): error : member initializer 'exception' does not name a non-static data member or base class
                  : exception(_Message)
exception クラスがないと怒られます。
エラー行を見るとわかりますが、_HAS_EXCEPTIONS=0 の場合でも bad_cast や bad_typeid などの例外クラスが定義されるようで、この例外クラスが exception クラスを基底クラスに持つのですが、なぜか exception ヘッダーがインクルードされていないため、エラーになっているようです。

よって、typeinfo をインクルードする前に exception ヘッダーをインクルードすることで解決しました。


error : array initializer must be an initializer list
assertion.cpp(191,17): error : array initializer must be an initializer list
          const char16_t c16[] = u"test";
                         ^
assertion.cpp(196,17): error : array initializer must be an initializer list
          const char32_t c32[] = U"test";
                         ^

char16_t/char32_t の配列初期化に初期化リストを要求されました。
重要な機能ではないので、char16_t/char32_t は非対応としてビルドするようにしました。


ビルド成功
上記対応をすることでビルドが通るようになりました!やりました。

実行もできます。


まだ対処しないといけない部分がありますが、動くものが作れるようになりました。
今回やったこと以外にも対処が必要だったり、問題があったりするかもしれませんが、Visual Studio で clang が扱えるようになるのはありがたいことです。今後にも期待したいと思います。

以上。


2014年9月8日月曜日

[Visual Studio] スタートアッププロジェクトについて

今回は、スタートアッププロジェクトに関することで、ちょっとしたことを紹介したいと思います。
※ 以下の内容は Visual Studio 2013 で説明しています。

スタートアッププロジェクトって?
ソリューションで太字で表示されているプロジェクトのことです。F5 などで実行した場合に、実行されるプロジェクトを示しています。
スタートアッププロジェクトはプロジェクトの右クリックメニューで変更できます。

スタートアッププロジェクトの設定は保存されます。この設定は .sln ではなく .suo ファイルに保存されるので、注意してください。

デフォルトスタートアッププロジェクト
スタートアッププロジェクトの設定は、.suo ファイルに保存されますが、
この .suo ファイルがなかった場合、特定のプロジェクトがスタートアッププロジェクトに設定されます。

特定のプロジェクトは、.sln ファイルに記録されているプロジェクトの内、一番先頭のプロジェクトのことを指します。

.sln ファイルをテキストで開くと以下のようなことが書かれています。
一番最初の Project ~ EndProject がデフォルトスタートアッププロジェクトになります。
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2013 for Windows Desktop
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iutest_sample", "iutest_sample.vcxproj", "{13851977-F039-448D-A853-A98325BDA088}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iutest", "iutest.vcxproj", "{C46DA5A4-27B5-4A0C-97D0-F5D0B9881087}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iutest_main", "iutest_main.vcxproj", "{264A677C-4EA1-4898-94F2-D6352788FB36}"
EndProject

マルチスタートアッププロジェクト
実行するときに複数のプロジェクトを実行したいと思ったことはないでしょうか?
そんな時は、マルチスタートアッププロジェクトを使用します。

ソリューションのプロパティを開くと、「共通プロパティ」に「スタートアップ プロジェクト」の項目があります。
「マルチ スタートアップ プロジェクト」を選択し、各プロジェクトごとにアクションを設定します。
アクションには、「デバッグなしで開始」「なし」「開始」のうち1つが設定できます。
まとめて実行したいプロジェクトを「(デバッグなしで)開始」に設定することで、F5 実行したときにまとめて起動することができます。

この設定も .suo ファイルに保存されますので注意してください。

ショートカットの設定
右クリックメニューで変更するのが面倒だという人は、ショートカットキーを設定しておくと良いかもしれません。
「ツール」>「オプション」>「環境」>「キーボード」の文字列検索ボックスに「スタートアップ」と入力すると、候補が出てきますので、あとはお好きなキーを割り当ててください。