2015年2月25日水曜日

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

ブログズミ: reveal.js + Markdown のちょっとしたメモ
の2回目です。

前回は、
  • 表題が大文字表記にならないようにする
  • 空行を入れる
  • タグを直接記述する
  • 公開する
の4つを紹介しました。

また少し備忘録がたまったので紹介していきます。

HTML 変換後の表示
Markdown でスライド記述していると、最終的に出力される HTML がどのように記述されているか知りたくなる場合があります。その場合は、ブックマークレットを使うと便利です。
ブックマークレットが何かはこのへん参考にしてください - ブックマークレット - Wikipedia

Chrome で説明します。
ブックマークマネージャーを開き、ページを追加します。
適当な名前をつけて、URL に下記を入力してくさい。
javascript:document.write('<xmp>'+document.documentElement.innerHTML+'<\/xmp>');
以上で設定終わりです。

スライドを Chrome で開き、先ほどのブックマークを開きます。
すると、最終的な HTML テキストが表示されます。


F5 で更新するともとのビューに戻ります。

PDF に出力
URL の後ろに ?print-pdf を付け足してブラウザ(Chrome)で開きます。
PDF保存用のレイアウトで表示される(ここでは崩れて見える)ので、印刷から「PDFに保存」を選択(ここで正しく表示される)し出力します。



テーマの作成
<link rel="stylesheet" href="reveal.js/css/theme/black.css" id="theme">
テーマは上記のように reveal.js/css/theme にあるものを選択するか、URL の末尾に ?theme=black (3.0 からできなくなった?)などのように指定する方法があります。
こちらのテーマですが、自分好みのものを作ることもできます。

作り方は簡単です。ベースとなるテーマの css をコピペして、あとは好きな様に書き換えるだけです。
色変えとかフォント変えたりとかくらいなら簡単にできます。

Boost.勉強会の LT で発表したときに、テーマを書いたので紹介しておきます。
ブログズミ: Boost.勉強会#16 大阪に行ってきました
https://github.com/srz-zumix/slide/blob/gh-pages/reveal.js/css/theme/zumix.css

※ reveal.js 3.0.0 にバージョンアップしたので当時から変更がかかってます。

背景付きテーマ
スライドの背景にちょっと絵が出ている。そんなテーマを作ってみたいと思います。

これが正攻法なのかわかりませんが、div.slide-background が各スライドに挿入されるのでそこで下記のように背景画像を設定します。
.reveal div.slide-background {
  background-image: url("../../../images/icon_reasonably_small.png");
  background-repeat: no-repeat !important;
  background-size: 5%;
  background-position: right 20px top 20px;
}
位置や大きさ、アルファなど自由に設定することができます。

アイコンを右上に出すサンプル↓
http://srz-zumix.github.io/slide/iuwandbox-bg/#/

Notes を使う
Notes をローカル環境で見るためにはローカルサーバーを立てる必要があります。
ローカルサーバーを立てる手順はこちらに記載されています。
https://github.com/hakimel/reveal.js/#full-setup

  1. Node.js のインストール
  2. Grunt のインストール
  3. cd reveal.js
  4. npm install
  5. grunt serve
でローカルサーバーが起動します。
ルートディレクトリを変更したい場合は、reveal.js/Gruntfile.js の以下の base 部分を変更してください。
connect: {
   server: {
    options: {
     port: port,
     base: '.'
    }
   }
  },

ローカルサーバーを起動したら、ブラウザで localhost:8000 にアクセスしてください。(デフォルトポートは 8000)
スライドが表示されたら、's' キーを押します。
すると、以下のようにノートが表示されます。

※ 3.0.0 からローカルサーバーを立てなくても Notes が使えるよになりました

App::revealup
もっと簡単にスライド書きたい!という人は、「App::revealup」を使ってみてはどうでしょう。
App::revealup は、面倒なサーバー立てやオリジナルテーマの作成などが簡単にできるようです。

一瞬でクールなスライドがつくれる「App::revealup」をリリースしました - ゆーすけべー日記




今回は以上です。また、ネタがたまったらブログに書きたいと思います。
それでは~

2015年2月17日火曜日

GAE で git が使えるようになってたので使ってみた

完全な個人的備忘録です。
あまり参考にはならないと思います。承知のうえ御覧ください。
(ここ最近雑な記事が多くてすみません。ちょっとしばらく忙しいのが続きそうです。)

設定の仕方
コンソールからプロジェクトを選択すると左側の「ソースコード」のところに「閲覧」があるので選択します。
すると下図のような画面になるので、リポジトリを作成するか、外部リポジトリとして Github/Bitbucket を使うかの好きな方を選んでください。


今回は Github と連携させました。

push to deploy
やり方がこちらに書いてあるのでそのとおりに設定する。
Google Cloud Platform Blog: Using GitHub for Push-to-Deploy

Google Cloud Platform への登録が必要
上記方法で push to deploy の設定をしたもののエラーが出て失敗してました。
どうやら、Google Cloud Platform への登録が必要なようなので、無料体験版を登録しました。

