SlideShare a Scribd company logo
10分で作るクラスライブラリ
2015/12/9 npstudy#7!
@_norin_
自己紹介
• データセンターのなかのひと

インフラもろもろ、クラウドとか作ってます
• 昔は広域イーサとかEoMPLSとかやってました
APIがない!!
20年前から悩みが変わってない
by 50代エンジニア
曰く
❖ CLIだって立派なAPI!
❖ teratermのマクロだってあるし!
❖ APIは自分で作るもの。無ければ作るのがエンジニア

!
※こういうこと言うのはたいていB型です
ちゃれんじ2015冬
おっさんベテランに対抗してイマドキっぽく(ネタも兼ねて)やってみた!
!
❖ 目標

使えそうなクラスライブラリ作り!
❖ 言語

ruby!
❖ ターゲット

CSR1000v(仮想ルータ)
まずはおさらい
先祖代々受け継がれた
伝統と秘伝の
telnet + expect
require	 'expect4r'

	 require	 'pp'

!
	 ios	 =	 Expect4r::Ios.new(:telnet,	 host:	 "192.168.0.2",

	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 user:	 "router",	 pwd:	 "router",	 enable:	 "router")

	 ios.login

	 pp	 ios.show_interface
時間がなくて外部ライブラリを使っちゃいました:-)
※expect4r!
C社やJ社向けのtelnet/ssh操作クラス!
踏み台経由のアクセスも出来たりします!
https://github.com/jesnault/expect4r
出力
$	 ruby	 show.rb	 

