goo blog サービス終了のお知らせ 

雑記帳

日常の出来事や、読んだ本のあらすじや感想など書いています。

気づかなかった時計

2009-08-13 21:00:00 | コンピュータ
休日に家にいるとぎー、ぎーという音が聞こえて
きます。
プリンターが自動でヘッドのクリーニングをして
いる音です。
休みしか耳にしませんがたぶん毎日やっている
のだと思います。
それにしてはインクの詰まりで印刷できなく
なるのだからあまり役に立たない動作です。
ふと思いました。夜中にクリーニングをしている
のを聞いたことがありません。
プリンターって時計を内蔵していたかしら。
どうしてクリーニングをする時間がわかるんだろう。

隣にあるプリンタの小さなディスレイに目をやると
しっかり日付と時刻が表示されています。
なあんだ、ちゃんと時計持ってます。
今何時だろうと思う時パソコンの電源が入っていれば
タスクバーの時計を見ればわかります。
電源が入っていない時はわざわざ時計を見にいきました。
隣のプリンターのディスプレィに目をやれば
よかったんだ。

今頃何言っているんだろう。

ストーンヘイジ

2009-08-02 21:09:15 | コンピュータ
イギリスのロンドン郊外にストーンヘンジ
という巨石遺跡があることを知ったのは
2,3日前のことです。
世界遺産になっているそうです。
今まで1度もストーンヘンジのことを聞いた
ことがありません。
ロンドンにあるなんてなんだか驚きです。

今日たまたまテレビのチャンネルを変えたら
ストーンヘンジのことを放送していました。
知ったばかりのことを特集しているなんて
なんか変な感じです。
でもよそ事をしながらちらちら見ていたので
あまり頭に入ってはいません。

草が生い茂る草原に石柱が円形に並んでいます。
ここは死者を祭る場所だそうです。
そこから少し離れて場所にストーンヘンジと
同じような形をした木の柱で作られた
ウッドサークルの跡があります。
こちらは生者のためのものだそうです。
死者は形がなくならない石で生者は朽ちる
木だそうです。

夏至の日の、日の出をストーンヘイジで見ます。
夏至にはヒールストーンという石の真上から
日が昇るそうです。
その後ウッドサークルへ移動して日が沈むのを
みます。

紀元前2000年以上前に作られたといいます。
かなり高度な天文学や建築の知識がある人が
そんな昔に生きていたのです。
すごいです。

ハード・ディスク

2009-07-31 20:08:27 | コンピュータ
「これ使ってみて」と渡された箱から出て
きたのは大きさも形もお弁当箱のような
小さくかわいいハードディスクでした。
これが1TB(テラバイト)なんだそうです。
1TB=1000GB(ギガバイト)です。
値段はいくらぐらいかとインターネットで
検索してみたら千差万別です。
安いのは1万3千円ぐらいからあるようです。
どんどん小さくなっていきます。
少し前は結構大きなものでした。

原則外付け機器は使用禁止です。
例外で使う時もほんの臨時使用です。
1TB だといっても実際そんな大きさはぜんぜん
必要ではありません。
でもハードはどんどん性能がよくなり値段も
安いとなると必要がなくても欲張って大容量
のものを買いたくなるのが人間です。

信頼性はどんなものなんでしょうね。
壊れました。はい、全データおしまいです。
なんてことだったら、泣くに泣けません。
家庭でビデオのデータを貯めておくのに
使う分には大容量はいいですね。
私なんかはデータが全滅しました、となっても
しょうがないなぁで諦められると思います。
ビデオのデータが消滅したら悔しくて夜も
寝られないという人は多いことでしょう。

USBメモリ

2009-07-23 18:58:51 | コンピュータ
先日4GバイトのUSBメモリを買いました。
お店にあった一番安いので、約2千円です。
バックアップに使うのにいいかなと思って
買ってみました。
バックアップするといってもたいして大事な
ものがあるわけではありません。
それでも写真はなくなったら悲しいです。
最近は写真をプリントすることはめったに
ありません。
プリントしてアルバムに貼ってぱらぱら見る
のはいいものですが、なにしろかさばります。
データで保管して見る時は、ディスプレイと
割り切ることにしました。

