2013年11月30日土曜日

xubuntuでログイン画面に戻ってしまう

xconf.orgを書き換えていたらログインしてもすぐにログイン画面に戻ってしまうようになった.
対処法は
.Xauthority
.ICEauthority
の二つのファイルを消すことだった.


2013年10月13日日曜日

std::vectorの一部分からstd::stringを生成

std::stringのコンストラクタにイテレータ二つを与えて範囲を指定することができる.
例: std::vector<char> bufの最初の'\n'までをstd::stringとして切り出す

cit = find(buf.begin(), buf.end(), '\n');
std::string s(buf.begin(), cit);

2013年10月2日水曜日

dvipdfmxで日本語フォントを埋め込む

dvipdfmxで日本語フォントを埋め込む
c:/tex/share/texmf-dist/fonts/map/dvipdfmx/base/cid-x.mapを編集する.

rml   H DFMINP3.TTC
gbm   H DFGOTP5.TTC
rmlv  V DFMINP3.TTC
gbmv  V DFGOTP5.TTC

.emacsのyatexの設定

(setq tex-command "c:/tex/bin/ptex2pdf -l -ot \"-kanji=utf8 -no-guess-input-enc\" -od \"-f dlbase14.map\"")
(setq dvi2-command "c:/tex/bin/SumatraPDF.exe")

2013年9月25日水曜日

PowerPointのスライドマスターで,マスターに配置した図形や画像を表示しないようにする

背景の書式設定で,「背景グラフィックを表示しない」にチェックを入れる.
マスターに配置した図形は「背景」として扱われるのか!

2013年9月4日水曜日

pythonのリストの代入

aがリストだとして,
b=a
は,コピーではなくて参照.
コピーしたいときは,
b=a[:]
む,こんなところではまるのは,python初心者すぎる.

2013年8月24日土曜日

UTF-8 BOMなしはVisual Studio 2010にとってはunicodeではない

UTF-8 BOMなしでコードを書いていますと,
「warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」
と言われます.いや,Unicodeですがな,と思うのですが,Visual StudioはUTF-8 BOMありでないとUnicodeとして扱ってくれないらしいのです.コメントに日本語を使うのをやめるのがよいでしょうか.

2013年8月19日月曜日

Freeglut+GLEW+glGenVertexArrays=動かない

OpenGL 4.3に対応したOpenGL Programming Guide (8th Edition)の,最初のプログラムを試そうと思いました.FreeglutとGLEWの最新(安定版)を入れたところ,glGenVertexArraysが正しく動作しません.調べたところ,
http://stackoverflow.com/questions/13558073/program-crash-on-glgenvertexarrays-call
ということで,glutのcontext関係の命令とGLEWが共存するには,glewExperimantal = GL_TRUE;を指定しなければならないようです.
最初のプログラムが素直に動かないってどうよ > 赤本

2013年6月8日土曜日

Blackmagic Design Intensity Shuttle for USB 3.0 + Sony Handycam HDR-CV500V

コントロールパネル
Blackmagic Design Control Panel の Set default video standard を HD 1080i 59.94 に設定する.

Media Express (version 3.2)
Edit > Preferences の Project Video Format を HD 1080i 59.94 に設定する.

Handycam
撮影設定 > HD/SD設定 を HD画質 に設定する.
撮影設定 > 録画モード を HD FH に設定する. < 必要ない.
一般設定 > 出力設定 > HDMI解像度 > ハイビジョン画質 を 1080i に設定する.

2013年4月17日水曜日

bashの書式いろいろ

他のシェルスクリプトを呼び出す

source ./common.sh

文字列を分割する

$aをカンマで分割したい場合
IFS=','
set -- $a
$1,$2,...に分割された部分文字列が順次入る.
IFSがデリミタ.

関数

関数の定義は
funcname() {
 :
}
引数は,$1,$2,...に入る.
返り値は,echo で返す.
関数は`funcname`で呼び出す.
引数はコマンドラインでの作法と同じ.

簡単な例:

to_cyg() {
    echo "/cygdrive/${1/:/}"
}
data_basedir="c:/data/trimming/"
src_dir="${data_basedir}src/"
cyg_src_dir=`to_cyg ${src_dir}`

ローカル変数

関数内でのみ有効なローカル変数の使用
local $filename=$1

計算

bash限定とのことだが(未確認),exprを明示的に呼び出さなくてもよい記述方法として,$(( と $)) で囲む方法がある.
中では,変数名に$を付けなくてよい.
local xmin=$2
local ymin=$3
local xmax=$4
local ymax=$7
local width=$((xmax - xmin + 1))
local height=$((ymax - ymin + 1))

配列

配列への代入は,()でくくる.
p=(`split_answer ${answer}`)
通常の変数と同じように使用できる.添字に変数を使う場合,$は不要.
p_width=5
:
${p[p_width]}

2013年4月16日火曜日

bashでファイル名操作


