パソコンの最近のブログ記事

今日も一日ありがとう

継続は力なり。ありがとうございます。メインで使っているWindows7パソコンのInternet Explorerが「動作を停止しました」とかメッセージを吐き出して立ち上がらなくなってしまい、おおいにあわてました。コントロールパネルから「インターネットオプション」を開いて履歴やクッキーやキャッシュ等をクリアしてもダメ、ブラウザをリセットしてもダメ。はてはIE10からIE11にバージョンアップしてみましたがダメでした。FireFoxやSafariは問題なく動作している。いろいろググってみると、「インターネットオプション」の「GPUレンダリングでなく、ソフトウエアレンダリングを使用する」にチェックを入れればいいとあったのでやってみるもダメ。もうどうやってもIEが立ち上がらくなってしまいました。で万策尽き果てたと思ったところ、ノートンの不具合でIEが立ち上がらない現象があるとの情報があり、たしかにノートンを入れているのでそれのライブアップデートをやったところ、みごとにIE11が起動できるようになりました。助かりました。

Windows8のノートPCを購入して

いろいろいじっているのだが、「通常使うプリンタ」に指定しておいたプリンタが勝手に切り替わってしまうというトラブルに悩まされた。CanonのMG3130というプリンタをUSBケーブル接続にして使えることを確認後、これを「通常使うプリンタ」に指定しておいたのだが、シャットダウンして再起動するとなんとしたことか「通常使うプリンタ」が「Microsoft XPS Document Writer」という架空?のプリンタに切り替わってしまうでないの。えー?、何度やっても同じだ。いろいろ実験してみたところ、LANに接続しないとこの現象は起きない。そしてLANに接続した瞬間、「LANプロファイルが切り替わりました」のメッセージが出た時に切り替わってしまうことが分かった。しかしそんな設定はした覚えがない。Windows8機はSONY VAIOなのでさっそくSONYのサポートにメールで問い合わせしてみる。すぐに返信メールがあって、LANのプロファイルにデフォルトプリンタが記憶されていて、LANプロファイルが切り替わる都度、設定がなされているプリンタが自動でデフォルト指定になることがわかった。で、この設定されてしまっているLANプロファイルをどうやって変更すればいいのかを教えてもらいました。チャームを出して、「検索」→「アプリ一覧」→「VAIOの設定」→「ネットワーク」と進み、プロファイルのところに「自宅LAN」とあって、一番右に「詳細」とあるのでこれをクリック。すると、プロファイル名がいくつか出てくるので「自宅LAN」を選んで「編集」をクリック。「デフォルトプリンタ」のタブを選んで、「デフォルトプリンタの変更」をチェックして、CanonのMG3100シリーズに設定し直し、「完了」。これで解決しました。SONY以外のメーカの場合、こういった自動でLANプロファイルの切り替えとかいった機能があるのかどうかわかりませんが、デフォルトプリンタが勝手に切り替わるという不具合はネットでググルといっぱい出てくるので、こうしてブログに書いておくとヒントになるかも。

でもよく考えると、Windows8を搭載したSONY VAIOを買った場合、先に自宅のLANに接続してその後に手持ちのプリンタを設定すると、記憶される自宅LANプロファイルはデフォルトプリンタが「Microsoft XPS Document Writer」となってしまうため、自宅LANにつなげる度に「通常使うプリンタ」が勝手に切り替わってしまうという珍現象に悩まされると思う。(はじめて自宅LANに接続すると「プロファイルに記憶しますか的な?メッセージが出てきた気がするですけど、大抵はOKするでしょうから)これは仕様的にまずいのではないでしょうか?

 

今日も一日ありがとう

継続は力なり。ありがとうございます。何日か前にWindowsLiveメールが応答無しで砂時計マークのままになってしまう現象について書いたのですが、マイクロソフトのサイトに書いてあった対策をした後も、やはり時々再発するようになってしまいました。WindowsLiveメールなんか使うなという声も聞こえてきそうですが、パソコン教室をやっている以上、一般に売られているパソコンで一般的に使われるブラウザとメーラーを使うのがいいだろうと(とか言い訳)。それにしてもなんだかなぁ。

今日も一日ありがとう

