IP Unnumbered 接続について

PPPoE 方式で払い出される IP アドレスについて、 IP Unnumbered 方式があります。
元はシリアル回線で WAN 側接続にグローバル IP アドレスの払い出しをせず、
CPE(Customer Premises Equipment) 側でグローバル IP アドレスの消費を抑えることができます。
メリットだけ書くとこいつの動作原理がよくわからないと思うので対向ルータ側でも Unnumberd 設定とします。
そうするとルータ間が仮想的に 1 つのルータと同じように扱えるということで、3 つのネットワークが 2 つのネットワークに見えるわけですね。
つまり直接接続ルートとして見えるので双方でスタティックルートを設定すればインターネットに行けるというわけです。

でも私の手元の GNS3 で PoC したらルーティングテーブルに対向ルータのネットワークが見えなかった。
ip route しようにもインターフェースに IP があたってないのでできないかなあと思ったけどシリアル接続であればインターフェース指定の静的ルートも設定できるのを忘れていた。

そういや、当時は IP Unnumbered どうやって設定するのかわからずに涙目になりながらぐぐりまくってたなあ。

Topology

PoC with GNS3 2.1

R1

int f0/0
 ip address 192.168.1.1 255.255.255.0
int s0/0
 ip unnumbered FastEthernet0/0

R2

int f0/0
 ip address 192.168.2.1 255.255.255.0
int s0/0
 ip unnumbered FastEthernet0/0

この時点でのルーティングテーブル

R1

R1#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0

R2

R2#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.2.0/24 is directly connected, FastEthernet0/0

直接接続ルートしか表示されていないことがわかる。

R1

ip route 192.168.2.0 255.255.255.0 Serial0/0

R2

ip route 192.168.1.0 255.255.255.0 Serial0/0

上記ルーティング設定突っ込んだ後のルーティングテーブル

R1#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0
S    192.168.2.0/24 is directly connected, Serial0/0
R2#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

S    192.168.1.0/24 is directly connected, Serial0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/0

ping は通る

R1#ping 192.168.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/16/36 ms

PoC with Actual(実機)

アクセススイッチを VPC に見立てる。

ASW1

int vlan 1
ip address 192.168.1.2 255.255.255.0
exit
ip default-gateway 192.168.1.1

ASW2

int vlan 1
ip address 192.168.2.2 255.255.255.0
exit
ip default-gateway 192.168.2.1

R1, R2 間はバックツーバック接続のため、まず DCE, DTE を見極める必要がある。
まあ、ケーブルに思いっきり DCE, DTE って書いてあるからわかるんだけどね。。

R1#sh controllers s0/0/0
Interface Serial0/0/0
Hardware is GT96K
DCE V.35, clock rate 2000000
idb at 0x66C0E020, driver data structure at 0x66C1583C
wic_info 0x66C15E68
Physical Port 0, SCC Num 0
MPSC Registers:
MMCR_L=0x00030400, MMCR_H=0x00000000, MPCR=0x00000000
CHR1=0x00FE007E, CHR2=0x00000000, CHR3=0x0000064A, CHR4=0x00000000
CHR5=0x00000000, CHR6=0x00000000, CHR7=0x00000000, CHR8=0x00000000
CHR9=0x00000000, CHR10=0x00002003
SDMA Registers:
SDC=0x00002201, SDCM=0x00000000, SGC=0x0000C000
CRDP=0x161D2CC0, CTDP=0x161D2F00, FTDB=0x161D2F00
Main Routing Register=0x0003FFF8 BRG Conf Register=0x00490013
Rx Clk Routing Register=0x76543218 Tx Clk Routing Register=0x76543210
GPP Registers:
Conf=0x430002  , Io=0x464050  , Data=0x7F57FFA9, Level=0x80004
Conf0=0x430002  , Io0=0x464050  , Data0=0x7F57FFA9, Level0=0x80004
0 input aborts on receiving flag sequence
0 throttles, 0 enables
0 overruns
R2#sh controllers s0/0/0
Interface Serial0/0/0
Hardware is GT96K
DTE V.35 clocks stopped.
idb at 0x66BF7960, driver data structure at 0x66BFF17C
wic_info 0x66BFF7A8
Physical Port 0, SCC Num 0
MPSC Registers:
MMCR_L=0x00030400, MMCR_H=0x00000000, MPCR=0x00000000
CHR1=0x00FE007E, CHR2=0x80000000, CHR3=0x0000064A, CHR4=0x00000000
CHR5=0x00000000, CHR6=0x00000000, CHR7=0x00000000, CHR8=0x00000000
CHR9=0x00000000, CHR10=0x00002003
SDMA Registers:
SDC=0x00002201, SDCM=0x00000000, SGC=0x0000C000
CRDP=0x15BDD060, CTDP=0x15BDD2A0, FTDB=0x15BDD2A0
Main Routing Register=0x0003FFF8 BRG Conf Register=0x00480000
Rx Clk Routing Register=0x76543218 Tx Clk Routing Register=0x76543219
GPP Registers:
Conf=0x30002   , Io=0x64050   , Data=0x7F1FFFAD, Level=0x0
Conf0=0x30002   , Io0=0x64050   , Data0=0x7F1FFFAD, Level0=0x0
0 input aborts on receiving flag sequence
0 throttles, 0 enables
0 overruns