#! /usr/bin/sh

f="/cygdrive/c/data/trimming/src/JPCNN093.IMG"

echo "full: $f"

directory=${f%/*}
echo "directory: $directory"

other_directory=${directory/src/dst}
echo "other_directory: $other_directory"

basename=${f##*/}
echo "basename: $basename"

filename=${basename%.*}
echo "filename: $filename"

extension=${basename##*.}
echo "extension: $extension"

stringstreamをatoiの代わりに使う

そこまでして無理に使わなくてもという気もしますが.

#include <sstream>

std::stringstream s;
s << argv[1];
s >> width;

s.clear();
s << argv[2];
s >> height;

これで,

width = atoi(argv[1]);
height = atoi(argv[2]);

と同じことができる.

stringstreamを使いまわすときに,s.clear() すること.

入出力をまとめることもできるけれども,文字列の間に区切り文字が必要.

std::stringstream s;
s << argv[1] << " " << argv[2];
s >> width >> height;

2013年4月4日木曜日

sedで置換

基本技だがすぐに忘れてしまう...

sed -e "s/置換前/置換後/g" 入力ファイル名 > 出力ファイル名


2013年2月17日日曜日

cudaMallocの速度

cudaMallocに要する時間の測定結果.

環境

  • windows 8 64bit
  • visual c++ 2010 express
  • cuda 5.0
  • intel core-i5 3317 1.70GHz
  • GeForce GT 620M
  • cudaMallocとcudaFreeだけ,転送はしない
結果

  • 0.3msec / cudaMalloc()
  • サイズ4Mくらいまでは一定時間と考えてよい
  • 大規模な処理なら無視できるが,時間にシビアな用途(画像処理など,1/60=16.7msecで作業を終わらせる必要があるなど)では,複数回実行すると実行時間に影響を与えるレベル.



2013年2月14日木曜日

typedefされている型が,同じかどうか調べる

typedefされている型が,同じかどうか調べる.
typeidを使う.
typeinfoをインクルードする.


#include <iostream>
#include <typeinfo>
typedef int type_a;
typedef int type_b;
typedef short type_c;
int main(int argc, char **argv)
{
  if (typeid(type_a) == typeid(type_b)) {
    std::cout << "same" << std::endl;
  } else {
    std::cout << "different" << std::endl;
  }
  if (typeid(type_a) == typeid(type_c)) {
    std::cout << "same" << std::endl;
  } else {
    std::cout << "different" << std::endl;
  }
  return 0;
}

2013年2月11日月曜日

Visual C++ でwarningの抑制

ソース単位:
#pragma warning(disable: 4819)
プロジェクト単位:
プロジェクトのプロパティ > 構成プロパティ > C/C++ > 詳細設定 > 指定の警告を無効にする に番号を指定

2013年2月10日日曜日

STLのfor_each

お題: std::vector<std::list<int> > の,std::list<int> の要素を全て削除する.

std::for_each() を使えばよろしい,と思った.

以下,ダメな例:
#include <algorithm>
#include <list>
#include <vector>

void clear(std::list<int> l)
{
  l.clear();
}

int main(int argc, char **argv)
{
  std::vector<std::list<int> > data;

  /* snip */

  std::for_each(data.begin(), data.end(), clear);

  /* snip */

  return 0;
}
以下,動く例:
#include <algorithm>
#include <list>
#include <vector>

void clear(std::list<int> &l)
{
  l.clear();
}

int main(int argc, char **argv)
{
  std::vector<std::list<int> > data;

  /* snip */

  std::for_each(data.begin(), data.end(), clear);

  /* snip */

  return 0;
}
どこが違うか? for_eachの引数として与える関数の引数を参照渡しにするかどうか,だけ.しかも,宣言部のみ.また値渡しの方は,全要素コピーが発生している? 気をつけよう.

追記: しかしながら,メンバ関数をfor_eachの第3引数にする場合は,bind1st と mem_ref を使うのが定石らしく,かつ,参照呼び出しは,boostまで導入せねばならないようだ.読んだだけで未確認.
http://hippos-lab.com/blog/node/319
そこまでせなあかんのやったら,もう明示的にループまわすわ...

2013年2月1日金曜日

同じ実行ファイルがcygwinにもある

ある実行ファイルについて,cygwinに同じ名前の実行ファイルが存在する場合に,cygwin外を優先して実行するには,PATHの設定を.bach_profile中で以下のように行う(例はpythonとtexlive).

export PATH=/cygdrive/c/Python27:/cygdrive/c/texlive/2012/bin/win32:$PATH

TeXで条件分岐

ifthenパッケージを用いると実現できる.
以下の例では,ColorFiguresを1にすると「color」,1以外にすると「mono」と表示される.
\documentclass{jarticle}
\usepackage{ifthen}

\def\ColorFigures{0}

\begin{document}

\ifthenelse{\equal{\ColorFigures}{1}}{color}{mono}

\end{document}