タスクスケジューラの結果通知

Windows Serverで日時作業や定期的なメンテナンスを行う場合、タスクスケジューラで実行することが多い。
しかし、そのタスクが実は失敗していたが、それに気付かずずっと運用していた・・・というシナリオは思ったより多い(自分の周りでは)。
本来的にはそのタスクにエラー通知なりを入れておくのが筋なのだが、ロジックが込み入っていてすぐにはエラー通知が実装できない場合がある。

暫定処理だが、そんな場合はタスクの結果を定期的に確認するタスクを仕込むと楽である。
例えば、AM6時には完了しているはずのタスク「TaskName」であれば、以下のTaskCheck.ps1をAM6時に実行するように設定すればよい。
なお、このサーバーから利用できるSMTPサーバがあることを前提としている。

繰り返しだが、暫定対応策である。
本来は本ロジックにエラー通知を仕込むべきだと思う。
せめてタスク失敗時のイベントをトリガーにしてエラー通知をさせたいのだが、意外とその方法が見つからず原始的な方法にしている。
一応、想定した時間(例ではAM6時)に終わらなかった時のことを考えて、実行中の場合は別の通知を行うようにほのかな工夫はしている。

ただ、ごちゃごちゃして専門家でないと分からないルーチンより、このほうがなんちゃって管理者でも理解しやすく、意外と受け入れられやすかったりする・・・


Mac miniを買った。
ついでもトラックパットとキーボードも新調し、20万円なり。
節約しなきゃ・・・なのだが、どうも散財癖が身についている。
ちょっとしたことで東京へ往復12,000円弱かけて行っちゃうし。

だからって訳では全くないけど、いい加減結婚したい。

【デュエルリンクス】デッキメモ

Twitter見ると分かる通り、かなり遊戯王デュエルリンクスにハマっている。
基本テンプレ構成が強いのは言うまでも無いが、
そんな中でもちょっと少数派で、多少工夫が入っているデッキを組んで頑張っているのでメモしてみる。
勝率はレジェンド帯での感覚値なのでご了承ください。

・サイバー流デーモン

今、一番メインで使っているデッキ。
基本ギミックはデーモンデッキで、とにかく墓地肥やし第一。
そして「デーモンの呼び声+悪魔族」or「デーモンの雄叫び+ヘル・エンプレス・デーモン」で墓地の上級デーモンを蘇生。
いずれのコンボもそろわないパターンが少なくないが、その場合はスキル「サイバー奥義」でモンスターを2体以上出し、
上級悪魔族をアドバンス召喚して事故回避する。
ただし、今のワンキル環境ではスキル発動前にライフ0にされてしまうので、ダメージ調整用に「クリボー」を3積みしている。
別に「クリボール」でもいいと思う。俺が持っていないだけです。。
「ライトロード・ライラ」は増やしてもいいかもしれないが、
「ジェネシス・デーモン」や「デーモンの呼び声」のコストに出来ず、デッキが回らなくなる可能性を考えてピン刺しにしている。
あとそもそも俺が1枚しか持っていないのも大きな理由。
なお、墓地肥やししまくるので考えなしに使うとデッキ切れを起こす。
かといって肥やさないわけにもいかない状況が多く、デッキは気持ち多めになっている。これでも問題なく回る。

勝率は体感6割ぐらいあると思う。
このデッキのみ使用でレジェンド3まで上がれ、後1勝でデュエルキングにまでなったが、
そこから空牙団にボコられ一気にレジェンド1まで落ちた。。。
今またこのデッキでレジェンド2に昇格して健闘中。

・バージェストマデッキ

特に工夫はないバージェストマデッキ。
ドンパ等のモンスター効果が効かないところや、「下剋上の首飾り」の効果を知らない人が結構いてそういう勝ち方が正直多い。
湿地草原はもう1枚あった方がいいと思う。俺が持っていないだけです。。
勝率は正直4割ぐらい・・・

・バージェストマHERO

