「Windows」カテゴリーアーカイブ

WSLにGUIを実装してみた

WSLとはWindows Sub system for Linux、つまり、Windowsで動かすことができるLinux実行環境です。

目的はgitをWSLで使いたいけどGUIがいいから使えるようにしたい、と言うことです。

基本的には、こちらに書かれている通りです。

https://qiita.com/MERIK/items/ef4ecf7a51f89c403e94

xfce4をインストールします。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xfce4-terminal
sudo apt-get install xfce4

日本語フォントをインストールします。

sudo apt install fonts-takao

環境設定します。.bashrcに記載します。

export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=1

記載したらsource .bashrcで反映させる

VcXsrvを入れる。

https://sourceforge.net/projects/vcxsrv/

VcXsrvを起動。One Window’を選択し、Display numberは0とする。

WSLからstartxfce4を実行。

これでWindowが表示されます。

ブラウザが入っていないのでFireFoxをインストール

ブラウザからSmartGitをダウンロード

dpkg -iでdebパッケージをインストール

次に日本語が入力できるようにします。

https://mongonta.blog.fc2.com/blog-entry-239.html

mozcとfcitxをインストール

$ sudo apt -y install fcitx-mozc dbus-x11 x11-xserver-utils
$ cat << EOS >> .profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export DefaultIMModule=fcitx
xset -r 49 # 半角全角点滅防止
EOS
$ source .profile

fcitxを実行し、mozcを入力メソッドに設定する

あとは日本語フォントをインストールすればOKだと思う。

WINDOWS PCを分解するのです!(パーツ売却編)

HDDの消去に丸一日かかりました。

でもこれで準備は万端。

PCを分解する!

 

ケースを開けて、

各パーツをマザーボードから外していきました。

外したパーツはこちら

で、肝心なのは

これらがいくらで売れるか。

サクッとオンラインで型番を入力して

査定してみました。

参考にしたのはドスパラのサイトです。

 

結果、まともに売れるのは

CPUだけ

と言う結果になりました。

ちなみに、マザーと電源ユニットは

すでに壊れているので、

廃棄する予定です。

 

ちなみにCPUはオークションで売りました。

オークションはすでに落札されています。

 

最後まで読んで頂き、ありがとうございました。

(゚゚)(。。)ペコッ

iMacにWindows10を入れてみた!

オイラはメインPCにWindows10を使っているのですが、

購入したのはもう6年以上も前の話で、

CPUはCore i7(第三世代)、メモリは8GB。

HDDなどのパーツの増設を繰り返して使っていたのですが、

もうハード的にもガタがきていて、

先日もLANポートが壊れました。

 

で、なんとかならないかなーと思っていたら、

目の前にiMacがあるじゃないですか!

iMac(2015)なので、CPUはCore i5(第五世代)、メモリ8GB。

bootcampというものを使えば、

MacとWindowsの共存ができるらしい。

 

Macを消したくない、共存させる理由は、

iMovieが無料のくせに優秀過ぎるためです。

ちょっとした編集だったら、

これだけで十分事足りるのです。

全体的にMacのAppStoreは無料でも良いアプリが多いですね。

お金をかければもっと性能の良いアプリも手に入ります。

まさしく、クリエイター向けのPCですね。

職人は道具が無ければ技術を生かせません。

なので、腕の良い職人は、道具を選びます。

 

で、MacにWindowsを入れてみた結果。

 

なんか動作がおかしい。

 

HDDの容量が少ないのかな?

一般的にMacは要求されるスペックは

満たしているはずなんだけど。

 

相性の問題なのだろうか?

ハード的に劣化しているのだろうか?

 

まぁ、このままじゃ使いものにならないので、

元に戻そうと思ったのですが、

元に戻す手順を間違えて、

今、購入時状態に戻った状態です。

 

いやー余計な事するんじゃ無かった。

 

いっそうのこと、メインPCをMacに移そうか。

 

iMacの外部ディスプレイ出力アダプタも買ってしまったし。

うん、その方向で考えよう。

 

最後まで読んで頂き、ありがとうございました。

(゚゚)(。。)ペコッ

 

WPFでMVVMプログラミング 第四回

