<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.fundamental-ramen.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tacoball</id>
	<title>Fundamental Ramen - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fundamental-ramen.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tacoball"/>
	<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/wiki/Special:Contributions/Tacoball"/>
	<updated>2026-04-28T02:35:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands&amp;diff=2206</id>
		<title>Useful Commands</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands&amp;diff=2206"/>
		<updated>2026-03-13T03:15:59Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* File System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://www.diskpart.com/articles/delete-hidden-partition-on-usb-drive-7201.html&lt;br /&gt;
&lt;br /&gt;
= File System =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 情境 || 指令&lt;br /&gt;
|-&lt;br /&gt;
| (查) 變彩色，加上後綴，目錄以 / 結尾，連結以 @ 結尾&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;ls -FG&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| (查) 在目前的目錄下搜尋所有隱藏檔，&#039;&#039;&#039;注意要有單引號&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;find . -name &#039;.*&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| delete dist directory recursively except README.md and itself.&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
find ../../assets/swagger/support ! -path *swagger/support ! -name &#039;README.md&#039; -delete&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 刪除檔名 - 或是 -- 開頭的檔案&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rm -- -X --exclude-from&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 變更檔案時間為&amp;lt;br/&amp;gt;2013 年 9 月 1 號 00:00:00&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;touch -t 201309010000 檔案名稱&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux 環境產生 Ramdisk (無法指定大小)&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;mount -t ramfs ramfs /usr/local/ramdisk&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux/BSD 環境產生 Ramdisk (配置 128M)&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;mount -t tmpfs -o size=128m tmpfs /usr/local/ramdisk&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Test I/O performance of 1G write with 4K block&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;dd if=/dev/zero of=100k.bin bs=4k count=262144&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 產生 100K 的檔案&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;dd if=/dev/zero of=100k.bin bs=1k count=100&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 產生 10M 的檔案&amp;lt;br/&amp;gt;空間將會塞爆時，不會有警告訊息&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;dd if=/dev/zero of=10m.bin bs=1m count=10&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 故意消耗系統記憶體 (RAM+SWAP)&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /usr/local/ramdisk&lt;br /&gt;
mount -t tmpfs -o size=2G tmpfs /usr/local/ramdisk&lt;br /&gt;
dd if=/dev/zero of=/usr/local/ramdisk/fill.bin bs=1m count=2048&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Remote File System =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tool || Example&lt;br /&gt;
|-&lt;br /&gt;
| Samba (Linux) ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mount -t smbfs {remote} {local} -o \&lt;br /&gt;
   iocharset=utf8, \&lt;br /&gt;
   user={user}%{password}, \&lt;br /&gt;
   uid=`id -u {local user}`, \&lt;br /&gt;
   gid=`id -u {local group}`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Samba (MacOS) ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount_smbfs //&#039;{group};{user}&#039;:{password}@{remote}/{shared dir} {local dir}&lt;br /&gt;
smbutil view //Guest@192.168.91.65&lt;br /&gt;
smbutil view //&#039;WORKGROUP;Administrator&#039;:12345@192.168.1.2 # for Windows 2K3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Samba (FreeBSD) ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -t smbfs -o &#039;-N&#039; //raymondwu@RaymondWu-PC/TikaSamples /var/tika/samples # Using ~/.nsmbrc&lt;br /&gt;
mount_smbfs -I 192.168.91.65 //raymondwu@RaymondWu-PC/TikaSamples /var/tika/samples&lt;br /&gt;
smbutil view -I 192.168.91.65 //raymondwu@RaymondWu-PC&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Compression =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tool || Example&lt;br /&gt;
|-&lt;br /&gt;
| zip ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
zip -r front-end.zip index.html static/&lt;br /&gt;
unzip -l front-end.zip&lt;br /&gt;
unzip -p front-end.zip index.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| tar ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tar --exclude=&amp;quot;.*&amp;quot; -zcvf ~/solr-4.3.0.tgz solr-4.3.0&lt;br /&gt;
tar -C /usr/local --exclude &#039;.*&#039; -zcvf tika-1.4-pxx.tgz tika&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| gzip ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
gzip -k taiwan-taco.map&lt;br /&gt;
gzip -l taiwan-taco.map.gz &lt;br /&gt;
  compressed uncompressed  ratio uncompressed_name&lt;br /&gt;
    25400590     38204880  33.5% taiwan-taco.map&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| xz ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xz -zk hd-20190227.csv&lt;br /&gt;
xz -vt hd-20190227.csv.xz &lt;br /&gt;
hd-20190227.csv.xz (1/1)&lt;br /&gt;
  100 %     344.1 KiB / 1,458.1 KiB = 0.236&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| dd ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make an ISO image.&lt;br /&gt;
df -h&lt;br /&gt;
umount /dev/disk2&lt;br /&gt;
dd if=/dev/disk2 of=Win7.iso bs=2048 count=1000&lt;br /&gt;
file Win7.iso&lt;br /&gt;
Win7.iso: ISO 9660 CD-ROM filesystem data &#039;GRMCULFRER_TW_DVD              &#039; (bootable)&lt;br /&gt;
kill -USR1 {pid of dd}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Other Topics =&lt;br /&gt;
* [[Useful Commands/Hardware|Hardware]]&lt;br /&gt;
* [[Useful Commands/File Processing|File Processing]]&lt;br /&gt;
* [[Useful Commands/Text Processing|Text Processing]]&lt;br /&gt;
* [[Useful Commands/Networking|Networking]]&lt;br /&gt;
* [[Useful Commands/Date &amp;amp; Time|Date &amp;amp; Time]]&lt;br /&gt;
* [[Useful Commands/Service Management|Service Management]]&lt;br /&gt;
* [[Useful Commands/Package Management|Package Management]]&lt;br /&gt;
* [[Useful Commands/Package Compilation|Package Compilation]]&lt;br /&gt;
* [[Useful Commands/System Management|System Management]]&lt;br /&gt;
* [[Useful Commands/System Status|System Status]]&lt;br /&gt;
* [[Useful Commands/Arithmetic|Arithemetic]]&lt;br /&gt;
* [[Useful Commands/Security|Security]]: ssh, socat&lt;br /&gt;
* [[Useful Commands/MacOS only|MacOS only]]&lt;br /&gt;
* [[Useful Commands/Windows only|Windows only]]&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands&amp;diff=2205</id>
		<title>Useful Commands</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands&amp;diff=2205"/>
		<updated>2026-03-13T02:50:31Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* File System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://www.diskpart.com/articles/delete-hidden-partition-on-usb-drive-7201.html&lt;br /&gt;
