CMD ワークショップ Q&A と FAQ

最近のオンラインでの実習で出てきた質問などを中心に取り上げましたので、参考にしてください。

Q:(gedit:5438): WARNING **: Set document metadata failed: Setting attributemetadata::gedit-position not supportedこのエラーが毎回表示されます。

A: WARNINGなので気にしないでください。使用に影響はありません。

Q: emacsを立ち上げようとすると35秒かかる。（先ほど測定しました）geditは14秒くらいかかりました。ネット環境はそんなに悪くないと思います。これだけかかると、授業についていけませんでした。

A: emacsやgeditを新しいウインドウで起動すると、表示に使用するフォントを転送するために起動に時間が掛かります。そのため、「UNIX講座」の中でもemacsの場合は”-nw”オプションをつけてこれを軽減する方法を示していました。viがこの問題がないので操作は軽いのですが、不慣れだと使いにくいということがあるかもしれません。これを使用しているターミナルで起動すると、その作業以前のコマンド操作が見られないということがあるかもしれません。それならemacs専用のターミナルを別途起動しておけばよいです。エディター専用のターミナルを用意しておけば、この操作のためについて行けないということはないはずです。あるいは、講師は高速な大学の環境で操作しているのでエディターを毎回閉じていますが、いったん起動したemacsやgeditは閉じずに、そのままの状態で保存をし、別のファイルを読み込んで操作する
ようにすればフォントの転送のための遅延は起こりません。もし実習中にこのような事で困るなら、その時に質問をして頂ければ結構です。他にも比較的易しい使い方のnanoというエディターがあります。例えば
https://www.webdesignleaves.com/pr/plugins/mac_terminal_basics_02.html
https://qiita.com/MuAuan/items/9b2b63d12e094ad2e739など。

Q: ビギナーコースは学習目的で参加する場合が多いと思うので、参考になる本や文献などを紹介していただけるとありがたいです。

A:HPの”BOOKs”というタグのところにいくつか紹介されています。
https://cmdworkshop.sakura.ne.jp/BOOKs.html
他にもたくさんありますが、検索して頂ければ見つかります。各自のレベルに応じてコメントを要望される場合は個別にお聞きください。
Q: Quantum Espresso(あるいはWIEN2k、その他いろいろなソフトウェア)の講義をしてほしい。
A:CMDワークショップでは、講師がオリジナルで開発したソフトウェアの講義と実習を行う場であって、そうでないソフトウェアの講義や実習はやりません。調べればそのような情報は見つかりますので、そちらで学んでください。ただし、基本的な手法としての内容はCMDワークショップで学べます。
Q:もう少しゆっくり、各コマンドを表示しながらやって頂きたい。結局後から質問対応で振り返って説明するため、進みが遅くなっているように感じた。また、質問対応のために進んで振り返ってを繰り返しており、なにを今しているのか分からなくなる時が多かった。
A: これは講師も気を付けてはいるものの、不十分なことがあるようですので、できる限りコマンド操作をゆっくりするのと、順番を整理してもらうようにします。Slackではチューターが、その時やったコマンド操作をまとめてくれていますので、それを見ながらついて行ってください。困ったら質問してください。
Q:必要となる前提知識を具体的に示してほしい。プログラミングであれば「基礎的な操作」などだと、どこまでが基礎なのかわからず参加を躊躇した。「組み込み関数を使えるように」や「コンパイルさえできれば、スキルは不要」など、レベル感がわかる具体性がほしい。
A: ここで聞かれていることから計算機の前提知識及び必須の知識だけお答えします。
これはビギナーズコースと、それ以外の発展コースとで違います。
ビギナーズコース：参加条件のためにLinuxの環境を最低限準備して頂く必要があります。しかもX Window Systemが正しく動作することが必須です。このための準備の仕方は別途公開していますので、それに従えばそれぞれのことが詳しくわからなくても準備はできます。紹介しているのはVMware（同種のソフトウェアのVirtualBoxでも基本は同じ）にダウンロードしたUbuntuのCDイメージからUbuntu Linuxをインストールする方法です。実習上はUbuntuである必要はありませんが、現在最も広く利用されている個人利用のLinuxの種類の一つですのでこれを紹介しています。Ubuntuのウインドウマネージャーの操作などは、各自で触って慣れて頂くことは必要です。Ubuntu特有のことについて実習をする講師は対応しません。簡単な事であれば下司が対応します。これが準備出来た上で、阪大内のPCクラスターに接続するための公開鍵認証に必要な公開鍵を必ずパスフレーズを入力して設定し、それを送っていただきます。その設定が終了後、接続テストをしてX Window Systemが動作している環境である証拠のスナップショットを送っていただいて参加準備完了です。実習中にcd、cp,、less、emacs（あるいはvi、gedit）といったコマンドやエディターの操作は初日のUNIX講座から始まって、実習のその場その場で指示通りにやっていただければできますので、これらを事前に覚えていなくてもついて行くことは可能です。しかし、実習で使う10個程度のコマンドは、事前に知っておいて頂くと当日がよりスムーズで、中身に集中できます。キーボード操作で意識も時間も取られていたのでは得られるものが半減しますので、予習の上で当日はUNIX講座確認するくらいのほうが望ましいです。そのコ
マンドは、cd、cp、ls、less、pwd、tar、ssh、scp（あるいはsftp）、exit、mkdir、rm、rmdir、manがほとんどです。最後のmanはコマンドのマニュアルを表示するコマンドです。コマ
ンド以外のことで知っておくべきことは、ディレクトリの階層構造（tree構造）と、コマンドをターミナルのコマンドラインにコマンド、オプション、ファイルなどを、スペースを開けて書くこと、最後にEnterを押してコマンド操作が終わることまでは分かっておいておくことが望ましいです。
CMDワークショップでは、プログラミングの知識は必要ありません。使用するソフト
ウェアの本体はほとんどFortran（一部C/C++やshell script言語）ですが、このことを実習で触れることはありません。プログラム開発をするワークショップではありません。ソフトウェアのコンパイルをすることもほとんどありません。既にインストールされた環境、あるいはそれがすぐ準備できる状態で行います。

