This commit is contained in:
uetchy 2021-10-11 12:24:57 +09:00
parent 4fc8f4c77b
commit d807a0407f
7 changed files with 111 additions and 258 deletions

View File

@ -4,5 +4,5 @@ build:
push: push:
docker-compose push docker-compose push
deploy: bulid deploy: build
docker-compose -f docker-compose.production.yml up -d docker-compose -f docker-compose.production.yml up -d

View File

@ -13,7 +13,7 @@ title: 準ソロキャンプ
- 寝袋 - 寝袋
- モンベル ダウンハガー 800 #3 - モンベル ダウンハガー 800 #3
- 5 度を下回ると普通に寝れない - 5 度を下回ると普通に寝れない
- と思っていたが、サーモライトリアクターをインナーに入れることで氷点下 2 度の中で寝ることができた - と思っていたが、サーモライトリアクターをに入れることで氷点下 2 度の中で寝ることができた
- マット - マット
- Thermarest Z Lite SOL S - Thermarest Z Lite SOL S
- 帆布シートの上に敷いて座布団としても使える - 帆布シートの上に敷いて座布団としても使える
@ -21,10 +21,10 @@ title: 準ソロキャンプ
- asobito 綿帆布シート - asobito 綿帆布シート
- そのままだと硬く寒いため銀マットを座布団として使う - そのままだと硬く寒いため銀マットを座布団として使う
- 多少の防水性と耐火性があるため、焚き火・ブッシュクラフトスタイルと相性が良い - 多少の防水性と耐火性があるため、焚き火・ブッシュクラフトスタイルと相性が良い
- 前室に敷いておけば、寝ている間地面の湿気から荷物を守れる - 前室に敷いておけば、寝ている間地面の湿気から荷物を守ってくれる
- 手袋 - 手袋
- グリップスワニー G-1 ブラック - グリップスワニー G-1 ブラック
- 燃えている薪数秒程度なら持てる - 燃えている薪でも数秒程度なら持てる
- 柔軟性があるため細かい作業ができる - 柔軟性があるため細かい作業ができる
- ナイフ - ナイフ
- MOSSYOAK 225mm - MOSSYOAK 225mm
@ -45,20 +45,21 @@ title: 準ソロキャンプ
- ワインオープナーと小型ナイフがメイン用途 - ワインオープナーと小型ナイフがメイン用途
- ランタン - ランタン
- Feuerhand 276 - Feuerhand 276
- こだわりが無ければ LED ランタンの方が圧倒的に明るいし便利 - こだわりが無ければ LED ランタンの方が明るいし便利
- サブランタン - サブランタン
- UCO キャンドルランタン オイル化改造 - UCO キャンドルランタン オイル化改造
- ソロキャンであればこれくらいの明るさでも作業できる - ソロキャンであればこれくらいの明るさでも作業できる
- 2 人キャンで 2 人分をカバーするようなことはできない - 2 人キャンで 2 人分をカバーするようなことはできない
- 焚き火調理中にフライパンの中の様子を見たいといった場合には厳しいかもしれない - 焚き火調理中にフライパンの中の様子を見たいといった場合には厳しい
- 不安定な地面やメッシュテーブルに置くと倒れそうになるのでパーツを自作して補強する必要がある - 不安定な地面やメッシュテーブルに置くと倒れそうになるのでパーツを自作して補強する必要がある
- ヘッドライト - ヘッドライト
- Petzl Zipka - Petzl Zipka
- 普通の作業でずり落ちることはない - 普通の作業でずり落ちることはない
- 赤色灯が地味に便利で、目の明順応を軽減する効果がある - 赤色灯が地味に便利で、明順応を軽減する効果がある
- ゴミ袋 - ゴミ袋
- ジップロック - ジップロック
- 基本戦略としてゴミを作らないことが大事野菜などは紙で包んでいくことで焚き火の火口にできる - 基本戦略としてゴミを作らないことが大事
- 野菜などは紙で包んでいくことで焚き火の火口にできる
- iPhone - iPhone
- ロープワークのリファレンスアプリを入れてオフラインでも参照できるようにする - ロープワークのリファレンスアプリを入れてオフラインでも参照できるようにする
- 現地までの道案内 - 現地までの道案内
@ -69,23 +70,21 @@ title: 準ソロキャンプ
- パラコード - パラコード
- テントやタープの固定、トライポッド自作、ケトルの吊り下げ、ランタンの吊り下げ、薪の固定等、あらゆる状況で使える - テントやタープの固定、トライポッド自作、ケトルの吊り下げ、ランタンの吊り下げ、薪の固定等、あらゆる状況で使える
- 1m や 3m のロープを何束か作っておくと便利 - 1m や 3m のロープを何束か作っておくと便利
- ジップロック L サイズ
- 消毒用アルコール - 消毒用アルコール
- トイレットペーパー - トイレットペーパー
## 焚き火 ## 焚き火
- 斧 - 斧
- ハスクバーナのキャンプ用斧ダイヤモンドシャープナーで研いでおく - ハスクバーナのキャンプ用斧
- ハンマーとしても使える - ハンマーとしても使える
- 折りたたみノコギリ - 折りたたみノコギリ
- 薪を現地調達するなら必要 - 薪を現地調達するなら必要
- フェロセリウムロッド - フェロセリウムロッド
- 趣味 - 趣味
- マグネシウムロッドよりも火花が大きい大きいサイズが良い - マグネシウムロッドよりも火花が大きい
- マッチ - マッチ
- キャンドルランタンや焚き火の火口への点火時に使用する - 趣味
- 切ったロープの端を処理する際にも使える
- ガストーチ(予備) - ガストーチ(予備)
- SOTO のマイクロトーチ - SOTO のマイクロトーチ
- マッチが濡れた場合や雨天時に備えて用意しておく - マッチが濡れた場合や雨天時に備えて用意しておく

