ラベル 仕事 の投稿を表示しています。 すべての投稿を表示
ラベル 仕事 の投稿を表示しています。 すべての投稿を表示

2026年1月20日火曜日

Parallels Clientを久しぶりにつかってみた

 バージョン21.0.0をApp Storeからダウンロード。

windowsに繋ぎたいので"新しい接続"から設定しようと思ったのですが,何を入力すればいいのやら。。。IPアドレスか???


結局,スクリーンショットの黄色い丸のところから,『代替RDP接続を設定』にいけばいいだけでした。

「代替」ってワードのせいでここをクリックしていいのかまよってしまったという話でした。






2022年11月30日水曜日

Linuxにmusrfitをインストール(令和版)part 1

 mac上のmusrfitに多少の不安があるので、今後のことも考えてlinuxでも実行できるようにしておくことにした。

 

まずはテストとして10年おちのCeleronマシンにインストール。

Scientific Linux7.9で動いているので、ここにインストールしようとしたのだが、cmakeやコンパイラのバージョンが古すぎてインストールできないという困難に直面。 

重いコンダラ引きたくないので、この際OSからインストールし直し、うまく動いたら新しいラップトップに入れ直すことにした。

 

ディストリビューションの選択は、centos系だとhdf4がインストールできないことはわかっていて、nexusやらでつまずくのが嫌なので、apt系。

すると自ずとLubuntuかXubuntu。

ねずみで癒やされたいのでなれているのでxubuntuに。

現在のバージョンは20.04.1。インストールUSBをwindows PCからunetbootinで作成。

対象のPC、BIOSでUSB drive起動の優先順位をあげて、差し込んで再起動。

インストールはあっというま。

再起動しゴニョゴニョしていると、22.04にアップグレードするかと聞かれる。

頭の片隅にコンダラがちらつくが、調子に乗ってアップグレード。


まずはPSIウェブサイトの指示にしたがいインストール。


$  apt-get install git cmake libboost-dev libboost-filesystem-dev libboost-system-dev libgsl-dev libfftw3-dev libxml2-dev qt5-default qtbase5-dev libqt5svg5-dev


ただし、qt5-defaultというパッケージはないと怒られる。

qtbase5などは問題なく入るので、もし名前が変わっているのならきっと必要パッケージとしてどこかで入るだろうと甘く見て次へ進む。

次が問題のhdf4と5。


$ apt-get install libhdf4-dev libhdf5-dev

 

 問題なくインストール。

つづいてnewxus

$ cd Downloads
$ mkdir nexus
$ cd nexus
$ git clone https://github.com/nexusformat/code.git
$ mkdir build
$ cd build
$ cmake -DENABLE_HDF5=1 -DENABLE_HDF4=1 -DENABLE_MXML=0 ../code
$ cmake --build ./ --clean-first
$ sudo make install

 

こちらも問題なくオッケー。

つづいてroot。

説明を見ると、$HOME$/Appsにインストールするようになったようだ。

まぁ、このご時世複数人でPCを共有することもなかろうと、指示通りに。

まずは必要パッケージのインストール。


$ apt-get install libx11-dev libxft-dev libxpm-dev libxext-dev

特に問題なし。

続いてroot。

途中の"git tag -l"によると、現時点でのバージョンはv6-26-10なので、それに合わせて。

 

$ cd $HOME
$ mkdir Apps
$ cd Apps
$ git clone http://github.com/root-project/root.git
$ cd root
$ git tag -l
$ git checkout -b v6-26-10 v6-26-10
$ mkdir root_build
$ cd root_build
$ cmake ../ -Dgminimal=ON -Dasimage=ON -Dmathmore=On -Dminuit2=ON -Dxml=ON -DCMAKE_INSTALL_PREFIX=../root_exec
$ cmake --build ./ --clean-first
$ make install

 

 Celeronのせいか、異常に時間がかかる。

ながくなったので続きは次回。

 

 


2022年10月26日水曜日

musrfitを久しぶりに使おうとしたら,変なエラーが出てしまった

スペクトルを表示しようとmusreditのボタンを押すと以下のような怪しいダイアログが出てしまう。 

musrviewで直に.msrファイルを開こうとしてもエラーが。

% musrview test-histo-ROOT-NPP.msr 

dyld: Library not loaded: /opt/local/lib/libgsl.25.dylib

  Referenced from: /Users/*****/Applications/root/root_exec/lib/libMathMore.so

  Reason: image not found

zsh: abort      musrview test-histo-ROOT-NPP.msr

libgslがないと怒られている。

しかし,実際はlibgslはmacportsでインストールされています。

 % sudo port installed gsl

Warning: port definitions are more than two weeks old, consider updating them by running 'port selfupdate'.

The following ports are currently installed:

  gsl @2.6_0

  gsl @2.7_0

  gsl @2.7.1_0 (active)

