win11のタスクバーを横に置く方法 - ExplorerPatcher

TL;DR

github.com

序文

仕事がデキる人の条件の一つにタスクバーを横に置く(ディスプレイはたいてい横に長いので)というものがありますが、win11はどうやら仕事をデキる人を増やしたく無いらしくタスクバーが下固定です。いつまで経っても実装される気配すら無く、win 10 のEOLにビクビクしていたところ、ちょうど求めていたExplorerPatcherというツールを見つけました。

方法

githubのreleaseからexeをダウンロードしてインストールするだけです。

Releases · valinet/ExplorerPatcher · GitHub

設定はタスクバーを右クリック -> [プロパティ]で表示されます。

色々項目がありますが、おすすめはCombine taskbar icons on primary taskbarAlways combineにすることです。win11 だと何故かChrome等のブラウザを複数起動した際、起動した数だけタスクバーのボタンが増えますが、この項目を設定するとちゃんとグループ化してくれます。

良きwindowsライフを。

無線LAN暗号化規格の比較

ネスペで意味がわからなくなってきたのでまとめ

f:id:usagisagi:20210214220030p:plain

markdown

無線LAN規格 - Usagisagiのメモ帳

補足

暗号化規格

主に以下を定めた規格

  1. 主体認証

  2. 暗号化方式

  3. メッセージ認証方式

SAE

PSKを推測しづらくして送信する。使用感はPSKと変わらないらしい。ハンドシェイクにSAEハンドシェイクなるものが追加。

暗号化アルゴリズムと暗号化方式の関係

暗号化方式は暗号化の手順を示したもので、暗号化方式が暗号化アルゴリズムを使う。

パケットごとの鍵の生成

TKIPとCCMPは同じように見えるが違う。

TKIPは2段階の鍵混合で生成(RC4)。

CCMPはAESで生成

https://fielddesign.jp/technology/wlan/ieee802_aes/

CCMP

メッセージ認証ができる暗号化方式。よって、メッセージ認証コード生成方式はCBC-MACになる。

WPA3の192bit暗号化

192bit安全の意味で、192bit鍵で暗号化しているわけではない。AES-256を使っているらしい。

参考資料

既刊報告書平成13〜30年度のH30システムセキュリティ構築の教育教材(テキスト)P224

無線LANの暗号化方式について整理してみた - トリコロールな猫/セキュリティ

Electronics | Free Full-Text | A Comprehensive Attack Flow Model and Security Analysis for Wi-Fi and WPA3 | HTML

Wi-Fi Alliance®、Wi-Fiセキュリティ規格 「Wi-Fi CERTIFIED WPA3™」を発表 | Wi-Fi Alliance

WPA3で謳っているCNSAの概要について調べてみた | HAJ WEBLOG

7.14 無線LAN(セキュリティ) : ネットワークスペシャリスト - SE娘の剣 -

Bose QuietConfort EarBudsを買いました

Boseのノイキャンイヤホンを買いました。33,000円也。

f:id:usagisagi:20201220180157j:plain
高い

とにかく何も聞こえなくなるものを

世の中にはいろいろ雑音があふれています。特に東京では外に一歩出れば車の重低音、人の会話、スーパーにいる甲高い人の声などなど。こういう音に精神ダメージを受けるのはもったいないということで、ノイキャンイヤホンを購入することに決めました。

重視した点はとにかくノイキャン性能。ビックカメラ行ってJebraやSonyのと比較しましたが、着け心地とノイキャン性能で一歩先を言っていたBoseを買うことにしました。

ノイキャンは抜群

ノイキャン性能はとても高いです。時々外でイヤホンを外すと「世の中はこんなにうるさかったのか」と良く驚きます。家にいても除湿器やエアコンが発する雑音に惑わされなくなり、勉強やプログラミングに集中できるようになりました。

逆に聞こえな過ぎて注意力が散漫になることも多々あります。例えば、気が付かないうちに漂白剤を服につけてしまいダメにしてしまったことも。人間は普段から聴覚からも結構情報を得ているみたいです。

音は微妙

