ラベル 研究初心者向け講座 の投稿を表示しています。 すべての投稿を表示
ラベル 研究初心者向け講座 の投稿を表示しています。 すべての投稿を表示

2014年2月19日水曜日

tmuxのためのソナチネ




サーバーとかで作業する時,つないだ先でたくさんターミナルを開きたい,切断しても継続して欲しいと思うことがあるかもしれません.

そんな需要に答えるのがscreentmuxなどのターミナルマルチプレクサです.screenとtmux,あまり大きな違いはないのですが,僕はtmuxを使ってるのでtmuxについて説明します.

2014年1月14日火曜日

8階に最も速くたどり着く方法









新年あけましておめでとうございます。

8階に最も速くたどり着くには、7階でエレベータを降りて全力で階段を駆けあがればい

いです。

では。


2013年8月18日日曜日

iTermからFinderへ


http://cdn.rottmann.net/wp-content/uploads/2013/03/logo.png



おはようございます。

iTermのディレクトリをFinderに表示させるコマンドを紹介します。

有名かもしれませんが、僕は初めて知りました。

open .

です。


2013年6月21日金曜日

ssh << MOSH | MITやっぱすげえ





(上図は、MITでの物理の授業風景らしいです)

おはようございます。Server使う人向けの話です。

SSHをより高速に便利なや〜つをMITが開発しました。

名前をMOSH と言います。

どう便利なのかは、参考リンクを。
使い方は、sshと同じです(!!!!)。
ここでは、インストール方法だけを。


(Homebrewの人)
$brew install mobile-shell

(Mac portsの人)
$sudo port install mosh


(GUI派の人)
公式サイトのpkgファイルをダウンロード


*落合研究室の人へ
pana2にはインストールしてあるので、ぜひ家やスタバ、サイパンから使ってみてください。


参考
MITからモバイル時代のSSH代替品



2013年2月2日土曜日

グローバル変数の危険性

プログラムで何でも便利だからといって何でもかんでもグローバル変数にするのはよくありません。




2013年1月12日土曜日

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

以前,ちょっと知識でポートフォワーディングについて書きましたが,PCを入れ替えたりして接続先のホスト情報が変わった場合,いつものようにssh接続しようとすると以下の様なメッセージが出るかもしれませんし,出ないかもしれません.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e5:99:11:ec:f7:f5:61:fa:41:c2:04:76:9b:0f:68:1f.
Please contact your system administrator.
Add correct host key in /var/root/.ssh/known_hosts to get rid of this message.
Offending key in /var/root/.ssh/known_hosts:1 ← ☆ここ☆
RSA host key for [接続先IP] has changed and you have requested strict checking.
Host key verification failed.
もし出た場合は,☆ここ☆と書いてある行に示されているファイルをemacsなりviなりで開いて,接続先IPの行を消すと,次接続した時にホスト情報が再作成されてたぶん直ります.


・参考


2013年1月9日水曜日

>>

標準出力をファイルに書き込むときに,

$ ./test > test.txt

みたいにしますが,

$ ./test >> test.txt

とすると追記ができるらしいです.




2012年12月20日木曜日

C言語ちょっと知識

プログラム高速化への道は難問であり、可読性との兼ね合いもあります。そこで、トリッキーですが、int型の初期化において排他的論理和を用いた手法を提案したいと思います。
int v;

v ^= v;//初期化
ちなみに、筆者の友人の環境によると、v=0とくらべて、2×10^(-8) [s]早くなりました。 時間がない人はお試しください。


2012年12月19日水曜日

論文管理ソフト | mendely

【追記】
preferences > BibTeX > Enable BibTex syncingにチェック

これで持ってる論文bibファイルが生成されます。



タイトルの通り論文管理ソフトです.
http://www.mendeley.com/

あまり使いこなせていませんが,以下の特徴が挙げられます.

  • 論文の情報を自動で認識 (タイトル,著者…etc)
  • 指定したフォルダ内のファイルを自動で読み込む
  • それぞれの論文にメモを書くことが可能
  • PDF検索
  • 日本語には弱い?
ちなみにiOS,Android版もあります.


2012年12月11日火曜日