なるほど,バージョン2.7がインストールされているのにバージョン2.5を呼び出しているのか。。。

古いバージョンをactivateしようにも,2.6以降しかインストールされていない。

実際,/opt/local/libに見に行ってみると,

 % ls -l libgsl*

-rwxr-xr-x  1 root  admin  2228224 12  2  2021 libgsl.27.dylib*

-rw-r--r--  1 root  admin  3939896 12  2  2021 libgsl.a

lrwxr-xr-x  1 root  admin       15 12  2  2021 libgsl.dylib@ -> libgsl.27.dylib

-rwxr-xr-x  1 root  admin   219792 12  2  2021 libgslcblas.0.dylib*

-rw-r--r--  1 root  admin   331056 12  2  2021 libgslcblas.a

lrwxr-xr-x  1 root  admin       19 12  2  2021 libgslcblas.dylib@ -> libgslcblas.0.dylib

(libgsl.dylib@っていうシンボリックリンクがいるのだから,libMathMore.soがそっちを参照しに行けばいいのに,25をよみにいっているところがアホ)

git pullしてrootをソースから作り直してもおなじメッセージが出る。

macportsで古いgslをインストールするのも手なのですが,ちょっと面倒なのでやっちゃいけないのは承知で以下のようにしてみました。

 % ls -l libgsl*                              

lrwxr-xr-x  1 root  wheel       15 10 26 16:06 libgsl.25.dylib@ -> libgsl.27.dylib

-rwxr-xr-x  1 root  admin  2228224 12  2  2021 libgsl.27.dylib*

-rw-r--r--  1 root  admin  3939896 12  2  2021 libgsl.a

lrwxr-xr-x  1 root  admin       15 12  2  2021 libgsl.dylib@ -> libgsl.27.dylib

-rwxr-xr-x  1 root  admin   219792 12  2  2021 libgslcblas.0.dylib*

-rw-r--r--  1 root  admin   331056 12  2  2021 libgslcblas.a

lrwxr-xr-x  1 root  admin       19 12  2  2021 libgslcblas.dylib@ -> libgslcblas.0.dylib

不具合が出るまでこれで行きます。

きちんとスペクトル表示されました。







2020年6月10日水曜日

catalinaになってしまった

5年使ってきたMacbookがそろそろ色々な意味で手狭になってきたので,リプレース.
ところが,catalinaはちょっと厄介な様子.
色々使えなくなる予定,その一つがIgorPro
サポートしないとうたっていますが,サードパーティのXOPなどを使わなければ動く模様.
現状ではKaleidaGraphも動かない予定.
そして,GPIBはまだまだNIが対応していない様子.

絶対必要なのはTeXなので,TeX環境をどうするか.
もう10年以上Finkを使ってきたのですが,流石に少々疲れてきて(TeXで必ずトラブる)Homebrewも一瞬考えたのですが,musrfitがうまく動くかわからなかったので,試しにMacPorts経由でTeXLiveを入れることに.

噂で,bashからzshに変わったらしいということも聞いていたので,まずはzsh関係のお勉強.
Qiitaを参考にしました.

2019年4月20日土曜日

macOS MojaveでmakeしたときにFrameworkが探せなくなった<解決済み>

十年近く使ってきた測定用のmacbookを新調しました。
今しかないと思って,あえてのMacBookAir(非Retina)です。
税込約10万円で,旧USBポートが備わっていて,GPIBとserial通信両方同時にできそうなすばらしいハードウエア,と思ったのですが,罠が。。。。。

以前からつかっていた測定用のコードがコンパイルできません。 


小一時間,というかもう少し悩んで,いろいろ試しました。
NI4882は/Library/Frameworks以下にあります。
まずはni4882.hがみつけられないのだから-Iで探させてみたのですが,それでも次はldがNI4882をFile not foundと言ってきて,泥沼の様相。
NI4882の場所がいけないのかと思い,ldのmanやappleのdocを読み込んでみても,/Library/Frameworksで良さそう,っていうか/Library/Frameworksにしろと書いてある。
それこそHighSierraにダウングレードしようかなど考えていたのですが,どうやら-Fというオプションがある模様。
そこで,makefileに-F/Library/Frameworks を加えてみたところ,あっさり成功。



ちょっと苦労したので忘れないようにメモ。

2019年2月14日木曜日

pythonで超伝導マグネット電源から磁場の値を読み込む。closeの方法も。

先日メモしたように,Cryogenicの超マグ電源から,シリアル通信で現在の磁場の値を読み込むと,

>>> import visa
>>> rm = visa.ResourceManager()
>>> instr1 = rm.open_resource('ASRL1::INSTR')
>>> cmd = instr1.query('get o\n')
>>> cmd
'OUTPUT: 0.0000 TESLA AT 0.0 VOLTS \r\n'

