W530日記:CCleanerとDaemon tool lite のスタートアップをキャンセルとバッテリーリセットと次期PCの検討など

 Delphiインストール時に使ったCCleanerとDaemon tool liteは、必要な時に起動すればよいので、msconfigを立ち上げてスタートアップからチェックを外した。再起動は明らかに速くなった。

 ACアダプタは今のところ安定している。バッテリーの一晩かけてバッテリーのリセットを行った。バッテリーは今のところ良い状態を保っている。

 P71が中古で出回るようになったら、是非入手したい。一番安いのなら20万ちょっとなので、新品でも買えない価格ではないが、W530の中古を買ったばかりでそれはない。同時に複数のマシンを使うなんてことはそう頻繁にはない。とりあえずE420とW530、複数のタブレットがある現在、これ以上新型のPCを購入しても無駄になる。

 W530のCPUはIvyBridge時代のCore i7 (2.7GHz)。4コア8スレッドでターボブースト時3.7GHzまでクロックアップできて、グラボにQuadroまでついているなれば、少なくともBroadwell世代のCPUには見劣りしなし、現行のi5-8250Uあたりに比べても遜色ないはず。中古なので、これから5年とか10年とかは無理にしても3年くらいはメインPCとして使いたい。その頃にはCPU脆弱性の問題も解消されているだろう。

 ACアダプタ不調の時に気がついたのだが、E420のACアダプタを使った場合、充電にしか使えないのだが、その充電速度はE420よりも速い。それだけ本体電源部が充実しているという事か。E420とW530の間にそれだけの越えられない壁というか格の違いがある。

 E420をメインに使っていた時には、それなりにそこそこであるという感想ではあったが、自分の用途の範囲で、そのパフォーマンスに満足していた。ところが、W530を使い始めたらE420に戻れなくなった。現在のハイエンド機がどれだけ進化しているか興味はあるが、知らない方が幸せという事もある。

W530日記:ACアダプタの不安

 E420はACアダプタが断線して、結局Amazonで安く売られていたのを入手できて、事なきを得たのだが、W530のACアダプターが一昨夜いきなり不安定になった。

 線材にダメージがあるようには見えないのだが、給電されたりされなかったりと、かなり不安定な状態が続いていた。ACアダプターの不具合なら、また通販で調達すればいいと簡単に考えていたのだが、170WのACアダプターというのは、使われていたPCが限られていて、そんな気安く売られてはいなかった。

 W540のACアダプターなら、Lenovoの通販で入手できる。ただこれは出力端子の形状が角型に変更されている。W530はW520と共通で、E420と同じ出力端子を持つ旧型のACアダプタで、これはもう直販では販売されていない。W530のアダプタが販売価格10,260円でクーポン適用後9,234円とあるので、W530用も同じような価格だったろう。

 アマゾンで販売されていたものは、海外並行輸入品でかなり高価だった上に、見ているうちに在庫がなくなった。他の通販サイトだと純正新品送料無料で、最安3,500円とリーズナブルなものがあった。また、サードパーティー製で在庫が688個で販売価格5,800円というちょっとわけの判らない在庫を抱えているお店とか。

 ひとつ判った事は、E420の65WのACアダプタの出力ではW530のバッテリーは充電できるが、PC本体を駆動はできないという事。W530出力端子は内部に2つの突起があってE420には刺さらない。これは安全対策だろう。

 それでタコ足配線を整理して、W530の電源アダプタを壁のコンセントに刺したら、今のところ安定している。古いテーブルタップを使っているので、ACプラグの接触が甘かったのかもしれない。これでしばらく様子を見る。

 あと、既にW530はE420を押しのけてメインPCになっている。W530が使えなければE420を使えばいいだけのはずなのだが、その為のバックアップ機なのだが、E420には非常に申し訳ないが、一旦W530の快適さを覚えてしまうとE420には戻れない。

 

 アダプタ単体での購入よりも、

USB 3.0のW520 W530 170w acによるレノボThinkpad 433835uのミニ・ドック・ドッキング・ステーションのeBay公認海外通販 - セカイモン

 こっちの方が楽しいかもしれない。日本ではあまり売れなかったのか、海外通販でしか入手できないのが難点。その前に置き場所を確保する必要があるが、マルチスクリーンを一度試してみたい。

Pacal再入門:「ファイル存在の確認」を分割したコード

 procedure とか functionの使い方を思い出す為に無駄に分割してみた。

program sim2;
uses
sysutils;
function argchk(c : integer) :boolean;
var
   result : boolean;
begin
   if c=2 then result := true else begin
      result:=false;
      if c<2 then writeln('Missing arg') else writeln('Too much args');
   end;
   argchk:=result;
end;
function existchk(s : string):boolean;
var
   result : boolean;
begin
   if FileExists(s) then
   begin
      result := true;
      writeln(s, ' is Exists.')
   end
   else begin
      result := false;
      writeln(s, ' is not Exists.')
   end;
   existchk := result;
end;   
procedure readfile(s : string);
begin
   writeln('dummy');