上記のデッキの対戦がいつも長くなってしまうので、
決定力を求めた結果、「V・HERO ウィッチレイド」と「マスク・チェンジ」でのワンキルを考えた。
正直、コンセプトは悪くないと思っているのだが、
「V・HERO ウィッチレイド」と「M・HERO 闇鬼」を2枚しかもっていないからか、それ以前に構築が悪いからなのか、
勝率は1割ぐらい・・・
バージェストマで延命しながらキーカードをそろえるスタンスなので、3積みじゃないとやっぱり駄目なのかもしれない。

あとはシーステルス空牙団と芝刈り魔導書をちょくちょく使っています。


いつもと相当毛色の違う記事になってしまった。
一体誰が望んでいるのかとは思うが、まぁ自分用メモってことで。

ARR(IISのリバースプロキシ機能)でアップロード容量制限に引っかかった場合の対処法

会社のネットワーク関連の一部を管理しているが、
そのうちの一つにARR(Application Request Routing)が含まれている。
ARRの内容は下記リンクが分かり易いが、要はリバースプロキシだ。
参考: https://codezine.jp/article/detail/7018

特に問題なく運用していたのだが、最近あるシステムに大きい容量のデータを送ると404エラーになることが分かった。
サーバーログから調査しようとしたが、どうもサーバーに通信自体が来ていないように見える。
そこで、経由しているARRのログを確認したところ、こちらで404エラーになっていることが分かった。

ARRサーバーのほうのIISログを確認したところ、ステータスコードは404でサブコードは13であることが分かった。
そこで検索すると以下の情報がヒットした。
インターネット インフォメーション サービス 7.0 を実行しているサーバー上でホストされている Web サイトにアクセスするときにエラー メッセージ:「HTTP エラー 404.13-CONTENT_LENGTH_TOO_LARGE]
ここの解決策を行い、問題は解決した。
なお、こちらの環境ではrequestFilteringノードは見つからなかったが、手動で追加して特に問題なく反映された。


画像管理システムでも作ろうかしら。
昔作ったのはXMLでタグ情報持たせていたからパフォーマンス面から実質使えない状態だったけど、
DBにバイナリ入れて管理させるとどうだろう。
やっぱりDBとバイナリじゃそれはそれでパフォーマンス悪いかなぁ。

Windowsのパフォーマンスモニターの設定エクスポート、インポート

Windows Serverを運用しているのであれば、トラブル時の調査に備え、
パフォーマンスモニターを設定しておくことがほぼ必須手順になる。
複数台を運用している場合、どのサーバーにも共通のモニターを設定することになる。

なので、取得するカウンター設定を丸ごとコピーしたくなる。
結論から言うと簡単にできるのだが、意外とネット上に情報が無かったのでメモする。

【エクスポート】
1. パフォーマンスモニターを開く。
2. エクスポートしたいデータコレクタセットを右クリックし、[テンプレートの保存]をクリックする。
3. 任意の場所に保存する。

【インポート】
1. 【エクスポート】で保存したファイルを任意の場所に設置する。
2. パフォーマンスモニターを開き、データコレクタセットを新規作成する。
3. [テンプレートから作成する]を選択し、[次へ]をクリックする。
4. [参照]をクリックし、先程設置したファイルを選択する。
5. 以下、ダイアログに従って設定する。

まぁなんも難しいところもないんだけど、
インポート時には「新規作成」から行うのが意外と盲点になってた。


Mac Miniが欲しい。新しいのでないかなぁ。

会社のお荷物になりつつあり結構鬱気味。
運動して気を晴らそう。

SharePoint Foundation 2013の「構成データベースの設定」で信頼できないドメインからのログインと言われる場合の対処法

先日、SharePoint Foundation 2013を構成している際に今までに見たことがないトラブルが発生した。
最終的に解決できたものの、理屈が不明のため、ここにとりあえずでメモしておく。


