2017年12月27日水曜日

w2ui javascriptのライブラリ

w2ui

ブラウザで、エクセル風の表を表示できるライブラリです。
PHPで、テーブルを使うと大きすぎて扱えなようなデータでも、このライブラリを使って、javascriptで表示することができました。
見た目も良く、検索もできて、とても良いです。

不具合は、データの読み込みを、url指定で行うと、検索時に絞り込み表示が出来ませんでした。
urlからの読み込み処理を別に作成し、ライブラリに反映させることで解決しました。
ただし、これをやると、リロードを自分で実装することになるのが面倒でした。

今後は、PHPで、htmlにデータを埋め込むのではなく、データは別に用意し、javascriptで読み込み、このライブラリで表示していこうと思いました。

2017年12月26日火曜日

e-Taxの準備をしたら、Windows10が不安定に

公的個人認証サービス 利用者クライアントソフトのインストール、カードリーダー(ACR39)の設定を行ってから、Windows10が不安定になりました。

具体的には、
・シャットダウンのために、マイクロソフトのアイコンをクリックしても、メニューが表示されません。いろいろ、いじっていると、メニューが表示されることがありますが、シャットダウンは、CTRL+ALT+Delから行うことになります。

・コントロールパネルの表示が、異様に遅くなります。その他のソフトも、正常とはいえない状態になります。

・シャットダウン時に、タスクが邪魔をして、正常なシャットダウンができません。強制的に、タスクを終了させて、シャットダウンするしかありません。
この時のエラーは、「Task Host Window: microsoft\windows\plug and play\device install reboot required」です。


現在、カードリーダーのドライバを削除し、クライアントソフトをアンインストールしました。
しかし、改善されません。
設定を変更して、良くなったと思ったら、再び、発生する状態です。
良くなることがあるというのも、原因究明には困ります。

検索してみると、同じ症状に悩んでいる方がいるようです。
とりあえず、今日、新たに試みたのは、環境変数PATHに、上記のクライアントソフトへのPATHが残っていたため、削除しました。
このソフトは、インストール時に、コマンドプロンプトを開いて、なにやら行っていたので、嫌な予感がしていたのですが、削除しても悩まされています。
サービスなど、分かりにくい場所を変えられたのではないかと考えています。

2017年12月25日月曜日

VMware Workstation Pro 14.1

VMware Workstation Proを、14.1に更新しました。
VMware Authorizationに失敗し、仮想マシンが起動しなくなりました。
一度だけなら、更新時に、よくあることですが、パソコンを再起動しても発生しました。
結局、一度、アンインストールし、再インストールで解決しました。
これも、よくあることです。

<経緯>
昨日、「公的個人認証サービス 利用者クライアントソフト」のインストールと、カードリーダーの接続をしてから、Windows10の挙動がおかしくなりました。(詳しくは、昨日のブログ)
利用者クライアントソフトのインストールで解決したものの、アンインストールしたところ、再び、挙動がおかしくなりました。
なかなか改善しないことから、VMwareの方も疑い、更新プログラムがあったので適応しました。
その結果、アップデートインストールでは仮想マシンが起動しなくなりました。
これは、ありがちなトラブルなので、VMwareの再インストールで解決しました。

Windows10の方は、デバイスドライバで、カードリーダーを削除して、今のところ、良くなった感じがあります。
ただし、昨日も、良くなったと思ったら、だめになったので、しばらく様子見です。

とりあえず、トラブル以降の設定変更
・高速スタートアップを無効
・利用者クライアントソフトの再インストールと、アンインストール
・カードリーダードライバの削除

<設定変更理由>
・高速スタートアップを無効
 USB機器を接続して、その後、たとえ使わなくなっても、Windowsの動作がおかしくなることがあります。
その時に、効果があるのが、この設定です。
高速スタートアップは、Windowsの状態を保存して次回の起動時に素早く起動できるしくみですが、USB機器との相性が悪く、最悪、Windowsが起動しなくなったりします。
デスクトップにおいては、これを無効にするのは、ほぼ必須です。
ノートの場合、あまり、USB機器を繋がないため、有効のままでも良かったのですが、今回のようなトラブルがあると、やはり、無効にした方が安心です。

・利用者クライアントソフト
 このソフトで気になったのは、通知の設定です。
このソフトではありませんが、通知設定により、Windows10の挙動がおかしくなったという情報を、ネットで見つけました。
このソフトが、通知サービス関係をいじるのではないかと疑っています。

・カードリーダードライバの削除
 再起動時に、再起動を妨げているのが、ドライバ関係であったため、一番、最近、使ったドライバを疑いました。

・VMware
 VMwareでは、ゲストOSとホストOSのどちらにUSB機器を接続するか選択できます。
この機能がトラブルを招くことがあり、最新のバージョンなら改善しないかと期待しました。

2017年12月24日日曜日

公的個人認証サービス 利用者クライアントソフト 不具合

Windows10に、「公的個人認証サービス 利用者クライアントソフト」をインストールしたところ、シャットダウンや再起動ができなくなりました。

正確には、まず、シャットダウンのメニューが表示されません。
右クリックで、別のメニューを表示させた後、クリックすると、メニューが表示されます。
コントロールパネルや、他の操作も、かなり遅くなり、ほぼ使い物にならない状態になりました。

CTRL+Alt+Delで、強制的に、再起動しようとすると、タスクが邪魔をして、再起動を妨げます。
強制的に、実行するしかありません。

原因は、利用者クライアントソフトで、インストール時に、更新時期を通知するか否かを選択する場所がありましたが、ここで、「通知しない」を選んだことにあるようでした。

解決策としては、このソフトを再インストールし、通知するに設定して解決しました。

2017年12月20日水曜日

Windows10 シャットダウンの仕様変更?

Windows10のシャットダウンの仕様が変わったのでしょうか。
シャットダウン時に、ソフトを起動していると、次に起動したとき、そのソフトが開かれています。

2017年11月23日木曜日

PHP 例外がとらえられない

WindowsのPHP 5.4で、例外がとらえられず、困っています。

$strには、文字列で、式を与えます。例えば、"!(false && true)|| false "

try{
   $ret = eval("return (" . $str ");");
}catch(Exception $ex){
   $ret = false;

}

$strが正しく評価できる文字列であれば、問題ありません。
評価できない場合、PHP5.4では、evalがfalseを返すはずですが、例外が発生します。
参考までに、PHP7では、ParseErrorが発生します。

@evalとしても、例外が発生します。
例外が発生するならば、catchでとらえられるはずですが、とらえられずに困っています。


2017年11月15日水曜日

MFC-J6570CDW 寿命

A3インクジェット複合機の「MFC-J6570CDW」を使っていますが、寿命がきたようです。
電源が入らなくなりました。
正確には、電源ボタンを押しながら、コンセントにプラグを差すと動きます。

この不具合は、メーカーも分かっているようで、ファームウェアを特別なものに書き換えることで、改善されるそうです。
その代わり、電源が切れなくなります。

この症状から想像するに、メモリの書き換え頻度が、メーカーの想定を超えてしまい、メモリが読み書きできなくなった(壊れた)のではないかと思います。
全く別の製品ですが、以前、このような原因で、リコールを行ったメーカーがありますから。

MFC-J6570CDWですが、他にレーザープリンタがあるため、使用頻度は高くありません。
FAX送信、ファイルのスキャンが主な用途になっています。

これだけなら、少し安価なA4複合機に買い換えれば十分ですが、いざというときの、A3スキャンと、コピーが魅力的なため、結局、MFC-J6570CDWの後継になりそうです。
レーザープリンタの方も、5年以上使っているため、できれば、1台に集約したいところですが、レーザープリンタのA3複合機は、高すぎて手が出ません。

さて、いまさらですが、MFC-J6570CDWの使用感を。

メリットは、A3サイズのスキャンができることです。
A4サイズの雑誌を見開きで、スキャンできます。
ほぼ使わないとはいえ、いざというとき、A3サイズの印刷ができるのも良い点です。

デメリットは、使わなくても、インクが減っていくことです。
自動的に、インクのクリーニングが行われるようです。それでも、使っていないと、目詰まりを起こしますが。
自動的に、インクのクリーニングが行われるため、電源を切った状態でも、一定の消費電力が必要で、完全にオフにするには、コンセントを抜くしかありません。
もっとも、電源を切った状態では、実測で、1W未満ですし、気にすることはありません。

もっとも、不満に感じる点は、低温では動作しないことです。
メーカーでは、10度以上を動作保証としていますが、数年使った現在では、15度ぐらいないと、正常に動作しません。
特に、スキャンが動かないため、FAXの送信に支障をきたしています。
これからの季節、朝の室温は、10度を切りますから、朝、FAXを送信することはできません。

もうひとつの不満は、封書の印刷が、実質、使い物になりません。
エプソンのプリンタなどは、封書は、下から入れることで、郵便番号の枠までの長さが一定になるように工夫されています。一方で、この機種は、上から入れるようになっているため、郵便番号の枠までの長さが合わず、綺麗に印刷できません。

これらの欠点が改善されるなら、後継機に買い換えるのですが、とりあえず、上記の特殊なファームウェアを入れて、延命しようと思います。

2017年10月23日月曜日

WordPress 「Easy Code Manager」

WordPressで、CSSを管理するため、これまで、「CSS & Javascript Toolbox」プラグインを使ってきました。
ところが、サポート切れで、「Easy Code Manager」プラグインに切り替えるように促されたため、移行しました。

両者は、同時には動かないらしく、「CSS & Javascript Toolbox」を無効にし、更に、「Easy Code Manager」のインストーラーを起動して、移行ツールらしきものを使うことで、プラグインを導入できました。

操作画面は異なるものの、使い方は、これまでと同じでした。
ただし、最初は、ホームページに反映されず、悩みました。
新しいコードをダミーとして作り、これを保存することで、ホームページに反映されました。
正常に表示されたことを確認してから、ダミーを削除すると、無事に動きました。

Windows10 大型アップデート後、シャットダウンできない

先日、Windows10 大型アップデートを行いましたが、その後、シャットダウン時に、1つのソフトがシャットダウンを阻害して、シャットダウンできません。
強制的にシャットダウンで、電源を切っています。

原因は、ブラザーヘルプという、プリンタのユーティリティです。
再インストールでも改善せず、ブラザーヘルプを起動しない方法を探しても、なかなか見つかりませんでした。
最終的には、ブラザーヘルプの設定を、いじっている内に、設定項目が表示されるようになり、PCの起動時に実行されないように設定することで解決しました。

2017年10月19日木曜日

Bluetoothのトラックボール 接続が切れる

Bluetoothのトラックボールを使っています。
時々、接続が切れて、操作ができなくなり、何もせずに、しばらくすると、回復して操作できる状態になることがあります。

コントロールパネルを開き、デバイスマネージャーから、Bluetoothを洗濯して、プロパティの「電力の節約のために、コンピューターでこのデバイスの電源をオフにできるようにする」のチェックを外して様子を見てみることにしました。

2017年10月11日水曜日

Brackets 日本語入力できない

Mintで、Brackets 1.11を使ったところ、日本語入力できなくなりました。
1.10に戻すと、日本語入力できるようですが、今回は、日本語を入力する必要がなかったため、問題を先送りし、1.12に期待します。

2017年10月6日金曜日

光回線と、無線

光回線や、スマートフォンでのテザリングなどで、インターネットを利用していますが、当然のことながら、光回線と有線LANの安定性は抜群です。

光回線と有線LANで使っていると、インターネットに繋がるのが当たり前になっていて、そのありがたみに気づきませんが、無線LANなどを利用すると、それとの比較で、やはり、有線接続で良かったと思えます。

・光回線と有線LAN
 まず、トラブルはありません。
トラブルがあるとすれば、プロバイダレベルのことで、それも、今は滅多にありません。
とても、安心できます。

・光回線と無線LAN
 ブラウザでのアクセスで、まれに、繋がらないことがあります。
リロードすれば、たいていは、繋がります。
無線LANの機器が増えてきたこと、近所でも無線LANが増えていることから、混線があると思われます。
 ちなみに、bluetoothのキーボードの繋がりが悪くなってきて、操作できる距離が短くなってきました。

・4G(ドコモ系格安SIM)と、携帯ルーター
 ブラウザで、複数のページを開くと、開けないページが出てきます。
リロードしても、なかなか繋がらないことも、よくあります。
回線の遅さは、それほど、不満に感じませんが、繋がらないことについては、ストレスを感じます。

・4G(ドコモのiPhone)のテザリング
 上記の問題に加えて、パソコンとiPhone間の接続が切れることも、よくあります。
ドコモのSIMと、格安SIMの違いについて感じたことはありません。

・4G(ドコモのiPhone)のテザリング(bluetooth)
 繋がりません。
Windows10の問題だと思いますが、繋がっていた時期もあれば、繋がらない時期もあるという感じで、挙動が不安定です。
また、感覚的に、wifiのテザリングはルーター的な処理で、bluetoothのテザリングはインターネットの共有的な処理に思います。
違いは、VMwareのゲストOSを使った時に感じます。
ゲストOSのネットワークをブリッジ接続にしていると、bluetoothでは繋がりません。wifiでは繋がります。
bluetooth接続は、wifi接続と異なり、iPhoneを操作しなくても、パソコンの操作のみで繋がることが便利ですが、その反面、このようなデメリットもあります。

2017年10月5日木曜日

Windowsの更新日

Windows7を使っていて、OSの自動更新はせず、通知のみにしています。

この状態で、OSの更新日になると、なんらかの不具合が出て困っています。
自動更新の設定であれば、勝手に更新が始まり、他のソフトに悪影響を及ぼすのは分かりますが、通知のみにしていても、悪影響を及ぼすのが困ったものです。