[["show	 interfacern",

	 	 "GigabitEthernet1	 is	 up,	 line	 protocol	 is	 up	 rn",

	 	 "	 	 Hardware	 is	 CSR	 vNIC,	 address	 is	 0050.5683.bb47	 (bia	 0050.5683.bb47)rn",

	 	 "	 	 Internet	 address	 is	 192.168.0.2/24rn",

	 	 "	 	 MTU	 1500	 bytes,	 BW	 1000000	 Kbit/sec,	 DLY	 10	 usec,	 rn",

	 	 "	 	 	 	 	 reliability	 255/255,	 txload	 1/255,	 rxload	 1/255rn",

	 	 "	 	 Encapsulation	 ARPA,	 loopback	 not	 setrn",

	 	 "	 	 Keepalive	 set	 (10	 sec)rn",

	 	 "	 	 Full	 Duplex,	 1000Mbps,	 link	 type	 is	 auto,	 media	 type	 is	 RJ45rn",

	 	 "	 	 output	 flow-control	 is	 unsupported,	 input	 flow-control	 is	 unsupportedrn",

	 	 "	 	 ARP	 type:	 ARPA,	 ARP	 Timeout	 04:00:00rn",

	 	 "	 	 Last	 input	 00:00:00,	 output	 00:06:00,	 output	 hang	 neverrn",

	 	 "	 	 Last	 clearing	 of	 "show	 interface"	 counters	 neverrn",

	 	 "	 	 Input	 queue:	 0/375/0/0	 (size/max/drops/flushes);	 Total	 output	 drops:	 0rn",

	 	 "	 	 Queueing	 strategy:	 fiforn",

	 	 "	 	 Output	 queue:	 0/40	 (size/max)rn",

	 	 "	 	 5	 minute	 input	 rate	 36000	 bits/sec,	 7	 packets/secrn",

	 	 "	 	 5	 minute	 output	 rate	 1000	 bits/sec,	 2	 packets/secrn",

	 	 "	 	 	 	 	 9015405	 packets	 input,	 6320804222	 bytes,	 0	 no	 bufferrn",

	 	 "	 	 	 	 	 Received	 0	 broadcasts	 (0	 IP	 multicasts)rn",
❖ ここまでは大昔からできてる!
❖ あとは出力を解析して必要な情報をピックアップするだけ!
❖ この段階で止まってる人が大半では?!
!
!
!
手が止まる理由
❖ メッセージフォーマットが不明確!
❖ 不要な情報が大量に出力される!
❖ default値が出力されない!
❖ 必要な情報を取得するには複数のコマンドが必要な場合も!
❖ なんとなくコマンド叩きつつそれっぽい値を見つけてる!
!
そもそも論
❖ メッセージフォーマットは可変といっても所 は機械が

出力しているもの。たかが知れている!
❖ 違いは機種、OS、バージョン、バグくらい!
❖ NWエンジニアならブラックボックステストはお手の物!
❖ 大量の不要情報は機械に取捨選択させればいいだけ!
❖ なんとなくじゃなくて手順・コマンドは明確に

自動化 = 標準化
show interfaceの出力
	 	 "GigabitEthernet1	 is	 up,	 line	 protocol	 is	 up	 rn",

	 	 "	 	 Hardware	 is	 CSR	 vNIC,	 address	 is	 0050.5683.bb47	 (bia	 0050.5683.bb47)rn",

	 	 "	 	 Internet	 address	 is	 1.1.1.1/24rn",

	 	 "	 	 MTU	 1500	 bytes,	 BW	 1000000	 Kbit/sec,	 DLY	 10	 usec,	 rn",

	 	 "	 	 	 	 	 reliability	 255/255,	 txload	 1/255,	 rxload	 1/255rn",

	 	 "	 	 Encapsulation	 ARPA,	 loopback	 not	 setrn",

	 	 "	 	 Keepalive	 set	 (10	 sec)rn",

	 	 "	 	 Full	 Duplex,	 1000Mbps,	 link	 type	 is	 auto,	 media	 type	 is	 RJ45rn",

	 	 "	 	 output	 flow-control	 is	 unsupported,	 input	 flow-control	 is	 unsupportedrn",

	 	 "	 	 ARP	 type:	 ARPA,	 ARP	 Timeout	 04:00:00rn",

	 	 "	 	 Last	 input	 00:00:00,	 output	 00:06:00,	 output	 hang	 neverrn",

	 	 "	 	 Last	 clearing	 of	 "show	 interface"	 counters	 neverrn",

	 	 "	 	 Input	 queue:	 0/375/0/0	 (size/max/drops/flushes);	 Total	 output	 drops:	 0rn",

	 	 "	 	 Queueing	 strategy:	 fiforn",

	 	 "	 	 Output	 queue:	 0/40	 (size/max)rn",

	 	 "	 	 5	 minute	 input	 rate	 36000	 bits/sec,	 7	 packets/secrn",

	 	 "	 	 5	 minute	 output	 rate	 1000	 bits/sec,	 2	 packets/secrn",

	 	 "	 	 	 	 	 9015405	 packets	 input,	 6320804222	 bytes,	 0	 no	 bufferrn",

	 	 "	 	 	 	 	 Received	 0	 broadcasts	 (0	 IP	 multicasts)rn",

	 	 "	 	 	 	 	 0	 runts,	 0	 giants,	 0	 throttles	 rn",

	 	 "	 	 	 	 	 0	 input	 errors,	 0	 CRC,	 0	 frame,	 0	 overrun,	 0	 ignoredrn",

	 	 "	 	 	 	 	 0	 watchdog,	 0	 multicast,	 0	 pause	 inputrn",
片っぱしから書き下す
ShowInterfaceMessageFormatTable = [
[/^(w+) is (w+), line protocol is (w+)s*/, :ifStatus],
[/^ Hardware is (.+), address is ([^s]+) /, :ifPhy],
[/^ Description: (.+)/, :descr],
[/^ Internet address is (.+)/, :ipAddr],
[/^ MTU (d+) bytes, BW (d+) Kbit/sec/, :ifMtu_bw],
[/^ reliability (d+)/(d+), txload (d+)/(d+), rxload (d+)/(d+)/, nil],
[/^ Encapsulation ARPA/, nil],
[/^ Keepalive/, nil],
[/^ .*media type/, nil],
[/^ output flow-control/, nil],
[/^ ARP type/, nil],
[/^ Last/, nil],
[/^ Input/, nil],
[/^ Queueing strategy/, nil],
[/^ Output queue/, nil],
[/^ 5 minute/,nil],
[/^s{4}/, nil]
]
[メッセージの正規表現、マッチしたものを処理するメソッド]

を定義

メソッドがnilなのは力尽きたため	 orz
ShowInterfaceMessageFormatTable	 =	 [

	 	 [/^(w+)	 is	 (w+),	 line	 protocol	 is	 (w+)s*/,	 :ifStatus],

	 	 [/^	 	 Hardware	 is	 (.+),	 address	 is	 ([^s]+)	 /,	 :ifPhy],

	 	 [/^	 	 Description:	 (.+)/,	 :descr],

・・・

!
def	 ifStatus	 v

	 	 return	 {ifName:	 v[1].to_s,	 ifOper:	 v[2].to_s,	 ifAdmin:	 v[3].to_s}

end

・・・

!
def	 interfaceMsgAnalyzer	 msg

	 	 ret	 =	 {}

	 	 msg.each	 do	 |line|

	 	 	 	 next	 if	 pickupVal(line.chomp,	 ShowInterfaceMessageFormatTable,	 ret)

	 	 	 	 STDERR.puts	 “no	 format	 found	 =>	 #{line}"

	 	 	 	 exit

	 	 end

	 	 return	 ret

end

!
def	 pickupVal	 line,	 fmtTable,	 ret

	 	 fmtTable.each	 do	 |tbl|

	 	 	 	 if	 (m	 =	 tbl[0].match(line))

	 	 	 	 	 	 ret.merge!(self.send(tbl[1],	 m))	 if	 tbl[1]	 !=	 nil

	 	 	 	 	 	 return	 true

	 	 	 	 end

	 	 end

	 	 false

end

 ここまで5分
設定
❖ ライブラリ(expect4r)がヨロシクやってくれます:-)!
!
!
!
❖ 確認は再度showで
ios.config %{
interface GigabitEthernet 1
ip address 1.1.1.1 255.255.255.0
}
require 'expect4r'
!
・・・
!
# ログイン
ios = Expect4r::Ios.new(:telnet, host: "192.168.56.254",
user: "router", pwd: "router", enable: "router")
ios.login
!
!
# show interface発行
msg = ios.show_interface_GigabitEthernet1
!
# メッセージ解析&出力
pp interfaceMsgAnalyzer(msg[0][1..-2])
!
# 設定
ios.config %{
interface GigabitEthernet 1
ip address 2.2.2.2 255.255.255.0
}
!
# 再度確認
msg = ios.show_interface_GigabitEthernet1
pp interfaceMsgAnalyzer(msg[0][1..-2])
ここまで3分
クラス化
❖ べた書きをベースにクラス化してみる!
❖ NetDevice!
❖ ベースクラス!
❖ Interface!
❖ まんまインターフェースのクラス!
❖ MessageAnalyzer::Interface!
❖ まんまメッセージ解析用のクラス(モジュール)!
!
イメージ
router	 =	 NetDevice.new

!
router.connect(user:	 username,	 password:	 pass,	 enable:	 secpass)

!
router.interface("GigabitEthernet1")

router.interface("GigabitEthernet1").descr("test").ipaddr("1.2.3.4/24").noShutdown

!
!
!
!
全部は大変なのでinterfaceのIPとdescriptionを実装してみる
ここまで2時間(お風呂タイム含む)
class NetDevice
def initialize
@interfaces = {}
@device = nil
end
!
def connect var
return @device if @device != nil
@device = adapter var
@device.login
end
!
def interface name, refresh = nil
return @interfaces[name] if @interfaces.has_key?(name) and refresh == nil
msg = @device.send("show_interface_#{name}")
@interfaces[name] = Interface.new(
MessageAnalyzer::Interface::analyze((msg[0])[1..-2]))
@interfaces[name].adapter @device
@interfaces[name]
end
!
private
def adapter var
Expect4r::Ios.new(:telnet, var)
end
end 悩みながら打ち込んで15分くらい
SSH対応
❖ telnetとの違いはアクセスするプロトコルだけなのでadapterを

介して切り替える

class NetDevice
def connect var
@device = adapter var
end
・・・
private
def adapter var
Expect4r::Ios.new(:telnet, var)
end
!
class NetDevice::SSH < NetDevice
def adapter var
Expect4r::Ios.new(:ssh, var)
end
!
router = NetDevice::SSH.new
router.interface・・・(以下同文)
これは1分かからない
結論
❖ 10分じゃライブラリは作れませんでした!
❖ コーディングだけならなんとか!
❖ クラス設計は10倍の時間でも足りません!
❖ ドキュメントは間に合いません(納品後がデフォ)!
!
…普段のお仕事と変わりません
まとめと雑感
❖ やればできる、やらないとできない

一度作ってしまえば汎用性があるはずなので細々と作るのがお勧め!
❖ まずは動くコード

きれい・汚いは後から考える

そのうち誰かがリファクタリングしてくれます:-)!
❖ 全部実装しようとするのはイバラの道

追加の機能は必要になった時点で考える&作る

#snmptrap設定を自動化したい人がどれだけいる??
❖ メソッド(使い方)はちょと考える必要があるかも!
❖ コンフィグをイメージすると引数並べたものができやすい

interface(desc:”test”, speed: 1000, ipaddr: 10.0.0.1/24, …)

1メソッド1機能で:-)!
❖ オブジェクト間の関係と使い方

 switch.interface(“gi1”).vlan(2)

      or

 switch.vlan(2).interface(“gi1”)



