気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Routing Tableの設定や使い方

VPN設定などで上手く接続できない場合に、明示的にルート設定する場合に
Routing Tableの設定を行ったりします。

開発者にはあまり馴染みがないですね。。

ドメインからIPアドレスを取得する

nslookupでIPを取得する
(nslookupはDNSをlookupするという意味でつけられたコマンドかな。。)

$ nslookup example.com

Server:     127.0.0.1
Address:    127.0.0.1#51

Non-authoritative answer:
Name:  example.com
Address: 93.184.216.34

同じようなコマンドで「dig」が存在する。こちらでも確認可能。

$ dig example.com
 
;; ANSWER SECTION:
example.com. 16 IN  A   127.0.0.1
example.com. 16 IN  A   127.0.0.3

記載IPは適当な数値。。

Routing Tableは2種類ある

ルーティングの作成方法は以下の二つがあります。

  • スタティックルーティング
    • 管理者が設定する方法。障害時は手動で設定変更が必要で煩雑になりがち。通信量は減らせる。
  • ダイナミックルーティング
    • ルーター同士が経路情報を交換し合って、動的に作成する方法。障害があっても経路自動更新が可能。だだし通信が絶えず発生する

Routing Table(スタティック)の設定

IP ルーティングテーブルを表示するには、ip route コマンドを使用する。

$ ip route
default via 192.168.122.1 dev ens9  proto static  metric 1024
192.168.122.0/24 dev ens9  proto kernel  scope link  src 192.168.122.107
192.168.122.0/24 dev enp1s0  proto kernel  scope link  src 192.168.122.126

静的ルートをホストアドレス、つまり 1 つの IP アドレスに追加するには、以下のコマンドを実行する。

$ ip route add -net 192.0.2.1 via 10.0.0.1

割り当てた静的ルートを削除する場合は以下コマンドを実行する。

$ ip route del 192.0.2.1

以下に注意してください。Red hatLinuxでの設定になります。

ip route を使用してルーティングテーブルに行った変更は、システムを再起動すると元に戻ります。静的ルートを永続的に設定するには、そのインターフェースの /etc/sysconfig/network-scripts/ ディレクトリーに route-interface ファイルを作成して、そこに設定できます。

4.4. ip コマンドでの静的ルートの設定 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

Ansible commandとshellモジュールの違い

モジュール概要

commandとshellモジュールの違いを簡単に記載します。

  • command
    • シェルを介さない
    • 環境変数($HOMEなど)や、 “<”, “>”, “|”, “;” などのパイプやリダイレクトは使えません。
    • ユーザ環境に依存せずにセキュアにコマンドを実行
  • shell
    • ユーザ環境変数や、パイプ・リダイレクトを使った処理を行いたい場合

モジュールを使った実装例

itemに挿入されている文字列のreplace_word1とreplace_word2を特定文字列に置換する処理を例に挙げてみます。

commnand

  command: "{{ item }}"
  with_items:
    - sed -i 's/{{ replace_word1 }}/{{ result_word1 }}/g'  "{{ directory }}/{{ base_file }}"
    - sed -i 's/{{ replace_word2 }}/{{ result_word2 }}/g'  "{{ directory }}/{{ base_file }}"

shell

ちょっといい書き方が思いつかず。。記載やめときます。

他のブログに書いてたこと

playbookを書く際には他のモジュールを調べた上で、どうしても他のモジュールでは記述できないときにだけ、このshell commandモジュールを使えばよいかと思います。

ansible commandとshellモジュールの違い - kakts-log

replaceとかlineinfileを使った置換の方が良さそうですね。

このあたりの理解は、また使う機会があったらもう少しちゃんと理解しようと思います。

別名のlog4jを読み込む方法

今となってはもっとモダンな書き方があるのかもしれませんが、 開発時に使った書き方について備忘録として残しておきます。

プロパティファイル読み込み

クラスパスの通ったresources以下にあるlog4jのプロパティを読み込む場合の記述方法です。

ClassLoader cl = AbstractBatch.class.getClassLoader();
URL url = cl.getResource("resources/mylog4j.properties");
PropertyConfigurator.configure(url);

PropertyConfigurator.configureによって、上記ですとlog4j設定ファイルが読み込まれて ログ設定が読み込まれた状態となります。