環境

  • ドメインサーバ
  • DBサーバ(SQL Server 2014)
  • APサーバ(SharePoint Foundation 2013)

現象

  • 「構成データベースの設定」で情報を入力し、「次へ」をクリックしても「サービスが実行中かご確認ください」というエラーメッセージが表示される
  • DBサーバのイベントログには「このログインは信頼されていないドメインからのログインなので、Windows 認証では使用できません」と表示されている
  • 勿論ログインしようとしているユーザー(設定画面で指定したユーザー)はSQL Severと同ドメインの、権限も有るアカウントである
  • FWを切っても状況は改善しない

参考:「構成データベースの設定」画面


解決方法

正しいドメインのユーザーなのに信頼できないドメインと言われ途方にくれていたが、
まさかの部分を修正して解決した。

APサーバーのhostsファイルにドメインサーバ、DBサーバ、APサーバの名前解決情報が入っていた。
ドメインに所属して同じDNSを用いている以上不要なのでこのhostsファイルの上記名前解決情報を削除したところ、問題が解決した。

理屈は全くわからないのだが、名前解決情報があるために一部ドメインを経由せず認証を行うような挙動になったのかな、と推測している。
再現性を取る時間もないので、とりあえず経験した事実だけ書き記しておこう。


そろそろ転職を考えなくちゃいけないかなぁ。
日々勉強、常に時代に追いつき、追い越さなくてはならない「技術者」には僕は成れない。
自分に見切りを付けてもいい時期かもしれないな。

基本情報技術者試験体験記

去年、会社で突然、基本情報技術者試験の取得が義務付けられた。

2016年10月、先輩の「こんなの何も対策しなくていい」という言葉を完全に鵜呑みにし、
本当に全く何も対策せず受験した結果、余裕で落ちた。

2017年4月、勉強しようと参考書を買ったものの、業務が忙しくなり結局一回も過去問すら見ないまま受験し、
午前59.5点という芸術的な点数を記録して落ちた。

正直、これ、業務的にも使うのかな?別にどうでもよくね?という感覚だったのだが、上司からかなりキツく叱られ、「受からないと来年の年俸は上げない」とまで言われたので、形振り構わず受かりに走ることにした。
結果として、2017年10月、やや裏道を使いながらも合格したので、そのときのことを徒然と書いていく。
正直、本職のSEやPG、IT関係者なら受かって当然の資格で、それに苦労したなんて自分の無能を証明するようなものなのだけど、まぁ、実際無能だし、いいだろう。


5月17日 不合格発表と金の力で午前免除を決意

前月の試験でまさかの午前不合格、そして上司の叱咤を目の当たりにし、次は流石に受からねばマズイ、という危機感を覚えた。
そして1時間考えて得た結論は「午前試験免除の通信講習を受けよう」であった。
これが前述した「やや裏道」である。

「午前に課題が有るのだから免除にしよう」という理由が主だが、それ以外にもう一つ理由があった。
正直、勉強から離れて久しいこの脳みそでは、午前午後合わせて5時間という試験時間に耐えきれないのだ。
なので、試験当日は午後の150分だけに集中できるようにしてやろう、という魂胆である。
もっとも、誤解なきように予め言っておくと、「午前試験免除の通信講座」はただ受講すればいいというものではない。
最終的にはIPAが作成した、午基本情報技術者午前試験と同難易度、同形式の試験に合格しなくてはならない。
受験機会というチャンスが増えるが、別に簡単になる訳では全くないのだ。

まとめると、午前免除のメリット(デメリット)は以下の通りである。

メリット

  • 午前合格の機会が増える
  • 免除試験~本試験迄の間、午後試験の対策のみに集中できる
  • 本試験日には午後試験のみに集中できる

デメリット

  • お金がかかる(27,000円程度)

5月23日 「独習ゼミ」に申し込み

