2023-12-30
今年も終わるのでいつかやりたかった、自分のプロフィールホームページを作ってみた。手段は
- Google Sites
- GitHub Pages
- Sphinx
- Documenter.jl
など色々あったが、結局JuliaのDocumenter.jlを使うことにした。理由はJuliaのプログラム開発も一緒に勉強してみたかったから。
How to make bio
1. Prepare files
$ ls
CMakeLists.txt Project.toml README.md build docs installer.jl src
$ cat CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(installer NONE)
# Find Julia executable
find_program(Julia_EXECUTABLE julia)
if(Julia_EXECUTABLE)
message(STATUS "Found Julia executable: ${Julia_EXECUTABLE}")
else()
message(FATAL_ERROR "Julia executable not found. Please make sure Julia is installed.")
endif()
configure_file(
installer.jl installer
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
$ cat installer.jl
#!@Julia_EXECUTABLE@
using Pkg
# Create a virtual environment
Pkg.activate("env")
Pkg.add("Documenter")
Pkg.add("LiveServer")
Pkg.add("Colors")
# Install the package of the ../
Pkg.develop(PackageSpec(path = ".."))
2. Install
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./installer
3. Build
$ cd ../docs
$ vi src/xxx.md # write markdown files as needed
$ julia --project=../build/env make.jl
4. Check
$ julia --project=../build/env -e 'using LiveServer; serve(dir="build")'
then, in your browser open http://localhost:8000/
.
5. Depoly
Setting up GitHub Pages and push to repository. Then, the HP is available in .
Comments
やっぱりJuliaはPythonに比べて情報が少ないのでフロムスクラッチで作るのはちょっと大変。 Juliaの仮想環境ってPythonのvenvでいうdeactivate
みたいなのがactivate
になっているのは絶対に命名ミスだと思う。 SphinxはServerを立てなくてもhtmlファイルが見れたけど、Documenter.jlはぜんぶindex.htmlという名前に変換されるからsidebarからのリンクがServerを立てないと見れないのはちょっと不便。 Markdownで書けたり、GitHubのリンクを貼れたり、dark-modeの切り替えができたり、Juliaのコードを実行できたり、Juliaパッケージがどれもおなじテーマを採用していたりと、良いところもある。(ユニークにしたかったので、light-modeだけCSSをいじってみた。)
Tensor network diagram by Graphviz
プロフィールにおいたMPSの図をGraphvizで作ってみた。深層学習の人たちがよく使っているのを知ってテンソルネットワークの図にも使えるのかなと思って試してみた。
digraph MPS {
rankdir=TD;
node [shape=circle style=filled];
A [label="A" fillcolor="#9558B2"]; // 紫
B [label="A" fillcolor="#EA6B5A"]; // 赤
C [label="A" fillcolor="#60BB93"]; // 緑
A_dummy [label="" width=0 style=invis];
B_dummy [label="" width=0 style=invis];
C_dummy [label="" width=0 style=invis];
A -> A_dummy [label="" arrowhead=none];
B -> B_dummy [label="" arrowhead=none];
C -> C_dummy [label="" arrowhead=none];
A -> B [label="" arrowhead=none];
B -> C [label="" arrowhead=none];
{rank=same; A; B; C}
{rank=same; A_dummy; B_dummy; C_dummy}
}
を用意して
$ dot -Tsvg sample.dot -o sample.svg
するだけ。(dot
はGraphvizのコマンドでHomebrewでインストールできる。) 脱Draw.ioするには、数式組立も標準対応してほしいところ。dot2tex
というPythonライブラリを使えばできるそうだけども、それはめんどい。