2017年2月5日日曜日

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について書く予定。