通知のために、バックで、現在の環境をチェックしているのでしょうか。
その負荷で、他のソフトに悪影響が出ているのかなと思っています。

なんとかならないものでしょうか。

クラウド エヌ

先月、クラウド エヌのOSが、起動しなくなり、サーバーで提供していたサービスを廃止しました。
アクセス数が少なく、惰性で動かしていたようなサービスでしたから、踏ん切りがついて良かったくらいです。

ただ、一度、こういうことがあると、再び、クラウド エヌを使うか不安が残ります。
速度的には、さくらのVPSの方が上ですし、クラウドの強みを活かした使い方をしていませんから、サーバーを移った方が良いかなと考えています。

2017年10月4日水曜日

Windows7 ネットワークに苦しむ

Windows7のネットワーク設定に苦戦しました。

そもそもは、Windows7のネットワークの場所を、"社内ネットワーク"にできないことでした。
一度、変更しても、パブリックネットワークになってしまい、ファイヤーウォールで遮断されてしまいました。

仕方ないので、ファイヤーウォールの規則を設定して、ポートを空けました。
しかし、それでも通信できません。

調べてみると、ソフトが、ファイヤーウォールの規則の中で、パブリックネットワーク時に遮断される設定が入っていました。
思えば、一度、ブロックするか尋ねられた気がします。
その時は、後で設定するような選択肢を選んだつもりだったのですが、どうやら、ブロックする設定になったようでした。
規則を削除して解決しました。

Windows7のネットワーク(ファイヤーウォール)関係は、よく躓きます。

2017年10月3日火曜日

ES ファイルエクスプローラー アンインストール

アンドロイドに、長くインストールしていた「ES ファイルエクスプローラー」をアンインストールしました。
しばらく前から、アンドロイドの通知に、「CPUが過熱している」「アプリの多い」といった意味合いのメッセージが表示されるようになり、何が原因か調べていました。
この通知は、まるで、悪質な広告のように不安をあおり、ボタンをタッチさせようとしていましたので、個人的には、危険な操作と判断し、無視していました。

「ES ファイルエクスプローラー」をアンインストールしたところ、この怪しい通知が表示されなくなり、安心しました。

昔は、便利で良いアプリでしたが、どうやら、いつの間にか、こうした悪質なアプリに更新されていたようです。

2017年9月30日土曜日

Jonsbo V4 ケース

Jonsbo V4 ケースを購入しました。


アルミ製で、綺麗な外観です。
この大きさで、micro atxのマザーボードが使えるところが良いところです。
ただし、後で説明しますが、マザーボードを選ぶ点に、注意が必要です。
右側に、USBポートがあり、2.0と3.0になっています。
5インチのフロントベイが欲しかったのですが、あまり、使うこともないため、妥協しました。


マザーボードを設置した様子。
このマザーボードは、通常のMicroATXマザーより、やや短い物です。
このサイズなら問題ありませんが、通常サイズの場合、外部にUSBポートを取り出す部分と干渉する可能性があります。
特に、このマザーボードのように、横から、SATAケーブルを差し込むようになっている場合は、L型(それも、通常とは逆方向に曲がる物)ケーブルが必要になるかもしれません。


電源を設置した様子。
ATX電源が利用できますが、SFX電源を使いました。
プラグインタイプを使ったため、余計なケーブルがなく、すっきりしました。
それでも、狭い空間のため、乱雑さはどうしようもありません。

背面には、ファンを、最大3つ取り付けることが出来ますから、冷却は問題なさそうです。
必要なら、HDDに空気を当てるようにもできます。


コンパクトながら、冷却の心配もなさそうで、組み立ても、それほど、難しくないことから、良いケースだと思います。
唯一の問題は、アルミ製のため、肉厚があることです。
ビデオカードを取り付けたところ、HDMIケーブルが奥まで刺さっているのか不安な状態になっています。
とりあえず、ケーブルのモールドを削って対応させようと考えています。


2017年9月24日日曜日

ErP Ready

GIGABYTEの説明ページ
http://www.gigabyte.jp/microsite/85/tech-091126-eup.htm

マザーボードの消費電力を抑える機能のようです。
初期設定は無効になっていますが、Enableにすると有効になります。

<何があったか>
先日のブログに書きましたが、新規にパソコンを組み立てました。
Windows10 proをインストールすると、シャットダウンしても、USBに電力が供給され、マウスや他の機器が光り、目障りでした。

<対応>
まず、Windows10の高速シャットダウンを無効にしました。
これは、ノートパソコンなら役立つかもしれませんが、デスクトップでは、百害あって一利なしの機能ですから。
これは、USBへの電力供給には関係ないらしく、効果はありませんでした。

次に、BIOSの設定で、「ErP Ready」を有効にしました。

これにより、シャットダウンの後、USBに接続した機器の電源ランプが切れました。


2017年9月22日金曜日

Windows10 ライセンス認証に失敗

Windows8.1かWindows7から無償でアップグレードしたWindows10を使っていました。
先日、マザーボードを交換し、SSDは、そのままで、パソコンを組み上げたところ、ライセンス認証に失敗しました。
マイクロソフトアカウントに紐付けしてあったので、マイクロソフトアカウントを使って、再認証を試みましたが、失敗しました。
2,3ヶ月前は、成功したのですが、今回、失敗した理由が分かりません。

Windows8.1のプロダクトキーを入力してみましたが、これもだめでした。

私は、Windows7のライセンスを2本持っていて、1本は、Windows8 -> 8.1 -> 10とアップグレードしてきたものです。
もう1本は、Windows7からWindows10へアップグレードだったような気がします。

Windows7のDVDを探してみましたが見つかりませんでした。
見つかったとしても、どちらが、このWindows10のアップグレード元だったのかは分かりません。
現在のWindows10のプロダクトキーは調べる方法がありますが、アップグレード元のOSのプロダクトキーを調べる方法は不明です。

何が原因か分かりませんが、Windows10の正規のライセンスを1本分、失いました。
仕方なく、Windows10を購入することにしました。

<参考>
マイクロソフトアカウントも、複数所有しています。
アカウントを間違えたのかと考え、別のアカウントも試しましたが、だめでした。
この作業で知ったことは、マイクロソフトアカウントを変更した場合、Windows自体は、再起動せずに、そのまま利用できますが、アカウント関係の部分は、不安定になるようです。
再起動せず、ライセンス認証を行った場合と、再起動してから、ライセンス認証を行った場合で、メッセージが異なりました。
このアカウントの変更作業は面倒で、一度、ローカルアカウントに変更し、次に、別のマイクロソフトアカウントに変更する必要があります。
ちなみに、最初は、マイロソフトサポートにチャットで問い合わせ中、指示に従い、ローカルアカウントに変更したところ、チャットが切れました。
私も、うっかりしていましたが、サポートの方も、うっかりしています(笑)



2017年8月23日水曜日

Windows7 ファイル名、フォルダ名の変更が遅い

最近、ファイル名、フォルダ名の変更が遅く、数秒間、待たされるようになりました。
環境は、Windows10で、VMwareを使って、ゲストOSでWindows7を動かしています。
このWindows7で、名前の変更が遅くなりました。

インデックスのオプションを確認しましたが、問題が発生するのは、対象のフォルダ外のようでした。

セキュリティソフトは、ESETを使っています。

とりあえず、パソコンの再起動、Windows7の再起動で解決しましたが、今後も不安が残ります。
Windowsでは、シャットダウンでは、リセットされませんから、再起動が有効だったのかもしれません。

たぶん、しばらくしたら、また、遅くなると思います。

2017年8月10日木曜日

OpenLayersで、目的の場所が表示されない

OpenLayersで、目的の場所が表示されずに悩みました。

プログラムの中で、数字を決めて表示することはできました。
しかし、urlの引数に、GPSの位置を渡すと、目的の場所が表示されず、悩みました。
経度は制御できるのに、緯度がでたらめな場所になってしまいました。

原因は、変数が文字列の扱いになっていたことでした。
URLの引数の値を、parseFloat()で変換することで解決しました。

たった、これだけのことに、半日も費やしてしまいました。
これだから、型がなかったり、暗黙の内に型変換してしまう言語は嫌いです。

FormDataを使って、サーバーにデータを送信する

formのデータをjavascriptを使って、node.jsのサーバに送信しました。

HTMLのフォームは、次の通り。
/api/mapにデータを送ります。
onclickの記述が無ければ、ボタンをクリックするとページが表示されます。
今回は、画面の遷移を行わないように、javascriptで処理します。
javascriptで処理するため、methodやactionの指定は不要のはずですが、テストには便利なので残しました。
参考までに、formに、onsubmitイベントを記述する方法と迷いました。

<form method="POST" action="/api/map">
<input type="text" name="name"/>
<input type="hidden" name="lng" value="138"/>
<input type="hidden" name="lat" value="38"/>
<button onclick="regPoint(this);return false;">SET</button>
</form>;


javascriptの記述。

  function regPoint(el){
    let form = el.parentElement;
    let formData = new FormData(form);

    fetch("/api/map",{
      method: "POST",
      body: formData
    }).then((response) =>{
      if(response.ok){
        alert("ok");
      }else{
        alert("ng");
      }
    })
  };


これをnode.jsサーバーで受け取るようにしましたが、うまくいかず、悩みました。
FormDataを使うと、multipart/form-dataでデータが送られるため、Express(node.js)側で、修正が必要でした。
'connect-multiparty'モジュールを使って解決しました。

var multipart = require('connect-multiparty')
var multipartMiddleware = multipart();

app.post('/api/map', multipartMiddleware, function(request, response) {
    console.log("Name: " + request.body.name);

}

2017年8月7日月曜日

OpenLayers Examples GPS 位置がずれる問題

サンプルプログラムは、こちらのページです。
https://openlayers.org/en/latest/examples/geolocation.html

このページが正常に動かず、悩んでいましたが、ひとつ、解決しました。

httpではなく、httpsでアクセスする必要がありました。
Chromeや、iPhoneで動かなかったのは、これが原因でした。

もうひとつの問題、位置がずれる問題ですが、今日は、ずれません。
謎を残しつつ、先に進みます。

2017年8月4日金曜日

OpenLayers Examples GPSの位置がずれる

OpenLayersのサンプルプログラムを表示させましたが、位置がずれることに悩んでいます。
サンプルプログラムは、こちらのページです。
http://openlayers.org/en/latest/examples/geolocation.html

まず、問題の1つは、ブラウザにより、挙動が異なることです。
firefoxでは、一応、それらしい動きをしますが、Chromeでは動作しません。
具体的には、GPSのTrackをオンにすると、firefoxでは、現在地をマークします。
Chromeでは、Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).と表示され、マークされません。
昨日は、大丈夫だったような気がして、その点でも悩んでいます。これは記憶違いかもしれませんが。
少し調べてみると、サンプルプログラムの記述と、実際のサンプルプログラムが異なるようで、数日の間に、何か修正が入った可能性もあると考えています。

次の問題に、マークの表示位置がずれます。
昨日は、正常な位置を示していましたが、今日は、10km以上離れた場所を表示しています。

公式サイトのサンプルが、この状態ですから、それを元に自作したプログラムも不可解な挙動になっています。
こちらは、昨日は、異常な場所を示していましたが、今日は、正常な場所を示しました。その後は、GPSのAPI自体がエラーになり動きません。

原因の可能性としては、イベント処理の順序が確定しないのではないかと考えています。
また、EPSG:4326からEPSG:3857への変換が見えないところで行われているように思います。
このあたりが怪しいと考えています。

2017年7月28日金曜日

Bluemix 分からない

Bluemixのお試し期間が過ぎたため、クレジットカードを登録して、継続して、試しています。

外出先から、どの程度のことができるかと、4Gルーターを使い、試してみました。
Webの管理画面は、とても動作が遅く、項目によっては、かなりストレスが溜まります。
不慣れで、目的のページが見つからないこともあり、いらいらしました。

管理ページから、その使い方の紹介ページ(ヘルプ)に行けない構造は、どうにかならないものでしょうか。
そもそも、ヘルプがないのでしょうか。
サポートというリンクがあって、検索してみても、何も表示されません。
操作の統一感がないのが、戸惑いの原因です。


話がそれましたが、慣れれば、外出先からでも、かなりのことができそうに思います。
node-REDの開発なら、クラウドのWebのIDEを使って行うこともでき、修正を、すぐに本番環境に活かすこともできそうです。


P.S.
Bluemix。難しい。
Node.jsでは、デフォルトのプログラムをダウンロードできないのに、それを、どうやって、修正しろというのか。
そのあたりの解説も欲しい。
cf downloadプラグインを使うのかと試してみたが、ファイルがダウンロードされない。
gitサービスを付けないと、ダウンロードできないのだろうか。

bx targetコマンドの、アカウントIDとは、何かが分からない。
ログインのアカウントでは、拒否されるし、いったい、なんのIDだろう。
この項目が未設定のため、ダウンロードできないのだろうかと疑ってみたのですが。

本も買ってみましたが、さっぱり分かりません。
なぜなら、私が分からないのは、開発に入る前の段階です。
アカウントとは何か、Webのページをどう操作するのか、そのあたりで躓いています。

<追記>
ダウンロードに関しては、「継続的デリバリー」を有効にして、gitを使って、ダウンロード、pushを行うことで解決しました。
ただ、今回は、別のgitサービスを使っていた関係もあり、シンプルに、例えるなら、sshで、ファイルをアップロードするような感じに扱いたかったのですが。

2017年7月27日木曜日

socket.io /socket.io/socket.io.jsが見つからない

node.js、express、socket.ioでプログラムを作って、socket.io.jsが見つからなくてはまりました。

