情報技術の四方山話

AI、IoT、ヤマハルータ、VPN、無線LAN、Linux、クラウド、仮想サーバと情報セキュリティのよもやま話

Windows PowerShellでのソフト開発のきっかけ

2020-05-10 19:11:58 | Windowsの備忘録
今回の話題は「Windows PowerShellでのソフト開発のきっかけ」です。

私は、ネットワークに関連するソフト開発も行います。もともと、ソフト開発は大好きです。昨年から取り組んだ仕事で、LinuxとWindowsを連携した、データ伝送の仕組みを開発しました。

Linux側は100%bashスクリプトで開発し、Windows側は一つの小さな機能モジュールをC言語で、主体となる部分はWindows PowerShellで開発しています。

Windows PowerShellでの開発はそれまで経験無しです。最初はWindows PowerShellでの開発ではなく、busybox.exeというWindows上で走る極めてコンパクトなLinux上で開発を始めました。bash, cur, wgetなど慣れたLinuxツールの活用が目論見でしたが、すぐに行き詰まりました。busybox.exe上でのwgetもcurlもお客様先のFireWallを通過できない可能性がでてきたのです。「持ち込み禁止」の可能性ありです。

そこでWindows PowerShellを使っての方法に切り替え、通信は全てWindowsが備える機能で行いました。

Windows PowerShellでの本格的な通信ソフトの開発は初めてなので、まだコードが綺麗ではありません。開発後の機能追加もあり、ちょっとコードが膨らんでいます。
ただ、バグなして動いていたコンパクトなソフトの自然な拡張なので、根本的に書き換えるようなことはしません。

Windows PowerShellはコマンドレットと呼ばれるコマンドを使います。これまでのコマンドと大きく違うのは、「コマンド名が長い」ことです。ただ、コマンド名はとてもよく体系化されているので、慣れてくると必要な機能を実現するコマンドレットの名前が推定できるほどです。またコマンドレットはオブジェクトを返すので、多くの関連情報を知ることができます。

コマンドレットの扱いには、例題を見て少しずつ慣れました。条件判断も同様です。WindowsのOS機能を使うには、C#等コンパイル言語で書き下すより圧倒的に保守性が良くなります。

今はWindows Terminal(Preview)に統合されたWindows PowerShell環境に移行したので、コマンドライン・シェルも使いやすくなりました。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

WSLは"Windows Subsystem for Linux"でした

2020-05-03 08:55:12 | Windowsの備忘録
今回の話題は「WSLは"Windows Subsystem for Linux"でした」です。
これまでWSLをWLS(=Windows Service for Linux)と記述していましたが、正しくはWSL(Windows Subsystem for Linux)の間違いでした。過去記事の表記も、同様の間違いです。

尚、略称の基の単語を間違っていましたが、WSLそのものの機能・役割を間違っているわけではありません。

実はWindows Service for UNIX(=SFU)という、Windows上にUNIXを移植した環境がありました。実はWindowsはPOSIX/UNIX環境を備えていたのです。SFUとWSLの利用者への見え方はそっくりです。POSIX環境なのでスクリプトはパスの変更程度で動きましたし、gccも使えるのでUNIX流のソフト開発もできたのです。その環境を使って、システムを構築したこともあり、てっきりその流れで"Service for Linux"だと思っていました。SFUは英語版Wikiには細かい解説があります。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

WSL2とWSLの違いを解説します

2020-05-02 21:18:45 | Windowsの備忘録
今回は「WSL2とWSLの違いを解説します」です。
タイトルのミスタイプを修正しました。
WSL(Windows Service for Linux)はもうすぐWSL2となることがアナウンスされており、既に開発者向けプログラムでは配布が始まっています。

WSLは、Windows APIをLinux APIでラップしています。WSLの下はWindowsのAPIなので「仮想」ではなく、いわば「Windowsのアプリケーション」なのです。Linuxに合わせてその集合体をこさえています。即ち、完全に「WindowsAPIをラップ(Wrap)」して異なるOSの環境と見せているのです。そのため、Linuxカーネルの上で動いているように見えますが、Linuxカーネルは実在しません。なので、カーネル内部の機能を制御することはできないのです。典型的にはデバイスドライバ等ハードウエア依存部分を含む開発は多くの場合できません。
とはいえ、これは、これで素晴らしい環境です。私みたいに全く不満の無い方の方がほとんどだとおもいます。

