hexium310’s memo

自分用にメモとして書き留めます

Windows セットアップ備忘録

Lenovo IdeaPad Flex 550 を頂いたので Windows 11 環境を整えるためにしたことをまとめる。

デバイス名

Passiflora(トケイソウ、パッションフラワー)にした。デバイス名は植物から取ることにしているので、型番から 550 に関連する植物を調べたら 550 種あるらしいトケイソウがヒットした。時計につけたくなる名前をパソコンにつけるのはどうかと思ったが、他に探すのも大変そうなのでこれを使うことにした。

en.wikipedia.org

レジストリー

コンテキストメニュー

Windows 11 ではエクスプローラーのコンテキストメニューが見づらくなっていたので昔と同じものに戻す。Shift + 右クリックでも昔のものを表示できるが、毎回そんな事やっていられないのでレジストリーをいじる。

reg.exe add HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /f /ve

便利ツール

PowerToys

github.com

PowerToys Run

Mac の Spotlight と違ってアプリケーションを勝手に探してくれない。スタートメニューにあるものは見てくれるようなので、PowerToys Run から起動したいアプリケーションはショートカットを"C:\ProgramData\Microsoft\Windows\Start Menu\Programs"に作る。

FancyZones

Windows 11 にもともとあるウィンドウのスナップはありえん使いにくいので無効化して、代わりにFancyZonesを使う。FancyZones の設定のWindows スナップのオーバーライドをオンにすると Windows + ↑/↓/←/→ でウィンドウを動かせるようになって快適になる。

Keyboard Manager

再マップしてあるキーのリスト

VK 244半角/全角で、このキーを無効化している。IME のオンオフ切り替えはは Google 日本語入力の設定で変換無変換IME を有効化IME の無効化に割り当てている。

¥はキーボード右下ののキーで、Shift なしでアンダーバーが入力されるように設定している。Mac では Shift なしでアンダーバーを入力できて便利だったため、Windows でも同様の挙動をするようにした。再マップで左 Shiftを使った設定にしていると、左 Shift を押しながらアンダーバーを入力したあと、Shift を押したまま英字を入力すると小文字になってしまう。これを避けるために右 Shiftを使うように設定してある(打ち初めから終わりまで左 Shift を押しながらABC_DEFと入力したとき、ABC_defとなってしまう)。

Greenshot

スクリーンショットに使うアプリケーションはもとから入っている Snipping Tool でも良かったが、選択範囲の撮影とウィンドウの撮影を切り替えるときにマウス操作が必要なのが面倒だった。指定したモードで起動できるならそれぞれショートカットを割り当てようと思ったが、それはできなそうなので別のアプリケーションを使うことにした。

Snipping Tool のクリップボードにコピーしつつファイルにも保存できるのが体験良かったため、同じことができる Greenshot を使う。

github.com

選択範囲の撮影とウィンドウの撮影にそれぞれショートカットを割り当てている。デスクトップ全体のスクリーンショットは Windows 本来の Windows + PrtScr で十分なので Greenshot は使わない。

Greenshot のショートカットの設定

AltSnap

後述の端末のタイトルバーを非表示にしていてウィンドウの移動ができないので、タイトルバー以外でも掴んで移動ができるようになる AltSnap を入れる。

github.com

開発環境

基本的には WSL を使い、Windows 環境では開発しない。

環境変数

WSL の中からも使いそうな環境変数をWSLENVに入れて見えるようにしておく。

setx.exe WSLENV APPDATA/up:USERPROFILE/up

WSL

$USERPROFILE/.wslconfigを作成編集する。

[wsl2]
memory=4GB
swap=8GB

[experimental]
autoMemoryReclaim=gradual
sparseVhd=true%

ディストリビューション

Arch Linux を使う。

systemd

/etc/wsl.confで systemd を有効にする。

[boot]
systemd=true

有効にはなるが、サービスの開始にしばらく時間がかかる。acpidsystemd-networkd-wait-onlineが原因みたいだったので無効化したら正常に動くようになった。

sudo systemctl disable systemd-networkd-wait-online.service

github.com github.com

端末

Alacritty を使う。WezTerm とどっちにするか迷ったが、WezTerm は Alacritty に比べてメモリー使用量が多かったのと、アンダーカールが正しく表示されなかったため Alacritty にした。とはいえ、WezTerm が Lua で設定をかけるのは魅力的なので今後の更新次第で乗り換える可能性はある。

設定でタイトルバーを非表示にしてみたが、端末が広く見えて気持ちいいし、スクリーンショットを撮るときも余計な情報が入りこまないのでなかなか良かった。

github.com

端末起動時に WSL を起動して tmux にアタッチする。デタッチや終了したときに端末が終了しないように Zsh が起動するようにもしておく。

[shell]
program = 'C:\Windows\system32\wsl.exe'
args = [
    '--cd',
    '~',
    '--distribution',
    'arch',
    '--exec',
    '/bin/zsh',
    '-c',
    '"tmux new -A && exec zsh -i"',
]

アンダーカール対応

