読者です 読者をやめる 読者になる 読者になる

numpyの演算

numpyの演算は、二次元の配列と一次元の配列を明確に区別している。 一次元の配列はvectorとして、二次元の配列はmatrixとして、数学的に許された演算のみ可能。 例えば、[0 1 2 3 4 5]と[[0 1 2 3 4 5]]の演算はできない。 def printVar(var, symboltable):…

有限体の勉強するのに良い本

finite fields - Books on advanced galois theory - MathOverflow より引用。 Amazon.co.jp: Finite Fields (Encyclopedia of Mathematics and its Applications): Rudolf Lidl, Harald Niederreiter: 洋書 Amazon.co.jp: Introduction to Finite Fields …

Sierraのkarabiner elementsで日本語キーボードをUSキーボードっぽく使う

Mac

KarabinerはSierraにまだ対応していない。 Karabiner elementsでキーボードの配列を変更できるので、キーボードの配列を一文字ずついじってUSっぽく使うことはできる。 ~/.config/karabiner/karabiner.jsonにキーの設定ファイルがあるので、以下を追記する。…

std::stringでtolower/toupper

C++

#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 c++ - How to convert std::string to lower case? -</string></algorithm>…

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のOSXのビルドの開始が遅い

OSXのビルドは、物理マシンを利用しているので、利用者が多い場合は開始に時間がかかる。 下記にTravis CIのビルドステータスがある。 Travis CI Status OSXでのjob数はずっと同じ値になっており、Jobがスタックしているのが分かる。 Reference OSX builds e…

MathJaxで最適化問題を書く

TeXで最適化問題を書く時と同じで良い。 \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 \nonumbe…

vimscript中でコマンドを実行

vim

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…

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と…

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フ…

hubでpull-request: Unprocessable Entity (HTTP 422) Invalid value for "head"とでる

Git

ReferenceにあるようにError Messageが適切でない場合があるので、下記の方法で必ずしも解決するかは不明。 github上にbranchがないのにpull-requestを作っているのが問題 --pushで、今いるbranchをpushしてpull requestを作ってくれる。 hub pull-request -…

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.</double>…

boostでdemangleする

C++

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; </int></class></iostream></typeinfo></boost/core/demangle.hpp>…

Aligntaでvimで行末のコメントを揃える

vimで行末のコメントを揃えるときの話。 矩型選択などを利用して揃えるものはあるが、プラグインを使った解説をしているものがなかったのでメモ。 準備 Aligntaを入れる。 Alingtaは、文章整形用のvim plugin。 同様のツールにAlignがあるが、Aligntaの方が…

pythonのpackagesのimportまとめ

pythonのpackagesのimportの仕方と使いかたのメモ。 pythonはディレクトリ内に__init__.pyを置いておくと、ディレクトリはpackagesとして認識される。 __init__.pyはpackagesの初期化処理を記述し、なければ空で良い。 まとめ packages内のフォルダ名及びフ…

ublasのouter_prodの計算式

C++

