2017年4月4日火曜日

Macの初期設定を1発でキメる。

お久しぶりです.Jです.

毎年のことながら,PCの初期設定って面倒くさいですよね.Homebrew入れてBrew Cask入れてApp Storeでアプリケーション落としてきて,あれ後何が必要だっけ?となり,おまけにLatexのパッケージのアップデートは永遠に終わらないし….
そこで1コマンドで設定を完了させるスクリプトを作りました.こちらからどうぞ.
使い方(というほどのこともありませんが)はZipでダウンロードしてきて解凍して,ターミナル開いて実行するだけです.いくつかのステップに分割してあるので,途中エラー等で止まってしまったらそこから再開してください.あれ,1コマンドじゃな…


Latexのパッケージも,フルインストールではなくTex Shopやら要らないものを省いた最小構成にしてあるのでアップデートにもそこまで時間は掛からないと思います.
以下の記事などを参考にさせていただきました.ありがとうございます.
Homebrewで最小構成のTeX環境を構築する - WEB SALAD
OS X (El-Capitan) に最小限の LaTeX 環境を構築


ちなみに私はMacupというツールを使って新しいMacの設定やアプリケーションを1コマンドでメインのものと同期させてインストールするようにしています.PCを換えたり初期化し直す際に非常に便利です.上のスクリプトはこれの簡易版ということになります.

2016年10月16日日曜日

ファイル同期サービス・ツールまとめ



複数の端末でファイルを同期できるサービスやツールをまとめてみました。
自身の研究生活で利用してきた経験からの所感もあります。
これから使ってみたい人や、現状のサービスに満足していない人の参考になれば幸いです。

完全に個人の見解ですし、筆者は専門家でもないので、違ってたら教えてください。
あと、全部無料版で利用可能な範囲内で言及してます。



2016年8月24日水曜日

pythonのすゝめ

最大限楽をしたい.
誰もが思い描く人生だと思います.

本稿では,これまで出来る限り楽をして生きてきた僕が,
楽をしてプログラムを書く一つの方法を提案します.

その方法は...

Pythonを使おう!

pythonを使うメリットとしては,比較的学習コストが低く,簡単にコーディングができるという点が挙げられます.

一言で言えば,
気が向いたらpython使ってみたらどうでしょうか.
という記事であります.

pythonの基本事項を列挙します.
・ファイルの拡張子は「.py」
・変数定義,型宣言はいらない.
・さらに文末のセミコロン「;」もいらない.
・コンパイルなしで実行できる.
・c言語での{}はインデントで表現する.
・ちなみにコメントアウトは「#」

既に投稿されている記事(ターミナルを電卓化)で,pythonをターミナル上で電卓として使用する方法がありました.
今回はこれをちょっと拡張して,
AWGNチャネルでのBPSK変調BER特性(理論値)
を出力してみます.


########################
# bpsk.py
########################

import math

f1 = open('bpsk_ber.txt', 'w')

for i in range(0, 11):

    EbN0 = pow(10, (i/10.0))
    BER = (1.0 / 2.0) * math.erfc( math.sqrt(EbN0) )
    
    print i, BER
    print >> f1, i, BER

f1.close()


さて,これであとは実行するだけです.
ターミナル上で
python bpsk.py
と入力しましょう.
これだけで結果が一発で表示されます.
早すぎる,超便利.

以下,詳しく説明していきます.


(1) import math

C言語 --> #include <math.h>

全く同義ですが,mathにある関数を用いる際は,
"math.func()"のように"math."を関数名の前に書く必要があります.
サンプルプログラムでは,
"math.erfc()"
を使っていますよね.

(2) for i in range(0, 11):

C言語 --> for(i = 0; i < 11; i++)

これも同義です.
しかし,forの範囲がインデントによって管理されることに注意です.
今回のプログラムでは,
    EbN0 = pow(10, (i/10.0))
    BER = (1.0 / 2.0) * math.erfc( math.sqrt(EbN0) )
    
    print i, BER
    print >> f1, i, BER
がforの中身です.

(3) prinf i, BER

C言語 --> printf("%lf %lf\n", i, BER);

もうこんなの見たらC言語書いてられません.
めちゃくちゃシンプルです.

(4) printf >> f1, i, BER