のように,余計な文字列がたくさんついてきます。
どうやら,pythonはこういうときの処理がとても得意みたいです。

split()で空白で区切ると単にlistになるのですが,

>>> cmd.split()
['OUTPUT:', '0.0000', 'TESLA', 'AT', '0.0', 'VOLTS']
>>> type(cmd.split())
<class 'list'>

このままでは当然strのままです。

>>> type(cmd.split()[1])
<class 'str'>

これをfloat()にしてあげればよくて,

>>> field = float(cmd.split()[1])
>>> field
0.0
>>> type(field)
<class 'float'>
>>> 

のようにみごとに分割した文字列から一発で磁場の値を浮動小数点に変換できます。
ちなみにcloseの方法は簡単で,

>>> instr1.close()
>>> exit()
bhoona:~ yishii$ 

のように,ResourceManagerから持ってきたデバイス名に.close()をつけるだけです。
前回のエラーはすっかり消えました。

pythonすごいです,おどろくほど短いコードで済みます。

2019年1月24日木曜日

PyVISAは無敵かも

春休みに磁気抵抗を測定しようと思い,マグネット電源とシリアル通信しないといけないなぁ,となんとなく気が重くなっていたのですが,すばらしい解決方法を見つけてしまいました。

環境としては,
macOS HighSierra
Python 3.6.3 (finkでインストール)
NI VISA 18.0.0

pip3でpyserialをインストールし,ためしに通信してみました。





こんな感じで,無事に通信できました。
実はここに至るまで紆余曲折あり,一筋縄ではいきませんでした。

ポイントは,コマンドの文字列を送るところです。
最初,ネットの記事を参考に,

>>>ser.write("get o¥n")

のようにしてみたのですが,うまくいかず,基本にもどって,公式ドキュメントを参考にしてみたところ,

>>>ser.write(b'get o¥n')

と書くのが正しいようだったので,そうしてみました。
(いつも学生に,『安易なネット検索はいかん』と言っていたのに,自分でハマってしまった。。。)

帰ってきた文字列を見てみると,CRとかLFが入っているし,『b' '』で囲まれてしまっているので,ちょっと厄介だなぁ,と思っていました。

つづいて,PyVISAをインストール。
うっかり最初,easy_install pyvisaとやってしまったところ,python2.7用のVISAがインストールされてしまいました。
これはいかんと,pip3でインストールしたところ,無事python3用のpyvisaがインストールされました。

PyVISAも,ネット上にはいろいろな情報があふれているのでw,基本にかえりながら,



ここで,重大なことに気づきました!!!
今,macにはusbで(と言ってもUSB-Serial変換アダプタ経由で)マグネット電源が,NIのGPIB-USBアダプタ(アドレスは3)で温度コントローラが繋がっています。

>>> rm = visa.ResourceManager()
>>> print(rm.list_resources())

とやってリストをみると,GPIB機器(GPIB0::3::INSTR)のほかに,ASRL1::INSTRという装置が見えます。

そうでした,そこがVISAのすばらしいところでした。
つまり,pyserialは必要なかったのです。。。

>>> instr1 = rm.open_resource('ASRL1::INSTR')
>>> instr2 = rm.open_resource('GPIB0::3::INSTR')


のように,二つの機器にそれぞれinstr1とinstr2という名前をつけて,通信してみたところ,

>>> instr1.write('get o\n')
(8, <StatusCode.success: 0>)
>>> print(instr1.read())
OUTPUT: 0.0000 TESLA AT 0.0 VOLTS 

>>> instr2.write('*idn?')
(7, <StatusCode.success: 0>)
>>> print(instr2.read())
LSCI,MODEL350,LSA14J9/#######,1.4

>>> 


と,無事にシリアルかGPIBかの区別を全く感じずに通信することができました。

ただ,このままexit()すると

>>> exit()
Exception ignored in: <object repr() failed>
Traceback (most recent call last):
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 108, in __del__
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 243, in close
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 235, in before_close
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 252, in __switch_events_off
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 309, in disable_event
  File "/sw/lib/python3.6/site-packages/pyvisa/ctwrapper/functions.py", line 410, in disable_event
  File "/sw/lib/python3.6/site-packages/pyvisa/ctwrapper/highlevel.py", line 188, in _return_handler
pyvisa.errors.VisaIOError: VI_ERROR_INV_OBJECT (-1073807346): The given session or object reference is invalid.
Exception ignored in: <object repr() failed>
Traceback (most recent call last):
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 108, in __del__
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 243, in close
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 235, in before_close
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 252, in __switch_events_off
  File "/sw/lib/python3.6/site-packages/pyvisa/resources/resource.py", line 309, in disable_event
  File "/sw/lib/python3.6/site-packages/pyvisa/ctwrapper/functions.py", line 410, in disable_event
  File "/sw/lib/python3.6/site-packages/pyvisa/ctwrapper/highlevel.py", line 188, in _return_handler