一方、WSL2は完全な仮想環境です。仮想マシンをつくる、ハイパーバイザーの上でWindowsに全く依存しない形でLinuxカーネルごと起動します。これまで仮想環境をつくるために導入していたVirtualBox、VMWareが要らなくなります。完全なx64 Linuxですから、そのLinuxの上に仮想化層を載せることもできます。即ち「ただのLinux」なのです。その実行管理をWindowsがこれまでのVirtualBoxやVMWareのように提供します。

こなると、同じアーキテクチャであれば、Linuxデスクトップで開発した「バイナリプログラム」を変更なしでもってきて実行することができます。アーキテクチャが異なる場合は、その上でコンパイルし直せば実行できます。スクリプトだけではなく、バイナリ実行型のプログラムの環境が大きく広がります。

WSL2の登場は、Microsoftが純粋なLinux実行環境の提供を始めることを意味します。これまでのWindowsGUI環境で、ローカルに完全なLinuxが立ち上がります。なのでLinux上で著名なコンテナ環境のDockerさえも使えます。私の場合も、カーネル依存のミドルウエアの利用や開発であれば、WLS2を使います。


コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

WSLでPowerShellやコマンドプロンプトからlinuxコマンドを実行する

2020-04-30 12:03:32 | Windowsの備忘録
今回は「WSLでPowerShellやコマンドプロンプトからlinuxコマンドを実行する」です。
WLSが更新され、使いやすいWindows TerminaのPreviewがでたこともありWLS(Windows Service for Linux)を試しています。
前回は、PowerShellやコマンドプロンプトからwlsコマンドでLinuxのbashを起動できることを紹介しました。

もう少し試してみたところ、なんと「wlsコマンドでLinuxコマンドを呼び出すことができる」ことが判りました。
これは「PowerSHellスクリプトでLinuxコマンドを発行することができる」ということです。

■コマンドプロンプトでLinuxコマンドを実行

C:\Users\taniy>wsl lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic

C:\Users\taniy>


■PowerShellでLinuxコマンドを実行

PS C:\Users\taniy> wsl lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
PS C:\Users\taniy>


この環境ならば、これまでWindows上でLinux/bash環境を提供するツールとして使っていたBusyBox.exeは不要です。もちろん、Linux環境の呼び出し方の手続きは変わりますが、これからは、素直な実行環境でWindowsの機能とLinuxの機能を連携することができます。これは、開発者にとっては、素晴らしい環境です。

Windows Terminalでコマンドを操作する環境も改善されています。
Linuxのスクリプトだと思っていたプログラムが、WindowsにWSLをインストールすれば、概ねそのまま実行できることも判りました。デバッグ済みのLinuxソフトウエアをWindows上で実行することが極めて容易になるのですから、素晴らしいことです。

次回は、Linux環境で沢山使っている、自作のPythonプログラムが実行できることを試します。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

WSLのLinux/bashはPowerShellやコマンドプロンプトからも起動できます

2020-04-30 05:36:05 | Windowsの備忘録
今日は「WSLのLinux/bashはPowerShellやコマンドプロンプトからも起動できます」です。
WSL(Windows Service for Linux)はWindowsのメニューから起動することができます。
これまではそうしてきていました。PowerShellやコマンドプロントから「wsl」と入力するとあら不思議。Linuxのbashが起動されLinux環境に変わります。

この仕組みを使うとPowerShellからLinuxのスクリプトを起動することもできそうです。
私の場合は、Windows上でLinux bash環境で作ったスクリプトを動かしたいことがままあり、これまでは、コマンドプロントからbusybox.exeを使ってbashスクリプトを起動してきました。
これは、Windows環境のスクリプト実行環境としてコマンドプロンプト、いわゆる".bat"しか知らないからです。しかも"*.exe"を起動できる程度の知識しかありません。

コマンドプロント環境も使いこなせば、複雑なことも書けるとは思います。
ただ、私にとっては長年使っているbash, awk, pythonの方が経験と、インターネット上の事例の情報量が圧倒的に多くて実装が楽なのです。

一方、仕事の都合で、昨年よりPowerShellを本格的に使い始めています。
私にとってWindows nativeなスクリプティング環境はすでにPowerShellになっています。シンプルなスクリプトですが、異種のシステムを連携させるプログラムを記述しています。このプログラムは当面使い続けることになります。

".bat/busybox.exe/bash,awk"で書いたスクリプトもPowerShellに移植し、メンテナンスできるようにしようとしていますが、方針を転換してPoweShellから素直にWSL/bash,awkスクリプトを実行するかどうかをまず調べます。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windows TerminalでPowerShellとLinux/Ubuntu bashを統合表示