「午前試験免除の通信講座」について、ネットで調べたがどうもどこも大差がないように思えた。
結局、通信系で検索で一番最初に出てきた「独習ゼミ」に申し込むことにした。
通信系にしたのは単純な話で、長野の田舎住みだから通いなどできるわけもないこと、そもそもする気もないことからだ。
費用は27,000円弱。これを高いと見るか安いと見るかは人それぞれだろう。
僕は自分が楽をすることに関してはお金を惜しまないダメ人間なので申し込んだ。

ちなみに、試験結果の発表~午前免除講座の申込期限まではほとんど時間がない。申し込むかは別にして、選択肢に入っているならすぐに調べておくことをお勧めする。
ちなみに午前免除の試験は2回あるのだが、俺は申込みの時期が遅く1回しか受験できないコースになってしまった。


5月26日 受講開始

テキストとe-Learningのログイン情報が届き、早速勉強を開始した。
・・・というのは嘘で、正直7月頃まではテキストを流し読む程度だった。

まず、e-Learningの方式だが、これは以下のようになっていた。

・勉強時間記録
勉強開始前に「勉強開始」ボタンをクリックする
クリック後、1時間立つと自動的に1時間勉強したとカウント、記録される。
合計69時間以上勉強時間を記録すると、免除試験条件①を満たす。

・各章テスト
まず、1~11章の各章テスト(ほぼ全て過去問題)を受ける。
全て合格すると、全章含んだ修了テストを受験することができる。
これに合格することで、免除試験条件②を満たす。
なお、章テストは大体問題数15問程度で、正答率80%以上で合格、
終了テストは50問で正答率75%で合格だった。
また、それぞれの試験には受験回数制限が設けられており、
この回数以上に受験はできない。
なので、ダメ元で無駄に受験することは絶対にしてはならない。

これで過去問題に相当当たれたので、それが良かったかもしれない。
ただ、受け取ったテキストだが、かなり詳しく書いてあり、
正直「とりあえずやってみよう」派の自分にはあまり合わなかった。
結局、下記の市販問題集を眺めてたまに解くのがメインのスタイルであった。

上記免除試験条件①②を期日までにクリアすると
免除試験の案内が送られ、受験可能となる。

平成28-29年度 基本情報技術者 試験によくでる問題集【午前】 (情報処理技術者試験)


7月23日 午前免除修了試験受験
上記の受験資格をクリアすると、試験一週間前あたりに受験案内が届く。
確か神楽坂あたりの受験会場だった。
本試験と同じように9:30~12:00、本試験と同じ形式、難易度の問題を解く。
特に特筆することはない。

ちなみに試験会場は東京と大阪しか選択肢がなかった。
長野からだと朝早いので、前日の夜から東京のカプセルホテルに泊まって備えていた。
東京駅付近だとファーストキャビンホント好き。


7月24日 午前免除修了試験結果発表
さすが民間というべきか、なんと試験翌日にメールで合否通知が来た。
結果、66/80(合格点48点)、100点換算だと単純計算で82.5点と結構余裕で合格できた。
何だかんだ、e-Learningのテストで過去問に触れまくったのが大きいのかなと思う。


8月~10月 午後試験対策
さて、そんな訳で後は午後試験の対策のみに集中できるようになり、気持ち的にかなり楽になった。
そもそも前回も午後は受かっている。
・・・のだが、いざちゃんと勉強すると、自分の理解度の低さに嫌気が差し、逆に不安になっていった。
不安を克服するため、1冊をやり込む方針で勉強した。
具体的には下記の過去問題集を前から順に説いていった。
最終的に全体では1週し、間違えた問題には△、理解不能だった問題には☓をつけ、
2週目は△と☓だけを解く、という風にしていた。

平成28-29年度 基本情報技術者 試験によくでる問題集【午後】 (情報処理技術者試験)

また、プログラミング言語は前回はJavaで受けたが、今回は形振り構わない方針だったので、
SEにあるまじき表計算を選択した。
下記のテキストを買ってはみたが、正直関数の一覧をちらっと見た程度。
それでも本番は全問正解だったので、Excelで帳票とかを作ったこと有る人ならプログラミング経験者でも表計算の方が楽だと思う。