●DIコンテナー

プロジェクトを作成していると、

たくさんViewができると思います。

ということは、少なくとも同じ数以上の

ViewModelが出来上がるはずです。

 

ここで発生する問題は、

ViewModel間でデータの連係をどうするか

というのが出てくると思います。

 

方法は二つあります。

一つは、シングルトンで作成した一つのオブジェクトを

複数のViewModelで使用する。

もう一つは、イベントでデータを飛ばす方法です。

ここでは、前者の方について説明します。

 

例えば、こんなクラスを作成したとします。

これをシングルトンでオブジェクトを作成するには、

Bootstrappersクラスにて

ConfigureContainerをオーバーライドし、

Containerに登録します。

ContainerはBootstrappersクラスのプロパティで、

何もしなくても存在しているシングルトンのオブジェクトです。

これにインスタンスを登録すれば、

ViewModel生成時に引数で受け取る事ができます。

RegisterType<>にインスタンス化するクラスと

それを取り出すためのインターフェースを登録します。

 

そうするとこんな感じに書けます。

こうすればPrismライブラリが、

View生成と同時にViewModelもインスタンス化し、

Containerに登録したオブジェクトも引数に入ります。

 

WPFでMVVMプログラミング 第三回

では、今回は、

Prismテンプレートで作成したプロジェクトについて

解説したいと思います。

 

まず、通常は見ることがない、

  • Bootstrapper.cs
  • MainWindow.xaml
  • MainWindowViweModel.cs

ですね。

まず、Bootstrapper.csでは、

ソリューションで使用するシングルトンを定義したり、

モジュールの設定などを記載します。

この辺りは、また後で詳しく解説しますね。

で、残りのMainWindow.xamlと

MainWindowViewModel.csですが、

これはそれぞれViewとViewModelです。

 

MainWindow.xamlでViewを定義し、

MainWindowViewModel.csでViewModelのコードを

記載します。

 

ちなみに、ViewとViewModelは命名定義があり、

(つまりは名前を決めるときの決まり事)

Viewsフォルダの中に○○.xamlというViewがあったら、

ViewModelは必ず、

ViewModelsフォルダの中の○○ViewModel.csと対応します。

この名前定義により、

ViewtoViewModelの対応付けがされているのです。

なので、通常は、このルールに従う必要があります。

(違う名前にもできるけど、後々面倒なので)

 

さらに、Viewのコードを見て見ます。

このコードの中にPrismとかTrueとか記載されていますが、

これが、Prismライブラリが有効になっていることを

表しています。

 

つまりは、これがある事で、Viewが生成されると同時に、

ViewModelもPrismによって生成されるのです。

 

なので、ここは絶対に書き換えてはいけません。

 

ちなみに、MainWindow.xaml.csというファイルもありますが、

これに手を入れることはMVVMモデル設計から

逸脱する行為ですので、

MVVMモデルに準拠するのであれば、

ここに手を加えてはいけません。

 

では、次にBootstrapper.csを見て見ます。

Bootstrapper.csではアプリケーションの初期設定を行います。

主に、

  • DIコンテナー
  • モジュール
  • リージョン
  • ベヒイベア

などの設定をここに記載します。

(この辺りについては後述します)

ここでは、

CreateShell()でMainWindowをResolve

(解決→Viewをインスタンス化)し、

InitializeShell()でMainWindowをShow(表示)

しているのがわかると思います。

 

ちなみに、

App.xaml.csを覗いてみると、

bootstreapperをRunしているのがわかると思います。

引数eには、コマンドパラメータが配列で格納され、

bootstreapperの一連の処理を実行しているのが

わかると思います。

 

それでは、次回はDIコンテナーについて解説します。

 

WPFでMVVMプログラミング 第二回

●Prismライブラリ

MVVM設計を容易にするために

Prismというライブラリを

マイクロソフトが公開しています。

 

MVVM設計プログラミングでは必須のライブラリです。

 

ソリューションが複数プロジェクトに分けて

開発を行う場合、

毎回NuGetでインストールするのは非常に面倒です。

なので、Prismテンプレートという物が用意されています。

 

これは便利すぎる。

 

導入方法。

 

Visual Studioを起動して

