tohnamanブログ

東村山に生息するWindows好きな太っちょオヤジプログラマのブログ

やらかした!

昨夜、やらかしました!

本当にやらかしました!

嫌って程、やらかしたんです!

 

昨日、家の鍵を失くしました!

いつからか無いのかわからないのです。

 

現在の状況

・昨日乗った電車にはない

・土曜日なので勤務地に連絡できない

・ネカフェからのファミレスで時間を潰している

・眠いし、着替えたい

・鍵屋は2時間後に来る

・いろいろ調べたけど、連絡した鍵屋は大丈夫か?

 

とりあえず、ここに2時間居るのは辛いので、他の場所に放浪します。

 

2018/08/14 追記 

あのあと大変でした

予定より早く10時頃に鍵屋さんが来てくれました。

鍵を確認して頂いたところ、うちの鍵は少しセキュリティが高い鍵のようで、

解錠に16000円かかり、開かない場合、壊しますと。

開けてもらうしかないのでお願いしました。

ドアスコープを外し、鍵外しアイテムを使うが開きません。

ベランダ窓、出窓にチャレンジするものの、

ロックがかかっていて開きません。

再度、玄関の鍵にチャレンジするけど開きません。

鍵破壊を了承し破壊しようとするが、電源コードがとどきません。

鍵屋さんが近所のスーパーで延長コードを買ってきて、鍵破壊を開始

20分くらい格闘した結果、破壊成功!

ほぼ半日ぶりに部屋に入れました!

 

1Kのアパートなのに、鍵屋さんでも開けられないセキュリティ万全な部屋だったことが判明しました!

 

教訓

・鍵は無くすな!

スペアキーは絶対持ち歩け!

・さもないと30000円飛ぶぞ!

 

感想

頑張ってくれたのですが、以下の点が気になりました。

・鍵破壊開始直後、明らかに硬い部分にドリルをあててドリルが折れた。その後、鍵挿入穴にドリルをあてて破壊してたので、ドリル折りはパフォーマンス?

・鍵破壊中、マイナスドライバーでグリグリしてたけど、なぜマイナスドライバー?鍵破壊が日常作業なら専用工具があるのでは?

 

細かいこと他にもありますが、

鍵を無くした自分が悪いのです!

 

鍵は大切にね!

 

Android Emulator との相性・・・

いやー、メインPC と Android Emulator との相性が悪いったらありゃしない!

ことの発端

GW前、Prism for Xamarin.Forms ハンズオンに参加したんです。
当初の目的は、Prism メインでしたが、参加してみたら Xamarin.Forms が良かったので、
Windows10 Mobile も終了したし、Android アプリでも開発しようと思ったのです。

最初の苦難

メインPC の Visual Studio 2017 をXamarinを利用できるようにセットアップし、
ハンズオンで作成したソースコードを取り込み、ビルド、UWPとして起動
ここまでは順調でした!
しかーし!メインPC のCPUは AMD FX-8350 なのです!

どういうこと?

Visual Studioから起動するAndroid Emulator は Intel HAXM を利用したモノなのです!
Intel HAXM は、Intel の CPU機能を利用している為、AMD FX-8350を搭載した、
メインPC にはインストールできません!
そうです!Android Emulatorがインストールできません!
 ハンズオンには、買ったばかりの Surface Pro で参加していたので、
 このことは、全く知りませんでした!

苦難 その2

UWPアプリとして動作させながらXamarin.Formsの学習していましたが、
目的が Android アプリ開発 なので、Android アプリの動作確認がしたいのです!
そこで、他のAndroid Emulatorを探して見つけたのが Genymotion でした
Genymotion は、Oracle VM VirtualBox 上で動作する仮想環境なので、
インストール済みのVirtualBox で Genymotion の動作環境を構築し、
Genymotion からAndroid Emulatorを起動すると、
Visual Studio に起動中の Android Emulator が実行できる状態になりました!

やったー!

Android アプリとして起動すると念願のAndroid Emulatorで動作確認ができました!
おめでとうございます!

しかし

入力した文字を話す機能だけ動作しません!
調査した結果、VirtualBox がGenymotion で動作保証しているバージョンより新しい為、
Emulator 上で音がならないことでした

苦難 その3

先日のBuild 2018で Hyper-V で動作する Android Emulator プレビューの発表がありました
これは、Intel HAXM を使用せず Hyper-V を利用するので VirtualBox も不要です!
なので、メインPCでの利用が可能なハズです。