改訂3版 基本情報技術者 らくらく突破 表計算 (情報処理技術者試験)

勉強時間的には正直あんまり。
平日は平均して1問やるかどうか。
休日は図書館に行って5問程度解く、みたいな感じだった。
正直、「図書館が人いっぱいだから今日は勉強できなくても仕方ないね!」という自己弁護をしたことも数え切れない。


10月15日 基本情報技術者試験受験

試験当日、長野の会場に新幹線で受験しに行った。
午後からなので、大分余裕を持って行けるのが嬉しい。
改めて午前免除のメリットを感じた。
ちなみに時間に余裕を持って出発したはずが、なんと開始時間を13:00のはずが13:30と勘違いしており、結果ギリギリの到着となった。
ちゃんと受験票を見直そう(アホ)。

試験は正直、失敗した。
緊張か何かわからんが、なんと必須問題のアルゴリズムを解き忘れていることに試験終了15分前に気が付いた。
めっちゃあわてて読んで、出来る限り回答した。
得点源で重要部分のここを忘れるとか意味わからんが、遅刻で気が動転していたのだと思う。
気をつけよう(アホ)。

11月15日 基本情報技術者試験結果発表

だけど、完全に忘れていた(アホ)。

12月1日 合格発表に気付く

「発表って12月のいつだっけ?」と受験票を見直すとなんと2週間以上前に発表されていたことに気が付く。
確認したところ、無事75点でギリギリ合格していた。
アルゴリズムは慌てたせいでほぼ全滅だったのだが、他の部分でなんとかカバーできた模様。
やっぱり実務経験あっても勉強しないとこの試験受からないわ、と改めて認識。


会社の人はほぼ全員持っている資格なので、これでようやく隠さないでよくなった。
実務には生きないと思うけどな。
色々IT系の問い合わせを受けるけど、
受かる前から「なんで基本情報持っている人に落ちた俺がDNSの説明しなくちゃいけないんだろう」とはよく思ったし。
試験と実務を結び付けられることも、1つの能力なのかしら。

計算式(文字列)の計算結果を出す方法

ユーザーに123+456みたいな計算式を入力させ、その結果を算出したい。
やろうと思えば、「+等の演算子でSplitして、各変数を格納して・・・」という感じでできるかもしれないが、
こんな操作、どうしても既存のメソッドがある気がしてならない。

調べてみたところ、色々な方法が見つかった。
私的に一番わかりやすいのはDataTable.Computeメソッドを使うというものだ。

こんな感じ。
DataTableが完全にただの傀儡でちょっと気持ち悪いが、一番短く、分かりやすくかける方法だと思う。
なお、DataTable自体は割かし重いので、繰り返し実行する場合はメモリ使用量やパフォーマンスに注意が必要。


アフィを入れてみたけど、アドブロックでちゃんと非表示になった。
優秀やなぁ。
bitFlyer ビットコインを始めるなら安心・安全な取引所で

Office Web Apps Serverでファイルを開くとエラーになってしまうときの対処法

現在、SharePoint Foundation 2013を用いたシステムを運用している。
Excelブック等のOfficeファイルを今時風にブラウザ上で閲覧、編集したいという要望が出てきた。
確かにSharePoint Onlineでできるのだから、Foundationでもできそうである。

調査したところ、Office Web Apps Serverを別途立てればできるということが分かった。
Office Web Apps サーバーの概要

ボリュームライセンスが要るので、個人ではまず無理だと思う。
幸いこの会社ではライセンスを持っていたので、Office Web Apps Serverを立て、ブラウザ上での閲覧、編集ができることを確認した。

しかし、運用して数ヶ月、突然「ブラウザーで閲覧」をするとエラーが発生するようになった。
エラー画面は
「’/x’ アプリケーションでサーバーエラーが発生しました。」
で以下、ランタイムエラーである旨が記述されている。