一度にすべての写真データをUSBメモリに
複写しました。
そしたらファイル名は文字化けしてるし、
ファイルが開きません。
メモリが壊れているとメッセージが出ます。
使い始めでこんな風ではがっかりです。
エラーチェックをすると1/4ぐらいが
使えなくなっています。
フォーマットをしてみたら一応全部使える
状態になりました。
しかしこれは見た目で、実際にはどこかが
壊れているのかもしれません。

信頼性がなくなったUSBメモリです。
データはこれ一ヶ所という使い方は恐くて
できません。
バックアップ用、消えても泣かないデータ用
として使うことにします。

それにしても最近のUSBメモリの容量の
でかいこと、32GBなんてのもあります。
昔はメモリを使わないよう、データも小さくと
涙ぐましい努力をしていたのに今はそんな努力は
まったくしなくてよくなりました。

プリンタの不調

2009-07-22 20:17:01 | コンピュータ
すいぶん前からプリンターが調子悪くなって
いました。
印刷しても白紙しか出てきません。
掃除できる部分は綿棒で拭いてやりました。
でもぜんぜんだめです。
小さなディスプレイが付いていてエラーだと
メッセージを表示するようにできているの
ですが、何も表示しません。
もう1年以上ほったらかしてあります。
それだけプリントすることって無いってことです。

何もすることのない休日でしかも今日は平日です。
プリンターのヘルプディスクへ電話して
やりましょう、という気になりました。
「混んでいますからお待ちください」という
アナウンスを何回か聞いてしばらく待ちました。

さすがはヘルプディスクのプロです。
根気よくあれしてください、これしてくださいと
指示をしてくれます。
そして処理中は待ち時間がありますが、じっと
待っていてくれます。

どうやらインクのヘッドが詰まっているらしい
とのことです。手動でのクリーニングを数回
繰り返すと薄く色が出始めました。
何回目かのクリーニング中に処理が止まった
ままになりました。
「止まってしまいました」
「では電源コード抜いてください」
コードを抜きました。
その途端に電話が切れました。
電話はプリンタに附属しています。電源を
落とせば電話も切れてしまいます。
しまったと思った時は後の祭りです。

もう一度かけでも同じ人には繋がらないでしょう。
何回かクリーニングを繰り替えすようにと
言っていたので、とにかく続行しました。
そしたら今度は"インク切れ"のメッセージが
表示しました。
これがでたら替えるまで絶対何もできません。
うまくいきそうだったのにやれやれです。
インクを買ってくるまでまた先延ばしです。
"直りました"と締めくくりたかったのに
途中経過になりました。

追伸:
あれからインクを買ってまた挑戦しました。
そしたらすぐに別のインクがまたなくなって
がっくとしました。
再度インクを買いに行きました。
どうやら印刷できるようになりました。
プリンタを無駄にしないですんでよかった。
8/4

メールは今どこに

2009-07-17 19:06:28 | コンピュータ
電話が架ってきました。
「先ほどメールを送ったのでちょっと見て
ください。」
「はーい。ちょっと待ってください。」
メーラーを立ち上げてみましたが来ていません。
「来ていませんよ。」
「遠いからね。いまごろ大阪を走っています。
アハッハ、着いたら見ておいてください。」
と、電話は切れました。
そして30秒後ぐらいに"メールが届きました"
の表示が出ました。
ほんとに大阪あたりにいたのかもね、と思わせ
るメールでした。

ソフトの進歩

2009-07-16 22:24:47 | コンピュータ
コンピュータの世界は日進月歩です。
あっという間に進歩しています。
ソフトの中には年に1,2度バージョン
アップを繰り返しているものがあります。
その反面、二十数年間バージョンアップなしで
使い続けられているものもあります。
それで困ることがあるかって。
いいえ、不満の声はありません。

