No Such Blog or Diary

«Prev || 1 | 2 | 3 | 4 | 5 | 6 |...| 1393 | 1394 | 1395 || Next»

今日の不思議

転送の「速度」を聞いてるのに「時間」を答えてるのが多いのは何なんだろう? 転送対象のデータサイズが確定してたらどっちも情報量変わらんけれど,それでも分子・分母を逆にして答えたい気持ちがよくわからん.とても不思議.

Gemini に聞いてみたら「相手の知りたいこと(時間)を先回りして計算で答えてしまう人が多いためです。」って返ってきた.試験と会話の境界が消えてるってことかね? なんにせよ聞いてるのは速度なんだが.

バイクを点検に持ってった

バイクを1年点検に持ってった.予約をだいぶ前に入れてるので晴れるかどうかは賭けだけど,今回は晴れてて楽だった.

んで,特に問題なく点検終了.ちょっとフロントブレーキのランプスイッチが接触微妙気味だったので掃除してもらいつつ,オイルをオススメされたホンダ純正の Pro Honda Rccing (0W-30) にした.マニュアルにある標準が 10W-30 の G1 だったので粘度が 30あれば良かろうと.0W と 10W で実際に冬に乗る時の気温でどの程度の粘度の差になるのかよく分かってないけれど,まあより低い気温でも大丈夫な 0W にする分にはよいでしょう.

さて,点検も終わって走りたい所だけど気温がヤバくて遠出したら死にそうなのが悩ましい.ジャケットの下に着るペルチェ式の空調服を確保しようか?

元データ発見

なるほど,あのソフトは元データの word ファイルを結合して表示してたのか…… ということをある程度作業を進めたところで気づいた.これなら元データの word ファイルを直接触ったほうが早い.

ということで,サブディレクトリ内の全 word ファイルを開いて先頭4段落分のテキストをファイル名とともに取り出して情報を整理することにした.これくらいならササっと PowerShell で(Write-Output するとパイプに出て Tee-Object で tee コマンドと同じ事ができることを学んだ):

$word = New-Object -ComObject Word.Application
$word.Visible = $false
ls */*  | ForEach-Object { Write-Output $_.FullName; $doc = $word.Documents.Open([ref]$_.FullName); if ($doc.Paragraphs.Count -ge 4) { $txt = $doc.Paragraphs[1].Range.Text.trim() +"---"+ $doc.Paragraphs[2].Range.Text.trim()+"+++"+ $doc.Paragraphs[3].Range.Text.trim()+"==="+ $doc.Paragraphs[4].Range.Text.trim(); Write-Output $txt; } else { Write-Output 'NA---NA'; } $doc.Close();} | Tee-Object -FilePath ".\files.txt"
$word.Quit() 

さて,これで必要な情報は揃ったので本来の仕事に取りかかれる.

揺れたなぁ

なんか揺れてるなぁと思ったら宮崎で震度4の地震だった.ここらは震度1だったけど6階で静かに作業してたので揺れがよく分かった.

とりあえず最近地震多すぎ.

PowerShell はなんでもできる?

PowerShell が色々できそうなのでマウスのクリックイベント発行とかもできると自動化が捗るかなと思って調べてたら,Gemini が user32.dll の関数呼んじゃうコードを出してきた:

$Signature = @'
[DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
'@
$App = Add-Type -MemberDefinition $Signature -Name "Win32MouseEvent" -Namespace "Win32Functions" -PassThru
 
$MOUSEEVENTF_LEFTDOWN = 0x02
$MOUSEEVENTF_LEFTUP   = 0x04
 
$App::mouse_event($MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
$App::mouse_event($MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

DLL 呼べるならもはや何でもできるんじゃね? これが標準搭載のスクリプト言語でできるってのは便利だなぁ.

なお,マウス座標を移動するのは素直にできるっぽい:

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(500, 400)

PowerShell で word を操作

起動中の word のドキュメントをその冒頭の内容をファイル名として保存したいなぁとかいう需要があって,PowerShell でやってみた.

とりあえず起動中の word を確保:

$word = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Word.Application")

そして開いているファイルについて最初の段落の内容をファイル名として保存:

foreach ($doc in $word.Documents) {  if ($doc.Paragraphs.Count -ge 1) { $line = $doc.Paragraphs[1].Range.Text; $file="d:\words\"+($line.trim())+".docx";$doc.SaveAs([ref]$file, 16); } }

PowerShell は Office とかのオブジェクトを使えるので色々できて便利かも知れん.

«Prev || 1 | 2 | 3 | 4 | 5 | 6 |...| 1393 | 1394 | 1395 || Next»
Search
Feeds

Page Top