pyvisa.errors.VisaIOError: VI_ERROR_INV_OBJECT (-1073807346): The given session or object reference is invalid.

のようにちょっと嫌なメッセージが出ます。
おそらくcloseしていないからでしょうが,今日はここまでにします。
うまくいけば,PyQtとか使ってらくちんに測定できるかもしれません。







2018年9月18日火曜日

ASUSのE200HというネットブックにXubuntuを入れてみた

ASUSのネットブック,E200HにXubuntuをインストールしてみました.
やり方をgoogle先生に聞いて,考えた結果,私はMacでXubuntuのarm64向けisoイメージをダウンロードしてきて,UNetbootinでインストールUSBフラッシュメモリを作成して,インストールしました.

日本語の設定にちょっとてこずりましたが,IBusとAnthyの組み合わせで快適に動いています.
きちんとキーボードの「半角/全角」キーも動作するので,バッチリです.
実はこのポストもE200Hで書いています.

 タッチパッドがタイプ中に敏感に反応してしまうので,このサイトを参考にしてちょっと鈍感になるように設定しました.

それから,ディレクトリ名が日本語だとあとでいろいろ面倒なので,いつものように英語に変更しました.

$ LANG=C xdg-user-dirs-gtk-update

それから,Rの練習をするためにつかいたかったので,とりあえずr-baseだけインストールしました.

$ sudo apt-get install r-base

 あとは絶対使うgnuplotも.今回はQtバージョンをインストール.

 $ sudo apt-get install gnuplot-qt

ネットサーフィンをするだけなら快適です.

2018年4月11日水曜日

linuxでRDPしたいのなら(Scientific Linux7,多分CentOSも同じ)

Windowsのリモートデスクトップサーバにlinuxから接続したい場合,これまでrdesktopやFreeRDPという選択肢があったと思います。
ですが,FreeRDPではキーボードが日本語にならないので,私はどっちかというとrdesktopを使っていました。

しかし!職場のリモート接続サーバ(windows server 2012R2)の仕様が変わったのか,ある時から以下のようなエラーが出てつながらなくなりました。

Failed to initialize NLA, do you have correct Kerberos TGT initialized ?
Failed to connect, CredSSP required by server.

詳しくは省きますが,有名な事象らしいです。
これはおそらくWindows10でも起こると思われますので,rdesktopは諦めざるを得ません。

そこで,日本語を諦めてFreeRDPにしようか,海外から部下も来たことだし英語版キーボードに換えようか,と考えていた時,Parallels Clientのことを思い出しました。

Mac版では日本語キーボード問題も,認証の問題もクリアしていたので,Linux版も試すことにしました。

重いコンダラを引くのが嫌なので,最近の私は基本的にはyum一発で(しかもリポジトリの設定をいじらないで)入れられるパッケージしか好まないのですが,おそるおそるウェブサイトを覗いてみると,rpmパッケージが用意されているようです。

rpmならyumに毛が生えただけみたいなものですから(本当はrpmに毛が生えたものがyumなのですが),ダメもとでダウンロード。
懐かしのrpm -ivhでインストールしてみたところ,何の問題もなくインストールまではオッケー。

現在の環境は,
Linux version 3.10.0-693.17.1.el7.x86_64
ダウンロードしたParallels Client は
RASClient-16.2.19300_x86_64.rpm
でした。

アホな話なのですが,インストールしたのは良かったのですが,コマンド名が分からないw
それっぽいコマンド名を打ち込んでタブ補完してみても出てこない。。。

そこで,rpm -ql をしてみたところ,



2XClientという名前で,/opt/2X/client/bin にインストールされたようです。

起動して,認証の問題と日本語キーボードの問題がクリアされていることを確認後,パスを通すのもめんどくさいので,速攻xfceのパネルに登録しました。


そして忘れないうちにBloggerにメモ。

2017年4月18日火曜日

musrfitのビルド

rootをmakeするにあたり,PSIのサイトの指示に従ったのだが,いろいろ問題があったので嫌々ちょこっとだけソースを修正しなくてはならなかった。
(一部,ヘッダファイルをincludeするところで,"~~~.h"とすべきところが<~~~.h>となってしまっていて,エラーがでた。)
makeできたら勝ちなので。

rootはスプラッシュ画面がかっこよくなってた。



musrfitをmakeするにあたり,今回の./configureは以下のとおり。

./configure --prefix=$ROOTSYS --with-qt5=/sw/lib/qt5-mac --enable-NeXus --with-boostinc=/sw/opt/boost-1_55/include

何の問題もなくmakeできた。
musreditは/Applicationsの下にインストールされ,いつも通りのmusreditができた。


musrfitをバージョンアップ。の前にroot

musrfitが新しくなっているので,インストールしようと思ってソースを落としてみたら(職場からpsiのgitにつながらなかったので),configureでエラーが。。

