reveal.jsで画像の中央揃えとサイズ変更をする
htmlで書くしかない。 外部markdownファイルを使っている場合も、htmlに直接書いている場合も以下のように書けば良い。
<div style="text-align:center;"> <img src="path/to/img.png" style="width:40%;"/> </div>
- 外側の
sytle="text-align:center;"
が中央揃えの設定である。- 右揃えにしたければ
right
にすれば良い
- 右揃えにしたければ
img
タグに画像ファイルへのpathとサイズをwidth:40%
として書いている
Github Pagesでbuild failureがでる
12/8にGithub Pagesのupdateがあり、今までと仕様がいくつか変わっている。
Publishing with GitHub Pages, now as easy as 1, 2, 3
大きな変更点は、repositoryのmarkdown fileが全てbuildの対象になったという点。
今までは、ヘッダーに---
を記載したMdファイルだけがbuildの対象だったが、デフォルトで全てのmarkdownファイルがBuildの対象となったため、jekyllでbuildが通らないmdファイルなどをおいておくとエラーで落ちる。
今まで公開してなかったファイルを非公開にするには、_config.yml
ファイルをrepositoryのトップにおき、以下を記載する。
exclude: [directory, file]
directory
はbuildに含めないディレクトリfile
はbuildに含めないファイル- 複数指定可
hubでpull-request: Unprocessable Entity (HTTP 422) Invalid value for "head"とでる
ReferenceにあるようにError Messageが適切でない場合があるので、下記の方法で必ずしも解決するかは不明。
github上にbranchがないのにpull-requestを作っているのが問題
--push
で、今いるbranchをpushしてpull requestを作ってくれる。
hub pull-request --push
Reference
boost::numeric::ublas::matrixのiterator
boostのublas::matrixにはbegin1とbegin2のiteratorがある。 どういうものか記載がなかったのでメモ。
答えは、行列の1行目と1列目のitetator
namespace ublas = boost::numeric::ublas; ublas::matrix<double> m(3, 3); m(0, 0) = 0.0; m(0, 1) = 1.0; m(0, 2) = 2.0; m(1, 0) = 3.0; m(1, 1) = 4.0; m(1, 2) = 5.0; m(2, 0) = 6.0; m(2, 1) = 7.0; m(2, 2) = 8.0; for (auto e = m.begin1(); e != m.end1(); ++e) { std::cout << *e << std::endl; } //0 //3 //6 for (auto e = m.begin2(); e != m.end2(); ++e) { std::cout << *e << std::endl; } //0 //1 //2 for (auto e = m.rbegin1(); e != m.rend1(); ++e) { std::cout << *e << std::endl; } //6 //3 //0 for (auto e = m.rbegin2(); e != m.rend2(); ++e) { std::cout << *e << std::endl; } //2 //1 //0
boostでdemangleする
boost/core
にはいくつかのutility系の機能がある。
boost/core/demangle.hpp
はdemangleを提供する。
使い方
#include <boost/core/demangle.hpp> #include <typeinfo> #include <iostream> template<class T> struct X { }; int main() { char const * name = typeid( X<int> ).name(); std::cout << name << std::endl; // 出力は処理系による std::cout << boost::core::demangle( name ) << std::endl; //出力はX<int> }
参考
Aligntaでvimで行末のコメントを揃える
vimで行末のコメントを揃えるときの話。 矩型選択などを利用して揃えるものはあるが、プラグインを使った解説をしているものがなかったのでメモ。
準備
Alignta
を入れる。
Alingta
は、文章整形用のvim plugin。
同様のツールにAlign
があるが、Alignta
の方が高機能?
markdownのテーブルの整形などにも使えるので、入れておいて損はない。
インストール
NeoBundleの場合は下記でOK。
NeoBundle 'h1mesuke/vim-alignta'
やり方
下記のコードを例にする。
int a; // hoge const int b = 1; // fuga const double c = 2.0; // hage
揃えたい行を全て選択する。
:
を押して、下記コマンドを入力する。
:'<,'>Alignta <- //
下記のように揃う。
int a; // hoge const int b = 1; // fuga const double c = 2.0; // hage
コマンドの意味
:'<,'>Alignta <- //
'<,'>
は選択範囲を表すvimのコマンド。Alignta
はAligntaのコマンド。<-
はAligntaの整形用のオプションで、揃える文字(この場合//
)の左側(ソースコード部分)は変更しないということ。//
は揃える文字の先頭。
補足
行末コメントを揃えるのはメンテナンス性が悪いので、googleのcoding guidelineなどでは使用しないように記載されている場合もあるが、Cの場合はマクロを見やすくするために¥
を行末にいれることがしばしばある。
pythonのpackagesのimportまとめ
pythonのpackagesのimportの仕方と使いかたのメモ。
pythonはディレクトリ内に__init__.py
を置いておくと、ディレクトリはpackagesとして認識される。
__init__.py
はpackagesの初期化処理を記述し、なければ空で良い。
まとめ
- packages内のフォルダ名及びファイル名はC++などでいうところの名前空間のような役割。
- 単純に
import
する場合は、その名前空間を利用可能にするだけで、省略はできない - packages名などの省略をしたい場合は
from packages import sub
などを利用する。
テストファイル
ディレクトリ構成は以下。
├── main.py └── packages ├── __init__.py ├── egg.py └── sub ├── __init__.py └── sub_egg.py
main.py
import sys #to get function name. def test0(): print sys._getframe().f_code.co_name print " ", #packages.egg.egg() error def test1(): print sys._getframe().f_code.co_name print " ", import packages.egg packages.egg.egg() def test2(): print sys._getframe().f_code.co_name print " ", from packages import egg egg.egg() #packages.egg.egg() error def test3(): print sys._getframe().f_code.co_name print " ", import packages from packages import egg packages.egg.egg() def test4(): print sys._getframe().f_code.co_name print " ", import packages.sub.sub_egg packages.sub.sub_egg.sub_egg() #sub_egg() error def test5(): print sys._getframe().f_code.co_name print " ", from packages.sub import sub_egg sub_egg.sub_egg() def test6(): print sys._getframe().f_code.co_name print " ", from packages.sub.sub_egg import sub_egg sub_egg() def test7(): print sys._getframe().f_code.co_name print " ", import packages packages.sub.sub_egg.sub_egg() if __name__ == '__main__': test0() test1() test2() test3() test4() test5() test6() test7()
packages/egg.py
def egg(): print "packages.egg"
packages/sub/sub_egg.py
def sub_egg(): print "packages.sub.sub_egg"
実行結果
packages.egg packages.egg packages.egg packages.sub.sub_egg packages.sub.sub_egg packages.sub.sub_egg packages.sub.sub_egg