2020-04-29 22:18:32 | Windowsの備忘録
今日の話題は「Windows TerminalでPowerShellとLinux/Ubuntu bashを統合表示」です。Windows環境にはコマンドshellが幾つかあります。

歴史的:コマンドプロンプト
モダン:PowerShell
新機能:Linux/Ubuntu(複数の種類を同時実行可)

これらは、独立のコマンド入力ウインドウを持ちます。複数の環境を一つのウインドウに統合して「Tab」で管理できるようにしたものが「Windows Terminal」です。
すでにMicorosoft StoreからPreview版が配布されており、インストールは極めて簡単です。

私の場合は、PowerShellとUbuntu/bashの両方を使う機会が多いので、統合環境は便利です。
PowerShellはコマンドプロンプトが持つコマンドを使うことができるので、近年はコマンドプロンプトを使う機会はほとんどなくなっています。
また、昨年よりお客様向けの仕事として、PowerShellスクリプトも書いています。

PowerShell環境でsshを使ってLinuxサーバに接続することは日常です。
PowerShellの端末機能はLinuxの端末機能とは異なりPowerShellでは表示やキー操作がうまくいかないことも散見されています。
本格的にLinux上で仕事をする場合は、PuTTYやTeraTermなど「別のTerminal」をインストールし起動しています。

Linux/Ubuntu bashでは、bash, awk, pythonなど、様々なLinux上の言語でスクリプトを書きます。
また、他のLinuxにつなぐ際も「Terminal」として利用します。

これまでは、この二つの利用環境は全く独立したものでした。
これが以下のように「Windows Terminal」の中でひとまとまりに管理することができます。
これは、便利です。



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

次世代Windows Edge/Chromiumエンジン版で最初に調整すること

2019-06-02 20:26:03 | Windowsの備忘録
次世代Windows Edge/Chromiumエンジン版で最初に調整すること

いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今日は「次世代Windows Edge/Chromiumエンジン版で最初に調整すること」を紹介します。


■メニューの日本語化
まだできないようです。英語で表示されますが実用上問題ありません。

■ダウンロードURL
Microsoft社の特設ページからダウンロードします。
Microsoft Edge Insider

■日本語の追加
Edge SettingsページでLanguageを選びJapaneseを追加します。
edge://settings/languages 

■日本語フォントの設定
フォントを詳細設定することで、日本語をきれいに表示することができます。
edge://settings/fonts 

Stndard font:メイリオ
Serif font:メイリオ
Sans-serif font:メイリオ
Fixed-width font:MSゴシック

デフォルトフォントは英語圏のフォントなので、私は日本語にしていますが、将来はOSの言語環境に自動追従するようになるでしょう。

■検索エンジンの選択
検索エンジンを変更することができます。
edge://settings/searchEngines
デフォルトはbingですがGoogleを選ぶこともできます。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windows 7起動直後のWindowsUpdateを止める

2016-11-01 05:48:08 | Windowsの備忘録
匠技術研究所
Windows 7起動直後のWindowsUpdateを止める


いつもアクセスありがとうございます。匠技術研究所の谷山亮治です。
NEC LaVieのバッテリーを交換し、モバイルPCとして再活用をはじめました。
とても軽量で扱い易いのですが、いつの頃からか起動すると「全力で走っている」状態が続いていました。
これでは、バッテリーの減りも早く、モバイルに適しません。

一旦、Windows 7の起動直後にWindowsUpdateが自動起動しないようにします。

「services.msc」を起動
「windows update」をダブルクリック
中程「スタートアップの種類」プルダウン->「無効」を選択
(*)デフォルトは自動(遅延開始)
「適用」

事務所など長時間電源に接続して利用できる際に、先の設定を戻してWindowsUpdateを実行します。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Microsoft Windows10への無償アップグレードは7月29日まで

2016-05-09 07:02:27 | Windowsの備忘録
匠技術研究所
Microsoft Windows10への無償アップグレードは7月29日まで


いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
Microsoft Windows10への無償アップグレード期間の終了は2016年7月29日です。

アップグレードには時間がかかります。少なくとも6月中にはアップグレードを完了するように計画するほうが良いですね。終了に向けてネットワークもどんどん混むと思います。


Microsoftの案内サイトへ
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

"Microsoft Edge"がWindows 10の正式ブラウザ名に-案内動画も公開に

2015-04-30 17:59:50 | Windowsの備忘録
匠技術研究所
"Microsoft Edge"がWindows 10の正式ブラウザ名に-案内動画も公開に


いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今回は次世代のMicrosoftWindows 10のブラウザの名称が"Microsoft Edge"と決まったことの紹介です。"Microsoft Edge"はこれまでの"Microsoft Internet Explorer"を置き換えるブラウザです。既に公開されているMicrosoft Windows 10 Technical Previewで試すことができます。
Windows 8で使うことができるようになるかどうかは知りえていません。

いずれにせよMicrosoftはWindows 10でWindowsOSのアーキテクチャを大きく変更する為に、様々なソフトウエアの再設計のきっかけになります。

Introducing Microsoft Edge: The New Windows 10 Browser
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windows 10へのアップグレードは「リリース後一年間」は無償提供へ

2015-01-22 09:34:04 | Windowsの備忘録
匠技術研究所
Windows 10へのアップグレードは「リリース後一年間」は無償提供へ


いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
各種報道によると「WIndows 10へのアップグレードは「リリース後一年間」は無償提供へ
」とMicrosoftから発表されました。一年間の無償アップグレードの対象となるバージョンはWindows 7/8.1です。Vistaは含まれません。

これまで、Windowsユーザーはアップグレードを有償で行ってきました。Microsoftにとっては、アップグレードは巨大なビジネスチャンスです。今回の発表はこの方針を転換し、アップグレードを強力に促すものです。

Windowsはご存知のとおり、バージョンアップを行ってきました。2000年代に入り、Windows XPがリリースされ、個人用Windows基本ソフトとしての完成度が向上したため、ユーザーは「バージョンアップの必要性を感じない」時代になります。一方でMicrosoftは、さらにWindowsの基本ソフトの基盤をXPのころから.NET Framework(dot net)に移行しかけています。

2015年にリリースされるWindows10では、この新しい基盤への完全な移行を目指しているように見えます。即ち、ユーザ側も新しい基盤に誘導し、ソフトウエア開発・実行環境.NET上に移行させ、Win32/64基盤を終息していくことになります。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Micorosft Windows 10 Previw - ダウンロードサイトが公開されました

2014-10-02 10:44:32 | Windowsの備忘録
匠技術研究所
Micorosft Windows 10 Previw - ダウンロードサイトが公開されました


いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今日は2014年10月1日に開始されたWindows 10 Previwのダウンロードが始まったことの詳細です。

■このブログの記事
何故Windows 10なのかを推察しています。
Microsoft Windows 10 Previewが発表-ダウンロードは2014年10月後半を予定

■日本語版Previewサイトへ
2014年10月2日現在の日本語でのWindows 10 Previwのダウンロードサイトは、日本語での公開開始の説明と英語版ダウンロードサイトへの案内になっています。



■英語版Previewサイトへ
Microsoftは英語版のPreviewサイトで、Windows 10 Technical Preview for Enterpriseのダウンロードを開始しました。



Microsoftアカウントでサインインするとダウンロードすることができます。私も、ダウンロードの為サインインしました。ただ、2014年10月2日現在でまだ日本語版の提供はありません。下記の通り、英語、簡体中国語、ポルトガル語版のみの提供です。英語版をダウンロードしていますが、インストールはしていません。


引き続き、紹介していきます。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

久しぶりに立ち上げたWindows 7 PCから「調子が悪い」と訴えられた

2014-09-28 14:43:05 | Windowsの備忘録
匠技術研究所
久しぶりに立ち上げたWindows 7 PCから「調子が悪い」と訴えられた


いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今回は久しぶりに立ち上げたWindows 7 PCから「調子が悪い」と訴えられたことを紹介します。

四ヶ月弱でしょうか、久しぶりに作業用のWindows 7 NetBookが「スッ」と立ち上がらずに「ディスクガリガリ」が始まりました。「ちゃんとシャットダウンできていなかったんだな」と、終わるのを待つしかありません。

翌朝見るとメッセージが出ています。「何だこりゃ??」初めて見るメッセージです。
皆様にも紹介をと思い「記念撮影」。

■不調を訴え現れたメッセージ


■文字起こし
コンピューターにされているデバイスとの通にがしました。

けUSBドライブのようなリムーバブル記がデバイスがにりされた
や、ハードディスクやCD-ROMドライブなどのハードウエアにがあるにこのエラー
はきるががあります。リムーバブル記がしくされていること認
して、コンピューターをしてください。

このメッセージがききされるは、ハードウエアの造にいわせてくだ
さい。

: 0xc00000e9
: しない I/O エラーがしました。


なるほど。調子が悪いことは、良く判りました。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSN(Microsoft Network)がPre Viewを公開開始-2014年10月より一新へ

2014-09-09 18:16:36 | Windowsの備忘録
匠技術研究所
MSN(Microsoft Network)がPre Viewを公開開始-2014年10月より一新へ