configure: error: Either ROOT is not installed correctly or the version is too old... please check!


なるほど,rootのサイトに行ってみると,今はv6台に移行していた。
しょうがないのでrootをgitで入れ直し。

インストール前に環境変数関係をいろいろチェックして回っていたら,いろいろおかしなところがあった。

まず,/etc/launchd.confに,以下のようにQt関係の余計なことを書いてしまっていた。

/etc > more launchd.conf 
setenv PATH /sw/bin:/sw/sbin:/bin:/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/bin:/opt/root/bin:/sw/lib/qt4-mac/bin:.

なるほど,これのせいで最近qt関係がおかしくなっていたのか。。。
(現在はqt5に移行しつつあった。)
まずこのPATHのrootとqt4を削除する。

ひきつづき,.bash_profileでも$QTDIRと$ROOTSYSをセットしてしまっていたので,そこをコメントアウト。

launchd.confをいじってしまったので,ここから先は再起動しないといけない。

続きは後日...


2017年2月7日火曜日

finkのupdate-allがつっかえてる。(gnuplotのwxtはx11版よりwxOSX版の方が速い)



前回の続き。

finkをself updateして,update-allしたらgnuplot-wxgtk-qtmacがコケて進まない。
エラーをよくよく読むと,qt5関係の模様。
おそらく,qt4とqt5が共存しているためにコケていると判断し,ここは一旦削除。
update-allを実行したのちにgnuplotの問題をやっつけることに。

google先生に聞いてもサクッとは解決しそうにない上に,Qtの問題を解決出来るスキルも時間もない。
そこで,そもそもfinkのgnuplotってどんな種類があるの?と,パッケージ一覧を見たところ,すごいことに。。。



こんなに種類がありました。
(これは現在のリストで,gnuplot-wxcocoaをインストールした状態。)

ここで,Qt関係は避けるとして,それでも選択肢が通常版とwxgtk,wxcocoaがある。
前回の問題は,wx terminalの動作が遅いということ。
ならば,wxcocoaはどうなのだろう??
これは試すしか!!

と思い,wxcocoa版をインストール。
結果,速いです。
測定しながら再描画しているのですが,満足できるスピードです。


しかも,右クリックでズームとか,pキーで戻す,gキーでグリッド表示なんかもでき,前回の問題はすべて解決。




2017年1月21日土曜日

makeできなくて焦る:(解決済み)

測定プログラムを作ってました.
Dropboxで共有していたディレクトリで作業を行っていて,ある時からこんなメッセージが出てmakeができなくなりました.

ld: can't write output file: res372 for architecture x86_64

ls -lしてよくよく見たら一個前にmakeした時のファイルが,なぜが所有者がrootになっていました.
なぜか理由はわからないものの,古いファイルを削除したら問題なくmakeできました.

いつものようにパイプでGNUPLOTを呼び出して使っているのですが,Macのネットワークユーザでwxtターミナルでグラフ表示するとすさまじく重いので,aquaに戻す.
すると,グリッドを出したりとか拡大縮小のやり方がわからなくなり,困惑.

時間も遅いので,取り急ぎ,今日は帰宅.


2017年1月18日水曜日

成績アップロード

後期の成績をアップロードした。
しかし,何度やってもある学科の学籍番号が認識されないので,もしやと思って試してみたら学籍番号の後に半角スペースと思しきなにかが入っていた。
97人分の半角スペースを削除してアップロードしなおしたら成功。
来期,もし忘れていたときのために記録しておく。。。

2016年12月8日木曜日

emacsのfollow-modeが凄まじく便利!!

ここのところTeXはTeXPadひとすじになりつつありましたが,プログラムするときはmiやAtomなどにちちら浮気していました。 しかし!最近emacsでfollow-modeというのを覚えてから,すっかりemacsに戻りつつあります。
一つのファイルを横に分割した画面で表示させ,スクロールを追従させるモードで,ワイドなディスプレイを有効活用できます。

方法は,
C-x 3
で横分割しておいて,
M-x follow-mode
でオンオフできます! コードを見渡せるのですごく便利です。



再びemacs一筋の生活に戻ってしまいそうです。

emacsは独特の使い方があるので,なれないと不便に感じる方もいらっしゃるみたいですが,私は学生時代はメールもMuleでMewで読み書きしていたくらいですので,emacsにはまったく抵抗がありません。
(っていうかそもそも電子メールとの出会いがMewでした。)



2016年10月8日土曜日

TeXの小技: ゴシックで本文を書き,太字で強調するために(MacOSX El Capitan + FinkからTeXLive2016へ)

finkのTeXLive2014からTeXLive2016へ移行させようと思って手こずりました。