結論から言えば、こちらの方と同じでした。
http://qiita.com/kanjishima/items/5342eca62e8d5de30ccb

app.listenではなく、http.listenでした。

<経緯>
socket.ioのチュートリアルでは、socket.io.jsも見つかり、問題なく動きました。
次に、express-generatorで作られたサンプルに、socket.ioを組み込もうとして、socket.io.jsが見つからず、悩みました。

2017年7月18日火曜日

サーバーサイドWeb技術 徒然

現在、Webプログラミングは、PHPを使っています。
なんとなくですが、そろそろ、PHPに見切りをつけて、他に移った方が良いかもしれないと、調べています。

Webプログラミングを始めた頃、Java、Tomcatを使っていました。
これが、PHP中心に移ったのは、レンタルサーバーの都合です。
レンタルのTomcatサーバーが見つからなかったため、自前で、サーバーを用意したりもしました。結局、レンタルサーバーは、PHP中心の流れになったこともあり、PHP、Apacheを使っています。

変化は、レンタルサーバーに訪れ、クラウドに移りつつあります。
そうなると、PHPにこだわる必要はなく、使いやすい言語、アプリケーションサーバーを利用すれば良くなります。
プログラミング言語を、複数、追いかけていると、ノウハウが分散して、効率が悪くなるため、PHPを捨てようかと、漠然と考えています。

