投稿者「kei」のアーカイブ

Excelで大文字小文字を区別して集計する

Excelのピボットテーブルが大文字と小文字を区別しない仕様だったため、元の文字列を文字コード列に変換してなんとか区別させてみる。

元の文字列(ここではセルA1)に対して、文字コード列を生成。

=CONCAT(DEC2HEX(CODE(MID(A1,SEQUENCE(1,LEN(A1)),1))))

生成した文字コード列を基準に集計すれば、大文字小文字は区別される。文字コード列は16進数にしたところで大してユーザフレンドリーでもないので、DEC2HEXは省略しても良いかもしれません。

やっていることは、MIDで文字列を1文字ずつ分解(このときSEQUENCEで開始位置1~文字数までの数値の配列を作成)、CODEで各文字を文字コードに変換し、DEC2HEXで16進数に変換。ここまでは分解した文字単位で処理し、最後にCONCATで結合して文字列にする。

CONCATを使用しているため、Excel 2016以降で利用できます。

PowerShellでクリップボードの画像を日時ベースのファイル名で保存

Alt+PrintScreenでウィンドウ単位のスクリーンショットを撮ったときなど、クリップボードに入っている画像にファイル名を自動生成してカレントディレクトリに保存する。

変数インクリメントしていけば連番もできそう。

(Get-Clipboard -Format Image).Save((Join-Path (Get-Location) ("ss_{0:yyyyMMdd-HHmmss}.png" -f (Get-Date))))

Saveメソッドに渡すファイル名はフルパスでないと指定したパスに保存されず、ファイル名のみではユーザのプロファイルフォルダ直下に保存される。なぜ…

Alpine Linuxでopen-vm-toolsを自動起動する

導入

apk add open-vm-tools
apk add open-vm-tools-guestinfo
apk add open-vm-tools-deploypkg

サービス登録

rc-update add open-vm-tools boot

直ちに起動する場合

rc-service open-vm-tools start

注意
Alpine Linux 3.9からopen-vm-toolsのパッケージがcommunityリポジトリに移っていました。インストール直後の状態でパッケージが見つからない場合はリポジトリ設定を見直してcommunityリポジトリが有効になっているか確認してください。

2022-10-10追記
https://wiki.alpinelinux.org/wiki/Open-vm-tools を参照し導入するパッケージ追加、サービス登録コマンド修正

Zabbix更新

Zabbix 3.0がリリースされたので、2.4からアップデート。
公式ドキュメントでは、サーバとエージェントを停止後バイナリを上書き導入してサーバを起動すればデータベースが自動移行されるとのこと。
CentOS 7環境にて以下のコマンドでさっくりアップデート。

# systemctl stop zabbix-agent
# systemctl stop zabbix-server
# yum remove zabbix-release
# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
# yum clean all
# yum update
# systemctl start zabbix-server
# systemctl start zabbix-agent

yum clean allを実行しないと、新しいバージョンを検出してくれなかった。

Fedora Server 21 + MATE Desktop

やってみたことの記録(ところどころうろ覚え)

Fedora Server 21を通常インストール
追加のコンポーネントは特になし

インストール後CUIで起動
まずは全パッケージ更新

# yum update

早速MATEをインストール→失敗

# yum groups install 'MATE Desktop'

インストール済みのfedora-release-serverパッケージとfedora-release-nonproductパッケージがコンフリクトしていたので削除

# yum remove fedora-release-server.noarch

firewalldを依存で巻き込むが、構わず一緒に削除

改めてyum groups install ‘MATE Desktop’

デフォルトではmulti-userで立ち上がるのでXが立ち上がらない

# systemctl get-default
multi-user.target

grapicalに変更

# systemctl set-default graphical.target

再起動

# shutdown -r now

再起動後Xのログイン画面が起動

ついでに各種ディレクトリを英字表記に

$ LANG=C xdg-user-dirs-gtk-update

LXDEやKDEなど、他のデスクトップ環境でも同様にインストールできそう

PowerShellでフォルダ間比較

2つのフォルダ間で、ファイル単位の比較をしてみる。

前提として$refに比較元フォルダのパス、$difに比較先フォルダのパスを設定している。

diff -ReferenceObject @(ls -Recurse $ref | where {-not $_.PSIsContainer} | gc) -DifferenceObject @(ls -Recurse $dif | where {-not $_.PSIsContainer} | gc)

ファイル数が多いとかなり時間がかかるので注意。文字化けする場合は、gcのオプションに-Encoding UTF8を追加する。

PowerShellを使ってWindowsログオン時の認証に使用したドメインコントローラを調べてみる

Windowsのログイン時認証に使用したドメインコントローラを調べる方法は、ネットを探せば出てくるもののいまいち決め手に欠ける印象。

とりあえずLOGONSERVER環境変数を調べるよりは確実そうなVBScriptのサンプルを見つけたので、PowerShell用に変換して実行してみた。

([ADSI]"LDAP://rootDSE").dnsHostName

上記コードを実行するとドメインサーバ名が表示されているので、きちんと情報は取れているのだろう。複数DC構成の環境で使えれば言うことないのだが、現状では確認不能。機会があったら確認してみよう。