WSL2+UbuntuでC++の競プロ環境を作る
なんとなくVimを使いたくなったのですがWindowsとの相性が悪すぎたのでWSL使ってUbuntu上で動くようにしました。
環境
Windows11 Home 22H2
WSL2でUbuntuインストール
よっぽどのことがなければwslコマンドは通るようになってると思うから省略 無理だったらWindowsUpdate確認
wsl --set-default-version 2
- Ubuntuをインストール(管理者で)
wsl --install -d Ubuntu
ここからはUbuntu上で
- neovimインストール
$ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:neovim-ppa/unstable $ sudo apt-get update $ sudo apt-get install neovim
中身は適当に
"行番号を表示 set number "シンタックスハイライトをon syntax on "行末まで検索した後行頭に戻って検索 set wrapscan "検索結果をハイライト表示(:nohで消す) set showmatch "tabキーで挿入されるスペースの数 set shiftwidth=2 "中括弧を始めた後などの改行のあと自動的にインデントを入れる set smartindent "インデント周りの各種機能で操作されるスペースの数 set softtabstop=4 "VimではUTF-8で文字を表示する set encoding=utf-8 "UTF-8でファイルを読み込み、ダメだったらShift_JISを試す set fileencodings=utf-8,sjis "UTF-8でファイルを書き込む set fileencodings=utf-8 "コマンドモードでtabを使ってファイル名を補完するときに、1回目は最大共通文字列、次からは順番にファイル名を完全補完する set wildmode=longest,full"Ctrl+J,Ctrl+Kでパラグラフ一つ分移動 nnoremap <C-j> } nnoremap <C-k> {
" Vim起動時に画面下側にターミナルを立ち上げ、いいぐらいの高さにしておく(resizeの値は適宜調整) if has('vim_starting') split wincmd j resize 15 terminal wincmd k endif
"エディタとターミナルの操作をCtrl+Tで切り替え tnoremap <C-t> <C-><C-n><C-w>k nnoremap <C-t> <C-w>j i "ターミナルモード中にEscでターミナルノーマルモードに移行 tnoremap <Esc> <C-><C-n>
set autochdir
let &t_SI .= "\e[5 q"
inoremap { {}<LEFT> inoremap [ []<LEFT> inoremap ( ()<LEFT> inoremap " ""<LEFT> inoremap ' ''<LEFT>
"dein setting-------------------------------------------------------- let s:dein_dir = expand('$HOME/.cache/dein') let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim' "if &compatible " set nocompatible " Be iMproved "endif " dein.vimがない場合githubからDL if &runtimepath !~# '/dein.vim' if !isdirectory(s:dein_repo_dir) execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir endif execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p') endif " 設定開始 if dein#load_state(s:dein_dir) call dein#begin(s:dein_dir) " プラグインリスト(toml) let g:rc_dir = expand('$HOME/.config/nvim') let s:toml = g:rc_dir . '/dein.toml' let s:lazy_toml = g:rc_dir . '/dein_lazy.toml' " tomlのロード call dein#load_toml(s:toml, {'lazy':0}) call dein#load_toml(s:lazy_toml, {'lazy':1}) " 設定終了 call dein#end() call dein#save_state() endif " Required: filetype plugin indent on syntax enable " 未インストールがあればインストール if dein#check_install() call dein#install() endif "dein setting end------------------------------------------------------
"nerdtree setting nmap <C-f> :NERDTreeToggle<CR>
"Clipboard setting set clipboard+=unnamedplus
[[plugins]] repo = 'Shougo/dein.vim'plugins repo = 'vim-airline/vim-airline' hook_add =''' let g:airline#extensions#tabline#enabled = 1 nmap <C-p> <Plug>AirlineSelectPrevTab nmap <C-n> <Plug>AirlineSelectNextTab let g:airline#extensions#tabline#buffer_idx_mode = 1 '''
plugins repo = 'vim-airline/vim-airline-themes' hook_add =''' let g:airline_theme = 'bubblegum' let g:airline#extensions#tabline#enabled = 1 let g:airline_powerline_fonts = 1 '''
plugins repo = 'ryanoasis/vim-devicons'
plugins repo = 'preservim/nerdtree'
plugins repo = 'neoclide/coc.nvim' merged = 0 rev = 'release' hook_add = ''' source ~/.config/nvim/plugins/coc.vim '''
dein_lazy.tomlは使い方がいまいちよくわからなかったので空です。
" デフォルトでインストールするもの let g:coc_global_extensions = [ \'coc-clangd', \]" エラーと警告の色を指定 highlight CocErrorSign ctermfg=15 ctermbg=196 highlight CocWarningSign ctermfg=0 ctermbg=172
"スペースinfoでHover noremap <silent> <Leader>info :<C-u>call CocAction('doHover')<cr> "スペースdfでDefinition nnoremap <silent> <Leader>df :call CocAction('jumpDefinition')<CR> "スペースfmtでFormat nnoremap <space>fmt :call CocAction('format')<CR> " Coc-quick-fix nnoremap <space>fx :call CocAction('doQuickfix')<CR> " autocomplete inoremap <silent><expr> <C-j> coc#pum#visible() ? coc#pum#next(1) : "<C-j>" inoremap <silent><expr> <C-k> coc#pum#visible() ? coc#pum#prev(1) : "<C-k>" inoremap <silent><expr> <Enter> coc#pum#visible() ? coc#pum#confirm() : "<Enter>" inoremap <silent><expr> <Esc> coc#pum#visible() ? coc#pum#cancel() : "<Esc>" inoremap <silent><expr> <C-h> coc#pum#visible() ? coc#pum#cancel() : "<C-h>"
うまくいってればこの時点でこんな感じになってるはず
atcoder-cliとonline-judge-toolsのインストール
製作者様のブログに準じます
-node.jsが必要なのでインストール
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
一旦ターミナル再起動
$ nvm install node
$ npm install -g npm
- pip3のインストール
$ sudo apt-get install python3-pip
$ npm install -g atcoder-cli
$ pip3 install online-judge-tools
accとojコマンドが通ってればOK
atcoder-cliとonline-judge-toolsの設定
- ログイン
$ acc login $ oj login https://atcoder.jp/
- 連携のための設定
$ acc config default-contest-dirname-format test
$ acc config default-task-choice all
テンプレート設定
$ acc config-dir $ cd ~/.config/atcoder-cli-nodejs $ mkdir cpp $ cd cpp
この中にmain.cppとtemplate.jsonを作成
/** * author: mioupa **/#include <bits/stdc++.h> #include <math.h> #define rep(i, n, m) for (int i = n; i < m; ++i) #define ll long long #define ALL_RANGE(v) v.begin(), v.end() #define REV_ALL_RANGE(v) v.rbegin(), v.rend() #define INF 1010000000
using namespace std;
template <class T> inline bool chmax(T &a, T b) { if (a < b) { a = b; return 1; } return 0; } template <class T> inline bool chmin(T &a, T b) { if (a > b) { a = b; return 1; } return 0; }
//-----------------end_template------------------
int main() {
return 0; }
{ "task":{ "program": ["main.cpp"], "submit": "main.cpp" } }
$ acc config default-template cpp
↑いちいち問題選ぶのがめんどくさいので
使い方
acc new {コンテスト名}
を叩く
サンプルがダウンロードされるので問題ごとにmain.cppに書き込んでいって(多分テンプレートが入ってるはず)
g++ main.cpp && oj t
でコンパイル&テストケース確認
acc s
で提出
おわりに
全部適当なのでなんか問題あったら指摘ください。よろしくお願いいたします。
【備忘録】RealESRGAN 導入(CUI)
AIってすごいですね
インストール
GitHubからダウンロード
zip展開して適当なところに置いとく
環境変数の設定
realesrgan-ncnn-vulkan.exeがあるフォルダのPathを環境変数に追加
(参考:https://www.k-cube.co.jp/wakaba/server/environ.html)
Path通ってるか確認
realesrgan-ncnn-vulkan.exe -h
↑これ打ち込んでヘルプ出てきたらいい感じ
使い方
コマンド例
realesrgan-ncnn-vulkan.exe -i input.jpg -o output.png -n model_name
ファイル名んとこをフォルダにするとフォルダ内の画像一括でできる
モデル一覧
- realesrgan-x4plus (デフォルト 速い)
- realesrnet-x4plus (よくわからない 実写向け?)
- realesrgan-x4plus-anime (アニメ向け? 遅い 多分画質いいんだろうけど素人目にはわからん)
- realesr-animevideov3 (アニメ向け? 速い)
オプション
- -n モデル選択
- -i インプットファイル/フォルダ選択
- -o アウトプットファイル/フォルダ選択
- -s 拡大率(2,3,4がある デフォルトは4)
- -f 出力フォーマット(.jpgとか.pngとか)指定
多分ほかは使わん
.hlsの動画をスマホで見れるようにしたい
こんにちは 三浦です。
先日、ひょんなことから.hlsの動画を手に入れてしまったので、mp4にしようと思っていたら、あまりネットに情報がなく、いろいろと模索して見つけた方法を紹介していこうと思います。
必要なもの
- (管理者権限のある)パソコン
- (若干の)やる気
以上です。
手順
1.hlsの動画をtsファイルとm3u8ファイルに分ける
正直ここが一番苦労しました。だってネットに乗ってねえから
というわけで自分で見つけ出した方法を書いときます。多分もっといい方法あると思うから知ってる人はコメントへ、よろしくお願いいたします。
自分はUniExtractというソフトを使いました。
インストールは下↓から
インストールはダウンロードして解凍するだけなので割愛します。
これにhlsファイルをブチ込めば、同じディレクトリにバラバラ殺人されたtsファイルとm3u8ファイルが一緒になったフォルダが生成されてるはずです。
というわけで手順1は終了。
2.FFmpegをインストールする
こっから先はネットにも乗ってると思います しらんけど
FFmpegはこちら↓
自分のOSに合ったやつをダウンロードしましょう。
インストーラ起動して指示に従ってくだけです。
ディレクトリを覚えておいてください
3.環境変数の設定
多分このへんから管理者権限ないと厳しい
左下のwindowsマーク右クリック→システム→システムの詳細設定→環境変数
特に何もなかったら「システムの環境変数」の方にしましょう。
もとから「PATH」っていうのがあった場合、その末尾に「;C:~~~~~~~(さっきインストールした場所)\bin」っていうのを付け加えてください。
4.tsとm3u8をFFmpegにブチ込む
というわけで、先程解凍して生成されたtsファイルのあるフォルダを開いて、上のごちゃごちゃ書いてあるバーに「cmd」と入力
これを使うとmp4動画が生成されます。(普通にコマンドプロンプト開いてディレクトリ変えるのでもいいよ)
そして次のように入力します。
ffmpeg -i (インデックスファイル名).m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc (保存する動画名).mp4
多分windows10のコマンドプロンプトはコピーアンドペーストできるようになってた気がする
こんな感じ
名前消したのでなんか汚くなってるのは気にしないでください。
すると同じディレクトリにmp4の動画が生成されてるはずです。
これでおしまい
まとめ
特にないです。お疲れさまでした。
はじめました
ブログ開いてみました なんか書くかはわからん