&lt;br /&gt;
= File System =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 情境 || 指令&lt;br /&gt;
|-&lt;br /&gt;
| (查) 變彩色，加上後綴，目錄以 / 結尾，連結以 @ 結尾&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;ls -FG&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| (查) 在目前的目錄下搜尋所有隱藏檔，&#039;&#039;&#039;注意要有單引號&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;find . -name &#039;.*&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| delete dist directory recursively except README.md and itself.&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
find dist -not -path dist -not -path dist/README.md -delete&lt;br /&gt;
find dist ! -path dist ! -path dist/README.md -delete&lt;br /&gt;
find dist ! -name dist ! -path dist/README.md -delete&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 刪除檔名 - 或是 -- 開頭的檔案&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rm -- -X --exclude-from&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 變更檔案時間為&amp;lt;br/&amp;gt;2013 年 9 月 1 號 00:00:00&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;touch -t 201309010000 檔案名稱&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux 環境產生 Ramdisk (無法指定大小)&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;mount -t ramfs ramfs /usr/local/ramdisk&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux/BSD 環境產生 Ramdisk (配置 128M)&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;mount -t tmpfs -o size=128m tmpfs /usr/local/ramdisk&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Test I/O performance of 1G write with 4K block&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;dd if=/dev/zero of=100k.bin bs=4k count=262144&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 產生 100K 的檔案&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;dd if=/dev/zero of=100k.bin bs=1k count=100&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 產生 10M 的檔案&amp;lt;br/&amp;gt;空間將會塞爆時，不會有警告訊息&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;dd if=/dev/zero of=10m.bin bs=1m count=10&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 故意消耗系統記憶體 (RAM+SWAP)&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /usr/local/ramdisk&lt;br /&gt;
mount -t tmpfs -o size=2G tmpfs /usr/local/ramdisk&lt;br /&gt;
dd if=/dev/zero of=/usr/local/ramdisk/fill.bin bs=1m count=2048&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Remote File System =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tool || Example&lt;br /&gt;
|-&lt;br /&gt;
| Samba (Linux) ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mount -t smbfs {remote} {local} -o \&lt;br /&gt;
   iocharset=utf8, \&lt;br /&gt;
   user={user}%{password}, \&lt;br /&gt;
   uid=`id -u {local user}`, \&lt;br /&gt;
   gid=`id -u {local group}`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Samba (MacOS) ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount_smbfs //&#039;{group};{user}&#039;:{password}@{remote}/{shared dir} {local dir}&lt;br /&gt;
smbutil view //Guest@192.168.91.65&lt;br /&gt;
smbutil view //&#039;WORKGROUP;Administrator&#039;:12345@192.168.1.2 # for Windows 2K3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Samba (FreeBSD) ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -t smbfs -o &#039;-N&#039; //raymondwu@RaymondWu-PC/TikaSamples /var/tika/samples # Using ~/.nsmbrc&lt;br /&gt;
mount_smbfs -I 192.168.91.65 //raymondwu@RaymondWu-PC/TikaSamples /var/tika/samples&lt;br /&gt;
smbutil view -I 192.168.91.65 //raymondwu@RaymondWu-PC&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Compression =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tool || Example&lt;br /&gt;
|-&lt;br /&gt;
| zip ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
zip -r front-end.zip index.html static/&lt;br /&gt;
unzip -l front-end.zip&lt;br /&gt;
unzip -p front-end.zip index.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| tar ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tar --exclude=&amp;quot;.*&amp;quot; -zcvf ~/solr-4.3.0.tgz solr-4.3.0&lt;br /&gt;
tar -C /usr/local --exclude &#039;.*&#039; -zcvf tika-1.4-pxx.tgz tika&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| gzip ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
gzip -k taiwan-taco.map&lt;br /&gt;
gzip -l taiwan-taco.map.gz &lt;br /&gt;
  compressed uncompressed  ratio uncompressed_name&lt;br /&gt;
    25400590     38204880  33.5% taiwan-taco.map&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| xz ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xz -zk hd-20190227.csv&lt;br /&gt;
xz -vt hd-20190227.csv.xz &lt;br /&gt;
hd-20190227.csv.xz (1/1)&lt;br /&gt;
  100 %     344.1 KiB / 1,458.1 KiB = 0.236&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| dd ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make an ISO image.&lt;br /&gt;
df -h&lt;br /&gt;
umount /dev/disk2&lt;br /&gt;
dd if=/dev/disk2 of=Win7.iso bs=2048 count=1000&lt;br /&gt;
file Win7.iso&lt;br /&gt;
Win7.iso: ISO 9660 CD-ROM filesystem data &#039;GRMCULFRER_TW_DVD              &#039; (bootable)&lt;br /&gt;
kill -USR1 {pid of dd}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Other Topics =&lt;br /&gt;
* [[Useful Commands/Hardware|Hardware]]&lt;br /&gt;
* [[Useful Commands/File Processing|File Processing]]&lt;br /&gt;
* [[Useful Commands/Text Processing|Text Processing]]&lt;br /&gt;
* [[Useful Commands/Networking|Networking]]&lt;br /&gt;
* [[Useful Commands/Date &amp;amp; Time|Date &amp;amp; Time]]&lt;br /&gt;
* [[Useful Commands/Service Management|Service Management]]&lt;br /&gt;
* [[Useful Commands/Package Management|Package Management]]&lt;br /&gt;
* [[Useful Commands/Package Compilation|Package Compilation]]&lt;br /&gt;
* [[Useful Commands/System Management|System Management]]&lt;br /&gt;
* [[Useful Commands/System Status|System Status]]&lt;br /&gt;
* [[Useful Commands/Arithmetic|Arithemetic]]&lt;br /&gt;
* [[Useful Commands/Security|Security]]: ssh, socat&lt;br /&gt;
* [[Useful Commands/MacOS only|MacOS only]]&lt;br /&gt;
* [[Useful Commands/Windows only|Windows only]]&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Git&amp;diff=2204</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Git&amp;diff=2204"/>
		<updated>2026-02-24T08:03:21Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configuration ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 單一專案&lt;br /&gt;
git config --local user.name &amp;quot;name&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;name@mydomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 所有專案&lt;br /&gt;
git config --global core.editor &amp;quot;vim&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;name&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;name@mydomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintainance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  ! Purpose&lt;br /&gt;
  ! Command&lt;br /&gt;