↓ のサイトを参考にセットアップしていたんですが・・・
Hyper-V Android emulator support | The Visual Studio Blog

どうなった?

Windowsの設定が完了し、Android Emulatorを作成すると・・・
mksdcard.exe がウィルスバスターに駆除されて、作成に失敗しました

現在

失敗した翌日、再チャレンジしたらAndroid Emulatorを作成できました
ウィルスバスターの定義ファイルが更新されたことで、大丈夫になったようです

これから、追加したAndroid Emulatorの動作確認及びデバッグ実施を試す予定です

何か想定外の挙動があった場合は、続報を書きます。

2018/06/27 追記 
Build 2018ので発表したAndroid Emulatorを利用するには、
Visual Studio 15.8 Preview を利用する必要がありました!
ブログの最初に書いているのに読み飛ばしていました。
Visual Studio 15.8 Preview 3 をインストールし、いろいろいろいろ試してみましたが、
結局どれも成功しませんでした。

初心に戻りブログを隅々まで確認すると、コメントに・・・

Hannah Juarez [MSFT]
Hi Himadri! Thanks for trying out the preview. The Windows Hypervisor Platform supports AMD machines. However, the Android Emulator with WHPX is not supported on AMD.

Windows Hypervisor PlatformはAMDマシンをサポートしています。
ただし、WHPXのAndroidエミュレータAMDではサポートされていません。

はい、最初からブログに答えがありました。
ということで、苦難の道は続くよどこまでも・・・

現状で可能なのは、

  • 音を犠牲にして、VirtualBox + Genymotion を利用して開発する
  • 常に実機を利用して開発する
  • 常にSurface ProでIntel HAXMのAndroid Emulatorを利用して開発する

のどれかになります。

結局、解決しませんでした

WHPXのAndroidエミュレータAMDサポートを待ちたいですが、するんだろうか?

2018/07/14 追記
AMD CPUをサポートしたAndroidエミュレータのリリース
android-developers.googleblog.com
の吉報がありましたが、まだ開発に利用できる状況ではありませんでした。
ですが、以前と違い起動して配置したアプリが動作しました!

起動したエミュレータを停止後に開始すると、エミュレータが反応しなくなります
この為、エミュレータ起動しても動作しない場合は、エミュレータ作成を行う必要があります

リリースしたばかりなので、情報が少ないので、ゆっくり様子をみます

WindowsのVisual Studio CodeでPython!! その3

前回の続きです。
今回は Windows10 のVisual Studio Codeで

ようにします

Visual Studio Code の準備 の続き

Formater設定 - 準備

Visual Studio Codeの Python拡張は、AutoPep8、Yapfに対応していて、
初期設定で AutoPep8 が有効になっています。
しかし、パッケージが無いので、ドキュメントのフォーマットを行うと、
以下のエラーが発生します

Formatter autopep8 is not installed.

以下のコマンドでパッケージを確認すると

conda list | Select-String autopep8
conda list | Select-String yapf

どっちも無いので、Yapf を追加することにします。
Yapf を選定した理由は、

  • なんか新しい
  • 攻撃的なフォーマットをしそう(いい意味で)

です。

Formater設定 - Yapf パッケージ追加

Flake8 パッケージを追加したときのように、以下のコマンドを実行します

anaconda search -t conda -p win-64 yapf

先頭の conda-forge/yapf を追加する為に、
以下のコマンドでインストールコマンドを取得します

anaconda show conda-forge/yapf 

最後にあるインストールコマンドを実行します

conda install --channel https://conda.anaconda.org/conda-forge yapf

途中 Proceed ([y]/n)? となるので y としました。
以下のコマンドでインストール確認を行います

conda list | Select-String yapf
yapf --version

バージョンは以下のようになりました

yapf 0.21.0

Visual Studio Codeの ファイル -> 基本設定 -> 設定 を開き、
以下の設定値をユーザー設定に追加

"python.formatting.provider": "yapf",

Formater設定 - 動作確認

前回利用した bad-source.py で確認しても微妙な結果になるので、
Yapf 公式にあるサンプルを利用します
以下の内容を yapf-sample.py で作成します

x = {  'a':37,'b':42,

'c':927}