アンダーカール表示のために下記リンクからconpty.dllOpenConsole.exeをダウンロードし、Alacritty の実行ファイルがある場所に突っ込む。

github.com

Windows Terminal を自分でビルドして該当ファイルを持ってきてもいいと思うが、Visual Studio と関連コンポーネントのインストールに時間がかかるし、吐かれたエラーの解決が面倒だったので諦めた。
README に書いてあるとおり、そのうち不要になるかもしれない。

これで tmux の外ではアンダーカールが表示されるようになったが、tmux 上では表示されないため tmux の設定もいじる。

set -g default-terminal 'tmux-256color'
set -ga terminal-overrides ",xterm-256color:RGB"
set -ga terminal-features ",*:usstyle"
# Enables underline color
set -ga terminal-overrides ',*:Setulc=\E[58::2::::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'

ゲーム

グラブル

SRWare Iron 105 を入れる。

download1.srware.net

ブラウザーの横幅制限を解除するために、chrome.dll0138193Cから01381942BA 40 01 00 00に変える。

次のフラグを変える

  • Enable にする
    • chrome://flags/#ignore-gpu-blocklist
    • chrome://flags/#overlay-scrollbars
    • chrome://flags/#enable-quic
    • chrome://flags/#enable-gpu-rasterization
    • chrome://flags/#enable-experimental-web-platform-features
    • chrome://flags/#enable-zero-copy
    • chrome://flags/#enable-parallel-downloading
  • Disable にする
    • chrome://flags/#tab-groups-save
    • chrome://flags/#tab-hover-card-images
    • chrome://flags/#calculate-native-win-occlusion

ベアリポジトリーの設定とpushフックでデプロイの備忘録

本題

ベアリポジトリーやgitのフックに関しては別で調べてください。

gitユーザーの作成

server $ sudo useradd -s /usr/bin/git-shell git
server $ sudo mkdir /home/git/.ssh
server $ sudo chown -R git:git /home/git/.ssh
server $ sudo chmod 700 /home/git/.ssh
server $ sudo chmod 600 /home/git/.ssh/authorized_keys
# 公開鍵を設置

ベアリポジトリーの作成

server $ sudo mkdir /opt/git && cd $_
server $ sudo mkdir project.git && cd $_
server $ sudo git --bare init
server $ sudo chown -R git:git /opt/git/project.git 

クライアントのリポジトリ

# 新しく作る場合
client $ mkdir myproject && cd $_
client $ git init
client $ git remote add origin git@gitserver:/opt/git/project.git

# 既存のものを clone する場合
client $ git clone git@gitserver:/opt/git/project.git

post-receiveによるフック

server $ sudo vim /opt/git/project.git/hooks/post-receive
server $ sudo chmod +x /opt/git/project.git/hooks/post-receive

hooks/post-receive

#!/bin/sh

cd /var/www/project
git --git-dir=.git pull

クライアントでpushしたときに自動で公開用ディレクトリーでgit pullしてくれます。
実際には、ブランチ名を見てproductionだった場合だけpullしてセットアップスクリプトを動かしたりするのがいいんでしょう。
post-receiveの出力はクライアント側に出力されるのでエラーが起きてもちゃんと気づくことができて安心。

関係のない話

bare /bɛə(ɹ)/, /bɛː(ɹ)/ (UK)

bare repository でのbareは以下の意味でしょう。

Adjective
1. Minimal; that is or are just sufficient.
bare - Wiktionary

bare は ME: bare, bar 、OE: bær と遡れるように古英語由来の単語です。PG: *bazazですが、Old Frankish、OF: *bar, baraigne, baraing を経由して ME: barain, barein、ModE: barrenと入ってきています。barren は形容詞として「不妊の」、「不毛の」、「植物が実をつけない」、「愚かな」というような意味があるようです。フランス語は💩。

参考

Git - サーバーのセットアップ
bare - Wiktionary
Reconstruction:Proto-Germanic/bazaz - Wiktionary
bréhaigne - Wiktionary
barren - Wiktionary

Public StreamsによるUser Streamsの代用を考える

背景

先日、User Streams(とSite Streams)の廃止日が公開されました。

User Streamsが廃止されると多くのサードパーティ製クライアントで使用されている、自動で流れるTLが使用できなくなります。 新しく実装される、Account Activity API(Beta)ではTLの取得はできないようです(未確認)。

廃止されないPublic StreamsでUser StreamsによるTLの取得の代用ができないか考えてみました。