|-&lt;br /&gt;
  | Delete unused branches&lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* | xargs git branch -d&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* | xargs git branch -D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* bugfix/* hotfix/* | xargs git branch -D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | Check why a file was ignored&lt;br /&gt;
  | git check-ignore -v config.php&lt;br /&gt;
|-&lt;br /&gt;
  | Clone a specific branch&lt;br /&gt;
  | git clone -b staging project project_staging&lt;br /&gt;
|-&lt;br /&gt;
  | Clear tags not in remote repository&lt;br /&gt;
  | git fetch --prune --prune-tags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Undo ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Unstage a file&lt;br /&gt;
git reset --  src/sequelize-eparking/models/Fee.js&lt;br /&gt;
&lt;br /&gt;
# Latest commit &amp;gt; stage&lt;br /&gt;
git reset HEAD^&lt;br /&gt;
git reset HEAD~1   # if symbol ^ escaped&lt;br /&gt;
git checkout upstream/develop composer.lock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# stat for single commit&lt;br /&gt;
git diff 5741a4^..5741a4 --stat&lt;br /&gt;
git diff 5741a4^..5741a4 --shortstat&lt;br /&gt;
&lt;br /&gt;
# Get commits count of someone.&lt;br /&gt;
git log --author=&#039;Me&#039; --since=&#039;2019-01-01&#039; --before=&#039;2019-12-31&#039; | grep &#039;^commit&#039;&lt;br /&gt;
git log --author=&#039;Me&#039; --since=&#039;2019-01-01&#039; --before=&#039;2019-12-31&#039; | grep &#039;^commit&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^+[^+]&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^-[^-]&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^+++&#039; | wc -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unknown ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# See local and remote branches&lt;br /&gt;
git branch -v -a&lt;br /&gt;
master                                c313bf9 ...&lt;br /&gt;
remotes/origin/static-files-2         be32085 ...&lt;br /&gt;
remotes/origin/static-files-3         e9021d8 ...&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Checkout remote branch.&lt;br /&gt;
git checkout -b static-files-3 remotes/origin/static-files-3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.github.com/en/github/extending-github/git-automation-with-oauth-tokens&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2203</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2203"/>
		<updated>2025-11-17T07:55:47Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Install gvm on Ubuntu 24 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usage =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| List available versions || &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;gvm listall&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
# export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
# export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
# export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.23&lt;br /&gt;
gvm install 1.23.12&lt;br /&gt;
gvm use go1.23.12&lt;br /&gt;
&lt;br /&gt;
# install go 1.24&lt;br /&gt;
# The final selected version must have --default parameter,&lt;br /&gt;
# otherwise the selected version would become go1.4 after logout. &lt;br /&gt;
gvm install 1.24.10&lt;br /&gt;
gvm use go1.24.10 --default&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2202</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2202"/>
		<updated>2025-11-17T07:05:07Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Install gvm on Ubuntu 24 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usage =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| List available versions || &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;gvm listall&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
# export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
# export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
# export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.12&lt;br /&gt;
gvm use go1.23.12&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2201</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2201"/>
		<updated>2025-11-17T07:04:52Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Install gvm on Ubuntu 24 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usage =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| List available versions || &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;gvm listall&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.12&lt;br /&gt;
gvm use go1.23.12&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2200</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2200"/>
		<updated>2025-11-17T06:55:52Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usage =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| List available versions || &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;gvm listall&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2199</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2199"/>
		<updated>2025-11-17T06:55:32Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usage =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| List available versions || &amp;lt;syntaxhiglight lang=&amp;quot;bash&amp;quot;&amp;gt;gvm listall&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2198</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2198"/>
		<updated>2025-11-17T06:55:16Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usage =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| List available versions || &amp;lt;syntaxhightlight lang=&amp;quot;bash&amp;quot;&amp;gt;gvm listall&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2197</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2197"/>
		<updated>2025-11-17T06:55:04Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usage =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| List available versions || &amp;lt;syntaxhightlightlang=&amp;quot;bash&amp;quot;&amp;gt;gvm listall&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2196</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2196"/>
		<updated>2025-11-17T05:50:50Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2195</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2195"/>
		<updated>2025-11-17T05:49:49Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# Install binary bootstrap Go 1.4&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4 --default&lt;br /&gt;
&lt;br /&gt;
# Now install newer version&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
&lt;br /&gt;
# Then install latest&lt;br /&gt;
gvm install go1.23.3&lt;br /&gt;
gvm use go1.23.3 --default&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2194</id>
		<title>Go/gvm</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Go/gvm&amp;diff=2194"/>
		<updated>2025-11-17T05:45:03Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://github.com/moovweb/gvm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# before use gvm install&lt;br /&gt;
sudo apt-get install build-essential&lt;br /&gt;
&lt;br /&gt;
# install go1.4 first as build tool-chain for go1.17&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.17 as build tool-chain for go1.20&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go 1.20 as build tool-chain for go1.23&lt;br /&gt;
gvm install go1.20.14&lt;br /&gt;
gvm use go1.20.14&lt;br /&gt;
export GOROOT_BOOTSTRAP=$GOROOT&lt;br /&gt;
&lt;br /&gt;
# install go&lt;br /&gt;
gvm install 1.23.9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install gvm on Ubuntu 24 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clean up&lt;br /&gt;
rm -rf ~/.gvm&lt;br /&gt;
&lt;br /&gt;
# Install dependencies including mercurial (often missing)&lt;br /&gt;
sudo apt install -y curl git mercurial make binutils bison gcc build-essential bsdmainutils&lt;br /&gt;
&lt;br /&gt;
# Install GVM&lt;br /&gt;
bash &amp;lt; &amp;lt;(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)&lt;br /&gt;
source ~/.gvm/scripts/gvm&lt;br /&gt;
&lt;br /&gt;
# Install binary bootstrap Go 1.4&lt;br /&gt;
gvm install go1.4 -B&lt;br /&gt;
gvm use go1.4 --default&lt;br /&gt;
&lt;br /&gt;
# Now install newer version&lt;br /&gt;
gvm install go1.17.13&lt;br /&gt;
gvm use go1.17.13&lt;br /&gt;
&lt;br /&gt;
# Then install latest&lt;br /&gt;
gvm install go1.23.3&lt;br /&gt;
gvm use go1.23.3 --default&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2193</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2193"/>
		<updated>2025-11-13T02:32:54Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The existed private key would be overwritten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Power Shell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh `&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config `&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh `&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config `&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install Docker =&lt;br /&gt;
&lt;br /&gt;
The docker package is not in apt by default. Ask claude first is good.&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2192</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2192"/>
		<updated>2025-11-13T02:22:23Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The existed private key would be overwritten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Power Shell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh `&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config `&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh `&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config `&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem `&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install Docker =&lt;br /&gt;
&lt;br /&gt;
The docker package is not in apt by default. Ask claude first is good.&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2191</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2191"/>
		<updated>2025-11-13T02:22:02Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The existed private key would be overwritten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh `&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config `&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh `&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config `&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem `&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install Docker =&lt;br /&gt;
&lt;br /&gt;
The docker package is not in apt by default. Ask claude first is good.&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2190</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2190"/>
		<updated>2025-11-12T10:11:46Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The existed private key would be overwritten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install Docker =&lt;br /&gt;
&lt;br /&gt;
The docker package is not in apt by default. Ask claude first is good.&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2189</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2189"/>
		<updated>2025-11-12T10:03:57Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The existed private key would be overwritten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Setup&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
# Remove&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2188</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2188"/>
		<updated>2025-11-12T10:03:43Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The existed private key would be overwritten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2187</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2187"/>
		<updated>2025-11-12T10:03:31Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
The existed private key would be overwritten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2186</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2186"/>
		<updated>2025-11-12T09:58:37Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
A new key pair will be generated, using existed key is not recommended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands/Security&amp;diff=2185</id>
		<title>Useful Commands/Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands/Security&amp;diff=2185"/>
		<updated>2025-11-12T08:05:09Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Frequently Used Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Frequently Used Commands =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO || Command&lt;br /&gt;
|-&lt;br /&gt;
| Automatically accept fingerprint. ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -o &amp;quot;StrictHostKeyChecking no&amp;quot; ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Indirect outgoing for PostgreSQL ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# [Private]&lt;br /&gt;
# localhost -&amp;gt; localhost:15432&lt;br /&gt;
#           -&amp;gt; server:22&lt;br /&gt;
#           -&amp;gt; somewhere.com:5432&lt;br /&gt;
ssh -NCfL 15432:somewhere.com:5432 server&lt;br /&gt;
&lt;br /&gt;
# [Shared]&lt;br /&gt;
# any -&amp;gt; *:15432&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; somewhere.com:5432&lt;br /&gt;
ssh -NCfL *:15432:somewhere.com:5432 server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Indirect outgoing for Web ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# [Private]&lt;br /&gt;
# localhost -&amp;gt; localhost:3128&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; *:*&lt;br /&gt;
ssh -NCfD localhost:3128 server&lt;br /&gt;
&lt;br /&gt;
# [Shared]&lt;br /&gt;
# any -&amp;gt; *:3128&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; *:*&lt;br /&gt;
ssh -NCfD *:3128 server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Share MariaDB in LAN ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Step 1: Listen (Run at LAN)&lt;br /&gt;
# Listen server:13306 -&amp;gt; server:22&lt;br /&gt;
#                     -&amp;gt; localhost:3306&lt;br /&gt;
ssh -NCfR 13306:localhost:3306 server&lt;br /&gt;
&lt;br /&gt;
# Step 2: Share (Run at Home/WAN)&lt;br /&gt;
# any -&amp;gt; server:3306&lt;br /&gt;
#     -&amp;gt; server:13306&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; localhost:3306&lt;br /&gt;
ssh -NCfL *:3306:localhost:13306 localhost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| List tunnels ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# List full commands.&lt;br /&gt;
ps ax | awk &#039;/ssh \-NCf/ { print $0 }&#039;&lt;br /&gt;
&lt;br /&gt;
# List settings.&lt;br /&gt;
ps ax | awk &#039;/ssh \-NCf/ { print $7 }&#039;&lt;br /&gt;
&lt;br /&gt;
# List pids.&lt;br /&gt;
ps ax | awk &#039;/ssh \-NCf/ { print $1 }&#039;&lt;br /&gt;
&lt;br /&gt;
# Kill all tunnels.&lt;br /&gt;
kill $(ps ax | awk &#039;/ssh \-NCf/ { print $1 }&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Generate key pair ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Save as default name id_rsa, id_rsa.pub&lt;br /&gt;
ssh-keygen&lt;br /&gt;
# Save as thefuck, thefuck.pub without password&lt;br /&gt;
ssh-keygen -f abc -N &#039;&#039;&lt;br /&gt;
# Save as thefuck, thefuck.pub with password &lt;br /&gt;
ssh-keygen -f abc -N &#039;12345&#039; &lt;br /&gt;
# Generate ed25519 key&lt;br /&gt;
ssh-keygen -t ed25519 -f sucks.pem&lt;br /&gt;
ssh-keygen -t ed25519 -f sucks.pem -C nobody@sucks.com&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Generate public key from private key ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Dump&lt;br /&gt;
ssh-keygen -yf thefuck.pem&lt;br /&gt;
# Save as file&lt;br /&gt;
ssh-keygen -yf thefuck.pem &amp;gt; thefuck.pub&lt;br /&gt;
# Save as authorized_keys (while ~/.ssh/authorized_keys didn&#039;t exist)&lt;br /&gt;
ssh-keygen -yf thefuck.pem &amp;gt; authorized_keys&lt;br /&gt;
# Append into authorized_keys&lt;br /&gt;
ssh-keygen -yf thefuck.pem &amp;gt;&amp;gt; authorized_keys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Access resources without VPN =&lt;br /&gt;
== Lesson 1: UDP -&amp;gt; UDP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command || Routing&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo socat -d -d \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:8.8.8.8:53&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS1&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  A [label=&amp;quot;nslookup www.google.com 127.0.0.1&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat -d -d ...&amp;quot;];&lt;br /&gt;
  C [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
  A -&amp;gt; B [xlabel=&amp;quot;1. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  B -&amp;gt; C [xlabel=&amp;quot;2. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  C -&amp;gt; B [xlabel=&amp;quot;3. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
  B -&amp;gt; A [xlabel=&amp;quot;4. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Lesson 2: UDP -&amp;gt; TCP -&amp;gt; UDP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command || Routing&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo socat -d -d \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053&lt;br /&gt;
&lt;br /&gt;
socat -d -d \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:8.8.8.8:53&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS2&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  A [label=&amp;quot;nslookup www.google.com 127.0.0.1&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat -d -d udp4-recvfrom:53 ...&amp;quot;];&lt;br /&gt;
  C [label=&amp;quot;socat -d -d tcp4-listen ...&amp;quot;];&lt;br /&gt;
  D [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
  A -&amp;gt; B [xlabel=&amp;quot;1. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  B -&amp;gt; C [xlabel=&amp;quot;2. tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  C -&amp;gt; D [xlabel=&amp;quot;3. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  D -&amp;gt; C [xlabel=&amp;quot;4. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
  C -&amp;gt; B [xlabel=&amp;quot;5. tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
  B -&amp;gt; A [xlabel=&amp;quot;6. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Lesson 3: UDP -&amp;gt; SSH -&amp;gt; TCP -&amp;gt; UDP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command || Routing&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Step 1. SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Office)&lt;br /&gt;
socat -d -d -lf socat.log \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:192.168.1.1:53 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ssh -NCfR 1053:127.0.0.1:1053 home&lt;br /&gt;
&lt;br /&gt;
# Step 2. UDP -&amp;gt; TCP -&amp;gt; SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Home)&lt;br /&gt;
sudo socat -d -d -lf socat.log \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053 &amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS3&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_home {&lt;br /&gt;
  label=&amp;quot;Home&amp;quot;;&lt;br /&gt;
  A [label=&amp;quot;nslookup www.google.com 127.0.0.1&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat ... udp4-recvfrom:53 ...&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
  C [label=&amp;quot;ssh -NCfR ...&amp;quot;];&lt;br /&gt;
  D [label=&amp;quot;socat ... tcp4-listen ...&amp;quot;];&lt;br /&gt;
  E [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
A -&amp;gt; B [xlabel=&amp;quot;1 udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
B -&amp;gt; C [xlabel=&amp;quot;2 ssh&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
C -&amp;gt; D [xlabel=&amp;quot;3 tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
D -&amp;gt; E [xlabel=&amp;quot;4 udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
E -&amp;gt; D [xlabel=&amp;quot;5 udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
D -&amp;gt; C [xlabel=&amp;quot;6 tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
C -&amp;gt; B [xlabel=&amp;quot;7 ssh&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
B -&amp;gt; A [xlabel=&amp;quot;8 udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Lesson 4: Forward HTTP ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Step 1. SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Office)&lt;br /&gt;
socat -d -d -lf socat.log \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:192.168.1.1:53 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ssh -NCfR 1053:127.0.0.1:1053 home&lt;br /&gt;
&lt;br /&gt;
# Step 2. SSH -&amp;gt; SOCKS -&amp;gt; HTTP (Run at office)&lt;br /&gt;
ssh -NCfD 127.0.0.1:3128 localhost&lt;br /&gt;
ssh -NCfR 3128:127.0.0.1:3128 home&lt;br /&gt;
&lt;br /&gt;
# Step 3. UDP -&amp;gt; TCP -&amp;gt; SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Home)&lt;br /&gt;
sudo socat -d -d -lf socat.log \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053 &amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS4&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
newrank=true;&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_home {&lt;br /&gt;
  label=&amp;quot;Home&amp;quot;;&lt;br /&gt;
  rank=&amp;quot;same&amp;quot;;&lt;br /&gt;
  A [label=&amp;quot;browser https://www.google.com&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat ... udp4-recvfrom:53 ...&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
  subgraph cluster_dns {&lt;br /&gt;
    label=&amp;quot;DNS&amp;quot;;&lt;br /&gt;
    C [label=&amp;quot;ssh -NCfR 1053: ...&amp;quot;];&lt;br /&gt;
    D [label=&amp;quot;socat ... tcp4-listen ...&amp;quot;];&lt;br /&gt;
    E [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
  }&lt;br /&gt;
  subgraph cluster_http {&lt;br /&gt;
    label=&amp;quot;HTTP&amp;quot;;&lt;br /&gt;
    F [label=&amp;quot;ssh -NCfR 3128: ...&amp;quot;];&lt;br /&gt;
    G [label=&amp;quot;ssh -NCfD ...&amp;quot;];&lt;br /&gt;
    H [label=&amp;quot;HTTP Server&amp;quot;];&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// DNS Routing&lt;br /&gt;
A -&amp;gt; B [xlabel=&amp;quot;1. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;,minlen=3];&lt;br /&gt;
B -&amp;gt; C [xlabel=&amp;quot;2. ssh&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
C -&amp;gt; D [xlabel=&amp;quot;3. tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
D -&amp;gt; E [xlabel=&amp;quot;4. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
E -&amp;gt; D [xlabel=&amp;quot;5. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
D -&amp;gt; C [xlabel=&amp;quot;6. tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
C -&amp;gt; B [xlabel=&amp;quot;7. ssh&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
B -&amp;gt; A [xlabel=&amp;quot;8. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;,constraint=false];&lt;br /&gt;
&lt;br /&gt;
// SOCKS Routing&lt;br /&gt;
A -&amp;gt; F [xlabel=&amp;quot;9. ssh&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
F -&amp;gt; G [xlabel=&amp;quot;10. socks&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
G -&amp;gt; H [xlabel=&amp;quot;11. tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
H -&amp;gt; G [xlabel=&amp;quot;12. tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
G -&amp;gt; F [xlabel=&amp;quot;13. socks&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
F -&amp;gt; A [xlabel=&amp;quot;14. ssh&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lesson 5: Improve connection quality ==&lt;br /&gt;
&lt;br /&gt;
=== ~/bin/mksvc.sh ===&lt;br /&gt;
Create SOCKS and TCP DNS services.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
socat -d -d -lf socat.log \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:192.168.1.1:53 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ssh -NCf -D 127.0.0.1:3128 localhost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ~/bin/mktun.sh ===&lt;br /&gt;
Make tunnels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -NCf \&lt;br /&gt;
  -MS revtun.ctrl \&lt;br /&gt;
  -R 1053:127.0.0.1:1053 \&lt;br /&gt;
  -R 13128:127.0.0.1:3128 \&lt;br /&gt;
  home&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ~/bin/rmtun.sh ===&lt;br /&gt;
Remove tunnels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -e /tmp/revtun.ctrl ]; then&lt;br /&gt;
  ssh -S /tmp/revtun.ctrl -O exit home&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ~/.ssh/config ===&lt;br /&gt;
Make the ssh connection more reliable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; highlight=&amp;quot;5-7&amp;quot;&amp;gt;&lt;br /&gt;
Host                home&lt;br /&gt;
Hostname            x.x.x.x&lt;br /&gt;
User                user&lt;br /&gt;
IdentityFile        ~/.ssh/mykey.pem&lt;br /&gt;
TCPKeepAlive        yes&lt;br /&gt;
ServerAliveInterval 60&lt;br /&gt;
ServerAliveCountMax 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== crontab -e ===&lt;br /&gt;
Create tunnels during 7:30~09:30, 21:00~22:00 only.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# 07:30 ~ 09:30&lt;br /&gt;
30   07   *   *   *   ~/bin/mktun.sh&lt;br /&gt;
30   09   *   *   *   ~/bin/rmtun.sh&lt;br /&gt;
# 21:00 ~ 22:00&lt;br /&gt;
00   21   *   *   *   ~/bin/mktun.sh&lt;br /&gt;
00   22   *   *   *   ~/bin/rmtun.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
Do it at home. NAS is a good choice.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo socat -d -d -lf socat-dns.log \&lt;br /&gt;
  udp4-recvfrom:53,bind=*,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
sudo socat -d -d -lf socat-socks.log \&lt;br /&gt;
  tcp4-listen:3128,bind=*,fork \&lt;br /&gt;
  tcp4:127.0.0.1:13128&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands/Security&amp;diff=2184</id>
		<title>Useful Commands/Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Useful_Commands/Security&amp;diff=2184"/>
		<updated>2025-11-12T08:00:43Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Frequently Used Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Frequently Used Commands =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! TODO || Command&lt;br /&gt;
|-&lt;br /&gt;
| Automatically accept fingerprint. ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -o &amp;quot;StrictHostKeyChecking no&amp;quot; ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Indirect outgoing for PostgreSQL ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# [Private]&lt;br /&gt;
# localhost -&amp;gt; localhost:15432&lt;br /&gt;
#           -&amp;gt; server:22&lt;br /&gt;
#           -&amp;gt; somewhere.com:5432&lt;br /&gt;
ssh -NCfL 15432:somewhere.com:5432 server&lt;br /&gt;
&lt;br /&gt;
# [Shared]&lt;br /&gt;
# any -&amp;gt; *:15432&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; somewhere.com:5432&lt;br /&gt;
ssh -NCfL *:15432:somewhere.com:5432 server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Indirect outgoing for Web ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# [Private]&lt;br /&gt;
# localhost -&amp;gt; localhost:3128&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; *:*&lt;br /&gt;
ssh -NCfD localhost:3128 server&lt;br /&gt;
&lt;br /&gt;
# [Shared]&lt;br /&gt;
# any -&amp;gt; *:3128&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; *:*&lt;br /&gt;
ssh -NCfD *:3128 server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Share MariaDB in LAN ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Step 1: Listen (Run at LAN)&lt;br /&gt;
# Listen server:13306 -&amp;gt; server:22&lt;br /&gt;
#                     -&amp;gt; localhost:3306&lt;br /&gt;
ssh -NCfR 13306:localhost:3306 server&lt;br /&gt;
&lt;br /&gt;
# Step 2: Share (Run at Home/WAN)&lt;br /&gt;
# any -&amp;gt; server:3306&lt;br /&gt;
#     -&amp;gt; server:13306&lt;br /&gt;
#     -&amp;gt; server:22&lt;br /&gt;
#     -&amp;gt; localhost:3306&lt;br /&gt;
ssh -NCfL *:3306:localhost:13306 localhost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| List tunnels ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# List full commands.&lt;br /&gt;
ps ax | awk &#039;/ssh \-NCf/ { print $0 }&#039;&lt;br /&gt;
&lt;br /&gt;
# List settings.&lt;br /&gt;
ps ax | awk &#039;/ssh \-NCf/ { print $7 }&#039;&lt;br /&gt;
&lt;br /&gt;
# List pids.&lt;br /&gt;
ps ax | awk &#039;/ssh \-NCf/ { print $1 }&#039;&lt;br /&gt;
&lt;br /&gt;
# Kill all tunnels.&lt;br /&gt;
kill $(ps ax | awk &#039;/ssh \-NCf/ { print $1 }&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Generate key pair ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Save as default name id_rsa, id_rsa.pub&lt;br /&gt;
ssh-keygen&lt;br /&gt;
# Save as thefuck, thefuck.pub without password&lt;br /&gt;
ssh-keygen -f abc -N &#039;&#039;&lt;br /&gt;
# Save as thefuck, thefuck.pub with password &lt;br /&gt;
ssh-keygen -f abc -N &#039;12345&#039; &lt;br /&gt;
# Generate ed25519 key&lt;br /&gt;
ssh-keygen -t ed25519 -f sucks.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Generate public key from private key ||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Dump&lt;br /&gt;
ssh-keygen -yf thefuck.pem&lt;br /&gt;
# Save as file&lt;br /&gt;
ssh-keygen -yf thefuck.pem &amp;gt; thefuck.pub&lt;br /&gt;
# Save as authorized_keys (while ~/.ssh/authorized_keys didn&#039;t exist)&lt;br /&gt;
ssh-keygen -yf thefuck.pem &amp;gt; authorized_keys&lt;br /&gt;
# Append into authorized_keys&lt;br /&gt;
ssh-keygen -yf thefuck.pem &amp;gt;&amp;gt; authorized_keys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Access resources without VPN =&lt;br /&gt;
== Lesson 1: UDP -&amp;gt; UDP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command || Routing&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo socat -d -d \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:8.8.8.8:53&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS1&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  A [label=&amp;quot;nslookup www.google.com 127.0.0.1&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat -d -d ...&amp;quot;];&lt;br /&gt;
  C [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
  A -&amp;gt; B [xlabel=&amp;quot;1. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  B -&amp;gt; C [xlabel=&amp;quot;2. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  C -&amp;gt; B [xlabel=&amp;quot;3. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
  B -&amp;gt; A [xlabel=&amp;quot;4. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Lesson 2: UDP -&amp;gt; TCP -&amp;gt; UDP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command || Routing&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo socat -d -d \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053&lt;br /&gt;
&lt;br /&gt;
socat -d -d \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:8.8.8.8:53&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS2&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  A [label=&amp;quot;nslookup www.google.com 127.0.0.1&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat -d -d udp4-recvfrom:53 ...&amp;quot;];&lt;br /&gt;
  C [label=&amp;quot;socat -d -d tcp4-listen ...&amp;quot;];&lt;br /&gt;
  D [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
  A -&amp;gt; B [xlabel=&amp;quot;1. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  B -&amp;gt; C [xlabel=&amp;quot;2. tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  C -&amp;gt; D [xlabel=&amp;quot;3. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
  D -&amp;gt; C [xlabel=&amp;quot;4. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
  C -&amp;gt; B [xlabel=&amp;quot;5. tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
  B -&amp;gt; A [xlabel=&amp;quot;6. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Lesson 3: UDP -&amp;gt; SSH -&amp;gt; TCP -&amp;gt; UDP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command || Routing&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Step 1. SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Office)&lt;br /&gt;
socat -d -d -lf socat.log \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:192.168.1.1:53 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ssh -NCfR 1053:127.0.0.1:1053 home&lt;br /&gt;
&lt;br /&gt;
# Step 2. UDP -&amp;gt; TCP -&amp;gt; SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Home)&lt;br /&gt;
sudo socat -d -d -lf socat.log \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053 &amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS3&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_home {&lt;br /&gt;
  label=&amp;quot;Home&amp;quot;;&lt;br /&gt;
  A [label=&amp;quot;nslookup www.google.com 127.0.0.1&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat ... udp4-recvfrom:53 ...&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
  C [label=&amp;quot;ssh -NCfR ...&amp;quot;];&lt;br /&gt;
  D [label=&amp;quot;socat ... tcp4-listen ...&amp;quot;];&lt;br /&gt;
  E [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
A -&amp;gt; B [xlabel=&amp;quot;1 udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
B -&amp;gt; C [xlabel=&amp;quot;2 ssh&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
C -&amp;gt; D [xlabel=&amp;quot;3 tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
D -&amp;gt; E [xlabel=&amp;quot;4 udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
E -&amp;gt; D [xlabel=&amp;quot;5 udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
D -&amp;gt; C [xlabel=&amp;quot;6 tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
C -&amp;gt; B [xlabel=&amp;quot;7 ssh&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
B -&amp;gt; A [xlabel=&amp;quot;8 udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Lesson 4: Forward HTTP ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Step 1. SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Office)&lt;br /&gt;
socat -d -d -lf socat.log \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:192.168.1.1:53 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ssh -NCfR 1053:127.0.0.1:1053 home&lt;br /&gt;
&lt;br /&gt;
# Step 2. SSH -&amp;gt; SOCKS -&amp;gt; HTTP (Run at office)&lt;br /&gt;
ssh -NCfD 127.0.0.1:3128 localhost&lt;br /&gt;
ssh -NCfR 3128:127.0.0.1:3128 home&lt;br /&gt;
&lt;br /&gt;
# Step 3. UDP -&amp;gt; TCP -&amp;gt; SSH -&amp;gt; TCP -&amp;gt; UDP (Run at Home)&lt;br /&gt;
sudo socat -d -d -lf socat.log \&lt;br /&gt;
  udp4-recvfrom:53,bind=127.0.0.1,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053 &amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;quickgv name=&amp;quot;LS4&amp;quot; theme=&amp;quot;warm&amp;quot;&amp;gt;&lt;br /&gt;
rankdir=TB;&lt;br /&gt;
newrank=true;&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_home {&lt;br /&gt;
  label=&amp;quot;Home&amp;quot;;&lt;br /&gt;
  rank=&amp;quot;same&amp;quot;;&lt;br /&gt;
  A [label=&amp;quot;browser https://www.google.com&amp;quot;];&lt;br /&gt;
  B [label=&amp;quot;sudo socat ... udp4-recvfrom:53 ...&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subgraph cluster_office {&lt;br /&gt;
  label=&amp;quot;Office&amp;quot;;&lt;br /&gt;
  subgraph cluster_dns {&lt;br /&gt;
    label=&amp;quot;DNS&amp;quot;;&lt;br /&gt;
    C [label=&amp;quot;ssh -NCfR 1053: ...&amp;quot;];&lt;br /&gt;
    D [label=&amp;quot;socat ... tcp4-listen ...&amp;quot;];&lt;br /&gt;
    E [label=&amp;quot;DNS Server&amp;quot;];&lt;br /&gt;
  }&lt;br /&gt;
  subgraph cluster_http {&lt;br /&gt;
    label=&amp;quot;HTTP&amp;quot;;&lt;br /&gt;
    F [label=&amp;quot;ssh -NCfR 3128: ...&amp;quot;];&lt;br /&gt;
    G [label=&amp;quot;ssh -NCfD ...&amp;quot;];&lt;br /&gt;
    H [label=&amp;quot;HTTP Server&amp;quot;];&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// DNS Routing&lt;br /&gt;
A -&amp;gt; B [xlabel=&amp;quot;1. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;,minlen=3];&lt;br /&gt;
B -&amp;gt; C [xlabel=&amp;quot;2. ssh&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
C -&amp;gt; D [xlabel=&amp;quot;3. tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
D -&amp;gt; E [xlabel=&amp;quot;4. udp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
E -&amp;gt; D [xlabel=&amp;quot;5. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
D -&amp;gt; C [xlabel=&amp;quot;6. tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
C -&amp;gt; B [xlabel=&amp;quot;7. ssh&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
B -&amp;gt; A [xlabel=&amp;quot;8. udp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;,constraint=false];&lt;br /&gt;
&lt;br /&gt;
// SOCKS Routing&lt;br /&gt;
A -&amp;gt; F [xlabel=&amp;quot;9. ssh&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
F -&amp;gt; G [xlabel=&amp;quot;10. socks&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
G -&amp;gt; H [xlabel=&amp;quot;11. tcp&amp;quot;,color=&amp;quot;#ff0000&amp;quot;];&lt;br /&gt;
H -&amp;gt; G [xlabel=&amp;quot;12. tcp&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
G -&amp;gt; F [xlabel=&amp;quot;13. socks&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
F -&amp;gt; A [xlabel=&amp;quot;14. ssh&amp;quot;,color=&amp;quot;#0000ff&amp;quot;];&lt;br /&gt;
&amp;lt;/quickgv&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lesson 5: Improve connection quality ==&lt;br /&gt;
&lt;br /&gt;
=== ~/bin/mksvc.sh ===&lt;br /&gt;
Create SOCKS and TCP DNS services.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
socat -d -d -lf socat.log \&lt;br /&gt;
  tcp4-listen:1053,bind=127.0.0.1,fork \&lt;br /&gt;
  udp4-sendto:192.168.1.1:53 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ssh -NCf -D 127.0.0.1:3128 localhost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ~/bin/mktun.sh ===&lt;br /&gt;
Make tunnels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -NCf \&lt;br /&gt;
  -MS revtun.ctrl \&lt;br /&gt;
  -R 1053:127.0.0.1:1053 \&lt;br /&gt;
  -R 13128:127.0.0.1:3128 \&lt;br /&gt;
  home&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ~/bin/rmtun.sh ===&lt;br /&gt;
Remove tunnels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -e /tmp/revtun.ctrl ]; then&lt;br /&gt;
  ssh -S /tmp/revtun.ctrl -O exit home&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ~/.ssh/config ===&lt;br /&gt;
Make the ssh connection more reliable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; highlight=&amp;quot;5-7&amp;quot;&amp;gt;&lt;br /&gt;
Host                home&lt;br /&gt;
Hostname            x.x.x.x&lt;br /&gt;
User                user&lt;br /&gt;
IdentityFile        ~/.ssh/mykey.pem&lt;br /&gt;
TCPKeepAlive        yes&lt;br /&gt;
ServerAliveInterval 60&lt;br /&gt;
ServerAliveCountMax 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== crontab -e ===&lt;br /&gt;
Create tunnels during 7:30~09:30, 21:00~22:00 only.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# 07:30 ~ 09:30&lt;br /&gt;
30   07   *   *   *   ~/bin/mktun.sh&lt;br /&gt;
30   09   *   *   *   ~/bin/rmtun.sh&lt;br /&gt;
# 21:00 ~ 22:00&lt;br /&gt;
00   21   *   *   *   ~/bin/mktun.sh&lt;br /&gt;
00   22   *   *   *   ~/bin/rmtun.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
Do it at home. NAS is a good choice.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo socat -d -d -lf socat-dns.log \&lt;br /&gt;
  udp4-recvfrom:53,bind=*,fork \&lt;br /&gt;
  tcp4:127.0.0.1:1053 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
sudo socat -d -d -lf socat-socks.log \&lt;br /&gt;
  tcp4-listen:3128,bind=*,fork \&lt;br /&gt;
  tcp4:127.0.0.1:13128&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2183</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2183"/>
		<updated>2025-11-12T07:32:03Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem&lt;br /&gt;
&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.09-xxx/config \&lt;br /&gt;
  --ssh-key-file=~/.ssh/config.09-xxx/private_key.pem \&lt;br /&gt;
  --remove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2182</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2182"/>
		<updated>2025-11-12T07:28:24Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud compute config-ssh --ssh-config-file=~/.ssh/config.05-hix/config --remove&lt;br /&gt;
gcloud compute config-ssh --ssh-config-file=~/.ssh/config.05-hix/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2181</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2181"/>
		<updated>2025-11-12T07:27:48Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.05-hix/config \&lt;br /&gt;
  --remove&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.05-hix/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2180</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2180"/>
		<updated>2025-11-12T07:27:24Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud compute config-ssh --remove&lt;br /&gt;
gcloud compute config-ssh \&lt;br /&gt;
  --ssh-config-file=~/.ssh/config.05-hix/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2179</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2179"/>
		<updated>2025-11-12T06:42:56Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Config default SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
gcloud config set compute/ssh_key_file &amp;lt;~/.ssh/your_key&amp;gt;&lt;br /&gt;
gcloud config list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2178</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2178"/>
		<updated>2025-11-12T06:42:28Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Config default SSH Key =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud config set compute/ssh_key_file &amp;lt;~/.ssh/your_key&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2177</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2177"/>
		<updated>2025-11-12T06:39:46Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* SSH Login */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud compute ssh &amp;lt;vm-instance-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2176</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2176"/>
		<updated>2025-11-12T06:39:11Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;br /&gt;