y = 'hello ''world'
z = 'hello '+'world'
a = 'hello {}'.format('world')
class foo  (     object  ):
  def f    (self   ):
    return       37*-+2
  def g(self, x,y=42):
      return y
def f  (   a ) :
  return      37+-+a[42-x :  y**3]

保存すると、グチャグチャだったソースコードがキレイになります

x = {'a': 37, 'b': 42, 'c': 927}

y = 'hello ' 'world'
z = 'hello ' + 'world'
a = 'hello {}'.format('world')


class foo(object):
    def f(self):
        return 37 * -+2

    def g(self, x, y=42):
        return y


def f(a):
    return 37 + -+a[42 - x:y**3]

デバッグ設定

Visual Studio Code の デバッグ -> 構成の追加 を開き、
表示されるコマンドパレットから Python を選択
すると、Python の構成が追加された launch.json が作成されます

デバッグ

  1. Visual Studio Code 左端の 虫 アイコンを押下
  2. その1で作成した hoge.py を開き、3行目にブレークポイントを追加する
  3. Visual Studio Codeの デバッグ -> デバッグの開始 を選択
  4. 表示される でデバックツールバー の左端の再生(▶)アイコンを押下
    ブレークポイントで停止します

ここまでできれば、Visual Studio Code のデバッグと同じです。

まとめ

これで当初予定していた

が全部できるようになりました

あとは、Python でいろいろ書いてみるだけです。

WindowsのVisual Studio CodeでPython!! その2

前回の続きです。

今回は Windows10 のVisual Studio Codeで

  • Lint が機能する

ようにします

Visual Studio Code の準備 の続き

Lint 設定

Visual Studio Codeの Python拡張は、Pylint、Pep8、Flake8に対応しています
Lint エラーになるソースを準備し確認します
以下の内容を bad-source.py で保存してください


import sys
import os

def main():
    x = 1
    pwd = os.getcwd()
    print(pwd)



if __name__ == '__main__':
    main()

Lint 設定 - Pylint

Pylintは、初期設定で有効になっているので、bad-source.py を保存すると、
問題タブの bad-source.py に

[pylint] 'W0612:Unused variable 'x'' (6, 5)

が表示され、Pylint が機能しています!
また、以下のコマンドを実行すると

pylint bad-source.py

以下のように詳細な結果が表示されます

No config file found, using default configuration
************* Module bad-source
C:  1, 0: Module name "bad-source" doesn't conform to snake_case naming style (invalid-name)
C:  1, 0: Missing module docstring (missing-docstring)
C:  5, 0: Missing function docstring (missing-docstring)
C:  6, 4: Variable name "x" doesn't conform to snake_case naming style (invalid-name)
W:  6, 4: Unused variable 'x' (unused-variable)
W:  2, 0: Unused import sys (unused-import)

------------------------------------------------------------------
Your code has been rated at 2.50/10 (previous run: 2.50/10, +0.00)

Lint 設定 - Flake8

Flake8は、初期設定で有効にではないので、
Visual Studio Codeのファイル -> 基本設定 -> 設定 を開き、
以下の設定値をユーザー設定に追加

"python.linting.flake8Enabled": true,
"python.linting.pylintEnabled": false,

すると、Linter flake8 is not installed. のエラーになります。
これは、Flake8 パッケージが無いからです
Pylint でエラーにならなかったのは、パッケージがあったからです。
パッケージの有無は、以下のコマンドで確認できます

conda list | Select-String pylint
conda list | Select-String flake8

pylintあり、flake8なし の結果になります

Lint 設定 - Flake8 - パッケージ追加

パッケージ管理は、Anaconda に内包されている conda で行うことにします。
Python標準のパッケージ管理システムは pip ですが、
以下の理由から conda で行うことにしました

  • Anaconda に組込み済みのパッケージは conda で管理しているらしい
  • conda はバイナリダウンロードなので、ビルドしなくていい
  • pip と conda は混ぜない方がよいらしい

ということで conda で Flake8 パッケージを追加する為に、
まず、以下のコマンドを実行します

anaconda search -t conda -p win-64 flake8

このコマンドで、以下を確認します

  • flake8 パッケージがあるか
  • Windows 64bit 環境用のモノがあるか
  • 動作環境のPython用のモノがあるか

先頭の anaconda/flake8 が、Windows 64bit、Python 3.6 に対応してそうなので、
以下のコマンドを実行し、インストールコマンドを取得します