クライアントサイドでも変化はあり、HTMLが不要になるのではないかと考えています。
原点に立ち返り、HTMLは、静的なページのみになり、今後は、動的なページが増え、アプリ風になるのではないかと感じています。
ホームページにアクセスすると、Javascriptで書かれたアプリが起動し表示されるイメージです。
そうなると、これまでの、ページの遷移(http://foo.com/main から、/subへのような感じ)は不要で、RESTやソケットを利用して、サーバーからデータを取得し、表示すれば良くなります。
HTMLの構築をサーバー側で行わないなら、PHPにこだわる必要はありません。
PHPの利点は、サーバー側で、HTMLを手軽に構築できることですから。
また、端末(スマートフォン、パソコン)が高性能になっているため、HTMLを端末側で構築する負荷は気にしなくても良くなっています。

ここで、一度、考えをまとめると、
・今後は、JavaScriptを使ったアプリが主流。
・静的なページでのみ、HTMLは残る。
・PHPの利用は、簡単なことに限られる。

アプリと言えば、Javaアプレット、Flashなどもありました。
「また、戻るの?」
という疑問もあります。

アプリを避けていた理由のひとつは、googleの検索にヒットしないことがありました。
以前、Javascriptで、webページを作り、googleに登録申請(クロール依頼)すると、無価値のページとして、ペナルティを受けたことがあります。
今は、Javascriptで読み込まれた情報も、クローラーが認識できるようです。


とりあえず、PHPを、Node.jsに置き換えていこうかと思っています。
クライアントサイドの開発は、どのフレームワークが合っているのか、次の段階で考えようと思います。
ただ、その前に、Javaの現状も調べようと思います。
Javascriptの開発環境を調べると、最近は、コンパイルして、ファイルを作成するのが主流のようです。
そんなことをするなら、Javaで作ってデプロイに戻った方が良いような気もするためです。

2017年7月9日日曜日

Adaptec RAID 6405E 暑さでダウン

Adaptec RAID 6405Eを使っています。
夏の暑さで、ダウンしました。

人が耐えられる暑さでも、コンピュータには無理だったようで、アラーム音が出て、カードが停止しました。
停止すると、温度が下がるまで、利用できなくなるようです。

さすがに、専門のカードのおかげで、HDDのデータは失われずに済んだようで、その点は、助かりました。

室内のエアコンを付けると大丈夫ですが、心配でしたので、カードにファンを取り付けました。
ファンの取り付けのネジは、2.6mmの長さ15mmのものを使いました。
ファンを付けると、これまでのスロットでは、隣のカードに干渉するため、スロットの位置も変更しました。

ファンのおかげで、暑さに強くなりましした。

2017年7月3日月曜日

wkhtmltopdfで画面が崩れる

サイトの表示を、pdfに保存するソフト「wkhtmltopdf」を試してみました。

バージョン 0.12.4

flexboxを使っている部分が崩れてしまい、正しく表示されません。

他に良いソフトはないでしょうか。
chromeで、pdfとして保存すれば、期待通りになりますが、これを自動的に行いたいと考えています。
chromeで、コマンドラインを使って、pdf保存できれば、解決するのですが。

2017年6月29日木曜日

VMwareの仮想マシンイメージを、KVMに移行 失敗

VMware workstation上のWindows2000仮想マシンを、KVMに移行させようとしましたが、失敗しました。

<手順>
2通り試しました。
VMwareの仮想マシンのvmdkを、直接、qemu-imgで変換する方法と、
VMware Workstationで、ovfにエクスポートし、そのvmdkファイルを、qemu-imgで変換する方法を試しましたが、どちらも、結果は同じでした。

準備
VMwareで、仮想マシンを起動し、vmware toolsをアンインストールしました。
これにより、基本デバイスなど、いくつかのデバイスが、!状態になりました。
これを解決する方法を探しましたが見つかりませんでした。
vmware toolsのインストールと、アンインストールにより、デバイスのドライバが失われたようです。
この状態でも、VMware上では動作しました。
ただし、VGAは、最大800×600に制限されました。

kvmのインストール
$ sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager qemu-utils

ubuntu-vm-builderが必要になるのかは分からなかったため、インストールしませんでした。

仮想マシンの変換
$ qemu-img convert -p -f vmdk w2k.vmdk -O qcow2 w2k.qcow2
-pオプションで、進捗状況表示。
qcow2が、kvmの標準ディスクイメージ。

本来は、ネットワークの設定を、ブリッジにするのですが、今回は、省略しました。


仮想マシンマネージャーを起動
新規仮想マシンを追加する。
[既存のディスクイメージをインポートする]
imgファイルを指定
OSをWindows、バージョンをWindows2000に設定。

起動前に設定を変更する。
ディスプレイを、VNCサーバーに変更。
デフォルトでは、「グラフィカルコンソール接続時にエラーが発生しました」と表示され、表示されなかった。


仮想マシンの起動

ブルー画面。エラー0x0000007B。
仮想マシンの、HDDを、IDEから、SCSIに設定変更しても同じ。


結局、あきらめて、VMwareを使い続けることにしました。

2017年6月15日木曜日

Windows10 OSの更新が終わらない

定期的に、書いているような気もしますが、今月も、Windows10のUpdateで、エラーが発生し終わりませんでした。

更新プログラムのダウンロード中に、OSがスリープ状態になり、更新処理が止まったようでした。
この後、再起動し、再び、更新処理を行いましたが、ダウンロードが途中で止まり、進みません。
受信パケットをチェックしたところ、パケットの受信がない状態でした。

再起動すると、電源を切らないでくださいと表示された後、30分以上、待たされました。
気合いを入れて原因を調べないと解決しそうにないため、現在は、放置して、後日、調べる予定です。

2017年6月1日木曜日

Bluemixで、Node-REDを使ってみる

Bluemixで、Node-REDを使ってみました。

参考にしたのは、下記のURLです。
コードをほとんど書かずにNode-REDでWebアプリを作ろう

さて、順を追って、やっていくと、最初に気になったのは、Bluemixの入り口でした。
参考ページのログイン画面から行けるのは間違いありませんが、googleで検索し、IBMのBluemixの紹介ページを読み、そこから始めようとしたところ、ログインに手間取りました。

なぜ、遠回りしたかといえば、無料と有料の違いについて、知っておきたかったからです。
たとえ、記事が最新のものだとしても、提供元の情報を読んでおく必要があるからです。

2017/5現在、Bluemixの30日間のトライアル期間は無料です。
その後、無料のまま利用することもでき、その場合、メモリの割り当てと、追加のサービスに気をつければ、できそうだと分かりました。

Node-RED環境を準備する段階では、画面が変わっていたものの、参考ページ通りにできました。

HTMLファイルの追加と、jsファイルのアップロード部分は、「GITの追加」ができず、手間取りました。
GITは、GitHubではなく、IBMが提供するGITに変更されているため、これを有効にするために、「ツールチェーン」を有効化する必要がありました。
Gitの操作も変わっており、プッシュするには、SSH-KEYを登録する必要がありました。
ファイルを編集し、コミットすると、自動的にプッシュし、サーバーを再起動するようでした。

便利ですが、開発中は、ソースコードの修正を、もっと手早くやりたいところです。
どうすれば良いのでしょうか。


cloud.htmlは、数カ所修正が必要でした。

var wsUri = "ws://<yourapp>.mybluemix.net/ws/wordcloud";

var wsUri = "wss://<yourapp>.mybluemix.net/ws/wordcloud";
<yourapp>の部分は、自分の環境に合わせる。

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>

<script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script>

これで、動きました。

2017年5月31日水曜日

ケンジントン ExpertMouse TrackballWorks

ケンジントン ExpertMouse で、TrackballWorksを使ってみました。
TrackballWorksは、昔の不出来が印象に残っていて、何年もインストールしていませんでした。
先日、ふと、ボタンに、コピー&ペーストを割り当てたら便利になるのではないかと思い、試すためにインストールしました。

トラックボールは、キーボードの左側に置いています。
この配置では、同じ左手で操作する、キーボードのショートカットのCTRL+C、Vの組み合わせは利用できませんでした。
コピー&ペーストを、トラックボールのボタンに割り当てることで、この不便さを解消しようと考えました。

実際に使ってみると、微妙。
左手だけで、コピー範囲の選択、コピー、ペーストができる点は便利です。
しかし、逆に、左手だけで操作するため、操作の間が開いてしまいます。
右手にマウスを持って、左手でキーボードのショートカットを操作するときは、範囲指定完了と、コピーの動作は、ほぼ、同時に行うことができますが、同じ手では困難です。
慣れれば、できそうな気がしますが、これを練習するくらいなら、これまで通り、コピー&ペーストを多用する場合は、トラックボールから右手マウスに持ち替える方が楽です。
ExpertMouseの上側に、もうひとつボタンが用意され、コピー、カット、ペーストを割り振ることができるようになったら、練習する価値があるかもしれないと思いました。


TrackballWorksを使って、スクロールの速度を設定してみましたが、これは、快適でした。これまで、スクロールの速度が遅くて不満を感じていましたが、これが解消されました。
これだけで、ソフトを入れた価値がありました。
また、慣性スクロールを試してみましたが、これは、スマートフォンのスクロールのような感覚で新鮮でした。ただし、最初は、面白いと思って使ってみましたが、狙った場所を通り過ぎてしまうため、結局、このオプションは無効にして、スクロール速度を1つ上げて調整しました。

2017年5月24日水曜日

C言語の勉強

数年ぶりに、C言語に取り組んでいます。
用途は、IoT系のマイコンです。

長らく、C言語から離れていたため、参考書を読み、最新の情報を仕入れました。
本は、

Cクイックリファレンス 第2版 [ Peter Prinz ]

です。
基本はできているので、リファレンス系の本を選びました。
実践関係の本も調べてみましたが、出版が古く、結局、この一冊に決めました。

C言語も時代の変化があり、マルチスレッド関係や、脆弱性対策で、関数が変わっていました。

基本ができているつもりでも、この本だけで、プログラムを組むのは辛そうです。
やはり、実践系の本も欲しいところですが、実践系は、電子書籍で検索できた方が便利そうです。

2017年5月17日水曜日

OneNote スペルチェック

OneNoteでは、余計なこと、大きなお世話ともいえる機能が有効になっています。

そのひとつが、スペルチェック。
赤い波線が、文字と重ならないように引かれるなら、まだ良いのですが、文字の下の部分と重なるため、カンマなどは隠されてしまいます。
このせいで、プログラムのソースコードを書くと、見にくくなり、困ります。

オプションから、校正機能を無効にしました。

ページ毎に、有効、無効を切り替えられると良いと思うので、次の更新に期待します。

2017年5月16日火曜日

Windows10 OneNote 入力が表示されない

ThinkPad T450sで、Windows10、OneNote、Atok2017を使っています。
バッテリー状態で、OneNoteを使うと、入力した文字が表示されないことがあります。

データの更新は行われているため、別のページを開き、問題のページに戻ると、入力が反映されています。
不思議なのは、問題が発生するのは、今のところ、1ページのみ。
しかも、常になるわけではありません。

ACアダプタを繋ぐと発生しないため、処理の取りこぼしのような感じに思います。

2017年5月12日金曜日

Skype 「カードを送りました」

Windows10を使っています。

突然、Skypeが、「カードを送りました」と通知してきました。

Skypeを使っていないのに、なんのことやら?という状態です。


2017年5月6日土曜日

アマゾン 話が通じない

アマゾンから、2段階認証の設定を勧めるメールが届き、設定しようとしましたができません。

ログイン後、「出品者とマーケットプレイスを選択してください」と表示され、選択ボタン以外何もできない状態になります。

どうしようもないので、アマゾンに問い合わせようと、まず、チャットを使いましたが、繋がりません。
仕方ないので、Eメールで問い合わせましたが、今度は、必要な情報を送って欲しいと言われ、返信を送ったにもかかわらず、再び、催促され、結局、連絡が取れないまま、質問がクローズされてしまいました。
どうも、こちらからのメールを受け取っていないような文面でした。
こちらのメールアカウントに問題があるのかと思い、自分の他のメールアドレスにメールを送ってみましたが問題がなく、おそらく、アマゾン側で、受け取れない設定になっているのだと思います。

問い合わせのURLにアクセスしようとしても、ログインが促され、ログイン後、上記の何もできない画面に誘導されます。

ログインが正常ではないのに、ログイン後に有効になるらしいURLへのアクセスを指示されても、アクセスできるわけありません。

2017年5月1日月曜日

Windows10 英語キーボードを使う場合

私は、英語キーボードを使っています。
基本的には、慣れの問題ですが、
・OSは、英語が基本のため。
・コンパクトなキーボードでは使わないキーのない英語キーボードが良い。
このあたりも、若干、理由になっています。

さて、Windows10。
これは、定期的にアップデートされ、カスタマイズした設定は、大型アップデートがくると初期化されてしまいます。
私は、英語キーボードを使っている関係で、キーボード周りは、カスタマイズしています。

ホストのWindows10には、Atokを入れ、F12に、日本語切り替えを割り当て、F12とCapsを入れ替えています。これで、Capsを1回押すだけで、日本語と英語の切り替えができます。
また、ゲストのWindows10では、AXドライバを入れ、右Altと、Capsを入れ替えることで、ホストと同じように、capsキーで、日本語と英語の切り替えができるようにしています。
両方にAtokを入れていないのは、ライセンスの関係です。

このカスタマイズが、大型アップデートで、常に初期化され、面倒に感じています。
こんな時に、便利なのが、

キーボード切り替えツール2

これは、日本語、英語、AXなどのドライバの切り替えと、キーのカスタマイズを記録しておいて、復元することができます。
私は、ホスト用の設定と、ゲスト用の設定を保存しているため、このソフトを1回、起動するだけで、元のように使えるようになり便利です。
英語キーボード使いには、必須のソフトです。

2017年4月22日土曜日

Windows10のゲストOSのクローンはできない

VMwareのゲストOSとして、Windows10を使っています。
このWindows10をクローンで、別のフォルダにコピーすると、ライセンス認証ができず、使えません。
単に、フォルダをコピーして、OSの起動時に、"コピー"ではなく、"移動"を選択すれば、ライセンスの問題はありませんでした。

ライセンスのトラブルシューティングで、ハードウェアの変更があったことを選択すれば、認証できると思ったのですが、できませんでした。

<経緯>

Windows10のゲストOSが壊れたため、バックアップしていたイメージデータを戻しました。
このまま使うと、再び、壊れる恐れがあるため、VMwareのクローン機能を使い、コピーし、こちらを使おうと考えました。
(以前、UbuntuのゲストOSで、バックアップイメージを使って、再び、壊れた経験がある)

仕方なく、Windows10のクリーンなイメージを、コピーしてみましたが、予想通り、これも、ライセンス認証がNGでした。
移動であれば、大丈夫そうでした。


マイクロソフトアカウントを設定しておけば、コピーや移動を行っても、大丈夫だったように思うのですが、再び、ライセンス認証の仕組みが変わったのでしょうか。
これでは、新しいパソコンにVMwareをインストールすれば、ゲストOSをコピーしただけで使えるようになったり、バックアップから簡単に復元できる便利さが失われてしまいます。

結局、Windows10のクリーンなイメージから、スナップショット機能を使って、分岐させて使うことにしました。
複雑な仕組みを利用すれば、それだけ、トラブルにあう危険が増えるため、使いたくない方法ですが、仕方ありません。

2017年4月21日金曜日

VMware ゲストOSが壊れた

今回は、ゲストOSのWindows10が壊れました。
内部のデータが消え、Windows10が初期化されたような状態になりました。
また、シャットダウンを行おうとしましたが、「コンピュータの電源を切らないでください」と表示され、何もできない状態です。


<経緯>

ホストOSのWindows10が、アップデートにより、様々な設定が初期化されてしまい、困っています。
VMware関係では、仮想ネットワークエディタの設定が初期化され、再設定が必要でした。

ゲストのWindows10もアップデートしました。
しばらく、使って問題なさそうだったため、スナップショットの整理を行いました。

さらに、VMwareもマイナーアップデート(12.5.5)しました。

これだけ、環境が変わる要因があると、原因を特定することは困難です。


基本的に、仮想マシン内で作業を行っていますので、そろそろ、ホストOSを、WindowsからLinuxに代えるべきではないかと考え始めています。

2017年4月12日水曜日

Javaで、シリアル通信

Javaで、シリアル通信を行いました。

Javaで、シリアル通信を行うには、古くからある「Java Communications API」を使う方法と、将来的に有望な「Device I/O」を使う方法があるようです。

「Device I/O」の方は、Raspberry Piの情報しか見つからなかったため、「Java Communications API」を使ってみました。
「Java Communications API」の実装は、RXTXを使いました。

環境は、Debian (Jessie)

インストール
$ sudo apt install librxtx-java librxtx-java-dbg


利用方法
classpath に /usr/share/java/RXTXcomm.jar
java.library.path に /usr/lib/jni
を設定する

NetBeansで利用する場合
プロジェクトのプロパティを開く。
「ライブラリ」の項目で、「JAR/フォルダの追加」を選び、RXTXcomm.jarを設定する。
「実行」の項目で、「VM Options」に、-Djava.library.path="/usr/lib/jni"を設定する。


これで、動きました。
整理すると、簡単なことですが、ここに、たどり着くまでが大変でした。

<経緯>
まず、「Java Communications API」を使う方法を探しました。
古いsunの実装は見つからず、代わりに、RXTXの実装を使うと良いと分かりましたが、こちらも、本家のサイトはダウンしていて、見つかりません。
一般のサイトの情報を元に、別のサイトから、ダウンロードして使いました。

プログラムを組んでみると、受信時に、例外も出力せずに落ちました。
久しぶりのJavaのため、Java8になって、何か変わったのかと調べましたが、原因は分かりませんでした。

RXTXの代わりはないかと調べると、PureJavaComm、jSSCがあり、また、現在は、Device I/Oの開発が進められているらしいと知りました。
(Device I/Oの開発が進んでいるようには見えませんでしたが)

ここで、Debianのパッケージに、RXTXがあることを知り、これを使うことで解決しました。

いやはや、遠回りしたものです。
「Java Communications API」は、JDK7に組み込まれているかのような情報もありましたが、どうだったのでしょうか。
とりあえず、RXTXで動いたため、よしとします。

2017年4月5日水曜日

ドコモのiPhoneでは、IPv6は使えないのか?

今回のiPhoneのOSの更新により、ドコモのiPhoneを使っているMVNOで、IPv6が使えるようになったそうです。

では、本家のドコモを使っている場合は使えるのでしょうか?

iPhoneのみを使っている場合は、IPv4もIPv6も変わりなく、むしろ、IPv4固定の方が良いくらいです。
テザリングの場合、Windows10は、IPv6に対応しており、ブラウザは、IPv6を優先することがあるため、IPv6を使いたくなります。

iPhoneの設定は、どこにあるのでしょうか。

2017年4月4日火曜日

IPv6を試す

firefoxが遅いことに端を発して、IPv6を試してみました。

プロバイダは、ぷららです。
IPv6に対応しているはずですが、契約オプションの関係か、IPv6の接続はできませんでした。

代わりに、IIJmioのSIMと、モバイルルーターを使って試してみました。
こちらは、モバイルルーターの設定で、IIJmioとの接続オプションを、IPv4/IPv6に変更することで、接続できました。
ただし、Windows10は、一度、再起動しないと、だめでした。

印象としては、firefoxの接続が早くなったように感じました。
これは、そんな気がする程度かもしれません。
実際には、いつも、モバイルルーターを使っている場所で、同じように作業をしてみなければ比較できません。

いつも、モバイルルーターを使っている場所では、アフィリエイト広告あたりは、読み込みタイムアウトなのか、非表示になります。
これが、正常に表示されるなら、IPv6に変更した意味があったとなります。
広告だけなら、非表示の方が良いくらいですが、見たいページを、リロードで表示するのは、さすがに面倒でしたから。
IPv6での接続が、この問題の解決に役立ちそうで、楽しみです。

2017年3月31日金曜日

firefoxから、Vivaldi へ

firefoxの64ビット版を試してみましたが、遅いため、Vivaldiを使ってみることにしました。
こちらは、レスポンスが良く、良さそうな感じです。

firefoxが遅いのは、firefoxのせいだけではないのかもしれません。
例えば、IPv6での接続を試して、タイムアウトで、IPv4で接続しなおしている可能性があります。
この場合、IPv6を無効にすれば改善されます。
しかし、これをやると、IPv6普及の足を引っ張ることになるので、ためらいがあります。
さて、Vivaldiは、例えば、仕様書を見ながら、関連のサイトを調べていくような調査には便利で、以前、使ってみたことがあります。
その時は、便利で使っていましたが、いつの間にか、慣れているfirefoxに戻ってきた経緯があります。
パソコンが変わっても、ブックマークなどが共有されているのは、やはり、便利でした。
その点では、Chromeも同様ですが、Chromeの方は、googleサービスへの密着が高いため、そのあたりとの連携が欲しいサービスを利用する場合に使っています。

chrome、firefox、edge、vivaldiなど、ブラウザを使い分けていくつもりです。

2017年3月30日木曜日

Firefoxが遅い

最近、firefoxが遅くなってきました。
我慢の限界を超えたため、とりあえず、32ビットから64ビット版へ変更してみました。

しばらく、これで様子を見てみます。

2017年3月29日水曜日

モバイルルーターで、ファイル共有ができない

モバイルルーター Aterm MR04LNや、iPhoneのテザリングを利用すると、VMwareのゲストOSと、ホストOS間で、ファイル共有ができなくなります。

ホストOSは、Windows10。
ゲストOSは、Windows7や、ubuntuなどです。
ホストOSやゲストOSのフォルダを共有設定にしています。
ゲストOSのLAN設定は、ブリッジ接続です。

通常は、NECの普通のルーターを使っていますが、この場合は、問題なく、互いの共有フォルダにアクセスできます。
これが、外出先で、モバイルルーターや、iPhoneを使うと、共有できなくなります。

ブリッジ接続を、NATに変更すれば、共有できます。
セキュリティソフトは、ESETを使っていますが、使う前から、同じ状態でした。
ゲストOSから、インターネットへの接続は問題なくできます。

ホストOSのWindows10で、ネットワークがプライベートになることが怪しいのですが、このあたりの挙動は、以前のWindowsから、よく分からず、謎です。
Windows2000や、Linux系は、ネットワークの設定が素直ですが、Windows10は、設定がブラックボックス的で、よく分かりません。

2017年3月22日水曜日

ESET 不明なデバイス

eset internet securityを使っています。
ホームネットワーク保護を見ると、不明なデバイスが、複数表示され、気になっています。
macアドレスから、正体を掴もうとしても分かりません。
macアドレスの最初の6文字から、ヒントが得られるらしいのですが、サイトで調べても分からないのです。

同じネットワークに、別のパソコンを繋いでいますが、こちらのホームネットワーク保護では、不明なデバイスが表示されません。

不気味です。

2017年3月17日金曜日

OneDrive 勝手なことをするな

OneDriveに、古いデータをコピーしたのですが、iPhoneから、写真の項目をタップしたところ、忘れていたような古い画像が表示され、びっくりしました。

どうやら、OneDriveが、勝手に画像を検索して、アルバムを作成するようでした。

これを無効にしたいのですが、やり方が分かりません。


iPhoneの設定を見ていると、通知の項目があり、そこに「OneDriveが写真の修正をしたとき」という項目を見つけ、2度、びっくりでした。
OneDriveが勝手に、写真を修正するのでしょうか。

そうであれば、勝手なことをするなと言いたくなります。

2017年3月12日日曜日

Googleアカウント アプリの管理

マイクロソフトアカウントの、アプリへのアクセス許可を調べることには、苦労しました。

マイクロソフトアカウント アクティビティの確認ができない

一方で、Googleアカウントは簡単でした。
アカウント情報から、「ログインとセキュリティ」「接続済みのアプリとサイト」で、アクセスでき、「Cloud Drive Sync」のアクセス許可を削除できました。

マイクロソフトアカウント アクティビティの確認ができない

QNAPに、バックアップ用のアプリ「Cloud Drive Sync」を入れていましたが、「Hybrid Backup Sync」に移行しました。
「Cloud Drive Sync」が不要になったため、OneDriveへのアクセス許可を削除しようとしましたが、大変、わかりにくく、結局、よく分かりませんでした。

マイクロソフトアカウントにログインし、「セキュリティ」タブから「最近のアクティビティの確認」を行おうとしましたが、最初に、メールアドレスが求められ、次に、コードの入力が求められました。
メールアドレスに、コードが送信されるのだと思いましたが、いつまで経ってもメールが届かず、ボタンには「送信」と書かれているため、「自分で、コードを決めて送るの?」と考えて、入力してみましたが、だめでした。

結局、サイト内の検索機能を使って、目的のページにたどり着き、アプリの許可を削除しました。

作業が終わってから、メールをチェックすると、コードが送られていました。
コードを入力しなくても、目的のページにたどり着けるなら、メニューのどこから行けたのでしょうか?

2017年3月7日火曜日

Debian(jessie)に、node.jsをインストール

こちらのHPを参考にして、インストールしました。
https://nodejs.org/ja/download/package-manager/

ubuntuでは、nvmを使ってインストールしていました。
debianでも同じようにやれば大丈夫だろうと思い、実際、nodeの実行はできました。
しかし、visual studio codeでデバッグを行うときに、ランタイムがパスに見つからないという感じのエラーが発生し悩みました。
パスが通っているのに、エラーとは、なぜ?

結局、上記のように、インストールし直して、解決しました。

2017年3月6日月曜日

QNAPで、OneDriveをバックアップ 2

QNAP TS-212P に、OneDriveのデータをバックアップするように設定できました。

最初、「Cloud Drive Sync」を使って挑戦しましたが、zipファイルがダウンロードできず、断念しました。
推測ですが、OneDriveに置いたzipファイルには、OneDrive側で、何か、特別な処理が入っているのではないかと思われます。
QNAPだけでなく、WebDAVによるアクセスでも、zipファイルはダウンロードできませんでした。
時間を置けば、できたかもしれませんが、同期処理に不安を感じて、「Hybrid Backup Sync-Beta」を使いました。

「Hybrid Backup Sync-Beta」は、ベータ版であることが不安ですが、こちらは、無事に、バックアップできました。


「Connect to Cloud Drive」の動作が、OneDriveのコピーをローカルに置くという、Windowsを同じ仕組みであれば、「Connect to Cloud Drive」が使っているOneDrive用のフォルダを共有設定にできれば最善でした。
コピーをローカルに置いているのか分からず、また、目的のフォルダが分からないため、「Hybrid Backup Sync-Beta」を使うことにしました。

これで、OneDriveからQNAPへのバックアップは、「Hybrid Backup Sync-Beta」。
QNAPからOneDriveへのアップロードは、「Connect to Cloud Drive」を使うことになります。

QNAPからOneDriveへのアップロードは、多くのファイルがある場合や、大きなデータがある場合に使うつもりです。
こうした場合、Windowsからアップロードを行うと、時間が掛かり、アップロード中に電源を切った場合に不安がありました。OneDriveの同期のためだけに、パソコンを起動しておくというのは、あまり、気が進みません。
手間が掛かりますが、一度、QNAPに、ファイルをコピーし、QNAP側で、OneDriveにアップロードさせることを、対策としました。

不安が残るのは、データが改竄された場合、バックアップ側も、自動的に改竄されたデータになってしまうことです。
改訂履歴が残るようなバックアップシステム(アプリ)があれば、乗り換えたいと思います。

2017年3月3日金曜日

iPhone6sで、「WiFiアシスト」をオフにする

iPhone6sで、「WiFiアシスト」をオフにしたら、快適になりました。

iPhone6sを使っていますが、自宅や仕事場など、Wi-Fi環境に繋がると、インターネットへの接続が悪くなり、困っていました。
先日、ドコモで、契約内容の変更をお願いしたとき、店員の方が、私のiPhoneを操作して、作業を行おうとしましたが、インターネット(ドコモのサイト)に繋がらず、苦戦していました。
今まで、iPhoneのWifi接続は、こんなものと割り切っていましたが、どうやら、私のiPhone6sが、特別に悪いらしいと知りました。

「Wi-Fiアシスト」は、WiFiのつながりが悪い場合、4Gの通信回線に切り替える機能だそうです。
本来、つながりを良くするための仕組みですが、これで、ピンときました。
これが誤動作しているに違いないと。
私の管理するルーターは、ステルス機能を使っています。
これが、この機能と相性が悪いようです。
ステルス機能を使っていない場合でも、このような機能は、悪さをする可能性が高くなります。

「設定」「モバイルデータ通信」「Wi-Fiアシスト」を無効にすると、WiFiでのつながりが良くなりました。

2017年3月1日水曜日

OneDrive zipファイルがダウンロードできない

OneDriveを、本格的に使い始めました。
50MB程度のzipファイルをアップロードし、ダウンロードしてみましたが、ダウンロードできませんでした。

「なぜだろう?」とインターネットを調べて、再び、ダウンロードしてみると、成功しました。

ブラウザは、Chromeです。
一方で、WebDAV経由は、今のところ、必ず、ダウンロードに失敗します。
おそらく、この影響で、QNAPの「Clound Drive Sync」で、zipファイルのダウンロードができず、エラーになります。

実際の経緯では、QNAPがバックアップに失敗するため、原因を調べていたら、ZIPファイルがダウンロードできないことに原因があったとなります。

zipファイルをOneDriveの同期対象にしていれば、ローカルにzipファイルが作成されます。しかし、同期対象から外していると、zipファイルがダウンロードできません。

OneDrive。遅いし、さて、どうしたものか。

2017年2月28日火曜日

QNAPで、OneDriveをバックアップ

先日、OneDriveに、データを置くことにしたのですが、データのバックアップは、QNAPに置くことにしました。

OneDriveへアクセスするアプリには、「Connect to Cloud Drive」と「Cloud Drive Sync」の2つあります。
この違いが、よく分からず、とりあえず、「Connect to Cloud Drive」を使ってみました。

これを使うと、「File Station」に、OneDriveが統合され、統一された操作でアクセスできました。
ただし、疑問は、OneDriveのファイルは、ファイルシステムのどこに置かれるのかが分かりません。
クラウドからデータをダウンロードして、QNAP内のHDDに保存していると思うのですが、どこにあるのでしょうか。
これを知りたい理由は、OneDriveには、常にローカルと同期するデータとは別に、必要な時に、必要なファイルだけをダウンロードするデータを分けて置いていて、後者は、通常、Windows10のエクスプローラでは見ることができません。
これらのファイルにアクセスするには、ブラウザでアクセスするか、WebDAVを使うしかありません。
どちらの方法も、大量のファイルを扱うには不向きで、実用的ではありませんでした。
そのため、QNAPに保存された、これらのファイルを共有して、アクセスできるようにしたいと考えました。

要するに、非同期用のデータを置いているフォルダを、共有設定にして、ローカルネットワーク内に公開したかったのです。

しかし、これができませんでした。
「File Station」で、任意のフォルダを共有設定にする方法も知らないのですから。

次に、「Cloud Drive Sync」を使ってみました。
こちらは、一方向のバックアップ用のアプリのようでした。
「Connect to Cloud Drive」とは違い、QNAP内の更新を、クラウド側に反映させることはできないようです。
また、OneDriveの任意のフォルダを指定してバックアップできます。
これを利用して、非同期用のフォルダのみを、共有フォルダにバックアップするように設定しました。


結果的に、両方のアプリを使うことにしました。
非同期用のデータが2つ置かれてしまう設定になりましたが、当初の目的に近い設定にできました。

クラウド側の非同期データをダウンロードするには、遅いことを我慢して、ブラウザやWebDAVを使う方法と、QNAP(バックアップ)からのローカルネットワーク経由での方法を使えるようになりました。

クラウド側への非同期データのアップロードは、QNAPの共有フォルダに、一度、コピーし、そこから、OneDriveフォルダに移動させ、OneDriveに反映させることを考えています。OneDriveへのアップロードするファイル数が少ない場合は、直接、アップロードすれば良いのですが、数が多い場合は、QNAPにアップロードさせるという考えです。

2017年2月24日金曜日

パソコンのデータ管理を整理中

Office 365を使い続けることに決め、これにより、クラウドストレージ(OneDrive) 1TBを確保しました。

OneDriveのデフォルトの設定では、同期のために、最大1TBのデータが、パソコンのディスクに作られることになるため、これを変更しました。

まず、非同期用のフォルダを作りました。
このフォルダを同期させないように、OneDriveを設定しました。
手順としては、
Windowsのタスクバーにある雲のアイコンを右クリックし、[設定]。
[アカウント]タブで、[フォルダの選択]。
ここで、同期のチェックを外しました。

この設定を行うと、エクスプローラーで、このフォルダが見えなくなったのは、不便です。
オンライン専用のフォルダを表すアイコンを用意して、フォルダ構成やファイル名を表示するようにしてくれると、わかりやすいのですが、改善してくれないものでしょうか。
希望としては、非同期フォルダは、フォルダ名やファイル名は表示され、ファイルを見るときには、一時的にダウンロードされるが、一定時間後には、ローカルから削除され、通常は、ローカルには置かれないという仕様になることを期待しています。
Windows8.1の時は、これに近かったように思います。

エクスプローラーでのアクセスができないため、ブラウザで、OneDriveを開き、ファイルをアップロードしました。

Chromeで行いましたが、メモリ不足で、エラーが発生しました。
この方法では、大量のデータをアップするのは無理のようです。

仕方ないので、一度、同期設定に戻し、ファイルをコピー。
同期を待ち、その後で、非同期設定にすることにしました。

2017年2月23日木曜日

OneNoteの右クリックが遅い

OneNoteと、Atokの組み合わせでは、OneNoteで右クリックメニューを出そうとすると、とても時間が掛かります。

OneNoteの問題のようですが、残念ながら、OneNote 2016でも改善されませんでした。
原因は、OneNoteが、再変換要求を出すことにあるようですから、これをオプションで無効化できれば、根本的に解決すると思うのですが。
他のoffice製品で、遅いと感じたことがないので、他のoffice製品と、同じ仕様にしてくれれば良いのにと、いつも思います。


対策としては、Atokの設定で、「テキストサービス」を無効にすれば改善します。
しかし、副作用として、Windowsの検索ボックスで、日本語入力ができなくなったり、Windowsアプリ(例えば、OneNoteのアプリ版)で、日本語入力ができなくなります。


もう一つの方法を見つけました。
http://ameblo.jp/ikiuo/entry-12209282033.html

こちらのサイトでは、ATOK 2016で行っていますが、ATOK 2017でも、ほぼ同じです。

・ATOK30EE.EXE を実行。
・使用中の項目を選択。
・メニューから、項目の追加。
・[再変換候補取得抑制]を選択して、OK。
・項目名の一覧の[番号 135]に[再変換候補取得抑制]が出てくるのでダブルクリックで、[する]に変更
・保存する。
・Windowsを再起動。

これで、右クリックの表示は、1秒程度になります。
テキストサービスを無効にする対処方法に比べると、遅いですが、なんとか、我慢の範囲内です。

2017年2月21日火曜日

OneNote 2016 不具合

Windows7で、OneNote 2016を使っていますが、不具合らしきものがあります。

Windowsの終了時に、OneNote 2016がエラーを発生させ、終了が遅くなりました。

OneNoteで、別のノートブックへのリンクが使えません。
これは、無償版の制限でしょうか。
そうであれば、元のバージョンを使いたいと思います。


一度、壊れた仮想マシンは捨てる

先月、このような記事を書きました。

Ubuntu 16.04 ソフトウェアの更新で壊れる

Ubuntuが起動しなくなり、fsckコマンドで、復活させました。
結局の所は、バックアップしていた仮想マシンイメージを使うことで、継続して使ってきましたが、再び、壊れました。

どうやら、壊れる原因は、壊れる前からあったようです。
これでは使い続けることに不安があるため、この仮想マシンは捨てることにしました。

一番の不安は、この原因がホストのディスクシステムある場合です。
そうでないことを願うばかりです。

2017年2月20日月曜日

OneNote 2016

無償のOneNoteは、ローカルにデータを保存できなかったのですが、OneNote 2016ではできるようになっていました。
これを知っていれば、バージョンアップの案内を無視したりしなかったのですが(笑)

とりあえず、メニューは、若干、変わったものの、今まで通り使えそうな感じです。

2017年2月13日月曜日

Material Design Lite グリッドが崩れる

Material Design Liteを勉強中です。

Chromeで、グリッドを試したところ、1行に並ぶはずが、2行に改行されて悩んでいます。
firefoxなら、1行に並ぶのですが。



2017年2月11日土曜日

WindowsのChromeで崩れる

ここ数日の出来事ですが、WindowsのChromeで、今まで正常に表示されていたHPが、デザインが崩れて表示されるようになりました。

以前は、大丈夫でした。
Windowsでは、パソコン2台で確認し、いずれも崩れました。
Linuxでは、正常に表示されました。
WindowsのFirefoxでは、正常に表示されました。

まとめると、Windowsの最新のChromeで、画面が正常に表示されません。
Chromeに不具合があるのか、Windowsになんらかの変更があったのか、どちらかだと思いますが、対応に苦慮しています。

2017年2月9日木曜日

Aurelia 学ぶ 6

Aurelia(アウレリア)の勉強をしています。
http://aurelia.io/

チュートリアル
http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/contact-manager-tutorial/1

前回のつづき


ローディング時の表示

nprogressを使うので、インストール。
$ npm install nprogress --save

aurelia.jsonファイルを開く。
vendor-bundle.jsの部分に記述する
   
"dependencies": [
  ...
  {
    "name": "nprogress",
    "path": "../node_modules/nprogress",
    "main": "nprogress",
    "resources": [
      "nprogress.css"
    ]
  }
  ...
]

これで、利用の準備は完了。

src/resources/elements フォルダに、 loading-indicator.jsを作成

import * as nprogress from 'nprogress';
import {bindable, noView, decorators} from 'aurelia-framework';

export let LoadingIndicator = decorators(
  noView(['nprogress/nprogress.css']),
  bindable({name: 'loading', defaultValue: false})
).on(class {
  loadingChanged(newValue){
    if (newValue) {
      nprogress.start();
    } else {
      nprogress.done();
    }
  }
});

resources/index.jsファイル

export function configure(config) {
  config.globalResources(['./elements/loading-indicator']);
}

app.jsの修正
web-apiを、ここで扱えるようにする。

import {WebAPI} from './web-api';

export class App {
  static inject() { return [WebAPI]; }

  constructor(api) {
    this.api = api;
  }

  configureRouter(config, router){
    config.title = 'Contacts';
    config.map([
      { route: '',              moduleId: 'no-selection',   title: 'Select'},
      { route: 'contacts/:id',  moduleId: 'contact-detail', name:'contacts' }
    ]);

    this.router = router;
  }
}

app.htmlを修正
indicatorを表示する。
   
<template>
  <require from="bootstrap/css/bootstrap.css"></require>
  <require from="./styles.css"></require>
  <require from="./contact-list"></require>

  <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">
        <i class="fa fa-user"></i>
        <span>Contacts</span>
      </a>
    </div>
  </nav>

  <loading-indicator loading.bind="router.isNavigating || api.isRequesting"></loading-indicator>

  <div class="container">
    <div class="row">
      <contact-list class="col-md-4"></contact-list>
      <router-view class="col-md-8"></router-view>
    </div>
  </div>
</template>

これで、詳細をロードするときに、ローディングの表示が出る。
これで、一区切り。

2017年2月8日水曜日

ESET ファイヤウォール

ESET ファイヤウォールを見ると、ブロックされた通信の中に、見知らぬ会社名があります。

・LCFC(HeFei) Electronics
・PEGATRON CORPORATION

これは、どういうことでしょうか。
どんな会社が、どんな目的で、何をしているのか分かりません。

ブロックを解除しても良いのか悩んでいます。


また、ESETのホームネットワーク保護を無効にするべきかも悩んでいます。
ルーターは、Atermを使っていますが、どうやら、この機能のせいで、ルーターが停止することがあるようです。
WG1200HPの方は、パソコンからのネットワークを遮断するだけのようでしたが、
WR8160Nの方は、ルーターが停止してしまいました。

セキュリティ対策としては、有効のままにしたいのですが、副作用があって困っています。

2017年2月7日火曜日

Wordpressの改ざん被害

Wordpressの脆弱性を突かれて、改ざんの被害が出ているようです。
改ざんされているかは、どこを調べれば良いのでしょうか。
その点が知りたいのに、情報が見つかりません。

投稿や、固定ページが改ざんされるだけで、投稿の日付に関しては、改ざん日が残るという愉快犯的なものでしょうか。
それとも、そこを足がかりに、パスワードの取得や、密かに、悪質なプログラムを潜ませるところまで行っているのでしょうか。
このあたりまでいくなら、かなり、不安です。

Aurelia 学ぶ 5

Aurelia(アウレリア)の勉強をしています。
http://aurelia.io/

チュートリアル
http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/contact-manager-tutorial/1

前回のつづき

今回は、イベント関係の部分。

messages.js

export class ContactUpdated {
  constructor(contact){
    this.contact = contact;
  }
}

export class ContactViewed {
  constructor(contact){
    this.contact = contact;
  }
}

EventAggregator は、アウレリアのイベント関係の機能。
リストから選択(ContactViewed)されたとき、詳細情報が更新(ContactUpdated)されたときに、メッセージを発行する(publish)。

contact-detail.js

import {EventAggregator} from 'aurelia-event-aggregator';
import {WebAPI} from './web-api';
import {ContactUpdated,ContactViewed} from './messages';
import {areEqual} from './utility';

export class ContactDetail {
  static inject = [WebAPI, EventAggregator];

  constructor(api, ea){
    this.api = api;
    this.ea = ea;
  }

  activate(params, routeConfig) {
    this.routeConfig = routeConfig;

    return this.api.getContactDetails(params.id).then(contact => {
      this.contact = contact;
      this.routeConfig.navModel.setTitle(contact.firstName);
      this.originalContact = JSON.parse(JSON.stringify(contact));
      this.ea.publish(new ContactViewed(this.contact));
    });
  }

  get canSave() {
    return this.contact.firstName && this.contact.lastName && !this.api.isRequesting;
  }

  save() {
    this.api.saveContact(this.contact).then(contact => {
      this.contact = contact;
      this.routeConfig.navModel.setTitle(contact.firstName);
      this.originalContact = JSON.parse(JSON.stringify(contact));
      this.ea.publish(new ContactUpdated(this.contact));
    });
  }

  canDeactivate() {
    if(!areEqual(this.originalContact, this.contact)){
      let result = confirm('You have unsaved changes. Are you sure you wish to leave?');

      if(!result){
        this.ea.publish(new ContactViewed(this.contact));
      }

      return result;
    }

    return true;
  }
}

.subscribeで、イベント発生時の処理を記述。


contact-list.js
 
import {EventAggregator} from 'aurelia-event-aggregator';
import {WebAPI} from './web-api';
import {ContactUpdated, ContactViewed} from './messages';

export class ContactList {
  static inject = [WebAPI, EventAggregator];

  constructor(api, ea){
    this.api = api;
    this.contacts = [];

    ea.subscribe(ContactViewed, msg => this.select(msg.contact));
    ea.subscribe(ContactUpdated, msg => {
      let id = msg.contact.id;
      let found = this.contacts.find(x => x.id === id);
      Object.assign(found, msg.contact);
    });
  }

  created(){
    this.api.getContactList().then(contacts => this.contacts = contacts);
  }

  select(contact){
    this.selectedId = contact.id;
    return true;
  }
}


Object.assign(found, msg.contact);
msg.contactを、foundにコピーする。


2017年2月6日月曜日

Aurelia 学ぶ 4

Aurelia(アウレリア)の勉強をしています。
http://aurelia.io/

チュートリアル
http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/contact-manager-tutorial/1

前回のつづき

アドレス帳の表示部分

contact-list.js
 
import {WebAPI} from './web-api';

export class ContactList {
  static inject() { return [WebAPI] };

  constructor(api){
    this.api = api;
    this.contacts = [];
  }

  created(){
    this.api.getContactList().then(contacts => this.contacts = contacts);
  }

  select(contact){
    this.selectedId = contact.id;
    return true;
  }
}

名前付けの規則なのか。
ファイル名が、contact-listであれば、クラス名は、ContactListになっている。

static inject() { return [WebAPI] };
は、よく分からない。
コンストラクタのthis.api=apiにより、WebAPIクラスのメソッドが、this.apiを使って利用できるようになっているようにみえる。

created()は、Aureliaが使うメソッド。
ビューが作られる時に、呼ばれるらしい。
呼ばれると、WebAPIのgetContactListメソッドを使って、アドレス帳データ(contact list)を取得する。


contact-list.html

<template>
  <div class="contact-list">
    <ul class="list-group">
      <li repeat.for="contact of contacts" class="list-group-item ${contact.id === $parent.selectedId ? 'active' : ''}">
        <a route-href="route: contacts; params.bind: {id:contact.id}" click.delegate="$parent.select(contact)">
          <h4 class="list-group-item-heading">${contact.firstName} ${contact.lastName}</h4>
          <p class="list-group-item-text">${contact.email}</p>
        </a>
      </li>
    </ul>
  </div>
</template>

repeat.for="contact of contacts"は、ContactListのcontacts配列を繰り返して表示する。

${contact.id === $parent.selectedId ? 'active' : ''}
${}内は、JavaScriptが使える。
$parentは、ビューモデル、つまり、ContactListを意味する。
したがって、ここは、繰り返し表示される中で、選択された人である場合、クラスに、activeを追加する。

<a route-href="route: contacts; params.bind: {id:contact.id}" click.delegate="$parent.select(contact)">
route-hrefは、Aureliaが使う属性。
route:contactsは、htmlで言えば、href="contacts.php"のようなものか。
params.bind: {id:contact.id}は、その引数。
この形式ならば、複数の引数を渡すこともできそう。
html風に書くと、href="contacts.php?id={contact.id}"
実際には、href="contacts/:id"となるのかな。複数の引数を渡すときは、どう記述するのだろうか。
疑問は残るが、これで、Appクラスのroute関係と繋がる。
click.delegate="$parent.select(contact)"は、<a>タグがクリックされた時の処理。
クリックされると、ContactList.select(contact)が実行され、ContactList.selectedIdが設定される。
<a>タグにより、contactsの画面が表示される。

.delegateは、.triggerでも良いが、.delegateが使える場合は、.delegateを使う。


app.html

<template>
  <require from="bootstrap/css/bootstrap.css"></require>
  <require from="./styles.css"></require>
  <require from="./contact-list"></require>

  <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">
        <i class="fa fa-user"></i>
        <span>Contacts</span>
      </a>
    </div>
  </nav>

  <div class="container">
    <div class="row">
      <contact-list class="col-md-4"></contact-list>
      <router-view class="col-md-8"></router-view>
    </div>
  </div>
</template>


<require from="./contact-list"></require>で、contact-listを追加する。
<contact-list>の部分に表示される。

これで、画面の左側に、アドレスの一覧が表示される。


前回、Appクラスに
    config.map([
      { route: '',              moduleId: 'no-selection',   title: 'Select'},
とあり、no-selectionが、<router-view>に表示される理由(繋がり)が分かりにくかったのですが、今回は、contact-list同士のため、理解しやすいです。
moduleIdに指定されたモジュール(ここでは、no-selection)は、<router-view>に表示されると考えれば良さそうです。
少し、分かってきました。

VMware Workstation クリップボードの共有

VMware Workstation 12で、仮想マシンの共有を行いました。

経緯としては、
ノートパソコンに、仮想マシンがあり、それをデスクトップパソコンで操作したいと考えました。
ノートパソコンより、デスクトップの広い画面、快適なキーボードで使いたいですから。

これを行うには、VNC、リモートデスクトップ、仮想マシンの共有という、いくつかの方法があります。
これまで、VNCを使ってきました。
仮想マシンは、linux系のため、仮想マシン内にサーバーを動かす設定にしていました。
他の方法としては、VMwareの機能を使う方法もありますが、試してみて、こちらに落ち着いていました。
デスクトップと、ノートパソコン内にある仮想マシンとの間でのクリップボードの共有もでき、それなりに快適です。
ただし、若干、反応が遅れること。
この点に、少々、不満を感じて、仮想マシンの共有を試すことにしました。

少々、苦労しながら、仮想マシンの共有はできました

問題は、クリップボードの共有ができないことです。
デスクトップと、ノートパソコン内にある仮想マシンとの間でのクリップボードの共有ができないのであれば、不満ながらも仕方ないと思えるのですが、ノートパソコンのホストOSとの間で共有ができなくなりました。

インターネットで調べ、.vmxに設定を書き込む方法も試しましたがだめでした。

解決策は、Workstationを起動し、仮想マシンを開くという手順ではなく、仮想マシンの.vmxをダブルクリックで開いて、Workstationを起動することでした。
これは、試して、そうなったというだけで、公式な方法ではないと思います。
この手順では、仮想マシンが、共有設定による制約を受けることなく、起動するのだと思います。




蛇足

ESXiなら、仮想マシンとホストの間でのクリップボードの共有ができるのですから、Workstationでもできそうに思いますができませんでした。


今回の目的なら、正攻法は、ノートパソコンに、拡張ドックを繋ぎ、ここにモニタとキーボード、マウスを繋ぐことです。
これは快適ですが、ノートパソコン用の拡張キーボード、デスクトップ用のキーボードと2つのキーボードが机の上に並ぶことになり、これは混乱を招きました。
「心地よく打てるキーボードを使いたい」という妙なこだわりがなければ、キーボードはひとつでよく、問題なかったのですが(笑)
もっとも、ノートパソコンのキーボードを使うと、メイン画面がノートパソコンの画面になり、大きな画面(セカンドモニタ)で作業するのが、少々、辛くなります。

2017年2月5日日曜日

Aurelia 学ぶ 3

Aurelia(アウレリア)の勉強を始めました。
http://aurelia.io/

チュートリアル
http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/contact-manager-tutorial/1

前回のつづき

ファイルをダウンロードする。
web-api.js
utility.js
style.css

これらを、プロジェクトのsrcフォルダにコピーする。


app.jsを修正。
   
export class App {
  configureRouter(config, router){
    config.title = 'Contacts';
    config.map([
      { route: '',              moduleId: 'no-selection',   title: 'Select'},
      { route: 'contacts/:id',  moduleId: 'contact-detail', name:'contacts' }
    ]);

    this.router = router;
  }
}

ルーティングの設定
ルーティングは、アクセスするURLと、呼び出されるリソースや処理を関連づけること。

route: '', moduleId: 'no-selection'の部分は、ルートが、no-selectionに関連付けられる。


app.html
   
<template>
  <require from="bootstrap/css/bootstrap.css"></require>
  <require from="./styles.css"></require>

  <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">
        <i class="fa fa-user"></i>
        <span>Contacts</span>
      </a>
    </div>
  </nav>

  <div class="container">
    <div class="row">
      <div class="col-md-4">Contact List Placeholder</div>
      <router-view class="col-md-8"></router-view>
    </div>
  </div>
</template>


router-viewの部分に表示する内容を設定していく。

その前に、このプロジェクトでは、Bootstrapを使う。好みのフレームワークを使うこともできる。

bootstrapのインストール
$ npm install bootstrap --save

warningが出た。
fsevents関係に問題があるらしい。
とりあえず、問題は先送り。

bootstrapは、jQueryが必要なので、インストール
$ npm install jquery@^2.2.4 --save

--save付きでインストールしたため、Node.js用の設定ファイルには設定が保存されるが、aureliaの設定には保存されないため、手動で修正する。


aurelia_projectフォルダのaurelia.jsonファイルを開く。

3rd partyのライブラリに関しては、vendor-bundle.jsに記述する。
ここに、jQueryと、bootstrapの設定を記述する。

"dependencies": [
  ...
  "jquery",
  {
    "name": "bootstrap",
    "path": "../node_modules/bootstrap/dist",
    "main": "js/bootstrap.min",
    "deps": ["jquery"],
    "exports": "$",
    "resources": [
      "css/bootstrap.css"
    ]
  },
  ...
]


ルーティングのモジュールを作成する
srcフォルダ内にファイルを作成。

export class NoSelection {
  constructor() {
    this.message = "Please Select a Contact.";
  }
}

no-selection.html

<template>
  <div class="no-selection text-center">
    <h2>${message}</h2>
  </div>
</template>


先の
route: '', moduleId: 'no-selection'
の、no-selectionが、この部分に対応する。

ここまでで、
index.htmlの<body aurelia-app="main">の部分に、app.htmlが表示される。
app.htmlの<router-view>の部分に、no-selection.htmlが表示される。

とりあえず、router-viewは、configureRouterを使う場合の、デフォルトのタグと考えておく。


これで、右側に、Please Select a Contact.と表示されました。
まだ、繋がりが、ぼんやりとしか見えていませんが、つづく。

VMware Worksataion 共有

VMware Worksataion の仮想マシンの共有を使ってみました。

以前も使ったことがあるため、甘く見ていました。
苦労しました。

設定は、簡単。
共有する仮想マシンで。
[VM][管理][共有]

指示に従うと、仮想マシンが共有フォルダに移動して設定終了。

別のパソコンで、「リモートサーバに接続」
仮想マシンのあるパソコン名と、ユーザー名、パスワードを入力。
これで、仮想マシンのリストに、先に設定した仮想マシンが表示されるので選択する。
仮想マシンを起動。

これで終わり。
注意点としては、パスワードは、ローカルのパスワードではなく、マイクロソフトのパスワードを使う場合があることだけです。

実際に行うと、仮想マシンの起動時に

「MKSに接続できません login (username/password) incorrect」

と表示され、画面が表示されませんでした。

まずは、既知の問題。

家のネットワークでは、ホスト名を入力しても、別のパソコンに繋がりません。
IPアドレスを指定して接続していました。
これが問題になっている可能性を考えて、対応しました。
まず、ルーターに、名前解決のルールを設定。MACアドレスと、IPアドレスの関連を設定しました。実際には、既に、設定済みでした。
これで、それぞれのパソコンは、いつも、同じIPアドレスが割り当てられます。

次に、hostsファイルに、IPアドレスと、パソコンの名前を記述しました。
これを、クライアント、サーバ、双方に行いました。
これで、パソコン名を使って、サーバーに接続できるようになりました。

しかし、問題は解決しませんでした。

セキュリティソフトのESETを使っているため、このファイヤーウォールを一時的に無効にしましたが、改善しませんでした。

こちらの情報を元にして、設定を行いました。
https://communities.vmware.com/message/2628616#2628616

C:\ProgramData\VMware\VMware Workstation\config.iniのauthd.client.port = "903"を902に変更する。

これを、双方に行い、解決しました。

次にファイヤーウォールを有効にしました。
今度は、サーバーへの接続自体ができなくなっていました。

ファイヤーウォールで、ポートの開放を設定してみましたが、だめでした。

結論としては、ファイヤーウォールの設定は関係がなく、両方のパソコンを再起動して、動きました。
おそらく、ESETの学習機能のようなものが、私の期待に反した動作をしただけでしょう。
ポートの開放は不要でした。

私のトラブルでは、903を902にすることで解決したのだと思います。






2017年2月4日土曜日

Aurelia 学ぶ 2

Aurelia(アウレリア)の勉強を始めました。
http://aurelia.io/

チュートリアル
http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/contact-manager-tutorial/1

必要なもの
NodeJS ver4以上
Git

インストール
$ npm install aurelia-cli -g

プロジェクトの作成
適当なフォルダで、
$ au new

プロジェクト名:Contacts
後は、デフォルトで。

$ au run --watch

ブラウザで、http://localhost:9000/
"Hello world!"が表示される。

書き残していたメモを、うっかり消したため、今日は、ここまで。
つづく。

2017年2月3日金曜日

Atok 2017 買って良かった

Atok 2017が発売されました。
予約していたので、本日、到着。
早速、インストールしました。


ジャストシステム ATOK 2017 for Windows ベーシック 通常版

これまでは、2015を使っていて、2年ぶりの更新です。
どう変わったのか調べてみました。

まず、Cortanaで、日本語入力できました。
Cortanaを使っていないため、いつからできるようになっていたのか知りませんが、これは、Windowsタブレットを使うときには役立ちそうです。

と思いましたが、できなくなりました。
Cortanaで日本語入力ができる状態では、OneNoteで右クリックメニューを表示させると、とても遅くなります。
これを改善するには、ATOKの設定で「テキストサービス」を無効します。
しかし、無効にすると、Cortanaで日本語入力ができません。
この問題の根本は、デスクトップ版のOneNoteにあるので、マイクロソフトになんとかしてもらいたいです。


以前からあった機能かもしれませんが、
「イミクル」の機能は便利です。
単語を範囲指定して、CTRLを2回押せば、その単語の意味を辞書で調べて表示してくれます。
これで、文章の入力だけでなく、文書を読むときにも活躍してくれそうです。

日本語を入力するつもりで、誤ってアルファベットを入力したとき、Shift+変換キーで、遡って、変換してくれます。
私は、英語キーボードを使っているため、Shitf+Insで使えるようカスタマイズしました。
この機能は活躍しそうです。

ただ、少し、気になるのは、この機能が実装できるということは、入力した全ての文字が、Atokには分かっているということです。
パスワードなど、本来、知られてはならないものも、Atokには把握されてしまいそうです。
これは、JustSystemを信用するしかありません。
むしろ、この機能を実装できるOSの仕組みの方が不安です。
キーロガーに頼らずに、ユーザーが入力した文字を取得できるソフトが作れるのではないでしょうか。
もっとも、こうした問題は、googleなどでもあり、気にしたらきりがなく、不安なら、linuxを使うしかなさそうです。


Atok 2017、買って良かった。

linux mint 日本語サイト 復活

しばらく、「linux mint 日本語サイト」にアクセスできない状態でしたが、今日は繋がるようになりました。

OSのアップデートの一部ができず、気づいたことでしたが、復活して良かったです。
ただし、サイトダウン前と変わらず、「署名にSHA1を使用している」というエラーが出ています。

クラッカーに不正アクセスされたのか不安が残ります。

Aurelia 学ぶ 1

Aurelia(アウレリア)の勉強を始めました。
http://aurelia.io/

Angularと、どちらにするかで悩みましたが、まずは、モダンな方(Aurelia)を勉強して、だめなら、保守的な選択(Angular)をすれば良いと考えてのことです。

また、JavaScriptを知っているといっても、これからは、新しい記述方法に移行していく必要があります。
TypeScriptと、ES6の選択でも悩みました。
型で制約を受けるというだけでも、TypeScriptの方が魅力的ですが、ES6を知らずに、TypeScriptを学んでも意味が無いと思い、ES6を選択しました。

勉強のスタートは、本家のHPが一番です。
本や、日本語の紹介サイトでは、雰囲気は学べますが、既に、古い情報になっていることが多く、本家が間違いありません。

まずは、<Get Started>を学びます。

適当(ここでは、ある意味、手抜き)に読んでいるため、間違いがあるかもしれません。間違いがあれば、コメントいただけると助かります。


最初の一歩は、ダウンロード。

基本的なプロジェクトをダウンロードし、プロジェクトフォルダに展開します。

ルートに、index.html、jsconfig.json。
scriptsフォルダに、スクリプトファイル。
srcフォルダに、プログラムファイル。

が配置されています。
最初は、srcフォルダは、空です。

firefoxで、index.htmlを表示させましたが、白紙でした。


環境の設定
index.htmlファイル内のスクリプトを修正することで、TypeScriptと、ES6のどちらにするかを決めるようです。
ES6を使うので、
<script src="scripts/config-typescript.js"></script>

<script src="scripts/config-esnext.js"></script>
にします。

index.html

<!DOCTYPE html>
<html>
  <head>
    <title>Aurelia</title>
  </head>
  <body aurelia-app="src/main">
    <script src="scripts/system.js"></script>
    <script src="scripts/config-esnext.js"></script>
    <script src="scripts/aurelia-core.min.js"></script>
    <script>
      System.import('aurelia-bootstrapper');
    </script>
  </body>
</html>



プログラムを記述

srcフォルダに、次の4つのファイルを作ります。

todo.js
保存データのモデルです。

export class Todo {
  constructor(description) {
    this.description = description;
    this.done = false;
  }
}

app.js
アプリケーションのモデルです。

   
import {Todo} from './todo';
export class App {
  constructor() {
    this.heading = "Todos";
    this.todos = [];
    this.todoDescription = '';
  }
  addTodo() {
    if (this.todoDescription) {
      this.todos.push(new Todo(this.todoDescription));
      this.todoDescription = '';
    }
  }
  removeTodo(todo) {
    let index = this.todos.indexOf(todo);
    if (index !== -1) {
      this.todos.splice(index, 1);
    }
  }
}

app.html
アプリケーションのビューです。

<template>
  <h1>${heading}</h1>
</template>


main.js
最初に呼ばれるところ。
   
export function configure(aurelia) {
  aurelia.use.basicConfiguration();
  aurelia.start().then(() => aurelia.setRoot());
}


これで、firefoxのブラウザに、「Todos」と表示されます。


詳細に見ていくと、
index.htmlの<body aurelia-app="src/main">タグの部分に、プログラムの内容が表示されます。
タグに、aurelia-app属性を付けると、そこに表示されるようです。
これなら、Webの機能を分割して、配置したり、取り除いたりすることが、簡単にできそうです。

"src/main"のため、main.jsが呼び出される。

app.jsは、どこで呼ばれるのでしょう。別の名前に変更できるのでしょうか。
この点は、不明です。
とりあえず、今は、暗黙の内に、app.jsが呼ばれると考えておきます。

app.jsと、app.htmlは、自動的に、密接に結びつけられるようです。

htmlに、${heading}と記述すれば、ここに、Appクラスのheadingプロパティが表示されます。


firefoxで、index.htmlファイルを表示させましたが、Webサーバーを使って表示させる方法もあります。

その場合、NodeJSがインストールされていれば、次のコマンドで、Webサーバーがインストールされます。
$ npm install http-server -g

実行は、プロジェクトのフォルダで、
$ http-server -o -c-1

これで、ブラウザが自動的に起動し、プログラムが表示されます。
終了するには、ターミナルで、Ctrlを押しながら、cを押します。(Ctrl+c)

2017年2月2日木曜日

Docker

下記の本を読んで、Dockerを学んでいました。


送料無料/Docker/AdrianMouat/玉川竜司

現在、仮想化技術(VM)により、仮想OSをインストールして使っています。
具体的には、ThinkPadのWindows10に、VMware Workstationをインストールし、そこで、仮想OSとして、ubuntuを構築し、その中で開発しています。
また、サーバーは、VPSを使っています。

”これが、Dockerのコンテナ技術に置き換わるかもしれない。”

読み始めの頃は、そう思い、期待していました。
VMを使っている理由は、
・可搬性
・セキュリティ
です。

ThinkPadが壊れても、仮想OSのバックアップを持っていれば、それを、レッツノートにコピーして、すぐに動かすことができます。
VPSの方は、そこまで簡単ではありませんが、お金があるなら、同じようなことも可能です。

似たような利便性が、Dockerにはあり、仮想OSほど、大規模でない点が気に入りました。
ホームページを公開する場合

・単なる自分の紹介(htmlファイルのみ)
 これならば、レンタルサーバーに、ファイルをコピーするだけです。

もう少し、複雑なサイト。
・会員制のサイト(htmlと、php)
 これなら、少し高価なphpが動くレンタルサーバーにファイルをコピーするのが簡単です。
しかし、phpのプログラムを使うため、レンタルサーバーによっては動かないという事態が発生することがあります。
 原因は、phpや、ライブラリのバージョンの違いなどによるものです。

この問題を解決するため、OSを丸ごと借りるVPSへ移行してきました。
他の手段としては、クラウドサービスで、機能毎に借りて構築するという手段もありますが、費用と手間を考えて、VPSにしています。

VPSを使っていて感じるのは、「OSの管理まではやりたくないのだけど」という思いです。
PHPやライブラリのバージョン管理だけで済めば良いのにと思いますが、そうなると、クラウドサービスを使うことになり、これは、これで、別の管理が必要になります。

Dockerなら、レンタルサーバーと、VPSの中間に位置づけられるように思い、期待して、本を読んでいました。

この点は、やや思い違いのようでした。

私の想像では、Webサーバー(Node.js)と、作成したプログラムがパッケージされたものを、サーバーに公開するというものでした。
そうしたものではないようです。

Dockerで、結果的に同じにするなら、公開サーバー内で、Webサーバー(Node.js)と、作成したプログラムを、再構築するようです。

結果的に同じになるなら悪くはないのですが、再構築させるための手続き記述しなければならないことを考えると、その手間が余計です。

もっとも、今でも、サーバーの構築時は、その手順を書き留めながら行い、再構築時は、その手順を読みながら進めますから、それが、マニュアル化され、コマンド1つで実行できるとなれば、便利ではあります。
しかし、これは、何度も構築するような場合にメリットがあり、ほぼ、1回の構築しか行わないのであれば、手間が増えるだけになってしまいます。

結局、今回は、Dockerを使うことはやめました。
しかし、Dockerには期待しています。
例えば、Node.js、Angular、MongoDBを組み合わせた環境を、楽に用意したいという要望には使えます。
問題は、用意された環境が、どのくらい実用的かは、調べてみなければ分からない点で、事実上の標準ができるまでは、本格的には使いにくいです。

時間が問題を解決してくれるまで待ちます。


次回は、Aureliaについての予定。

2017年2月1日水曜日

Node.js インストール

OSは、Ubuntu 16.04 64ビット。
これに、Node.jsをインストールしました。

インストール方法は、いくつかあるようです。
aptで入れるのが、簡単そうでしたが、コマンド名が変わってしまうらしいことと、今回は、勉強の意味合いが強いことから、nvmを使って、インストールしました。

gitのインストール
$ sudo apt install build-essential libssl-dev
$ sudo apt install git


nvmのインストール
$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
バージョンを確認
$ nvm --version

このままでは、次回のOSの起動時には、nvmは利用できません。
次回も利用できるよう設定することを検討しましたが、結局、nvmは、1度、使えば、後で使うことがないため、そのままにしました。

参考までに、起動時に利用できるように、下記のコマンドを使ってみましたが、効果がありませんでした。
$ echo "source ~/.nvm/nvm.sh" >> ~/.profile


Node.jsのインストール
インストール可能なバージョンを調べる。
$ nvm ls-remote

node.jsのインストール
$ nvm install 6.9.4

確認
$ node -v


まとめると、たった、これだけのことですが、方法がいくつもあるため、いろいろ試行錯誤しました。


次回は、少し寄り道して、Dockerについて書く予定。

2017年1月31日火曜日

Angular Full-Stack Generator 挫折

The Angular Full-Stack Generator に挑戦しましたが、挫折しました。

そもそもの経緯。

元々、最初の頃のWebサービスでは、サーバー側に、Javaサーブレット。クライアント側に、Javaアプレットというシステムを作っていたことがあります。
両者間では、当時、xmlはあっても、JSONがなかったこともあり、独自の通信規格を作って繋いでいました。

それから、今も主流の、PHP+JavaScriptに移りました。

最近では、サーバー側もJavaScriptで作るのが流行のようです。

そこで、遅まきながら、挑戦しようと思いました。

データベースに、MongoDB。
サーバーに、Node.js。
クライアント側には、何かフレームワーク。

この構成で、簡単に作ることができないかと調べたところ、Angular Full-Stack Generatorが良いらしいと知り、試してみました。

思えば、元々、Javaで行っていたことを、JavaScriptで行うような構成です。
なんとかなるさと思ったのですが。

まず、Node.jsの勉強。npmでの管理方法。
他に、MongoDB、Express、Angular(Augular2)を、一通り、調べた後、Angular Full-Stack Generatorを試してみました。

確かに、簡単に、かっこいいサービスのひな形は動きました。
しかし、構築中に、エラーが発生しているのが気になりました。

どうすれば、このエラーを回避できるの?
機能を修正、拡張するには、どう手を加えれば良いの?
デバッグは、どうするの?

Node.jsからの一連のプログラムは使ったことがない初心者には無理でした。
開発元のHPを見ても、動かすところまでの情報しか分かりません。

結局、こうしたパッケージは、個別のプログラムやツールを分かっている人が、楽に開発するための物だと理解しました。
初心者は、個別に理解して、積み上げていく方が早そうです。

急がば回れ


次は、Node.jsについて書く予定。

Ubuntu 16.04に、OKIのプリンタを利用する

Ubuntu 16.04に、OKIのプリンタC310dnを繋ぎました。

設定から、プリンタを選び、ダイアログを表示しました。
<追加>をクリック。
ネットワークプリンタを選択し、C310dnを選び、次に進みました。
ここで、OKIから、C310dnを選択して、設定を終えました。

簡単ですね。

ただし、デフォルトでは、モノクロ印刷になるらしく、カラーの設定に変更しました。
また、テストプリントでは、左側が切れているように見えましたが、テスト印刷の見本を知らないため、そうしたデザインなのか、ずれているのか分かりません。

トナーの残量なども分かるようで、linuxでのプリンタの利用も簡単になったものだと感慨深いです。

2017年1月22日日曜日

ESET Internet Security を導入

これまで、ESET Internet Security を、VMware内の仮想マシンにインストールしていましたが、ホストマシンにも導入しました

PC Watchや日経トレンディを見ているときに、詐欺サイトに飛ばされそうになったからです。
幸いFirefoxが事前に警告を出して、詐欺サイトは表示されませんでしたが、信用できそうなサイトを見ていながら、詐欺サイトに飛ばされるのは不安でした。

ホストマシンは、Windows10であり、デフォルトでウィルス対策ソフトは入っていますが、念のため、こちらを導入しました。

なぜか、インストール時のダウンロードに失敗したのが、余計に不安をかき立てました。
インストール後、最新のバージョンではなく、ひとつ前のバージョン(9)がインストールされました。
ますます、不安になりました。
とりあえず、ホームページから、最新のソフトをダウンロードし、バージョン9をアンインストールしてから、最新のバージョン10をインストールしました。
これで、無事に、インストールは完了しました。

設定では、仮想マシンのイメージのあるフォルダを、監視対象から除外しました。
他にも、設定が必要かもしれませんが、気づいたときに、設定していくつもりです。

最初に、このツールの売りでもある、ルーターの検査(ホームネットワーク保護)を行ってみました。
脆弱性が見つかりましたが、どんな脆弱性なのか、どう対応したら良いのか分からず、困惑しているところです。

とりあえず、ルーターのファームウェアを最新に更新して、再度、チェックしてみましたが、変わりありませんでした。
ルーターは、NECのAterm WG1200HPを使っていますが、チェックを行うと、その後、ルーターの管理ができなくなりました。
「電源を入れ直してください」と、表示されたため、指示に従い、ルーターを再起動しました。
何度か、行ってみて、気づきましたが、再起動しなくても、しばらく待つと、管理画面に入ることができるようです。

ルーター側で、このソフトのチェックは悪質なアクセスと判断し、一時的に、制限を掛けているのかもしれません。

セキュリティと利便性は、相反するため、しばらくは、ESETと格闘することになりそうです。

2017年1月16日月曜日

Ubuntu 16.04 ソフトウェアの更新で壊れる

前回の続き

Ubuntu 16.04 ソフトウェアの更新で壊れる

VMware上に、Ubuntu 16.04を構築しています。

ソフトウェアの更新を実行すると、確認に失敗し、ファイルシステムが、読み込みモードになるトラブルが発生しました。
再起動すると、BusyBox画面が表示され、fsckを実行するように勧められました。
しかし、fsckを実行しても、その後、ソフトウェアの更新は、正常に動かず、途中で停止しました。ファイルシステムは、読み込みモードになりました。

スナップショットを取っていたので、元に戻し、
sudo apt update
sudo apt upgrade
で、更新を行うと正常に終了しました。
しかし、何もせず、しばらくすると、ファイルシステムが、読み込みモードになりました。

ファイルシステムに深刻な問題が発生していると考え、シングルユーザーモードで、fsckを実行しましたが、改善しませんでした。

リカバリーモードで、fsckを実行することで、解決したようにみえます。
まず、shiftを押しながら起動して、ブートメニューから、リカバリーモード(recovery mode)を起動しました。
fsckを選び、処理が止まったら、Enterで、メニューに復帰しました。
次に、rootを選択して、OSを起動し、シャットダウンしました。
再起動すると、fsckが実行されたようです。
その後は、今のところ、正常に動いているようにみえます。

参考までに、
sudo touch /forcefsck
コマンドで、再起動時に、fsckが実行されるようですが、これでは改善しませんでした。

Ubuntu 16.04 ソフトウェアの更新で壊れる

VMware上に、Ubuntu 16.04を構築しています。

ソフトウェアの更新を実行すると、インストールのグラフ表示がされず、終了します。
仕方なく、放置すると、次の起動時に、BusyBox画面が表示され、正常に起動しません。

幸い、11日に、仮想マシン(Ubuntu)をバックアップしていたため、元に戻して解決しました。

再び、ソフトウェアの更新を実行すると、同じ状態になりました。
今度は、スナップショットを取っていたため、元の状態に戻しました。

BusyBox画面で、
fsck /dev/sda1
を実行すると、OSは起動します。
しかし、ソフトウェアの更新を実行すると、phpのインストール中に固まります。

再び、スナップショットで元に戻しました。
今度は、
$sudo touch /forcefsck
再起動の後、ファイルシステムがチェックされたはずです。
シャットダウンし、スナップショットを作成。

ソフトウェアの更新を実行すると、また、同じ状態になりました。

スナップショットで元に戻しました。
sudo apt update
sudo apt upgrade
で、更新を行いました。

この状態のスナップショットを作成。

再び、ソフトウェアの更新を行うと、また、同じ状態になりました。
スナップショットで復帰。

ソフトウェアの更新では、確認できないというメッセージが表示されます。
この状態になると、ファイルシステムが、読み込みモードになり、書き込みできなくなります。

しばらくは、こまめにスナップショットを取り、「ソフトウェアの更新」は起動しないようにしようと思います。
起動するだけで、ファイルシステムが破壊されますから。
また、「ソフトウェアの更新」だけでなく、システムの確認も行わないようにしないと、同じトラブルが発生します。

<追加>
結局、ソフトウェアの更新に関係なく、ファイルシステムが読み込みモードになるトラブルのようです。
原因は調査中。

2017年1月15日日曜日

Macbook air 2013 落ちる

最近、Macbook air 2013が落ちます。
バッテリー残量が、30%くらいになると、使っている間に切れます。
バッテリーが減っているのが原因のようです。

しかし、正常なら、30%も残っているなら問題なく動くはずなのですが。
macの情報を見ましたが、バッテリーの情報は、正常とありました。

この症状、先月、バッテリーを交換した、iPhone6sと同じです。

さて、バッテリの寿命なのが、製品の欠陥なのか、どうなのでしょうか。

2017年1月13日金曜日

ESET セキュリティ thunderbirdが速くなった


ESET ファミリー セキュリティ 3年間更新費 / 販売元:キヤノンITソリューションズ株式会社


メールソフトは、Thunderbirdを使っています。
ESET ファミリーセキュリティをインストールしてから、メールの受信が速くなりました。

導入前は、迷惑メールが30通もあると、受信完了までに、1分近く待たされる感じでしたが、導入後は、すぐに受信が完了します。

ESETのマルウェア、ウィルス対策の隔離が、どのようになっているのか分かりませんが、今のところ、快適です。

2017年1月11日水曜日

ESET セキュリティ メール受信の問題


【更新版】ESET ファミリー セキュリティ 3年更新版【5台用:ダウンロード版】(セキュリティソフト)

メールソフトは、Thunderbirdを使っています。
ESET ファミリーセキュリティをインストールしてから、メールチェックの際に、証明書の確認ダイアログが表示されるようになりました。
毎回、ダイアログに応えるのは面倒なため、ダイアログを表示しないように設定しました。

根本的な原因は、メールサーバーの証明書が、メールのドメイン名と一致していないことです。レンタルサーバーを利用している関係で、ここは、対策のとりようがありません。
セキュリティソフトの設定を変更することにしました。

下記の情報を参考に
http://eset-support.canon-its.jp/faq/show/4584

「設定」「Webとメール」を開き、「SSL/TLS」の項目を展開しました。
「SSL/TLSプロトコルフィルタリングモード」を、対話モードに変更しました。

この後、Thunderbirdを起動すると、ESETの「暗号化ネットワークトラフィック」のダイアログが表示されました。
ここで、「この証明書のアクションを記憶する」を選び、「無視」をクリックしました。
設定しても、一度は、Thunderbirdのダイアログが表示されるようです。

再起動後、無事に、Thunderbirdのダイアログが表示されないことを確認したら、「SSL/TLSプロトコルフィルタリングモード」を、「ルール付き自動モード」に戻しました。

セキュリティを強化すると、手間が増えるのは仕方のないことです。

2017年1月10日火曜日

ESET ファミリー セキュリティ

ESET ファミリー セキュリティ を購入しました。
購入したのは、3年更新版です。


キヤノン ESET ファミリー セキュリティ 3年版 2785V39901 1本 【送料無料】

知人から、「ファミリー版なら、パソコン、アンドロイド、合わせて、5台まで、3年間利用できて、お得だよ」と言われ購入しました。 現在、価格や、パッケージのラインナップが変わり、昨年末のお買い得感はなくなっているようですが、今後は、在庫が減り、さらに、値上がりが予想されるため、今のうちにと購入しました。

 以前、ESETを使っていましたが、マイクロソフトのセキュリティソフトが無料だったため、更新せずにいた経緯があります。 使っていたときの印象では、ウィルス対策により、パソコンの動作が遅く感じることもなく、快適だった記憶があります。

今回、購入したのは、今年になり、迷惑メールが急増していることに、不安を感じたからです。 Microsoft Security Essentialsでも問題はないと思いますが、仕事に使っているものに関しては、より安心を求めて、セキュリティソフトの導入を決意しました。

インストールに際しては、Microsoft Security Essentialsのアンインストールが求められました。
インストール後の印象は、パソコンの動作が遅く感じることもなく、何事もないように感じます。
アンチウィルスソフトのお世話にならないことが、一番ですが、万が一の場合には、期待しています。

2017年1月2日月曜日

JavaScriptを勉強中

正月休みを利用して、JavaScriptを勉強中です。
読んでいるのは、「JavaScript本格入門改訂新版」です。


JavaScript本格入門改訂新版 [ 山田祥寛 ]

JavaScriptの記述方法は進化しています。
以前、当たり前に使っていたテクニックが不要になっていたり、非推奨になっていたりして、勉強し続ける大切さを実感しています。

例えば、現在、プログラムの実行は、下記のようなコードを使っています。

(function(){
  function init(){
 //ここに記述
    window.alert("ab");
  }

    window.addEventListener("load", init, false);
})();

今後は、下記のコードに変更しようと思います。
名前空間に関しての対応は、ライブラリ内で解決するつもりです。

document.addEventListener('DOMContentLoaded', function() {
  本体の実行
}, false);

2つの大きな違いは、イベントの発生のタイミングで、DOMContentLoadedは、画像以外のコンテンツのロードが終わった時点で、発火されます。
loadより、早い段階で実行されるため良さそうです。
逆に、画像に対して、何かを行う場合は気をつけなければなりません。

JavaScriptの新しい仕様に関しては、classが便利そうです。
C++から、オブジェクト指向を学んだ身としては、classの仕様は、なじみやすいです。
早く、古いブラウザがなくなってくれないかと思います(笑)