2019/12/26

CD/DVDをコマンドラインで取り出す

% diskutil eject /Volumes/XXXXX

あとは,ダウンロードしたImageファイルが無駄にマウントされたままだった場合は,
% diskutil unmount /Volumes/XXXXX
で出来る.


2019/12/25

GitHubのfork/cloneを本家に同期させる

昨今,ツールが便利になり過ぎて,それならこっちの方法の方が良いよぉ〜とか,お決まりの方法がなくて,ぽりすーで決まったりするところがあるから逆に初心者には面倒な世の中になったなと思いながら, GitHub をいじり始めたのでメモ.

ともかく,むかぁ〜し,fork した JAGURS が自分のところにありました.
https://github.com/naotaka-chikasada/jagurs

が,この作業を開始した時点で,2017年の古いまま.まずは,これを最新にしなきゃいけない.ということで,「GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する」を参考に,少し足りないところを補足して整理しました.

自分のforkしたJAGURSを取得(ユーザ名は要修正)
% git clone https://username@github.com/username/jagurs.git

upstreamという名前(←たぶん,何でも良い)で,本家を名指し(remote add).
% cd jagurs
% git remote add upstream https://github.com/jagurs-admin/jagurs.git
(この作業は,今後やらなくてよいはず)

本家を追従
% git fetch upstream

マージ
% git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.
% git merge upstream/master
Already up to date.

最後にサーバにアップロード
% git push origin

参考にさせていただいたブログでは,最後のサーバにアップロードが無いので,ウェブで見えるレポジトリが更新されませんでした.

Bluetoothをコマンドラインで再起動する方法

しばしば TrakPad の Bluetooth 接続が切れて,こんな得体も知れない不具合の対策を考えるのも嫌だったので,逃げ道.

% sudo killall bluetoothd

こんだけかい?!
bluetoothd の再起動(正確には停止)には root 権限が必要だったようで,sudo してます.

これでやっと有線(USB)マウス外せる.

(仕組みは分かってませんが,どっかに supervisor みたいなのが居て, bluetoothd が落ちたら起動してくれる仕組みが走ってます.つまり,その supervisor が生きている前提の対処法であることは忘れてはいけないかもしれません.)

2019/12/14

MP-CD1 モバイルプロジェクター

最近の出張でウケてるのがモバイルプロジェクター.

ずいぶん小さくて明るくなったので,出張や外勤の時に持ち歩いてたら使えそうだなと思って買いました.ただ,種類は色々.目的によって絞り込みをかけていかないと失敗しそうです.私のポイントは,

  • 軽くて持ち歩く(かばんに入れっぱなし)気になること
  • 多少明るい室内でも使えること
  • 無線接続
  • ポスター会場で使えること

でした.色々悩んで買ったのはSONYのモバイルプロジェクターMP-CD1.ただし,このブログを書いている時点で生産中止で在庫限りでした.写真は,iPod touchの写真を投影(それ自体に意味はない).



決定的だったのは,ACアダプタ.バッテリー内臓で充電式のものもあったのだけど,充電(給電)にはACアダプタが必要なものが結構多かった.のに対して,MP-CD1は,UCB-C給電.MacBook な私にとっては,「必然的に持っているもの」だったので本体重量に加えて,充電ケーブルの重量(MP-CD1だと,私にとっては0g)で考えました.

その代わり,主に妥協したのが,HDMI有線接続しか出来ないという点.USBメモリに入れたpptxを再生できたり,無線でつながったりするのも魅力的だったのだけど,諦めました.写真のHDMIは付属ケーブルでかなり太くて硬いので,書い直す予定

ポスター会場でも使えるほど明るくて軽量なものはなかったので断念しました.ポスター会場用には,モバイルLCDを持った方が良さそうです.

おまけの機能として,USB-Aでモバイルバッテリにもなる点.スマホの充電に使えるのでこれは便利と思います.逆に,飛行機の時は機内持ち込みが必須になってしまいましたが.

2019/12/12

JAGURS compilation using Homebrew on MacOS

まだ MacPorts 使ってるの?とか言われてしまったので, Homebrew へ.主に何に使ってたかと言うと, JAGURS なので,まずは JAGURS がコンパイル出来るように整備してみた.

が,Makefile のバージョン管理に RCS 使ってたので,先ずは,
% brew intall rcs

それ以前としては, /usr/local に入っている HPC compiler を上書きさせないために, /opt/homebrew をインストール先にした.参考にした記事はこちら
cd /opt
sudo mkdir homebrew
sudo chown ${USER}:staff homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

依存ライブラリのインストール
 % brew install netcdf
 % brew install proj
 % brew install fftw
(伴って gcc のインストールも始まっていて重い・・・)

Makefile:
PROJ4_DIR=/opt/homebrew
FFTW3_INCLUDE_DIR=/opt/homebrew/include
NETCDF=/opt/homebrew

% make
In file included from mapproject.c:4:
/opt/homebrew/include/proj_api.h:37:2: error: #error 'To use the proj_api.h you must define the macro ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'
 #error 'To use the proj_api.h you must define the macro ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'
  ^~~~~

mapproject.c で,proj_api.h を include する前に, ACCEPT_USE_OF_DEPRECATED_PROJ_API_H を定義してあげると, make が通るようになります.