anaconda show anaconda/flake8

最後にあるコマンドを実行します

conda install --channel https://conda.anaconda.org/anaconda flake8

途中 Proceed ([y]/n)? となるので y としました。
以下のコマンドでインストール確認を行います

conda list | Select-String flake8
flake8 --version

バージョンは以下のようになりました

3.5.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.6.0) CPython 3.6.4 on Windows

Lint 設定 - Flake8 - 有効化

Visual Studio Code は、Flake8 パッケージがインストールされたことを知らないので、
Visual Studio Codeのコマンドパレットを開き、
下記のコマンドでウィンドウの再読み込みを実行します

Reload Window

再読み込みが完了すると、問題タブの bad-source.py に以下のエラーが表示されます

[flake8] F401 'sys' imported but unused (2, 1)
[flake8] E302 expected 2 blank lines, found 1 (5, 1)
[flake8] F841 local variable 'x' is assigned to but never used (6, 5)
[flake8] E303 too many blank lines (3) (12, 1)

また、Pylint と同じようにコマンドからも実行できます

> flake8 bad-source.py
.\bad-source.py:2:1: F401 'sys' imported but unused
.\bad-source.py:5:1: E302 expected 2 blank lines, found 1
.\bad-source.py:6:5: F841 local variable 'x' is assigned to but never used
.\bad-source.py:12:1: E303 too many blank lines (3)

Lint 設定 - まとめ

Visual Studio Codeで Pylint、Flake8を設定できるようなりました。
Pep8 も似たような方法で設定できると思います。

これで、

  • Lint が機能する

ようになったので、今回はここまでとします。

WindowsのVisual Studio CodeでPython!! その1

世の中、AI・機械学習ディープラーニングで盛り上がっているので、
ちょっとだけでも触っておこうと思い、
軽い気持ちで環境構築を始めたら簡単な方法を選んだハズなのに、
いろいろ困ったので環境構築方法をまとめます

概要

構築する環境

前提条件

Python環境の構築

Python環境の構築方法は、いろいろありますが Anaconda を利用して構築します
Anaconda は、

  • 機械学習用のパッケージが一通り入っているらしい
  • 環境ごとにパッケージを管理できるらしい

Python初心者の私は、なんか一通り入っているいるに惹かれて選択しました
今後、変更したくなってもソースコードに影響ないはずなので、Anaconda で進めます

Anaconda のダウンロード

以下のサイトからダウンロードします
 https://www.continuum.io/downloads

Python 3.6とPython 2.7の2つのバージョンがありますが、
特に古いバージョンを利用する必要性がないので Python 3.6 を選択しました。
ファイル名は Anaconda3-5.1.0-Windows-x86_64.exe でした。
(ファイル名は、ダウンロードする時期によって変化すると思います。)

Anaconda のインストール

ダウンロードした Anaconda3-5.1.0-Windows-x86_64.exe を管理者権限で起動します
インストールは、画面の指示通り進めればインストールが完了しますが、
以下の対応をしました

  • インストールディレクトリを変更
    → 変更する必要はありません
      Anacondaに限らず、私はいつも変更してます
  • Anaconda関連のパスを環境変数に追加のチェックしない
    → 画面に非推奨とあったのでしませんでした
  • Visual Studio Codeのインストール
    → Skip

完了時に表示される Anaconda Cloud は、何もしていません。

Anaconda の インストール確認

スタートメニューから Anaconda3 (64-bit) -> Anaconda Prompt を開き
以下のコマンドを実行し、バージョンが表示されることを確認する

>python -V
>conda -V
>pip -V
>anaconda -V

以下の結果になりました

(base) C:\Users\tohnaman>python -V
Python 3.6.4 :: Anaconda, Inc.

(base) C:\Users\tohnaman>conda -V
conda 4.4.10

(base) C:\Users\tohnaman>pip -V
pip 9.0.1 from D:\Develop\Anaconda3\lib\site-packages (python 3.6)

(base) C:\Users\tohnaman>anaconda -V
anaconda Command line client (version 1.6.9)

(base) C:\Users\tohnaman>

Anaconda Prompt 以外に、Jupyter Notebook、Spyder などがありますが、
本内容に無関係なので無視します

環境変数設定

Anaconda Prompt で確認したコマンドは、コマンドプロンプトから実行できません。

