雑記+備忘録

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

市川市民将棋大会2017に・・・今回は不参加

将棋ネタを書くきっかけとなったこの大会、
今年は残念ながら所用で不参加ですが、情報を載せておきます。

市川市 市民将棋大会
開催日:11月12日(日)
申し込み締切:10月31日(火)必着
申し込み方法:はがき、FAX、メール(New!) のいずれか

詳しい要項、申し込み方法は市の駅や公共施設に置いている「広報いちかわ 10月7日号」の3ページ下段に記載されています。

昨年、申し込み要項のハガキについて「往復はがき」と明記されていましたが、
今年は「はがき」とだけ書いてあります。参加証代わりのはがき代は出させない、という心遣いでしょうか。
そして何とメールでも申し込めるように、QRコードが掲載されています。
「メール」というIT技術が導入されたのは、大会の雰囲気を考えると、大きな進歩と言っても過言ではありません。

場所はいよいよ全日警ホール(旧文化会館)での初開催です。
トイレも整備されているでしょうし、ありがたい。
藤井四段の話題の影響で参加者大幅増となることを見込んで大きな会場にしたのかもしれません。

過去の紹介記事を全て載せるのも煩雑になるので、注意点を書いておいた記事だけリンクを貼っておきます。

今回も大会が盛況となり、スムーズに和気あいあいと進みますことを願っております。

csvデータを取り込んでExcelで折れ線グラフを生成するPowerShell

PowerShellで以下を実現する文の紹介としてサンプルプログラムを作成しました。
Excelのセルに値を入れる
Excelのグラフ(折れ線グラフ)を作成
PowerShellExcelを扱う際の「Cells」の使い方

# 
# csvからExcelでグラフを生成するPowerShell
# 
########## 値を変更する変数 ##########

# Excelファイル名
$fileName = "Test.xlsx"

# Excelシート名
$sheetName = "Test"

## 情報CSVファイル名
$csvFName = "Test.csv"

######################################


# ファイルのパスを取得
$scriptPF = $MyInvocation.MyCommand.Path
$scriptPath = Split-Path -Parent $scriptPF

$flExcelPF = $scriptPath + "\" + $fileName

# Excelファイルが存在する場合に処理
if (Test-Path $flExcelPF) {

  # Excelのオープン
  $objExcelAp = New-Object -ComObject Excel.Application
  $objExcelAp.Visible = $true

  $objExcelBook = $objExcelAp.Workbooks.Open($flExcelPF)

  $objExcelSheet = $objExcelBook.Worksheets.Item($sheetName)

  # データを取り込み、編集
  ## CSVファイル読み込み
  $headerStr = "ddf01,ddf02,ddf03,ddf04,ddf05"
  $headerSplit = $headerStr -split ","
  $csvObj = Get-Content $csvFName | ConvertFrom-Csv -Header $headerSplit

  ## 初期値、先頭行設定
  $nCount = 1
  $objExcelSheet.Cells.Item(2, 1) = "No."
  $objExcelSheet.Cells.Item(2, 2) = "Score"

  ## CSV1件ごとに処理
  $csvObj | ForEach-Object {

    ## データ編集
    $objExcelSheet.Cells.Item(2 + $nCount, 1) = $nCount
    $objExcelSheet.Cells.Item(2 + $nCount, 2) = $_.ddf03

    $nCount++

  }

  # データをグラフ化
  $strRange = "A2:B" + (1 + $nCount)
  $dataRange = $objExcelSheet.Range($strRange)

  $chartObjects = $objExcelSheet.ChartObjects()

  $newChartObject = $chartObjects.Add(120, 10, 700, 300)

  $MyChart = $newChartObject.Chart
  $MyChart.ChartType = 4
  $MyChart.SetSourceData($dataRange)
  $MySeries = $MyChart.SeriesCollection(1)
  $MySeries.Delete() | Out-Null

  # ファイルの保存、閉じてExcelの終了
  $objExcelBook.Save()

  $objExcelAp.Quit()

  # プロセスの解放
  .{
     [System.Runtime.Interopservices.Marshal]::ReleaseComObject($MyChart)
     $MyChart = $null
     [System.Runtime.Interopservices.Marshal]::ReleaseComObject($newChartObject)
     $newChartObject = $null
     [System.Runtime.Interopservices.Marshal]::ReleaseComObject($chartObjects)
     $chartObjects = $null
     [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcelSheet)
     $objExcelSheet = $null
     [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcelBook)
     $objExcelBook = $null
     [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcelAp)
     $objExcelAp = $null
   } | Out-Null

  # ガベージコレクトの明示実行
  [GC]::Collect()
  [GC]::WaitForPendingFinalizers()
  [GC]::Collect()

}

