雑記+備忘録

OS中心の技術情報と趣味について(最近は主に将棋)。備忘録なのでここに書かれたことを試すのは自己責任でお願いします。

将棋倶楽部24 中級への道(その1)

本当は初段あたりになってから書こうと思っていたのだが。

R100から初めて3年半、先月ようやく中級到達、現在最高R580の10級〜11級。
正直このペースではあと3年ぐらいやって、ようやく中級安定ぐらいになりました、
そのころには低級だったときのことは忘れていて、
やはり包括的な言葉でしか表現できない、となりそうなので、
まずは現在地に至るまでの道程を、比較的時間が取れる今のうちに記載しておきます。

世に将棋倶楽部24の初段への道とか、将棋の勉強方法に触れられているサイトがいくつかあり、
それぞれありがたく拝読、参考にさせてもらっていますが、
多くは「詰め将棋を繰り返し覚えるまでやろう」「序盤の定跡を覚えるべし」「棋譜並べをしましょう」など、
これまでに何度も見聞きした「包括的な言葉」に終始しています。
もちろん、それを素直に信じて一定期間継続できた人がそこへ登れるのだろう、と想像はできますが、
ではそれを続けたときに自分にどのような変化が起きるのか、
それが実感できないから続けるモチベーションが途絶えがち、という人も多いのではないでしょうか。

より具体的には、低級時代はこのように見えていたものが徐々に(あるいはいきなり)このように見えるようになり、
このように上達していく、
その「感覚の変化」「見え方の変化」がもう少し詳しく言語化されていれば、
自分もその感覚の変化が訪れることを信じやすくなるのでは。
また、周りに将棋仲間がいる人いない人、性格的に一つのことをやり続けるのが得意な人、飽きっぽいのでいろいろな勉強方法をサイクルしたい人など、
個人個人環境や性格から自分に合うルートがあると思うので、
多くの上級者がその具体的な言語化を試み、結果より多くのサンプルが示されていれば。
そうすれば読む側もより実感を得られやすく、上達へのモチベーションにつながりやすい、
ひいては将棋を続けるエネルギーにつながり、将棋好きの裾野を広げる助けにもなるのになあ、と贅沢なことを願ってしまいます。
(そんな甘やかすことはない、自分で得ることが本物のモチベーションだ、との意見もごもっともなのですが)

というわけで、自分も道半ばとはいえサンプルの一つを示すべく、
これから数回に分けて、本格的に始めてからの勉強法や、
そこに至るまでのバックボーンを記しておきます。
将棋を楽しんでいる人が、より上の段階を目指すための、
一つのサンプル、もしくは何らかのモチベーションの種になれば幸いです。

目次へ→将棋倶楽部24 中級への道(その2) - 雑記&備忘録

コマンド(バッチファイル)、PowerShellで共有プリンタの追加

プリンタサーバーに公開されている共有プリンタを
クライアントにコマンドで追加する。
VDIのクライアント等で、スタートアップスクリプトログオンスクリプト
ロケールごとに追加するプリンタを変える、などの場面で使える。

以下、クライアント側で実行する。
例として"\\192.168.1.2\TestP01"でネットワーク共有されているプリンタを
クライアントのプリンタとして追加する場合

○コマンド

> rundll32 printui.dll,PrintUIEntry /in /n "\\192.168.1.2\TestP01"

PowerShell