こんなふうに両極端のものを見るにつけ
いったいこれはどういうことなんだろうと
考えてしまいます。
進歩って必要ですか、必要ありませんか?
必要でもあり、必要でもなし、ですか。

落書きみたい

2009-07-14 21:05:58 | コンピュータ
「自分のパソコンでは正常に表示しているのに
ほかの人のパソコンではめちゃくちゃに表示
する。どうしてなのか調べて。」
こういう依頼がきました。
CADの図面の表示の仕方の話です。
なるほど私のパソコンで開いても子供が落書き
したみたいに画面全体が線で塗りつぶされています。
正常に表示するパソコンがあるということは
なんらかの違いがパソコン間にあるに違いありません。

その書きなぐられた要素をひとつかんでそれが
なんなのか見てみました。子図です。

図面の中で同じものを複数の場所に書かなければ
ならないという場合、その部分を別の場所に書いて
おきます。その部品を子図と呼びます。
図面上の必要な場所へその子図を配置することで
何度も書く手間を省きます。
AutoCADでブロックと呼ばれているものと同じような
ものです。

文字は普通3.2ミリの高さで書きます。
ところがこの図面の子図の文字高さは280ミリです。
この高さではスケールをかけなければ図面を覆い
つくしても不思議ではありません。

じっくりと二つのパソコンの設定ファイルを
比較していくと"子図の文字にスケールをかける"と
いう設定に、片方はレ点が付き、片方は空白なのを
見つけました。
原因はこれです。

でも根本的な原因は別にあります。
別のCADで書いたのを変換ソフトを介して
形式を変えています。
この図面はそうやって変換したものです。
このソフトがこちらが望むようにうまい具合に
変換してくれないということなのです。

発表会

2009-07-11 20:47:02 | コンピュータ
今日は久しぶりに会社の発表会へ行ってきました。
3ヶ月おきぐらいに開かれていますがこのところ
ずっとさぼっていました。
5人の発表がありました。
機械製図・CAD利用技術者試験の勉強方法、
試験を受けた感想の発表。
英語の試験TOEICの勉強方法について。
あとはハード系の発表が3件ありました。
自分の仕事の守備範囲が狭いので発表を
聞いてもちんぷんかんぷんの部分が多いです。

機械製図・CAD利用技術者試験はまんざら私の
仕事からかけ離れた試験でもなさそうです。
せめてどんな内容なのかぐらいは詳しく
調べてみてもよさそうです。

好きな所へ行きたいんだ

2009-06-26 20:38:54 | コンピュータ

自分の所のものではないものがプロット出力
するから調べて欲しいとの連絡がありました。
その出力の内容を見てどこのものか検討を
付けてそこへ状況を聞きに行きました。
「確かに出力した。時々出力したにも関わらず
出てこないことがある。もう一度出力をすると
正常に出る。」といいます。
この出ないという時に自分の所のプロッタでは
なく他所のプロッタに行ってしまうらしいのです。

いうならマンションでほかごとを考えていて
自分の家のドアを行き過ぎて隣の家のドアを
開けてしまった、というようなことです。
人間ならそういうことが起こりうるでしょう。
けれどもコンピュータに関していえば
今回はあっちへ行きたい、なんて気まぐれを
起こして別の出口の方へ行ってしまうなんて
ことが起きるわけがありません。

何か理由があるはずなのですがどう調べても
別のルートへ行ってしまう理由がみつかりません。
こんな時に感じるのがコンピュータは生きていて
いたずらをしているのではないかということです。
何度やっても正常に動かないのに、同じことを
して、ある時ふっと正常に動き出すという経験が
何度かあります。
きっとそれなりの理由はあるのでしょう。
でもその理由がわからないまま正常になって
しまうため不思議な気持ちだけが残ります。

VB 配列の初期化