両方実装してもいいけど循環参照はメモリリークへの近道。。。!
!
❖ モデル化!
❖ クラス設計は結構悩む

思い付かないなら世の中のREST APIに合わせてみるのも手

イケテナイけどMIBをそのまま実装とか!
❖ エラー処理!
❖ 戻り値で判断 or 例外発生

ここは統一しておかないと後々後悔するところ!
❖ 用語が被る!
❖ オブジェクト指向用語とネットワーク用語

interface、クラス、etc
サンプルコード
❖ こちらから!
❖ https://github.com/nori-nori/npstudy7
Thank you!

More Related Content

What's hot

Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
slankdev
 
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークOpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
M Hagiwara
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
M Hagiwara
 
HTTP2入門
HTTP2入門HTTP2入門
HTTP2入門
Sota Sugiura
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
inaz2
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
Sakiko Kawai
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用Toshiki Tsuboi
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
Jxck Jxck
 
Rubyのエンコーディング
RubyのエンコーディングRubyのエンコーディング
RubyのエンコーディングMasahiro Tomita
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
Masakazu Asama
 
仮想化環境での利用者公平性
仮想化環境での利用者公平性仮想化環境での利用者公平性
仮想化環境での利用者公平性
Takuya ASADA
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
Kentaro Ebisawa
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
Kentaro Ebisawa
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
Shishio Tsuchiya
 
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
Masahiro Tomita
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
Takashi Sogabe
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
tokudahiroshi
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話
Masaru Oki
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
 