* Set default region&lt;br /&gt;
* SSH &amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;gcloud&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2175</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2175"/>
		<updated>2025-11-12T06:36:25Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* SSH Login */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Install Google Cloud =&lt;br /&gt;
&lt;br /&gt;
= SSH Login =&lt;br /&gt;
&lt;br /&gt;
* Check Firewall&lt;br /&gt;
*# Navigator VPC Network -&amp;gt; Firewall&lt;br /&gt;
*# Check VPC firewall rules&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2174</id>
		<title>Gcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Gcloud&amp;diff=2174"/>
		<updated>2025-11-12T06:17:51Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: Created page with &amp;quot;= Install Google Cloud =  = SSH Login =&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Install Google Cloud =&lt;br /&gt;
&lt;br /&gt;
= SSH Login =&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Main_Page&amp;diff=2173</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Main_Page&amp;diff=2173"/>
		<updated>2025-11-12T06:14:52Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* System Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Development&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | System Management&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | RDBMS&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Full-text Search&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;Development&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Node]]&lt;br /&gt;
* [[Git]]&lt;br /&gt;
* [[Python]]&lt;br /&gt;
* [[Android]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Vue.js]]&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Editor]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;System Management&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Useful Commands]]&lt;br /&gt;
* [[Network Config]]&lt;br /&gt;
* [[Services/Nginx|Nginx]]&lt;br /&gt;
* [[Services/Docker|Docker]]&lt;br /&gt;
* [[Windows]]&lt;br /&gt;
* [[gcloud]]&lt;br /&gt;
* [[NAS]]&lt;br /&gt;
* [[Wine]]&lt;br /&gt;
* [[QEMU]]&lt;br /&gt;
* [[Port Trunking]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;RDBMS&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[SQL Commands]]&lt;br /&gt;
* [[DB Import &amp;amp; Export]]&lt;br /&gt;
* [[Migration]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;Full-text Search&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* TODO&lt;br /&gt;
|-&lt;br /&gt;
! Data Visualization || OpenStreetMap || MediaWiki || Misc&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;Data Visualization&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[SVG]]&lt;br /&gt;
* D3.js&lt;br /&gt;
* Image Tools&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* Mapsforge&lt;br /&gt;
* PostGIS&lt;br /&gt;
* Projection&lt;br /&gt;
* Map Conversion&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;MediaWiki&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Test QuickGV]]&lt;br /&gt;
* Test RenderTheFuck&lt;br /&gt;
* Test Highlight&lt;br /&gt;
* Build extension&lt;br /&gt;
* [[Migration tips]]&lt;br /&gt;
* [[Special:Version|Version]]&lt;br /&gt;
* [[Sandbox]]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:RevisionDelete RevisionDelete]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;Misc&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Certbot]]&lt;br /&gt;
* [[Linux Mirrors]]&lt;br /&gt;
* [[Graphviz]]&lt;br /&gt;
* [[macOS trouble shooting]]&lt;br /&gt;
* Bluetooth Low Energy&lt;br /&gt;
* [[Histories of TWSE]]&lt;br /&gt;
* [[DSM]]&lt;br /&gt;
* [[SKCOM]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2172</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2172"/>
		<updated>2025-11-12T03:31:24Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &#039;&#039;&#039;docker compose&#039;&#039;&#039; instead&lt;br /&gt;
|-&lt;br /&gt;
| git || ⚠️ not convenient&lt;br /&gt;
|-&lt;br /&gt;
| VM || ⚠️ not stable enough&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2171</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2171"/>
		<updated>2025-11-12T02:39:12Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &#039;&#039;&#039;docker compose&#039;&#039;&#039; instead&lt;br /&gt;
|-&lt;br /&gt;
| git || ⚠️ not convenient&lt;br /&gt;
|-&lt;br /&gt;
| VM || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2170</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2170"/>
		<updated>2025-11-12T02:38:33Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &#039;&#039;&#039;docker compose&#039;&#039;&#039; instead&lt;br /&gt;
|-&lt;br /&gt;
| git || ⚠️ not convenient&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2169</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2169"/>
		<updated>2025-11-12T02:37:58Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &#039;&#039;&#039;docker compose&#039;&#039;&#039; instead&lt;br /&gt;
|-&lt;br /&gt;
| git || ⚠️ not convinient&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2168</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2168"/>
		<updated>2025-11-12T02:37:40Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &#039;&#039;&#039;docker compose&#039;&#039;&#039; instead&lt;br /&gt;
|-&lt;br /&gt;
| git || not convinient&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2167</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2167"/>
		<updated>2025-11-12T01:38:07Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &#039;&#039;&#039;docker compose&#039;&#039;&#039; instead&lt;br /&gt;
|-&lt;br /&gt;
| git ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2166</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2166"/>
		<updated>2025-11-12T01:37:51Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &#039;&#039;&#039;docker compose&#039;&#039;&#039; instead&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2165</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2165"/>
		<updated>2025-11-12T01:37:30Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &amp;lt;pre&amp;gt;docker compose&amp;lt;/pre&amp;gt; instead&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2164</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2164"/>
		<updated>2025-11-12T01:37:07Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &amp;lt;source&amp;gt;docker compose&amp;lt;/source&amp;gt; instead&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2163</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2163"/>
		<updated>2025-11-12T01:36:52Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;docker compose&amp;lt;/syntaxhighlight&amp;gt; instead&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2162</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2162"/>
		<updated>2025-11-12T01:36:05Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* QNAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| docker-compose || Use &amp;lt;nowiki&amp;gt;docker&amp;lt;/nowiki&amp;gt; compose instead&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2161</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2161"/>
		<updated>2025-11-12T01:34:24Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Approach&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2160</id>
		<title>NAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=NAS&amp;diff=2160"/>
		<updated>2025-11-12T01:33:27Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: Created page with &amp;quot;== Synology ==  == QNAP ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synology ==&lt;br /&gt;
&lt;br /&gt;
== QNAP ==&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Main_Page&amp;diff=2159</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Main_Page&amp;diff=2159"/>
		<updated>2025-11-12T01:33:00Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* System Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Development&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | System Management&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | RDBMS&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Full-text Search&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;Development&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Node]]&lt;br /&gt;
