忍者ブログ
日々の研究生活のメモ書きなど
(2010/11/22)
勢いでblogを作成してしまいました。

扱うテーマについては、C言語(たまーにc++も)、gnuplot、Debian、Macなどです
(これから他のジャンルに手を出していく可能性もあります)
メモ書き程度のものですが、同じことで悩んでいる方の役に立てれば幸いです

本業は学生で、物理屋を目指しています


( 2015/11/06 追記)
「bus error」「segmentation fault」で来られた方にはとてもイラっとするブログタイトルで申し訳ありません
bus error はファイルの入出力関連
segmentation fault は配列のindexまわりのエラーである可能性があるので、そこらへんをチェックしてください


( 2018/01/01 追記)
( 2018/01/21 追記)
実は、2017年末に理学博士の学位を取れました〜
2018年1月中旬から某所で研究者(ポスドク)として働きます

つまり、このブログには4回生からD5で理学博士を取得する間の8年間に習得した 知識や経験値がすべて蓄積されている、ということになります(まじか)
ただし、物理に関することはほぼここには書いていないのであくまで計算機やプログラミング言語に関することだけです・・・
あとはgnuplotとかポケモンGOとか







PR
scpするときに転送先に、そのディレクトリがなかった
scpのオプションでなんとかできるのかな〜と思ったけど、sshでできるらしい
ssh hoge@hoge.ac.jp mkdir new_dir

アカウント名 hoge
ssh先 hoge.ac.jp
実行するコマンド mkdir new_dir






すでにOSはインストール済のサーバーについて初期設定をしたのでメモ




■ まずは取扱説明書を読む

パスワードやら電源のボタンなどの説明がある
それすら知らないレベルでサーバーのことはわからん




■ 計算機の電源を切るには
% su -
# shutdown -h now
■ 計算機の再起動をするには
# su -
# shutdown -r now

または
# reboot
■ ユーザーを追加する

■ 参考 : ユーザーを追加する
# adduser hoge
この後パスワードを聞かれるので設定する

シェルをtcshにしたい場合は以下の通り
取説には -s /bin/tcsh って書いてあったけどこれではエラーが出た
# adduser --shell /bin/tcsh hoge

ユーザーのパスワードを変更したい場合は
# passwd hoge
ただpasswdと打つとスーパーユーザーのパスワードを変更することになるので注意



■ HDDのパーティションを確認
# df -h
■ OSのversionを見るには
% cat /proc/version



今回はDHCPじゃなくて固定IPで運用する
取扱説明書にはnmtuiってコマンドでネットワーク設定をすると書いてあったので、
そのままやってみた
そしたら、意外とうまくいかなくて詰まった

■ 参考 :ネットワーク設定

にある通り以下の設定ファイルを修正する
# vi /etc/network/interfaces

# 以下追記
auto hoge
iface ens3 inet hoge
# IPアドレス
address 10.0.0.30
# ネットワークアドレス
network 10.0.0.0
# サブネットマスク
netmask 255.255.255.0
# ブロードキャストアドレス
broadcast 10.0.0.255
# デフォルトゲートウェイ
gateway 10.0.0.1
# ネームサーバー
dns-nameservers 10.0.0.10
みたいに書く(値は各人の環境で置き換える)
ただし、自分の環境ではOSがミニマムでインストールされていたのかDNSがきちんと動いていなかった

設定内容の詳細は
■ 参考 :man interfaces 覚書



DHCPで動かしたかったら
# vi /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
でいいはず(やってないのでただのメモ)


■ ネットワークへの接続確認
ping [ゲートウェイサーバーのIPアドレス]
これで何も応答がないならなにかトラブってる

本当に素人なので↓とかのサイトを見ながらあれこれやってみた
■ 参考 :ネットワークにつながらない時に確認する4つの手順Linux

■ 参考 :インターネットに繋がらないときの5つのコマンド(Linux編)Linux



■ DNSサーバーを登録する

dns関連のパッケージが入っていないので手でDNSサーバーのIPアドレスを
/etc/resolv.conf に追記する
これでDSNサーバー問題が解決した

その後はパッケージを最新にしてアップデートする
# apt update
# apt upgrade
必要そうなパッケージをインストールする
# apt -y install dnsmasq resolvconf
# apt -y install emacs
# apt -y install tmux
■ sudoの設定
# apt -y install sudo
すでに入っていた
# visudo

最終行に
hoge ALL=(ALL) ALL
と追記する
他の設定で、再起動や電源を落としたり一部のコマンドをsudoで使えないようにすることも可能



