結論:PowerShellを管理者権限で実行すればOKでした。
続きを読むPowerToysでNumLockにBackSpace機能をキーマップした状態でリモートデスクトップでNumLockキーを押すと何故か16文字消えてしまう
表題の問題にしばらく悩まされまして、結論から書きますと、リモートデスクトップ接続する際に
オプションの表示 > ローカルリソース > キーボード
のプルダウンメニューから「このコンピューター」を選択することで解消しました。
(「全画面表示の使用時のみ」だと、リモートPCが全画面表示でもウィンドウ状態でも問題が起きていました。)
Windows10でTelnetサーバを立てる(WSLを使う)
結論から書くと、Windows10自体でTelnetサーバは立てられないのでWSLでTelnetを使います。
Windows11でも有効な手順だと思います。
WSLをインストールする
WSL (Windows Subsystem for Linux) をインストールします。
(WSLはWindowsで動くLinuxです。)
Microsoft Storeで入手可能です。
あるいは、PowerShellで wsl --install します。
ディストリビューションはどれでも大丈夫だと思います(一部手順は異なってきます)が、私はUbuntuを入れました。
再起動を求められたら再起動します。
WSLを起動する
初回はユーザ名とパスワードを設定します。
WSLでtelnetをインストールする
先にaptをアップデートしてから、telnetをインストールします。
sudoで実行するコマンドではパスワードが聞かれるので、パスワードを入力してください。
sudo apt update sudo apt install telnetd sudo apt install inetutils-inetd
WSLでtelnetを起動する
sudo /etc/init.d/inetutils-inetd start
このとき、ファイアウォールが接続を許可するか聞いてきたら許可してください。
# 私は何故か初回で聞いてこず、再起動して再実行したら聞かれました。
# Windows10のファイアウォールの設定の仕組みをよく知らない、詳しい方がいらしたら教えて下さい。
WSL1の場合はこれでtelnetサーバのセットアップ完了です。
WindowsのIPアドレスにtelnetでアクセスしてください。
telnetを終了するには下記のコマンドを用います。
sudo /etc/init.d/inetutils-inetd stop
(WSL2の場合)PowerShellでポートフォワーディングする
WSLには、WSL1とWSL2があり、ネットワークの仕組みが異なります。
WSL1のtelnetサーバにはWindowsと同じIPアドレス(の23番ポート)でアクセスすることができます。
WSL2にはホストのWindowsと異なるプライベートアドレスが割り振られるので、他のマシンから直接アクセスすることができません。(2022年2月時点のWindows10の場合。現在この仕様は変更が検討されているようです。)
このため、WSL2の場合はポートフォワーディング(ポート転送)が必要になります。
WSLのバージョンを確認するには、PowerShellで wsl --list --verbose と入力します。
wsl --list --verbose NAME STATE VERSION * Ubuntu Running 2
VERSIONが2であれば、管理者権限のPowerShellで下記ポートフォワーディングの設定も行います。
netsh interface portproxy add v4tov4 listenport=23 connectaddress=localhost
WSL2の初期バージョンでは、localhostだと上手くいかないかもしれません。
その場合、WSL2のバージョンを上げるか、
WSL2のIPアドレスをifconfigなどで確認し、そのアドレスをconnectaddressに指定してください。
※WSL2のIPアドレスは起動のたびに変化します。
ポートフォワーディングの状況を確認するには下記コマンドを用います。
netsh interface portproxy show all
WSL2の場合はこれでtelnetサーバのセットアップ完了です。
WindowsのIPアドレスにtelnetでアクセスしてください。
ポートフォワーディングを終了するには下記コマンドを用います。
netsh interface portproxy delete v4tov4 listenport=23
tcshでの文字列比較(パターンマッチング)
#!/bin/tcsh -x # 単純比較(完全一致・不一致) == != if (str == str) then echo "True" # ←これ else echo "False" endif if (str != str) then echo "True" else echo "False" # ←これ endif
#!/bin/tcsh -x # パターンマッチング =~ !~ # ワイルドカードを使用できる if (str =~ s*) then echo "True" # ←これ else echo "False" endif if (str =~ s?r) then echo "True" # ←これ else echo "False" endif if (str =~ {str,ing}) then echo "True" # ←これ else echo "False" endif if (str =~ st[abp-t]) then echo "True" # ←これ else echo "False" endif
ワイルドカードは正規表現とは異なります。
* 任意の0文字以上の文字
? 任意の1文字
[ ] いずれかの1文字。ハイフンで範囲指定
{ , } コンマで区切られた文字列のいずれか
上記を組み合わせて使用することもできる。
パターンマッチで使用できるワイルドカードは下記記事を参考にさせていただきました。
・Linux【ワイルドカードと正規表現】の違いと変換,展開の動作 ~ ls, grep, findでの具体例の解説~
https://milestone-of-se.nesuke.com/sv-basic/linux-basic/wildcard-regular-expression/
シェルの種類によってif文や条件式の書き方が異なります。
tcshでシェルスクリプトを書こうと思ってググってもシェルの種類が混同されて出てくるので困ることがあり、自分用のメモとして書きました。
2022/02/12(土)追記
引用ではなく、スーパーpre記法でシンタックスハイライトができました。ありがとう、はてなブログ。
ソースコードを色付けして表示する(シンタックスハイライト) - はてなブログ ヘルプ
KotlinとJava基本のき!
色々あってひっさびっさに勉強会に参加しました。
続きを読む10才からはじめるゲームプログラミング図鑑
「10才からはじめるゲームプログラミング図鑑」という本を見てScratchでゲームを作った。
Scratch 3.0対応版 10才からはじめるゲームプログラミング図鑑: スクラッチでたのしくまなぶ
- 作者:キャロル・ヴォーダマン
- 発売日: 2020/04/28
- メディア: 単行本
PICO-8を使ってみる2
そんなわけで(どんなわけで)、PICO-8 v0.2.1bを触っているのでメモ。
まずは、AUTOMATONの記事に沿ってやっている。
前回の記事:
PICO-8を使ってみる - もふぐらみんぐ
Windows10でgithubに接続できる環境を整える
PCを変える度にちょっと悩むのもなんなのでメモ。gitコマンドの説明はないです。
続きを読む