nakamurk’s diary

日々思うことは残していきます。しっかり生きます。

エクスプローラーで表示したフォルダをVSCodeで開く方法

結論

アドレスバーにcmd /k code. & exitと入力する。

背景

VSCodeを使って、仕事などの開発や競技プログラミングの演習を行うことがありますが、作業フォルダごとに環境を分けていることもあり、いちいち開いてから移動するのが面倒でした。
他の方も、同じことを考えておられたので、何とかしようと一念発起して、解を探してみました。

インストール時の設定によっては、右クリックのメニューから開くこともできるようですね。

理解すること

試した環境

環境依存しないとは思いますが、念のため動作環境を記載します。

  • Windows11 Version 22H2 (OS Build 22621.2428)

コマンドプロンプトのチョイ技集

コマンドプロンプトはどこのWindows環境でも使えるという安心感ありますよね。まだまだ、使いずらいと感じますし、PowerShellできるならBashを使いたいですけどね。そんな中で、気になった使い方をメモしておきます。

コマンドを入力中に改行する(20230813記載)

一行で書きたいけど、長すぎて読みづらいので複数行で書きたい場合にどうするか。答えは「^」(キャレット、ハット)をつけると改行できます。PowerShellBashだと「`」バッククオートで改行できますよね。

> echo ^
More? hoge
hoge

「>」はプロンプト*1なので入力しないでください。echoコマンドで「hoge」と出力しているだけですね。でも、改行したくなってしまった場合には、「^」を付けます。そしてエンターを打鍵します。

> echo ^

すると「More?」と入力を促されますので、適当に「hoge」と入力してエンターを打鍵しました。

More? hoge

通常の「> echo hoge」と同じように「hoge」と出力されました。

hoge

以上なのですが、何が幸せかということですね。例えば、次のRobocopyコマンド*2の例を使わせてもらいますと。どれが見やすいですか?という話になります。一行で書いても見やすいのならそれでよいですし、オプションごとに改行するのもやりすぎな感はあります。

rem 一行で書く
> robocopy C:\Users\Admin\Records D:\Backup /S /E /COPY:DAT /MT:16 /LOG:C:\Logs\Backup.log

rem 必須項目とオプションを分ける
> robocopy ^
  C:\Users\Admin\Records ^
  D:\Backup ^
  /S /E /COPY:DAT /MT:16 /LOG:C:\Logs\Backup.log

rem オプションもすべて分ける
> robocopy ^
  C:\Users\Admin\Records ^
  D:\Backup ^
  /S ^
  /E ^
  /COPY:DAT ^
  /MT:16 ^
  /LOG:C:\Logs\Backup.log

何でこんなことするのかといえば、人間の読みやすさを考えているということですね。私は比較的長い行は読みづらいと感じてしまいますが、一回だけのコマンドなら長くてもそのまま書いてしまうことも多いですし、様々な場所でコピペして使いたい場合に変数として切り替えたいところで区切るのは正しい気がします(コピペが正しいかは別問題として)。コピペが嫌であれば例えばスクリプトとして作ると思いますが、その場合は、改行ありのほうが読みやすくなっている気がします。しかし、チームや残された人が「^」で開業できることを知らなければ事故の原因になるので、やはりチームで統一したほうが良いですね。

Sharepoint と Cognitive Searchと私…

SharePointとCognitive Searchが作る幸せな世界について

自分のイメージした世界観がどうか、確認する。以下ページを実装する。

SharePoint インデクサー (プレビュー) - Azure Cognitive Search | Microsoft Learn

参考(connectionStringのイメージをつかむ。生の値が入っちゃってるけども。。。) https://www.sharepointpals.com/post/azure-cognitive-search-for-sharepoint-content-part-1/

参考(Share PointのテナントIDについて) https://www.sharepointdiary.com/2019/04/how-to-get-tenant-id-in-sharepoint-online.html

あ、Azure OpenAIを利用するの企業用のアカウントじゃないとダメだ…会社のアカウント使おうorz

以下は途中やり、、、テナント移動をわかりやすくする拡張機能を作りたい、、、

mectrl_main_trigger document.getElementById("mectrl_currentAccount_secondary").innerHTML ボタンを押さないと動かない?

Microsoft 365とAzureを無料で使ってみようと思う

Microsoft365テナントについては、機能を確認するためのテナントを用意してもらえます。 次のリンクを見て確認して欲しいのですが、一部制限はありますが、何でもできちゃう感はありますね。

Microsoft 365 Developer Program


無料サービス
実は、もうセットアップしてましたけどねwww。Azure 側でできることはこちらですね。「12か月間無料」というのはちょっと分かりにくいですね、、、。とはいえ、もちろんのようにCognitive Search も含まれてますね。太っ腹で好きです!あれ?今回はAzure Cognitive Searchを使いたかったのだけども、、、。あ、Azure 側の「無料サービス(Microsoft Azure)」を利用するって訳ね!

サブスクリプションや支払いのための有効なクレジットカード情報がないと、画面上進まないようにできているのですかね?なんか詰まってしまいましたが、カードを登録して、サブスクリプションも表示できたので、大丈夫そうですね。

明日片付けましょう。とりあえず、おやすみなさい。

Pocketに溜め込んだリンクをエクスポートする方法

結論:Pocketのエクスポートは、次のリンクでできます。
https://getpocket.com/export

最近、断捨離を行っています。物を捨てるのをためらわれるのは、そのままなんですけども、まずは整頓していこうと思っています。もちろんもったいない精神が強いので何年も同じ服は着ますし、家で切る服に関しては穴が開いていても、よれていても気にしないタイプです…。

さて、そんな中PCやスマホなどのデジタルの情報は場所を取らないので、つい貯めがちなのでこちらは整理しようと思い何かの足しになればと今回の記事を書きます。 「Pocket」に記事をためて、後で読もうと思っても、つい読まずにためてしまっていたのですが、どうせ読まないから消してしまおうとも思ったのですが、悪い癖で「なんか、もったいない」と消さずにいる今日この頃。さっと消せる性格ならよかったんですけどね。

ということで、冒頭のリンクに話が移りますが、exportのURLにアクセスすれば無事にHTML形式でエクスポートできました。これで心置きなくClearできます!

英語でググるとトップに出てくるんですね…。日本語だとトップのページがキャプチャは載せているのだけど、どこにアクセスしてるかわからずで、イライラしてました(笑)
https://help.getpocket.com/article/1015-exporting-your-pocket-list

タスクスケジューラがどんなアクションを実行しているか確認するためのPowerShellコマンドを考えてみた

お客様からの問い合わせで。Azure ADにデバイスが登録できなかったというので、その調査をしているときの一コマを記録します。

Microsoftのサポートに問い合わせても、うまく解決してくれなかったので…、一般的なトラブルシューティングとして次のDocsを見るわけです。まあそのおかげで弊社に仕事が回ってくると思えば…。

learn.microsoft.com learn.microsoft.com learn.microsoft.com

しかしながら手元にない端末で、特に問題端末の調査に当たるのが作業者の方が非エンジニアだったとしても、あるいは非エンジニアだからこそ可能な限り多くの情報を簡単に吸い出してくれるようにしたいですよね。2つ目のリンクをよく見ると「デバイス登録のトラブルシューティング ツール」というリンクがあることがわかります。そちらには「DSRegTool.ps1」というツールを使ってくれということが書いてあります。Azure ADにデバイスを登録する際に確認すべき様々なコマンドやログが網羅されています。そして、こちらのスクリプトを試しに会社のPCで実行して、これでお客様に情報がいただけるね!と思ったのもつかの間、会社のセキュリティ推進室から、ウイルスに感染したような動きということで、チェックが入りましたorz…。こちらの3000行超えのps1ファイルなのですが、よく見ると、タスクスケジューラにタスクを登録していたのですね。最近Emotetがまた活発になってきたので、そのせいもあるのでしょう…。

そして、こちらのスクリプトの検証がセキュリティ推進室のチェックに引っかかったことが分かったので「何も変なことしてなかったよ!」の証明のため、「タスクスケジューラには変なものは仕掛けてないよ!」っということを言わなければならず、今回のワンライナーを考えたのです。とりあえず時間もなかったのでCSVみたいな出力にして、Bashで検索するようにしました。分業・シンプルにすることが大事ですね。

タスクスケジューラーがどんなアクションを実行しているか確認するためのPowerShellコマンド · nakamurk/nakamurk.github.io Wiki · GitHub

読めば何となく理解できると思うのですが、以下のような作りになっています。

Get-ScheduledTask | foreach {Write-Host $_.TaskName","$_.Actions.execute}
  • Get-ScheduledTask
    • タスクスケジューラのタスクをすべて取ります。
  • foreach {Write-Host $_.TaskName","$_.Actions.execute}
    • 取り出したタスクそれぞれのタスク名と、タスクオブジェクトにあるActionsオブジェクトから実行しているもの(execute)を出力しています。

CSVみたいな出力の仕方が「やっつけ感満載」なのですが、とりあえず動いたのでよしとしました。それにしても、2-3時間今回のウイルス感染疑惑の対応のために溶かしたのマジで萎えますね。

わたしラグビー部でした

今週のお題「わたし○○部でした」

小学校の頃は、兄の背中を追って?バスケ部に入り中学までは続けましたが、高校になって、ラグビー部に入りました。うまくはないし、比較的大き名けがもしてプレーヤーとしては、鳴かず飛ばずでした。まあ、苦い思い出といえば苦い思い出かなと思います。だけれども、「好きだから続ける」という意味で、今でもラグビーには、レフリーと住んでいる都道府県協会の役員?のような形ですが、関わったりしています。

レフリーをしていて思うのは、学生さんはとても純粋にラグビーに打ち込んでおられて、まさにすべてという子もいるということ。それに対してレフリーとして、ちゃんとレフリーできたらいいな、と思いながらも、課題が山積なので選手の皆さんには、申し訳ないなという気持ちがあります。練習試合なのですけどね、一つでも多く、学びの機会にしてほしいなと思うわけで。私のレフリングが今一つで、せっかくの機会に学ぶことが少ないと申し訳ないじゃないですか。しっかり走って、ラグビーを理解して、選手のためになるようなレフリーになりたい。

そして、社会人のカテゴリー、ここでいう社会人とはいわゆるテレビに出るという意味ではなく、草ラグビーだとか、会社のラグビーチームでというクラブの方々だけども、彼らに感じるのは第一に尊敬ですね。私自身が下手ということもあるのだけど、やはり、社会人になってもグラウンドでボールを追いかけられるというのは並みの気持ちではないと私は思います。当然のようにけがもするし、家庭との両立もすごい調整力だと思う。そんな中で、私にレフリーをさせていただけるのですから、公平で安全なラグビーで楽しんでほしいですね。帰るまでがラグビー!間にお酒を挟んでも、帰るまでがラグビー!でお願いしたい。大事なことなので2回言いました。

いくつまでレフリーをできるかはわかりませんが、少しでも選手に楽しい時間と学びを提供できるよう、私自身がトレーニングと勉強をしてこうと思います。