Perl

Perlは最強のスクリプト言語だと思う。インタープリタなのに速いし、何より正規表現(パターン認識)が扱いやすくて優れている。テキスト処理は右に出るものは無いだろう。utf8文字が一般的になり、日本語文字(encode)の扱いが面倒になってしまったのが残念だが、それでもPerlの性能は他を圧倒していると思う。

初めてPerlに出会ったのは1999年、PerlでCGIを書けば動的ホームページを作ることが出来る、というのを雑誌で読んで、試しにウインドウ版をダウンロードしてWin95マシンにインストールした。うかつにも、FreeBSDにPerlが付属しているのを知らなかったのだ。Perlの勉強を始めて数ヶ月経ってから、実はFreeBSDには最初からPerlが付属していて、多くの人がそれでスクリプトを書いていることを知った。それまで必要ならBシェルスクリプトで間に合わせていたが、Perlで書いてみたら、はるかに楽で機能的なものが書ける。今まで何をやっていたのか、ずいぶん時間を無駄にしてしまった。

最初はバージョン4の勉強を始めたが、半年ほど過ぎ、2000年になってからバージョン5の機能を使うようになった。バージョン5はオブジェクト指向風にプログラミングができる。私は「実用 Perlプログラミング」という本を買ってきて勉強した(当時定価4500円)。この本はPerl教本の中で一番優れた本だと今でも思う。Perlを始めている人にはぜひ手に取って欲しい本だ。この本と「CGI&Perlポケットリファレンス」(これも優れもの)は今でもすぐ机の脇に置いてあって、必要なときに見ている。

この頃は、仕事が忙しくなかなか勉強が進まなかったが、1年後にホームページの商品ページと買い物かごをPerlのcgiで書いて載せた。いつしか何とかオブジェクト指向風に書けるようにもなった。

オブジェクト指向と言ってもPerlの場合は厳格なルールが少なく、自由きままだ。普通のスクリプト風に書いても何の問題もないし、オブジェクト指向風に書こうと思えば書ける、といったものだ。このルーズさが堪らなく良い。そのおかげでぐちゃぐちゃになって、後で苦労することも多い。それで今は、とにかくできるだけきれいなオブジェクト指向風に書くことにしている。

しかし、Perlの独特な略語には少々疑問を感じる。そのおかげで最初の取っつきにずいぶん苦労した。人の書いたものを見て勉強しようと思っても略語が多くてなかなか進まない。例えば「while (<>)」。何のことか分かるのにずいぶん時間を取られた覚えがある。キーボードを打つのが楽なので、今では私も略語を多用しているが、本当は略語はない方が良いと思うこともある。ただ、略して書けることがメリットになることも多い。この辺のところは、今後の記事にしたいと思っている。

Windows10小型PCの容量不足解消

昨日(11月7日)、あることがきっかけでWindows10を最新のver1703にアップデートすることになった。Cドライブの容量が2GBしか残っていないので無理かと思っていたが、何とかアップデートができた。今後の参考になりそうなので、記録しておく。

このページの目次:

  1. Cドライブが容量不足だ
  2. 容量不足解消の切り札、ジャンクションリンク
  3. フォルダーをDドライブに移動
  4. アクセス権で手間取ったフォルダーの削除
  5. ジャンクションリンクとシンボリックリンクの作成
  6. いよいよWindows10を最新ver1703にアップデート
  7. アップデート後の問題点と反省点

Cドライブが容量不足だ

ブログのサイドバーを編集しようとして、編集画面を開いたら、このedgeは最新ではないので、アップデートしろと注意されてしまった。何しろ、このマシンはちゃっちい安物だ。Cドライブ(SSD)が28GBしかない。それではさすがにどうしようもないので、拡張スロットに110GBのSSD、USBに1テラハードディスクをさして使っている。Cドライブは容量が2GBしか残っておらず、ブラウザを乗り換えたくてもインストールできない。仕方なくedgeを使っているという有様だったが、ほかのウェブページでも頻繁に、最新ブラウザを使うように文句を言われていた。なので、何とかしなくちゃと思ってはいた。しかし、どいつもこいつも何故こちらの都合も聞かずに勝手にCドライブにインストールされてしまう仕様なのか、本当に不便だ。
調べると、最新バージョンは、edgeだけアップデートというわけにはいかず、win10そのものをアップデートする必要があると分かった。それで、マイクロソフトのページでチェックしたら、容量不足でアップデートできません最低でも8GB必要ですと、言われてしまった。とりあえず、主だったアプリ(オフィスなど)を一旦アンインストールしてアップデートしようかと思ったが、まず、もっと楽で良い方法がないか探してみることにした。

容量不足の切り札、ジャンクションリンク

UNIX系OSならなじみのシンボリックリンクだが、ウィンドウズにも似たものがあると、始めて知った。米国のMSフォーラムに、こんな記述があった。

>MKLINK /J “C:\Program Files\Microsoft Office 15” “O:\Program Files\Microsoft Office 15”
>MKLINK /J “C:\Program Files (x86)\Microsoft Office” “O:\Program Files (x86)\Microsoft Office”

