std::stringでtolower/toupper
#include <algorithm> #include <string> std::string data = "Abc"; std::transform(data.begin(), data.end(), data.begin(), ::tolower); std::transform(data.begin(), data.end(), data.begin(), ::toupper);
Reference
MathJaxでQED記号をかく
MathJaxで証明終了の記号をかく。
記号自体は\Box
で与えられるが、右寄せにhtmlタグを使う必要がある。
<div class="QED" style="text-align: right">$\Box$</div>
class="QED"
は特に意味がないので、消しても良い。
Travis CIでビルドの回数を抑える時
C++の場合は、一回のビルド・テストに非常に時間がかかるので、ビルドを減らしたい場合がある。 Travis CIでは、設定で
Build pushs
- push時にビルド
Build pull requests
- pull request 時にビルド
がある。 両方ONにすると、PR時に2回ビルドが走ることになる。 Travis CIの場合この2回のビルドは同じビルドではないが、PRのビルドだけ通れば十分である場合が多い。 以下のような設定を実現する方法を記載する。
- PRでのbranchは全てビルド
- pushでのビルドはmaster branchのみ
単純にBuild pushs
をoffにすると、merge後のmaster
のビルドが行われずに、badgeが更新されない。
補足
PRのビルドはmaster
branchへのmerge後のビルドをしているので、pushのビルドとは異なる。
Travis CIが裏でmergeのコミットを作成し、ビルドしている。
方法
Travis CIの設定から以下をONにする。
Build pushs
Build pull requests
.travis.yml
に以下を記載する。
branches: only: # branchs through PR are built - master
Travis CIのOSXのビルドの開始が遅い
MathJaxで最適化問題を書く
\begin{align} \max_{\beta_{0} \in \mathbb{R}, \beta \in \mathbb{R}^{d}} & & & M \nonumber \\ \mathrm{subject\ to} & & & y_{i} \frac{f(x_{i})}{\| \beta \|} \ge M, \quad \forall i = 1, \ldots, N \nonumber \end{align}
maxとsubject toの間に&
が3つくらい入っているが、alignでは右揃えと左揃えが&の偶数番目と奇数番目で自動で選択される為、見栄えの為に入れている。
vimscript中でコマンドを実行
vimscriptの中で:vsplit variable
のようなことをやりたい。
if cond execute "vsplit " . variable endif
で良い。
if cond vsplit variable endif
だとvariable
は文字列として認識される。
jekyllのliquid templateで配列を扱う
GitHub Pagesは内部でjekyllを利用しmarkdownからhtmlファイルを生成している。 jekyllではrubyのliquid templateが利用できる。 liquid templateで配列を扱う方法がやや特殊なので、めも。
配列の代入
空の配列の代入は以下のように行う。
{% assign array1 = "" | split: "|" %}
array1 = []
のように配列を直接代入する方法は今のところないらしい。
よって、空の文字列をsplit
filterで分割し長さ0の配列を作っている。
"|"
の部分はなんでも良い。
配列への挿入
{% assign array1 = "" | split: "|" %} {% assign array1 = array1 | push: "Hoge" %}
文字列でなくobject(例えばpage)もPushできる。
同様にpop
も使える。
データの篩い分け
空の配列が作れたら、各pageの情報を用いてpageの分類ができる。 各pageのYAML front matterが以下のようになっているとする。
--- title: title1 categories: [hoge] ---
categoriesにhoge
を含むpageのみを抽出したい場合は、次のようにする。
<!-- 空の配列を作成 --> {% assign hoge_pages = "" | split: "|" %} <!-- categoriesにhogeを含むものを抽出 --> {% for site_page in site.pages %} {% if site_page.categories contains "hoge" %} {% assign hoge_pages = hoge_pages | push: site_page %} {% endif %} {% endfor %} {% for hoge_page in hoge_pages %} <!-- 各hoge_pageに何かをする。 --> {% endfor %}