配列のコピー

配列のコピーって、意外と面倒ですよね。僕の場合、for文を使って要素を一つづつ代入させてました。もっと簡単にできないかなと思って考えているうちに、構造体をつかえばいいんじゃないかなと思いました。

struct array_tag{int x[100]};

struct array_tag a,b;
a=b;


ではでは~。


2012年12月5日水曜日

丸め誤差の脅威( ゚ρ゚ )アゥー

みなさんはプログラムの数値がコンピュータ内では全て2進数として扱われていることはご存知ですよね!?
実はこの性質が引き起こすバグが存在し得ます。



2012年12月2日日曜日

FAQ C言語

C言語で疑問をもつとグーグル先生に相談する方も多いと思いますが、教科書的なものをみつけたのでこちらも参考にすると知識が深まりそうです。

FAQ


*ただし、ちょっと古いです。


2012年11月27日火曜日

emacsのキーバインドを調べたい

「キーバインドの一覧が見たいです」↓
M-x describe-bindings

「特定のキーバインドの役割が見たいです」↓
M-x describe-key
    をしたあと調べたいキーバインドを入力

2012年11月26日月曜日

ドットインストール

アプリ一発当ててやろうという声を聞いたような気がするので、新たな言語を始めるときにおすすめのサイトを共有します。

3分動画でマスターする初心者向けプログラミング学習サイト - ドットインストール

お手すきの際に是非どうぞ。




2012年11月23日金曜日

“蒸しタオル”のススメ

Ochiai Labの皆さんはきっと昼も夜もなく四六時中、24時間ずっとプログラムを書き続けていることと思います。しかし、それでは目に優しくありません。そこで、目のケアに効果的な“蒸しタオル”を紹介したいと思います。


2012年11月20日火曜日

ショートカットキー覚えたい人向け情弱ツールのご案内

ショートカットキーマスターへの道を手助けしてくれるアプリがあります。

これでMacのショートカットは完璧!全てのアプリのショートカットをCommand長押しで表示する『CheatSheet』


このアプリを起動しなくなった時、あなたは晴れてショートカットキーマスターと呼ばれていることでしょう。

ターミナルとEmacsに関する風テク

唐突ですが風キッズのみんなに質問です.
みんなはemacsからターミナルに移動した時何をしますか?

たぶんいましがたemacsで編集してたファイルに関する処理をすると思います.
しかし!このときカレントディレクトリが常に今編集してたファイルのフォルダになってるほど人生は甘くないです.ー そう,甘くないんです.
だから私たち人間はこんなときcdとか打つのだと思います.

でもいちいちパス打って移動するのってめんどくさいです.なので今emacsが開いてるファイルのフォルダに一発でcdできるコマンドを紹介します.逆関数としてターミナルのカレントディレクトリをemacs上でdiredさせる方法も紹介します.

○ emacs側の設定
(server-start)
(defun non-elscreen-current-directory ()
  (let* (current-dir
         (current-buffer
          (nth 1 (assoc 'buffer-list
                        (nth 1 (nth 1 (current-frame-configuration))))))
         (active-file-name
          (with-current-buffer current-buffer
            (progn
              (setq current-dir (expand-file-name (cadr (split-string (pwd)))))
              (buffer-file-name)))))
    (if active-file-name
        (file-name-directory active-file-name)
      current-dir)))

○ shell側の設定
alias eclient="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient"
function cde () {    
    EMACS_CWD=`eclient -e "
      (if (featurep 'elscreen)
          (elscreen-current-directory)
        (non-elscreen-current-directory))" | sed 's/^"\(.*\)"$/\1/'`

    echo "chdir to $EMACS_CWD"
    cd "$EMACS_CWD"
}
function dired () {
  eclient -e "(dired \"$PWD\")"
}

あとはターミナル上でcdeと打てばemacsで今開いてるバッファのフォルダに行くし,diredと打てばカレントディレクトリをemacs上でdiredしてくれます.完.

※注 これzshオンリーなテクかもしれません.bashでできるのか知らないです.


○ 参考サイト様


2012年11月14日水曜日

メモリリークを調べる