View File

@ -1,52 +0,0 @@
---
title: 数学API:SVG画像としてのLaTeX Math
description: <img>のような場所にLaTeX数学方程式を配置します。
tags:
- LaTeX
- Math
- API
- showdev
---
私はいつも、LaTeX Math 方程式を、MathJax が内部で実行できない Web ページに配置したいと思っていました。
少し時間をかけて、LaTeX Math マークアップを SVG 画像にレンダリングする[Math API](https://math.now.sh) を作成しました。
したがって、GitHub、Jupyter Notebook、dev.to、そして Qiita(こちら!)など、 `<img>`または Markdown( `![]()`)を配置できるほぼすべての場所に方程式を配置できます。
```markdown
![](https://math.now.sh?from=\LaTeX)
```
![](https://math.now.sh?from=\LaTeX)
```markdown
![](https://math.now.sh?from=\log\prod^N_i x_i = \sum^N_i \log{x_i})
```
$$
\log\prod^N_i x_i = \sum^N_i \log{x_i}
$$
## インライン画像
![](https://thepracticaldev.s3.amazonaws.com/i/fqea9nq2wv9in15lqlf3.png)
![](https://thepracticaldev.s3.amazonaws.com/i/43slt0h6dfhox1xwmuti.png)
クエリを「from」から「inline」に変更することにより、インライン方程式を生成することができます。
```markdown
<img src="https://math.now.sh?inline=\\LaTeX" />
```
## オンラインエディター
また、[Math API](https://math.now.sh) で利用可能なオンラインエディターがあります。
![](https://thepracticaldev.s3.amazonaws.com/i/gg2wil3exu9lyj7ppuoy.png)
## 結論
ソースコードは[GitHub](https://github.com/uetchy/math-api)で入手できます。
それを試してみて、新機能のコメント/アイデアを残してください。

View File

@ -1,63 +0,0 @@
---
title: namae.devでアプリのスリック名を付けます
tags:
- javascript
- web
cover_image: https://thepracticaldev.s3.amazonaws.com/i/uafydwlnfneikuiyxe2w.png
---
新しい OSS プロジェクトまたは Web アプリの命名に苦労したことがありますか? GitHub、npm、Homebrew、PyPI、Domains などで希望するものを誰も要求していないことを望みながら、最適な名前を ​​ 選択するのは退屈です。
だからこそ、[namae](https://namae.dev)を作成しました。
## namae
![namae](https://thepracticaldev.s3.amazonaws.com/i/np1a40lrch9m10b1s7nz.gif)
[namae](https://namae.dev) は、開発者と起業家向けのプラットフォーム間名前可用性チェッカーです。
使用する名前をフォームに入力すると、namae はさまざまなレジストリを調べて、名前がすでに使用されているかどうかを確認します。
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/pww3x6ycshadfiiotep9.png)
## サポートされているプラ ​​ ットフォーム
namae は 15 のパッケージレジストリと Web プラットフォームをサポートしており、成長しています。
- ドメイン
- GitHub Organization
- npm / npm Organization
- PyPI
- RubyGems
- crates.io (Rust)
- Homebrew / Homebrew Cask
- LaunchPad / APT (Linux)
- Twitter
- Spectrum
- Slack
- Heroku
- ZEIT Now
- AWS S3
- js.org
さらに、検索結果には、**GitHub**および**App Store**に類似した名前のプロジェクトのリストが含まれています。
## 名前の提案
namae には、**Name Suggestion**という独自の機能もあります。共通の接頭辞/接尾辞と同義語で構成される自動生成された名前を提案します。いくつかの例を見てみましょう。
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/aas52pwbrueyzrulfiae.png)
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/j6jv0rq4gin28hks1ika.png)
提案をクリックすると、ナマエはフォームを完成させて、レジストリを検索し始めます。
## オープンソース
namae は完全にオープンソースであり、ソースコード全体は[GitHub](https://github.com/uetchy/namae)で入手できます。 API 用の Node.js Lambda と Web フロントエンド用の React アプリで構成され、[ZEIT Now](https://now.sh)で実行されています。
## 結論
namae を使用すると、ホスティングプロバイダーとパッケージレジストリのセットの周りで普遍的に利用可能な名前を検索する時間を節約できます。
[namae.dev](https://namae.dev/)に移動して、将来の製品名が入手可能かどうかのレポートを取得します。何か提案があれば、コメントを残すか、Twitter([@uetschy](https://twitter.com/uetschy))で私に連絡してください。

View File

@ -71,8 +71,6 @@ reflector --protocol https --latest 30 --sort rate --save /etc/pacman.d/mirrorli
pacman -S vim man-db man-pages git base-devel pacman -S vim man-db man-pages git base-devel
``` ```
reflector --protocol https --latest 30 --sort rate --save /etc/pacman.d/mirrorlist --verbose
## locale ## locale
```bash ```bash
@ -397,7 +395,7 @@ yay -S telegraf
# Configuration for telegraf agent # Configuration for telegraf agent
[agent] [agent]
interval = "10s" interval = "15s"
round_interval = true round_interval = true
metric_batch_size = 1000 metric_batch_size = 1000
metric_buffer_limit = 10000 metric_buffer_limit = 10000
@ -469,6 +467,15 @@ urls = [
[[inputs.sensors]] [[inputs.sensors]]
interval = "60s" interval = "60s"
remove_numbers = false remove_numbers = false
# Run executable as long-running input plugin
[[inputs.execd]]
interval = "15s"
command = ["/metrics.sh"]
name_override = "metrics"
signal = "STDIN"
restart_delay = "20s"
data_format = "logfmt"
``` ```
```ini /etc/sudoers.d/telegraf ```ini /etc/sudoers.d/telegraf
@ -502,6 +509,7 @@ notification:
```ini /etc/cfddns/domains ```ini /etc/cfddns/domains
example.com example.com
dev.example.com
``` ```
``` ```
@ -511,110 +519,75 @@ systemctl enable --now cfddns
## backup ## backup
```bash ```bash
pacman -S borg pacman -S restic
``` ```
```ini /etc/backups/borg.service ```ini /etc/backup/restic.service
[Unit] [Unit]
Description=Borg Daily Backup Service Description=Daily Backup Service
[Service] [Service]
Type=simple Type=simple
Nice=19 Nice=19
IOSchedulingClass=2 IOSchedulingClass=2
IOSchedulingPriority=7 IOSchedulingPriority=7
ExecStart=/etc/backups/run.sh ExecStart=/etc/backup/run.sh
``` ```
```ini /etc/backups/borg.timer ```ini /etc/backup/restic.timer
[Unit] [Unit]
Description=Borg Daily Backup Timer Description=Daily Backup Timer
[Timer] [Timer]
WakeSystem=false WakeSystem=false
OnCalendar=*-*-* 03:00 OnCalendar=*-*-* 14:00
RandomizedDelaySec=10min RandomizedDelaySec=5min
[Install] [Install]
WantedBy=timers.target WantedBy=timers.target
``` ```
```bash /etc/backups/run.sh ```bash /etc/backup/run.sh
#!/bin/bash -ue #!/bin/bash -ue
# The udev rule is not terribly accurate and may trigger our service before # https://restic.readthedocs.io/en/latest/040_backup.html#
# the kernel has finished probing partitions. Sleep for a bit to ensure
# the kernel is done.
sleep 5
# export RESTIC_REPOSITORY=/path/to/backup
# Script configuration export RESTIC_PASSWORD=<passphrase>
# export RESTIC_PROGRESS_FPS=1
export BORG_PASSPHRASE="<secret>"
MOUNTPOINT=/mnt/backup
TARGET=$MOUNTPOINT/borg
# Archive name schema # system
DATE=$(date --iso-8601) restic backup --tag system -v \
#
# Create backups
#
# Options for borg create
BORG_OPTS="--stats --compression lz4 --checkpoint-interval 86400"
# No one can answer if Borg asks these questions, it is better to just fail quickly instead of hanging.
export BORG_RELOCATED_REPO_ACCESS_IS_OK=no
export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=no
# Log Borg version
borg --version
echo "Starting backup for $DATE"
echo "# system"
borg create $BORG_OPTS \
--exclude /root/.cache \
--exclude /root/.pyenv \
--exclude /root/.vscode-server \
--exclude /root/.local/share/TabNine \
--exclude 'sh:/home/*/.cache' \
--exclude 'sh:/home/*/.cargo' \
--exclude 'sh:/home/*/.pyenv' \
--exclude 'sh:/home/*/.vscode-server' \
--exclude 'sh:/home/*/.local/share/TabNine' \
--one-file-system \ --one-file-system \
$TARGET::'system-{now}' \ --exclude .cache \
/etc /boot /home /root /srv --exclude .venv \
--exclude .vscode-server \
--exclude .vscode-server-insiders \
--exclude TabNine \
--exclude node_modules \
--exclude /var/lib/docker/overlay2 \
/ /boot
echo "# data" # ftl
borg create $BORG_OPTS \ restic backup --tag ftl -v \
--exclude 'sh:/mnt/data/nextcloud/appdata_*/preview' \
--exclude 'sh:/mnt/data/nextcloud/appdata_*/dav-photocache' \
$TARGET::'data-{now}' \
/mnt/data
echo "# ftl"
borg create $BORG_OPTS \
$TARGET::'ftl-{now}' \
/mnt/ftl /mnt/ftl
echo "Start pruning" # data
BORG_PRUNE_OPTS_NORMAL="--list --stats --keep-daily 7 --keep-weekly 3 --keep-monthly 3" restic backup --tag data -v \
borg prune $BORG_PRUNE_OPTS_NORMAL --prefix 'system-' $TARGET --exclude 'appdata_*/preview' \
borg prune $BORG_PRUNE_OPTS_NORMAL --prefix 'data-' $TARGET --exclude 'appdata_*/dav-photocache' \
borg prune $BORG_PRUNE_OPTS_NORMAL --prefix 'ftl-' $TARGET /mnt/data
echo "Completed backup for $DATE" restic forget --prune --group-by tags \
--keep-daily 7 --keep-weekly 3 --keep-monthly 3
# Just to be completely paranoid restic check
sync
``` ```
```bash ```bash
ln -sf /etc/backups/borg.{service,timer} /etc/systemd/system/ chmod 700 /etc/backup/run.sh
systemctl enable --now borg ln -sf /etc/backup/restic.{service,timer} /etc/systemd/system/
systemctl enable --now restic
``` ```
## Kubernetes ## Kubernetes
@ -866,7 +839,7 @@ Audit=no
This occurs after updating linux kernel. This occurs after updating linux kernel.
- Run `docker --rm --gpus all -it nvidia/cuda:10.2-cudnn7-runtime nvidia-smi` once. - Run `docker run --rm --gpus all --device /dev/nvidia0 --device /dev/nvidiactl --device /dev/nvidia-modeset --device /dev/nvidia-uvm --device /dev/nvidia-uvm-tools -it nvidia/cuda:10.2-cudnn7-runtime nvidia-smi` once.
# Useful links # Useful links
@ -878,5 +851,4 @@ This occurs after updating linux kernel.
- [udev - ArchWiki](https://wiki.archlinux.org/title/Udev#Debug_output) - [udev - ArchWiki](https://wiki.archlinux.org/title/Udev#Debug_output)
- [[HOWTO] Repair Broken system, system without a kernel / Forum & Wiki discussion / Arch Linux Forums](https://bbs.archlinux.org/viewtopic.php?id=18066) - [[HOWTO] Repair Broken system, system without a kernel / Forum & Wiki discussion / Arch Linux Forums](https://bbs.archlinux.org/viewtopic.php?id=18066)
- [Archboot - ArchWiki](https://wiki.archlinux.org/title/Archboot) - [Archboot - ArchWiki](https://wiki.archlinux.org/title/Archboot)
- [Restoring with the Borg](https://blog.jamesthebard.net/restoring-with-the-borg/) - [Restic Documentation — restic 0.12.1 documentation](https://restic.readthedocs.io/en/stable/)
- [Restore with Borg | BorgBase Docs](https://docs.borgbase.com/restore/borg/)

View File

@ -7,15 +7,13 @@ date: 2021-02-13T00:00:00
# 用途 # 用途
- セルフホスト (Dockerized) - セルフホスト (Docker)
- メールサーバー - メールサーバー
- DNS サーバー
- Nextcloud(ファイル、カレンダー、連絡先等) - Nextcloud(ファイル、カレンダー、連絡先等)
- GitLab
- プライベート Docker レジストリ - プライベート Docker レジストリ
- VPN - VPN
- 計算実験 - 計算実験
- Docker Swarm ノード - Docker Swarm マスターノード
- VS Code Remote SSH のホストマシン - VS Code Remote SSH のホストマシン
# スペック # スペック
@ -24,6 +22,8 @@ date: 2021-02-13T00:00:00
> 結果から言うとメモリはもっと必要でした。巨大な Pandas データフレームを並列処理なんかするとサクッと消えてしまいます。予算に余裕があるなら 128GB ほど用意したほうが良いかもしれません。 > 結果から言うとメモリはもっと必要でした。巨大な Pandas データフレームを並列処理なんかするとサクッと消えてしまいます。予算に余裕があるなら 128GB ほど用意したほうが良いかもしれません。
> 追記: メモリ異常を起因とするシステム誤動作により、`/sbin` 以下がゼロ上書きされカーネルが起動しなくなるなど様々な厄災に襲われました。後日 Hynix 製のチップを搭載した V-color 社の ECC 付き U-DIMM に交換してからは、サーバーが安定動作するようになり現在に至ります。やはり 365 日稼働し続けるサーバーには最初からケチらずに ECC 付きメモリを選んでおいた方が賢明です。
GPU は古いサーバーに突っ込んでいた NVIDIA GeForce GTX TITAN X (Maxwell)を流用しました。グラフィックメモリが 12GB ちょっとですが、最大ワークロード時でも 5GB は残るので今のところ十分です。必要になったタイミングで増やします。 GPU は古いサーバーに突っ込んでいた NVIDIA GeForce GTX TITAN X (Maxwell)を流用しました。グラフィックメモリが 12GB ちょっとですが、最大ワークロード時でも 5GB は残るので今のところ十分です。必要になったタイミングで増やします。
記憶装置は WD HDD 3TB 2 台と Samsung 970 EVO Plus 500GB M.2 PCIe、そして古いサーバーから引っこ抜いた Samsung 870 EVO Plus 500GB SSD です。NVMe メモリは OS 用、SSD/HDD はデータとバックアップ用にします。 記憶装置は WD HDD 3TB 2 台と Samsung 970 EVO Plus 500GB M.2 PCIe、そして古いサーバーから引っこ抜いた Samsung 870 EVO Plus 500GB SSD です。NVMe メモリは OS 用、SSD/HDD はデータとバックアップ用にします。
@ -55,8 +55,9 @@ Arch Linux のセットアップは[個別に記事](https://uechi.io/blog/insta
# 組立ての勘所 # 組立ての勘所
- 半年間はすべての箱・書類を取っておく
- 筐体は無視してまずマザボ、CPU、クーラー、(オンボードグラフィックが無い CPU なら)グラボ、そして電源を繋いで通電・動作テストをする - 筐体は無視してまずマザボ、CPU、クーラー、(オンボードグラフィックが無い CPU なら)グラボ、そして電源を繋いで通電・動作テストをする
- [MemTest86](https://www.memtest86.com/)でメモリの動作テスト - [MemTest86](https://www.memtest86.com/)でメモリの動作テストを最後までやる(エラーが出たら交換依頼)
- USB ブートで OS の起動確認 - USB ブートで OS の起動確認
- Ethernet が死んでいる場合は USB-Ethernet アダプターでまずネットを確保する - Ethernet が死んでいる場合は USB-Ethernet アダプターでまずネットを確保する
- ほとんどの場合 Linux カーネルのバージョンを上げると(デバイスドライバーも新しくなり)直る - ほとんどの場合 Linux カーネルのバージョンを上げると(デバイスドライバーも新しくなり)直る

View File

@ -1,5 +1,5 @@
--- ---
title: Yasuaki Uechi title: about me
--- ---
<style> <style>
@ -10,31 +10,27 @@ img {
# README # README
> I'm **Yasuaki Uechi**, a graduate student studying about recurrent neural networks. I was born in Okinawa, Japan and have been living in Kanagawa. > I'm **uetchy**. I was born in Okinawa, Japan and have been living in Kanagawa.
# Contact # Contact
Reach me at `y@uechi.io` or [\@uechz](https://twitter.com/uechz) on Twitter. Beware that I'm not really good at email stuff. If you need a lightning response, better bomb my inbox with reminders, so I can prioritize your email and reply real quick. Reach me at `y@uechi.io`.
## GPG Key
Get [GPG Key](https://github.com/uetchy.gpg) on GitHub.
# Facts # Facts
- interests: webdev, nlp, ml, ux, coffee, puzzle - interests: webdev, nlp, ml, ux, coffee, gardening
- have confidence in: js (incl. nodejs, typescript, and react), ui design - have confidence in: js (incl. nodejs, typescript and react), ui design
- have no confidence in: normal life stuff - have no confidence in: normal life stuff
- have some experience in: python, swift, go, ruby, rust, c++, pytorch, linux - have some experience in: python, go, ruby, swift, rust, pytorch, docker swarm
- language skills: - language:
- Japanese: native - Japanese: native
- English: TOEIC 940, TOEFL 78 - English: TOEIC 945, TOEFL 78
- play violin and tin whistle to keep sanity, drink a bit. - play tin whistle and violin for fun
# Publishing # Links
- [Open Source @ GitHub](https://github.com/uetchy) - [Open Source @ GitHub](https://github.com/uetchy)
- [Blog (Japanese and English)](https://uechi.io) - [Blog (Japanese and English)](https://uechi.io)
- [Technical Note (English) @ dev.to](https://dev.to/uetchy) - [Technical Notes (English) @ dev.to](https://dev.to/uetchy)
- [Technical Note (Japanese) @ Qiita](https://qiita.com/uetchy) - [Technical Notes (Japanese) @ Qiita](https://qiita.com/uetchy)
- [Design Portfolio @ Behance](https://www.behance.net/uechi) - [Design Portfolio @ Behance](https://www.behance.net/uechi)