jariのメモ

jariの備忘録(不定期更新)

データ管理とHDDのフォーマットについて

久しぶりの記事の更新です.4月にmacbook proを買いました.随分と放置してきましたが,それまでWindowsを使っていたので,今までのPCに残っているデータの管理の仕方を検討することにしました.macの設定についての備忘録(brewとか)を書いておけばよかったと思いましたけど,ここの存在を忘れたのでまぁ仕方ないでしょう.それにこのmacで新たに導入したのは,homebrewとpython(anaconda)とatomくらいなので記録を残しておかなくてもなんとかなるでしょう.そういえば(La)TeXすらまだいれてない......

元々のPCで管理していたのは画像と音楽ファイルだけで,その他大学の関係で使っていたファイル等については,クラウド上またはGitで管理していたので検討のスコープの外に置くことにする.要するに元々のPCから移行すべきデータは画像と音楽ファイルのみ.それまでも.HDDにはバックアップとして画像と音楽を保存してみてはいたのだけど,どうやらmacwindowsの両方で編集可能な方式でフォーマットしていなかったために,macからいじれなかったので,その方法とフォーマット形式についてと個人的なデータの管理方針について備忘がてら記事を書くことにしました.

データ管理について

いままでの運用では,HDDはあくまでバックアップというポジションだったのだが,メインPCをmacにし,こいつのSSDあんまり使いたくないという気持ちがあるので,外付けのHDDをメインの保存場所として利用することにする.画像については単純にこの方針でいいのだけれど,音楽ファイルについては少し趣が異なる.というのも,macbook proにはCDの読み込み口がないし,外付けでつける気もさらさらなく,現行通りwindowsのPCから読み込むことにするからであり,さらにwalkman用のため,音楽はiTunesで管理する気もさらさらないからである.

音楽ファイルについてはwalkmanでの利用を念頭に置いている.これらファイルのデータ構造がどうなっているか知らないけれど,walkmanで歌手名等を確認できることが大事であり,そのためにはメタデータが(walkmanから読み込める形で)記録されるように,Music Center fo PC で音楽ファイルの取り込みをする必要がある.walkman用にファイルを取り込むとiTunesに突っ込んだときメタデータが読み込めなくて不明のアーティスト扱いになるのでiTunesに入れることはもう諦めた.いまのWindowsPCはボロボロだけどWindowsなしで暮らしていくという気はなく,生活の補助としてWin機をどこかのタイミングで購入する予定である.

要するに画像ファイルについては,MacでSDカードから直接読み込んで編集したりして,そこからHDDに移し替えるというやり方をし,音楽ファイルについては原則Windowsから読みこんでそれをHDDに移すという方針である. つまりHDDはWin/Mac両方から書き込み可能なフォーマットである必要がある.

HDDのフーマット形式について

ざっとググってみたら, これ とかこれ がでてきた. 

要するにWinの標準の形式はNTFS(New Technology File System)でこれはWin用に最適化されたファイルシステムで,Macだと読み込みはできるけど,書き込みができない.

Win/Mac両方で読み書きできるファイルシステムとしてはFAT32exFATという2つがある.前者は互換性に優れるけれど,1ファイル容量制限が4GB等の制約がある.後者は古いシステムとの互換性がなくなるが,ファイルサイズの制約等の制約がない.

古いシステムに触れる気はさらさらないし,動画とか保存することがある4GBを超える可能性はあるので,今回利用するHDDは改めてexFATでフォーマットすることにした.

git ssh

ubuntuでgit使っていたのにhttpsで接続してて,pullとかfetchのときにいちいちパスワード打つのがめんどくさくなったので備忘録に参考にしたリンクを貼る.基本windowsSorceTree使っていたから関係なかったんだけどVirtual box上で扱ったりすることになってCUIでgit弄ることが増えたんですよ.

qiita.com

これでssh鍵に作り方(アドレスは必要だったのかなよくわからないや)登録方法とかを参考にしつつ(鍵ってのはid_rsa.pub全部コピーするんやね),これらはpullだけしか対応してない(?)ので

cflat-inc.hatenablog.com

に書いてある通りconfigを弄ったらsshで接続してくれました.ちゃんちゃん.

Sage再び

不等式ソルバーが使いたい

大量の線形不等式が示す領域を示す必要が出てきました. 少数ならwolframとかに突っ込めばそれで解決するのですが今回は700個近く不等式があるのでそうはいきません. mathematicaを動かせればいいんですが高いし,学校で使うにしても学校のPCを使うのはファイルを移したりめんどくさいので避けたい. pythonにもsimpyというシンボルで書けるライブラリがあるみたいですがこれは多変数のソルバーがないうんちなので断念. そこで調べたらsageでもできるらしいので今度こそsageを使いこなしてやろうと一念発起したわけであります.