DCE 側のR1にクロックレートを供給する設定を入れてやる。

R1

int f0/0
ip address 192.168.1.1 255.255.255.0
no shut
int s0/0/0
clock rate 64000
ip unnumbered FastEthernet0/0
no shut

R2

int f0/0
ip address 192.168.2.1 255.255.255.0
no shut
int s0/0/0
ip unnumbered FastEthernet0/0
no shut

現時点でのインタフェースの状態とルーティングテーブルを確認する。

R1#sh ip int b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.1.1     YES manual up                    up
FastEthernet0/1            unassigned      YES NVRAM  administratively down down
Serial0/0/0                192.168.1.1     YES TFTP   up                    up
R2#sh ip int b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.2.1     YES manual up                    up
FastEthernet0/1            unassigned      YES NVRAM  administratively down down
Serial0/0/0                192.168.2.1     YES TFTP   up                    up
R1#sh ip ro
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, FastEthernet0/0
L        192.168.1.1/32 is directly connected, FastEthernet0/0
R2#sh ip ro
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, FastEthernet0/0
L        192.168.2.1/32 is directly connected, FastEthernet0/0

ルーティングを追加する。

R1

ip route 192.168.2.0 255.255.255.0 s0/0/0

R2

ip route 192.168.1.0 255.255.255.0 s0/0/0
R1#sh ip ro
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, FastEthernet0/0
L        192.168.1.1/32 is directly connected, FastEthernet0/0
S     192.168.2.0/24 is directly connected, Serial0/0/0
R2#sh ip ro
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

S     192.168.1.0/24 is directly connected, Serial0/0/0
      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, FastEthernet0/0
L        192.168.2.1/32 is directly connected, FastEthernet0/0

直接接続ルートとして認識されている。

エンドツーエンドで疎通確認

ASW1#ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 25/31/34 ms
ASW2#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 25/30/34 ms

OK!!

まとめ

PPPoE であれば Dialer インタフェース、 pp インタフェースを指定すればいいんじゃないかな。
当然ですが、 VyOS(Vyatta) でもできましたし、 YAMAHA ルータでもできます。

References

ネットワークエンジニアとしてのサイトにはいつもわかりやすい説明で助けられています。
しかも用語の違いをちゃんと説明してくださっているので。

  1. unnumbered(アンナンバード)とは

GitLab Meetup Tokyo #5: GitLab 10リリース記念のダンプ

概要

2017/11/17(金) に渋谷 SmartNews イベントスペース で開催された GitLab Meetup Tokyo #5: GitLab 10リリース記念 に参加したときのダンプです。
随時整形予定。

私の発表の補足

あと、スライド修正せずにあげちゃってますが、タイムライン上で指摘いただいているように、 Omnibus 構成でも HA 構成いけるらしいです。
つまりソース使うメリットはほぼないってことです!

Supporter

  • 会場: 2F SmartNews さん
  • creationline さん

会場はSmartNews株式会社のイベントスペース兼食堂
CREATIONLINEさんはインフラ系の人がよく知っている会社。
Docker社、GitLab社と連携したりけっこう攻めた露出をしている印象。

Introduction

今年の夏にリリースされた GitLab 10 をテーマ
gitlab-jp slack ぜひ参加してください
公式の英語のブログ、次回以降の参加アナウンス
#gitlabjp

@hiroponz 「GitLabへのコントリビュート」

GitLab 10.0 MVP

仙台からいらっしゃった。

  • エンジニア
    • 新機能追加
    • 不具合の修正
  • 非エンジニア
    • ドキュメントの整備
    • バグの報告
    • Issue Bash

コントリビューションの Motivation 。

  • 好奇心
  • 向上心
  • 承認欲求
  • ストレス
  • 不満
  • 怒り

自分が thumbsup した issue を絞り込む機能がほしい。

類似の issue がないか検索

Rails アプリの一般的なデバッグ方法

tailf -f log/development.log などで追跡する

動かして controller, view, model のあたりをつける

puts
rails console

調査・検討の結果
比較的かんたんに実装できそう

EE #1939

既存のUI を変えたくない
my-reaction で絵文字が出て来る

WIP の MR を投稿してフィードバックをもらう

デザイン案を Issue に投稿して GitLab のコアチームからF/Bをもらう

12962

GitLab の CE には MR のテンプレートがある

必要な項目を埋める

自分のリアクションで issue で絞り込む

Could you please review this/again?

この機能は〜ですか?

どちらに適用されますか?

Both issu list and