This created junction points for each directory on the C drive that Office installs to, and point them to the O drive. So the OS thinks its going to C drive for those folders, but in reality its going to the O drive.

これは使えそうだ。要するに、Cドライブにインストールしているアプリを、フォルダーごとそっくりDドライブに移動して、ジャンクションリンクなるものを作成したら、OSはそのアプリをCドライブにあるものと見なしてくれるということだ。ジャンクションリンクを作るには、コマンドプロンプトで「mklink /j」すれば良い。これなら、Cドライブの容量不足を解消できそうだ。
早々我マシンで容量を食っているアプリをDドライブに移動することにする。office365とadobe acrobat readerとatokとInternet ExplorerをDドライブに移動してジャンクションリンクを張ろう。これで8GB以上空くはずだ。ひょっとしたらc:\Program Files をまるごと、移してしまうことが出来るかもしれないが、何か心配なので、とりあえずこの方針で行く。

フォルダーをDドライブに移動

まず自分に管理者(Administrators)権限があるかどうかを確認する。さもないといろいろ面倒なことになる可能性がある。設定で確認すると、大丈夫だ、管理者と書いてある。ファイルエクスプローラーでいきなり移動するのは途中で電源がブチッといったときなど少々心配なので、とりあえず、

  1. フォルダーをDドライブにコピー
  2. Cドライブのフォルダーを削除
  3. ジャンクションリンクを作成

の手順をとることにする。では早速始めよう。まずOffice365だ。ファイルエクスプローラーで、C:\Program Files\Microsoft Office を D:\Program Files\Microsoft Office にコピー。少し時間がかかるはずなので、コーヒーブレイク。ところが戻ってきたら、エラーが出ている。
「AppvlsvStream32.dll ファイルが見つかりません!」だと。そのファイルの詳細を見ると、種類のところに symlink と記載がある。シンボリックリンクなのでこの場所には実態が無い、だから別の場所には移せないということか。検索すると、全部で21カ所シンボリックリンクがあった。仕方ない、面倒だが、これは一旦削除して、Dドライブに移動後、同じシンボリックリンクを作成することにする。とりあえず、この21カ所を除いてコピーは終わった。

アクセス権で手間取ったフォルダーの削除

今度はCドライブのOfficeの削除だ。管理者なので、ファイルエクスプローラーで簡単に削除できると思っていたが、いざ始めると「アクセス権限が無い」と注意されてしまった。ファイルを右クリックしてプロパティのセキュリティ項目を見ると、ファイルオーナーが Trusted Installer になっていて、何と administrators にも書き込み権限がない。編集ボタンを押してフルコントロールにチェックすれば良いはずだが、グレー表示でそれも出来ない。そうするとオーナーを users または administrators に変更してから、権限をフルコントロールにするという方法をとるのだろう。この手順がかなり面倒なので、箇条書きにしてまとめておく。

  1. 管理者として作業する
  2. file explorer で削除したいファイル・フォルダーを右クリックする
  3. プロパティをクリックする
  4. セキュリティタグをクリックする
  5. 詳細設定ボタンを押す
  6. 所有者変更をクリックする
  7. 所有者を「users」に変更して、OKする
    (選択するオブジェクト欄に「users」と記入してOKする)
  8. 編集ボタンを押して、usersを選択する
  9. アクセス許可:users で「フルコントロール」をチェックする
  10. OKする

これは時間がかかった。Linuxだったらシェルでパパッとできるのに、と恨めしい。ひょっとしたら、こちらの勉強不足で、Windowsでもコマンドプロンプトで簡単にできる方法があるのかもしれない。とにもかくにも、この方法で最下層から上層まで順にフォルダーの権限を変更しながら、削除を完了した。

ジャンクションリンクとシンボリックリンクの作成

ようやくここまで来た。あと少しだ。
ジャンクションリンクを作るのは、簡単だ。コマンドプロンプトを管理者権限で立ち上げて、

> mklink /j “C:\Program Files\Microsoft Office” “D:\Program Files\Microsoft Office”
> mklink /j “C:\Program Files\Microsoft Office 15” “D:\Program Files\Microsoft Office 15”

とすれば良い。次は、コピーできなかったシンボリックリンクファイルの作成だ。これも一つ一つの作業は簡単だが、多数あるので、間違わないように細心の注意が必要。どのフォルダーに何のシンボリックリンクがあったのかは、しっかり記録しておくこと。私のOffice365の場合は、次の6ファイルのシンボリックリンクが21カ所あった。

AppvlsvStream32.dll
AppvlsvSubsystems32.dll
C2R32.dll
AppvlsvStream64.dll
AppvlsvSubsystems64.dll
C2R64.dll

シンボリックリンクの個々の作成は、コマンドプロンプトでこうする。

>mklink “c:\Program Files\Microsoft Office\root\VFS\ProgramFilesX86\Microsoft Office\Office16\AppvlsvSubsystems32.dll” “c:\Program Files\Common Files\Microsoft Shared\ClickToRun\AppvlsvSubsystems32.dll”

今度は、/j オプションは不要だ(単に mklink “・・・” だ)。これを21回繰り返して、やっとOfficeが終わった。