■ ntpサーバーの設定
2つのサービスがある
chronyd : 仮想環境や NTP サーバと常に通信できない環境で選択
ntpd : NTP サーバと常に通信できる環境で選択
# apt -y install ntp
# vi /etc/ntp.conf

# 18行目:コメント化
# pool 0.debian.pool.ntp.org iburst
# pool 1.debian.pool.ntp.org iburst
# pool 2.debian.pool.ntp.org iburst
# pool 3.debian.pool.ntp.org iburst
# 同期をとるサーバーを指定
server 0.0.0.0 iburst
# 50行目:時刻同期を許可する範囲を追記
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap


ファイルを修正後にntpサービスを再起動する
% sudo systemctl restart ntp
ntpq -pで動作確認できる


■ sshサーバーの設定
sudo apt -y install openssh-server

% sudo emacs /etc/ssh/sshd_config

32行目:コメント解除して no に変更
PermitRootLogin no
■ webサーバーの立ち上げ
sudo apt -y install apache2
設定を書くファイルは通常は `/etc/httpd.conf`だが、Debianは少し違う
■ 参考 : DebianのApache2設定ファイルについて
% sudo emacs /etc/apache2/conf-enabled/security.conf

25行目:変更
ServerTokens Prod
これによってApacheのversionやOS情報を外に出さない

% sudo emacs /etc/apache2/mods-enabled/dir.conf