TLを取得して表示する(PHP

Twitter APIライブラリには@mpywさんのcowitterを使用させていただきました。

Public Streamsは非鍵アカウントのツイートをすべて垂れ流しにしているものなので$client->streams()の第三引数に自分のフォローしてるアカウントのidを指定してフィルタリングします。
ただし、そのままではフォローしているアカウントに対するフォローしてないアカウントのリプライやRTが表示されてしまうため、コールバック内の!in_array($status->user->id_str, $ids)でフォローしていないアカウントは弾いています。

これでUser Streamsのタイムライン取得とほぼ同等のことが行なえました。 しかし、いくつか問題点があります。

問題点

  • 5000アカウントまでしかフィルタリングできない。
  • 鍵アカウントのツイートは取得できない。

フォローが5000人未満の場合は1つ目は問題になりません。しかし、鍵アカウントのツイートは取得できないため別の方法を探る必要がありそうです。

湯釜と毛無峠に行ってきた

群馬県草津白根山にある湯釜と長野県高山村にある毛無峠に行ってきました。

f:id:hexium310:20171108013714j:plain

2日ほど前に降雪があったらしく雪が少し残っていました。

f:id:hexium310:20171108020231p:plain草津白根レストハウスの駐車場)

西側の遊歩道から展望台へ向かいました。
遊歩道入ってすぐの場所からの弓池。 f:id:hexium310:20171108024510j:plain

8合目地点からの眺め。 普段全く運動をしていないのでここまで上がってくるだけで息切れ。

f:id:hexium310:20171108024626j:plain 右奥には北アルプス。 中央から左下に見える建物は万座の温泉街みたい。 万座の温泉街は日本一標高が高い温泉街だそう。 万座は毛無峠に行く途中で通ったけど温泉には行きませんでした。

少しの間景色を見ながら休憩して上の展望台を目指しました。 8合目からはあと100mほど。f:id:hexium310:20171108030048j:plain

湯釜、到着! f:id:hexium310:20171108030308j:plain f:id:hexium310:20171108032037j:plain f:id:hexium310:20171108030534j:plain

湯釜(ゆがま)は、直径約300m、水深約30m、水温約18℃の火口湖である。pHが1.0前後であり、世界でも有数の酸性度が高い湖と言われている。(中略) 湖水は白濁した青緑色をなしており、水に溶け込んでいる鉄イオンや硫黄などの影響で特定の波長の光が吸収されてこのように見えると考えられている。 草津白根山 - Wikipedia

エメラルドグリーンの湖が白い雪や綺麗な青空とあわさってすごく良い!

とても綺麗な景色を堪能したあとは毛無峠へ向かいました。

f:id:hexium310:20171108033142j:plain

……

f:id:hexium310:20171108033146j:plain

万座を越えて毛無峠への交差点を曲がり、長野県高山村の看板が見えてすぐ、道路が雪に覆われていました。 ノーマルタイヤだったので引き返そうかとも思ったけどこの雪で狭い道で方向転換出来る気がしなかったので慎重に進みました。 今まで一番慎重に運転したと思う。

このあと雪が積もってたり積もってなかったりを繰り返しながら暫く進み、毛無峠に到着。

f:id:hexium310:20171108034035j:plain

駐車スペースの辺りはだいぶ開けていました。 自分が歩く音と風の音くらいしか聞こえなくてすごく静か。

よくネタにされる画像の奥にも道は続いています。この下には45年ほど前まで硫黄を採掘していた小串鉱山と集落がありました。今回は行かなかったけど駐車スペースには何台か車が止まっていたので向かった人がいるのかもしれない。

地面がぐちょぐちょだったので早々に切り上げ、来た道を戻って、今度は渋峠に向かいました。

道中 f:id:hexium310:20171110193237j:plain f:id:hexium310:20171110193125j:plain

国道最高地点からの眺め f:id:hexium310:20171110193454j:plainf:id:hexium310:20171110193455j:plainf:id:hexium310:20171110193458j:plain f:id:hexium310:20171110193515j:plain

8月末に行ったときはガスってて全然景色が見られなかったけど今回は晴れていてよかった。

(8月末)

群馬・長野の県境にある渋峠ホテルはがっつり積もってました。 f:id:hexium310:20171110194021j:plain つもってないとこんな感じ

その先の横手山ドライブインの駐車場から f:id:hexium310:20171110194301j:plain f:id:hexium310:20171110194303j:plain f:id:hexium310:20171110194308j:plain

その後そのまま長野県中野市まで行き軽井沢を通り高崎に帰りました。 中野市から軽井沢が思ってたより距離があってアホなことをした。


今回は快晴でとても気持ちよくて最高でした。


f:id:hexium310:20171110195035j:plain f:id:hexium310:20171110195041j:plain

走行距離: 28567 - 28277 = 590km

Twitter 引用ツイート時の通知

結論

引用ツイートをするときにhttps://twitter.com/{screen_name}/status/{id}screen_nameスクリーンネームに使用できない記号を含めると通知が行かない。

詳しく

指定するscreen_nameがツイート主のものでなくとも元のURLにリダイレクトされる。
このとき、スクリーンネームに使用できる[0-9a-zA-Z_]のみの場合URLで使える2083文字に収まれば(おそらく)何文字であっても引用の通知がされる。
使用できない記号が含まれていた場合にはツイートの表示はできるが通知は行かない。

通知が行くパターン

通知が行かないパターン

まとめ

鍵垢のツイートを引用したいときにスクリーンネーム変えれば誰だかわからないし記号つければ通知も行かないしよさそう