C:\Users\tohnaman>python -V
'python' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

Visual Studio Code で 快適に Python を利用する為に、以下の環境変数を設定します

No. 変数 補足
1 ANACONDA_HOME Anaconda のインストールディレクト 新規作成
2 Path %ANACONDA_HOME% 追加
3 Path %ANACONDA_HOME%\Scripts 追加
4 Path %ANACONDA_HOME%\Library\bin 追加

コマンドプロンプトから実行できるようになります

C:\Users\tohnaman>python -V
Python 3.6.4 :: Anaconda, Inc.

Visual Studio Code の準備

Python 拡張をインストール

Visual Studio Codeで Ctrl+P でコマンドパレットを開き、下記のコマンドを実行

ext install python

インストール完了後、再読み込みする

お試し実行

以下の内容の hoge.py を作成し、

import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)

ターミナルに 以下のコマンドを入力しpyhonを実行する

> python .\hoge.py

以下のような結果になります

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

ここまでで、

ができるようになりました


が残っていますが、次回に持ち越します。
忘れないうちに投稿します

UWPアプリ作成・・・

やる気満々で始めたUWPアプリ作成でしたが、
いろんなことが重なって頓挫しました。

起こった出来事

急な職場移動&新人と一緒

  • 仕事柄よくあることなので移動は問題ないのですが、
    node.jsを使うところなので、スキルが足りない
  • スキル習得しながら新人と一緒。大変だぞーって状況

WindowsPhone終了宣言

  • WindowsPhone開発者のブログでの発言は終了宣言ではありませんが
    バグ対応のみは、終了宣言と同じ!
  • Windows10Mobileのサポートも2019年までのようなので。はい、終了です
  • Windows10Mobileに期待していたので凄く残念です。

何してた?

  • node.jsでサーバーサイドってことで、JavaScript、TypeScript を本格的に学習!
  • JavaScriptは、Web画面作成時にネット見ながらガチャガチャしていただけ。JQuery
  • node.jsもGulp 使ってたところで、便利ライブラリの裏側で活躍してただけ
  • prototype? Promise? ってところからのスタート。新人も
  • そんな状況でUWPアプリ作ってる場合じゃなかった・・・
  • んで、終了宣言!やる気がでるわけないじゃない
  • 終了宣言を受けて、ガラケーから Xperia XZ1 に機種変更

今!

  • スキル習得もなんとかし、新人も育ってきて、少しづつ落ちついてきたので
    何かしようと思ってます。
  • node.js でなにか
  • XamarinでAndoridアプリ?
  • 世の中機械学習とかディープラーニングとかで盛り上がっているので、なにか?
  • IOT?
  • など、いろんな夢想したら、 Surface Pro 買っちゃった

UWPアプリを作るんだ!

前回の更新から数か月振りになります。
やっとモチベーションが上がって来たのでUWPアプリを作る予定ですんです。

作るアプリは『勤怠メモ』アプリです。
日々の勤務時間をWindows 10 MobileExcelで入力しているんですが、
出来ない事はないレベルの操作感なので改善したいのです。
また、MVVMの学習も兼ねていこうと思っています。

ザックリ要件

  • UWPアプリ
  • 勤務時間の入力が出来る
  • 1ヶ月分の勤務表が見れる
  • 過去の勤務表も見れる
  • 対象端末はMobileとPC

内部仕様

  • 勤務データはjson形式でファイルに格納する
  • ファイル名はyyyymm.json
  • 項目は日付、勤怠区分(出勤、休日など)、出社・退社・休憩時間、備考など
  • アプリ起動時に当月分の勤務表を表示する
  • アプリ起動時に本日の入力ができる状態になっている

最初に目指すゴール
実装する機能

  • 勤務時間の入力が出来る
  • 1ヶ月分の勤務表が見れる
  • アプリ起動時に当月分の勤務表を表示する
  • アプリ起動時に本日の入力ができる状態になっている

後回しにすること

  • 画面デザイン → 必要な項目があればよい
  • キメ細かい入力値検証 → ザックリ検証まででよい

その他、細かい内容は進めながら決めていこうと思います。

ここまで書いておいてなんですが、

  • 普段はJavaをメインに使用している
  • UWPアプリ開発、MVVMは学習レベル

なので、ガッツリ理解したい人向けにはならないと思います

今回は、ここまでとします。