% cat mapproject.patch
*** mapproject.c        2019/12/11 20:49:39     1.1
--- mapproject.c        2019/12/11 20:51:04
***************
*** 1,6 ****
--- 1,7 ----
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
+ #define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
  #include <proj_api.h>

  static  projPJ pj_tmerc, pj_latlong;

もしくは,proj をバージョン5にするという解決策もあるようですが,,,悩みどころ.

参考までに,GitHub上のOSGeoのチケット

2019/10/23

Dropboxに写真を同期

iPad(昔はiPhone)で撮った写真と動画の管理って,Macだと意外(?)と面倒なようで,Macに接続してもストレージとしてマウントしてくれないので,何かのツールにお任せする必要があるようです(ホントか?).

最終的に,Dropboxに行き着いていたのだけど,どうも最近,iOS (iPadOS) のWi-Fiで同期済のものが,USBで有線接続したら重複してDropboxに入るようになってしまった.同期済みのものが「カメラアップロード」フォルダに残っていれば, -1.jpg のようなファイル名になって同定が用意なんだけど,既にrenameしていたり,移動していると何のことか良く分からない...

というわけで,Mac側の設定をOFFにしました.設定→インポートの「デバイス」から対象の端末を削除すれば良いようです.

2019/10/07

stdio.h が無いって・・・

久しぶりにコンパイルしようと思う度にひっかかるので自分でも書いておく.

/usr/local/lib/gcc/x86_64-apple-darwin17.5.0/8.1.0/include-fixed/stdio.h:78:10: 致命的エラー: _stdio.h: No such file or directory
 #include <_stdio.h>

よっぽど何かが壊れないとならなさそうな状況にOSをupdateするとなってしまう.まぁ,ともかく,
% open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
で良いそうだ.

Missing /usr/include w/ Xcode 10
macOS Mojave にアップデートしたら stdio.h がないって言われた

2019/06/12

遠地の波形

Baba et al. (2016) で提案されているSD+EL+GPの計算はJAGURSで出来ますが,EL (Elastic Loading) を有効にするため,
with_elastic_loading=1
として,パッケージとして配布されている
m_pyfile='PREM_Ggz.nc'
を使うと,GPも含んでいるため,漏れなく gravitational potential change も付いてきます.マニュアルには書かれていませんが,パッケージに入っている PREM_Gz.nc を使うと,ELのみが適用されるようです(確認中).

海⽔密度効果は,独立に
with_density=1
を設定することで有効に出来ます.

If you specify
with_elastic_loading=1
option to apply elastic loading in your simulation using PREM_Ggz.nc file which is included in JAGURS package, the gravitational potential change is also adopted. Because PREM_Ggz.nc contains not only elastic loading but also gravitational potential change. If you omit GP, PREM_Gz.nc should be set as m_pyfile parameter. 

Error発生:
netcdf err=-51 in file=PREM_Ggz.nc
これは, https://www.unidata.ucar.edu/software/netcdf/docs/nc-error-codes.html によると,"Not a netcdf file".

どうやら,ライブラリ関係が古かったためだったよう.ただし,詳細は詰めていない.
動いてた環境(MacPorts):
  hdf5 @1.10.5_0+cxx+hl (active)
  netcdf @4.6.3_0+dap+netcdf4 (active)
  netcdf-fortran @4.4.5_5+gcc7 (active)

駄目だった環境(Source build @linux):
  hdf5-1.8.19
  netcdf-4.4.1.1
  netcdf-fortran-4.4.4

駄目だった環境(linux)で,hdf5-1.10.5, netcdf-c-4.6.3, netcdf-fortran-4.4.5 を使ったところ,問題なくELが計算できた.

If you have an error of "netcdf err=-51 in file=PREM_Ggz.nc", please update hdf5 and netcdf libraries. I'm not sure the real reason, but I succeeded to execute JAGURS with hdf5-1.10.5, netcdf-c-4.6.3 and netcdf-fortran-4.4.5 instead of hdf5-1.8.19, netcdf-4.4.1.1 and netcdf-fortran-4.4.4.

2019/05/24

JAGURSのNCDIO

スパコンじゃないにしても,大量に計算をする場合に出力ファイル数というのは意外と気をつけなければいけません.JAGURSでは,NCDIOオプションを付けてコンパイルすることで,初期⽔位,⽔位変動,最⼤波⾼,最⼩波⾼,到着時刻分布をドメイン毎に1つのファイルにまとめてくれる機能があります.

※ 利用しての気付きとして,計算をやり直す時などに既にSD01.ncファイルが存在しているときちんと計算結果が出力されないという制限があります.計算をやり直す前に出力ファイルを一旦消してから実行する必要があるようです.

Makefileに
OUTPUT=NCDIO
を指定するか,
make -e OUTPUT=NCDIO
などのようにコマンドライン引数で指定します.

まとまったファイルに何が入っているかは,NetCDFパッケージに含まれている以下のコマンドで確認することが出来ます.
ncdump -h SD01.nc

そして,例えば,最大波高(max_height)を抽出するには,GMTのgrdreformat が使えます.
grdreformat SD01.nc\?max_height SD01.zmax.grd

もちろん,QGIS等のGISソフトに対しては,SD01.nc をそのまま入力することが出来ます.