2018年11月7日水曜日

VB6は永遠に・・・!?

熟年エンジニア向け、VB6のお仕事を頂戴しましたorz
これを機に.NETに移行してくれないかなあと思いつつも、せっかくなのでVB6Runtimeのサポートがいつまで続くのかを調べてみました。

https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/visual-basic-6-support-policy

Windows10でのサポートは健在です。
Microsoftさすがです。
ではWindows10のサポートはいつまで続くのかというと・・・

https://support.microsoft.com/ja-jp/help/13853/windows-lifecycle-fact-sheet

エディションによって異なりますが、いまのところ最長はWindows 10 Enterprise 2016 LTSB エディション(企業向け固定化モデル)の2026年ということになります。
Windows 10 LTSBのリリースが今後もあるなら延長サポートの期限も伸びますので、
VB6RTのライフサイクルポリシーが変わらない限り当面サポートの終了はないということでファイナルアンサーでしょうか。

以下参考まで。
https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/12851976-congratulations-to-microsoft-for-extending-vb6-pro

2018年10月2日火曜日

さくらレンタルサーバーに Python3.6.6(pyenv) + Flask をインストール

bash したあと

[xxxx@www9999 ~]$ pyenv install 3.6.6
[xxxx@www9999 ~]$ pyenv local 3.6.6
[xxxx@www9999 ~]$ pyenv versions
  system
* 3.6.6 (set by /home/xxxx/.python-version) 
[xxxx@www9999 ~]$ which python3
/home/xxxx/.pyenv/shims/python3 
[xxxx@www9999 ~]$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
[xxxx@www9999 ~]$ wget https://files.pythonhosted.org/packages/4b/12/.../Flask-1.0.2.tar.gz
[xxxx@www9999 ~]$ tar zxf Flask-1.0.2.tar.gz
[xxxx@www9999 ~]$ cd Flask-1.0.2
[xxxx@www9999 ~/Flask-1.0.2]$ python3 setup.py build
[xxxx@www9999 ~/Flask-1.0.2]$ python3 setup.py install
[xxxx@www9999 ~]$ wget https://files.pythonhosted.org/packages/9f/08/.../Werkzeug-0.14.1.tar.gz
[xxxx@www9999 ~]$ tar xzf Werkzeug-0.14.1.tar.gz
[xxxx@www9999 ~]$ cd Werkzeug-0.14.1
[xxxx@www9999 ~/Werkzeug-0.14.1]$ python3 setup.py build
[xxxx@www9999 ~/Werkzeug-0.14.1]$ python3 setup.py install
[xxxx@www9999 ~]$ wget https://files.pythonhosted.org/packages/56/e6/.../Jinja2-2.10.tar.gz
[xxxx@www9999 ~]$ tar xzf Jinja2-2.10.tar.gz
[xxxx@www9999 ~/Jinja2-2.10]$ python3 setup.py build
[xxxx@www9999 ~/Jinja2-2.10]$ python3 setup.py install
[xxxx@www9999 ~]$ wget https://files.pythonhosted.org/packages/4d/de/.../MarkupSafe-1.0.tar.gz
[xxxx@www9999 ~]$ tar xzf MarkupSafe-1.0.tar.gz
[xxxx@www9999 ~]$ cd MarkupSafe-1.0
[xxxx@www9999 ~/MarkupSafe-1.0]$ python3 setup.py build
[xxxx@www9999 ~/MarkupSafe-1.0]$ python3 setup.py install
[xxxx@www9999 ~/MarkupSafe-1.0]$ python3
[xxxx@www9999 ~]$ wget https://files.pythonhosted.org/packages/f8/5c/.../Click-7.0.tar.gz
[xxxx@www9999 ~]$ tar xzf Click-7.0.tar.gz
[xxxx@www9999 ~]$ cd Click-7.0
[xxxx@www9999 ~/Click-7.0]$ python3 setup.py build
[xxxx@www9999 ~/Click-7.0]$ python3 setup.py install
[xxxx@www9999 ~]$ wget https://files.pythonhosted.org/packages/dc/b4/.../itsdangerous-0.24.tar.gz
[xxxx@www9999 ~]$ tar xzf itsdangerous-0.24.tar.gz
[xxxx@www9999 ~]$ cd itsdangerous-0.24
[xxxx@www9999 ~/itsdangerous-0.24]$ python3 setup.py build
[xxxx@www9999 ~/itsdangerous-0.24]$ python3 setup.py install
参照
 以下 PyPi

2017年10月26日木曜日

Keysight IO Libraries Suiteがインストール済みのPCで、viOpen関数のリターン値がbfff00a5になるとき

Keysight IO Libraries Suiteがインストール済みのPCで、VISA32.DLLのviOpen関数を実行してリターン値がbfff00a5になるときの設定です。

Keysight Connection Expertを開いて、Settings タブを選択します。


Options の Keysight 488 options の Enable Keysight GPIB Cards for 488 Programs にチェックして、Accept します。

もし Accept 後に、先のチェックボックスからチェックマークが消える場合で、PCにNI (National Instruments) 製品をインストールしている場合は、NI Configuration Manager というサービスが影響しています。