C言語 --> fprintf(f1, "%lf %lf\n", i, BER);

これも楽ちん.


!最後にpythonを使うにあたって注意!
大規模なシミュレーションには向きません.
実行速度は遥かにC言語の方が速いので,普段の研究ではなかなか使えないかと.
筆者は理論値を出すときや,数値計算で使ってます.

何事もトレードオフですね.

2016年8月23日火曜日

風のごとくコンパイルする

風キッズの皆さんお久しぶりです。
今回は風のようにコンパイルする方法を紹介します。
基本的には以前の記事と同じ内容になりますが多少改良を加えてみました。
ここでは/usr/local/binにパスが通っているものとします。

$ sudo vi /usr/local/bin/compile

でコマンドを作成し、以下をコピペしてください。

#!/bin/sh
# Compile C file.
set -Cue

if [ $# == 0 ]
then
    echo "No argument."
    exit 1
fi

if [ -f $1.c ]
then
    gcc -o $1 $1.c -lm -lfftw3 -x c -g -Wall -Wextra ${@:2}
else
    echo "No such a C file."
    exit 1
fi

実行権限を与えます。
$ sudo chmod +x /usr/local/bin/compile

これでどこでもhoge.cを
$ compile hoge -option1 -option2
でコンパイルできます。

ある順番以降の任意の個数の引数を後ろにつける方法はこちらの記事を参考にしました。
また、gccの警告オプションについての説明はこちらの記事なんかがいいんじゃないかと思います。

2016年8月1日月曜日

AtomエディタでさいつよのLaTeX環境を構築する

アトム、してますか?
AtomとはGithubが開発した近年注目のエディタであり、ITやWebの界隈の若い人たちには広まってきていますが、アカデミックな世界ではまだEmacsやVim、Visual Studioを使用する傾向が根強く、LaTeXに関する情報もあまり充実しているとは言えません。
そこで今回は、研究室内で数少ないAtom派の筆者がLatex環境の構築について解説したいと思います。

まずは入れるべきパッケージを紹介します。

① latex

AtomからLaTeXファイルを直接コンパイルするパッケージ。
筆者の環境である(u)pTeXエンジンでLatexmkを使う前提で話を進めます。
まずは設定から「TeX Path」を設定し(El Capitan であれば /Linrary/Tex/texbin になるはず)、「Builder」を「latexmk」、「Engine」を「pdflatex」とします。
「Custom Engine」に「latexmk -pdf」と入力します。
出力形式は「pdf」、「Open Result after Successful Build」、「Open Result in BackGround」と「Always Open Result in Atom」にチェック
次にホームディレクトリに .latexmkrc ファイルを作成し、以下のコードを貼り付けます。

#!/usr/bin/env perl

# Commands
$latex            = 'platex -synctex=1 -halt-on-error';
$latex_silent     = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex           = 'pbibtex %O %B';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';

# Max number of typeset
$max_repeat       = 5;

# Make pdf via dvi
$pdf_mode   = 3;

# Preview application
# $pdf_previewer    = "open -a /Applications/Atom.app";

# Overwrite setting
$pvc_view_file_via_temporary = 0;

これが何をしているのかの解説はこちらこちらなどに任せます。
各自で適宜修正してください。
これで Ctrl + Option + b と押すだけでコンパイルとpdfの更新ができます。
保存するたびに自動でコンパイルしたい場合には「Build on Save」を、ソースジャンプをしたい場合には「Enable SyncTeX」をチェックしてください。



②language-latex

LaTeXの文法に合わせてカラーをつけてくれるパッケージ。
タブ幅や折り返し幅も設定できます。



③latexer

文法や参照の自動補完をしてくれるパッケージ。
BibTeXのcitationなどに非常に便利。


④pdf-view

Atom内でpdfファイルを開くパッケージ。
ズームや上下移動もキーボードからできます(誰かvimのキーバインドで移動する方法があれば教えてください…)。
「SyncTex Reverse sync behavior」は「Click」または「Double Click」にしておきましょう。


これで準備は整いました。
あとは編集して保存するたびに自動でpdfが更新され、クリックでソースにジャンプすることができます。
これでもうSkimもSumatraも不要です。
必要なのはただ1つ、Secom Atomだけです。

※ 2016/10/29 追記