* [[Git]]&lt;br /&gt;
* [[Python]]&lt;br /&gt;
* [[Android]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Vue.js]]&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Editor]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;System Management&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Useful Commands]]&lt;br /&gt;
* [[Network Config]]&lt;br /&gt;
* [[Services/Nginx|Nginx]]&lt;br /&gt;
* [[Services/Docker|Docker]]&lt;br /&gt;
* [[Windows]]&lt;br /&gt;
* [[NAS]]&lt;br /&gt;
* [[Wine]]&lt;br /&gt;
* [[QEMU]]&lt;br /&gt;
* [[Port Trunking]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;RDBMS&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[SQL Commands]]&lt;br /&gt;
* [[DB Import &amp;amp; Export]]&lt;br /&gt;
* [[Migration]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;Full-text Search&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* TODO&lt;br /&gt;
|-&lt;br /&gt;
! Data Visualization || OpenStreetMap || MediaWiki || Misc&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;Data Visualization&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[SVG]]&lt;br /&gt;
* D3.js&lt;br /&gt;
* Image Tools&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* Mapsforge&lt;br /&gt;
* PostGIS&lt;br /&gt;
* Projection&lt;br /&gt;
* Map Conversion&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;MediaWiki&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Test QuickGV]]&lt;br /&gt;
* Test RenderTheFuck&lt;br /&gt;
* Test Highlight&lt;br /&gt;
* Build extension&lt;br /&gt;
* [[Migration tips]]&lt;br /&gt;
* [[Special:Version|Version]]&lt;br /&gt;
* [[Sandbox]]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:RevisionDelete RevisionDelete]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;Misc&amp;lt;/span&amp;gt; ======&lt;br /&gt;
* [[Certbot]]&lt;br /&gt;
* [[Linux Mirrors]]&lt;br /&gt;
* [[Graphviz]]&lt;br /&gt;
* [[macOS trouble shooting]]&lt;br /&gt;
* Bluetooth Low Energy&lt;br /&gt;
* [[Histories of TWSE]]&lt;br /&gt;
* [[DSM]]&lt;br /&gt;
* [[SKCOM]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Git&amp;diff=2158</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Git&amp;diff=2158"/>
		<updated>2025-10-16T14:05:28Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Maintainance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configuration ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor &amp;quot;vim&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;name&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;name@mydomain.com&amp;quot;&lt;br /&gt;
git config --local user.name &amp;quot;name&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;name@mydomain.com&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintainance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  ! Purpose&lt;br /&gt;
  ! Command&lt;br /&gt;
|-&lt;br /&gt;
  | Delete unused branches&lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* | xargs git branch -d&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* | xargs git branch -D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* bugfix/* hotfix/* | xargs git branch -D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | Check why a file was ignored&lt;br /&gt;
  | git check-ignore -v config.php&lt;br /&gt;
|-&lt;br /&gt;
  | Clone a specific branch&lt;br /&gt;
  | git clone -b staging project project_staging&lt;br /&gt;
|-&lt;br /&gt;
  | Clear tags not in remote repository&lt;br /&gt;
  | git fetch --prune --prune-tags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Undo ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Unstage a file&lt;br /&gt;
git reset --  src/sequelize-eparking/models/Fee.js&lt;br /&gt;
&lt;br /&gt;
# Latest commit &amp;gt; stage&lt;br /&gt;
git reset HEAD^&lt;br /&gt;
git reset HEAD~1   # if symbol ^ escaped&lt;br /&gt;
git checkout upstream/develop composer.lock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# stat for single commit&lt;br /&gt;
git diff 5741a4^..5741a4 --stat&lt;br /&gt;
git diff 5741a4^..5741a4 --shortstat&lt;br /&gt;
&lt;br /&gt;
# Get commits count of someone.&lt;br /&gt;
git log --author=&#039;Me&#039; --since=&#039;2019-01-01&#039; --before=&#039;2019-12-31&#039; | grep &#039;^commit&#039;&lt;br /&gt;
git log --author=&#039;Me&#039; --since=&#039;2019-01-01&#039; --before=&#039;2019-12-31&#039; | grep &#039;^commit&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^+[^+]&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^-[^-]&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^+++&#039; | wc -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unknown ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# See local and remote branches&lt;br /&gt;
git branch -v -a&lt;br /&gt;
master                                c313bf9 ...&lt;br /&gt;
remotes/origin/static-files-2         be32085 ...&lt;br /&gt;
remotes/origin/static-files-3         e9021d8 ...&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Checkout remote branch.&lt;br /&gt;
git checkout -b static-files-3 remotes/origin/static-files-3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.github.com/en/github/extending-github/git-automation-with-oauth-tokens&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
	<entry>
		<id>https://wiki.fundamental-ramen.com/index.php?title=Git&amp;diff=2157</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.fundamental-ramen.com/index.php?title=Git&amp;diff=2157"/>
		<updated>2025-10-16T13:57:42Z</updated>

		<summary type="html">&lt;p&gt;Tacoball: /* Maintainance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configuration ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor &amp;quot;vim&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;name&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;name@mydomain.com&amp;quot;&lt;br /&gt;
git config --local user.name &amp;quot;name&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;name@mydomain.com&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintainance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  ! Purpose&lt;br /&gt;
  ! Command&lt;br /&gt;
|-&lt;br /&gt;
  | Delete unused branches&lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* | xargs git branch -d&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* | xargs git branch -D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &lt;br /&gt;
  | &amp;lt;nowiki&amp;gt;git branch -l feature/* bugfix/* hotfix/* | xargs git branch -D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | Check why a file was ignored&lt;br /&gt;
  | git check-ignore -v config.php&lt;br /&gt;
|-&lt;br /&gt;
  | Clone a specific branch&lt;br /&gt;
  | git clone -b staging project project_staging&lt;br /&gt;
|-&lt;br /&gt;
  |&lt;br /&gt;
  | git --prune&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Undo ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Unstage a file&lt;br /&gt;
git reset --  src/sequelize-eparking/models/Fee.js&lt;br /&gt;
&lt;br /&gt;
# Latest commit &amp;gt; stage&lt;br /&gt;
git reset HEAD^&lt;br /&gt;
git reset HEAD~1   # if symbol ^ escaped&lt;br /&gt;
git checkout upstream/develop composer.lock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# stat for single commit&lt;br /&gt;
git diff 5741a4^..5741a4 --stat&lt;br /&gt;
git diff 5741a4^..5741a4 --shortstat&lt;br /&gt;
&lt;br /&gt;
# Get commits count of someone.&lt;br /&gt;
git log --author=&#039;Me&#039; --since=&#039;2019-01-01&#039; --before=&#039;2019-12-31&#039; | grep &#039;^commit&#039;&lt;br /&gt;
git log --author=&#039;Me&#039; --since=&#039;2019-01-01&#039; --before=&#039;2019-12-31&#039; | grep &#039;^commit&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^+[^+]&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^-[^-]&#039; | wc -l&lt;br /&gt;
git diff 980b^ 980b | grep &#039;^+++&#039; | wc -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unknown ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# See local and remote branches&lt;br /&gt;
git branch -v -a&lt;br /&gt;
master                                c313bf9 ...&lt;br /&gt;
remotes/origin/static-files-2         be32085 ...&lt;br /&gt;
remotes/origin/static-files-3         e9021d8 ...&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Checkout remote branch.&lt;br /&gt;
git checkout -b static-files-3 remotes/origin/static-files-3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.github.com/en/github/extending-github/git-automation-with-oauth-tokens&lt;/div&gt;</summary>
		<author><name>Tacoball</name></author>
	</entry>
</feed>