end;
procedure main(st   : string);
begin
   writeln('find arg', ' "', st, '"');
   if existchk(st) then readfile(st);
end;

begin
   if argchk(argc) then main(argv[1]);
end.

上記の単一コードのコンパイル・実行が可能な事を試した上で、unitに分けてみた。

 
unit myApp;
interface
function argchk(c : integer) :boolean;
function existchk(s : string):boolean;
procedure readfile(s : string);
procedure main(st   : string);
implementation
uses
sysutils;
function argchk(c : integer) :boolean;
var
   result : boolean;
begin
   if c=2 then result := true else begin
      result:=false;
      if c<2 then writeln('Missing arg') else writeln('Too much args');
   end;
   argchk:=result;
end;
function existchk(s : string):boolean;
var
   result : boolean;
begin
   if FileExists(s) then
   begin
      result := true;
      writeln(s, ' is Exists.')
   end
   else begin
      result := false;
      writeln(s, ' is not Exists.')
   end;
   existchk := result;
end;   
procedure readfile(s : string);
begin
   writeln('dummy');
end;
procedure main(st   : string);
begin
   writeln('find arg', ' "', st, '"');
   if existchk(st) then readfile(st);
end;
end.

上記がユニット部。下記が実行部で個別にコンパイルできる。

program sim3;
uses myApp;
begin
   if argchk(argc) then main(argv[1]);
end.

 unitをコンパイルすると、ppuという拡張子を持つモジュールが出来上がる。自作したppuがコンパイル対象のファイルと同じィレクトリにあれば参照可能。

 fpcにコマンドオプションをつければ、ppuのパスを指定できそう。

 

 ところで、このコードをLazarusのIDE環境下でコンパイルしてみると、Unitの方のコンパイルで、変数resultがダブっているというメッセージが出て、コンパイルできない。(コンソールからfpcでコンパイルするぶんにはアラートはでない。)異なるスコープなので、問題はないはずなのだが、何故だか判らない謎。

 仕方がないので、resultをresult1とresult2にリネームして試してみたが、今度はparameter s が使われていないという難癖。コンソール用のプログラムなのでarvc, argvを使っているのだが、プログラムに与える引数をどこで渡したらいいのか判らない。実行ファイルは出来上がっているが、shellから実行してみると、IDE環境下と同じエラーが出る。

 

 とりあえず、IDEを使わないshellでのコンパイルには問題がない。このまま行くべきか、Lazarusの方の学習をするべきか。Pascalを思い出すという事が目的なので、安易の道を行くべきだろうという事で、shellでfpcを使う事を優先する。(delphitpcが見つからないが、コンソールで使うプログラムという事なら、Freebsdでも使えるfpcがいいだろう。)

 

 こういうのを見つけたが、、、

Delphiのプログラムをmakeでビルドする(Delphi Advent Calendar 2012-12-02) - 偏った言語信者の垂れ流し

 たしかに、コマンドプロンプトから、>make と打ち込むと、

>make
MAKE Version 5.41 Copyright (c) 1987, 2014 Embarcadero Technologies, Inc.
Fatal: Unable to open makefile 

  となる。ただ肝心のdcc32が以下のような状態

 >dcc32
This version of the product does not support command line compiling.

  starterこそ、コマンドラインからのコンパイルが必要そうな気もするが、まぁ無料で使わせて貰う身で贅沢は言えない。

Pacal再入門:覚えている事いない事

 TurboPacalの頃は、スクラッチからコードを書くしかなかった。

 Delphiでは雛形が用意されていたので、それを拡張する事でプログラムを組み上げていた。何もしなくても、骨格は出来上がっていたので、あまり考える事もなかったし、骨格以外の構造が必要になった時は、その時調べてなんとかし、以降はその時のリソースをコピペして利用していた。良くも悪くも泥縄式。慣れでなんとかしていた。

 過去に書いたソースが残っていれば、なんとかなるかもしれないが、当時のPCはスクラップ同然で押入れに積み上げてあり、そこから探し出す気にはなれない。

 

 思っていた以上に、Pascalのスキルは失われている。プログラミング言語としての普遍的な部分についてはなんとかなる。組み込みの変数や関数についてはレファレンスを見ればなんとかなる。問題はPascal独自の構造。愕然とするほど覚えていない。これは本当に初歩から学習し直さなければならない。

 救いは、何ができて何ができないかについては、漠然と覚えている事。それだけでも、Pacal再入門の価値はある。今更、できる事とできない事の区別もついていないようでは間に合わない。

 

 当面、fpc+emacsの環境で、TurboPascalを使っていた当時のレベルまで回復する事を目指す。int21のシステムコール等は範囲外とする。

Pacal再入門:ファイルの存在の確認

 指定されたファイルが存在するかどうかだけを確認するプログラム。

 あくまでもエチュード

program fexist;
Uses sysutils;
var
    filename: string;
    acnt:integer;
    count:integer;
