複数のWordファイルを一括でPDF化する

仕様書やマニュアルをWordで作成した後、納品用にPDF化、時刻設定を行う。
段々と1製品に対するマニュアル数が増えてきており、手作業が面倒になったので、
一括で全部の操作を行う方法が無いか調べていたら、以下のページが見つかったので、メモする。C#でWordファイルをPDFに変換する

予め、

  • Wordがインストールされていること
  • [COM]-[Microsoft Word 15.0 Object Library]の参照追加が必要。

であることに注意。
なお、Word2010なら14.0、2013なら15.0、2016なら16.0である。

いやー、びっくりするぐらい書くことがない。
怠惰な毎日を過ごした結果、技術ネタも尽きている。

Windows Server(Core)でエクスプローラを使う方法

Windows Serverは基本的にGUIがついているが、
Windows Server(Core)や、Hyper-V Server等、CUIしかないものも存在する。

これらはサイズも軽く、負荷も少ない(多分)という面で便利なのだが、
エクスプローラもないため、ちょっとしたファイルコピー、フォルダ権限付けを行いたいときもイチイチコマンドで行わなくてはならない。
共有フォルダなら外部のエクスプローラからアクセスすればよいが、そうでないとやはりコマンドでの実行になってしまう。正直、ちょっとした作業なのに一々コマンドを打つのも面倒だ。

ややハック的だが、Coreサーバーでもエクスプローラ(的)なものを使う方法がある。

1. コマンドプロンプトでnotepadと入力し、Enterを押下する
2. メモ帳が起動するので、「ファイル」の「開く」をクリックする
3. このダイアログ上でエクスプローラとほぼ同等の操作ができる

ちょっとした操作ならこの方がミスも少ないと思う。
ネットワークの共有フォルダを見たい場合は「ファイル名」の部分に「\\<アドレス>」を入力すればアクセス可能だ。
ex)\\TEST_Server

僕はcopyコマンドでコピー元とコピー先と間違える阿呆なので、この方法をよく使う。

IISRESETを行うbatが動かない・・・と思ったら(2017年初投稿)

本当に更新を定期的に実行するのは難しい。
今日は多分、今まででも1,2を争うレベルのくだらないミス。


WindowsでWebサーバーを構築する場合、
一般的にはIIS(インターネットインフォメーションサービス)を利用すると思う。
そして、キャッシュの開放や、IISで実行するコンポーネントを変更した場合には、IISを再起動するケースは多々ある。

IISの再起動は大変容易で、コマンドプロンプト(管理者権限)で
IISRESET
と入力し、Enterを押下するだけでよい。

夜間、定期的にIIS再起動行うするために、IIS再起動batを作成した。

間違えるような要素もないので、まず問題ないだろうと思っていた。
しかし、このbat、実行すると思うような動作をしてくれない。
下記のようになってしまう。

何故上手く実行されないか悩んでいたが、原因は単純だった。
ファイル名を「IISRESET.bat」にしていることが問題だった。
IISRESETにより、「IIS再起動」ではなく「IISRESET.bat」が再帰され、無限ループになっていた。

なので、「IISRESET実行.bat」とか、適当な名前に変更し、問題は解消した。


気付きそうで気付かないことろでした。これで1時間ぐらい悩んでしまった。。。

SmtpClientをSSL有効でメール送信する場合の注意点

SmtpClientクラスを用いて、メールを送信するプログラムがあるのだが、
どうもgmailをホストに指定した場合に動作しない。
設定値は以下の通り。

最初は何かしら設定が間違っているのだろうと思ったが、
下記のVBScriptでは問題なく送信ができる。
なので、設定値に間違いはなく、C#コードのコーディングミスと判断し、調査していた。

しかし、どうもミスらしき場所が見つからない。
エラーも「送信できませんでした」以上のことがでず、八方ふさがりとなった。

色々調べて、以下で解決した。

・ポートを465でなく587を用いる。

つまり、18行目あたりを以下のように修正し、問題は解消した。

どうやらこれは.NETの仕様で、
SmtpClientクラスはポート465をサポートしていないのだ。

SmtpClient.EnableSsl プロパティ
How can I send emails through SSL SMTP with the .NET Framework?

言われれば「なんだぁ」だが、VBScriptで送信できたことで、設定値を疑うことが遅れてしまった。
こういうことがあるから、MSDNはよく確認しなくては。

冬の軽井沢

既に寒い。
10月初めから既に寒かったけど、もうストーブなしで過ごすのはもう難しい。
来週、いや、もう今週か、今週スキー場が開くらしい。
おいおいもう冬か。秋とは何だったのか。

iOSのアップデートでPPTPが使えなくなったので、IPSecサーバーを構築中。
何度もめんどくさく成って挫折中。
LINUXで構築するより、なんかもう、IPSec機能付きルータ買った方が良い気がしてきた。