PS > (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\192.168.1.2\TestP01")

どちらもWindows7 64bitで動作確認済み。
PowerShellについては、Windows8.1以降はAdd-Printerコマンドレットが使えるようだ(未調査)。
また、PowerShellについて、ローカルにプリンタドライバをインストールする方法はいくつか見られたが、
ネットワーク共有プリンタを追加するコマンドは英語のサイトしか見つからなかった。

  • - - - - - - - - - - - - - -

(2015/10/22追記)
> VDIのクライアント等で、スタートアップスクリプト
> ロケールごとに追加するプリンタを変える、などの場面で使える。

とか書いたが、
いざスタートアップスクリプトを作って仕掛けてみると、
どうも共有プリンタにアクセスできないようだ。
スタートアップスクリプトの実行権限は「Local System」なのでそのためか。
直前にnet useで接続するように記載してもだめ。

そこでふと気づいたが、
プリンターは、ユーザーごとに設定を持つのでは?
調べてみると、ネットワークプリンタの設定は、ユーザープロファイルに含まれるようだ。
https://msdn.microsoft.com/ja-jp/library/cc781142(v=ws.10).aspx

つまり、ログオンスクリプトで実行するのが本筋。
強引にスタートアップスクリプトで実行しても、
ユーザーでログインした時に追加された状態で残っているか怪しいし、
残っていたとしてもスクリプトで接続したユーザーしか使えない。

ログオンスクリプトで実行したところ、すんなり共有プリンタが追加できました。

  • - - - - - - - - - - - - - -

(2017/3/29追記)
MSの「ユーザー プロファイルに保存される設定」のリンクが切れていました。
こちらの方のブログで一覧を確認できます。
ユーザープロファイル | Windowsインフラ管理者への道

Gmailからdocomo.ne.jpアドレスへ「突然」メールが送れなくなった

最初から送れないのはdocomo.ne.jpアドレスの方で個別受信設定をすればいいのですが、
それまで問題なく遅れていたのが、2015年9月末以降いきなり送れなくなる現象が起きました。

原因は相手先のメールが「〜.@docomo.ne.jp」(アットマークの前にドット)だったためで、
この形式は本来メールアドレスの世界標準ルールからは外れていて、
Gmailの送信制限がいきなり厳しくなったようです。
9月28日、29日あたりから「送れなくなった」の声が上がっています。

対応としては、最終的には先方にアドレスを変えてもらうしかないようです。
他にも、ピリオドが連続している(****..***@〜)場合も同じ現象が起きます。
回避方法として一応、特定の条件下ではうまくいった例が出ていました。
GmailからDocomoの携帯アドレスに送れない | オフィスハチ

また、「送れなくなった」の声とそれに答えているやりとりです。
Google グループ

【自作便利ツール】csvのリストでリネーム

以下のファイルを作成し、
リネームしたいファイルと同じフォルダに放り込んで、
PowerShellスクリプトファイルを実行すればOK。
rendata.csv は、1項めがリネーム前、2項めがリネーム後。

=== ListRen.ps1 ===
$strFile = ".\rendata.csv"

$strHeader = "from,to"
$aryHeader = $strHeader -split ","
$objCsv = Get-Content $strFile | ConvertFrom-Csv -Header $aryHeader

$objCsv | ForEach-Object {
$strFrom = ".\" + $_.from
Rename-Item $strFrom $_.to
}
=== End ListRen.ps1 ===

=== rendata.csv ===
test1 - コピー.txt,test2.txt
test1 - コピー (2).txt,test3.txt
test1 - コピー (3).txt,test4.txt
test1 - コピー (4).txt,test5.txt
test1 - コピー (5).txt,test6.txt
test1 - コピー (6).txt,test7.txt
=== End rendata.csv ===

続・市川市将棋大会に参加してみる

今年もこの季節がやってきた。

開催日は11月8日(日)、
細かい情報、要項は昨年の記事(市川市将棋大会に参加してみる - 雑記&備忘録)と変わらず。
申し込み締切は10月30日(金)必着。
場所も昨年と同じ市川市勤労福祉センター分館(本館と間違えないよう注意)。
2016年からは従来の通り市川市市民会館となる予定と、
昨年司会の方がおっしゃっていた記憶がある。

毎度ではありますが、主催者の方々には感謝申し上げます。

残念なことに、今回は都合がつかず不参加予定。
将棋倶楽部24は、約200局こなしてようやく11級に入ってきました。

一覧取得をOut-Fileでテキストファイルにリダイレクトすると不要なスペースが入る

題名の通り、PowerShellでファイル一覧やドメインのユーザー一覧など特に「Select-Object」を使用した一覧表示を、
テキストファイルにリダイレクトしたときに、PowerShellのウィンドウ幅分半角スペースが入ってしまうのを防ぐ方法。

例えば、あるフォルダ直下のファイル名一覧を作成するとして、

PS > Get-ChildItem .\ | Select-Object Name | Out-File ..\ichiran.txt -Encoding default

で、「ichiran.txt」をメモ帳などで開いたときに、

===== ↓↓↓ ichiran.txt ↓↓↓ =====

Name

      • -

output1.txt
USB整理.txt
勉強会資料.pptx
計算機.xls


===== ↑↑↑ ichiran.txt ↑↑↑ =====

一見問題ないように見えるが、各ファイル名の後に半角スペースがPowerShellのウィンドウサイズ幅まで入ってしまっており、
このファイルを次工程で取り込むときなどに支障が出ることも。

各ファイル名直後に改行をしてほしいのだが、スマートな方法が見つからず、
出力前にもう二つほど加工を入れる。

PS > Get-ChildItem .\ | Select-Object Name | Out-String -Stream | ForEach-Object {$_.trim()} | Out-File ..\ichiran.txt -Encoding default

文字列化して、ForEach-Objectで全行トリムしている。
せっかくオブジェクト化できているのを文字列化し、行ごとに回すのは処理効率上少々かっこ悪いが、他によい方法が見つからなかった。

===== ↓↓↓ ichiran.txt ↓↓↓ =====

Name

      • -

output1.txt
USB整理.txt
勉強会資料.pptx
計算機.xls


===== ↑↑↑ ichiran.txt ↑↑↑ =====

うまく半角スペースが消える。

続・SQL Server 高可用性3台ミラー構成

前回の記事に書いたように、SQL Server 2012以降で「非推奨」となってしまった・・・
SQL Server 高可用性3台ミラー構成 - 雑記&備忘録
しかしやはりしぶとく問い合わせがある。
つーか、とっとと「AlwaysOn」にしてほしいのだが。

◆ フェールオーバー手動実行のTransact-SQLコマンド
use master
go
ALTER DATABASE <データベース名> SET PARTNER FAILOVER

検証はSQL Server 2008 R2で実施した。
この情報、ググるSQL Server 2005のときの情報か、
それとも何か成立する条件があるのか、
ALTER DATABASE SET PARTNER だけ書いてあり、
実行するとSETの前にDB名を入れていないために構文エラーが出てうまくいかない。

◆ 上を用いた自動フェールバックの仕組み

これもAlwaysOnではプロパティで実現できる(らしい)、
優先してプリンシパルの役割を実行するサーバーのサービスが起動したときに、
自動的に再度フェールバックを行い、優先のサーバーをプリンシパルに戻す、
「自動フェールバック」の実現方法。

ミラー側でSQL Server エージェントを起動する
(サーバー再起動にも対応できるように、自動でサービス起動するように設定する)
 ↓
SQL Server Managament Studioでミラー側へアクセスし、
オブジェクトエクスプローラーの「SQL Server エージェント」の下の
「ジョブ」を開き、「データベースミラーリングモニターのジョブ」を右クリック、
プロパティを開く
 ↓
左上のペインで「ステップ」を選択し、
新しくステップを追加する。
コマンドの欄に上のTransact-SQLコマンドを入力(use〜FAILOVERまで全部)し、
ステップ1の次に実行されるようにする
 ↓
これで、1分に1回ミラー側サーバーのSQL Server エージェントがミラー状態を監視し、
問題なければ(問題あっても?)フェールオーバーのTransact-SQLコマンドを
実行するので、自動フェールバックが実現できる

実際に「データベースミラーリングモニターのジョブ」を右クリックして
「履歴の表示」で履歴を見てみると、
優先プリンシパルサーバーのサービスが停止しているときに、
1分に1回ひたすら×アイコンが出ていて見た目は良くない。
何かもっと良い方法があるのかもしれないが、発見できず。

ミラーリング手順過去記事の訂正

約1年前に書いた記事の訂正。
ミラーリング再構築、あるいは構築時にエラー1478が出た時の手順で、
一度ログバックアップチェーンをクリアする方法を載せたが、
トランザクションログもバックアップする方法が本筋のようだ。

バックアップの種類「完全」で取ったあと、
同じファイルへの追記でよいのでバックアップの種類「トランザクション ログ」で取得する。
そのファイルをミラー側へコピーし、
データベースの復元でデバイスを選択したときに
「復元するバックアップセットの選択」ペインで完全とトランザクションを両方選択して
RESTORE WITH NORECOVERYで復元する。

これでエラーが出ずにミラーできる。