hotarunx's diary

競プロとゲームをしていません

【ウマ娘#17】第2回カプリコーン杯(2022)ゴールド エルコンドルパサー

今燃えている育成ゲームウマ娘、の月一の対人戦チャンピオンズミーティング第2回カプリコーン杯(2022)に出たが、ゴールド(上から 2 番目にすごい)の称号をもらった話。

  • 追込スイープ
  • 先行エル
  • 布陣差しシチー
  • 勝率
  • 決勝の動画
    • 過去のチャンミの成績
続きを読む

マルチディスプレイの拡張→セカンドスクリーンを切り替えるPowerShellスクリプトを書いた

スクリプト

古いDisplaySwitch.exeが必要です。

# [DisplaySwitch.exe only opens the menu, regardless of the arguments : windowsinsiders](https://www.reddit.com/r/windowsinsiders/comments/uurnqd/comment/ipeoq15/?utm_source=reddit&utm_medium=web2x&context=3)
Add-Type -AssemblyName System.Windows.Forms
$displayCount = [System.Windows.Forms.Screen]::AllScreens.Count

# 接続中のディスプレイ数を入力
$maxDisplayCount = 4

if ($displayCount -eq $maxDisplayCount) {
    # 拡張→セカンドスクリーンのみ
    C:\Users\hogehoge\script\DisplaySwitch.exe /external
}
else {
    # セカンドスクリーンのみ→拡張
    C:\Users\hogehoge\script\DisplaySwitch.exe /extend
}

EXE化

PS2EXEというソフトでEXE化した。

MScholtes/PS2EXE: Module to compile powershell scripts to executables

ps2exe .\トグルマルチディスプレイ.ps1 -noConsole

実装のコツ

DisplaySwitch.exe only opens the menu, regardless of the arguments : windowsinsiders

  1. DisplaySwitch.exeはアップデートで機能が削減されて、オプションが効かなくなった。
  2. 従来はオプションをつければGUI操作が不要だったが、できなくなった。
  3. 古いDisplaySwitch.exeを手に入れよう。
  4. 古いPCからコピーしてくるかネットで配っているものをダウンロードするといい。

再生デバイスをトグルするPowerShellスクリプトを書いた

この記事を読んで実装しただけなので、この記事を読んだほうがいいです。

[PowerShell]再生デバイスの「既定のデバイス」をワンアクションでトグルする - Qiita

スクリプト

Indexまわりがハードコーディングです。

# [PowerShell]再生デバイスの「既定のデバイス」をワンアクションでトグルする - Qiita
# https://qiita.com/heliojack/items/1cf3cc74f180374618ce#%E5%85%88%E4%BA%BA%E3%81%AE%E7%9F%A5%E6%81%B5powershell%E3%81%8C%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88

Set-Variable -Name forSound -Value 1;
Set-Variable -Name forVoice -Value 2;
$before = (Get-AudioDevice -Playback).Index;

$after = $forSound;
switch ($before) {
    $forSound { $after = $forVoice; }
    $forVoice { $after = $forSound; }
}
$null = Set-AudioDevice -Index $after;

EXE化

PS2EXEというソフトでEXE化した。

MScholtes/PS2EXE: Module to compile powershell scripts to executables

ps2exe .\再生デバイスのトグル.ps1 -noConsole

実装のコツ

  • ps2exeに-noConsoleオプションをつけてウインドウでなくした
  • -noConsoleオプションが有効だとウインドウの代わりにダイアログが出る 無駄なメッセージがあると邪魔なので、$nullに捨てた

拡張機能を駆使してPC VivaldiとiPhone Safariのブックマーク同期をしてみた

構成図

1. Vivaldi(Win11) → Chrome(Win11)

後述の拡張機能を使うため、まずブックマークをVivaldiChrome間で同期する。

ブックマークを同期する拡張機能、Floccus bookmark syncを使った。 設定はこれ。

ブックマーク同期拡張機能Vivaldiに対応しているものを選ぼう。

Vivaldi側のFloccusの設定

Chrome側のFloccusの設定

2. Chrome(Win11) → Safari(iPhone)

iCloudブックマーク - Chrome ウェブストア

Apple公式の拡張機能で、Windows ChromeiCloud間でブックマークを同期する。 ちなみにMacBookではできないので困る。

そのままiCloudSafari間で同期する。iPadも同様なので割愛。

3. Vivaldi(Win11) → Vivaldi(Mac)