sageはコンソール画面で動かすものじゃないの?

d.hatena.ne.jp

をみてたらnotebook()というコマンドを使えばブラウザが起動するらしい. plot()とかでグラフィックスが起動しない不具合があったのはこういうことだったのか

とりあえず以前書いた記事を参考にsageを再びインストール. notebook()コマンドでブラウザを立ち上げることに成功.

しかしリモートアクセスを許可するコマンドnotebook(interface='', secure = True) を使ったらpyOpensslがないらしくでこれを入れろというエラーがでてきたので,README.mdみたら ./sage -i pyopenss というコマンドで再ビルドすればいいみたい..

再びanacondaの名前を変更しつつ

mv anaconda3 anaconda3bak
./sage -i pyopenssl

をやったらm4というソフト(?)がないみたいなのでsudo apt-get install m4. ほんで./sage -i pyopensslをやったら全然ビルドが終わらん芸人.馬鹿野郎お前俺は絶対リモートアクセスするぞお前

-----12/13追記

そういえばsageを動かしているときに

ImportError: cannot import name scimath

というエラーが出てくることがあったけどこれは

sudo apt-get update
sudo apt-get install libgfortran3

で解決する.

Atom でTeX

タイトルそのままです.LaTeXで文章を書くときいつもTeXWorks editorを使ってたんですけど少し違うエディターを使ってみたいなというかAtomを使いたかったのでAtomLaTeXを使う方法を模索していました.

Atom - TeX WikiなどWeb上にいろいろ記事があって一昨日も今朝もずっと戦っていたんですが結果,必要なことはとてもシンプルでした.

AtomでのLaTeX環境に僕が求めるもの

何がいるのか

これは色々な記事やTeX wikiにも書いてあったんですが,
atomのパッケージ

  • latex
  • language-latex
  • pdf-view

のインストール(もしかしたらlatexは要らないかも)
latexmkを使用すること.

結局ネックになるのはlatexmkの方でした. まぁそれはそうで,コンパイルがうまくいってpdfが出力されるかどうか一番大事なわけですからね. latexmkというのはその名の通りLaTeXでのmakeみたいなものだそうです.コマンドライン上で-pvcというオプションを使って起動すると.texファイルを監視して更新されるたびにコンパイルしてくれるみたいです.

それをうまく動かしてあげるためには.latexmkrcというファイルがホームディレクトリにおいてあるか,.texファイルがおいてあるカレントディレクトリにlatexmkrc(先頭に"."がない)がおいてある必要があるみたいです.このlatexmkrcというのはLaTeXをどういう風にコンパイルするかとかpdfでの出力などいろいろ指定するためのファイルなようです.

ichiro-maruta.blogspot.jp の記事に書かれていた日本語ファイル用のlatexmkrcを次のように

#!/usr/bin/perl
$latex         = 'platex %O -src-specials -shell-escape -interaction=nonstopmode -synctex=1 -kanji=utf8 %S';
$bibtex        = 'pbibtex %O %B -kanji=utf8';
$dvipdf        = 'dvipdfmx %O -o %D %S';
$pdf_mode      = 3; # use dvipdfmx

# Use SumatraPDF and atom inverse search
# $pdf_previewer = '"C:\Program Files\SumatraPDF\SumatraPDF.exe" -reuse-instance -inverse-search "\"%USERPROFILE%\AppData\Local\atom\bin\atom.cmd\" \"%f:%l\"" %O %S';

# if you do not need to preview in -pvc option (preview document and countinuously update mode)
$pdf_previewer = 'exit';

としたlatexmkrc.texファイルがあるディレクトリにおいて,コマンドプロントなりターミナルを開いてそのディレクトリに移って

latexmk -pvc hogehoge.tex

とすれば自動でコンパイルしてくれました.そうしたら.tex.ファイルを保存する度に自動で.pdfファイルが出来ているので最初にこれをAtomで開けば f:id:jaripan2:20161123121441p:plain こんな感じにプレビューが更新されてそれを見ながらLaTeXで文章を書けます.

問題点

1つ問題点に気が付きました.

それはコンパイルエラーが分かりずらいということです.上書き保存してもプレビューが変更しなかったらコンパイルが失敗している証拠なんですが,そのエラーがAtom上にでないのでわかりずらいです, latexmkの画面にはコンパイルエラーの文面が出ているみたいなのですが非常に見ずらい.これはターミナルでコンパイルして確認するしかないのでしょうかねえ.