びっくりするぐらい最近は語る内容がない。
とりあえず、生存報告がてら、更新。

MyDNSの割当IPを定期的に更新(設定)する方法

以前の記事でVPN構築をしたとき、MyDNSについて触れることを予告していたので、書いておく。

一応、簡単にMyDNSが必要な理由をまとめておく。
VPNを構築して外部から自宅ネットワークにアクセスできるようにしても、
自宅のIPはプロバイダによって定期的に変わってしまう。
そのたびにイチイチ各機器の接続先IPを変えていては大変だし、
いざ外出先で気づいても変更後IPがわからないとどうしようもない。

そこで、IPと結びつくホスト名を取得する。それがDDNSだ。
ホスト名とIPを紐付けすることで、IPが変更されてもその変更後IPをホスト名に設定すれば、
引き続きホスト名からVPN接続ができるようになる。

そのDDNSサービスの1つがMyDNSである。
登録は簡単だし無料なので、上記リンクから画面に従えば良い。

さて、ここで「その変更後IPをホスト名に設定」と述べたが、
それは手動でやる必要がある。
しかし、できることなら自動でやりたい。

Windowsであれば、diceというアプリケーションを用いれば良い。
俺はMac環境なので上記方法は使えない。
おとなしく、以下のコマンドを実行する方法を取る。

<masterID>:と<password>の部分は自身の情報に変更する。
このアドレスにアクセスすればアクセス元IPがホスト名と紐づくので、curlコマンドでアクセスだけしている、という仕組み。

勿論手動でイチイチ起動するのは嫌なので、
Launchdで毎晩定期実行するように設定した。

LaunchdはMac版タスクスケジューラのようなものです。
このあたりで書いているのでご参考に。


新車を買いました。
引っ越し代金合わせて今月の出費は300万円ぐらいです。
ちょっと流石にきついかな。気持ち的に。

軽井沢移住

仕事の都合と自分の事情が絶妙にマッチした結果、8/1から軽井沢に移住した。
軽井沢というブランドに単純に憧れがあるし、この時期なら避暑になって丁度いい。
家賃が高そうなイメージがあったけど、東京に比べれば断然安い。
1SLDKの鉄筋コンクリートマンションに一人暮らし、さらに駐車場を別に借りるという贅沢をしているけど、それでも10万も行かない。
東京ならいくらかかるか、想像もしたくない。

ただ、ゴミの分類が面倒だ。
専用ごみ袋が必要だし、何より7時までに出せってなんだそれは。
夏季期間以外なら8時でもいいらしいが、東京の時は9時過ぎに出していたので結構堪える。
なので、まとめてごみ出しできる塵芥処理場を週一ぐらいのペースで使っている。
段ボールとはの資源ごみは普通のゴミ捨て場では受け付けてくれないので、もう全部塵芥処理場に持っていく生活になっている。

軽井沢は生活しにくいかと思っていたが、
スーパー(MATSUYAやTSURUYA)、コンビニがあるので何も不自由しない。
中軽井沢まで出ればラーメン屋も多いし、佐久平ぐらいまで行けば何でもある。

というか、Amazonがあるから本当に何も困らない。それを言っちゃあおしまいなんだけど。

机、椅子、本棚とかの家具は全てAmazonで揃えた。
Amazon便利すぎる。宅配業者さんいつもありがとうございます。
仕事で不在なのが申し訳なさすぎるので置き配してもらってもいいんですけど、まぁやってくれない誠実な業者が多いので中々。
そんなわけで、会社に送るという裏技を使いまくっているんですけどね。
会社今のところ俺しかいないし。
快適すぎるだろこれは。

TV買っていないので、NHK解約しなくちゃな。
ただ、調べると手順面倒なんですね。
完全に「全国民TVを持っている」という前提の制度になっているね。
地デジにしたのに、なんでBCASに課金という制度にしなかったんでしょうか。

めろんぶっくすとかが近くにないけど、まぁ通販あるのでそれも大丈夫。
というか、そこまで頻繁に行くところではないし。

まぁ、後は冬ですね。
スキーは楽しみだけど、寒さに耐えられるか、こうご期待。

生存報告

ブログを放置しすぎた。
とりあえず、以前ちらっと書いたHyper-V Server 2012 R2の構成方法についてでも書くか。
・・・と思ったけど、結局は下記リンクを観たほうが手っ取り早いんだよね。
Hyper-V ServerをGUIで使い、仮想マシンを作成してみる

一応、プロビジョニングもどきのScriptを書いてみた。
参考程度に。

実際、仮想マシンを立ち上げて遊んだりしているが、もっぱらの用途はファイルサーバーだ。
Hyper-V Serverは無料だがファイル共有機能はついているので、これだけで簡易なファイルサーバー用途は十分に満たせるのだ。


最近は仮想マシンとしてにWindows Server 2012 R2 評価版を入れ、ドメイン構成したりSharePointインストールしたりと無意味なことをしている。
技術的な進展はない。