オンラインで行うため、安定したネットワーク環境が必須です。これはこちらではサポートは原理的にできません。もし途中でつながらなくなったとしても、全体として問題なく進行が出来ている場合には、確実に個別の参加者の周辺のネットワークの問題です。それが各自のPCなのか、部屋のルーターのせいなのか、場合によっては建物のネットワークや停電なのかは場合によりますが、それをこちらで解決することはできません。これくらいのことは理解しておく必要があります。（つながらないので助けてほしいと言われてもどうにもできません。）
コマンド操作でのFAQ
Q:ファイルがコピーできません。
A: cpコマンドの使い方として、コピー元とコピー先を指定しないといけません。
基本はcp [コピー元のファイルorディレクトリ](スペース) [コピー先]です。コピー先は、そのままのコピーであれば通常”.”（ピリオド）を書きます。これが出来ないことが実習の最初に頻発します。その原因は、下記のものがほとんどです。
・コピー元のパスが間違っている。
・ピリオド”.”を最後に書いていない。
・スペースで正しく区切ってコマンド操作をしていない。
コピー元のパスが間違っている場合でよくあるのが、今いるディレクトリはどこなのかが講師が指定したときの場所と違っている場合です。ディレクトリの移動の指示があったのに、移動せずにコピーするコマンド操作だけやると、場所を正しく指定できていないのでコピーできないことになります。これは”cp ../Cu/file1.txt .”のように相対パスで指定する時に起こりますので、今どこのディレクトリにいてどこにあるファイルをどこにコピーしようとしているのかを理解していないといけません。もしどこにいるのか分からない場合は”pwd”コマンドで今いる場所を確認して操作をするとよいです。
cp[スペース](コピー元)[スペース](コピー先)というように、スペースで区切らないとシステムが理解してくれません。コマンドのオプションを付けるときもその前後にスペースが必要です。もしコピーと同時にファイル名を変更したければ、変更するファイル名を書くこともできます。
ファイルがコピーできない原因は以上のようなことがほとんどです。これはLinuxのファイルの構成のtree構造が分かれば相対パスで指定することが出来るようになると思います。（WindowsでもMacでも同じですが。）