Google Cloud SDK の appcfg.py update でのアップロードは Google Cloud Platform に登録していなくてもできてました。
https://cloud.google.com/appengine/docs/python/gettingstartedpython27/uploading
テストプロジェクト→ http://opportune-verve-838.appspot.com/

無料体験版があるものの、リポジトリ使うために登録が必要なのは面倒ですね。。。

threadsafe: true が必要
さて、登録ができたので早速 push してみたところ、デプロイは実行されました。
されましたが、エラーが出ました。

Deployment failed. Details: Deployment failed, details: { Failed to load application, threadsafe is a required field., none}

どうやら、app.yml に threadsafe フィールドが必要なようなので、追記しました。

デプロイ成功
以上の手順により、デプロイが成功するようになりました。

https://push-to-deploy-sample.appspot.com/

今回はかなりテキトーな文章とほとんど説明がない雑な記事ですみませんでしたm(__)m
無料体験版が60日間なので、さっさとやりたいことをやってしまいたいと思います。

2015年2月9日月曜日

Twilio を使ってみた - その2

「Twilio を使ってみた」第2回目です。
1回目では、Twilio アカウント登録から電話を掛けたときに任意のメッセージを流すところまでやりました。

今回はダイアル入力の番号ごとに処理を変えることをしようと思っていましたが、とある用件で転送を使ったので先にそちらについて書いておきます。

Dial 動詞
といってもやることは簡単で、ただ Dial 動詞を使うだけで転送ができます。
Twilio Docs - API TwiML Dial

TwiML は以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say voice="woman" language="ja-jp">てんそうします。しばらくお待ちください</Say>
  <Dial callerId="+815XXXXXX" timeout="30">ここに電話番号</Dial>
  <Say voice="woman" language="ja-jp">ただいま、電話にでられません。しばらくしてからおかけなおしください</Say>
</Response>

Dial の要素には転送先の電話番号を入れてください。トライアルアカウントの場合、発信先番号は登録時に認証した番号しか使えませんので注意してください。

さて、これで自分の電話番号を知られずに電話のできる番号を手に入れることができました。
(トライアルアカウントなので最初にアップグレードのアナウンスが流れますが…)
まぁ、ただ自分の電話番号を(やりようでなんとかできるとは思うが、簡単にやろうと思ったら)どこかに公開することになるので、情報隠ぺいになっているのかどうかは。。。
とりあえず、やってみたかったのでやった、という感じです。

では、また次回。

2015年2月4日水曜日

[Visual Studio] インクルードガード実装毎のベンチマーク

[C, C++] インクルードガード実装毎のベンチマーク - Qiita

こちらで紹介されているページ(http://tinodidriksen.com/2011/08/31/cpp-include-speed/)で、MSVC 2010 の結果の Ifndef only が遅かったので、手元の Visual Studio で比べてみました。

計測方法
http://tinodidriksen.com/2011/08/31/cpp-include-speed/
こちらで公開されているソースコードを使用。
各インクルードガード実装ごとに、下記のように10回繰り返した時間を計測。

for i in `seq 1 10`
do
    cl.exe main.cpp /O2
done

結果
include guard 2015 CTP 52013 2012 2010
Pragma + ifndef13.36 14.8025.1724.19
Ifndef + pragma13.10 14.7624.7624.71
Pragma only 12.88 14.4424.7724.20
Ifndef only 13.09 14.7329.3729.78

Visual Studio 2010/2012 では、インクルードガードマクロのみ遅い傾向が確かに見られましたが、Visual Stduio 2013/2015 ではそのような傾向はありませんでした。
というか、2013 以降でかなりビルド速度が速くなってました。

まぁ、マクロか pragma once かはあまり気にしなくていいのかなと思いました。

2015年2月2日月曜日

Travis-CI で MinGW を使ってビルドする

Travis-CI で MinGW を使ってビルドテストを走らせたいと思います。

ビルド
Travis-CI は ubuntu 上で実行されるので、ubuntu で MinGW を使う場合と同じ手順になります。
参考: Add MinGW build to Travis CI · Issue #247 · SOCI/soci

language: cpp

compiler:
  - gcc

install:
  - sudo apt-get -qq update
  - sudo apt-get -qq install binutils-mingw-w64-i686 g++-mingw-w64-i686

before_script:
  - export CXX=i686-w64-mingw32-g++

ポイントとしては、
* MinGW のパッケージのインストール
* コンパイラーの変更
* -static-libgcc -static-libstdc++ オプションでビルド
の3つです。

実行
せっかくビルドできたのですから、実行したいですよね。
ただ、できあがった実行ファイルを実行しても動作しません。当たり前です。

Travis-CI で Windows バイナリをテストする - 何気に大変
こちらに書いてあるように、Wine を使うことで実行できました。

実行の仕方は、通常の実行コマンドの前に wine と入れるだけです。
script:
  - wine hogehoge --option piyopiyo

実際に、iutest で実行までしています。設定はこちらから確認できます。
https://github.com/srz-zumix/iutest/blob/master/.travis.yml