作ろうとしていた書籍管理DBも面倒くさくて停滞中。
ASP.NETを勉強して、入力フォームちゃんと作ろうかしら。

外付けHDDに常用ファイル置いて、それを毎晩ファイルサーバーにバックアップしているんだけど、
もう外付けHDDやめてファイルサーバーを常用化したほうがいいのかねぇ。
なんだか無駄な構成に思えてきた。


あと、そろそろ軽井沢に転勤になる。
本当は来月だったんだけど、会社の都合で再来月になりそう。
住居契約済ませたあとなのに、なんというタイミング。

まとまりねぇなぁ。

BuffaloルーターでVPN環境を構築

なんとなく「大変なんだろう」という理由で敬遠していたVPN構築。
手持ちのBuffaloルータにVPN機能が搭載されていると今更知り、試してみたら一瞬で構築できてしまった。
試しに外から接続確認してみたら問題なく自宅サーバに接続できる。

使っているのはやや古いWZR-S900DHPというものなのだが、多分Buffalo機器なら他でもそんなに違わないと思うので、
構築の方法をメモしてみる。


・Buffaloルータ側の設定

  1. ルータの管理画面にログインする
    デフォルトならブラウザで192.168.11.1にアクセスし、admin/passwordでログインできる。
  2. 「詳細設定」を開く
    WZR-S900DHP_-_BUFFALO_AirStation
  3. グローバルIPアドレスを確認する
    「ステータス」→「システム」→「Internet」→「IPアドレス」から確認できる。
    WZR-S900DHP_-_BUFFALO_AirStation-1-1
  4. PPTPパススルーをONに設定する
    「セキュリティ」→「VPNパススルー」を開き、「PPTPパススルー」にチェックを入れ、「設定」をクリックする。
    WZR-S900DHP_-_BUFFALO_AirStation-2
  5. PPTPを設定する
    「Internet」→「PPTP」を開き、「PPTPサーバー機能」を「使用する」にチェックを入れる。
    他の項目は特に設定する理由がなければデフォルトのままで良い。
    WZR-S900DHP_-_BUFFALO_AirStation-3-1
  6. PPTP接続情報を設定する
    「PPTP接続ユーザーの編集」を開く。
    任意の「接続ユーザー名」「パスワード」を入力する。
    「拡張設定」は特に設定する理由がなければデフォルトのままで良い。
    最後に「新規追加」をクリックする。
    WZR-S900DHP_-_BUFFALO_AirStation-4

以上でルーター側の設定は完了である。
この状態でもうVPNが利用可能である。
分かる人は「手順3」で確認したIPに対し、「手順6」で設定したユーザー情報でVPN接続を試みてほしい。
プロバイダ等で規制されていないかぎり問題なく繋がり、外部からでも自宅ネットワークにアクセスできているはずである。

iPhoneで接続するときは以下のページを参考にVPN(PPTP)を設定すると良い。
iOS:VPN を設定する

ただし、このままだとグローバルIPでの接続になる。
即ち、(固定IPを契約していない限り)IPが変わってしまったときにアクセス不可になる。
これを防ぐためにはDDNSを利用すれば良い。

その利用方法は次回にまとめる。


紆余曲折あって、現在は東京都のウィークリーマンションに住んでいます。
東京の中心に住むと相当に便利ですね。
というか、Amazon Prime Nowが便利すぎる。
注文して1時間、は別途代金かかるけど、即日配送なら無料だし結局2時間程度でつくし、凄いですね。
ますます引きこもりが捗りますねぇ。


追記(2017/1/24)

今更だが、iOS10ではPPTP接続は利用できなくなった。
現在はIPSecが使えるWXR-1900DHP2を用いている。
一人暮らしにはオーバースペックだけどね。仕方ないね。

Windows ServerにGoogle Driveをインストールするときの注意点

以前の記事で触れたまま放置していたので一応書いておく。

Google DriveはWindows Server系は正式サポートしていないが、普通にWindowsクライアントのインストールが可能だ。
しかし、インストールした後、いざ認証しようとしてアカウントを入力すると以下のようになる。

GD

どうやらCookieが無効なようなので、有効化しよう。
・・・としても、これが何のブラウザなのかさっぱりわからないのでどうしようもない。

調べてみると、どうやらEdgeではなくてInternet Exploereとして動作しているようだ。
そこで、IEのインターネットオプションの設定を変更してみたが、どうもうまくいかない。

最終的に、
IEのhttps://accounts.google.com/を信頼済みサイトに登録する
という方法で解決はした。

要するにインターネットオプションのどこかでどこか設定不備があったのだろう。
しかし、どこだったのか。Cookie系の項目は全て有効にしていたと思うのだが。
どうしても腑に落ちないが、とりあえずこれで認証ができるようになったので、メモしておく。