ぐるぐるまわるプログラムを書いてるとだんだんメモリ使用量が増えてくポップな現象いわゆるメモリリークが起きることがあるので調査可能なBoehm GCというライブラリを紹介します.

○ インスコ

Boehm GCのソースはここにあります.
./configure → make → make install のコンボでインストールできます.

○ 使う

4個くらいのナンセンスなプログラムを例にぐるメポップの見つけ方の例を示します.

(0) 準備
define GC_DEBUG
include "gc.h"
define malloc(n) GC_MALLOC(n)
define calloc(m,n) GC_MALLOC((m)*(n))
define free(p) GC_FREE(p)
define realloc(p,n) GC_REALLOC((p),(n))
define CHECK_LEAKS() GC_gcollect()
デバッグ用に上の文を書いときます.プログラム内でmallocした領域がBoehmの管理下に入ります. ちなみにこれを導入したプログラムをgccでコンパイルするときのオプション例は以下.
gcc -o TS TS.c -I/usr/local/include -L/usr/lib -lgc

(1) ループ内でmallocしたアドレスを何度も同じポインタ変数に代入しよう
int main(void)
{
  GC_find_leak = 1;
  
  int i; int *p;
  for(i=0;i<100;i++){
    p = (int *)malloc(100*sizeof(int));
  }

  exit(0);
  return 0;
}
GC_find_leak=1は ぐるポ検出モードです. return の前に exit してるのは return した瞬間にガベコレが働いていろいろうるさかったからです.Let Mr.Exit shut him upということです. とりあえずこれでちゃんと検出できました.やったね!v(^o^)v
実行結果はリークポイントが行数で表示されます.長いので端折りますが. ちなみにループが1回だと検出はしません.


(2) freeしないvoidのmalloc用関数を呼び出してみよう
void isalloc(int n)
{
  int *p;
  p = (int *)malloc(n*sizeof(int));
}

int main(void)
{
  GC_find_leak = 1;

  int i;
  for(i=0;i<100;i++){
    isalloc(100);
  }

  exit(0);
  return 0;
}
検出.これはループ呼び出し1回だけでも検出します.


(3) (2)のプログラムでちゃんとfreeしてみよう
void isalloc(int n)
{
  int *p;
  p = (int *)malloc(n*sizeof(int));
  free(p);
}
検出せず.

(4) (2)のプログラムで取得した領域をstaticなポインタ配列に代入して保持しよう
void isalloc(int n)
{
  int *p;
  static int num_hist=0;
  static int **p_hist;
  
  p = (int *)malloc(n*sizeof(int));
  p_hist = (int **)realloc(p_hist, sizeof(p_hist)+n*sizeof(int *));
  p_hist[num_hist++] = p;
}
これも検出せず.

ということで,領域のアドレスを保持したポインタ変数が生きてる場合は検出しませんが,解放してない領域のアドレスが手の届かないとこにいっちゃってfreeできない場合に有効みたいです.要するにこの書き方だと解放されずに上書きされたもののみ検出します.

役立つのか微妙ですが興味ある人はお役立てください.

2012年11月10日土曜日

対話式デバッガ: GDB

バグを取る、つまりデバッグの手段として一番シンプルな方法は恐らく文を出力することだと思います。
怪しい変数の値を出力させたり、途中でプログラムが止まってしまう場合は怪しい処理の前後で文を出力させたりなど。

それ以外にも、 この記事この記事の方法を使うという手もあります。

実はそれ以外にも方法があるんです!
それは、デバッガを使うということ。
gccやg++にはGDBというデバッグツールが提供されています。
その使い方を今回はご紹介致します。



2012年11月4日日曜日

複素乗算

複素乗算の演算量を減らす方法です。

 通常、実数乗算4回+加算2回ですが、実数乗算3回+加算5回にすることが可能です。 

一般的に、乗算は演算量が多いため、乗算回数はできるだけ減らすことが良しとされています。

complex MulComplex2(complex x, complex y)
{
  double temp;
  complex z;

  temp = y.im * (x.re - x.im);
  z.re = x.re * (y.re - y.im) + temp;
  z.im = x.im * (y.re + y.im) + temp;
  
  return z;
}