WSLでPowerlevel10kを使う時に日本語を表示する方法
Powerlevel10kをフルに活用するためには、Nerd Fontsを使用する必要があります。
公式ではMeslo Nerd Font patched for Powerlevel10kが推奨されていますが、これを利用した場合、単にUbuntu Terminal等のプロパティでフォントをこれに変更しても、日本語が文字化けするようになってしまいます。
普通ターミナルで設定されているフォントに対応する文字がなかった場合はフォントフォールバックしてシステムのデフォルトのフォント等で代替してくれるのですが、WSLのターミナルではフォールバックしてくれずそのまま文字化けしてしまうのが原因のようです(よく知りませんが、Windowsに昔からあるコンソールであるconhost.exeもフォールバックしてくれないので、これを引き継いでしまっているんでしょうか)。
そこで、2つの方策が考えられます。
1. Windows Terminal 上でWSLを使う
Windows Terminalは、太古の昔、恐竜が生まれるより前から存在するconhost.exeに代わるモダンなターミナルです。フォントフォールバックにも対応しているので、単にMesloLGS NFをフォントに設定すれば日本語は代替フォントで表示してくれます。というか、この記事を書いていて気づきましたが今はWSLのインストールガイドにもWindowsターミナルをインストールするという項目があるんですね……。以下に手順を示します。
- WSLとWindows Terminalをインストール
- MesloLGS NFをインストール
- Windows Terminalを開いて
Ctrl + ,
してsettings.json
を好きなエディタで開き、フォント等を設定(以下は設定例)
{ "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}", // (省略) { "defaults": { // Put settings here that you want to apply to all profiles. }, "list": [ { // Make changes here to the powershell.exe profile. "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "hidden": false }, { // Make changes here to the cmd.exe profile. "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", "name": "Command Prompt", "commandline": "cmd.exe", "hidden": false }, { "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}", "hidden": false, "name": "Ubuntu-20.04", "source": "Windows.Terminal.Wsl", "startingDirectory": "//wsl$/Ubuntu-20.04/home/{username}", "fontFace": "MesloLGS NF", "fontSize": 10 }, { "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "Azure Cloud Shell", "source": "Windows.Terminal.Azure" } ] },
変更箇所:
"defaultProfile"
を"list"
中のUbuntu-20.04のguidに変更- "list"`中のUbuntu-20.04に以下の3つの項目を追加:
"startingDirectory": "//wsl$/Ubuntu-20.04/home/{username}"
({username}
はWSL側の自分のユーザー名)"fontFace": "MesloLGS NF"
"fontSize": 10
2. 日本語+Nerd Fontsのフォントを使う
Nerd Fontsはパッチスクリプトも提供しているので、任意の日本語対応フォントにこれを当てて使用することでも対応できます(たぶん)。
ただ、世の中にはNerd Fonts合成済みの日本語対応フォントを配布してくれている方もいるので、そちらを利用するのが良いかと思います。
- HackGenNerd Console
- HackGen35Nerd Console
- Cica
を試してみましたが、自分の環境だとHackGenNerd Console以外は表示が崩れてしまいました。逆に、HackGenNerd Consoleであれば少し試した限りではほぼ完全に表示できていました。
おわりに
当たり前ですが、1と2を組み合わせてWindows Terminal上でHackGenNerd Consoleを使うのもありです(僕はそうしています)。
Ubuntu 18.04にWindows 10をデュアルブート
備忘録です。
環境
プロダクトキーは持っている前提。 公式サイトからインストールメディアを作成する。 Ubuntuで作成しようとしたらUSBメモリのフォーマットでちょっと手こずったのでWindowsの別PCで作成した。まあ、Ubuntuでもできるはず。
メディアができたらUbuntuの入ってるSSDとデータ用のHDDを一度外し、空のSSDをとりつける。 インストールメディアにしたUSBメモリを挿して起動するとインストーラが起動してダイアログに従ってればインストールできる。
起動設定
SATAケーブルが手元に一本しか残ってなかったのでUbuntu入ってるSSDをとりつけ、起動。 F2連打してBIOSに入りUbuntuが優先で起動するようにする。 再起動するとUbuntuが起動するが……emergency modeに入った。
Timed out waiting for device dev-disk-by ...
的なエラーが出てたのでググったらマウントに失敗したみたいなことらしい。
そういえばHDD外したんでした……。
/etc/fstab
を編集すると起動するようになった。
次に、起動時にOSを選べるように次のコマンドを打つ。
sudo update-grub
grep windows /boot/grub/grub.cfg
すればわかるが、これでWindowsの情報が追加された。
しかし解像度が低い。Nvidiaのドライバーを認識しなくなったっぽいので、とりあえずインストールしてみる。
sudo ubuntu-drivers autoinstall
無事解決した。
Ubuntu 18.04 に JUMAN++ Ver.1.02 をインストール
環境
必須・推奨ライブラリのインストール
sudo apt install google-perftools libgoogle-perftools-dev libboost-dev
推奨ライブラリのうち、libunwindは既に入っていたのでここではインストールしていません。
JUMAN++ Ver.1.02 をインストール
JUMAN++をインストールします。
wget http://lotus.kuee.kyoto-u.ac.jp/nl-resource/jumanpp/jumanpp-1.02.tar.xz tar xJvf jumanpp-1.02.tar.xz cd jumanpp-1.02.tar.xz ./configure make sudo make install
pyknp をインストール
Pythonラッパーのpyknpをインストールします。
pip install pyknp
TSUBAME3.0の使い方
はじめに
この記事はもともと岡崎研究室の新メンバーに向けて内部Wikiに書いたものを少し編集し公開したものです。なのでグループやグループディスクが既に存在している前提で書かれていますが、所属可能なTSUBAMEグループがない場合は新しくグループを作る必要があります。また、この記事は初心者向けかつ研究室のメンバー向けに情報を絞って書かれています。より多くの機能を知るにはこの記事の最後に挙げられているような一次情報に当たってください。
アカウントの取得
まだTSUBAMEアカウントを持ってない場合は取得する必要があります。東工大の学生または職員であれば東工大ポータルにログインし、「TSUBAME ポータル」リンクから申請してください。 - 学生や職員でない場合はここを参考に取得してください。
なお、課金するにはグループに追加されている必要があります。アカウントの取得後、研究室などのグループに追加してもらってください。
.ssh/configの設定
自分が利用するMacbook等のクライアントの~/.ssh/config
に以下の設定をしておきましょう(下二行は設定しないと接続が切れる)。
Host tsubame User {your TokyoTech ID or TSUBAME ID} HostName login.t3.gsic.titech.ac.jp ServerAliveInterval 120 ServerAliveCountMax 30
ログイン
- TSUBAME ポータルにログインし、sshするために公開鍵を登録する
ssh tsubame
でログイン
これでログインノードにログインできました。
TSUBAMEの環境
ここでは、TSUBAMEのストレージとソフトウェアについて述べます。
ストレージ
ホームディレクトリの容量は25GBしかないので、グループディスクと呼ばれるストレージをグループごとに購入して使うことになります。グループのストレージへのパスを誰かに聞く必要があるでしょう。 基本的には全てこのディレクトリ下に保存したほうがいいと思います。
ソフトウェア
TSUBAMEでは、module
コマンドを使用することでコンパイラやアプリケーションの切り替えを行うことができます。
使えるmoduleを確認してみましょう。
module avail
python3をロードしてみましょう。
python --version module load python/3.6.5 python --version
他には、module list
で現在利用しているmoduleを確認したり、module unload {module name}
でunloadしたり、module purge
で初期化することなどができます。
ジョブ実行
ログインノードでは重い計算はできないので、計算ノードで行う必要があります。
計算ノードでジョブを実行する方法には
- インタラクティブ実行(qrsh
)
- バッチ実行(qsub
)
- 通常実行
- 予約実行
があります。また、計算ノードには資源タイプという概念があり目的に合わせて選ぶことになりますが、ざっくり言うと - GPUを1つ使いたい:q_node - GPUを4つ使いたい:f_node - CPUだけ使う:q_core - メモリをたくさん使う:f_node
あたりを選ぶといいです。詳しくは講習会のTSUBAME利用法スライドが参考になります。
インタラクティブ実行
普段のCLIのように対話的にプログラムを実行するには、qrsh
コマンドを使います。
qrsh -g {your-group-name} -l q_core=1 -l h_rt=00:30:00 -p -4
上記で使われているオプションを以下に示します。
オプション | 説明 |
---|---|
-g | TSUBAME3グループ名を指定します。指定しないとお試し実行になります。 |
-l [資源タイプ名]=[個数] | 資源タイプおよびその個数を指定します。 |
-l h_rt=[時間] | 時間を指定します。 |
-p [-5 | -4 | -3] | ジョブの実行優先度を指定します。 -3,-4を指定すると通常よりも高い課金係数が適用されます。-4は-5の2倍、-3は-5の4倍お金がかかります。 |
終了するときは普通にexit
してください。
バッチ実行
バッチ実行では、ジョブスクリプトを記述してそれをqsub
コマンドによって投入します。
ジョブスクリプトの作成
以下にジョブスクリプトの例を示します。なお、qsub
コマンドのオプションはqrsh
と同じですが、コマンドラインで指定することも、以下のようにスクリプトファイルの最初のコメントに書いておくこともできます。ただし-g
オプションだけはコマンドの引数として指定する必要があります。
#!/bin/sh # カレントディレクトリでジョブを実行する場合に指定 #$ -cwd # ノードのタイプと数を指定 #$ -l f_node=1 # 実行時間を指定 #$ -l h_rt=0:10:00 # ジョブ名(指定しない場合はスクリプトファイル名になる) #$ -N test # 標準出力ファイル名(指定しないとジョブの名前とIDを元に生成される) #$ -o test_job.out # 標準エラー出力ファイル名(同上) #$ -e test_job.err # メールを送信する条件を指定(a:中止時、b:開始時、e:終了時) #$ -m abe # 送信先メールアドレス #$ -M example@example.com # Moduleコマンドの初期化(必ず行うこと) . /etc/profile.d/modules.sh # CUDA&cuDNN環境の読込 module load cuda/9.0.176 module load cudnn/7.3 # プログラムの実行 python -c 'import this'
オプションについて詳しくはこちら
スクリプトの実行
上記のようなスクリプトをjob.shというファイル名で保存したとすると、ジョブは次のように実行できます。
qsub -g {your-group-name} -p -4 job.sh
ジョブの確認や削除
- 確認:
qstat
- 削除:
qdel {job-ID}
予約実行について
上記のような通常実行では1つのジョブに最大24時間までしか指定することができません。それ以上使いたい場合には、予約実行をする必要があります。予約はTSUBAMEポータルから行い、与えられた予約IDを-ar
オプションで指定してqsub
することで実行できますが、ここでは詳しく触れません。利用の手引きを参考にしてください。
この記事で説明されていないこと
- アレイ実行
- 依存実行
- 並列化(複数ノードの使用)
Tips
スペック
TSUBAME
- ノード数:540
- GPU:Tesla P100 (NVlink)
詳しくは
- https://helpdesk.t3.gsic.titech.ac.jp/manuals/handbook.ja/
- https://www.t3.gsic.titech.ac.jp/hardware
各ノード
資源タイプ名 | CPUコア数 | メモリ (GB) | GPU 数 |
---|---|---|---|
f_node | 28 | 240 | 4 |
q_node | 7 | 60 | 1 |
q_core | 4 | 30 | 0 |
詳しくは https://helpdesk.t3.gsic.titech.ac.jp/manuals/handbook.ja/jobs/
利用料金
ポイント制。東工大の学内の人間が使う場合利用料金が75%オフになる。 - 購入代金:720,000ポイント / 5,000円 (学内の場合)
消費ポイントの計算式は以下の通り。
消費ポイント= 利用ノード数×資源タイプ係数×優先度係数×(0.7× 実際の実行時間(秒) + 0.1×指定した実行時間(秒))
- 例:f_nodeを1つ24時間指定した上で24時間優先度-4で使った場合、138,240ポイント消費する(金額に換算すると960円)
その他
- ログインノードはlogin0とlogin1のふたつあり、sshすると自動的にどちらかに振り分けられる(通常は気にする必要はない)
ドキュメント
- TSUBAME計算サービス(トップページ)
- 一番包括的なドキュメントページ
- TSUBAMEの運用状況もここに載ってる
- 計算ノードの混雑状況を確認したい
- ここを見て空きがない時は優先度を上げないと厳しい
- 利用の手引き
- このチュートリアルは半分くらいこのページの焼き直し
- 講習会ページ
JupyterLabでtqdmを使えるようにするためにcondaでnodejsとipywidgetsをインストールする
初期状態のJupyter Labでtqdm
やtqdm_notebook
を使おうとしてもうまく動作しません。
これを解決するためには、ipywidgetsのJupyterLab Extensionをインストールする必要があります。
ipywidgetsのインストール
まだipywidgetsがインストールされていない場合は以下のどちらかの方法でインストールしてください。
pip install ipywidgets jupyter nbextension enable --py --sys-prefix widgetsnbextension
もしくは
conda install -c conda-forge ipywidgets
JupyterLab Extensionのインストール
JupyterLab Extensionをインストールするにはnodejsもインストールされている必要があるので、まず以下のコマンドを実行します。
conda install -c conda-forge nodejs
それからlabextensionをインストールします。
jupyter labextension install @jupyter-widgets/jupyterlab-manager
結果
バーが無限に生成されなくなってうれしい
余談
JupyterLabでtqdmを使えるようにしたいという話自体は既にいろんな人がしているのですが、nodejsを入れる手段がいろいろあるもののどれも冗長だったのでなんかないかな~と思っていたところipywidgetsの公式ドキュメントにcondaでnodejsを入れられると書いてあり、jupyterを使う人達にとってはPPAとかn packageとかnodebrewとかが出てきて新しいよとかバージョン管理できるよと言われるよりcondaでポンと入ってしまったほうがうれしいのではないかと思い書きました。
参考文献
aptでインストール済みのパッケージ構成を(他のサーバで)復元する
古いサーバにaptでインストールされているパッケージたちを新しいサーバにもインストールする必要があり、とりあえずググって出てきた方法で試したがうまくいかず、他にないか探していたらちょうどいいものがあったのでメモ。
環境
移行前、移行先のサーバ共にUbuntu Server 18.04 LTS
手順
1. 移行前のサーバ
sudo apt update & upgrade sudo apt install apt-clone sudo apt-clone clone ~/hoge
すると、インストールできないパッケージ等の情報が標準出力に出るとともに、hoge.apt-clone.tar.gz
が生成されるので、scp
などで移行先のサーバに送ってください(自分はディレクトリがマウントされていたので送る必要はなかったけど)。
2. 移行先のサーバ
sudo apt update & upgrade sudo apt install apt-clone sudo apt-clone restore ~/hoge.apt-clone.tar.gz
以上でインストールは完了です。
余談
もともとはこちらなどに書かれているように、dselect
を使ってインストールしようとしていました。しかし、
という警告が出て、まあ入れ直すのだから大丈夫だろうとは思いつつも、highly recommendedと言われてるし、ググってもこの警告に関して言及してる人が見当たらなかったこと、そもそも手順がややこしくpip
のpip freeze > requirements.txt
とpip -r requirements.txt
みたいにあっさり移行できる方法がないのかと思ったこともあり、改めて他の手段を探すことにした結果、apt-clone
を見つけて使うことにしました。そのとき日本語の情報が見当たらなかったのでこの記事を書くことにしました。
上のダイアログでNoを選んでも無事インストールできていたのか気になる……。
参考
Hugo + Academic + Netlify で一瞬でウェブサイトを作って公開する
記事タイトルで一瞬でウェブサイトを作るとか言ってるので、何が起きているのかの説明は後回しにして、まずは最短の手順を示したいと思います。
1. GitHub 上に Academic のテンプレートをダウンロードしつつ Netlify と連携
以下のリンクを踏んで緑色のボタンをポチポチしてください。GitHub アカウントを持っていない場合は作ってください。
https://app.netlify.com/start/deploy?repository=https://github.com/sourcethemes/academic-kickstart
するとこんな感じの画面になると思います。 これでもうウェブサイトは完成し公開されました。上の画像で言うと https://objective-sammet-5a4f1a.netlify.com がウェブサイトのURLで既にアクセスできるわけですが、もしこの自動的に割り当てられたURLが嫌な場合は Site settings から Change site name ボタンを押すことで変えられます。独自ドメインも使えますがここでは触れません。
2. GitHub から更新する
次はウェブサイトの内容を編集します。先ほどの手順によって GitHub にリポジトリが作成されているはずです。リポジトリ名を変更していなければURLは https://github.com/username/academic-kickstart になっているはずです(username は適宜置き換えてください)。
まずはconfig.toml
を編集してみましょう。git clone
してもいいのですが、ここでは簡単のため GitHub 上で直接いじります。config.toml
のページに移動したあと、ペンっぽいアイコンをクリックしてください (下の画像で矢印が指してる先です)。
すると編集できるようになるので、
title = "Academic"
となっているところを
title = "Test"
と書き換えてください (もちろん Test じゃなくても自分の名前でもなんでも良いです)。
それから、59行目の
color_theme = "default"
を
- ocean
- forest
- coffee
- dark
- 1950s
のいずれかに変えてください。
できたらページの一番下までスクロールして Commit changes をクリックしましょう。しばらく待つと自動的にウェブサイトの内容が更新されているはずです。同様の方法でconfig.toml
やcontent
ディレクトリ内の様々なファイルを編集し commit すればウェブサイトの各コンテンツを更新できます。ファイルを見ればどこをどう編集すればよいかというのはだいたいわかると思います。たとえば、Biography を編集したい場合はcontent/home/about.md
を開いて一番下の
# Biography Lena Smith is a professor of artificial intelligence at the Stanford AI Lab. Her research interests include distributed robotics, mobile computing and programmable matter. She leads the Robotic Neurobiology group, which develops self-reconfiguring robots, systems of self-organizing robots, and mobile sensor networks. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque elit, tristique placerat feugiat ac, facilisis vitae arcu. Proin eget egestas augue. Praesent ut sem nec arcu pellentesque aliquet. Duis dapibus diam vel metus tempus vulputate.
となっている部分を
# 自己紹介 こんにちは
と書き換えてください。もちろん、これはただの Markdown 記法なので、見出しを追加したり、シンタックスハイライトをつけたりすることもできます。 より高度な編集をしたい場合は 公式ドキュメント を参照してください。
何が起きているのか?
Hugo
上記の手順では全く表に出てきませんでしたが、このウェブサイトを作る上で裏では Hugo という静的ウェブサイトのジェネレータが動いています。Academic は Hugo のテーマのひとつです。リポジトリのthemes
を開いてみると入っているのがわかると思います。テーマの一覧は
で見ることができ、Netlify との連携を提供してくれているテーマであれば Academic 以外のテーマでも今回のようなことができます。
Netlify
Netlify は静的サイト用のホスティングサービスです。本来であれば更新をサイトに反映するには Hugo がページを生成するためにhugo
コマンドを打ち、それから生成したファイル群をサーバにデプロイしなければいけないのですが、Netlify が そのへんのことを GitHub に変更が加えられるたびに勝手にやってくれています。そして、その勝手にやってもらうための設定もテーマの製作者が用意して提供してくれているので、もはや我々は何もする必要がなかったわけですね。ただ、Netifly は本当に簡単なのでやろうと思えばすぐに自分でも自動化できます。ちなみに設定はリポジトリのnetlify.toml
や Netlify 上の Settings の Build & deploy にあります。