なぜ中国は民主化したくてもできないのか

うーん、できないわ(笑

国史は全然知識がないんですが、この本の構成はとても親切で読みやすかったです。
まず現在の状況を踏まえて、過去の出来事をみて結論に至るといった流れが非常にきれいです。

毛沢東の反省を踏まえて、鄧小平が終身制を廃止し、江沢民胡錦濤と続いたが、習近平が今になって皇帝制に戻るような事をしているのは、中国の歴史を踏まえると必然ですね。

中国の歴史を知れば知るほど、国としての形がまとまっていないので、中国の歴史と言えるのか?と疑問が深まるばかりです。
正確には、現在の中華人民共和国の土地で過去にあった出来事ぐらいに思えます。

殷、周を王の時代とし、秦から清までを皇帝の時代とわけ、王の時代は封建制で、皇帝の時代は中央集権制と、政治制度の違いからくるメリット、デメリットの考察は非常に面白かった。

秦の始皇帝は非常に有名で偉大な感じがしていましたが、秦という国は15年で滅亡していのはショックでした。
始皇帝から始まった皇帝制の毒が及ぼす影響の凄さも感じますね。

皇帝=天子という考え方も非常に面白い。
パッと見て宗教ですし、拡大志向を持っているあたりがカトリックにも似た何かを感じます。

随という時代も高句麗を潰そうと必死になっているのも面白い。
韓国系の本を読んでいるときに、歴史的にみて、韓国よりも北朝鮮に英雄と言われる人物が多いといった記述がありました。
たぶん、高句麗時代に目上である随(中国)に対して、戦争で勝っているので、そういう事なのかなぁと、点と点が繋がった気がしました。

清の時代では、日本は琉球処分朝鮮半島独立をやっていて、(清に)とんでもないダメージを与えていますね。
この流れを見ると、中国は、沖縄を手に入れたくてしょうがないですね。

清滅亡後の孫文袁世凱蒋介石毛沢東など激動は非常に良いですね。
ここらへんは別の本で詳しく読みたいです。

歴史を知り、その国の論理を知るのは非常に面白いですね。
彼を知り己を知れば百戦殆うからずという言葉がありますが、相手を知る事の重要性を学べます。
とてもいい本です。

Microsoft Visual Studio 2017 Installer で インストール後にアプリケーションを起動したい

インストール後、すぐにアプリケーションを起動するようにしたい。
インストールフォルダに移動してEXEファイルを実行、ショートカットを実行するのが面倒。

前提条件

インストーラークラス を作成

Windows フォームアプリケーション のプロジェクトに インストーラークラス(Installer.cs)を作成する。
アプリケーションの起動は、インストール後の処理なので、Commitメソッドをオーバーライドして、新たなプロセスを開始するように処理を記述する。
AssemblyPath を指定して取得できるパラメーターは、アプリケーションのインストール先のパスになっている。
例)C:\Program Files (x86)\Default Company Name\Setup1\WindowsFormsApp1.exe

using System.Collections;
using System.ComponentModel;
using System.Diagnostics;

namespace  WindowsFormsApp1
{
    [RunInstaller(true)]
    public partial class Installer : System.Configuration.Install.Installer
    {
        public Installer()
        {
            InitializeComponent();
        }

        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);
            Process.Start(this.Context.Parameters["AssemblyPath"]);
        }
    }
}

カスタム動作で指定をする

Visual Studio Installer プロジェクトの ファイルシステム > Application Folder に、プライマリ出力で Windows フォームアプリケーション を追加する。
その後、カスタム動作にて、プライマリ出力 Windows フォームアプリケーション(WindowsFormsApp1)を追加する。
Commitメソッドしかオーバーライドしていないが、全てに対して指定を行わないと、うまく動作しなかった。
f:id:kameya_takefumi:20180906152451p:plain
設定完了。
Windows フォームアプリケーション をビルド後に Visual Studio Installer プロジェクト をビルドして、インストールして動作を確認する。

余談

情報を探していると、Visual Studio Installer プロジェクトのカスタム動作で CustomActionData に [TARGETDIR] を指定し、インストーラークラス で、その値を取得して処理を行うパターンが見受けられた。
このやり方はナンセンスすぎるように思える。

Visual Studio Installer プロジェクト で指定されるカスタム値を、別プロジェクトのインストーラークラスが、それをある前提で値を受け取り処理をするのは、依存度が高くて危険すぎる。
結局、その値をゴチャゴチャやって、this.Context.Parameters["AssemblyPath"] で取れる値と同じものを作成していたりする。
動けばいいんですけど、私は許容できないなぁ。

戦争にチャンスを与えよ

非常に面白かった。

本のタイトルは過激ですね。
内容は非常に現実的な内容でした。