こんにちは。いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今日は、Microsoftが提供するポータルサイトMSNが、2014年10月1日からの一新に向けて、PreView(プレビュー)の公開が始まっていることを紹介します。

私は、MSNのポータルは長年利用してきました。日常の仕事をLinux上で行うようになっても、MSNを利用しています。

今回の更新により、ニュース配信が一社の提供から、複数社の提供に代わります。また、デザインの印象は「タイル」的で、横幅の広い画面環境に合わせた作りになっており、他のポータルとは、一線を画するものと言えます。

■MSNのプレビュー画面
私のLinux環境ではFirefoxで綺麗に表示ができました。

MSN PreView画面へ

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windows版Chrome系ブラウザは他のブラウザより15倍短い間隔で動作している

2014-08-14 11:56:48 | Windowsの備忘録
匠技術研究所
Windows版Chrome系ブラウザは他のブラウザより15倍短い間隔で動作している


こんにちは。匠技術研究所の谷山 亮治です。
今日はWindows上のGoole Chrome系ブラウザが他のブラウザより15倍短い間隔で動いていることを紹介します。

この記事は、GIGAZIEの以下の記事を参考に、私のWindowsデスクトップでの動作を確認した結果です。
Google ChromeがWindowsノートPCのバッテリーを食いまくっている(GIGAZINE)


GIGAZINEの記事によるとChromeは、OSであるWindowsから呼び出される間隔を15msec(milli sec)から1msecに変更していることが指摘されています。

Windowsから呼び出される間隔を短くすることで「アプリケーションの応答性を高める」ことが期待できます。一方で、WindowsOSにとっては、動いているプログラムを呼び出す間隔が短くなることで、小刻みに仕事を見つけていることになり、GIGAZIEの記事では電力の消費量が増える可能性が指摘されています。

私のWindowsデスクトップでは、Chromeの源流Chromiumからの派生ブラウザSRWare Ironを使っています。このブラウザは基本的にChromeと兄弟なので、同じ振る舞いをするのかどうかを確認しました。

確認にはGIGAZIEの記事にあるよう、MIcrosoftが配布するclockres(おそらくClock Resolutionの省略)を使いました。Windows上でダウンロードし、ZIPを解凍すると、そのまま起動することができます。インストーラーはありません。
ClockResのダウンロードはこちら(Microsoft)

[1]Chrome系ブラウザを起動せずClockresを実行
Chrome系ブラウザが起動していない状態でClockresを実行しました。アプリケーションを呼び出す間隔が15msecであること、短くするのであれば0.5msec間隔までセットすることができることが判ります。
C:\Users\taniyama\Downloads\ClockRes>Clockres.exe
ClockRes v2.0 - View the system clock resolution
Copyright (C) 2009 Mark Russinovich
SysInternals - www.sysinternals.com

Maximum timer interval: 15.600 ms
Minimum timer interval: 0.500 ms
Current timer interval: 15.600 ms

[2]Chrome系ブラウザSRWare Ironを起動後Clockresを実行
いつも使っている、Chrome系ブラウザSRWare Ironを起動した後にClockresを実行しました。アプリケーションを呼び出す間隔が15msecから1msecに変わっています。

C:\Users\taniyama\Downloads\ClockRes>Clockres.exe
ClockRes v2.0 - View the system clock resolution
Copyright (C) 2009 Mark Russinovich
SysInternals - www.sysinternals.com

Maximum timer interval: 15.600 ms
Minimum timer interval: 0.500 ms
Current timer interval: 1.000 ms

[3]Chrome系ブラウザSRWare Ironを終了後Clockresを実行
Chrome系ブラウザSRWare Ironを終了後にClockresを実行しました。アプリケーションを呼び出す間隔が1msecから15msecに戻っています。

C:\Users\taniyama\Downloads\ClockRes>Clockres.exe
ClockRes v2.0 - View the system clock resolution
Copyright (C) 2009 Mark Russinovich
SysInternals - www.sysinternals.com

Maximum timer interval: 15.600 ms
Minimum timer interval: 0.500 ms
Current timer interval: 15.600 ms

このように、Chrome系ブラウザを起動し、Youtubeを開くことでプロセスへの割り込み間隔が短くなり、細かな粒度でWindows上のプログラムが実行されることが判りました。

Chrome系ブラウザは、Windowsノートパソコンをッテリーで利用する際には消費電力が大きくなる傾向があります。立ち上げているだけでも、その傾向があるので、不必要なときは終了しておいた方が電池が長持ちしそうです。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする