当ブログにおける2017年の目標
近ごろ熱意と忙しさのバランスがまずまず取れており、
曲がりなりにも既に3記事をエントリーできたので、今年の目標を定めました。
「年間エントリー数を過去最高にする」
これまでのエントリー数が今から8年前、2009年の「34」なのでそれを超えること。
他のブログ主に比べればささやかな量ではあります。
一応「なるべく検索に引っかかった時に有益な情報に絞る」がこのブログのテーマではありますが、
備忘録であるコンピュータ関連についてはその方針を継続しつつ、
「雑記」についてはあまり気にせずいきます。
つぶやき程度はなるべくツイッターで済ませることで、短文でエントリー数を稼ぐのはなしにします。
録画したNHK杯将棋トーナメントを見た
自分「なんだよ、今回は1億パー黒vs正月フットサル一味かよ。戦型もどーせ矢倉あたりだろうし、早送りで結果だけ見よ」
(既に指はリモコンの早送りボタンの上)
自分「ん、解説はカズキ(木村八段)か。これは惜しいけれどまあ早送りだな」
自分「おや、5筋の歩をついたよ、ゴキ中かな、じゃあ見るか」
自分「なんだよ、向かい飛車かよ、やっぱ早送りだな」
自分「何ィ、お互い馬を作ってドンパチ始めたぞ、これはどうなるんだ・・・?」
・・・全部見た。
木村八段の解説もおもしろかった。
中盤の考え方について思うこと (技術編)
ぺんぎんさんのブログから、こんな一文がありました。
中盤は手が思いつかないので目についた手を全然読まずに指して酷いことになることが多いです。中盤も終盤並に読みを入れて指せると全然違うんでしょうが。しかし読むためには候補手が必要なので、まずは手が見えるようにならないと話にならないんですよね~。うーん。
まさに同じだな~、としみじみ思いつつ、そういった状態から抜け出すにはどうするか、ここのところ何となく考えていることがあります。 本当はそれを完全に身につけてRを大幅に上げるなど実績を出してから理論化しようと思ってたのですが、いい機会なのでとりあえず仮説としてまとめてみます。強調しておきますが、まだ成果があったわけではないので、「こんな考え方もあるのか~」ぐらいで留めておいていただければと思います。
中盤で手が思いつかない、というのは自分の場合次のお題に言い換えられます。
成り込みや大きな駒得、技がかかるといった「分かりやすい好手」が見えないときに何を指せばいいのか
次の一手問題集ではそういった分かりやすい好手を見つける能力は鍛えられるんですが、 じゃあそういった手がない(あるいは気づけない)局面では何をしたらいいのか。 で、今までは・・・
- 何となく近い形の記憶をたどって指す
→駒の配置や持ち駒が違って成立せず - ごちゃごちゃ駒を交換すれば打ち込みの隙ができて何とかなるだろうと指す
→大きく駒損するか、相手以上の隙が自分にできて劣勢に
といった展開になっていました。
ではそうならないためにどうするか。ここで中盤の形成判断4つの要素を使います。
「駒の損得」「駒の働き」「玉の堅さ」「手番」
この要素の比率を変えて探すことで、複数の候補手が見えるようになるのでは。
具体的には、
- 駒の働き を重視:遊び駒を活用する手、相手の駒を遊ばせる手、角などに急所を睨ませる手
- 駒の損得 を重視:(これは次の一手で鍛えられるので省略)
- 玉の堅さ を重視:玉を深くする手、玉のそばの金銀の連結を高める手、自陣の隙をなくす手、敵陣に隙を作る手、攻めの拠点を作る手、相手の拠点をつぶす手
- 手番 を重視:浮き駒をなくす手、相手の駒を浮かせる手
形成判断の4つの要素って、重要と言われながらも今ひとつピンとこなかったんです。せいぜい相手と比べて、有利な時は直線的な手、不利な時は曲線的な手、はて、曲線的な手って何よ?いきなり脈絡もなく端の香車を上がったり主戦場でないところの歩をついたりすればいいのか?といった感じ。
しかしどの要素でポイントをあげるか、という観点で意図した手を指すことで、前述の「分かりやすい好手」を逃していたとしても、その意図が終盤の頭あたりで生きる、なんて展開もあるのかな、と。感想戦でも「この場面ではこの要素でのポイントを優先したけれど、この要素でポイントをあげるこちらの手のほうが良かったか」という気づきができれば、全く同じ局面でなくても応用がききそう。
一つ大前提として、「分かりやすい好手」を見逃さない、もしくはそこへ誘導する力も、定跡の勉強、次の一手本、手筋の本、棋譜並べ、実況動画観戦などでコツコツ鍛える、それも並行して進めていきます。
(心理編へ続く、予定)
PowerShellで表示が切れるのを防ぐ
PowerShellで表示が切れるのを防ぐ
PowerShellでコンソール上に値を表示させたり、テキストとして出力させたりするときに、 一定の長さで表示が切れて「...」となってしまうのを防ぎたい。
長く不便に感じていたにも関わらず全然情報を見つけられなかったのですが、 別件の調べものをしていた際に偶然発見しました。
こちらのブログに情報がありました。(ありがとうございます) http://cncn-us.hatenablog.com/entry/2016/10/18/175657
たとえば
PS > Get-EventLog Application -Newest 1 Index Time EntryType Source InstanceID Message ----- ---- --------- ------ ---------- ------- 4981 12 13 22:30 Warning EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が...
となり、「Message」が全て表示されません。 これはOut-Fileでテキストに表示させても同じで(改善される場合もある)、 「Export-Csv」を使ってcsvファイルに出力することで、何とか回避していました。
「...」にせずに全て表示させるにはこのようにします。
PS > Get-EventLog Application -Newest 1 | Format-Table -AutoSize -Wrap Index Time EntryType Source InstanceID Message ----- ---- --------- ------ ---------- ------- 4981 12 13 22:30 Warning EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が見つかりません。必要 なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コ ンピューターに存在しない可能性があります。または、これらのデータへのアクセス許 可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:' 80010105', 'ConnectionMade', '{D5978620-5B9F-11D1-8DD2-00AA004ABD5E}', '', '', 'ConnectionMade', ''
上記参考にさせていただいたブログでは「-Wrap」オプションを使わず、「| Out-String -Width 4096」としていました。 もちろんそれでもOKです。「-Wrap」オプションは、長い場合にその項目の欄に改行して表示してくれるオプションです。
PS > Get-EventLog Application -Newest 1 | Format-Table -AutoSize | Out-String -Width 4096 Index Time EntryType Source InstanceID Message ----- ---- --------- ------ ---------- ------- 4981 12 13 22:30 Warning EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'80010105', 'ConnectionMade', '{D5978620-5B9F-11D1-8DD2-00AA004ABD5E}', '', '', 'ConnectionMade', ''
PowerShellでADのオブジェクト検索(メンバサーバーから)
ドメインコントローラーから検索する場合は「Get-ADUser」や「Get-ADComputer」を使えばよいのですが、 DCを触れない、AD管理PowerShellもインストールできない場合かつ単純に「ユーザーが存在するかだけ知りたい」 といったシチュエーションで、手軽にユーザーと存在するOUを表示させます。
参考URL、というか今回の記事はここをまとめただけ https://gallery.technet.microsoft.com/scriptcenter/767d313c-645c-4c62-b021-3772091a8c61
◇ ユーザー一覧を表示
PS > ([ADSISearcher]"ObjectCategory=user").FindAll() | Select Path
こんな感じで出力されます。
LDAP://CN=Administrator,CN=Users,DC=hoge,DC=local LDAP://CN=Guest,CN=Users,DC=hoge,DC=local LDAP://CN=krbtgt,CN=Users,DC=hoge,DC=local LDAP://CN=testUser,OU=TestOU,DC=hoge,DC=local
"ObjectCategory=user" を"ObjectClass=user"にすると、コンピューターオブジェクトも出力されます。 純粋にコンピューターオブジェクトだけを出力する場合は、次項のコマンドです。
◇ コンピューターオブジェクト一覧を表示(ABC順でソートもしてみます)
PS > ([ADSISearcher]"ObjectClass=Computer").FindAll() | Select Path | sort Path
ダブルクォートで囲まれているところは検索のフィルターを記述できます。(詳しくは参考URL) 名前に「test」を含むユーザーで検索してみます。
PS > ([ADSISearcher]"(&(ObjectCategory=user)(Name=*test*))").FindAll() | Select Path
もう一つ、上記は「[ADSISercher]型アクセラレーター」というのを使っています。 それを使わずにオブジェクトを作成する場合は、このようになります。 (出力内容、形式は同じです)
$hoge = New-Object DirectoryServices.DirectorySearcher $hoge.Filter = "(&(ObjectCategory=user)(Name=*test*))" $hoge.FindAll() | Select Path
1行で書くこともできます。
(New-Object DirectoryServices.DirectorySearcher "(&(ObjectCategory=user)(Name=*test*))").FindAll() | Select Path
どーでもいい情報ですが、参考URLの「Scripting Guy」は冒頭と末尾にちょっとひねった挨拶を入れるので、 なかなか面白いです。