boostのublasにはouter_prodというベクトルとベクトルの転置の積を計算する関数が存在する。 どちらのベクトルが転置されているかちゃんと書いたものがなかったのでメモ。 直積の演算としては直感通りの式。 $$ x = \left( \begin{array}{c} x_{1} \\ x_{2} …

数式が使える最強のプレゼンテーション環境

Git

うれしい markdownでかける webで見れる githubで管理できる MathJaxでlatexの数式が使える markdownとMathJaxの組み合わせで起こりがちの_などのエスケープ問題を回避できる。 使うもの Remark.js github jsをurlで読み込めるので、ネットにつながる環境な…

NeoBundleCleanが使えない

vim

NeoBundleCleanはdangerousなので削除したとのこと。 How to Uninstall Packages? · Issue #356 · Shougo/neobundle.vim · GitHub プラグインを読み込まないようにしたい場合は、NeoBundle hoge/fuga.vimの記述を消せば読み込まれないとのこと。 プラグイン…

C++で配列の型のtypedef

C++

配列のtypedefをするときは次のようにする。 //int[2]のtypedef typedef int type[2];

windowsでgithubのrepositoryにpushするときにエラーがでる場合の対応

使用しているgitは以下。 $ git version git version 2.6.3.windows.1 次のコマンドを実行すると、 git remote add origin https://hogehoge.gihttps://github.com/user_id/hogehoge.git git push origin master 下記のエラーがでる。 !!!bash: /dev/tty: No…

Googleの検索結果画面で使えるショートカット

Firefoxでは使えないようだが、chrome及びIEでは使える検索結果画面でのショートカット。 Google googleのホームから適当にワードを検索する。 検索結果画面で以下のショートカットが使える。 キーボード 機能 J 次の検索結果を選択 K 次の検索結果を選択 O …

cppunitのテンプレ

cppunitでテストコードを書くときのテンプレ。 まずは、main.cpp。これはまるこぴでおっけ。 #include <cppunit/BriefTestProgressListener.h> #include <cppunit/CompilerOutputter.h> #include <cppunit/extensions/TestFactoryRegistry.h> #include <cppunit/TestResult.h> #include <cppunit/TestResultCollector.h> #include <cppunit/TestRunner.h> int m…</cppunit/testrunner.h></cppunit/testresultcollector.h></cppunit/testresult.h></cppunit/extensions/testfactoryregistry.h></cppunit/compileroutputter.h></cppunit/brieftestprogresslistener.h>

windows7のセットアップ

インストールしたアプリ Firefox Nighty build tab mix plus tree tab web search pro visual studio 2012 ショートカットの設定 C:\ProgramData\Microsoft\Windows\Start Menu\Programsにjumpという名前でフォルダを作成。 フォルダ以下にショートカットを…

thinkpad E450で削除したプリインストールアプリなど

削除したプリインストールアプリは以下。 参考 Lenovo ThinkPad のスタートアッププログラム・常駐プログラムについての詳細 - 情報科学屋さんを目指す人のメモ(FC2ブログ版) SHAREit dropboxみたいに何かシェアする REACHit dropboxなどのweb上のシステム…

awkで偶数行目を取り出しと指定した数の倍数行に処理を追加

奇数行、偶数行を取り出す処理は、perlのワンライナーであったり、sedだったり色々あるが、今回はawkでの処理を記載。 cat filename.txt | awk 'NR % 2 == 0 {print $0;}' 偶数行目のみを取り出して、5の倍数行に改行を2つ入れる処理は以下のようにする。 ca…

haskellで数字を文字列に変換

haskellで文字列を数字に変換するにはreadを使う n = read "01235" main = print n --1234 逆に、数字から文字列に変換する場合はshowを使う。 main = print (show (read "01234")) --1234

boost::numeric::ublas::vectorの速度比較

C++

boost/numeric/ublas/vectorの生成と代入に関する速度をまとめた。 要素数を5千万にして生成と代入の速度を計測。 compiler及び環境 i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) Macbookair 20…

C++のclassとstructの違い

C++

はっきりとした言及があまりなかったので一応メモ。 Cにおいてclassとstructは(Cには記憶クラスというものがあって)全くの別物だが、C++ではstructとclassに機能的な違いはない。 structとclassの違い 振る舞いとしての唯一の違いはデフォルトのアクセス指…

C++のstaticに関するまとめ

C++

static(メンバ)変数への代入について知識がうろ覚えだったので、整理した。要点は以下。 staticな変数は宣言と同時に代入する staticなstruct型の初期化は{}で行う. class内のstaticなメンバに代入するときはクラスの宣言の外で代入.また型の指定が必要. c…

nullptrまとめ

C++11から追加されたnullptrのまとめ 概要 More C++ Idioms/nullptr - Wikibooks ライブラリ版 C++0x nullptr の実装 - Faith and Brave - C++で遊ぼう ライブラリ版の問題 ライブラリ版nullptrの悲劇 - 名古屋313の日記

C++の組み込み型はクラスとして扱える

C++

タイトル通り。 doubleという名前のクラスと思って以下でdoubleの値を生成できる。 double a = double() double b = double(1.0) ポインタも同様のことが可能だがtypedefが必要 double* a = double*(); //error double* b = (double*)(); //error typedef do…

ディレクトリ以下の特定ディレクトリを除外しファイル列挙

特定のディレクトリを除外して、カレントディレクトリ以下のファイルを列挙する。例えば、includeを除いて、.hファイルを全部列挙。 findを使って以下のようにかける。 find . -type d -name "include" -prune -o -name "*.h" -print 列挙したファイルのファ…

boost::bindとboost::functionをメンバ関数に使う

C++

タイトル通り。 boost::bindはメンバ関数を指定すると、第一引数にクラスを引数に取る関数として解釈される。 例 #include <iostream> #include <boost/function.hpp> #include <boost/bind.hpp> struct LinearExtrapolation { LinearExtrapolation( const double leftPoint, const double leftValue, const</boost/bind.hpp></boost/function.hpp></iostream>…

MacでHaskell

Haskellを使えるようにする。 haskell-platformというのがあるのでそれをインストールすればHaskellを使うのに必要なものが一通りインストールされる。 Macportsがあれば以下でおっけー。 sudo port install haskell-platform で良い。 haskellのパッケージ…

C++でClass内のtypedefにもpublic, privateは適用される

C++