TeXで文章を書くとき,日本語フォントは明朝体になります。
文書全体をゴシックで書くと,ボールドで強調したいときにも同じゴシックになってしまいます。
(詳しいことはTeXの書籍を。。。)
まず,全体をゴシックにするコマンドは,
\renewcommand{\kanjifamilydefault}{\gtdefault}
見出しのような強調部分を太字ゴシックにするためには,たとえば以下のようにします。
{\gtfamily\bfseries 【研究目的】}
でも,結局これでは太字ゴシックになってくれません。

これを回避するためにはpdfファイルを作る際にotfフォントを埋め込めば大丈夫。
プリアンブルで,
\usepackage[deluxe]{otf}
と指定すれば基本的には大丈夫なはず。
しかし,実はこれだけでは思ったような太字ゴシックになりませんでした。

そこで,ヒラギノを埋めこもうと思い立ちました。
これが再び重いコンダラとなってしまいました。。。

この時点で私の環境は,El CapitanでfinkでインストールされたTeXLive2014でした。
TeXWikiを見てみると,El Capitanではフォントのインストールされた場所の関係でうまくヒラギノが埋め込めない。。。
TeXLive 2015以降で使えるはずのcjk-gs-integrate.plというパールスクリプとが使えないためです。 
なんとか手動でシンボリックリンクを貼ろうと頑張ってみましたが,結果無理でした。
FinkがTeXLive2016を採用するのが早いか,私が自分でコンダラ引くのが早いか。。。

理論的にはfinkのTeXLiveを削除して,MacTeXをインストールすればいいだけなので,思い切ってTeXLive2016をインストールしてみました。
finkのTeX関連PATHが悪さをするだろうことはわかりきっていたのですが。。。

========

まず,Ghostscriptのバージョンを確認。
finkもTeXLive2016も9.19なので,いけそうです。
古いtexlive2014を削除します。

$ sudo fink remove -r texlive-base texlive-nox texlive-nox-base texlive-texmf

たぶんこれで大丈夫。
つづいて,MacTeX.pkgをダウンロードしてインストール。
古巣のRIKENからダウンロードしました。
ダウンロードしたファイルをダブルクリックするだけでとりあえずインストールできたように見えました。
その後,一旦ログアウトし,再度ログイン。
これでPATHが通ります。

MBP15:~ yishii$ echo $PATH
/Users/yishii/Apps/root/bin:/bin:/sw/bin:/sw/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin

MBP15:~ yishii$ 

/Library/TeX/texbinにパスが通っていれば大丈夫です。

その後,TeX WikiのMacTeXのページの通りに進めるのですが,ヒラギノの埋め込みはうまくいきません。

$ sudo kanji-config-updmap-sys hiragino-elcapitan
hiragino-elcapitan not available, falling back to auto!

と怒られます。
いろいろログを見ていると,kpsewhichがうまく動いていないことが原因らしい。
おそらく,古いkpsewhichが残っているのだろうと思い,調べてみると,

$ which kpsewhich
/sw/bin/kpsewhich

予想通りです。
あせらずさわがず,

$ sudo mv /sw/bin/kpsewhich /sw/bin/kpsewhichold

と逃がして,もう一度確認。

$ which kpsewhich
/Library/TeX/texbin/kpsewhich

成功です。
はじめに戻ってサイト通り設定すると,無事ヒラギノを埋め込むことに成功しました。


2016年9月15日木曜日

TexpadのTypesetでちょっと焦る

Texpadを使っています。
日本語の文章を書く時なぜか急にうまくいかなくなることがあります。
キーボードショートカットでCommand + S,Command + Tを脊椎反射で実行しているのでどんなコマンドが動いているかあまり意識しないのですが,たま〜〜に突然大量のエラーを吐いてTypesetできなくなることがあります。
ログを読むと,jarticleがなんとかかんとか。。。
原因は,platexを実行すべきところをXeLaTeXが実行されてしまうため。

Texpadをデフォルトのままで使っていると,Auto-senseとかいってTypesetに使うコマンドを自動的に選んでくれるのですが,まれに間違えてしまうみたいです。



これをマニュアルになおして,platex + dvipdfmxでタイプセットするように明示すると,うまくいきます。



はじめて体験した時はかなり焦ったw
自動っていうのはいいことないなあ。。。

2016年9月14日水曜日

TeXでpdfファイルを貼り付けるために: xbbファイル作ったりSketchy Drawつかったり

TeXで文章を作る時,最近はLibreOfficeでepsファイルをつくって貼り付けることが多くなってきたのですが,それでも文字が思ったように配置されなかったりしてうまくいかないことも。。。
IllustratorがCCになってからTeXと相性のいいepsファイルをつくることが難しくなったので,困ってしまいます。

最近,そんな時のための裏技と表技を一つずつ身につけたのでメモしておきます。

まずは表技
普通にgraphicxをインクルードして,pdfファイルを貼り付ける。
まず,いつも通り

\usepackage[dvipdfmx]{graphicx}

