markdownで数式
概要
- 環境を変えてからmarkdownの数式が表示されたくなったので、どうやって設定したのか再調査したメモ
環境
- previmは以下のものを利用
- 'kazuph/previm'
- 'feature/add-plantuml-plugin'
設定
以下を参考にする
previmではなく、previm_feature_xxxx の方がメインで使われてた
~/.vim/bundle/previm_feature_add-plantuml-plugin
- index.html
<body id="body"> 〜〜(中略)〜〜 <div id="footer"> 〜〜(中略)〜〜 <!-- ここから --> <script src="js/previm.js" charset="utf-8"></script> <script> MathJax = { tex: { inlineMath: [['$', '$'], ['\\(', '\\)']] } }; </script> <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script> <!-- ここまで追加 --> <div id="monitor"></div> </div> </body> </html>
- previm.js
function loadPreview() { 〜〜(中略)〜〜 style_header(); // ここから先を追加する MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] } }); MathJax.Hub.Typeset(document.getElementById("preview")); } }
- 注意点
- MathJaxのversionは2.7系にしておくこと
- 最新版にすると、MathJax.Hub が無くなるらしく動かなかった
使い方
- markdownで以下のように、$や\( 〜 \) で囲む
- この記号は、上記のprevim.js の inlineMathで変更できる。
- $ (x + 1)^2 = x^2 + 2x + 1 $ - \\( x^2 \\\\ y^2 \\)
SATAで繋いだHDD(SSD)のマウント
概要
- SATAで繋いだHDD(SDD)の中身の確認とマウント方法について備忘
環境
- Basix 5.0 (Ubuntsu派生)
HDD(SSD)の中身確認
sudo fdisk -l /dev/sda
実行すると、以下のような情報が出力されるので、大まかな中身がわかる ディスク /dev/sda: 447.13 GiB, 480103981056 バイト, 937703088 セクタ 〜〜(中略)〜〜 デバイス 開始位置 最後から セクタ サイズ タイプ /dev/sda1 2048 1050623 1048576 512M EFI システム /dev/sda2 1050624 937701375 936650752 446.6G Linux ファイルシステム
マウント
- 一時的にマウントする場合は、コマンドで実行する
# デバイス"DEV"を"PATH"にマウントする mount DEV PATH # FS_TYPEでファイルシステムのタイプを指定 mount -t FS_TYPE DEV PATH # 例 ## 上記の/dev/sda2を /mnt/mount2 にマウントする ## 尚、 /mnt/mount2 ディレクトリは予め作成しておく必要がある mount -t ext4 /dev/sda2 /mnt/mount2
- 恒久的にマウントする場合は、 /etc/fstab に記述しておく
- 詳しくは右記のリンクを参照 : fstab - ArchWiki
# 例 ## 上記の/dev/sda2 を /mnt/mount2 にマウントする ## ただし、上記のコマンドとは違い、FSタイプの指定はautoにしてある /dev/sda2 /mnt/mount2 auto auto 0 0
マウントした際にRead Onlyになった
今回は物理セクタの境界がダメになっていたらしく、以下の手順で直った
一旦、当該デバイスを以下のコマンドでunmountする
# sbd2の部分は、Read Onlyになるデバイス名にする sudo umount /dev/sdb2 # もしくはマウント先を指定してもOK # /mnt/mount2 はマウント先を指定する sudo umount /mnt/mount2
sudo fsck /dev/sdb2
今回は開始位置が物理セクタ境界になっていないとかだったので、境界を操作する
gparted を起動して、境界の調整をする
再度マウントをする
参考
Basixでショートカットキーの登録
概要
- Windowsキーと何かのキーの組み合わせでプログラムを実行させるショートカットキーの登録方法
環境
- Basix5.0 (Ubuntu派生)
やり方
- 以下のファイルを書き換える
~/.config/openbox/lxde-rc.xml
- 以下の内容を追記する
〜 を記述している箇所を探して、登録したいショートカットコマンドを追記する。- 以下は、"W-v"はWindowsキーと"v"キーの組み合わせでプログラムを実行させる例
<keybind key="W-v"><action name="Execute"><command>実行させたいコマンドのパス</command></action></keybind>
composerのインストール
環境
インストール
- 下記のリンクの手順でインストールできた
リンク
nftとiptablesの使い方
概要
nftとiptablesの違い
- nftables は従来の用途ごとに分かれていたフィルタリングツール(iptables, ip6tables, arptables, ebtables)を統合して管理しやすくしたもの。
- nftables のコマンドが nft になる。
- 今後はnftが標準になっていくと思われるので新規で覚えるならnftを覚えればいいと思う。
使い方(iptables)
文法
iptables [-t テーブル] -A チェイン ルール # チェインにルールを追加 iptables [-t テーブル] -D チェイン ルール # チェインにルールを削除 iptables [-t テーブル] -P チェイン ターゲット # チェイン追加時のデフォルトターゲットの指定("P"olicy) iptables [-t テーブル] -L [チェイン] # チェインのルールを一覧表示 iptables [-t テーブル] -F [チェイン] # チェインのルールを全削除("F"ull remove) iptables [-t テーブル] -X [チェイン] # チェインのルールを除外(e"X"clude) iptables [-t テーブル] -N [チェイン] # 指定した名前のチェインを新規作成("N"ew, "N"ame?) iptables -Z # 総てのチェインのパケットカウンタ、バイトカウンタをゼロクリア("Z"ero)
テーブル
テーブル | 利用可能なチェイン | 説明 |
---|---|---|
raw | PREROUTING, OUTPUT | 接続追跡の対象から外れるようにパケットを設定する用 |
filter | INPUT, OUTPUT, FORWARD | パケットフィルタリング用(デフォルト) |
nat | PREROUTING, OUTPUT, POSTROUTING | ネットワークアドレス変換(NAT)用 |
mangle | all | IPヘッダ書き換え用 |
security | INPUT, OUTPUT, FORWARD | 強制アクセス変換用(SELinux, MAC関連) |
- テーブル指定はどれを使ってもFirewall自体の処理に違いは無い
つまり、チェインとしてOUTPUTを使いたい場合に、上記のどれを使っても違いがない - 基本的にはfilter以外はあまり使わないみたい
チェイン
チェイン | 説明 |
---|---|
PREROUTING | 受信時(ルーティングの前)に実行, 宛先IP/portを変換 |
INPUT | 受信時(ローカルプロセスに入る前)に実行, パケットの許可/不許可 |
FORWARD | 転送するパケットの許可/不許可 |
OUTPUT | 送信時(ローカルプロセスから出た後)に実行, パケットの許可/不許可 |
POSTROUTING | 送信時(ルーティングの後)に実行, 送信元IP/portを変換 |
ターゲット
ターゲット | 説明 |
---|---|
ACCEPT | 許可 |
DROP | 破棄(相手への通知無し) |
REJECT | 拒否(相手への通知あり) |
MASQUERADE | IPマスカレード, アドレス変換を動的に行う |
SNAT | ("S"tatic) 送信元アドレスを変換する, 固定IPで利用 |
DNAT | ("D"ynamic) 送信先アドレスを変換する。動的IPで利用 |
REDIRECT | 送信先アドレスを変換する |
LOW | マッチしたパケットをログに記録 |
コマンドオプション
Option | 説明 |
---|---|
-s/--source | 送信元のアドレスを指定 |
-d/--destination | 送信先のアドレスを指定 |
--sport | (TCP, UDP拡張) 送信元のport番号の指定 |
--dport | (TCP, UDP拡張) 送信先のport番号の指定 |
-p/--protocol | PROTの指定 |
-i/--in-interface | 受信するインターフェースの指定 |
-o/--out-interface | 送信するインターフェースの指定 |
-j/--jump | 適用するターゲットの指定 |
-L/--list | ルールの一覧表示 |
-I/--insert |
チェインにルールを挿入 |
実行例
- テーブルの設定確認
# コマンド sudo iptables -L -t filter # 実行結果 Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination # 上記のようにデフォルトでは何もルールが無い # また、ポリシーは全部 ACCEPT になっている。
- テーブルのチェインにルールを追加
# コマンド ## パケットの送信先がTCP(port 22) = sshの場合に拒否(reject)する sudo iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT ## パケットの送信先がTCP(port 25) = smtpの場合に破棄(drop)する sudo iptables -t filter -A INPUT -p tcp --dport 25 -j DROP ## パケットの送信先がTCP(port 80) = httpの場合に許可(デフォルトがacceptの為) sudo iptables -t filter -A INPUT -p tcp --dport 80 # テーブルの状態 Chain INPUT (policy ACCEPT) target prot opt source destination REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable DROP tcp -- anywhere anywhere tcp dpt:smtp tcp -- anywhere anywhere tcp dpt:http Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
- テーブルのチェインからルールの削除
# コマンド ## 追加のコマンドの"-A"を"-D"に変えるだけ sudo iptables -t filter -D INPUT -p tcp --dport 22 -j REJECT sudo iptables -t filter -D INPUT -p tcp --dport 25 -j DROP sudo iptables -t filter -D INPUT -p tcp --dport 80 ## また、以下のコマンド(全消し)でも消せる sudo iptables -t filter -F
使い方(nft)
はじめに
- nftはiptablesより自由度が高くなっているので、以下の順序でルールを追加することになる
- テーブルの追加
- チェインの追加
- ルールの追加
文法
nft list ruleset # 作成したルールの確認 nft add table [ファミリー] テーブル # テーブルの追加 nft add chain [ファミリー] テーブル チェイン { ベースチェイン } # チェインの追加 nft add rule [ファミリー] テーブル チェイン 条件 # ルールの追加 nft delete table テーブル # テーブルの削除 nft delete chain テーブル チェイン # チェインの削除 nft flush table [ファミリー] テーブル # 各チェインのルールを全削 nft --handle --numeric list chain テーブル チェイン # 各条件の連番を表示 nft delete rule テーブル チェイン handle 番号 # 番号を指定してルールを削除する nft flush chain テーブル チェイン # チェインを指定してルールの一括削除
テーブル/ファミリー
- iptablesと違い、nftには基本的にデフォルトでテーブルは作成されていない
- テーブルの作成時に、ファミリー名を指定可能である
- ファミリー名は省略可能で、省略した場合は"ip"(= iptables)が使われる
- ファミリー名はiptables系ユーティリティーの区分みたいなもので以下の対応が有る
ファミリー | 対応するユーティリティー |
---|---|
ip | iptables |
ip6 | ip6tables |
inet | iptables, ip6tables |
arp | arptables |
bridge | ebtables |
チェイン
- こちらもiptablesと違い、デフォルトのチェインは無いので自分で作成する必要が有る。
ベースチェインとレギュラーチェインがある
- ベースチェインはNetfilter(nft本体)が呼び出す
- レギュラーチェインは他のチェインから呼び出される
ベースチェインの書式、及びパラメータ
- 各パラメータの詳細はリンク先で確認できる
# 書式 nft add chain ファミリー テーブル チェイン { type タイプ hook フック [device デバイス] priority 優先値; [policy ポリシー;] }
条件 (statements)
その他
- Sets, Maps, Elements ... といろいろ有るが難しいので飛ばす
実行例
- テーブルの状態確認
sudo nft list rulesets # 実行結果 table inet filter { chain input { type filter hook input priority 0; policy accept; } chain forward { type filter hook forward priority 0; policy accept; } chain output { type filter hook output priority 0; policy accept; } } # テーブルが登録されていれば、上記のように何かしら表示される # テーブルがなければ、何も表示されない
- テーブルの追加
sudo nft add table sample # テーブルの状態 table ip sample { } # ファミリー名の指定がデフォルトなので、"ip"になる。
- チェインの追加
sudo nft add chain sample c1 # テーブルの状態 table ip sample { chain c1 { } }
- ベースチェインの追加
sudo nft add chain sample c2 { type filter hook input priority 0 \; policy accept \; } # テーブルの状態 table ip sample { chain c1 { } chain c2 { type filter hook input priority 0; policy accept; } }
- ルールの追加
sudo nft add rule sample c1 tcp dport 22 reject sudo nft add chain sample c3 { type filter hook input priority 0 \; policy accept \; } sudo nft add rule sample c3 tcp dport 22 reject # テーブルの状態 table ip sample { chain c1 { tcp dport ssh reject } chain c2 { type filter hook input priority 0; policy accept; } chain c3 { type filter hook input priority 0; policy accept; tcp dport ssh reject } } # 上記は次の様になる。chain c1はレギュラーチェインなので、他から呼び出されない限り使われない。 # chain c2はベースチェインなので、これが呼ばれる。 # chain c3はベースチェインであるが、ベースチェインのc2が存在するので呼ばれない。 # そのため、当該PCへのssh通信が可能な状態になっている。
- ルールの削除
sudo nft --handle --numeric list chain sample c3 # 実行結果 table ip sample { chain c3 { type filter hook input priority 0; policy accept; tcp dport ssh reject # handle 11 } } # 上記の様にルールの後ろにハンドル番号が表示される # 削除する場合は、ハンドル番号を指定して削除する。 sudo nft delete rule sample c3 handle 11 # c3内のルールを全部削除する場合は以下でも良い sudo nft flush chain sample c3 # テーブルの状態 table ip sample { chain c1 { tcp dport ssh reject } chain c2 { type filter hook input priority 0; policy accept; } chain c3 { type filter hook input priority 0; policy accept; } } # 実行結果は上記(chain c3)の様にベースチェインの情報だけが残る
- チェインの削除
sudo nft delete chain sample c3 # テーブルの状態 table ip sample { chain c1 { tcp dport ssh reject } chain c2 { type filter hook input priority 0; policy accept; } }
- テーブルの削除
sudo nft delete table sample
# この状態でテーブルの一覧を確認すると全部消えていることが確認できる
参考サイト
- nft
- iptables
zipコマンドが無いけど、コマンドラインからzipファイルを作成したい
概要
- zipファイルをコマンドラインから作成したいけど、zipコマンドが入ってないとかいう状況でzipファイルを作成する
方法
- 以下のコマンドでzipファイルが作成できる
powershell compress-archive -Path 入力ファイルパス -DestinationPath 出力ファイルパス
- コマンド化する場合は、以下のようなバッチファイルを作っておけばいいかも
@echo off rem 2番目の引数が無い場合は、1番目のパスに拡張子zipを付けたものにする set input=%1 set output=%1.zip if not "%~2" == "" ( set input=%2 set output=%1 ) powershell compress-archive -Path %input% -DestinationPath %output%