2009-06-17 20:09:22 | コンピュータ
Visual Basic で配列に初期値を設定するには
どうするのだったかなぁと考えました。
調べてみるとどうもVB6には設定する方法が
ないみたいなのです。
たとえば次のようにstring を3個用意します。
Dim aray(3) as String
ここに文字を設定しようとすると
aray(0)="ABC"
aray(1)="EFG"
aray(2)="HIJ"
こんなふうに一つずつ入れなければいけません。
なんかスマートな方法はないかとさがしたら
次の方法がみつかりました。

Dim aray() As String
aray = Split("a,b,c,$,$,A,B,C,$,$", ",")

split関数を利用して分解したものを配列に
挿入します。
では2次元配列に入れる場合はどうしたらいいの
でしょう。
見つかりませんでした。
次のように一旦1次元配列に取り込んだものを
置き換えるという方法しか思い浮かびません。
何か方法があったら教えてください。
なおVB.NET になると次のように初期化できます。
Dim iaray() As Integer = {1, 1, 2, 3, 4, 5}

Private Sub abc()

  Dim i As Integer, j As Integer, n As Integer
  Dim aray0() As String, aray(2, 5) As String

  aray0 = Split("a,b,c,$,$,A,B,C,$,$", ",")

  n = 0
  For i = 0 To 1
    For j = 0 To 4
      aray(i, j) = aray0(n)
      Debug.Print aray0(n) & " " & aray(i, j)
      n = n + 1
    Next j
  Next i

End Sub


今気がついたのですがsplitは文字列を分解する
ものです。数字の時は文字→数字への変換が必要に
なっていまいちですね。6/18

列が表示しない

2009-05-31 22:55:51 | コンピュータ
ユーザからあるアプリケーションの表の
表示の仕方が他の人とは違うから見て、と
電話がありました。
見に行きました。
なるほど他のパソコンでは表示される列が
その方のパソコンでは表示しません。

話をエクスプローラに置き換えてみます。

このように表示されるもののうちが更新日時が
表示しないというような話です。
「なんで表示しないんだろう。どこかの列の
後ろに隠れているのだろうか。」
と、ユーザがそれぞれの列の堺のライン
(たとえばサイズと種類の堺のライン)に
カーソルをあてて押さえて引き伸ばして
みます。するといくつか試した後に表示
しなかった列が現れてきました。
「あ、出た!」
ユーザが自力で解決しました。
私はひとつ覚えました。

こんなふうに列がぴたっと重なって隠れて
しまうなんてこと知りませんでした。
へぇ、そうなんだ。まぎらわしい話です。

名前とか種類とか書かれたバーの上で右クリック
すると表が現れます。この表自体もあまり
見てみよう思ったことありませんでした。

レ点が付いているものが表示されている列です。
レ点が付いていなくて表示しないということも
あるわけです。
表でレ点がついているか調べて付いていなければ
レ点をつける、付いているのに表示しなければ
どこかの列の後ろを調べるという順序になります。

こうやってユーザに教えられたことを次回に
別の人に聞かれたときにはさも知っていた
ような顔をしてこうなんですよと紹介する
わけです。

DIR のオプションについて

2009-05-29 21:47:52 | コンピュータ
25日に書いたATTRIB の話ですが今日またまた
新しいことを見つけてショックでした。

たとえばコマンドプロンプトで次のように入力します。
D:¥>ATTRIB /S "c:¥program files¥java¥readme.*"
するとこのように結果が表示されます。
A   R    C:¥program files¥java¥jre1.5.0_01¥README.txt
A   R    C:¥program files¥java¥jre1.5.0_06¥README.txt

これが DIR コマンドでもできちゃうんですね。
D:¥>DIR /S /B "c:¥program files¥java¥readme.*"
このように結果が表示されます。
c:¥program files¥java¥jre1.5.0_01¥README.txt
c:¥program files¥java¥jre1.5.0_06¥README.txt

オプションの /S /B の2つを指示したらこのような
結果が出るなんて知らなかった。
ATTRIB と較べると先頭の A R の属性の表示がなく
こちらの方が使いやすいかもしれません。

もう1つ DIR ではあったらいいなという機能が
あります。
たとえば Dドライブに D1,D2,D3 のサブフォルダーが
あります。Dドライブの直下に DUM.TXT という
ファイルがあります。
フォルダーは表示を禁止してファイルだけ表示
したいといつも思っていました。
今日見ていたらこれができるんです。

一般的なやり方はこんな感じです。
D:¥>DIR   D:¥D*
    (省略)
2008/07/22 10:27 <DIR> D1
2008/07/22 10:27 <DIR> D2
2008/07/22 10:26 <DIR> D3
2009/05/29 21:34 8 DUM.txt

/A-D オプションを付けてやるとサブフォルダーは
表示しません。
D:¥>DIR   /A-D D:¥D*
    (省略)
2009/05/29 21:34 8 DUM.txt

D:¥>HELP DIR または D:¥>DIR /? で
オプションの一覧が表示します。
かなりいろんな表示ができます。

デスクトップ アイコン 消えた

2009-05-26 21:09:36 | コンピュータ
VBで作業していてふと画面の左のいつもアイコン
がある場所をみたらひとつもありません。
時々数秒消えることがありますのでそれかなと
思いました。待ってもぜんぜん出てきません。
再起動すれば直るかと、やってみましたが
出てきません。
アイコンが保存されている場所の"C:Documents
and Settingsxxxxxデスクトップ"の中には
ちゃんと登録されています。
出てこないならしょうがないもう一度登録するかと
やってみてもダメです。
ああでもない、こうでもないといじること1時間
あまり。
プログラムが暴走した記憶はないけどVBの
作業中にOSを壊したと思いました。

インターネットで検索したら何かでてくるかな、
それでだめなら詳しそうな人にヘルプ。
"デスクトップ アイコン 消えた" このキーワードで
検索したらばっちり出てきました。
へえ、アイコンって画面から消すように指示できる
のですね。恥ずかしながら知りませんでした。

画面の何もない場所で右クリックし"アイコンの整列"
-"デスクトップアイコンの表示"をクリックします。
これで消したり表示したりできます。



偶然にマウスでこの手順を行ったとは思えないので
右クリックした後でキーボードから "I" ,"D" と
キーインしたと考えた方がよさそうです。
この操作でも同じことが起こります。
壊れたわけではなかったようでほっとしました。

わからないことを自分で解決しようとすると
却って壊してしまいそうです。
まずインターネット検索、それでだめなら人に
聞いた方がいいようです。

ATTRIB /S はどのように書く?

2009-05-25 23:13:04 | コンピュータ
>FileSearch D:¥TEMP¥ABC* としたら
D:¥TEMP¥TEMP2¥ABCDEF.DAT
D:¥TEMP¥TEMP2¥TEMP3¥ABCXYZ.TXT

みたいに指定のフォルダー以降のサブ
フォルダーも検索して先頭からの絶対パスで
表示してくれるコマンドがないものかと
探しました。
DIR や TREE は この形式では表示しません。
ええい、作ってしまえと思ってプログラムを
作成しました。
希望通りのものが表示します。
じゃ、ATTRIB /S でチェックしてみるかと
ATTRIB /S でチェックしました。OKです。
あれれ?? なんか変、ATTRIB の結果は私の
作ったものと同じです。ただ余分に属性が
頭に付いて表示されるだけです。
じゃ、プログラム作る必要なかったんだ!
なんで作ったあとでひょこっと頭に浮かぶのかな。
"前から知っていたのなら作る前に思い出せよ"と
自分に向かって悪態ついてました。

はじめて知りました。
>DIR /B /S ファイル名
これで >ATTRIB /S ファイル名と同等の
リストを表示します。
/B /S のふたつオプションを並べると思いも
かけない表示をします。これ知ってて当たり前?
2009/05/29 追加