をプリアンブルに書いておいて,figure環境で



\begin{figure}[!h]
\begin{center}
\includegraphics[width=9cm,clip]{Fig1-4.pdf}
\caption{}
\end{center}
\end{figure}


みたいに書けばいいだけ。
だけど,xbb云々言われるので,

$ extractbb Fig1-4.pdf

とやってxbbファイルを作る。
するとFig1-4.xbbというファイルができて,無事にタイプセットできます。
illustratorCCで書き出したpdfファイルも貼り付けることができるので,多分これが正攻法です。

裏技

Sketchy Draw(スケッチ風ドロー)というアプリを使うとどんなファイルでもEPS化できます。
SketchyDrawのファイルに画像をコピペしてEPS形式でExportすればいいだけ。




こんな感じです,これが驚くほどTeXと相性がいいんです。
IllustratorのEPSがうまく貼れないときはこれで。

2016年8月10日水曜日

XQuartz -queryオプションで繋いだ時の切断について

XQuartz -query でLinuxにつないだ後,終了する際にXQuartzがうまく終了できない問題がありました。
ローカルでログインしている時のようにログアウトするとXQuartzがフリーズしてしまうのです。
killコマンドでやっつければいいのですが,あまりいい気分はしていませんでした。
[Ctrl]+[Alt]+[BS]でXの再起動も効かないのでしょうがないかなぁ,とは思っていたのですが,なんと,いろいろ古い書籍など当たっていたら,接続解除はXQuartzのメニューから「終了」を選べばいいみたいです!

でも,最近のVNCみたいに,Xを終了したように見せかけて実は裏で動いていたら嫌なので,wコマンドで確認してみました。

まずは,XQuartzでログインして,意味もなくたくさんターミナルを立ち上げます。
そのあと,Macのターミナルからsshでも接続。





そして,Mac側からXQuartzのメニューで終了を選び,切断。

その様子をssh接続したターミナルで見ると,



こんな感じ。
無事にログアウトできています。

よかったよかった。
これで,安心してLinuxマシンからキーボードとディスプレイを外せる。。。



2016年8月4日木曜日

LinuxでAgilentの82357Bを使うために part 3: 本編

それでは,まずfirmwareも何もしない状態で82357Bをusbポートに差し込みます。
lsusbしてみます。

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 8086:0186 Intel Corp. WiMAX Connection 2400m
Bus 002 Device 003: ID 0957:0518 Agilent Technologies, Inc. 82357B GPIB Interface


きちんと82357BがBus 002にDevice 003,IDが0957:0518として認識されています。
(オレンジと赤の色は私がつけました。)
このBus番号とDevice番号を控えておきます。
ところが,この時にアダプタ本体を見てみると,FAILの赤いLEDが光っています。



suになって,gpib_common.koとagilent_82357a.koのモジュールを組み込みます。
ここで注意しないといけないのは,linux-gpibはカーネルが変わるたびにmakeし直さないといけないということです。そうでないと多分いろいろ面倒なことになります。
なので,カーネルをアップデートなりアップグレードなりしたら必ずlinux-gpibもmakeし直します。
なので,以下のカーネルバージョン番号も,今のカーネルバージョンに合わせて読み替える必要があります。


[root@gpibnote01 Downloads]# insmod /lib/modules/2.6.32-642.el6.i686/gpib/sys/gpib_common.ko 
[root@gpibnote01 Downloads]# insmod /lib/modules/2.6.32-642.el6.i686/gpib/agilent_82357a/agilent_82357a.ko 
[root@gpibnote01 Downloads]# 



dmesgしてみると,きちんと認識されています。


[root@gpibnote01 Downloads]# dmesg
*
*
(中略)
*
*
Linux-GPIB 4.0.3 Driver
agilent_82357a_gpib driver loading
usbcore: registered new interface driver agilent_82357a_gpib
gpib: registered agilent_82357a interface


でも,アダプタを見るとまだ赤いFAILが点灯しています。
lsmodしてみます。

[root@gpibnote01 Downloads]# lsmod | grep agilent
agilent_82357a         16562  0 
gpib_common            27244  1 agilent_82357a
[root@gpibnote01 Downloads]# 


それでは,さっきfirmwareをダウンロードして展開したディレクトリに移動します。

[root@gpibnote01 Downloads]# cd gpib_firmware-2008-08-10
[root@gpibnote01 gpib_firmware-2008-08-10]# ls
README  agilent_82357a  hp_82341  hp_82350a  ni_gpib_usb_b
[root@gpibnote01 gpib_firmware-2008-08-10]# 
[root@gpibnote01 gpib_firmware-2008-08-10]# cd agilent_82357a/

[root@gpibnote01 agilent_82357a]# ls

82357a_fw.hex  README~     lsusb_initial.txt   measat_releaseX1.8.hex

README         firmware.c  lsusb_postload.txt