begin
    acnt := argc;
    writeln('arg count is ', acnt);
    for count:=1 to argc-1 do writeln(argv[count]);
        if acnt<2 then writeln('Missing arg');
        if acnt>2 then writeln('Too much args');
        if acnt=2 then begin
        filename := argv[1];
        if FileExists(filename) then writeln(filename, ' is exisits') else                          writeln(filename, ' is no exisits'); 
    end;
end.

 初歩的な事を確認しながら書いたので、この短いコードには洗練の欠片もない。

 if文じゃなくてcase文を使うべきだし、argv, argcの代入も気持ち悪い。

 FilleExists関数を使う為には、Uses節で'Sysutils'を宣言しておく必要がある。

 文字列リテラルは"ではなくて'で囲む。

 代入の:=と、等号の=を取り違えない。久し振りなので本当にいろんな事を忘れている。

 発見としては、'01-Dancing Queen.mp3'のようなスペースの入るファイル名もちゃんと認識できる事。以前もそうだったかどうか覚えていない。

 もともと、ファイル名にスペースを入れる習慣はなかったし、既存のファイルを読み込むようなプログラムを書くことがなかったので、確認しなかっただけかもしれない。

マルチパラダイム下での選択と集中?

 FreeBSDの走る仮想環境、それとは別に複数の開発システム(Lazarus, Delphi, Visual Studio, Eclipse)。更にWindows10への移行。ぼちぼち進めようとは思っているが、これらを同時に進めるのは、我ながら馬鹿げていると思う。Windows10以外は、いずれも初見ではなくて、以前または昔、もしくは大昔触った事があるというのは気休めでしかない。ほとんどが記憶の靄々の彼方にある。更に個々のシステムはモデファイされ昔の面影はない。

 幸いな事にEmacsのルックアンドフィールは変わっていない。たぶん、あと10年や20年では大きく変わる事はないだろう。変わるのなら既に変わっているはずだ。だからEmacsのスキルは大切にする。

 それでは何故、今更最新の開発システムなのかという理由なのだが、シンプルに好奇心だ。もともと自分にとってのコンピュータは高価な玩具という位置づけから始まった。プログラミングに興味を持ったのも、仕事の為に仕方なくではなく、好奇心を満たす遊びの一環として始まった。業務としてサーバーの開発や維持管理に関わった事もあったが、これは成り行きで、自分としては玩具としてのコンピュータの延長として見ていた部分は否めない。

 仕事としてのコンピュータは興味深い部分もつまらない部分も多かった。ただIT企業の従業員としてコンピュータに関わる事がなかったのは幸運だったかもしれない。

 今一周して、コンピュータを玩具に戻す。玩具としてのコンピュータならコンソールベースのFreeBSDEmacsで良いと思っていたのだが、コンソール画面ならDOSが登場した頃から見ている。サーバーの維持管理をしている時も、Linuxマシンのコンソール画面を睨んでいた。玩具として極めたとはとても言えないのだが、ちょっと見飽きた感じがしないでもない。

 プログラミングするのなら、グラフィックな画面がパカパカ動くのが動作した時、たぶん楽しい。それはそれで飽きるのも早いし、パカパカ動く派手なアプリほどドキュメントの整備が面倒になり維持が難しくなるというのは判っているのだが、まぁ面白ければそれでいい。

 それで棲み分けだが、EmacsはOrg-modeで日記をつける。FreeBSD環境を自分で理解し把握できる範囲で整備していく。

 Lazarus/Delphiは、昔の感覚を取り戻す為に、PascalによるプログラミングとObject Pascalによるオブジェクト指向の再学習。Lazarus/fpcはFreeBSD上でも試して見る。

 Visual StudioC#でマルチメディア系の簡単なアプリの作成。フォトビュアーを当面の目標にする。

 EclipseTomcatを導入してPrivateなWebアプリの作成でもしてみるか。

 これくらいなら、なんとか実現できるだろう。その後の事は、その後で考える事にする。

 これは「遊び」なので、急がずにのんびり進める。

Microsoft アカウント復活とVSの製品登録終了(PHSは結局ダメみたいという結論)

 Visual Studio Comunity 2017 製品登録のためにMicrosoft アカウントが必要なのだが、その新規登録の為にはSMSで送られてくるセキュリティコードが必要。それが手持ちのPHSに送られてこない。

 PHS迷惑メール対策を疑って、「標準」の状態だったのを解除してみたのだが、結局それでもダメだった。070で始まるPHSには対応できていないという事なのか。

 結局、Windows8.1のタブレットを購入した時に登録したアカウントのロックを解除して、そのアカウントでVisual Studioの製品登録を行った。パスワードは忘れてしまっていたので、個人認証が必要だったが、新規登録時、固定電話の番号を登録していたので、その番号に自動音声でセキュリティコードを報せる電話が掛かってきた。

 なんとなく納得できない思いは残るのだが、とりあえず、アカウント復活と製品登録は終了した。

 ちなみにMSのアカウントは1年間サインインしないとロックされ、5年使わないと消失するらしい。