イベントログを見たが、SharePoint Server側には特にエラーはなかった。
が、Office Web Apps Server側にはアクセス毎にエラーログが出力されていた。
詳細な内容は割愛するが、「ファイルが見つかりません」というもの。

Office Web Apps Server自体、かなり資料が少なく、調査に難航したが、
何とか解決できた。
なお、既に数回この現象には遭遇しており、それぞれの対処法を記述する。

・再バインドする

調査したところ「Office Web Apps Serverを再インストールすればいい」という回答があった。
Web Apps Server ASP .NET error code 3005 event ID 1309 same key already added
しかし、今回、問題のOffice Web Apps Serverと連携している別のSharePoint Serverがあり、こちらは問題なく動作していた。
よって、これはOffice Web Apps Server側ではなく、SharePoint Server側に問題があると思われ、この回答は当てにならなかった。

さらに回答を辿ると、再バインドでも解消する場合があるという記載があった。
これに従い、以下のコマンドをSharePoint管理シェルから実行して再バインドを行った。
なお、Office Web Apps Serverを「OWA-Server.company.com」とし、SSL通信を前提とする。

なんと、これだけで解消した。
どんだけ不安定なソフトウェアなんだ。。。

・FWで弾かれている

上記対応から数日後、また再発したが、今度は上記の方法では解消しなかった。
途方に暮れていると、ネットワーク管理者がFWの設定を変更したとの情報が。
確認したところ、SharePoint Serverへのアクセスを特定部署のIPのみに制限していた。
一見問題なさそうなのだが、その結果、Office Web Apps ServerからSharePoint Serverへのアクセスができなくなり、
「ファイルが見つかりません」エラーが発生していた。

Office Web Apps ServerからSharePoint Serverへの443ポートを開放してもらい、問題は無事解決した。


MS製品の情報は少ないものもあり、あまり仕事という責任が伴う場では使いたくないのが正直なところ。
責任がなければ、色々実験できて楽しいんだけど。

IEのイントラネット識別方法

Internet Explorerでは、現在アクセスしているページが
以下のように4種類に分類される。

* インターネット
* ローカルイントラネット
* 信頼済みサイト
* 制限付きサイト

「信頼済みサイト」は手動で任意のサイトを登録して初めて分類される。
例えば、ある程度権限が無いと上手く動作しないサイトでは
ユーザーに予め登録をお願いし、セキュリティを弱くすることでサイトが正常に動作するようにすることができる。
「制限付きサイト」はその逆と考えて差し支えない(業務上、今まで使たことは無いが)。

ただ、そんなセキュリティを弱くしないといけないほどのシステムなんて、大抵は社内イントラネットだ。
なので、普通ならは信頼済みサイトへの登録なんてせずとも、自動でローカルイントラネットに識別され、システムは問題なく動作する。
(デフォルトでは「ローカルイントラネット」の方が「信頼済みサイト」よりセキュリティが弱く設定されている)

・・・と思っていたが、色んな会社を回っていると、どうもそうとも限らないらしい。
社内システムの筈なのに、IE上は「インターネット」に分類されている場合がある。
そこで、この分類され方について調べてみた。

何とこれ、実際にイントラネットかは全く判定していなかった。
URLに.(ドット)が入っていない場合は「ローカルイントラネット」、入っている場合は「インターネット」を分類しているに過ぎなかった。
FQDN または IP アドレスを使用すると、イントラネット サイトがインターネット サイトとして判別される

だから、社内システムでもURLが「http://CompanySystem.com」みたいになっている場合は「インターネット」識別になっていたのだ。
極端な話、hostsファイルを弄って「http://google」で「http://google.com」にアクセスするように設定去れば、
Googleのページすら「ローカルイントラネット」判定される。

いくら何でも雑な分類すぎませんかね。。。
まぁ、もうIEも消えてゆくはずだし、いいか。

複数の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である。

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