投稿

Windows 11対応のためにサブPCをアップグレードしたらいろいろ大変だった...

イメージ
はじめに 今年の秋に Windows 10 のサポートが終了するので、自宅のサブPCを Windows 11 に対応させるために今週の土日は頑張った。 もともと Window 11 の要件を満たしていなかったので Linux を入れていたが、結局あまり使わなかったので、それならゲームができるようにしたほうがまだ使うだろうと頑張ってアップグレードすることにした。 最近必要なパーツがちょっと安くなっていたので買い集め、ついでにメインPCの構成も見直してメインもアップグレードしつつサブPCもパーツ流用で Window 11 化を目指したがいろいろと大変だったので教訓として記録を残しておく。 当初の計画 メインPCには Ryzen 2700X を使用していたので、以下のような構成変更を計画した。 サブPC用に新しい AM4マザーボード を購入 Ryzen 5700X を新たに購入し、これをメインPCに装着 2700X はサブPCに移植して、両方のPCをアップグレード ソケットも AM4 で揃え問題なく行くだろと考えていたが見積もりが甘かった... トラブルその1:マザーボードがRyzen 2700X非対応だった 新しく購入したAM4マザーボードは以下で AM4 だから 2700X も問題ないなと思っていたが、2700Xを装着しても BIOS が表示されず... いろいろ調べて最終的に製品のページを改めて確認したら「Ryzen 3000番台以降のみ対応」のマザーボードという落ちだった。 ASRock B550M WiFi (B550 AM4 MicroATX) ドスパラ限定モデル 価格:9,880円(税込、送料無料) (2025/5/25時点) 楽天で購入 解決策 泣く泣く予定を変更し、Ryzen 5700X をサブPCに使うことにしメインPCの性能アップはお見送りした ( ´・ω・`) 教訓 同じソケットでも世代が違えば動かない! 購入前に 対応CPUリスト を必ず確認するべし トラブルその2:CPUクーラーが外れない Ryzen 2700X のリテールクーラーを外そうとしたところ、まったく外れない。 確かリテールクーラーに付属していたグリスをそのまま使っており、それの品質があまりよくなかったのかカ...

Python の oletools で日本語の VBA を出力する方法

VBA はどこにある? 以下の記事がとても参考になる。 実務であまり役に立たないVBAの内部の話 - Qiita マクロの実体は vbaProject.bin というバイナリファイルの中にあるらしく、これを解析すると VBA を取得することができる。 このファイルは Compound File Binary Format というファイル形式で仕様は効果されているらしい。 時間があるときに確認してみたい。 [MS-CFB]: Compound File Binary File Format oletools で VBA を出力する方法 vbaProject.bin を自分で解析して VBA を出力するのは大変なので oletools というライブラリを使用する。 このライブラリは olefile というパーサを使いやすくしたもの。 ただし、このライブラリで VBA を出力すると以下の記事にもあるように日本語は文字化けをしてしまう。 ExcelマクロのVBAソースコードをAzure DevOpsでバージョン管理する方法 この記事では extract_macros を自作することで対応をしていたが、以下のように bytes2str を置き換えることでも日本語することができた。 記述量も少なく手軽に実行できるので記事にしておく。 import os import oletools.olevba as vba # ------------------------------------------------------------------ # 定数 OUT_DIR = "./out" """出力するフォルダ""" # ------------------------------------------------------------------ # 日本語出力用の設定 def _bytes2str ( bytes_string : bytes , encoding = "utf-8" ): # ShiftJis でデコードする return bytes_strin...

SharePoint Online のリストデータをカスタムスクリプトで取得する方法について

データの準備 以下のコードを実行して CSV を生成して実験用のリストを用意する。 import datetime as dt import pandas as pd import random as rd from faker import Faker title = [] data1 = [] data2 = [] data3 = [] data4 = [] data5 = [] choices_int_data = [ i for i in range ( 100 )] choices_text_data = [ "aaaa" + str ( i ) . zfill ( 4 ) for i in range ( 100 )] start_datetime = dt . datetime ( 2024 , 1 , 1 , 0 , 0 , 0 , tzinfo = dt . timezone ( offset = dt . timedelta ( hours = 9 )) ) fake = Faker ([ "en_US" , "ja_JP" ]) for i in range ( 100000 ): title . append ( i ) data1 . append ( rd . choices ( choices_int_data )[ 0 ]) data2 . append ( rd . choices ( choices_text_data )[ 0 ]) data3 . append (( start_datetime + dt . timedelta ( seconds = i )) . isoformat ()) data5 . append ( fake . name ()) data_1 = [ 1 for _ in range ( 1 )] data_10 = [ 10 for _ in range ( 10 )] data_100...

Blogger のアップロードを完全自動化しようとしてやめた話

イメージ
現在の Blogger の記事の更新方法 現在記事のソースは GitHub で管理ししており、記事の追加や更新は Python でスクリプトを組んで Blogger の API で行っている。 この方法は ここ に記載されている方法に習って行っているが、 OAuth 2.0 でトークンを取得しているためトークンの期限が切れるとブラウザでアプリケーションの同意をするマニュアル操作が必要になる。 そのため GitHub Actions で push をトリガーにして blog を更新するといった完全自動化ができていない。 完全自動化はできるのか? 多分できる...と思う。 ただあまりメリットがなさそうだったので今の方法で継続することにした。 完全自動化するには何が課題か Google の認証を突破してトークンを自動で生成することが必要。 これを実現するするためにはブラウザの操作の自動化が必要なので、そのためのツールを検索すると以下のようなものが候補になる。 No. ツール 説明 1 Selenium 言わずと知れたブラウザの自動化を行うためのツール テストの自動化などでよく用いられる 2 RPA Robotic Process Automateion の略 GUIなどで行うパソコンの操作を記録して自動化することができるので事務系の仕事の自動化でよく使われる Microsoft の Power Automate for Desktop などな有名 3 Puppeteer Selenium と同じようにブラウザの自動化を行うためのツール Seleniumとは違いChromiumに特化している nodeでスクリプトを書くことができいろいろ細かい設定ができるらしい RPA はとっつきやすいツールではあるが GitHub Actions では使えないので始めから除外する。 そうすると一番初めに候補に挙がるのは Python で使える Selenium なので試してみた。 Selenium で Google の認証画面を表示するために Blogger の認証画面を表示するソース部分を以下のように編集する。 if not credentials or not credentials ....

画像の投稿テスト

イメージ
画像の投稿テスト 追記 2024-04-21 サムネイルの画像が壊れてしまったので上げ直しを行ったときに update ではなく insert にしたので新しい記事として投稿されてしまった...

Pixel 8 に機種変更したときに Chrome の Web ページのショートカットが作れなくなった話

機種変更したらホームに Web ページのショートカットが配置できなくなってしまった... Pixel 5a 5G が 2024 年の夏にサポートが切れてしまうらしいので Pixel 8 に機種変更をした。 今までアプリをインストールするまでもないものやスプレッドシートはホームに Web ページのショートカットを配置して使っていたが、なぜか機種変更のデータ引継ぎを行ったあとの Pixel 8 でショートカットが消えていた... なぜかわからなかったがとりあえず Chrome を立ち上げて新しくショートカットを追加したがなぜか追加ができず、機種変更に失敗したか...と思っていたが解決したので忘れないようにメモっておく。 結論 ランチャーのデフォルト設定をしなかったためっぽい。 ぽいというのは再現の検証ができていないから。 経緯 自分は使うときになるべくデフォルトアプリを指定せずに使っている。 理由は同じ PDF であっても開きたい Acrobat であったり OneDrive であったりその時によって変わるから。 また、古いスマホでは Pixel Launcher ではなく、 Microsoft Launcher を使っていた。 今回の機種変更でデータを引継ぎ、起動したときにこの両方の Launcher がインストールされたため、どちらをデフォルトで使うかポップアップがでたが、何となく癖で Pixel Launcher を「常に」ではなく「1回だけ」実行にして使っていた。(Pixel Launcher を使っていたのはちょっと使い心地を試していたため) この時、ショートカットが消えていたので上記のように Chrome からショートカットを追加しようとして追加ができず、めちゃくちゃ悩んでいた。 何とかしようと検索して、 Chrome や Pixel Launcher や Chrome のキャッシュやストレージを削除してもショートカットを配置できなかったし、セーフモードで立ち上げたらそもそもホームに追加がメニューに出てこなかったりで全然解決できないじゃん...と諦めていた。 もういいやとショートカットを諦めていたが、そういえば Launcher に関係しているのであればデフォルトアプリに設定していないのが問題なのでは?とダメ元で試してみた...