csvファイルの項目名「ddf01~ddf05」は、現行システム(個人的に趣味で作成した)のデータが5つ項目を持っていて、
3番目の「点数」をグラフ化したかったのでこのような構成になっています。
横軸もただのナンバリングです。

ChartType = 4については以下のURLを参考に設定しています。(ありがとうございます)
http://officetanaka.net/excel/vba/graph/06.htm

PowerShellで折れ線グラフ生成」は元々他のフリーで公開されているツールと組み合わせて実現していたのですが、
パソコンを買い替えたときにそのツールを再設定するのが面倒になって、
自分のパソコンライフスタイル上ほぼ確実に入れることになるExcelでやる方針にしました。

年始の目標チェック

2017年も3/4が終わったので、年始に立てた目標のチェックをします。
「年間エントリー数35以上」

 

今の時点(年間の3/4)で27のペースが必要なのでクリア。
このままのペースでいくと達成。この調子でいこう。
仕事が落ち着き、徐々に時間もできてきました。

 

あと3か月、指す将順位戦ネタと技術ネタが中心になりそう。
毎年チェックしている市川市将棋大会ももうすぐです。

財布から小銭がなくなった

しょーもない話ですが、今日昼の弁当を買ったら金額がちょうど財布にあった小銭と一致したため、
「財布の中に小銭が全くない」という個人的にはなかなかにレアな状態となりました。

 

仕事帰りに某ドラッグストアで日用品を買ったらおつりが発生し、
再び財布に小銭が。「小銭がない」期間はおよそ8時間で終了。

 

今や電子マネーもあるので、もう少し記録を長引かせられると思ったのですが、
意外と短時間でした。

フォルダの所有権を得る

・管理者ユーザーで、特定ユーザーのプロファイルフォルダを全削除したい
・アクセス権を変更したい
などの目的で、フォルダの所有権を得るためのコマンドです。
いつものPowerShellではなく「takeown」コマンドを使います。

takeown /f "<フォルダのパス>" /r /d Y

オプションの意味は以下の通り(他にもオプションはありますが、よく使う組み合わせが上記です)

/f <フォルダ名もしくはファイル名フルパス> ・・・ 対象となるフォルダ、ファイルの指定
/r ・・・ フォルダ内のすべてのサブフォルダ、ファイルを再帰的に実行
/d Y ・・・ 確認メッセージに対して「はい」を自動的に返してくれる


これで所有者を自分にしてからフォルダの削除を試みます。
それでも残る場合は、
個別にそのフォルダのプロパティからアクセス権設定を開いて、
「子オブジェクトのアクセス許可エントリすべてを、このオブジェクトからの継承可能なアクセス許可エントリで置き換える」
をチェックすることでアクセス権を配下全てに継承させてから
再度削除を試みると削除できました。

残留争い

指す将順位戦、5戦を終えて1勝4敗。
リーグ参加者のレートをふまえるとまあ順当な中間結果といえます。
今回の目標はあくまでも「全局指すこと」なのですが、
一応順位も気にしてみます。
目下、このままでは次期降格、いわゆる「ネタ将」一直線です。
それを回避できるよう、現在の組に残れるように一つでも勝ち星を積んでいく、
「残留争い」を繰り広げるわけです(降格争い、ではない)。

Jリーグでよく聞く用語ですが、あちらはプロであり生活がかかっているので、
無論、同じなどとは言えません。
それでも趣味とはいえ「残留争い」に参入する経験は数少ないと思いますので、
この気分を噛みしめつつ1局1局雑にならないように指そうと思います。

ところで再度の8連敗でRが300台に・・・
フリーで対局してもらう調整を多くしなければならなさそうです。

指す将順位戦途中経過

2戦、1勝1敗。とりあえず一つ勝てて良かった~。
しかし同組の他の人の対局を観戦して違和感が…

 

初級タブではありません

 

何か皆さんRが高め。そこで今回対局する相手の現在のRを調べてみると…
自分 R425 に対し、

486 ●
539 ○
747
1074
475
719
762
688
589
867
697

 

ひょえ~、一つ勝てて良かったどころか全敗じゃなくて良かったといったレベル。
強い相手にぶつかっていけるのはありがたいので、これからも一戦一戦楽しんでいきます。
何か特別なことをしようにもここのところ仕事もプライベートも忙しく時間も気力もないので普段通りで。