いよいよWindows10を最新ver1703にアップデート

上述の作業をatokとadobe acrobat readerとinternet explorerで繰り返し(Officeほど大変ではない)、ようやくCドライブに8.5GBの空きが生まれた。マイクロソフトのページで「今すぐアップデート」を押すと、今度は文句を言われず、アップデートが始まった。とりあえずうれしい。が、まだまだ油断は出来ない。夕食後、無事アップデートが終わっていたので、立ち上げてみた。

すると、Dドライブに移動した、OfficeとAcrobat Readerとatokが動かない。ちょっと慌てたが、おそらくジャンクションリンクが認識できないのだろうと思い、ジャンクションリンクを一旦削除して作成し直してみた。コマンドプロンプトを管理者権限で動かして

> mklink /j “C:\Program Files\Microsoft Office” “D:\Program Files\Microsoft Office”
> mklink /j “C:\Program Files\Microsoft Office 15” “D:\Program Files\Microsoft Office 15”
> mklink /j “C:\Program Files\JustSystems” “D:\Program Files\JustSystems”
> mklink /j “C:\Program Files(x86)\Adobe” “D:\Program Files(x86)\Adobe”

すると今度は、何事も無かったように、ちゃんと動いた。

アップデート後の問題と反省点

しかし、atokが不安定になっている。Edgeで漢字変換できない。調べると、Win10をアップデートしたら他社製FEPは再インストールするように書いてある。仕方ない。アンインストールしてインストールし直した。今度は普通に動く。atok以外に、アップデートで動かなくなったり、調子の悪くなったアプリが複数あった。再インストールするのはそれなりに面倒だ。こういうことがあるので、シリアルナンバーなどはちゃんと管理しておく必要があると痛感したのだった。
一方Internet Explorerは、勝手に新しくCドライブにインストールされてしまった。これは、OSの付録アプリだから有無を言わさず入れてしまう、いうことだろう。今回の反省点として、

  • atokは単にアンインスートルし、OSアップデート後に再インストールするべきだった
  • Internet Explorerは、単にフォルダーごと削除をすれば良かった(勝手にインストールされる)

ということ。とにかく無事にアップデートが完了した。

最後のNECとDos-V(PC/AT互換機)

1998年にクライアント機を1台買い換えた。Windows98のNEC9821-Mateだ。Dos-Vにしようと思っていたが、秋葉原ラオックスの裏にある店でタワー型のMateがえらく安く売られていたのだ。このマシンは4-5年クライアントとして働いていたが、その後FreeBSD機となり、前述のXa7eとともにサーバーとして2012年まで働いた。このMateが私にとって最後のNEC機となった。

2000年に買い換えたクライアント機は、富士通のDos-Vだった。OSは出たばかりのMEではなくウィンドウズ98にしたかったのだが、何故かMEを載せたパソコンの方が遙かに安かったので、仕方なくMEにした。NECも確か少し前には独自路線を減らし主力をDos-V機に移行し始めていたと思う。しかしハードは旧NECの方がずっと優れていたように思う。組んでいるビス一つにしてもDos-V機より良いものを使っていて、作りがしっかりしていた。だから10年以上普通に使えた(xa7eは17年、mateは14年間稼働した)。キーボードも打ちやすかったし配列もDos-Vより良かった。本当はキーボードだけでも独自なものを残して欲しかった。それならNEC機を続けて使っていたのではないだろうか。

事務所のパソコンにはまだWindows3.1のNEC9801が働いていたが、2001年頃にはMateとxa7e以外すべてDos-V機になっていた。Windows95以降、Dos-V機の方がNECより安定していたように思う。NEC98シリーズに10年以上親しんだ身としては寂しい限りだ。しかしFreeBSDのおかげでサーバーとして寿命を全うしてくれたと思う。ところで何故日本勢はWindowsのようなOSが作れなかったのか、そこに日本という国というか社会(または日本人)の足りないところが見えるような気がする(ちょっと大げさかなあ)。

引っ越し

ワードプレスで最初の投稿

ブログを引っ越して来ようと思う。しかし、投稿した日付に余り意味の無い記事、例えば思い出話などは問題ないが、日付に意味があるものはどうすれば良いのか。自分以外の人間が見ることは想定していないので、SEOは気にしないが、日付が変わってしまうと困る記事もある。とりあえず、インポートしてから考えよう(どうやってインポートするのか分からないが)。

文章は、自分で読んでも不明なところは、書き直すようにする。カテゴリーは「パソコンとインターネット」「その他」の2種類で良いと思う。Tagは少し細かく付けてみたい。
ところで、HTMLの編集はどうするのか。やたら無駄に「br」などが使われていたら嫌だし、自分で、styleを決めたいこともある。CSSの追加が出来るとうれしいが。titleがh1なのかとか、今書いている部分は全部 p タグで囲まれているのかも知りたい。

本ブログの主題は「私のパソコン関係の出来事」、現在進行系および過去に起こったこと。副題はその周辺で起こったこと、例えば出張先で驚いたことなど、を書く気になったときに書く。