What's hot (20)

Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
 
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークOpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
 
HTTP2入門
HTTP2入門HTTP2入門
HTTP2入門
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
 
Rubyのエンコーディング
RubyのエンコーディングRubyのエンコーディング
Rubyのエンコーディング
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
仮想化環境での利用者公平性
仮想化環境での利用者公平性仮想化環境での利用者公平性
仮想化環境での利用者公平性
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
 
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 

Viewers also liked

Npstudy#7 クラウドインフラのネットワーク自動描画
Npstudy#7 クラウドインフラのネットワーク自動描画Npstudy#7 クラウドインフラのネットワーク自動描画
Npstudy#7 クラウドインフラのネットワーク自動描画
hirokihojo
 
npstudy 161129
npstudy 161129npstudy 161129
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトーク
Tomoya Hibi
 
Router chat for np
Router chat for npRouter chat for np
Router chat for np
Okuya Igarashi
 
OpenStack Congress and Datalog (Japanese)
OpenStack Congress and Datalog (Japanese)OpenStack Congress and Datalog (Japanese)
OpenStack Congress and Datalog (Japanese)
Motonori Shindo
 
どっかのしたのほう
どっかのしたのほうどっかのしたのほう
どっかのしたのほう
_norin_
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
Yuichi Ito
 
Cloud stackユーザ会大阪 運用Tips 20130802
Cloud stackユーザ会大阪 運用Tips 20130802Cloud stackユーザ会大阪 運用Tips 20130802
Cloud stackユーザ会大阪 運用Tips 20130802hirokihojo
 
Janog37 Pattern BoF
Janog37 Pattern BoFJanog37 Pattern BoF
Janog37 Pattern BoF
Miya Kohno
 
Mk state in-programming-01
Mk state in-programming-01Mk state in-programming-01
Mk state in-programming-01
Miya Kohno
 
Jcsug21 20140912
Jcsug21 20140912Jcsug21 20140912
Jcsug21 20140912
hirokihojo
 
Korejanai Story
Korejanai StoryKorejanai Story
Korejanai Story
Kentaro Takeda
 
of_protocol_tremaday5
of_protocol_tremaday5of_protocol_tremaday5
of_protocol_tremaday5
エイシュン コンドウ
 
FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)
Takao Setaka
 
Career - design, adaption and diversity - for EMC I&D event
Career - design, adaption and diversity - for EMC I&D eventCareer - design, adaption and diversity - for EMC I&D event
Career - design, adaption and diversity - for EMC I&D event
Miya Kohno
 
Tokyo meetup 20160224
Tokyo meetup 20160224Tokyo meetup 20160224
Tokyo meetup 20160224
Takao Setaka
 
Contiv 20160914
Contiv 20160914Contiv 20160914
Contiv 20160914
Takao Setaka
 
Call for Speakersに講演を256倍通す方法
Call for Speakersに講演を256倍通す方法Call for Speakersに講演を256倍通す方法
Call for Speakersに講演を256倍通す方法
Kentaro Takeda
 