読み終わって思うのは「平和を望むなら、戦争を知る必要がある」でした。
この本にも「平和を望むなら戦に備えよ」という格言が書かれていました。

日本で戦争となると、個人の悲惨な体験などに焦点がいきがちですが、広い視野で戦争とは何かを知る必要がありますね。

平和と戦争って表裏一体だという事に気づきました。
戦争の始まりは平和の終わりを意味し、戦争の終わりは平和の始まりを意味するからです。

戦争の始まりを知れば、平和を長く続ける具体的な行動が取れますし、戦争の終わりを知れば、いかにして戦争を終わらせて、平和な世にするのか具体的な行動が取れます。
「まぁ大丈夫だろう」ではなく、知る必要があります。


読んでいて疑問に思える部分もありました。
たびたび降伏すれば平和が訪れる的な発言がありました。

ですが、国にとって譲れない部分があり、日本だと天皇など国体に大きく関わる部分です。
降伏する事で、それらが大きく損なわれる事になれば、その後の平和、復興にどれだけの影響があるのか、わかりません。

著者は俯瞰して物事を見ているので、降伏すれば、生命という1つの単位がより残るよ、ぐらいで考えて発言していそうです。
それまで現実的な理論で語っていたのに、急に投げっぱなしというか雑な意見に思えました。
ここらへんは、考え方の根底に何があるのか知らないと、わかりようがないですが。


戦略の重要性については、戦国武将を上げて説明していて非常にわかりやすく親近感がわきます。
大きな戦略の前には、1つの戦術的勝利なんて意味がないのは、悲しいけど真理ですね。

逆説的理論(パラドキシカル・ロジック) という概念は凄いですね。
戦略は相手がいる事を前提とし、理論が適用される点を意識する事が重要ですね。
とてもできそうにないですが。

色々と示唆が多く、疑問もあり、読んでおいた方がいい一冊です。

Microsoft Visual Studio 2017 Installer Projects で スタートアップ に EXEファイル を設定する

インストーラーにて配布する exeファイル をスタートアップに設定して、ログオン時に自動起動するようにしたい。

前提条件

ファイルシステムを表示

f:id:kameya_takefumi:20180816104733p:plain

ファイルを追加

  • File System(Setup1) → Application Folder → 右クリック → Add → ファイル を選択

f:id:kameya_takefumi:20180816105000p:plain

  • 選択した exeファイル が追加される事を確認

f:id:kameya_takefumi:20180816105155p:plain

レジストリを表示

f:id:kameya_takefumi:20180816105341p:plain

キーを追加

  • キーの追加で HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run までのパスを作成

f:id:kameya_takefumi:20180816105655p:plain

文字列の値を追加

  • Name : test, Value : [TARGETDIR]WindowsFormsApp1.exe

f:id:kameya_takefumi:20180816110055p:plain

ソリューションのビルド

  • ビルド → ソリューションのビルド

インストールを行いレジストリの値を確認

  • レジストリエディターで HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run に EXEファイルまでのパス が設定されている事を確認

f:id:kameya_takefumi:20180816111018p:plain

マシンを再起動しログオン

Microsoft Visual Studio 2017 Installer Projects で すべてのユーザー/このユーザーのみ の選択肢を非表示にする

すべてのユーザー/このユーザーのみ の選択肢が不要なため非表示する。

f:id:kameya_takefumi:20180815115351p:plain

前提条件

ユーザーインターフェイスを表示

f:id:kameya_takefumi:20180815115905p:plain

インストールフォルダーを選択

  • User Interface(Setup1) → インストールフォルダー を選択

f:id:kameya_takefumi:20180815130809p:plain

InstallAllUsersVisible を Flase に変更

  • プロパティ → InstallAllUsersVisible を Flase に変更

f:id:kameya_takefumi:20180815131021p:plain

ソリューションのビルド

  • ビルド → ソリューションのビルド

インストーラーを実行

  • 選択肢が非表示な事を確認

f:id:kameya_takefumi:20180815131423p:plain

余談

InstallAllUsersVisible というプロパティ名から、デフォルトでは このユーザーのみ が正のようです。

ソリューション エクスプローラー → Setup1 → プロパティ → InstallAllUsers というプロパティ項目があります。
デフォルト値は Flase で True に変更すると、インストール時に すべてのユーザー にチェックが入ります。
この値を変更しても、インストールフォルダーのパスに変更はありません。

ここだけの挙動を見ていると、すべてのユーザー/このユーザーのみ の選択は、ガワだけって事なんですかね。
選択によって処理を切り分けできる実装をする前提なんでしょうか。
もしかしたら、ショートカットの配置場所を、よしなにやってくれるのでしょうか。

正式なドキュメントを読まないとダメそうです。