2020年12月14日月曜日

古いトラックパッドを新しいmacbookでつかう

最近のmacのドラッグ操作はデフォルトで押し込んでドラッグになっているが、古いトラックパッドではこれが使えない。3本指ドラッグの操作が、設定パネルのトラックパッドの部分にはなぜかない。

調べてみたらアクセシビリティのところにあった。。トラックパッドのところにも出してほしかった。。

2020年7月27日月曜日

emacs epg 設定

何が悪いのかわからないが、emacs のepgがうまく動かなくなっていた。minibufferでpassphraseを入力する部分がおかしくなるといういつもの症状。いろいろ調べて何故かコメントアウトされていた
    (setf epa-pinentry-mode 'loopback)
を有効にしたら動いた。っていうかなぜこれまでこれがなくて動いていたのだ。何もわからん。

2020年7月25日土曜日

emacs build

なんか、space-emmacsがおかしくなったので、emacsをバージョンアップしてみた。26.3。 https://mac-ra.com/mac-emacs-2020/ の手順。自己署名もしてみた。スクリプト通りにやるだけ。ありがたい。 ちがった。こちらの手順だ brew caskとかも試してみたけど、mini-bufferに入ったときに英語モードに戻る関数がつかえない。

2020年6月30日火曜日

Julia でデータフレームにCSV (というかTSV)を読み込む

なんかいろいろ二転三転してるらしく検索してでてくる方法がつかえなかったりしてこまる。 バージョンが1.0に到達していないからと言って、もうすこしなんとかしてほしいものだ。
import DataFrames
import CSV

df = DataFrame(CSV.File("MPIJL", delim=' ', header=["target", "type", "size", "time"]))
条件で行を絞り込み
t1 = df[df.target .== target, :]
v8 = t1[t1.type .== "UInt8", :]
なんかもっといい方法あるんじゃないのかなあ。

2020年6月22日月曜日

julia でオブジェクトの文字列表現を文字列として得る

JavaならtoString() 一発なのだが、Juliaの場合通常のデータ型が実装することを期待されているメソッドはprint()というやつで、基本的に出力してしまうようだ。なので、文字列を得るには、一度バッファに書き出させてそこから文字列を作る必要がある。 たぶん。
  
io = IOBuffer()
print(io, ip)                                                                                                     
String(take!(io))
もっといい方法がありそうだし、あってほしい。

2020年5月18日月曜日

abci でjulia mpi

JuliaのMPIバインドをABCIで動かせるか確認。 Juliaにはマルチノード対応があるが、それとは全く別の枠組みで、ただのメッセージパッシングライブラリが動くだけ。

.bashrcに以下を追記。

module load julia
module load openmpi/3.1.6
でjuliaを起動して、
import Pkg
Pkg.add("MPI")
ENV["JULIA_MPI_BINARY"]="system"
Pkg.build("MPI")
Pkt.add するとどうもMPIを独自にダウンロードしているようなので、システムのMPIを使わせるために 下の2行が必要らしい。

こんなふうにバッチファイルを書いて、

#!/bin/bash

#$ -l rt_F=2
#$ -cwd

source /etc/profile.d/modules.sh

module load julia
module load openmpi/3.1.6

mpiexec -n 2 -N 1 julia hello.jl
qsub -g XXXX test.sh
とかで起動。 ちなみにABCIではノード専有の rt_F以外の構成ではマルチノードジョブが動かない。なんでやねん。

2020年5月9日土曜日

juliaのwrapperの意味

https://docs.julialang.org/en/latest/manual/faq/#catch-ctrl-c-1 に出てくる下記のコードの意味がしばらくわからなかったのでメモ。
#!/bin/bash
#=
exec julia --color=yes --startup-file=no -e 'include(popfirst!(ARGS))' \
    "${BASH_SOURCE[0]}" "$@"
=#

@show ARGS  # put any Julia code here
このコードはbashとしてもJuliaとしても解釈できるようになっているのがみそ。

bashで起動すると、2行目はコメントとして無視され、3行目が実行される。execなので、これ以降の行はbashとしては解釈されない。2行目はこのファイル自体を引数としてJuliaを起動している。

Juliaでは'#=' '=#'がマルチラインコメントとして無視されるので、2-5行目はスキップされ、6行目以降が通常のJuliaコードとして解釈されるという仕掛け。 なるほど。

julia ssh manager 注意点

Julia でssh腰にprocessを起動する場合でtunnelを使う場合に、ControlMasterを使うとハマる。 juliaではmaster process からworker processへ、sshコネクション以外に接続を行う。この接続をssh tunnelできるのだけど、これは
ssh -f server sleep 60
としたときに、sshプロセスがすぐに終了することを前提としているが、Control Masterを使っていると、なぜか上記の挙動が微妙に変わってサーバ側のプロセスが終了するまでブロックするようになってしまう。

ControlMasterを使ったのはターゲットホストのエントリサーバがDNSラウンドロビンしているので、同じホストに行くとは限らないからだったのだが、仕方がないのでIPアドレス固定にした。

2020年5月8日金曜日

julia でモジュールの中の関数を書き換える

@eval MODULENAME function FUNC(...)
  ...
end
とやるとモジュールMODULENAME内の関数FUNCを再定義できる、ようだ。 でもグローバル変数の参照とかうまく行かないようで一筋縄では行かないのであった。

2020年5月6日水曜日

julia でリモートクラスタを使う

Juliaはリモートでプロセスを起動して使う機能が組み込みでついている 。sshトンネルでも可能。
using Distributions

addprocs([("sss-no 127.0.0.1", 3)], tunnel=true, dir="/home/nakada", max_parallel=10, exename="julia", topology=:master_worker)
はじめうまく行かなかったのは、手元のSSHのほうで余分なforwardを行っていたら、2度目以降にそれが警告を出すようになり そのせいでうまく情報を取得できなかったようだ。

2020年5月5日火曜日

新しくインストールしたJuliaでjupyter を使う

いつも忘れるので備忘のために。 もちろん事前にPythonでjupyerをインストールしておく必要がある。
> julia
julia> import Pkg;
julia> Pkg.add("IJulia")
これで抜けて普通に
> jupyter notebook
でJupyterを起動すれば、カーネルとして新しいバージョンが選択できるようになっている。

2020年4月21日火曜日

matplotlibで日本語を使う(mac)

ここに書いてあったものをフォントのパスを変えたらMacでもいけた。ttfファイルではなくttcだったので駄目かと思ったが、大丈夫だった。これは有意義。
from matplotlib.font_manager import FontProperties
...
fp = FontProperties(fname=r'/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc', size=12)
...
plt.ylabel(u'軸ラベルはfontproperties=fp', fontproperties=fp)

2020年1月30日木曜日

mac の cmd+v で形式を無視してペーストする方法

macでコピペすると、フォーマット情報が引き継がれてしまってかなりうざい。 テキストだけ引き写したい場合には、Emacsに一度ペーストしてから再度コピペしたりしていたのだけど、 こんな記事を見つけた。

System PreferenceのKeyboardのshortcutで'Paste and Match Style'を'Cmd+v'に割り付けて オーバライドする、ということらしい。 便利。