OpenStack Congress and Datalog (English)
OpenStack Congress and Datalog (English)OpenStack Congress and Datalog (English)
OpenStack Congress and Datalog (English)
Motonori Shindo
 

Viewers also liked (20)

Npstudy#7 クラウドインフラのネットワーク自動描画
Npstudy#7 クラウドインフラのネットワーク自動描画Npstudy#7 クラウドインフラのネットワーク自動描画
Npstudy#7 クラウドインフラのネットワーク自動描画
 
npstudy 161129
npstudy 161129npstudy 161129
npstudy 161129
 
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトーク
 
Loom openflow controller in 10 min
Loom openflow controller in 10 minLoom openflow controller in 10 min
Loom openflow controller in 10 min
 
Router chat for np
Router chat for npRouter chat for np
Router chat for np
 
OpenStack Congress and Datalog (Japanese)
OpenStack Congress and Datalog (Japanese)OpenStack Congress and Datalog (Japanese)
OpenStack Congress and Datalog (Japanese)
 
どっかのしたのほう
どっかのしたのほうどっかのしたのほう
どっかのしたのほう
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
 
Cloud stackユーザ会大阪 運用Tips 20130802
Cloud stackユーザ会大阪 運用Tips 20130802Cloud stackユーザ会大阪 運用Tips 20130802
Cloud stackユーザ会大阪 運用Tips 20130802
 
Janog37 Pattern BoF
Janog37 Pattern BoFJanog37 Pattern BoF
Janog37 Pattern BoF
 
Mk state in-programming-01
Mk state in-programming-01Mk state in-programming-01
Mk state in-programming-01
 
Jcsug21 20140912
Jcsug21 20140912Jcsug21 20140912
Jcsug21 20140912
 
Korejanai Story
Korejanai StoryKorejanai Story
Korejanai Story
 
of_protocol_tremaday5
of_protocol_tremaday5of_protocol_tremaday5
of_protocol_tremaday5
 
FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)
 
Career - design, adaption and diversity - for EMC I&D event
Career - design, adaption and diversity - for EMC I&D eventCareer - design, adaption and diversity - for EMC I&D event
Career - design, adaption and diversity - for EMC I&D event
 
Tokyo meetup 20160224
Tokyo meetup 20160224Tokyo meetup 20160224
Tokyo meetup 20160224
 
Contiv 20160914
Contiv 20160914Contiv 20160914
Contiv 20160914
 
Call for Speakersに講演を256倍通す方法
Call for Speakersに講演を256倍通す方法Call for Speakersに講演を256倍通す方法
Call for Speakersに講演を256倍通す方法
 
OpenStack Congress and Datalog (English)
OpenStack Congress and Datalog (English)OpenStack Congress and Datalog (English)
OpenStack Congress and Datalog (English)
 

Similar to 10分で作るクラスライブラリ

SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews, Inc.
 
coma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino Workshopcoma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino Workshop
Eto Haruhiko
 
20060520.tcp
20060520.tcp20060520.tcp
20060520.tcp
Ken SASAKI
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
 
2012/06/28 #ssmjp
2012/06/28 #ssmjp2012/06/28 #ssmjp
2012/06/28 #ssmjp
th0x0472
 
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Hajime Fujimoto
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話Preferred Networks
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
ksk sue
 
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...Insight Technology, Inc.
 
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
Kousuke Ebihara
 
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよSerf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Masahito Zembutsu
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
Shigeo Ueda
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門
Hiyou Shinnonome
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
Kiwamu Okabe
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 DockerマンReproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
Nagi Teramo
 
インデントを減らそう
インデントを減らそうインデントを減らそう
インデントを減らそう
知之 朝枝
 

Similar to 10分で作るクラスライブラリ (20)

SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
coma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino Workshopcoma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino Workshop
 
20060520.tcp
20060520.tcp20060520.tcp
20060520.tcp
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
2012/06/28 #ssmjp
2012/06/28 #ssmjp2012/06/28 #ssmjp
2012/06/28 #ssmjp
 
Magic Ring Buffer
Magic Ring BufferMagic Ring Buffer
Magic Ring Buffer
 
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
 
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
 
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
 
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよSerf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
Inside winnyp
Inside winnypInside winnyp
Inside winnyp
 
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 DockerマンReproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
 
インデントを減らそう
インデントを減らそうインデントを減らそう
インデントを減らそう
 

Recently uploaded

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 

Recently uploaded (16)

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 

10分で作るクラスライブラリ