実装案を聞くとき

i think there are two options
* Option 1
* Option 2

wdyt (what do you thinks)

メンション入れたほうがいい

GitLab へのコントリビュートは難しくない

slack の #dev に参加してみて

まとめ

  • GitLab の不満はコントリビュートのチャンス
  • GitLab へのコントリビュートは難しくない
  • GitLab はバージョンアップで割りとよく壊れる
  • 壊れても自分で直せる
  • 日本人のコントリビュータが増えると嬉しい

ruby-dev ではエンジニアを募集しています!

Q and A

逆にどんな MR を投げました?

立ち上げたときにAdminの初期設定パスワードの設定をあげた

やっぱり Issue 立てたほうがいい?

いきなり MR を投げつけてしまった

GitHub の Issue と PR を立てる

Issue すでに Issue を投げる

すでにある Issue に Issue を投げる

API も実装してる

MRを出したときにCI動くようにしたい

push すると CI が動くのはいらない

Wiki を同時編集して上書きされるのは困る

リポジトリの中にドキュメント

Wiki の要望出したの私です
2,3ヶ月放置されたけど、
無事マージされた

個人的に欲しい機能

  • Issue のタイトルが 日本語だとブランチ名がおかしくなる

push するたびに走る ci は止めたい

@tetsuyas 「非エンジニア向け自動git操作クライアント『PullReqMaker』について」

Git操作自動化クライアントを作った話

株)デザインルール 佐藤哲也さん

顧客に学習データは?というと (゚Д゚)ハァ? と言われる

PullReqMaker

Electron ベースのお話

github-flow のための下記の操作を自動化

チョキダーという便利なのがあって

一定の変化がなかったら自動で push

変更を検知して自動でコミット

非エンジニア系の人は xlsx docx pptx pdf の diff を見ながら作業したい

ローカルで diff 確認用のテキストファイルを作成

マイクロタスキングででのデータ収集

作業者がいつ、どのぐらいさぎょうしているのか把握したい

コミット履歴を共有できると便利

大学の研究室でのゼミのレジュメを共有

Pros:
原本の同一性保持
変更内容を細かくレビューできる

Cons:
1人=1Topic=1PullReq/MergeReq
コンフリクトが起きたら別名ファイルを生成するしかない
大きいファイルへの対応(LFS)

Future

  1. 知的生産のロガーとして使えたりしないだろうか
  2. RPA(Robot Process Automation)の基盤としてのgitの活用
  3. PullReq/MergeReqベースで作業結果を提案される世界
  4. 論文の英語校閲
  5. クラウドソーシング

利用している技術

  1. Electron
    • Windows, MacでCompatibleで便利
  2. git-credential-manager
    • 公開鍵認証を使わないhttps
    • windowsのgit-credential-managerは動作が微妙

開発における gitlab.com

  • gitlab-ci-runnerの利用による実機テスト
  • プライベートな リポジトリを Mac環境でビルドする手段として重宝
  • Windows はAppveyor に以降

サーバとしてのgitlabの利用について

Pros

日本語の使えるgitサービス、サーバ
社内のレポジトリサーバとしてインストール利用がかんたん

デモ PullReq Manager

自動反映機能を有効にすると

差分がわかる

Excelも変更内容がわかる
作業がわかる
深夜にやってるとこの人の健康が大丈夫かわかる

Q&A

Master がどうなるか

ローカルのワーキングディレクトリは更新