継続は力なり。ありがとうございます。
Windows 7 機ではWindows Live メールを使っているのですが、最近どうも様子がおかしい。完全に応答無しの状態になるのです。クルクルマーク(昔の砂時計マークね)のままずーっと待たされてしまう。パソコンを再起動して直ることもあるのですがどうもおかしい。タスクマネージャを起動してWindowsLiveメールを殺して再度やってみるもだめで、何度かパソコンを再起動するしかない状況に。いろいろググッてみたら、
http://support.microsoft.com/kb/2505524/ja
こんなのを見つけました。ここに書いてあるとおりにやったら今のところちゃんと動いています。

今日も一日ありがとう

継続は力なり。ありがとうございます。Fedora14の実験の件ですが、32bit版をインストールしてみましたが64bit版の時と同じく「kernelクラッシュ」のメッセージは出ます。でも何事もなかったようにサーバーは動き続けています。うーーん、無視してこのまま使いつづけていいのだろーか?

今日も一日ありがとう

継続は力なり。ありがとうございます。
そろそろ事務所のサーバも買い替えが必要な時期かなぁと思い、ネットでいろいろ調べた結果、NECのExpress5800/GT110b というサーバーマシンが比較的安価で売り出されていたので早速購入してみました。注文した翌日に届いたのにはびっくり。格安なのになんとおまけ(?)でHDDまでついていてうれしくなりました。でFedora14をインストールしてみましたところ一応動くみたい。ただ画面の右上に時々「kernelクラッシュが検出されました」とかいう(恐ろしい)メッセージが出てくるのです。普通kernelがクラッシュしたらシステム全部が止まってしまうはずなのに、特に何事もなかったかのようにサーバーは動き続けています。なんのこっちゃようわからんです。Fedora14は自分でネットからダウンロードしてISOイメージでDVDに焼いたものでインストールしたのですが、その際64bit版を選んだのがよくなかったのでしょうか?まずは様子見ということで当面はこのままでいきましょう。(いい加減だなオイ)まぁすこしずつ気長に実験していきたいと思います。

Windows XPのノートPCだが

最近起動時に変なメッセージが出るようになり気になっていた。なんでも
Boot.iniファイルが壊れているみたいだからC:\Windowsから起動するね、
みたいなメッセージが出るのだ。一応起動はするし通常の利用には差し支えないようである。きもちわるいのですぐにでも対策したかったが、いろいろいじって本格的に壊してしまってはやばいので、今やっている仕事に一区切りつけてから対策してみた。boot.iniファイルでググるといっぱい出てくるの。世間ではかくもboot.iniファイルは壊れるものなのかというくらい。自分のはC:ドライブ下からboot.iniファイル自体がなぜか無くなっていた。(システムファイルを見られるモードにしても出てこない)。Windows XPのCD-ROMから回復コンソールなるものを立ち上げて、プロンプト画面から
bootcfg /rebuild
とコマンドを入れたら、なんやらえらい時間かかったが修復できたみたいである。再起動の時はドキドキするなぁ。もう2度と立ち上がらないんじゃないかって。まぁ自分のだからいいけど他人のパソコンだったらすごい緊張するし。ITサポート業って冷や汗の連続ですよ。

Windows7ってなんでこんなにもわけわからん

ファイル構成にするのだろう?IE8.0でCookieを保存しておく場所を知りたくていろいろ調べたが、これがわけわからん。WindowsXPだと、インターネットオプション→全般→設定→ファイルの表示でインターネット関連の一時ファイル群がズラズラと出てきて、この中にクッキー情報も入っていることがわかる。ところがWindows7の場合だと、そうは簡単でない。同じようにインターネットオプションから手繰っていったインターネット一時ファイル置き場には***.icoファイルしか存在しておらずCookie情報は皆無である。フォルダーオプションですべてのファイルを表示しても、オペレーティングシステムを表示するモードにしてもそこにはCookie情報は存在していない。で、いろいろググッて紆余曲折のすえやっとこさ場所がわかった。レジストリエディタを開いて
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Foldersのところを見てCookiesを探す。その情報を元に以下のフォルダ
C:\Users\(ログイン名)\AppData\Roaming\MicroSoft\Windows\Cookies\Low\に存在していることが判明。なぜ素直にXPと同じくインターネット一時ファイル置き場に置かないのかなあ?何か深い意味があるのかよくわからん。

Windows7のマシンを使っていたら

なにやら重要な更新があるとのお知らせで、いつものとおり更新を実行したらわけのわからん「Windows Live Essentials 2011」をインストールしています、とかのメッセージが出てきて、むちゃくちゃ時間がかかってます。今もインストール中でなかなか終わらず。こんなん入れてくれなんて誰も頼んでないのになぁ。Windows Liveメールを入れてるからなのか?だったらWindows liveメールの不具合分だけを更新してくれればいいのになぁ。