ツール→拡張機能と更新プログラムを選択し、

Prismテンプレートをインストールする。

 

インストール後に再起動すると

Prismという項目が追加されている。

 

プロジェクトを作成するとこのようなプロジェクト構成になる

 

ということで、

これらの詳細は次回にします。

 

WPFでMVVMプログラミング

この話、ネットでよく調べるんだけど、

いい情報が見つからない。

ならば、自分で書いてしまおうと言うことで。

 

●そもそもWPFとは?

Visual Studioでソリューションを選択するときに

(WPF)って書いてる物があると思います。

このソリューションを作成すると、

○○.xamlというファイルができると思います。

このファイルにHTMLのタグのような感覚で書いていくと、

アプリケーションのユーザーインターフェースが

出来上がります。

 

最近のWindowsアプリはこっちの方がトレンドだそうです。

たとえば、ストアアプリもWPFではないですが、

同じような仕組みが使用されています。

これは、使用しているデバイスによって解像度が異なるので、

どのような解像度でも同じUIが使用できるメリットがあります。

 

●MVVMとは?

例えば、Webアプリのフレームワークで

MVCモデル

(View-Control-Model)

を採用している物と同じように、

アプリケーションを

View-ViewModel-Model

にわけて開発を行うアプリケーション設計です。

これらは疎結合(ゆるーい結合)になりますので、

分担作業が簡単になります。

 

なので、小規模なアプリなら

通常のアプリ設計で問題ありませんが、

企業が開発するような大規模アプリとなると、

作業分担することが前提となりますので、

MVVMモデル設計を採用するケースがおおいのです。

 

それでは、次回はPrismというライブラリを使用した

MVVM設計について説明していきます。

 

WindowsマシンにVNCでリモートアクセスする

外出先でも自宅のPCにアクセスしたい。

しかもGUIで。

そういう思いでいろいろ調べて設定しました。

 

基本的にはVNCというアプリを使用する。

でもVNCは基本的に暗号化はされていないので、

入力した内容がそのまま通信されることになる。

この状態でパスワードなんて入力したら大変だ。

 

それ以前に、ルータの壁をどうやって乗り越えるかが問題になる。

 

そのため、以下の方法を使用する。

  • ルータにSSHのアクセスを自宅PCにポートフォワーディングする
  • SSHをトンネルにして、VNC接続する

 

方法はいろいろあるんだけど、

これが一番現実的でセキュアな方法だと思う。

 

で、以下が実際に設定した内容。

●ルータの設定

変更した内容は以下の通り

  • DMZを有効にする。転送先を自宅PCのローカルIPに設定する
  • ポートフォワーディングを設定する。SSHの接続を自宅PCのローカルIPに設定する。なお、ポート番号は通常は22(変更は可能)

 

●自宅PCの設定

内容は以下の通り

  • SSHサーバを立てる

使用したのはPowerShell Server

http://www.powershellserver.com/download/

設定箇所は二箇所

設定が完了したらSTARTをクリックしてサーバを起動

(使用しないときはSTOPしておいた方が良い)

 

この状態で、リモートPCからSSH接続できることを確認する。

接続先のIPアドレス(外部からアクセスできるルータのIP)は、自宅PCから以下のサイトにアクセスすることでわかる

https://www.akakagemaru.info/port/iphost.php

ログインできれば成功

 

  • VNCサーバを立てる

使用したのはUltraVNC

http://forest.watch.impress.co.jp/library/software/ultravnc/

サーバを立ち上げたらローカルネットワークからVNC接続できることを確認した方が良い。

 

●リモートPCの設定

内容は以下の通り

  • SSH転送の設定

使用したのはTeraterm

https://ja.osdn.net/projects/ttssh2/releases/

設定→SSH転送を選択し、追加をクリック

ローカルのポート番号は任意

リモート側ホストにはルータの外向けIPアドレス、ポート番号はVNCサーバのポート番号(通常は5900)を設定

ルータの外向けIPアドレスに接続し、ログインする

 

  • VNCクライアントの設定

UltraVNCを使用する

接続先はlocalhost、ポート番号はSSH転送のローカルポートに設定した番号

 

ログインできればOK