タイトル通りだが、以下がサンプル。 テンプレートを使う時に重要になるのでメモ。 class Test { private: typedef double private_real; public: typedef double public_real; }; int main(int argc, char const* argv[]) { Test::public_real public_real …

Macportsでcppunitのインストール

Macportsでcppunitをインストールする。幸いなことに、最新版がインストールできそう。 sudo port install cppunit でOK。 サンプルを実行 正しくインストールされているかサンプルを実行する。 サンプルはcppunitのソースファイルのexampleを利用するので、…

MacでVirtualenvsをインストール

pythonのvirtualenvs環境をMacに構築する。 pythonは入っているものとする。 インストール 取りあえず今後の為にpipを入れる。pipはpythonのパッケージ管理ソフト。インストールが楽になる。 terminalで以下を実行。 easy_install pip これでpipが入るので今…

vimでヘッダファイルとソースファイルを交互に開く

vim

C++のコードを書いている時デバッグ時にヘッダーとソースファイルを行き来したいときが多々ある。 そんな感じのことを実現してくれるプラグイン。 mopp/next-alter.vim · GitHub インストール NeoBundleInstallがあれば、.vimrcに以下を書いて:NeoBundleInst…

MacでInternet Explorerを使う

Mac

MacでWindowsのアプリケーションを使う方法は、仮想マシン上でWindowsを起動するか、wineを使うかの2択。 今回はWineを使ってInternet Explorerを使う方法の紹介。 Wineそのものはコマンドラインで利用するWindowsのエミュレータのようなもので、使い方を覚…

boostでmatrixのrow vectorを取得する

boostの行列を扱っていて列や行ベクトルが必要になるときがある。そういう場合は、boost/numeric/ublas/matrix_proxy.hppを使う。 サンプルコード #include <iostream> #include <boost/numeric/ublas/io.hpp> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> using namespace boost::numeric::ublas; int main() { matrix</boost/numeric/ublas/matrix_proxy.hpp></boost/numeric/ublas/matrix.hpp></boost/numeric/ublas/io.hpp></iostream>

Macでソースコードを奇麗に印刷

Mac

電車で朝まで書いていたコードのチェックとかしたい時にソースコードをPDFにして携帯やタブレットで見れると便利である。 また、デバッグが上手く行かない時に紙に印刷してゴロゴロ眺めていると思いがけずバグを見つけることもある。 インストール MacPorts…

AndroidからiPhoneへ連絡先の移行

iOS

AndroidからiPhoneへ連絡先の移行をする。 Googleアカウントを使って同期する方法があるが、GMailで送信したことがあるメールアドレスなども連絡先として追加されてしまうので、自分でインポートする連絡先を選択したい場合は下記の方法を取る。 Androidでや…

PDFの奇数ページを左回転し偶数ページを右回転させる

先日誤って奇数ページが右に90度、偶数ページが左に90度回転してる変な状態でスキャンしてしまった。 元に戻すには、PDFの奇数ページを左に90度か移転し、偶数ページを右に90度回転させる必要がある。 PDFの偶数・奇数ページに別々の処理をする方法のメモ。 …

vimで英語の日付を一発で入力

vim

vimで日付を一発で入力する方法は色々あるが、日本語環境だと英語式の日付を入力するには一手間いる様子。 英語でコメントを書いていても、日付が日本式だとあまり嬉しくないので変更できるようにする。 アメリカ式とイギリス式に対応したのを書いたのでメモ…

Macでpsからepsへ変換する

ps2epsを使う。 MacPortsが入っている場合は sudo ports install ps2eps でOK。 入っていない場合は、texがインストールされていれば多分入っている。 texユーザくらいしか必要としない機能だろうから話を進める。 ps2epsの使い方 hoge.psをhoge.epsに変換し…

jsbookでのフォントエラー

TeX

以下のようなエラーが出る場合 /opt/local/share/texmf-texlive/tex/platex/jsclasses/jsbook.cls:337: LaTeX Error Font family `JY1+mc' unknown. この場合は、documentclassにuplatexオプションをつける。 \documentclass[uplatex,12pt,openany]{jsbook} …

TeXのjsbookで改ページを抑制

TeX

jsbookで文章を作成すると、章を変える度奇数ページに章が来るように偶数ページには空白ページが挿入される。これは、jsbookはデフォルトで、twoside+openrightオプションが付くためである。 解決方法は幾つかある。 1. onesideオプションをつける。 oneside…

TeXでアルゴリズムを奇麗にかく

以下のサイトからalgorithms.zipをDLし解凍する。 CTAN: tex-archive/macros/latex/contrib/algorithms algorithms.pdfのinstllationの章に書いてある通りにすればOK。 一応参考までに、MacPortsで入れた場合の手順を書いておく。 解凍した場所(algorithms.…