[root@gpibnote01 agilent_82357a]# 


ここのREADMEを見てみると,やり方が書いてありました。


[root@gpibnote01 agilent_82357a]# cat README
The firmware files can be uploaded to your Agilent 82357A/B adapter
using fxload.  The 82357a_fw.hex file is for the 82357A and the
measat_releaseX1.8.hex file is for the 82357B.

There is apparently a bug in the 82357B firmware which causes the
first firmware upload to an 82357B to fail.  After the first
attempt, the device will disconnect then reconnect (with a
new address), but will still be in an uninitialized state with
device id 518.  Loading the firmware a second time will
cause the device to disconnect again, but this time it when
it comes back it will be fully functional with device id 718.
If you have your OS set up to
automatically load the firmware, you
won't notice this bug, since it will just cause the OS to
automatically load the firmware twice.


Examples:

fxload -D /proc/bus/usb/001/002 -I 82357a_fw.hex 

fxload -t fx2 -D /proc/bus/usb/001/003 -I measat_releaseX1.8.hex


Note the 82357B requires the "-t fx2" command line option of fxload.

If you wish for the firmware to be automatically loaded through hotplug, 
copy the firmware file to the /usr/share/usb/agilent_8237a/ directory
(or wherever the /etc/hotplug/usb/agilent_82357a script expects to find it).


なるほど,二回やらないといけないのですね。
ではまず一回目のfxloadをやってみます。
この時,lsusbで確認したBus番号とDevice番号を使うようにします。

[root@gpibnote01 agilent_82357a]# fxload -t fx2 -D /proc/bus/usb/002/003 -I measat_releaseX1.8.hex 

何も起こりません。しかしこの時,実際は一度引き抜かれてまた挿し直されたと勘違いしているみたいです。
dmesgしてみると,

usb 2-1.2: USB disconnect, device number 3
usb 2-1.2: new high speed USB device number 4 using ehci_hcd
usb 2-1.2: New USB device found, idVendor=0957, idProduct=0518
usb 2-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
usb 2-1.2: configuration #1 chosen from 1 choice


のように出ています。
ここでlsusbしてみると,device numberが一つ上がっています。

[root@gpibnote01 agilent_82357a]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 8086:0186 Intel Corp. WiMAX Connection 2400m
Bus 002 Device 004: ID 0957:0518 Agilent Technologies, Inc. 82357B GPIB Interface
[root@gpibnote01 agilent_82357a]# 


ここでもう一回fxloadでfirmwareをアップロードするのですが,この時Deviceが004に変わっていることに注意しないといけません。

[root@gpibnote01 agilent_82357a]# fxload -t fx2 -D /proc/bus/usb/002/004 -I measat_releaseX1.8.hex 
[root@gpibnote01 agilent_82357a]# 

ここで何か言われていたら,おそらくDevice番号を間違えているのだと思います。
うまくいっていれば何も返事がないはずです。
dmesgしてみると,

usb 2-1.2: USB disconnect, device number 4
usb 2-1.2: new high speed USB device number 5 using ehci_hcd
usb 2-1.2: New USB device found, idVendor=0957, idProduct=0718
usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=5
usb 2-1.2: Product: 82357B ()
usb 2-1.2: Manufacturer: Agilent Technologies, Inc.
usb 2-1.2: SerialNumber: MY49450481
usb 2-1.2: configuration #1 chosen from 1 choice
probe succeeded for path: usb-0000:00:1d.0-1.2
attached to bus interface 0, address 0xf33fa200
agilent_82357a_attach: attached

となって,またdevice number4が引っこ抜かれてdevice number5に変わっています。
ここで注目すべきは,idProductが0718に変わっているというところです。
ちなみに私はすでに/etc/gpib.configに記述がある上に,すでに一連の作業を終えているので,最後の二行のようにもう使える状態になっています。
そうでない場合は,/etc/gpib.confを適切に書き換えて,gpib_configコマンドを管理者権限で行います。
こうなると背面のLEDが緑色に点灯しています。




ibtestをして通信してみました。

[root@gpibnote01 agilent_82357a]# ibtest 
Do you wish to open a (d)evice or an interface (b)oard?
(you probably want to open a device): d
enter primary gpib address for device you wish to open [0-30]: 16
trying to open pad = 16 on /dev/gpib0 ...

: w
enter a string to send to your device: *idn?
sending string: *idn?

gpib status is: 
ibsta = 0x2100  < END CMPL >
iberr= 0

ibcnt = 6

: r
enter maximum number of bytes to read [1024]: 100
trying to read 100 bytes from device...
received string: 'LSCI,MODEL330,0,061694
'
Number of bytes read: 24
gpib status is: 
ibsta = 0x2100  < END CMPL >
iberr= 0

ibcnt = 24



*idn?と話しかけて,LSCI,MODEL330,0,061694とお返事をもらいました。