Maven ダウンロードが上手くできないJarを手動でインストールする方法

最初は以下よりjarをダウンロードして、ディレクトリ階層を作ったりしてましたが。。
Maven Repository: Search/Browse/Explore

Eclipsemavenビルド実行時のエラー分にmaven installコマンドの記載がありました。
これを実行して、出力先パスを指定すれば、適切なフォルダを作成しつつ、DLしてくれました。

mvn install:install-file -DgroupId=com.google.firebase -DartifactId=firebase-admin -Dversion=6.8.1 -Dpackaging=jar -Dfile=C:\myRepository

未来の自分がまた同じことをやる可能性もあるので、メモしておきます。

Git 修正コミットを一つにまとめてマージ

git rebase -i でできるコミットまとめをmergeするときにやるには以下のコマンドを使います。

git merge --squash staging
git merge --squash --allow-unrelated-histories staging # 紐づきがない履歴はマージできないと怒られたらこっち
  • 注意点
    • 初期コミットがないと怒られるので、2つ目以降のコミットとしてマージする
    • 紐づきがないブランチをマージするとマージしているけど、リビジョンの線が切れて表示される。もしかしたら、あまり推奨されない方法かもしれません。。

Git ローカルブランチ、リモートブランチの削除

ブランチ削除コマンド、毎回調べている気がするので備忘録のために残しておきます。

ローカルブランチ

# ブランチ一覧を表示する
git branch
master
foo
bar

# ローカルブランチ削除
git branch --delete foo

# マージ確認なしで削除する
% git branch -D foo

リモートブランチ

# リモートブランチの一覧を表示する
git branch --remote
origin/HEAD -> origin/master
origin/foo
origin/bar

# リモートブランチ削除 その1
git push --delete origin foo

# リモートブランチ削除 その2
git push origin :foo

削除済みリモートブランチをローカルに反映

自分や他人が削除したリモートブランチをローカルに反映する。 ローカル上では、以下コマンドを実行しないとリモートブランチは残り続ける

# 手動反映
git fetch -p

# 自動反映する設定を行う
git config --global fetch.prune true

日常作業を効率化 Googleサービス、Qiita

ちょっとした不便を見逃さず、効率化していくと
仕事が爆速化していく。

仕事で使えるちょっとした工夫を書いていきます。

Googleカレンダー

Googleカレンダーの表示切り替えもマウス使ってられません。
ショートカットを覚えてサクサク情報収集していきたいですね。

特に、複数人のカレンダーを参照している人は、日別と週別の切り替えは多用すると思います。

「Shift + /」でショートカットキー一覧が表示

■移動系
・前の期間:「p」(past)or k
・次の期間:「n」(next)or j
・今日:「t」(today)

■ビュー切り替え系
・日単位ビュー:「d」(day)
・週単位ビュー:「w」(week)
・月単位ビュー:「m」(month)

引用元
https://qiita.com/s_yaginuma/items/7cc6e4bedc9f30081e08

Gmail検索

サクッと対象メールを見つける「検索演算子

実際に使っていて便利なものだけを記載しておきます。

カテゴリ フィルタ 検索対象 使い方
システム subject: タイトル
in:chats googleハングアウト
開封状態 is:unread 未読メール
送受信時期 after: 送受信後の日付 after:2019/01/01
before: 送受信前の日付 before:2019/01/01

未読メールが複数ページに渡って大量に溜まっているとき一括で既読にするには、
is:unreadで未読メールを特定して、検索窓下のメニューよりすべて既読を選択すると一括既読にできるのはめちゃくちゃ便利です。

Qiita

chromeの検索ブラウザ設定で キーワードに「@qii」など登録しておくと
いちいちサイト検索&アクセス後でのサイト内検索が不要。

既定の検索エンジンを設定する - パソコン - Google Chrome ヘルプ

キーボードショートカット

キーボードショートカット 効果 使える場所
⌘ + E 投稿編集ページへ飛ぶ 記事ページ
⌘ + S 記事を一時保存 記事の編集中
⌘ + Enter 記事を保存 or コメントを投稿 記事 or コメントの編集中
(記事は現在の "WIP" or "Ship It" の状態を引き継いで保存します)
J, K (同じカテゴリ内の)前の記事/次の記事 記事詳細ページ
/ 検索formにfocus どこでも