2017-11-13

Windows10とNetBSDの同期にforfiles.exeとcpioを使う

Windows Vistaがインストールされていたdynabook SS SX/15AをNetBSD/i386に入れ換えて使用しています。まだOSがVistaだった頃から、Windows10が入っているデスクトップPCの%HOMEPATH%\Documents以下をdynabook側にコピーして、外出先でも自宅のPCと(ほぼ同じ)ファイルが参照できるようにしていました。当時はお互いにWindows PCですから、ネットワークドライブとして繋げば、あまり苦労もせずにファイル同期が可能でした。

OSをNetBSDに置き換えたことで、Windows10側のファイルを如何にしてNetBSD側に持ってくれば良いのか方式を検討することになりました。考え方としては、Windows10側を動作主体にしてNetBSD側にファイルを送り付けるか、NetBSD側を動作主体としてWindows10側からファイルを引き込むか、いずれの方式にするか考えなければなりません。OSの標準的な機能だけを使って実現しようとすると、NetBSD側を動作主体にして、NetBSD側からWindows10側のディレクトリをリモートマウントすることで、処理を全てNetBSD側でおこなう方式にしました。

まず最初に試したのは、NetBSD側でmount_smbfsを使ってWindows10側の%HOMEPATH%\Documentsをマウントし、rsyncで同期させることでした。しかし試してみると、ネットワークが切れたり、途中で処理が固まったり(情報が出ていないので何が問題なのか分からない)、上手くいきません。

次に考えた方式は、NetBSD側でrump_smbfsを使いファイル名の文字コード変換をさせてWindows10側の%HOMEPATH%\Documentsをマウントし、 tarでファイルをコピーしてみました。ひとまず問題なく全てのファイルをコピーすることができました。しかし処理速度が異常に遅く、ほぼ24時間かかってしまいました。いくらなんでも遅すぎますし、CPUは99%程度はアイドル状態です。NetBSD側が動作の処理を主導して、Windows10側のディレクトリを検索しようという発想が良くなかったのかもしれません。

次に考えた方式では、発想を転換して、Windows10側とNetBSD側の処理を分離することにしました。Windows10側では、指定日付以降に作成されたり変更されたりしたファイルのリストを作成しておきます。そしてNetBSD側では、そのファイルを参照してファイルを転送するだけの処理にしました。

ここで問題になるのは「指定日付以降に作成されたり変更されたりしたファイルのリスト」をどのようにして作成すれば良いかということです。U*IXであればfindを使えばなんとかなるのですが、Windows10ではどうすれば良いのでしょうか。もしかするとPowerShellでロジックを組めば対応できるのかもしれませんが、PowerShellを使ったことがないので他の方法を探してみました。Webを検索したところforfiles.exeというものがあるようです。なんと指定した日付以降のファイルリストを生成することができました。何時の間にこんなコマンドがWindowsに入っていたのか知りませんでしたが、ありがたいことです。

またNetBSD側ではファイル転送をおこなうだけなので、cpを使えば良いかと思いましたが、ちょっと問題がありそうです。最初にWindows10側のファイルを全てコピーする場合には問題になりませんが、2回目以降に一部のファイルだけをコピーしようとすると転送先ファイルのディレクトリが無い可能性を想定しなければなりません。スクリプトをちょっと工夫してmkdirしてからcpするようにしても良いのですが、cpioを使ってみました。cpioの存在は昔から知っていましたが、普段はtarを利用するのでcpioを利用したことがありませんでした。アーカイブファイルを作るだけではなく、ファイル転送にも利用できるようですし、転送先にディレクトリが必要なら作ってくれるオプションもあります。

最後の方式でWindows10側(%HOMEPATH%\Documents)→NetBSD側($HOME/Documents)にファイル同期させることが出来るようになりました。

2017-10-26

Hooked on Classics 2000 Golden Classics

Hooked on Classics」というCDを持っています。元々はLPを持っていましたが、LPレコードが廃れた頃にCDで買い直しました。クラシック以外にもスウィングとかバロックとか、いろいろなアルバムが出ていますが、見つけたら買うようにしていました。何分にも随分古い作品なので、新しいアルバムは出ていないようです。