以前BoseのQC30やスピーカーを聴いたときは低音が効いていて感動した記憶があるのですが、それと比較するとこのイヤホンはあまり低音が効いていないです。良く言えばおとなしい、悪く言えば物足りない。悪くはないのですが、Boseの特に低音を期待すると期待外れになるかもしれません。

後ワイヤレスの宿命か音のラグが大きいです。アズールレーンすら音がワンテンポ遅れて少しやりにくいです。

UIは物足りない

一応タッチパネルはついているのですが機能が少ないです。音量すらイヤホンから変えられないです。イヤホンから出来ることはノイキャンレベルの変更と、アシスタンス機能の起動、それと電話の応答位。もう少しスワイプで音量とか変えられれば有難かった。


とりあえずノイキャンが良いので満足です。家にいるときや通勤途中は、いつもこれつけて精神の安寧を得ています。

C#で内部クラスから外部クラスのメンバにアクセスする方法

コンストラクタで親クラスを渡す。privateもアクセスできる

class Outer {
    int value = 100;
    Inner inner;
    public void GetInner() {
        this.inner = new Inner(this);
    }

    class Inner {
        Outer outer;

        public Inner(Outer outer) {
            this.outer = outer;
        }

        public void run() {
            this.outer.value = 100;
        }
    }
}

ref

docs.microsoft.com

C#で内部クラスから外部クラスのメンバにアクセスする方法

コンストラクタで親クラスを渡す

class Outer {
    int value = 100;
    Inner inner;
    public void GetInner() {
        this.inner = new Inner(this);
    }

    class Inner {
        Outer outer;

        public Inner(Outer outer) {
            this.outer = outer;
        }

        public void run() {
            this.outer.value = 100;
        }
    }
}

KotlinでSpring FrameworkのTutorialする時にハマったこと

Getting Started · Building a RESTful Web Service

これやる時にハマったこと

src/main/java/hello/Application.java

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

こいつを次のようにする

package hello

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
class Application

fun main(args:Array<String>) {
    SpringApplication.run(Application::class.java, *args)
}

エントリポイントは直接グローバルに書かないといけないので、この方法でグローバルに名前をつけてる?みたいですね。

VBAとC#で対話的にプログラムを実行する

VBA、つらいですね。

VBAC#で標準入出力を介し、対話的にプログラムを実行する方法です。

やりたいこと

f:id:usagisagi:20190817132210p:plain

docxというところが闇が深いです。

可搬性を考慮してRegAsmは使用禁止です。最初はC#のdllをラップするC++のdllを作ろうとしましたが、C++はよくわからないので断念しました。

C#

文字列を返すだけの簡単なアプリケーションです。

using System;

class Program {
    static void Main(string[] args) {
        var s = "";
        while (s != "EOF") {
            s = Console.ReadLine();
            Console.WriteLine(s);
        }
    }
}

出力の種類をWindows アプリケーションとすることでコンソールウィンドウを表示せずにすみます。

f:id:usagisagi:20190817132312j:plain

VBA

標準入出力ですがWindows Script Object ModelWshShell.exec()から生まれるWshExecオブジェクトを介して操作できます。

Option Explicit

' 参照設定 -> Windows Script Object Model
Public Sub TestConsole()
    Dim path As String
    path = ThisDocument.path & "\sandbox.exe"  ' フルパス
    
    If Dir(path) = "" Then
        MsgBox path & "が見つかりません"
        Exit Sub
    End If
    
    path = """" + path + """"
    
    Dim wsh As IWshRuntimeLibrary.WshShell
    Set wsh = New IWshRuntimeLibrary.WshShell
       
    On Error GoTo finally
    
    Dim exec As IWshRuntimeLibrary.WshExec
    Set exec = wsh.exec(path)
    
    ' 標準入出力の処理
    exec.StdIn.WriteLine "test1"
    Debug.Print exec.StdOut.ReadLine 

    exec.StdIn.WriteLine "test1"
    Debug.Print exec.StdOut.ReadLine
    
    exec.StdIn.WriteLine "test1"
    Debug.Print exec.StdOut.ReadLine
    
    exec.StdIn.WriteLine "EOF"  
    
finally:
    Set exec = Nothing
    Set wsh = Nothing

End Sub

標準入出力とかよくわからない

AtCoderをやりましょう