Excel VBAの差分とかわかりますか?(私
中身
ライブラリがあれば実現可能

デザイナの注意点とかわかりますか?
逆に教えてほしいです。

Electronのライブラリ何使っています?
コマンドを使っている
Git クラーケン node for git

@wnoguchi 「GitLabを16万8千光年ワープさせた話」

わたし

  • title: Gitlab meetup tokyo_5_warp-gitlab-168thousand-light-year-amend
  • Tags: chat, git, gitlab, mattermost, yubikey

Abstract

GitLab Meetup Tokyo #5: GitLab 10リリース記念
https://gitlab-jp.connpass.com/event/69475/
GitLabを16万8千光年ワープさせた話
以前社内勉強会で発表したスライドをベースにしています。
GitLab を導入するTipsや7.4から10.0にアップグレードするまでのお話です。
2段階認証(YubiKeyやMattermostのデモをおこなっています。

Q&A

  • 3年後?また登壇してくれますか?(冗談)
    冗談でもうれしいですね。

同じようなカルマで悩んでいる人は多いみたい。
でも数千人規模とか悩んでいる規模が違う。

反省:過去にもっと大きな規模で発表されている方がいたのであんまりお題としては良くなかった気がした。

北山晋吾 LT「prometheusによるデプロイアプリ監視辺り」

Shingo Kitayama
日本ヒューレット・パッカード

Ansible実践ガイド | 北山晋吾 | コンピュータ・IT | Kindleストア | Amazon
の著者

変化を拒むおっさんにPrometheus

GitLabとPrometheus

アプリパフォーマンス

Push だけではなく

Pull型監視

メトリックスの収集

Prometheus

Alert manager
Web UI

コンテナの監視
Zabbix との住み分け

GitLabの連携
Prometheus
管理画面見ると
メモリの使用量とかバックグラウンドジョブのグラフが見えるのでRedis,

ヘルスチェック

メトリクス情報が見れる

MySQL のエクスポーターもある

Amazon Cloud Watch

アプリケーションのパフォーマンス測定

CIでビルドのステージがある

trget

**Zabbix, Prometheus

HAProxy Exporter

より細かいアプリケーションのパフォーマンス

target_label: environment

CI/CD Runner

Ci/CD CI_ENVIRONMENT_SLUG

prometheus tokyo

なんかExporterって言葉聞くとNetFlowを想起する

JB Vasseur LT「Auto DevOps(仮)」

CREATIONLINE, INC.

コンサルテーション

GitLab Auto DevOps

プロジェクトに CI ファイルが無くても、ビルド、テスト、k8sデプロイなどが行える
マージレクエストに対しても一時的な環境が作れる

Dockerfile が必須

Kubernetes, Prometheusの

issue に対してパイプライン

Auto DevOpsで作られるパイプライン

レビュー環境が作られる

review/.. という環境

Open

Monitoring

terminal でコンテナに入れる

とにかく感動する

自動デプロイ、Canaryリリース

誰でも簡単にできる

Azure ACS,AKSとの連携
minikube
GitLab社員とてれ会議しながら数時間でやっとできた

まだベータ版で今後だいぶ変わるらしいので苦労した意味はあった

12/13 に GitLab メンバー来日

[GitLab 来日記念]GitLab Official Event – connpass

communityのciファイルがある

スマートニュース LT「スポンサーLT」

会場提供

SmartNews使っている人

Newsアグリゲーション

自主と高精度
イベントスペース
事務・運動サポート

Mさんはカレーが好き

社食のカレーがぶっ飛ぶ美味しさである

エンジニアを大事にしている。

ソフトウェアエンジニアとしてコミュニティをサポートしたい

他のエンジニアと交流したい

ネットワーキング・懇親会(参加無料)

オフレコな内容が多いので省略。

キーワード

  • Rancher
  • 分報

Keep

  • 登壇するとマサカリが飛んでくる可能性もあるが、しっかり中身のある発表をすれば懇親会のときにあっちから質問に来てくれる人がいて嬉しい
  • ちょくちょく知らない単語を飛ばしてくれるので新しい技術を調べるきっかけを与えてくれる
  • Sofmapで中古で買ったMacBook Pro 持っていったけどバッテリの持ちが圧倒的に違うし、HDMI標準搭載タイプなのでプレゼンで特に困ることはなかった

Problem

  • オーディエンスが90+ぐらいいてけっこう緊張した
  • 時間配分ミスってデモほとんど出来なかった
  • 一般のユーザを対象としたことを意識してスライドを作った結果、スライドで主張したいことに一貫性を欠いてしまった
    • アップグレードに主張を絞れば導入Tipsもいらなければ、デモで2段階認証(YubiKey)ネタもいらないし Mattermost ネタも正直いらなかった
  • 次は閑話休題で聞く側に回りたいが、東京に来て何も話さないのは虚しい

Try

  • 発表内容を振り返るのはいいが後悔しても仕方がない
  • [x] デモ用のインスタンス落とす(AWS)
  • [ ] gitlab-jp Slack チャネルに入る
  • [ ] ci-runner のこと覚える
  • [ ] GitLab CI 覚える、使う
  • [ ] kubernetes(k8s)入れる
  • [ ] 本格的に Docker 覚える
  • [ ] Prometheus 試す
  • [ ] GitLab いじり倒してみないとわからない

GitLab で個人的になんとかしてほしい機能・不具合

  • [ ] ネームスペース削除時のデプロイキーの紐付けが消えてしまう不具合。しかし公開鍵はすでに登録されていると言われてしまう
  • [x] ソースプロジェクト横断検索したい。今だとリポジトリに入らないとできない→Global Code Searchで対応済みだった。Elasticsearchと連携しているっぽい?CEでも使えるのかな
  • [ ] Issue のタイトルが 日本語だとブランチ切ったときにおかしくなる
  • [ ] スニペット共有機能
  • [ ] 単一スニペットで複数のファイル対応

まとめ

  1. Issue, MR がクローズされても泣かない。どんどん続ける
  2. PullReqMaker が VBA 対応すると需要あるのでは
  3. GitLab CI 良さげ→最近GitLab Runner+Docker入れて有効にしてDockerでSphinxビルドできるようにした
  4. Container Registry 良さげ→昨日のメンテでとりあえず管理画面で有効にした
  5. Prometheus 良さげ
  6. 12/13 GitLab のエンジニア来日

Emacs実践入門 出版記念イベントのダンプ

概要

遅まきながら2017/10/28 参加してきた Emacs 勉強会のダンプです。
ほんとメモレベルなので気付いたら整形していきます。

Emacs実践入門 出版記念イベント – connpass
#Emacs実践入門 – Twitter検索

会場について pixiv

  • 壁紙 pixv のイラストが散りばめられていた
  • 椅子が全部バロンチェア

提供されているフリー Wi-Fi について

  • inSSIDer, Wiresharkで電波状況、パケットキャプチャして無線APのベンダ知りたかった

How was Emacs 実践入門 written?

大竹智也さん

@tomoya

  • Emacs がどのように書かれたのか

40min

2007年

今34歳

MacBook ポリカーボネートの白

前はXP

2008年2月

Emacsを使い始める

前は xyzzy 使ってた

1月 Emacsの記事をブログに書き始める

仕事: フリーター、飲食店

時間があったので毎日ブログ書いてた

当時 Vim の勢いがすごかった

Emacsを盛り上げていきたい
週1本
1年間

TopHanenar

この開発者はスマートニュースに

日々、とんは語る。

2008/9

両国で相撲観戦のあと、
まつざわさんとビールを飲む
Software Designで連載

2つ返事でOK

12月

技術評論社編集の池田さんから連絡

4月

WEB-DB PRESS Vol.58にEmacs特集の執筆が決定

5月

目次作成
執筆開始

23.1 が安定バージョン

4月からラングリッチを立ち上げ フィリピンの
会員登録、
睡眠時間一日1,3H

6月

7月
脱稿

8月

Rails3特集

Now
WEB+DB Vol.100言ってた

10月
書籍化決定

より良いエディタについて
えもい話

12月
GO

2010/1
執筆開始
2010/11
脱稿

忙しすぎて記憶にのこっていない

2012年3月
9500部(もうちょっとで1万部)

技術書1000部売れたらいい方と言われていた

世の中のEmacsユーザは9000人以上いる

Atom実践入門よりも売れていた

2014年
11月
Atomの企画を持ち込む

最初電子書籍も考えていた

12月
改訂版Emacs実践入門の目次を作成する
24.5

Emacs/Atom同時進行

ELPA

使われなくなってしまったelispもあった

2015年

ホットなうちに
Vo.86

7月
Atom実践入門

8月
改訂版Emacs実践入門執筆開始

2017/3
脱稿

8月

いまここ

改訂版が出せるというのは幸せなこと

入門者は書籍を買って読む

本が古いと躓きやすい
人も減る
悪循環に陥る

感謝の気持ち

EOS

Q&A

1

Atom実践入門の売りあげは半分ぐらい

Vimテクニックバイブルは第2刷
1500〜2000部ぐらい

検索数はネットで Vim が圧倒的

JavaScript の本はなかなか読まれない

Pythonでディープラーニングはバカ売れ

2

時間がかかったのは?

AtomとEmacsの2重生活は難しい
Emacs 25 が出たら書こうと思っていた

25.3が発売直前に

3

ブログについて

1位のサイト
rubiketch

top10に入れたらいいかな

何かの業界でも3本の指に入ればよい

higeponさんのブログに勝ったときがある

何かしらの可視化するサービスがあるといいな

4

Atom 実践入門で Emacs で書くようなことやってた?

ドッグフーディングな精神がある

戻りたくなったら Atom に Emacs の欲しい機能を入れた

期間中は開発もそのエディタ

エディタの鉄人

emacs あるいは他のエディタでプロジェクターに投影しながらある課題をこなすという話。

  1. init.el あるいは .vimrc を晒す
  2. https://www.gnu.org/software/emacs/history.html の箇条書きの部分をテキストエディタにコピペ
  3. - をタブに置換する
  4. 課題2 <li></li> で囲んでHTMLリスト表示にする
  5. 課題3 Markdown 表示にする

history.txt

September 11, 2017 - Emacs 25.3 released
April 21, 2017 - Emacs 25.2 released
September 17, 2016 - Emacs 25.1 released
April 10, 2015 - Emacs 24.5 released
October 20, 2014 - Emacs 24.4 released
March 11, 2013 - Emacs 24.3 released
August 27, 2012 - Emacs 24.2 released
June 10, 2012 - Emacs 24.1 released
January 29, 2012 - Emacs 23.4 released
March 10, 2011 - Emacs 23.3 released
May 8, 2010 - Emacs 23.2 released
July 29, 2009 - Emacs 23.1 released
September 5, 2008 - Emacs 22.3 released
March 26, 2008 - Emacs 22.2 released
June 2, 2007 - Emacs 22.1 released
Feb 6, 2005 - Emacs 21.4 released
March 24, 2003 - Emacs 21.3 released
March 18, 2002 - Emacs 21.2 released
October 28, 2001 - Emacs 21.1 released

1 tadsn

ongaeshi

キーキャスター

web-mode

markdown-mode

org-tblmode

smartrep

マルチカーソル

行末は矩形だと行けない。

neovimの場合は

elscreen

エディタは基本的に全画面

2 Vim界のHaskell担当

arch linux

カフェで
Atom, VSCodeの使用が増えてきた

NeoVimで zsh を立ち上げる

ターミナルは termite

unite.vim

over

邪悪なプラグイン

surrond?

vim align ta

18j

r|

h1mesuke/vim-alighta

3

org-mode で設定を書いている
el-screen

書捨てのものは
open-junk-mode

Query Replace

markdown は orgmodeを使っている

org

4

Ubuntu
KDE

Emacs25
open junk file

shell: fish

align

Emacs は Git クライアントとして使用

magit

5

NeoVim

プラグインの設定は toml から読み込んでいる

折りたたみは標準機能

junkfile

kana/vim-niceblock

align は気持ちの問題

~/.cache/junkfile/

自作プラグインもよく使っている

text obj surround
rhysd/vim-operator-surround

vimconf行く

セッション

ayapiさん

テクニカルドキュメントで Emacs

org-mode最強

Emacs

ソースコードを書くのが面倒

最終的な成果物はXXXにしたい

変換ツールがないのは

言わずとしれた素晴らしいアウトラインエディタ

Markdown とか AsxxDoc使うぐらいなら org-mode を使う

ソースコードを書くセクションが使える

javascript ではない babel の方

ソースコードを org-mode の中で実行するための機能

実行して編集して保存すると org-mode に戻る

cider-*

org-mode の babel は素晴らしい

ox-pandoc
ox-pandocはこれをPandoc経由で行うための拡張

SKK使い多し

ob-

org babel の省略

Q. 大規模なソースコードだと評価するのが難しいと思う

言語による
clojure 最高

オプション設定すると * 3つまで

org-mode で記事を書こうとされたのは

学ぶ上で参考にされたサイトは?

日本語サイト

babel

tadsan

WEB-DB PRESS

Vol.87

melpaに20個ほどパッケージを公開してる

巨大なパッケージはすごい(かなり)

シンプルなコマンドは意外とかんたんに作れる

(> 1 2)

equal

nil: false

t: true

一時変数は let*

let でもよいが let* のほうがよい

setq 変数を上書きする

セットキュー、セットク

インデントはEmacsに頼る

format は sprintf みたいなもの

message

kill-new
切るリングに入れる
要はクリップボードにコピペ

最初に設定

show-paren-mode
add-hook emacs-lisp-mode

defun init.el

自作の関数は my/* という名前空間で

個人的に何やってるのか知りたい人は GitHub へ

shell-command

locate-dominating file

Eval

M-:

一時的に cd できる式

progn

https://qiita.com/tadsan/items/53369d3073d77b697ba4

jetbrains.el 入門におすすめ

helm

Q

pixiv とちっちゃく出てるのは

Q

require ‘aaa-bbb

cl

は使わないほうがいい?

cl-lib

人の問題でCLで定義されていたものをelispに混ぜたくない人がいる

マナーとして cl-lib のほうがよい

人に公開するものなら

melpaにパッケージかんたんに登録できる?

レビューがある

やばいコードがある

cl はだめだけど cl-lib はよい

マージするときにはレビューされている
更新で変な

www.modulecounts.com

3766パッケージ

1日で5000万ダウンロード

https://melpa.org/

stable に行かないパッケージに行かないものはバージョンリリースされたものが入る

git tag 0.0.2
git push –tags

LT

1

Windows で Emacs

kai2nenobu

このスライドは org-mode で書かれている

init.el github 見てね

guide-key.el というのを作ってた

メモ書き org-mode markdown

軽いプログラミングで Emacs

*nix

yum
apt-get
homebrew

Windows
ダウンロードしてきてunzip

ビルド
公式
野良
自前

公式

公式ビルドの安心感

画像系のDLLはほぼなし
Windows10だと日本語だめだめ

未確定の文字が出ない

野良ビルド

chuntaro氏の野良ビルド

SVG以外の画像系
IMEパッチもある インライン入力できる

Wurly氏の野良ビルド

いろいろできる

emacs-w64

パッチは当てずに

gnupack

Cygwinと

自前ビルド

Windowsでのビルド大変

更新頻度は

あまり頻繁に更新されない

25.3 は一ヶ月前

はじめての環境は Win+Emacs

WSLやってみた?

Xも入れた

軽快だった

WSL -> Win を触るのは難しい

日本語入力はどうだった?

2 mano

日本語入力は DDSKK

manojudark

xwidget で遊ぶ

素のEmacsでJavaのコードを書いて一回離脱したが

戻ってきた

Emacs25ではWebブラウザの埋め込みに使われている

slide.phy

Enter でもできる

xwidget

きれいなボタンができる

ボタンサイズはpxでハードコードされている

スライダーも作れるがフィードバックが取れない(位置)

Q. org-modeでプレゼン?

mu の山本さんがつくった gobby というのを使っている

Google Doc と Microsoft Word をEmacs でつなぐ

IEEEのWG参加している人?っぽい。
とても知的な感じの方。

Takaaki ISHIKAWA

提供

GNU Emacs OS
Org Mode 第2の脳
org-tree-slide プレゼン

26.0.90

mac でも imeパッチ

googleimeのパッチ
気持ちいいところに手が届くパッチ

isikawa
takaaki
@takaxp
Emacs歴20年

pxaka.tokyo

init.el
utility.el

takaxp.github.io

org-mode

日々上達するパスタの出来。

本題

Google Doc
強調・並列作業に欠かせない
アクセス権設定

Microsoft Word
最終文書の編集に欠かせない
強力な履歴・コメント機能
マウス依存症・過剰な装飾・ビル・ゲイツ

bm.el

スラッシュのチラリ
pomodoro mode

docx->Google Doc

Emacsを経由する

Emacsの起動

OSレベル
Ctrl+Cmd+e

Ctrl

Wordは

Q 最終成果物がdocxのときがある

規模が大きいときもorg-modeで使ったほうがいい?

1回 docx にエクスポートしたらそっちをメンテするのがいい

as 開き直し

pandocのHP見たことある?

リンク踏んでもらえばわかるが線がクロスして幾何学的芸術性がある。

Pandoc – About pandoc

美しさ

過度に社内にorgをドキュメントフォーマットとして普及しようとする人にやめてといった

takaxp さんに言及していただいた PDFlib のおはなし

PDFlib GmbH Home

私のLT

20分ぐらいかかったのでもはや LT ではない。

F/B

  • Spacemacs Vimからの戻りはおすすめ

懇親会

evil
Spacemacs
org-mode 最強
anythingでファイルサーチ
ivy
helm
emacs-php/jetbrains.el: Emacs-JetBrains IDE bridge
magit
マルチカーソル

SKK
DDSKK
にほんご で IME のクソさが評価できる
US配列最高

Pandoc – About pandoc

全部入りを使う人が多い

zsh->oh-my-zsh
エディタ->Atom,IDE
Emacs->Spacemacs
vim->NeoVim

vim はプラグインを使う

align mode

私(野口) に Vim の新しいバージョンが出たこと言われたが、 Vim のバージョン意識してなかった。。
Vim はメモ帳のノリで空気みたいに使ってた。

キーワード

cider
neovim
helm (anything)

所感

MobaXterm のように全部入りのものを使う人が増えてきた(要するにYak Shaving的にカスタマイズするのだるい人)

GitLab Meetup のときのメモ作成用として Spacemacs 使ってみた。
確かに全部入り感あり、oh-my-zsh と同じ感じがする。

私的タスク

TODO 自分でも勉強会を主催する
ネットワークもくもく会

コミュニティ
emacsjp Slack
vimjp Slack
isucon discord
モヒカン
モヒカン-z

Next勉強会
VimConf→来週なので時すでに遅し(当時)
GitLab
Redmine
ownCloud
Ansible
Vuls

共通タスク一覧

勉強会の内容のダンプ(会場の様子、その他感じたことすべて)
登壇者はもれなくフォロー
顔とアイコンと名前が一致する人のフォロー
資料のアップ&共有
社内F/B
不明、気になった、あとで試したいキーワードのリストアップ
そのコミュニティのSlackチャンネル、Discord、IRCチャネル
その他勉強会リサーチ(気になるキーワードでconnpass検索;曜日注意)

Discord – Free Voice and Text Chat for Gamers

LPIC2: Linux カーネル

[root@px-lpic1-centos6 ~]# find /lib/modules/`uname -r`/kernel -name "*.ko" | head
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/lockd/lockd.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/squashfs/squashfs.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/udf/udf.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/autofs4/autofs4.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/jffs2/jffs2.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/nfs_common/nfs_acl.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/gfs2/gfs2.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/jbd/jbd.ko
[root@px-lpic1-centos6 ~]# modinfo ext4
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
license:        GPL
description:    Fourth Extended Filesystem
author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:     74AEE2BDA63AC8482A78F4D
depends:        mbcache,jbd2
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# lsmod | head
Module                  Size  Used by
autofs4                27000  3
8021q                  20475  0
garp                    7152  1 8021q
stp                     2218  1 garp
llc                     5418  2 garp,stp
ipt_REJECT              2383  2
nf_conntrack_ipv4       9186  2
nf_defrag_ipv4          1483  1 nf_conntrack_ipv4
iptable_filter          2793  1
[root@px-lpic1-centos6 ~]# find /lib/modules/`uname -r`/kernel -name "autofs4.ko"
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/autofs4/autofs4.ko
[root@px-lpic1-centos6 ~]# find /lib/modules/`uname -r`/kernel -name "autofs4.ko" | xargs ls -lh
-rwxr--r--. 1 root root 58K  5月 31 05:07 2017 /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/autofs4/autofs4.ko
[root@px-lpic1-centos6 ~]# cat /proc/modules | head
autofs4 27000 3 - Live 0xffffffffa0578000
8021q 20475 0 - Live 0xffffffffa056e000
garp 7152 1 8021q, Live 0xffffffffa0568000
stp 2218 1 garp, Live 0xffffffffa0564000
llc 5418 2 garp,stp, Live 0xffffffffa055e000
ipt_REJECT 2383 2 - Live 0xffffffffa0533000
nf_conntrack_ipv4 9186 2 - Live 0xffffffffa052c000
nf_defrag_ipv4 1483 1 nf_conntrack_ipv4, Live 0xffffffffa0528000
iptable_filter 2793 1 - Live 0xffffffffa0524000
ip_tables 17895 1 iptable_filter, Live 0xffffffffa051b000
[root@px-lpic1-centos6 ~]# modinfo -a ext4
Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
[root@px-lpic1-centos6 ~]# modinfo -d ext4
Fourth Extended Filesystem
[root@px-lpic1-centos6 ~]# modinfo -l ext4
GPL
[root@px-lpic1-centos6 ~]# modinfo -n ext4
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
[root@px-lpic1-centos6 ~]# modinfo ext4
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
license:        GPL
description:    Fourth Extended Filesystem
author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:     74AEE2BDA63AC8482A78F4D
depends:        mbcache,jbd2
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# lsmod | grep xfs
[root@px-lpic1-centos6 ~]# modinfo xfs
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko
license:        GPL
description:    SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled
author:         Silicon Graphics, Inc.
srcversion:     06CA178475DC4F7F5169D42
depends:        exportfs
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# lsmod | grep exportfs
[root@px-lpic1-centos6 ~]# modinfo exportfs
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
license:        GPL
srcversion:     1CA651A66F2E2EBCEAD08AC
depends:
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
[root@px-lpic1-centos6 ~]# lsmod | grep exportfs
exportfs                4236  0
[root@px-lpic1-centos6 ~]# rmmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
# xfs カーネルモジュールは exportfs カーネルモジュールに依存しているので先に exportfs カーネルモジュールをロードする必要がある
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko
insmod: error inserting '/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko': -1 Unknown symbol in module
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
xfs                  1135639  0
exportfs                4236  1 xfs
[root@px-lpic1-centos6 ~]# rmmod exportfs
ERROR: Module exportfs is in use by xfs
[root@px-lpic1-centos6 ~]# rmmod -s exportfs
[root@px-lpic1-centos6 ~]# tail -n1 /var/log/messages
Jul  7 08:52:00 px-lpic1-centos6 rmmod: ERROR: Module exportfs is in use by xfs

modprobe

[root@px-lpic1-centos6 ~]# rmmod xfs
[root@px-lpic1-centos6 ~]# rmmod exportfs
[root@px-lpic1-centos6 ~]# modprobe xfs
[root@px-lpic1-centos6 ~]# modprobe -r xfs
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
[root@px-lpic1-centos6 ~]# modprobe xfs
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
xfs                  1135639  0
exportfs                4236  1 xfs
[root@px-lpic1-centos6 ~]# modprobe -r xfs
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
[root@px-lpic1-centos6 ~]# modprobe -lt fs | head
kernel/fs/nfs_common/nfs_acl.ko
kernel/fs/nls/nls_cp737.ko
kernel/fs/nls/nls_cp775.ko
kernel/fs/nls/nls_cp850.ko
kernel/fs/nls/nls_cp852.ko
kernel/fs/nls/nls_cp855.ko
kernel/fs/nls/nls_cp857.ko
kernel/fs/nls/nls_cp860.ko
kernel/fs/nls/nls_cp861.ko
kernel/fs/nls/nls_cp862.ko
[root@px-lpic1-centos6 ~]# modprobe --show-depends ext3
insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/mbcache.ko
insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/jbd/jbd.ko
insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext3/ext3.ko
[root@px-lpic1-centos6 ~]# modinfo ext3
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext3/ext3.ko
license:        GPL
description:    Second Extended Filesystem with journaling extensions
author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:     CF8EACB0D78355F028912B4
depends:        mbcache,jbd
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions

CCNP v2.0 について思うこと

CCNA も 2 年経たずに v3.0 に改定された。
なんだか CCNP v2.0 の教科書の出力も IOS 12 系っぽい。
なんかもうそろそれええやろって感じで v3.0 にしまーすって流れになりそうな気がプンプンしてる。

using putty alternative Tera Term

最近 Tera Term の代わりに putty を使うようにした。
あんまり何がそんなに便利なのかよくわかってないんだけど、世界的に見ると putty 使いが圧倒的なシェアを誇っているみたいなので、 putty を積極的に使っていきたい。