このアルバムを知ったきっかけは、NHKが土曜日の夜に放送していた「海外ウィークリー」の中で紹介されたことだったような覚えがあります。キャスターだった幸田シャーミンが「今、イギリスで大ヒットしているアルバムがある」と言って、最初のトラックを流したと記憶しています。Wikipediaでは次のように書かれているので、1982年頃のことでしょうか。
 The opening track, "Hooked on Classics" (Parts 1 & 2), was released as a single in October 1981, peaking at number 2 in the UK and later in the US at number 10 on the Billboard Hot 100 in February 1982.
時は過ぎて、LPの時代からCDの時代に変わり、今ではYouTubeなどが一般的になりました。ふとYouTubeでHooked on Classicsを検索してみたら「HOOKED ON CLASSICS 2000 (Golden Classics)」というのを見つけました。曲のアレンジが新しくなっています。

何時の間にリリースされたのか分かりませんが、タイトルに2000とあるので、2000年頃でしょうか。日本国内では既に流通していないようです。なんとか入手したいものですが、どうしたら良いのでしょうか。

2017-10-25

ラテン語辞書の常識?

放送大学で「ラテン語の世界('16)」を受講したので古書店で『研究社 羅和辞典』(1980年7月10日増訂新版14刷)を買いました。この辞書しか知らないので、僕の持っている辞書が偶々そうなのか、ラテン語辞書はどれもそうなのか断言はできませんが、辞書の使い方の説明がとてもシンプル(実は不親切と言いたい)です。

まだラテン語の勉強を始めたばかりなので辞書で単語を引くほどの段階でもないのですが、 せっかく買ったので使ってみようと思いました。試しに教科書に掲載されている単語cogitoを調べてみました。

辞書には次のように掲載されていました。
cogito, are, avi, atum, v.a. [co+agito] (intrans.) 1. 考える、考慮する、省察する、追想する、回顧する(de alqo; de re). (以下略)

cogitoの後にある「are, avi, atum」というの何でしょう?「v.a.」や「intrans.」については辞書の始めの方に「本辞典使用の略語」として説明されていた何なのか分かりました。

今まで利用してきた辞書(英和辞典など)の場合、辞書の最初の方で使い方の説明がありました。ところが『研究社 羅和辞典』にはそういう説明が見当たりません。ラテン語の辞書では常識なので態々書く必要がないということなのでしょうか。

「ラテン語の世界('16)」の印刷教材には「辞書では伝統的に一人称単数で掲載する習慣があります」(44頁) とさらっと書いてあるのですが、この他には特に辞書の引き方の説明は見当たりません。

困ってしまって検索エンジンで調べていると「山下太郎のラテン語入門」の「ラテン語の格変化」に次のような記述を見つけました。
辞書では見出しの次に属格の形を記す習わしです。ただし語尾のみ記す場合がほとんどですから、その点にも注意が必要です。

また『ゼロからのラテン語』には「3.1.13 辞書に書かれている動詞の項目」で次のように書かれていました。
ラテン語の辞書に書かれている動詞の項目は、次のような記述から構成されています(ただし、 辞書ごとに相違がありますので、すべての辞書がこのとおりになっているわけではありません)。(以下略)

やはりラテン語辞書独特の習慣があるようです。こういうことは一度知れば良いことなのですが、全くの初心者にとっては落とし穴になるところです。

ともかく一歩前進しました。

2017-10-24

ラテン語の世界('16)

2017年度第2学期は「ラテン語の世界('16)」を受講してみました。講師はHermann GOTTSCHEWSKI客員教授で、東京大学大学院比較文化研究室の教授です。ラテン語は日本人からすれば外国語ではあるのですが、今日ではラテン語を母語とする人が存在していないので、学んだところで旅行などで役に立つわけでもありません。しかしラテン語から派生した言語としてスペイン語やフランス語などがありますし、西洋文化の起源を学ぶためにラテン語は役に立つでしょう。ちょうど日本人が古典的な教養のために漢文を学ぶようなものかもしれません。

ラテン語に限らず、あたらしい言語を学ぶことは大変です。英語だって、日本人なら中学1年生から延々と勉強しているのに、使えるレベルに達するには相当長い時間がかかります。放送大学の通信授業で半年弱(実際には3カ月半程度)では、どこまで深く学べるのか怪しいところです。

印刷教材(放送大学では授業で使用する教科書のことを「印刷教材」と呼びます) では、次のように書かれています(「1.2 この教科書の目的と構造」16ページより)。無意味に期待を持たせることなく、このように言い切るのは、とても潔いと思います。
本書では「ラテン語を勉強する」ことを目指すのは到底無理なので、最初から諦めることにしました。
ラテン語の勉強を諦めると書かれているとは言っても、これは言葉の綾というものであって、印刷教材に書かれているのはラテン語文法の詳細です。この科目のゴールとして深い理解に至ることを求めていないとしても、個人的なゴールとして深い理解を目指すことは妨げられない(むしろ奨励しているのではないか)と思いますから、できるだけ頑張ってみようと思っています。

勉強を開始するにあたり『研究社 羅和辞典』を買いました。新品は高いので避け、古書店で買いましたので、1980年7月10日発行の増訂新版14刷です。古書ですので千円ちょっとでした。

2017-10-22

『Windows PowerShell逆引きハンドブック』

図書館で『Windows PowerShell逆引きハンドブック』を見かけたので目を通してみました。最近のWindowsではPowerShellが標準搭載されています。しかも2017年春にリリースされたWindows10 Creators Updateでは、コンテキストメニューのコマンドプロンプトがPowerShellがデフォルトになってしまいました。ただし切り替える方法があるのですが、将来的にはコマンドプロンプトが本当に消えてしまうかもしれません。

以前からPowerShellについて学んでおく必要性を感じていたのですが、要するにPowerShellで何が出来るのかという事を概説した情報が見つかりませんでした。もちろん検索エンジンで探せば情報は幾らでも見つかるのですが、細切れの情報を大量に読んでもPowerShellのイメージがつかめませんでした。

この本を読んでみるとPowerShellの概要がつかめた気がします。PowerShellを使いこなすには情報は足りないと思いますが、PowerShellの概念が判ってしまえば検索エンジンで詳細を調べることができるでしょう。

僕としては(完璧ではないとしても)悪くない書籍だと思うのですが、amazonでの評価は高くありません。評価しないという意見があったとしても、それはその人の考えですから、僕がどうこう言う問題ではありません。

2017-10-14

Rにおいてread.csv()を使う場合のTips

LibreOffice Calcを使って入力した情報をグラフ化する場合にRを利用しています。グラフ化する機能はCalcにもあるのですが、WYSIWYG的な操作方法が好きになれないのでRを使っています。入力したシートをUTF-8エンコーディングのCSVでファイルに出力し、そのファイルをRで読み込んでグラフ化します。

RでCSVファイルを読み込むにはread.csv()を使います。いろいろとオプションが用意されていますが、簡単に使ってみるには以下のようにします。
foo <- read.csv("foo.csv")

こんな感じで今まで使用していたのですが、問題が発生しました。
  1. 1行目にはヘッダ情報として各列の項目名が日本語で指定されていたのですが、 文字化けしてしまう。
  2. 各列の項目名をグラフ化した時にlegend()で使おうとしたら、うまく扱えない。

まず1番目の問題は、CSVを読み込むときにファイルエンコーディングを指定する必要があるようです。「RのUTF-8で漢字などが入っている場合read.tableができない」という情報が役に立ちました。要するに「encoding="UTF-8"」を明示的に指定しておきます。

2番目の問題は「stringsAsFactors=F」を指定すれば良いようです。これは「Factor型になってしまいがちな文字列型のデータフレームの列を戻す」を参考にしました。

これらのオプションを指定することで意図していたようにCSVファイルを読み、グラフを出せました。