「Windows の検索」で「ローカル サービスの表示」を検索して実行し、サービスを停止後PCを再起動します。


ローカル サービス

「サービス」が起動したら、NI Configuration Manager を見つけてプロパティを開きます。

NI ConfigurationManager のプロパティ・ウィンドウ

いったん「無効」にセットしてPCを再起動し、Keysight Connection Expert の設定をやり直します。

2016年5月24日火曜日

IronPythonでIvi.Visa.Interop.IMessage.Closeをコールする

難儀したのでメモ
import sys
import clr
sys.path.append(r'C:\windows\assembly\GAC_32\Ivi.Visa.Interop\5.5.0.0__a128c98f1d7717c1')
clr.AddReferenceToFile('Ivi.Visa.Interop.dll')
from Ivi.Visa.Interop import *

visa_rm = ResourceManagerClass()
dev = FormattedIO488Class()

dev.IO = visa_rm.Open('GPIB0::5::INSTR')
dev.WriteString('*IDN?')
idn = dev.ReadString()
print(idn)

# 本題はこちら↓
imessage_close = clr.GetClrType(IMessage).GetMethod('Close')
imessage_close.Invoke(dev.IO, None)

NI Spyで確認した結果

2016年4月15日金曜日

Windows7 + VB6 で MSComctlLib を含むフォームのロードがコケる

大手電機メーカーのソフトウェアであっても製造の現場で安定して稼働しているシステムはいまだにVB6で作ったものだったりします。
今回もそんなVB6で構築したシステムのエンハンスで、.vbpファイルを開くとMSComctlLibを含むフォームのロードでエラーが出る状態だったため手っ取り早く対処します。

まずフォームをロードした時、VBがご丁寧に通知してくれるエラーログを確認します。

行 14: クラス MSComctlLib.Toolbar(コントロール Toolbar1) はロードされていません。
行 140: クラス MSComctlLib.ImageList(コントロール ImageList1) はロードされていません。
行 177: クラス MSComctlLib.StatusBar(コントロール StatusBar1) はロードされていません。

続いてcmd.exeを「管理者として実行...」して、以下の3行をコピー&ペーストです。
regsvr32 /u /s C:\Windows\System32\MSCOMCTL.OCX
regsvr32 /s C:\Windows\System32\MSCOMCTL.OCX
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe C:\Windows\system32\msdatsrc.tlb
あとはVB6 IDEのツールボックス上で右クリック⇒コンポーネントと進んで Microsoft Common Dialog Control 6.0 (SP6) をチェックして、 適用をクリックしてもエラーが出なければ・・・
 

2016年2月16日火曜日

プレゼンテーションは楽しむものか

私は仕事柄、依頼を受けたソフトウェアを「こんな風に実現します」ということを説明したり、立場上会社の説明を人前ですることが時々あります。本当に時々です。
でも私は全くもってこのスピーチとかプレゼンテーションが不得意科目で、少人数のまえでも熱い視線を感じると即座にアウアウアウアウアーとなってしまいます。
安定のド緊張チキンです。

そこでこのTEDを見て、スピーチとかプレゼンテーションの本質は何かを考えました。


正直な話、ウィル・スティーヴンは何を伝えたかったのかわかりません。
リスナーが彼の伝えようとしていたことを勝手に解釈すればいいのかもしれません。

個人的には人前で話すことを「楽しんでみたらどうよ?」って推奨しているかのように感じましたね。
こんなふうに自信をもって人前で話せるようになりたいす。

(完)

2016年2月5日金曜日

Arduinoはじめました(環境構築編)

「Arduinoはじめました」の第2回目、今回は開発環境の構築といきます。
まず前提ですが、こちらの環境はMacBook Pro、OSはYosemiteです。

では早速ソフトウェアを落としてきてインストールしましょう。
ソフトウェアのダウンロードは以下のリンク先から、Arduino謹製IDEです。
Windows、MAC、Linuxとあるので、自分がこれだと思ったものをダウンロードします。
https://www.arduino.cc/en/Main/Software

インストールは端折ります。

ではさっそくIDEを起動してみましょう。
素敵ですね、何の前触れも下準備もなく、しかもなんとなく何をしでかすのかわかるファンンクションネーム。
さあこれさえあればArduinoで実行するプログラムを作って、作成したプログラムをArduinoへ書き込んで、デバッグ用にログを表示するコンソールも準備完了。
環境構築\(^o^)/オワター
続いていちばん楽しみな、OSOYOO UNOとMacをUSBでつなぎますドキドキです。
およ、基盤の右側にあるグリーンのLEDが点灯してすんなり起動。
ちょっとは問題にぶち当たりたいかも。
嘘です。

さてここまできたら接続を確認します。
ArduinoのIDEをアクティブにして、メニューバーの[ツール]にマウスカーソルをあてて「マイコンボード」と「シリアルポート」になにやらデバイス感があればOKでしょう。
それでは今回の〆です。
OSOYOO UNOとMacをつないだときの写真、基盤中央よりちょっと左の上にあるオレンジのLED、その名も”L(える)”、こいつが点滅するプログラムを書いてボードに書き込んでみます。コードを書いて ➡︎ のアイコンをクリックするだけです。
void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(1000);
}
ちょ、たのしぃ。。。