Windows 10 のライフサイクル
Windows 10 の Fall Creators Update がリリースされました。 過去の更新プログラムのサポート終了を調べましたのでメモします。
- Windows ライフサイクルのファクト シート
更新プログラムと Service Pack
デスクトップ オペレーティング システム | 提供日 | サポート終了 |
---|---|---|
Windows Vista SP1 | 2008年2月4日 | 2011年7月12日 |
Windows Vista SP2 | 2009年5月26日 | 2017年4月11日 |
Windows 7 SP1 | 2011年2月22日 | 2020年1月14日 |
Windows 8.1 | 2013年10月18日 | N/A |
Windows 10 Version 1507 (初期バージョン) | 2015年7月29日 | 2017年5月9日 |
Windows 10 Version 1511 (November Update) | 2015年11月10日 | 2017年10月10日 |
Windows 10 Version 1607 (Anniversary Update) | 2016年8月2日 | 2018年3月(仮) |
Windows 10 Version 1703 (Creators Update) | 2017年4月5日 | 2018年9月(仮) |
Windows 10 Version 1709 (Fall Creators Update) | 2017年10月17日 | 2019年3月(仮) |
Windows 10 サポートのロードマップ
Anniversary Update は最近出たような気がしていましたが、来年3月にはサポート終了します。
nginx を Windows サービスとしてインストールする
はじめに
常時動作しているWindowsマシンがあり、 nginx と Webアプリケーション(nodejsまたはGoやPythonで記述)の組み合わせて提供することができそうで環境構築をしたのでメモします。
nginx は Windows の場合コマンドラインアプリケーションとして動作させることができます。しかしサービス化は、将来の予定にはあるようですが、現時点ではまだ提供されていません。
winswを使って実現しているblogがいくつかありましたので、最新のバージョンの手順です。
- nginx 1.11.10 (現時点のmainlineバージョン)
- winsw 2.0.2.0 (現時点の最新)
nginx のインストールと動作確認
まずは、単体アプリケーションとして起動を確認します。
- 公式サイトから zip をダウンロードして、C:\nginx に展開します
- コマンドプロンプトを開きます。
- start nginx にて起動します
- Windows セキュリティの重要な警告 ダイアログが表示されますので「アクセスを許可する(A)」を選択します
- http://localhost をブラウザで開いてWelcome to nginx! ページが表示されることを確認します
正しくインストールされていることを確認できました。
Windowsサービス化
次に、Windowsサービス化をします。
サービス化には、任意のプロセスをサービス化することができる winsw を利用します。
WinSW をダウンロードします
- WinSW 2.x系は、.NET Framework 2系(~3.5) と、 .NET Framework 4系が提供されています
- 現時点では、 V2.0.2 が 最新です
ダウンロードした WinSW.exe を nginxsvc.exe にリネームします。(この名前は好きな名前で良いです)
<service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>c:\nginx\nginx.exe</executable> <logpath>c:\nginx\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p c:\nginx</startargument> <stopargument>-p c:\nginx -s stop</stopargument> </service>
管理者のコマンドプロンプトを開きます
C:\nginx\nginxsvc.exe install
を実行します
起動
- nginx がサービスとして登録されていますので右クリックして起動します
エラー
あれ、エラーになりました。
nginxsvc.err.log
にエラーが出力されていますので、中身を確認します。
nginx: [alert] could not open error log file: CreateFile() " c:\nginx/logs/error.log" failed (123: The filename, directory name, or volume label syntax is incorrect) 2017/03/06 09:35:40 [emerg] 10528#10192: CreateFile() " c:\nginx/conf/nginx.conf" failed (123: The filename, directory name, or volume label syntax is incorrect)
ファイル、ディレクトリ名が不正のようです。
起動オプションの修正
nginxsvc.xml の定義にて、nginx を起動時の引数として -p オプションで指定しているのですが、このあたりが影響してそうです。 削除して試してみます。
C:\nginx\nginxsvc.exe uninstall
にて、一度アンインストールします。
<service> <id>nginx</id> <name>nginx</name> <description>nginx (powered by WinSW)</description> <executable>c:\nginx\nginx.exe</executable> <logpath>c:\nginx\</logpath> <logmode>roll</logmode> <depend></depend> <startarguments></startarguments> <stoparguments>-s stop</stoparguments> </service>
xmlファイル修正 【2017/3/6 15時追記】
- startarguments 、 stoparguments (複数形にする)必要があります
- これにしておかないと Windowsサービスが停止できない状況が発生します
実行
C:/nginx/nginxsvc.exe install
を再度実行します。
うまく起動しました。 ブラウザで http://localhost を開いてみます。
logs\access.log にもアクセス記録が追記されていますので、 conf フォルダや logs フォルダにもアクセスできています。
参考
- https://vexxhost.com/resources/tutorials/nginx-windows-how-to-install/
- startarguments stoparguments の誤りが含まれていますので注意
nginx
winsw
Windows 10 と Windows 8.1 を判定する
動作しているOSのバージョンを取得して判定する必要があり、 Environment.OSVersion を用いて Major と Minorで判定するようにサンプルコードを動作させてみました。
しかし、Windows 10 でも Windows 8.1 でも Major が 6 のまま。
Windows 10 では majorは 10 のはず...。
サンプル
static void Main(string[] args) { var os = Environment.OSVersion; Console.WriteLine("Version Information:"); Console.WriteLine(" Major: {0}", os.Version.Major); Console.WriteLine(" Minor: {0}", os.Version.Minor); }
解決策
- Visual Studio 2015 にて、マニフェストファイル(app.manifest) を追加。
- Windows 10 の部分のコメントを外してリビルド。
過去の互換性を保つために、OSVersionはWindows8のバージョンを返す仕様のようです。
マニフェストファイルでサポートOSを明示することで回避できます。
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- このアプリケーションがテストされ、協働するようテストされた Windows バージョンの 一覧。適切な要素をコメント解除すると、最も互換性のある環境を Windows が 自動的に選択します。--> <!-- Windows Vista --> <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> <!-- Windows 7 --> <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> <!-- Windows 8 --> <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> <!-- Windows 8.1 --> <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> </application> </compatibility>
実行結果
- Windows 10 = Major 10 が取得できました
Version Information: Major: 10 Minor: 0
参考
- 作者: arton
- 出版社/メーカー: 翔泳社
- 発売日: 2016/06/09
- メディア: Kindle版
- この商品を含むブログを見る
Julia Studio で始める Julia 入門
julia とは
ハイレベルでハイパフォーマンスの動的プログラミング言語です。文法は他の言語と似ているようです。
去年くらいからたまに話題にならないレベルで、周りでも話にも聞かないレベルですが、将棋の電王戦のあるプログラムが juliaで実装されているという話を聞いて興味を持ちました。
R は新しいExcel。 Python は新しいR。julialang は新しい Python とかいうつぶやきもあり、あまり話題に上がらないけど、ベンチマークとかみると非常に優秀なので気になっていた julialangを少し触ってみることにしましょう。*1
Julia Studio
インストール
Julia Studio をダウンロードして入れましょう。Qtで実装されているようなので、Windows, Mac, Linux があります。ここでは Windows で進めますね。
Finish。これといって問題なし。
julia studio を入れると、julia 自体も下記インストールされるようなので、これ一本でとりあえず julia を始めることができます。
インタプリタの設定もできますので、別に入れた julia のバイナリを指定することもできます。
現時点の 0.4.3 を入れると、julia の 0.2.0 (最新)が入ったのでひとまずこれでOK。
起動
では、Julia Studio を起動してみましょう。
ふむ、Packages とかいろいろあるようですねぇ。
Githubからメタパッケージらしきものをひっぱってきて、どうやらパッケージリストを作成してくれるみたいです。これはJulialangとしてサポートしている機能なんだろうか、それとも Studioの機能なんだろうか... いきなりIDEから入る弊害ですね。あとで調べてることにして先にいきます。
チュートリアル
julia studio に チュートリアルのページ があるので実行してみる。
Hello World
println("Hello, World!")
をhello.jl というファイルで新規作成すればOK。 console (いわゆる REPL)があるので、そちらに入力してもOKですが、まぁチュートリアルに従ってみます。
F5 を押すと実行されます。F5 で Run って個人的に身体に馴染んでいていい感じです。
fizzbuzz
さて、チュートリアルは続きますが英語を読むのも飽きますね。
ということで、文法もよくわからぬまま、fizzbuzz を実装してみます。
Julia Documentation — Julia Language 0.2.0 documentation この辺に、ドキュメントがあります*2
関数定義は、function で始まり、 end までのようですね。
条件分岐は、if else elseif end ですね。
演算子 は、だいたいPythonと一緒ですね
さくさくとエディタに書いてみます。
もっともベタな実装で、こんな感じですね。
インデントは 8 タブなんだけど、これが標準なんだろうか。ちょっときもい*3
なかなか手軽で性能が良いのであれば良さそうですね。
Pythonなみのコミュニティやライブラリが充実するような流れになれば主流になるかもしれませんね*4
環境
- Windows 7 64-bit
- Julia Studio Version 0.4.3 (Julia 0.2.0)
参考
Windows 7 / Python 2.7.6 にて ez_setup.py にて UnicodeDecodeError が出て困ったけど解決した件
Windows上でソースコードから開発版TortoiseHg をビルドしてみる
Mercurial & TortoiseHg Advent Calendar 2013 - connpass の 8日目のエントリです*1
TortoiseHg を 使っているとちょっと改良してみたいなぁと感じることもありますが、Windows上のビルド環境構築はけっこう面倒だったりしますね。Windows 上で環境をスクラッチでソースコードからビルドしてみましたのでご紹介します。
環境構築の概要
Windows 上での TortoiseHg のビルドは、 thg-winbuild リポジトリを用います。*2
手順は、TortoiseHg の thg-winbuild リポジトリの README に記載されている内容を参考にしています。
https://bitbucket.org/tortoisehg/thg-winbuild/src
ここでは Windows 7 の 32-bit および 64-bit を準備します。
Mercurial ビルドに必要なもの
まずは、Mercurial をビルドするために必要な環境を準備しましょう。
Python 2.7.6
Windows用のインストーラーからインストールします。ここでは 2.x系の最新である 2.7.6 をインストールします。
32-bit http://www.python.org/ftp/python/2.7.6/python-2.7.6.msi
64-bit http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi
- インストール先
C:\Python27
C:\Python27-x64
C++ Compiler
Visual Studio 2008 Express Edition を入れましょう
- Visual Studio 2008 Express Edition CD(DVD)イメージ版のダウンロード
http://go.microsoft.com/?LinkId=9348306
Visual Studio 2008 は Python 2.7 の場合の組み合わせです。(MinGW/MSYS は使わないほうが良いです)
gettext
下記からセットアッププログラムを最新版をダウンロードします
http://gnuwin32.sourceforge.net/packages/gettext.htm
gettext-0.14.4.exe が最新。
py2exe
http://sourceforge.net/projects/py2exe/
http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
32-bit py2exe-0.6.9.win32-py2.7.exe
64-bit py2exe-0.6.9.win64-py2.7.amd64.exe
上記 exe を実行してインストール。
Windows Installer XML
WiX の最新安定板を用いてよいでしょう。
ちなみに WiX38.exe が現時点の最新ですのでこれを入れます。*4
http://wix.codeplex.com/releases/view/115492
setuptools
こちらも PyPI で提供されているパッケージになります。
http://pypi.python.org/pypi/setuptools
Windows の場合は、下記手順でインストール可能です。
https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py を実行しましょう。
C:\Python27\python.exe ez_setup.py C:\Python27-x64\python.exe ez_setup.py
docutils
PyPIで提供されている Pythonパッケージ のひとつです。
そして easy_install docutils を実行すればOK。
C:\Python27\Scripts\easy_install.exe docutils
ドキュメントのビルドに必要な環境準備
MiKTeX (to build PDF docs)
setup-2.8.3553.exe をダウンロードし実行したところ、2.8はもうサポートが切れているといったメッセージが出て入らない。最新2.9 インストーラーをダウンロードしインストール。
HTML Help Workshop (to build CHM docs)
htmlhelp.exe をインストール。
TortoiseHgのビルド・インストーラーに必要なソフトウェア
PyQt 4.8 or later
http://www.riverbankcomputing.co.uk/software/pyqt/download
Pythonのバージョンとあわせたバイナリをダウンロード。
PyQt4-4.10.3-gpl-Py2.7-Qt4.8.5-x32.exe
pywin32
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/
pywin32-218.win32-py2.7.exe
SVN
TortoiseSVN http://tortoisesvn.net/downloads.html
TortoiseSVNインストール時に、 svn のコマンドライン版を選択しインストールしておく。
comtypes (no longer optional)
- 32-bit
http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/
http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/comtypes-0.6.2.win32.exe/download
- 64-bit
http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/comtypes-0.6.2.zip/download
http://sourceforge.net/tracker/?func=detail&aid=3036368&group_id=115265&atid=692940
64-bitの場合は、ソースコードからインストールしましょう。
上記パッチは trunk に取り入れられているので、svnのtrunkからインストールします。
svn checkout https://svn.code.sf.net/p/comtypes/code/trunk comtypes-trunk cd comtypes-trunk C:\Python27-x64\python.exe setup.py install
Subversion Python bindings (no longer optional)
https://bitbucket.org/tortoisehg/thg-winbuild/downloads/svn_1.7.5_py27_x86.zip
https://bitbucket.org/tortoisehg/thg-winbuild/downloads/svn_1.7.5_py27_x64.zip
zip を解凍し、 svn と libsvn フォルダを site-packages 以下にコピーする
C:\Python27\Lib\site-packages
C:\Python27-x64\Lib\site-packages
以上で必要なビルドに必要なソフトウェアの準備が完了しました。
ビルド手順
ソースコード取得
コマンドプロンプトで下記コマンドを実行。
hg clone https://bitbucket.org/tortoisehg/thg-build cd thg-build python setup.py
スクリプト調整
thg-build/winbuild/setup.py の下記 try_paths の引数に 2.9 のパスを追加しておきます。
if not pdflatex: found = try_paths([r'\MiKTeX 2.7\miktex\bin\Pdflatex.exe', r'\MiKTeX 2.8\miktex\bin\Pdflatex.exe', r'\MiKTeX 2.9\miktex\bin\Pdflatex.exe'])
その他
もし mercurial など tortoisehg でビルド対象のパッケージがすでにインストールされていたら該当パッケージを別名にするか削除するかしておきましょう。
参考
最新TortoiseHg の各ソフトウェアバージョン TortoiseHg 2.10.1 時点
記バージョンですが、ここでは最新開発版をビルドしました。
- 作者: 藤原克則
- 出版社/メーカー: 秀和システム
- 発売日: 2013/02
- メディア: 単行本
- 購入: 3人 クリック: 13回
- この商品を含むブログ (10件) を見る
.NET Framework のバージョンを確認する
調べたらバッチファイルで確認する方法 があるので、Windows8 で試してみました。