今日も一日ありがとう

継続は力なり。ありがとうございます。先日回線環境がフレッツ光ネクストになったので、ルーターやらHUBやらの周辺整理をしていたらとんだ失敗で教室内LANを混乱させてしまった。こんなウサギ小屋みたいな事務所内のLANで泡食ってるなんてとんだお笑いであるが、ネットワーク関連の故障個所の切り分けって結構難しいものである。なにしろ機器同士のわけのわからない「相性」というものががあって(これは人間同士でも同じかもしれんが)、この相性がさらに混乱に拍車をかけるのである。昔の会社員時代、10BASE-TのLANが出始めのころアライドテレシスのHUBを使ってよく事務所内のLANを構築したり保守管理をやらされたりしていた。当時はあのぶっとくて黄色い同軸のイーサネットケーブルを使わずに電話線みたいな細くてたよりないケーブルでLANが引けるなんてすごいなあと思っていましたが、もう今やLANといえばこっちのケーブルが主流ですなぁ。1000BASE-Tなんて規格まであるし。10BASE-5の黄色い同軸イーサネットケーブルにトランシーバをかまして使うLANなんていまどきあるのか知らないですが、革新的な10BASE-Tの出始めのころは相性問題にほんと苦労させられました。今回のことで昔を思い出してしまいました。

 

Windows7をセーフモードで立ち上げると

エクスプローラがクラッシュする不具合の対応策がわかりました。困った時のセーフモードなのにセーフモードが使えないなんてとんでもないバグです。通常モードで7が立ち上がっている時に以下のように設定することで(とりあえず当方の環境では)直りました。

スタート→コントロールパネル→時計、言語、および地域→キーボードまたは入力方法の変更→「キーボードと言語」タブ→キーボードの変更→「全般」タブ→追加→(ずーと下へ行って)日本語キーボードのところのMicrosoft IMEにチェックを入れる→OK
(すでにMicrosoft Office IME 2007が入っているのですが、Microsoft IMEを追加でチェックしました)

 あともう1つの不具合である、Windows Liveメールで新規作成をすると本文部分だけ日本語入力ができない件、こっちは未解決です。こっちも解決したのかと思って試したら駄目でした。ただしこちらはすぐ上のスペルチェックというアイコンを一度クリックすれば日本語入力が可能になるので特に問題はないですけど。

 

昔UNIXを仕事で扱っていたころ

YACC/LEXという字句解析/構文解析の仕組みをちょっとかじったことがあり、気になっていた。これを使いこなせれば、文字列を扱うことなら何でもできるといったすぐれもので、言ってみればちょっとしたコンパイラを作るための仕組みである。で、この仕組みをWindowsパソコン上で使えないかといろいろやってみた。で、やっとのことでWindows上でUNIX環境をシミュレートするCYGWINなるものをセットアップしCYGWIN上でgccやyacc/lexを使って構文解析ツールを作るための環境構築まで漕ぎ着けた。そしてここでふと、VC++.NETの開発環境下でYACC/LEXを使えないかと思い立ち、いろいろ粘ってみた。その時の記録である。自分が技術的なことで困っていろいろな人のブログからヒントを得て大いに助かっているので、もし同じようなところで困っている人がいたらなんらかの「参考」になればとの思いである。

 

 ★VC++.NET2003にてYACC/LEX(bison/flex)を利用する

1. まず前提条件として、WindowsPC上でcygwinのインストールが完了していること。
   C:\cygwin\bin, C:\cygwin\lib、下にYACC/LEX(bison/flex)関係のコマンドおよびライブラリが入っていること。つまりcygwinを起動してシェル下にて、bison/flexがちゃんと利用できることを確認。例えば、
   flex sample.l       -> lex.yy.cが生成
   bison -d sample.y   -> sample.tab.cとsample.tab.hが生成
   gcc main.c sample.tab.c lex.yy.c -lfl -o sample (←あくまで例)
   がちゃんとコンパイル&リンク通ってsampleコマンドが所定の機能を果たすこと。

2. VC++.NET2003にて、まずは「Win32コンソールプロジェクト」で新規プロジェクトを生成してみる。例としてプロジェクト名を「aaa」と仮定する。

3. aaa.cppソースを以下に記述。main()からyyparse()を呼んでいるだけのもの。引数がなければ標準入力から、引数があればその引数で指定されたファイルがそれぞれ入力データとしてyyparse()に引き渡される。
-----------------------------------------------------------
#include <stdio.h>
#include "stdafx.h"

extern "C" int yyparse();  // <-- ※
extern "C" FILE *yyin;   //   <--※

int _tmain(int argc, _TCHAR* argv[])
{
   if(argc > 1) {
        if(yyin = fopen(argv[1], "r")) {
            yyparse();
            fclose(yyin);
        }
    } else {
        yyparse();
    }
    return 0;
}
------------------------------------------------------------
  ※extern "C"をつけないとリンクでエラーになるようです。試行錯誤でみつけた。


4. 「ソースファイル」を右クリックして「追加」→「新しい項目の追加」でテキストファイルを選んで、aaa.l を追加する。同様にaaa.yも追加する。

5. aaa.lとaaa.yにそれぞれ字句解析と構文解析の規則を記述する。

6. aaa.lを右クリックしてプロパティを開く。
  ツールがカスタムビルドツールになっていることを確認して、カスタムビルドステップのコマンドラインのところを、
flex --nounistd aaa.l  (注意:ハイフンは2つ)とする。
"--nounistd" をつけないとunistd.hが見つからないといって怒られる。(これも試行錯誤の結果であり、このオプションがどんな意味をもつのか当方はよく分かっていない)
  出力ファイルのところは、lex.yy.cとする。

7. aaa.yを右クリックしてプロパティを開く。 ツールがカスタムビルドツールになっていることを確認して、カスタムビルドステップのコマンドラインのところを、
  bison -d aaa.yとする。
  出力ファイルのところは、aaa.tab.c; aaa.tab.h とする。

8. VC++.NET2003のメニューバーの「ツール」→「オプション」→「Projects」で「実行ファイルディレクトリ」にC:\cygwin\bin を追加する。

9. aaa.lを右クリックして「コンパイル」を実行する。
 aaa.yを右クリックして「コンパイル」を実行する。
 両者とも正常終了すれば、lex.yy.c, aaa.tab.c, aaa.tab.hの3ファイルが生成されているはず。エラーの場合は、どこかの記述が間違っていると思われる。

10. 「ソースファイル」を右クリック「追加」→「既存項目の追加」でaaa.tab.cとlex.yy.cを追加。
  これでaaa.tab.cとlex.yy.cが現れる。
  「ヘッダーファイル」を右クリック「追加」→「既存項目の追加」でaaa.tab.hを追加。これで
  aaa.tab.hが現れる。

11. lex.yy.cを右クリックしプロパティを開く。 「プリコンパイル済みヘッダー」を選んで、「プリコンパイル済みヘッダーの作成/使用」を「プリコンパイル済みヘッダーを使用しない」に設定する。aaa.tab.cも上記と同様に設定する。

12. aaa.tab.cを右クリックして「コンパイル」を実行する。
  lex.yy.cを右クリックして「コンパイル」を実行する。ワーニングがいくつか出るみたいだが、エラーが出ていないのを確認する。

13. ソリューションエクスプローラの一番上の"aaa"をクリックしてから、メニューバーのプロジェクトから 「プロパティ」→「リンカ」→「全般」の「追加のライブラリディレクトリ」でC:\cygwin\libを追加。コマンドラインを選び、追加のオプションのところに、libfl.aを記述。

14. 最後にメニューバーの「ビルド」から「ソリューションのリビルド」を行い、コンパイル&リンクが正常終了するのを確認する。
  aaa.lとaaa.yがビルドされるとlex.yy.cとaaa.tab.cが新しく出来るのでいちいち確認メッセージみたいなのが出る。嫌な場合は、aaa.lとaaa.yを右クリックしてプロパティから「ビルドから除外」を「はい」と設定しておけばいいのではないかと思う。もちろん変更をかけたらビルドの除外を「いいえ」にするのはいうまでもない。

15. 以上のやり方で当方のPC環境において、VC++.NET2003でのYACC/LEX利用ができるようになった。


なお、ここに書かれた内容が技術的に正しいかどうかは保証の限りではない。試してみる方はあくまでも自己責任であることを申し添える。

サーバーに任意のファイルをアップロードするCGIを作っていて

気がついた点を一つ。ファイルのアップロード自体は問題なくできるのだが、クライアント側のパソコンの種類によって動作が違う。ファイル名を取り出す時の動作がおかしいのだ。

Perlのスクリプトで、

use File::Basename;

・・・・(途中省略)・・・・

my $filename = basename( $q->param('upfile') );

とやれば、ディレクトリ名は取り除かれてファイル名だけが取り出せるとのことであるが、これがパソコンによってはディレクトリ名が入ってきてしまう場合があるのだ。なんでぇ、おかしいじゃないかぁ~?

で、別のパソコンを使ってやってみるとちゃんとファイル名だけ取り出せるのもある。CGIはサーバ上で動くプログラムでしょ。なんでパソコンに依存して結果が違うの?で、いろいろやってみたがどうやらブラウザがIE6の場合だけがおかしいことが経験上わかりました。IE8やFireFoxでは問題なくファイル名だけが取り出せるのにIE6の場合はディレクトリ名が入ってしまいます。どうやら

basename()って言う関数はディレクトリのつなぎ目をスラッシュ"/"だけで見ていてバックスラッシュ"\"はディレクトリのつなぎ目として認識してないようだ。じゃあIE8やFireFoxはパソコンからパス名を送る時バックスラッシュをスラッシュに変換して送っているのかなぁ。まぁいいや、とりあえず、

my $path = $q->param('upfile');

$path =~ s/\\/\//g;

my $filename = basename( $path );

ってやったらIE6からでもファイル名だけ取り出せるようになりました。

で、さらに調べたら、IE8やFireFoxでは、$path = $q->param('upfile'); で取り出される時点ですでにディレクトリ名は落とされていて、ファイル名のみになっていることが実験でわかりました。

つまり、

IE6では、$q->param('upfile') はディレクトリ名を含んだフルパス名である。

IE8, FireFoxでは、$q->param('upfile') はディレクトリ名を含んでいないファイル名のみである。

CGIは同じでもパソコンのブラウザによってこんな違いがありました。

 

※上記はあくまでも自分の開発環境にて経験上わかったことなので、これが正式な仕様かどうかはわかりません。念のため申し添えます。

 

その後わかったことがありました。IE8では
「インターネットオプション」→「セキュリティ」→「レベルのカスタマイズ」の一覧に、
「サーバーにファイルをアップロードするときにローカルディレクトリのパスを含める」
という項目があり、ここがデフォルトで「無効」になっているのです。
これを有効にしてみたらIE8でもIE6と同じようにアップロードファイルがフルパス名に変わりました。
IE6で同じようなオプションを探してみましたが見つけられませんでした。どうやらIE6ではサーバーにファイルをアップロードする時は、必ず(?)フルパス名を返すようです。IE8ではどちらも選べるのですが、デフォルトではファイル名のみを返すのです。やれやれ。フルパス名をやめてファイル名だけを返す方をデフォルト設定にしたのはローカル側の情報を外に出してしまうことに対する警戒心の現れでしょうか?

まあいずれにせよ、CGI側では受け取った文字列に対して、バックスラッシュをスラッシュに全置換してからbasename()に渡すロジックを入れておけばOKのようですね。

 

参考(IE8のインターネットオプションから)

upload.gif 

  

今日も一日ありがとう

継続は力なり。ありがとうございます。Windows7ですが、ユーザーインターフェースはVistaとほぼ同じで、スペックの低いマシンでもVistaに比べればサクサク動くみたいです。ただしコントロールパネルからの各種設定にVista時代と違いがあり、ちょっと戸惑います。XPからVistaへの移行の時は各種設定ともメニュー配置が大変更でこれはこれで腹立ちましたが、Vistaから7への移行では変なところが少しずつ変更されている。まったくもって意味不明な処置であり、同じ機能はできるだけ以前のメニュー配置を踏襲すべきでしょう。で、評価できる点は、スタートボタン→「シャットダウン」となった点。Vistaでは標準設定だとスタートボタン→「電源SWマーク」でスリープ状態に入るというとんでもない仕様で、スリープ状態からの復帰をまるで早く立ち上がるように見せかけるという許せない仕様だった。7になってからは立ち上がり速度も速くなったようで、標準を「シャットダウン」に戻したのは評価したい。

2015年2月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Powered by Movable Type 4.38

このアーカイブについて

このページには、過去に書かれたブログ記事のうちパソコンカテゴリに属しているものが含まれています。

前のカテゴリはネコです。

次のカテゴリはe-Taxです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