2行目:ディレクトリ名のみでアクセスできるファイル名を設定
DirectoryIndex index.html index.htm
■ 個人ページの設定
■ 参考 :[3.1] ファイルの置き場所
% mkdir ~/public_html
% sudo emacs /etc/apache2/mods-available/userdir.conf
UserDir public_html`になっていることを確認する
この設定ファイルの内容を反映させる
# a2enmod userdir
% sudo systemctl restart apache2
これでlocalhost/~hoge というページにあるindex.htmlが見れるようになったはず
sudo emacs /etc/apache2/sites-enabled/000-default.conf

13行目の
DocumentRoot /var/www/html
となっている
localhost とfirefoxとかで打って開くページは /var/www/html/index.html
なので /var/www/html 以下にファイルを置くと、webサーバーで公開することができる



さらに.htaccessの設定をしてアクセスにパスワードを要求するようにする

■ 過去記事 :【雑記】サーバーのあるディレクトリ以下にアクセスするときだけパスワードを要求するように設定したい

% sudo emacs /etc/apache2/apache2.conf

<directory var="" www="">
Options Indexes FollowSymLinks
# AllowOverride None
AllowOverride All
Require all granted
</directory>

% sudo systemctl restart apache2

のようにAllowOverride Allに変更する
最後にapacheを再起動する
これでhtaccessが機能するようになるはず





% su
rootに切り替える
ただし今いるディレクトリからは動かない

% su -
rootに切り替える
ただし今いる場所からルートのホームディレクトリに移動する

■ 参考 : su と su - の違い


違いは - の有無
-を付けるとrootの設定ファイルを読み込む
-をつけないと設定ファイルを読み込まないので、一般ユーザーの設定したPATHとかがそのまま引き継がれる







% .libPaths()
でわかる

自分の場合は
/Library/Frameworks/R.framework/Versions/3.5/Resources/library
だった


自分で追加したい場合は
% .libPaths("./hoge")
のようにする
これを ~/.Rprofile に書いておくと勝手に起動時に読み込まれる
(パッケージのインストール先の優先順位はどうなる? )





某申請書類をTeXで作成しようとした(これまでもTeXでやってた)
そしたら次のようなコンパイルエラーが出始めた・・・
This is e-pTeX, Version 3.14159265-p3.8.1-180226-2.6 (utf8.euc) (TeX Live 2018/MacPorts 2018.47642_8) (preloaded format=platex 2019.3.6) 21 MAR 2019 16:03
entering extended mode
restricted \\write18 enabled.
%&-line parsing enabled.
**pd.tex
(./pd.tex
pLaTeX2e <2018-04-01>+1 (based on LaTeX2e <2018-04-01> patch level 2)
Babel <3.18> and hyphenation patterns for 3 language(s) loaded.
(/opt/local/share/texmf-texlive/tex/platex/base/jarticle.cls
Document Class: jarticle 2018/02/04 v1.7h Standard pLaTeX class
\\c@@paper=\\count83
(/opt/local/share/texmf-texlive/tex/platex/base/jsize11.clo
File: jsize11.clo 2018/02/04 v1.7h Standard pLaTeX file (size option)
)

(略)


(/opt/local/share/texmf-texlive/tex/latex/graphics/graphicx.sty
Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)

(/opt/local/share/texmf-texlive/tex/latex/graphics/keyval.sty
Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
\\KV@toks@=\\toks15
)
(/opt/local/share/texmf-texlive/tex/latex/graphics/graphics.sty
Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)

(/opt/local/share/texmf-texlive/tex/latex/graphics/trig.sty
Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
)
(/opt/local/share/texmf-texlive/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: dvipdfmx.def on input line 91.

(略)

(./forms/hook5.tex) (./forms/hook7.tex) (./forms/pd_forms.tex
(./forms/pd_form_03-04.tex
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <10.95> on input line 24.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <8> on input line 24.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <6> on input line 24.
(./blahblah.tex)
! Undefined control sequence.
\\Gread@pdf #1->\\Gread@generic
{#1}\\Gread@extractbb@aux
l.28

?
! Emergency stop.
\\Gread@pdf #1->\\Gread@generic
{#1}\\Gread@extractbb@aux
l.28

End of file on the terminal!

申請書類のTeX版を作ってくれてるYさんにこのエラーを見せて相談したところどうやら
graphicx.styってスタイルシートがめちゃくちゃ古いらしい
確かに1999年だわ・・・

このときのTeX環境はMacPortsですべて作ってて
% sudo port install texlive-lang-japanese texlive-luatex texlive-xetex texlive
って感じでやってた
もしかしたら
% sudo port install texlive-lang-japanese
だけだったかもしれんけど・・・

このあとportであれこれ試してたら完全にTeXがコンパイルできなくなりました
本当にありがとうございました






しょうがないからMacPorts以外の方法でTeXliveをインストールするかぁ〜と探していたら
以下のページを見つけた

■ 参考 : macOS に Tex Live 2018をインストールする

これでもできそうだったけど、いろいろとコマンドを打ったりでめんどくさそうだったのでパス





MacPortsさんであれこれするのは諦めてMacTeXをインストールすることにしました
ここを参考にしました

■ 参考 : 教授でもできるMac OS XへのLaTeXとTeXShopのインストレーション

他にはTeXShopの公式サイトにもMacTeXのダウンロードリンクがあったけど、
そっちはインストール関連の説明があんまりなかったので↑のほうが参考になりました



■ 記事にそってやっていく
1. MacTeX-2018をダウンロードする。

2. MacTeXをインストールする。
インストール先は /usr/local/texlive/2018
アンインストールするときは /usr/local/texlive/2018 を削除すればOK

3. Applications/TeX/TeX Live Utility (「アプリケーション」フォルダーの中のTeXフォルダーの中のTeX Live Utility) を立ち上げて、環境を整備する。
これは
% sudo tlmgr update --self
% sudo tlmgr update --all
するのと同じか?

4. 標準の用紙をA4に設定する
これはいるのかわからん・・・

5. PATHを追加する
/Library/TeX/texbin
をPATHの前に追加する、少なくともMacPortsのPATHよりも前にする

# ここからTeXShop
6. TeXShopを起動する => アップデートを確認で最新のversionにする

7. 環境設定 => pTeX (ptex2pdf) を選択する => TeXShopを再起動して設定を反映する

8. terminalで以下のコマンドを打つ
defaults write TeXShop FixLineNumberScroll NO
defaults write TeXShop SourceScrollElasticity NO
defaults write TeXShop FixPreviewBlur YES

これらのコマンドの意味は↓に書いてあった
■ 参考 : MacTeX 2016 のインストール&日本語環境構築法 (El Capitan 以前/以後両対応)
1行目の FixLineNumberScroll NO は,(10.7 Lionなど)古い OS X において存在した,行番号がスクロールしないOS側のバグに対処するための対症療法を停止させる措置です。最近の OS X ではこのバグが修正されていますので,この対症療法は不要となりました。対症療法が残っていると,スクロール速度が遅くなる原因となります。

2行目の SourceScrollElasticity NO は,スクロール時に上下端で大きく跳ね返るバウンスエフェクトを停止させる措置です。OS X 10.10 Yosemite 以降では,このバウンスがかなり大げさになり,以前の OS X と比べてうっとうしさが目立つようになりました。ですからこのエフェクトは停止させておくのがよいでしょう。

3行目の FixPreviewBlur YES は,OS X 10.10 Yosemite 以降において,プレビューウィンドウのPDFが(一部の環境で)ぼやけて見えてしまうのを防止する措置です。
とのこと


8. コンパイルするTeXソースの一番上は
\documentclass[dvipdfmx,uplatex]{jsarticle}
にする
自分の場合は、これをしなくてもコンパイルできたけど念の為メモ・・・






MacTeXをインストールしてみてすごいなぁ〜と思ったのは、これまで自分が手でインストールしてたスタイルシートが全部入ってること
すばらしい








先週、突然python2からpython3に移行しなければならないトラブルがあった
今のmacportsの上にさらにpython3をインストールしてみたが、うまくいかない
それで一度macportsをアンインストールしてやり直した
そしたらpython3はうまく動くようになった


が明けて今週、gnuplotがx11で動かない
どうやらDISPLAY環境変数がおかしなことになってるけど、それをどうすればいいのかはわからない・・・
x11はxQuartsを公式ホームページからダウンロードしてきてインストールしていた

Macでgnuplotが使えないだけならまぁaquatermとか別のを使って表示させればいいかなぁ〜くらいに思ってたけど
sshした先のgnuplotもxwindowをこっちに飛ばせないのでNG

これはまずい・・・





まずはXquartzのアンインストールをする

■ 参考 :Xquartzのアンインストール

メモ
#Xquartzの自動起動を停止
launchctl unload /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
sudo launchctl unload /Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist

#作成されたファイルを削除
sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz

#パッケージのインストール情報を削除
sudo pkgutil --forget org.macosforge.xquartz.pkg



その後でmacportでx11をインストールする
% port search xorg-server
xorg-server @1.18.4_3 (x11, devel)
The X.org / Xquartz X server.

xorg-server-devel @1.20.3 (x11, devel)
The X.org / Xquartz X server.

Found 2 ports.

% sudo port install xorg-server
なんかエラーが出て止まる

% sudo port -f activate xinit
% sudo port install xorg-server

インストールのあとで再起動する
これでx11関連のトラブルは解決できた

(今ふと思えば、sudo port -f activate xinitを1回実行したら再インストールなくてもトラブル解決したんじゃないの〜?)






その後、sshログインすると
Warning: No xauth data; using fake authentication data for X11 forwarding.
というエラーが表示されるようになった
プロットとかx11はきちんとできているので、実害は今のところないがなんとかしないと









NISを使ってパスワードを共有している計算機を使う機会があった

hogeというユーザを追加する方法は
% su
% useradd -m -g users hoge
% passwd hoge

% cd /var/yp
% make
これでOK


ユーザが自分自身でNISで共有するパスワードを変更したいときは
%yppasswd

ユーザが自分自身でログインシェルを変更したいときは
%ypchsh










■ plotの基本
plot(x, y)
■ 参考 : グラフィックスパラメータを設定する、確認する


■ 対数表示、常用対数のみ使える
plot(x, y, log="x")
plot(x, y, log="y")
plot(x, y, log="xy")


■ 範囲指定
plot(x, y, xlim=c(0, 1))
plot(x, y, ylim=c(0, 1))


■ タイトルとかラベル
plot(x, y, main="上につくタイトル")
plot(x, y, xlab="x軸のラベル")
plot(x, y, ylab="y軸のラベル")
ラベルとかを大きくするにはtmag=1.5とかするらしいけど、現在のRではもはやサポートされていないらしい
今使えるのは↓
mainを大きくしたいときは cex.main=1.5
labelを大きくしたいときは cex.lab=1.5
数字を大きくすると大きくなる


■ 重ね書き
plot(x, y)
par(new=T)
plot(a, b)
とか、linesを使う場合はpar(new=T)はいらないっぽい
ググった感じ、そっちを奨励してる人もいた
あとpar(new=T)を使う場合はグラフの範囲指定を意識的にしないといけない
plot(x, y)
lines(a, b)


■ 線の色
col = 1
col="blue"
col = rgb(1, 0, 0)


■ 線の太さ
lwd=2





(2019/03/06 追記)
# rhoをギリシャ文字で入れたい場合は
main = expression(rho)

# 通常の文章にギリシャ文字を混ぜたい場合はexpressionの中でpasteを使う
main = expression(paste(lambda, "=5 のポアソン分布 "))

■ 参考 : ggplot2でギリシャ文字や数式を表示したい

■ 参考 : Rコード:プロットのタイトルにギリシャ文字を利用する。







ここがわかりやすかった
といってもヒストグラムを1から書いたわけではなくて、どういうオプションが使えるのかをちょっと知りたかっただけ
■ 参考 : Rによるヒストグラムの描画



■ グラフの中に最尤推定法で得られたパラメーターを書き込みたい

■ 参考 : Rの数式描画の中で変数を展開したいときはbquoteを使う
hist(dat, freq = FALSE, ylim = c(0, max(max(h$density),max(y))), xlab = "z", ylab = "f(z)",
main = paste("Density Plot\nmu = ", round(a[1], 3), "\ntheta = ", round(a[2], 3), "\ngamma = ", round(a[3], 3) ), cex.main=1 )
cex.mainでmainの文字サイズを指定できる

pasteで文字列と変数を繋げた文字列を作ることができる
これで、グラフの中に最尤推定法で得られたパラメーターを書き込める

pasteでつなげたときに間に空白を入れたくないときは
paste("AAA", "BBB", sep="")
round(x, 2)
は桁数を短くするための関数
これで出力する小数点以下の数を2桁にできる









Rを使うことになったので新しくカテゴリを作った
ヘビーユーザーにはならないと信じてるので、凝ったことはしない




■ インストール
Mac用のRは https://cran.r-project.org の「Download R for (Mac) OS X」からインストールできる

追加のパッケージをインストールしたいときは起動後に
パッケージとデータ → パッケージマネージャ
からインストールできる


R起動時に毎回パッケージを読み込むようにするのがめんどくさいので設定ファイルを用意する
~/.Rprofile を作成する
読み込みたいパッケージ名が hoge だとすると、Rprofileの中に
library(hoge)
と書いておけばOK


RをGUIで実行したときもCUIで実行したときもその履歴を残したいときは、.Rprofileに次の文章を追記しておく
.Last = function() { if (interactive()) try(savehistory()) }






■ はじめに読む

■ 参考 : Rの初歩





■ コマンドメモ
このあと追記していきます

getwd()
今いる場所を調べる

setwd("/Users/hoge/foo")
ワーキングディレクトリを変える






■ データを読み込みたい

こんなデータを読み込みたい
1 5.2
2 2.3
3 1.1
4 6.9
5 10.2
6 1.1
7 2.4
みたいな感じで、複数行・複数列のデータ

↓ ここには情報はなかった
■ 参考 : Rでデータ読み込みから前処理までのTips


Rのwikiがあったので見てみたが、↑のようなフォーマットのデータの読み込み方法は書いてなかった
■ 参考 : ファイルを読み込む tips 集(暫定版)


ググってるとdata.frameというのを使うのが良さそうだった
data.frameについてよくまとめられていた
■ 参考 : データフレームTips大全
# テキストデータをその構造を維持したまま読み込み
# 列(変数名)ラベルが自動的につけられる、これがいらない場合は read.table("hoge.txt", header=TRUE)とすればいい?
data1 <- read.table("data/hoge.txt")


# 1列目のみ欲しいとき
data2 <- data1[, 1]


# data2のうち範囲指定してデータを取り出したいとき
# この場合は 4.6 < x < 5.0 を満たすデータのみ取り出せる
data3 <- subset(data2, 4.6<data2, data2<5.0)



■ スクリプト的にRを使いたいとき

やることを hoge.R というファイルに書いておく
Rを起動して
source("hoge.R")
で書いてあることを順次実行してくれる



■ データ書き出し

■ 参考 : テキストデータのファイル出力に関係する関数の例

writeを使うのが一番簡単そう
writeでは1つの変数しか書き出すことができないので、pasteを使って複数の変数を1つの文字列に収める必要がある
それを何度も書き出せばいいっぽい
Rだとヘビーな計算はさせないやろうし



■ whileループ
i <- 1
while (i < 6) {
print(i)
i = i+1
}
■ forループ,
for (i in 1:5) {
 print(i)
}
■ グラフを画像として保存したい
png("hoge.png")
のあとでプロット
画像の書き込みを終了するときは
dev.off()

pdfにしたいときは
pdf("hoge.pdf")
このあとでplotを何個も書くと、その分だけページができて複数の画像を同時に保存できる

epsは
postscript("hoge.eps")
tex用のepsは
postscript("hoge.eps", horizontal = F, onefile = F, paper = "special")


gnuplotでいうところの
set terminal something
set output "somthing"
を同時にできる感じなので便利





(2019/03/01 追記)
■ 指数表示にしたいとき

「R 指数表示にしたい」でぐぐったら指数表示にしない方法しか出てこなかった
とりあえず sprintf("%e", a)って感じで対応した
sprintf("%.3e", a)とかC言語と同じフォーマットはそのまま使える
便利




(2019/03/07 追記)

xという配列にデータ点を追加したいとき
先頭に1を追加したいときは
new_x < c(1, x)

後ろに1を追加したいときは
new_x < c(x, 1)









exp(x)-1 が入った計算をしてて、計算の精度が気になった
gslのドキュメントを見てたら、expm1という関数があるっぽい

よくよく調べてみたら、別にgsl内に限らずmath.hにある一般的な関数だった
expm1 = exp(x)-1

expm1fは返り値がfloat
expm1lは返り値がlong double

■ 参考 : C言語関数辞典 - expm1, expm1f, expm1l


忘れそうなのでメモ







1行のデータを読み込む方法は「猿でもわかるROOT」に書いてあった
この例はヒストグラムを作る方法だけど、自分が本当にやりたいのはTGraphでグラフを書くこと
#include <fstream>
TH1S h1(”name”, ”title”, 150, -10, 20);
ifstream data(”filename.dat”);
double x;
while (data >> x) h1.Fill(x);
data.close();
#include <fstream.h>という書き方は古いらしくてエラーが出た
今は#include <fstream>らしい




で、これを複数行のデータに置き換えたい

■ 参考 : Reading in data in columns from a file (C++)
double cola, colb, colc;
ifstream in(file);
while(!in.eof()){
in >> cola;
in >> colb;
in >> colc;
}
みたいにして、やると複数行読み込めるらしい
ただ、このままコードを書いて実行すると、なぜか最後の行に空の行が追加されてしまい
配列が1つ多くなってしまった
それを手で消すような処理をしてもよかったけどなんか気持ち悪いので他の方法を探した





結局動かすのはROOTのうえなので、ROOTの機能でそんなのがないかどうか調べてみた

■ 参考 : 4.1 Read Graph Points from File

自分が必要だったのはまさにこれ
データのフォーマットに合わせて"%lg %lg"の部分は置き換える
3行なら%lgを増やす
TGraphErrors *graph = new TGraphErrors("hoge.txt", "%lg %lg");
graph->SetMarkerStyle(kCircle);
graph->SetMarkerColor(2);

graph->SetTitle("simulation data dayo");
graph->GetXaxis()->SetTitle("Xaxis-no-label");
graph->GetYaxis()->SetTitle("Yaxis-no-label");
graph->Draw("AP");
c1->Print("hoge.png");



(2019/03/28 追記)

読み込んだデータのサンプル点数をする方法は、
graph->GetN()



(2019/04/01 追記)

データの値を見たいときは
graph->Print()
で画面に出力できる


また、データを直接いじりたいときはGetXなどを使って取ってくる
for(int index = 0;index < double >GetN();index++){
double x = graph->GetX()[index];
double xerr = graph->GetErrorX(index);
double y = graph->GetY()[index];
double yerr = graph->GetErrorY(index);
}
■ 参考 : TGraphErrorsを使いこなす


もしこの読み込んだデータのy座標のデータを100倍したい場合は、
for (int i=0; i>graph->GetN();i++) graph>GetY()[i] *= 100;


■ 参考 : TGraph and Scale()?



■ 複数のTGraphのデータをプロットしたいときはTMultiGraphを使う
TMultiGraph *mg = new TMultiGraph();
mg->Add(graph1);
mg->Add(graph2);
mg->Draw("LP");
c1->BuildLegend();

最後のBuildLegend()はなくてもいい
もしつけたら、自動的にlegendを作成してくれる
legendに一覧される名前は
graph1->SetTitle("Graph legend1");
graph2->SetTitle("Graph legend2");
みたいにして付ける

■ 参考 : Multigraph legends









sshfsコマンドを使えばOK
Macへのインストールはportでできる
sshfs @2.10 (fuse)
SSH filesystem for FUSE
使い方はsshとほぼ同じだけど、事前にローカル(手元)でディレクトリを作っておいた方がいい
(Macでは作らなくてもいけたけど、Linuxだと事前に用意必須)
sshfs ユーザ名@ssh先のホスト名:マウントするディレクトリへのPATH ローカルでのマウント位置

例えば
mkdir foo
sshfs your_name@hoge.com:/somewhere foo
Macの場合、最初に警告が出て環境設定での許可が必要だった(スクショ撮り忘れた)




マウントを解除するときは
diskutil unmount foo


fusermountを使って
fusermount -u foo
でも解除できる
uオプションなしだと
fusermount: old style mounting not supported
というエラーができて、マウントを解除できなかった


それでも無理ならpsでPIDを調べてkillコマンドで終了させる






sshfsが今やろうとしてることの要件に叶うかは微妙かも?
ssh先のファイルの処理は全部手元でやるので、ファイルを全部scpしてきてるのと変わらなかった
毎回scpしなくても1度sshfsするだけでよくなるのが利点かも








https://coffeepote.tumblr.com/post/181248344248/こないだ京都に行ったときの清水寺


すばらしい

tumblrのテンプレートとかテーマとかいじろうかと思ってたけどもういいやw
アルバムは全部タグで管理するとして、あとはそのタグ一覧をわかりやすく表示できればそれでOKか





テスト2

2枚画像がある場合はどうなるか?

https://coffeepote.tumblr.com/post/181247830953/野郎オブクラッシャー



思い立ってtumblrにアカウントを作成した
ギリギリまでgoogle+とどっちにするか悩んだけど、なんとなくこっちにしてみた

■ 参考 : 容量無制限の画像置き場としてGoogle+とTumblrを試してみた 前編 のこと




tumblrのリンクは以下からどうぞ (右のサイドバーも修正しとかないと)








使ってるテーマは Quite Big ってやつ
日付表示が海外の方式で 20 12月 とかになっててキレかけたけど
テンプレートのhtmlを直接編集することができたので、2018年12月20日みたいに修正した

■ 参考 : tumblrで日付を日本語表記にする

↓で日付とかで検索するとどの変数を置き換えればいいかだいたいわかる
■ 参考 : カスタムHTMLテーマを作成するには





https://coffeepote.tumblr.com/post/181248998463/今のflickrのアルバム一覧

58個のアルバムをそのまま移設しなければ・・・・





そのうち追記します










もうすぐ2018年が終わりそうですが、うだつの上がらない生活をしております・・・

1ヶ月ちょい前の11月頭に1泊4日で台湾にポケモンGOイベに緊急参戦してきました
その記事を書こうと思って途中まで書いたりしたものの、以下の理由でflickrを使うことができなくなってしまって挫折中



というのもflickrの運営がyahooじゃなくなって、2019年2月には今の写真が1000枚まで削除されるらしい
なので、今更flickrを使うわけにはいかんし
じゃあどこに移住するのか?というのもまだ当たりを付けれていない状況で〜

たぶんgoogleにするのかなぁ〜?
googleフォト(って名前なのか?)は無制限にアップロードできるらしいので、容量を気にしなくていいのは便利そう
けど便利すぎて怖い・・・

他の選択肢としてはこの忍者ブログに直接アップロードすることもできる(flickrに出会う前はそうしてた)
けど、無料アカウントなので500MBまで
有料アカウント(年2400円)になると、3GBまで使えるらしい
この時代にしょっぱすぎて泣ける


あと、正直flickrのUIが便利すぎたので、あれを超えられるところは無さそうだからほんと悩む
たぶんHPを運営してる人が他の鯖に移住するのを渋るのに似てる気がするw

今回のflickrの話は来年2月って制限時間があるのでなんとかしなければ・・・





2018年9月に

■ 参考 : 【ポケモンGO】カントーずかんコンプしました

って記事書いてますが、この後台湾に行ってジョウト図鑑の方もコンプしました
早く記事を書いておかないと忘れる・・・





今気づいたけど、flickrから他のサイトに写真をすべて移設したはいいものの、すべての写真のリンクをまた貼り直さないといけないのかよ・・・
flickrにアップロードしてある写真が9000枚で、そのうちブログにリンクを貼ってあるのは多く見積もっても1000枚以下やろ・・・
年末実家に帰ってからやるか・・・
良いお年を









なんか以前はできていた気がするけど、ある時からそれができなくなって不便だと気づいた
調べて見たら、v1.9から仕様が変更になったらしい

tmuxの設定ファイルに次のように書いておけばOK
# tmuxで新しいペインを開いた時に同じディレクトリで開くようにする
bind c new-window -c '#{pane_current_path}'

# ペイン分割時も同一ディレクトリで開くようにする
# 画面分割 |と-は感覚的に分かりやすいので追加してる。デフォルトは"と%
bind | split-window -c '#{pane_current_path}'
bind - split-window -h -c '#{pane_current_path}'
bind '"' split-window -c '#{pane_current_path}'
bind % split-window -h -c '#{pane_current_path}'


■ 参考 : tmuxで新しいペインを開いた時に同じディレクトリで開くようにする









気づいたら130000アクセス超えてました





いつもありがとうございます m(_ _)m






git update-index --assume-unchanged hoge.txt

■ 参考 : 既に git 管理しているファイルをあえて無視したい








最初「python history」とかでググったら、本当にpythonの歴史が出てきて泣いた
「python 対話モード 履歴」とかで調べたら出てきた

■ 参考 : Pythonの対話モードの履歴を残す方法

これが一番良さそうだったのでそのまま採用〜
便利








CentOS7では過去にやってみたけど、今回はDebian9

■ 参考 : 【CentOS7】MacのVirtualBoxにCentOS7をインストールして環境整備する>

Virtual Boxをインストールする
[https://www.virtualbox.org/wiki/Downloads](https://www.virtualbox.org/wiki/Downloads)からダウンロードしてくる

- Virtual Boxを起動する
- 左上の新規からスタート
名前は「CentOS7」
タイプ Linux、バージョン Red Hat(64-bit)
名前さえ入力すればあとは自動的に埋まるはず
- メモリサイズは8GBとした
- ファイルタイプは「仮想ハードドライブを作成する」=> さらに「VDI」を選択
- ストレージは「可変」
- ファイルの場所とサイズ設定は「30GB」とした







インストールOK


■ デフォルト解像度以外の大きさを追加する

■ 参考 : Debian 9: VirtualBox上のDebian 9にGuest Additionsをインストールする>

↑の手順3からで良かった
ただし、エラーメッセージの情報量が自分のところはもっとペラい

最初に
[Devices] > [Insert Guest Additions CD image...]
とクリックしてみたが↓のページと同じエラーが出た
原因は同じですでにマウントしているからだったっぽい
■ 参考 : VirtualBoxにあるCentOS7で[Insert Guest Additions CD image...]を押下したら Unable to insert the virtual optical disk となった時の確認方法>



cd /media/cdrom/
sudo apt-get install linux-headers-amd64 linux-headers-4.9.0-7-amd64
sudo sh ./VBoxLinuxAdditions.run
sudo reboot
そのまま sudo sh ./VBoxLinuxAdditions.run するだけだと以下のようなエラーが出た
↓パッと見エラーとかそういうことが書いてないので、見過ごしてた・・・(読まずに食べてた)
エラー画面


指示通りlinux-headers-amd64 linux-headers-4.9.0-7-amd64をインストールして再起動
追加の解像度設定を選べるようになった
解像度

■ コピー&ペーストをホストとVirtualBox内で共有する設定

■ 参考 : VirtualBoxでOS間のクリップボードを共有する方法






かなり前に書いた記事だけどとりあえず公開しときます
そのうち修正するかも(これはしないな)










ググって見た感じ、pyzmqというモジュールのversionが古いのが原因っぽい
v16からv17に上げればOKだった
sudo port selfupdate
port outdated | grep "zmq"
sudo port upgrade py27-zmq
sudo port upgrade zmq

■ 参考 : Jupiter notebook のエラー 'AttributeError: type object ‘IOLoop’ has no attribute ‘initialized’'


ただ、そこまでして動くようになったjupyter notebookだけど環境設定で心が折れて使わなくなった・・・・










android端末の方の設定を見直したけど、よくわからない通信量が発生してた
調べて見たらバックグラウンドでアプリを自動アップデートをしてたっぽい

ずっとandroid端末の方で設定するものだと思ってたけど、「Play ストア」の設定の方から変更するらしい

■ 参考 : アンドロイドのアプリの自動更新と停止の仕方








■ 参考 : scpの使い方 -l オプション (帯域制限)

■ 参考 : rsync, wget, curl, scp に速度制限をかける方法まとめ

scp -l 8192 hoge.txt name@where:

単位は [Kbit/s]

メモ
2MB ~ 16000Kbit
1MB ~ 8000Kbit
500KB ~ 4000Kbit
100KB ~ 800Kbit









プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST

print "かろうじて生存中"

# 最終更新 2019/04/21
カウンター
ブログ内検索
ツイートするボタン
リンク
相互リンク募集中です (Twitterにてお知らせください)

Demo scripts for gnuplot version 5
(gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)

gnuplotスクリプトの解説
(米澤進吾さんの個人ページ、gnuplotと言えばこのかた)

gnuplot のページ
(Takeno Lab、うちのブログがリンクされていたのでリンク返し)

とある物理の院生日誌~院生は社会へ旅立った~
(研究室の先輩の個人ブログ)

英語例文を見て自然に英語・英会話を学ぶ
(楠本慶ニさんの個人ページ、様々な情報の密度の高さに感動)

Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco
(映画の感想をまとめられるサイト、いつもお世話になっています)

Astronomy Picture of the Day Archive
(天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)

今日のほしぞら
(任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)

GNUPLOTとアニメーション
(応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)

読書メーター
(読んだ本をリストできる便利なサイト)

flickr難民の写真置き場
(20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)

教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定
(阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)


Template "simple02" by Emile*Emilie
忍者ブログ [PR]