あと些細な事なんですが,インナーpdfプレビューワーの解像度が低い気がします(?)

Sage~インストールから始動

Sageがなんだかよく知らないけど、出力結果がこのツールを必要としているみたいなのでインストールすることに。Matlab的な数学用のツールらしい。

www.sagemath.org にアクセスする。

ダウンロードページに書いてあるミラーサイトからsage-7.3-Ubuntu_14.04-x86_64.tar.bz2というアーカイブをダウンロードする。 これはバイナリファイルらしいのであんまり細かいこと抜きにすぐ使えると書いてあった割に苦戦したのでこのメモを残す。

DownloadAndInstallationGuide - Sage Wiki

を読めと書いてあったけど

Install from Pre-built Binaries — Sage Installation Guide v7.3

バイナリ版の場合結局こっちを読めば解決する。

sage-7.3-Ubuntu_14.04-x86_64.tar.bz2の展開がGUIでそのまま開くとなぜかうまく行かなくて(ディレクトリ上にsageという実行ファイルが存在しなくて動かせない)、コマンドライン上でやることに。 tarが圧縮ファイルを展開するコマンドだということはなんとなく知っていたけど詳しいことはよくわからなかったのでググった。

Linuxコマンド集 - 【 tar 】 ファイルを書庫化・展開する(拡張子.tarなど):ITpro

に書いてあったtar jxvf hogehoge.tar.bz2をそのまま使ったら展開できた.

lsで中を確認したら実行ファイルsageもいたので実行してみたらなんか動いた!と思ったらエラー。sageはpythonで動いているらしくて調べたらanacondaと一緒にpythonを導入したのが問題だった模様。

検索したら同様に困ってた人がいたので

stackoverflow.com

ここに書いてあった

cd ~
mv anaconda3 anaconda3bak
SageMath/sage
quit
mv anaconda3bak anaconda3

というコマンドをそのまま使ったらsageが動きました。めでたしめでたし。

超個人的Docker メモ(未完成版)

完全に日常の話でもなんでもないけどブログにまとめておくと今後の時分の為にいいので記事を書きます。理解が浅いのでダメなところはご指摘いただけると幸いです。

 

研究で動かす必要があるプログラムがdocker で配信されていたので、dockerを使う必要がありました。この記事は自分がdockerを使う上で困ったことと、それに対して調べて参考になったネット上の記事のリンクを張っていくだけの備忘録のつもりです。備忘録に加えて疑問点を列挙しておくことでどこで躓いているのかを認識するのと、誰かが助けてくれるんじゃあないかという淡い期待を抱いています。

 

dockerとはなんなのかというのは自分自身まだよくわかっていなくて、ざっくりとした理解ではプログラムのコードだけではなくプログラムを動かす環境ごとコンテナとして配信するものであると思っています。環境毎提供することによって、実行するユーザの環境によってプログラムの動作がうまくいかないなどのバグを防げるのだと思います。

paiza.hatenablog.com

dockerのインストールはdockerのHPに書いてあることをそのまま行いました(Ubuntu 14.04 LTS)

docs.docker.com

コンテナの起動とかはインストールの際にhelloというコンテナを使ってやりかたを覚えました。上のリンクのインストールのところにそのまま書いてあると思います。

dockerのコンテナはrunで起動するたびに新しくなるようなので一度プログラムを起動してコンテナを終了してまたrunで起動すると実行結果が失われてしまうことになります。再び実行する場合はrunではなくstartでいいみたいです。下の記事に詳細があります。

scriptlife.hacca.jp

 

疑問点とか

 

自分が動かしているプログラムがコンテナ中にpythonファイルがあるんですが実行できないのはコンテナ中にpythonが入っていないからなのでしょうか。だとしたら頭悪すぎるのでなにか実行方法があるはずですし、なんなら既存のコンテナ内にpythonの実行環境を構築する方法があるのではないでしょうか。

またなにか思い出したり必要なことがあったら記事の続きを書きます。

 

追記)9/23

 

Dockerコンテナ内のファイルのファイルのコピー

作業している中でコンテナ内だけではなくてホスト側で同じファイルをつかって検証する必要が出てきたのでそのときのメモ。

isoittech.hatenablog.com

この中に書いてあるように

sudo docker cp <コンテナID>:(コンテナ内のファイルのパス) ホスト側に置きたい場所のパス

でいい。ファイルのパスはコンテナ内でpwdでも使えば/root/hogehogeと出てくるはず。

ホスト側のパスはカレントディレクトリでいい場合は ”.”(ドット)でいいらしい。