Vivaldiの標準機能で、Vivaldi間でブックマークを同期する。

おまけ

最近はVivaldiのブックマーク機能が不調で、ブックマークを編集しても画面に反映されない。 とりあえずVivaldiを再起動すると治ることがあった。

2023年の目標

https://twitter.com/hotarunx/status/1609444176168640512?s=46&t=c5Ld3yLp6J6BEZld434AFw

方針

  • フロントエンド、バックエンド、インフラを一通り触る
  • まともにゲームする
  • 痩せる

目標

  • AtCoder Algo Rating 1400
  • AWS認定のアソシエイト級1つ
    • または同等のAzure認定資格
  • Vue.jsまたはReact.js完全理解
  • Go言語完全理解
    • またはバックエンド向きの言語1つ
  • スプラトゥーン3: ウデマエS+10
  • ウマ娘: 6/12回プラチナ
  • ポケモンSV: マスボ級
  • ムジュラ、ブレワイ、ティアキン、風花雪月、Elin、StSシレン5
  • 週2.5時間運動 ex: ウオーキング、RFA

2022年の目標

  • ❌AtCoder1400
    • →やってない 基礎練習からまたやろう
  • ⭕️高度試験2つ合格
    • →高度試験相当の試験を2個以上合格
  • ⭕️資格何か1つ合格
  • ⭕️TypeScript完全理解
    • →結構書いたので理解深まった
  • 🔺React完全理解
    • →Vue派に乗り換える Vueはちょっと勉強した
  • ❌Rust完全理解
    • →やってない Goに乗り換えます

競プロ典型 90 問に解説リンク(Twitter)を追加するユーザースクリプトtypical90-direct-editorial-linkを書いた

greasyfork.org

問題名の右に問題解説コードの3つのリンクが追加される。 押すとE8さんの問題ツイート、解説ツイート、GitHubのコードに飛ぶ。

余分にatcoder-difficulty-displayを入れているので難易度表示が出ている。

実装

TypeScriptのファイル分割を覚えて、メインの実装を32行に収めてみた。

実装だが、コンテストページから問題ツイートのリンク一覧、Problemsから問題情報一覧をあらかじめ取ってソースコードに埋め込んでおいて、 問題ID→問題の順番の数字(ex: 0,1,2,3,...,89)→問題ツイートのリンクと変換した。

最後の問題は解説ツイートが複数あるのだが、最初のツイートを指すようにした。複数ボタンが出るように特別に処理するのは面倒だった。

import { codes, editorials, problems, problemsApi } from "./utils";
import { taskID } from "./utils/parser";

/**
 * 最初に実行される部分
 */
(() => {
  const h2 = document.getElementsByClassName("h2")[0] as HTMLElement;
  if (!h2) return;

  const index =
    Number(problemsApi.find((e) => e.id === taskID)?.problem_index) - 1;

  h2.insertAdjacentHTML(
    "beforeend",
    `<a class="btn btn-info btn-sm" href="${
      problems[index] ?? "https://atcoder.jp/contests/typical90"
    }" target="_blank">問題</a>`
  );
  h2.insertAdjacentHTML(
    "beforeend",
    `<a class="btn btn-info btn-sm" href="${
      editorials[index] ?? "https://atcoder.jp/contests/typical90"
    }" target="_blank">解説</a>`
  );
  h2.insertAdjacentHTML(
    "beforeend",
    `<a class="btn btn-info btn-sm" href="${
      codes[index] ?? "https://atcoder.jp/contests/typical90"
    }" target="_blank">コード</a>`
  );
})();

AtCoderの共有ツイートのテキストをいじるユーザースクリプトatcoder-hashtag-setter2を書いた

greasyfork.org

AtCoder のツイートボタンの埋め込みテキストにハッシュタグ + etc を追加する。

提出詳細ならこんな感じ。

ユーザー名、結果、得点、問題名、コンテスト名、問題タグ、コンテストタグ、ユーザータグが出る。

あと右下に赤いTwitterマークのボタンが追加されており、それを押すとハッシュタグを検索できる。

元ネタ

greasyfork.org

  • 元ネタではコンテストタグと問題タグのどちらかしか表示されなかったが、どちらも表示するようにした。
  • 元ネタはURLにクエリパラメーターが含まれているとバグるが、バグらないようにした。
  • ツイートのテキストを好み出してガッツリ編集した。
  • 1つ機能追加した。