結局作ったものは ATTRIB /S をどうすれば
実現できるかという代物になりました。
まあ、作ってあればこれから派生させて機能を
追加することもできるし、必要な部分だけ
切った貼ったで別の所で利用できるし無駄に
なることはありません。


参考にプログラムを載せます。
C で書いてあります。Visual C++ 2008
Express Edition でコンパイル、リンクできます。
/*--------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <windows.h>

extern int get_subpath(char *, char *);
extern int get_filename(char *, char *);
extern char *strrstr(char *,char *);
/*=============================================================*/
int main(int argc,char *argv[])
{
  int  rc;
  char gdir[MAX_PATH],gfile[MAX_PATH], *p;

  if(argc!=2) {
    printf("使い方  FileSearch   D:TEMPPZ*.* n");
    exit(1);
  }

  p =strrstr(argv[1],"");             /* 引数の最後の を検索 */

  strncpy(gdir,argv[1],p-argv[1]);      /* パス部分 */
  gdir[p-argv[1]] =0x00;

  strcpy(gfile,++p);                    /* ファイル部分 */

  rc =get_subpath(gdir,gfile);

  exit(rc);

}

/*------------------------------------------------*/
/* サブディレクトリの検出                         */
/* gdir: 検索するフォルダ gfile: 検索するファイル */
/*------------------------------------------------*/
int get_subpath(char *gdir, char *gfile)
{
  WIN32_FIND_DATA FindFileData;
  HANDLE          hFind;
  BOOL            bRet = TRUE;
  char            kpath[MAX_PATH];
  char            ksubdir[MAX_PATH];
  int             rc;

  if (strlen(gdir) > MAX_PATH -(strlen(gfile)+2) ) {
    return 1;
  }

  sprintf(kpath,"%s*.*",gdir);
  hFind = FindFirstFile(kpath, &FindFileData);

  while ( hFind != INVALID_HANDLE_VALUE && bRet )
  {
                             /* . でも .. でもない時 */
    if((strcmp(FindFileData.cFileName, ".")!=0) && 
       (strcmp(FindFileData.cFileName, "..")!=0)) {

      if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {

        sprintf(ksubdir,"%s%s",gdir, FindFileData.cFileName);
        rc =get_subpath(ksubdir, gfile); /* 再帰呼び出し */

      }

    }

    bRet =FindNextFile(hFind, &FindFileData);

  }
                    /* パスの最後まで来たから指定のファイル検索する */
  get_filename(gdir,gfile);   

  FindClose(hFind);

  return 0;

}
/*------------------------------------------------*/
/* 指示ファイルの検索 & 出力                      */
/* gdir: 検索するフォルダ gfile: 検索するファイル */
/*------------------------------------------------*/
int get_filename(char *gdir, char *gfile)
{
  WIN32_FIND_DATA fd;
  HANDLE          hFind;
  BOOL            bRet = TRUE;
  char            kpath[MAX_PATH];

  if (strlen(gdir) > MAX_PATH -(strlen(gfile)+2) ) {
    return 1;
  }

  sprintf(kpath,"%s%s", gdir,gfile);
  hFind = FindFirstFile(kpath, &fd );

  while ( hFind != INVALID_HANDLE_VALUE && bRet )
  {
                    /* ディレクトリ かどうか */
     if ( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
     {
        printf("%s%sn",gdir,fd.cFileName);
     }

     bRet = FindNextFile( hFind, &fd );

  }

  FindClose( hFind );

  return 0;

}
/*------------------------------------------------*/
/*  文字列 str 内の最後の key のあるアドレス         */
/*------------------------------------------------*/
char *strrstr(char *str,char *key) 
{
  int  n,i,ln;
  char *p;

  n =strlen(str);

  if( (n==0) || (strlen(key)==0) ) {
    return NULL;
  }

  for(i=0,p=&str[n-1],ln=strlen(key); i<n; i++,p--) {
    if(strncmp(p,key,ln)==0) {
      return p;
    }
  }

  return NULL;

}
/*------------------------------------------------*/

</html>