annotate slide/slide.html @ 30:17d034fa49be

update slide
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Thu, 03 Sep 2020 13:42:56 +0900
parents 01e61c619a1b
children 482467c71a63
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
1 <!DOCTYPE html><html lang="ja-JP"><head><title>情報工学科演習用のコンテナ技術を用いた新規サービスの設計・実装</title><meta property="og:title" content="情報工学科演習用のコンテナ技術を用いた新規サービスの設計・実装"><meta charset="UTF-8"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><style>.bespoke-marp-note,.bespoke-marp-osc,.bespoke-progress-parent{display:none;transition:none}@media screen{body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear;-webkit-tap-highlight-color:transparent}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:disabled{cursor:not-allowed;opacity:.15!important}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover{opacity:1}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:active{opacity:.6}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:not(:disabled){transition:none}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-prev{background:transparent url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNNjggOTBMMjggNTBsNDAtNDAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-next{background:transparent url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNMzIgOTBsNDAtNDAtNDAtNDAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen]{background:transparent url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6NXB4fTwvc3R5bGU+PC9kZWZzPjxyZWN0IGNsYXNzPSJhIiB4PSIxMCIgeT0iMjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgcng9IjUuNjciLz48cGF0aCBjbGFzcz0iYSIgZD0iTTQwIDcwSDIwVjUwbTIwIDBMMjAgNzBtNDAtNDBoMjB2MjBtLTIwIDBsMjAtMjAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen]{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6NXB4fTwvc3R5bGU+PC9kZWZzPjxyZWN0IGNsYXNzPSJhIiB4PSIxMCIgeT0iMjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgcng9IjUuNjciLz48cGF0aCBjbGFzcz0iYSIgZD0iTTIwIDUwaDIwdjIwbS0yMCAwbDIwLTIwbTQwIDBINjBWMzBtMjAgMEw2MCA1MCIvPjwvc3ZnPg==")}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter]{background:transparent url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS13aWR0aDo1cHh9PC9zdHlsZT48L2RlZnM+PHBhdGggY2xhc3M9ImEiIGQ9Ik0yMCA2MGgtNWE1IDUgMCAwMS01LTVWMjBhNSA1IDAgMDE1LTVoNjBhNSA1IDAgMDE1IDV2NU0zMCA4NWg2MCIvPjxyZWN0IHg9IjMwIiB5PSIzNSIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQwIiByeD0iNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIi8+PHJlY3QgY2xhc3M9ImEiIHg9IjMwIiB5PSIzNSIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQwIiByeD0iNSIvPjxwYXRoIGNsYXNzPSJhIiBkPSJNNDAgNTBoNDBNNDAgNjBoMzAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body,html{height:100%;margin:0}body{background:#000;overflow:hidden}svg.bespoke-marp-slide{opacity:0;pointer-events:none;z-index:-1}svg.bespoke-marp-slide.bespoke-marp-active{opacity:1;pointer-events:auto;z-index:0}svg.bespoke-marp-slide.bespoke-marp-active.bespoke-marp-active-ready *{-webkit-animation-name:__bespoke_marp__!important;animation-name:__bespoke_marp__!important}svg.bespoke-marp-slide[data-bespoke-marp-load=hideable]{display:none}svg.bespoke-marp-slide[data-bespoke-marp-load=hideable].bespoke-marp-active{display:block}[data-bespoke-marp-fragment=inactive]{visibility:hidden}body[data-bespoke-view=""] .bespoke-marp-parent,body[data-bespoke-view=next] .bespoke-marp-parent{bottom:0;left:0;position:absolute;right:0;top:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc{background:rgba(0,0,0,.65);border-radius:7px;bottom:50px;color:#fff;display:block;font-family:Helvetica,Arial,sans-serif;font-size:16px;left:50%;line-height:0;opacity:1;padding:12px;position:absolute;touch-action:manipulation;transform:translateX(-50%);transition:opacity .2s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:1;will-change:transform}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>*,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>*{margin-left:6px}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>:first-child,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>:first-child{margin-left:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span{opacity:.8}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page]{display:inline-block;min-width:140px;text-align:center}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev]{height:32px;line-height:32px;width:32px}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive{cursor:none}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc{opacity:0;pointer-events:none}body[data-bespoke-view=""] svg.bespoke-marp-slide,body[data-bespoke-view=next] svg.bespoke-marp-slide{height:100%;left:0;position:absolute;top:0;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent{background:#222;display:flex;height:5px;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent+.bespoke-marp-parent{top:5px}body[data-bespoke-view=""] .bespoke-progress-parent .bespoke-progress-bar{flex:0 0 0;background:#0288d1;transition:flex-basis .2s cubic-bezier(0,1,1,1)}body[data-bespoke-view=next]{background:transparent}body[data-bespoke-view=presenter]{background:#161616}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container{font-family:Helvetica,Arial,sans-serif;height:100%;left:0;position:absolute;top:0;width:100%;display:grid;grid-template-columns:2fr 1fr;grid-template-rows:minmax(140px,1fr) 2fr 3em;grid-template-areas:"current next" "current note" "info note"}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent{grid-area:current;position:relative;overflow:hidden}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide{height:calc(100% - 40px);left:20px;position:absolute;pointer-events:none;top:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide.bespoke-marp-active{-webkit-filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));filter:drop-shadow(0 3px 10px rgba(0,0,0,.5))}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container{background:#222;cursor:pointer;display:none;grid-area:next;overflow:hidden;position:relative}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container iframe.bespoke-marp-presenter-next{background:transparent;border:0;display:block;-webkit-filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));height:calc(100% - 40px);left:20px;position:absolute;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:20px;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container{background:#222;color:#eee;grid-area:note}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note{margin:20px;width:calc(100% - 40px);height:calc(100% - 40px);box-sizing:border-box;font-size:1.1em;overflow:auto;padding-right:3px;white-space:pre-wrap;word-wrap:break-word;scrollbar-width:thin;scrollbar-color:hsla(0,0%,93.3%,.5) transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar{width:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-track{background:transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-thumb{background:hsla(0,0%,93.3%,.5);border-radius:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note:empty{pointer-events:none}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:first-child{margin-top:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:last-child{margin-bottom:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container{align-items:center;box-sizing:border-box;color:#eee;display:flex;flex-wrap:nowrap;grid-area:info;justify-content:center;padding:0 10px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{display:block;box-sizing:border-box;padding:0 10px;white-space:nowrap;width:100%}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{height:1.5em;line-height:1.5em;width:1.5em}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page{order:2;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page .bespoke-marp-presenter-info-page-text{display:inline-block;min-width:120px;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time{color:#999;order:1;text-align:left}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{color:#999;order:3;text-align:right}}@media print{.bespoke-marp-presenter-info-container,.bespoke-marp-presenter-next-container,.bespoke-marp-presenter-note-container{display:none}}</style><style>div#p>svg>foreignObject>section{width:1280px;height:720px;box-sizing:border-box;overflow:hidden;position:relative;scroll-snap-align:center center}div#p>svg>foreignObject>section:after{bottom:0;content:attr(data-marpit-pagination);padding:inherit;pointer-events:none;position:absolute;right:0}div#p>svg>foreignObject>section:not([data-marpit-pagination]):after{display:none}/* Normalization */div#p>svg>foreignObject>section h1{font-size:2em;margin:0.67em 0}div#p>svg>foreignObject>section video::-webkit-media-controls{will-change:transform}@page{size:1280px 720px;margin:0}@media print{body,html{background-color:#fff;margin:0;page-break-inside:avoid;break-inside:avoid-page}div#p>svg>foreignObject>section{page-break-before:always;break-before:page}div#p>svg>foreignObject>section,div#p>svg>foreignObject>section *{-webkit-print-color-adjust:exact!important;animation-delay:0s!important;animation-duration:0s!important;color-adjust:exact!important;transition:none!important}div#p>svg[data-marpit-svg]{display:block;height:100vh;width:100vw}}@font-face{font-family:KaTeX_AMS;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_AMS-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_AMS-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_AMS-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Caligraphic-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Caligraphic-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Caligraphic-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Caligraphic-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Caligraphic-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Caligraphic-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Fraktur-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Fraktur-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Fraktur-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Fraktur-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Fraktur-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Fraktur-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Main-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Math-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Math-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Math-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Math-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Math-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Math-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_SansSerif-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Script-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Script-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Script-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size1-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size1-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size1-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size2-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size2-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size2-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size3-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size3-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size3-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size4-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size4-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Size4-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Typewriter-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Typewriter-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/fonts/KaTeX_Typewriter-Regular.ttf') format("truetype");font-weight:400;font-style:normal}div#p>svg>foreignObject>section .katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}div#p>svg>foreignObject>section .katex *{-ms-high-contrast-adjust:none!important}div#p>svg>foreignObject>section .katex .katex-version:after{content:"0.11.1"}div#p>svg>foreignObject>section .katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}div#p>svg>foreignObject>section .katex .katex-html>.newline{display:block}div#p>svg>foreignObject>section .katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}div#p>svg>foreignObject>section .katex .base,div#p>svg>foreignObject>section .katex .strut{display:inline-block}div#p>svg>foreignObject>section .katex .textbf{font-weight:700}div#p>svg>foreignObject>section .katex .textit{font-style:italic}div#p>svg>foreignObject>section .katex .textrm{font-family:KaTeX_Main}div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .texttt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathdefault{font-family:KaTeX_Math;font-style:italic}div#p>svg>foreignObject>section .katex .mathit{font-family:KaTeX_Main;font-style:italic}div#p>svg>foreignObject>section .katex .mathrm{font-style:normal}div#p>svg>foreignObject>section .katex .mathbf{font-family:KaTeX_Main;font-weight:700}div#p>svg>foreignObject>section .katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}div#p>svg>foreignObject>section .katex .amsrm,div#p>svg>foreignObject>section .katex .mathbb,div#p>svg>foreignObject>section .katex .textbb{font-family:KaTeX_AMS}div#p>svg>foreignObject>section .katex .mathcal{font-family:KaTeX_Caligraphic}div#p>svg>foreignObject>section .katex .mathfrak,div#p>svg>foreignObject>section .katex .textfrak{font-family:KaTeX_Fraktur}div#p>svg>foreignObject>section .katex .mathtt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathscr,div#p>svg>foreignObject>section .katex .textscr{font-family:KaTeX_Script}div#p>svg>foreignObject>section .katex .mathsf,div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .mathboldsf,div#p>svg>foreignObject>section .katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}div#p>svg>foreignObject>section .katex .mathitsf,div#p>svg>foreignObject>section .katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}div#p>svg>foreignObject>section .katex .mainrm{font-family:KaTeX_Main;font-style:normal}div#p>svg>foreignObject>section .katex .vlist-t{display:inline-table;table-layout:fixed}div#p>svg>foreignObject>section .katex .vlist-r{display:table-row}div#p>svg>foreignObject>section .katex .vlist{display:table-cell;vertical-align:bottom;position:relative}div#p>svg>foreignObject>section .katex .vlist>span{display:block;height:0;position:relative}div#p>svg>foreignObject>section .katex .vlist>span>span{display:inline-block}div#p>svg>foreignObject>section .katex .vlist>span>.pstrut{overflow:hidden;width:0}div#p>svg>foreignObject>section .katex .vlist-t2{margin-right:-2px}div#p>svg>foreignObject>section .katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.vlist-s{--marpit-root-font-size:1px}div#p>svg>foreignObject>section .katex .msupsub{text-align:left}div#p>svg>foreignObject>section .katex .mfrac>span>span{text-align:center}div#p>svg>foreignObject>section .katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}div#p>svg>foreignObject>section .katex .hdashline,div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .mfrac .frac-line,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .rule,div#p>svg>foreignObject>section .katex .underline .underline-line{min-height:1px}div#p>svg>foreignObject>section .katex .mspace{display:inline-block}div#p>svg>foreignObject>section .katex .clap,div#p>svg>foreignObject>section .katex .llap,div#p>svg>foreignObject>section .katex .rlap{width:0;position:relative}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .llap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{position:absolute}div#p>svg>foreignObject>section .katex .clap>.fix,div#p>svg>foreignObject>section .katex .llap>.fix,div#p>svg>foreignObject>section .katex .rlap>.fix{display:inline-block}div#p>svg>foreignObject>section .katex .llap>.inner{right:0}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{left:0}div#p>svg>foreignObject>section .katex .clap>.inner>span{margin-left:-50%;margin-right:50%}div#p>svg>foreignObject>section .katex .rule{display:inline-block;border:0 solid;position:relative}div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}div#p>svg>foreignObject>section .katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}div#p>svg>foreignObject>section .katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size1{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size1{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size2{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size2{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size3{font-size:1.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size3{--marpit-root-font-size:1.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size4{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size4{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size5{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size5{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size6{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size6{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size7{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size7{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size8{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size8{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size9{font-size:3.456em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size9{--marpit-root-font-size:3.456em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size10{font-size:4.148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size10{--marpit-root-font-size:4.148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size11{font-size:4.976em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size11{--marpit-root-font-size:4.976em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size1{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size1{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size2{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size2{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size3{font-size:1.16666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size3{--marpit-root-font-size:1.16666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size4{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size4{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size5{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size5{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size6{font-size:1.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size6{--marpit-root-font-size:1.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size7{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size7{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size8{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size8{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size9{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size9{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size10{font-size:3.45666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size10{--marpit-root-font-size:3.45666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size11{font-size:4.14666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size11{--marpit-root-font-size:4.14666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size1{font-size:.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size1{--marpit-root-font-size:.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size2{font-size:.85714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size2{--marpit-root-font-size:.85714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size3{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size3{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size4{font-size:1.14285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size4{--marpit-root-font-size:1.14285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size5{font-size:1.28571429em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size5{--marpit-root-font-size:1.28571429em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size6{font-size:1.42857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size6{--marpit-root-font-size:1.42857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size7{font-size:1.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size7{--marpit-root-font-size:1.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size8{font-size:2.05714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size8{--marpit-root-font-size:2.05714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size9{font-size:2.46857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size9{--marpit-root-font-size:2.46857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size10{font-size:2.96285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size10{--marpit-root-font-size:2.96285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size11{font-size:3.55428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size11{--marpit-root-font-size:3.55428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size1{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size1{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size2{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size2{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size3{font-size:.875em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size3{--marpit-root-font-size:.875em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size4{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size4{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size5{font-size:1.125em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size5{--marpit-root-font-size:1.125em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size6{font-size:1.25em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size6{--marpit-root-font-size:1.25em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size7{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size7{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size8{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size8{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size9{font-size:2.16em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size9{--marpit-root-font-size:2.16em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size10{font-size:2.5925em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size10{--marpit-root-font-size:2.5925em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size11{font-size:3.11em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size11{--marpit-root-font-size:3.11em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size1{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size1{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size2{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size2{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size3{font-size:.77777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size3{--marpit-root-font-size:.77777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size4{font-size:.88888889em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size4{--marpit-root-font-size:.88888889em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size5{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size5{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size6{font-size:1.11111111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size6{--marpit-root-font-size:1.11111111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size7{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size7{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size8{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size8{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size9{font-size:1.92em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size9{--marpit-root-font-size:1.92em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size10{font-size:2.30444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size10{--marpit-root-font-size:2.30444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size11{font-size:2.76444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size11{--marpit-root-font-size:2.76444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size1{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size1{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size2{font-size:.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size2{--marpit-root-font-size:.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size3{font-size:.7em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size3{--marpit-root-font-size:.7em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size4{font-size:.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size4{--marpit-root-font-size:.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size5{font-size:.9em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size5{--marpit-root-font-size:.9em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size6{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size6{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size7{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size7{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size8{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size8{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size9{font-size:1.728em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size9{--marpit-root-font-size:1.728em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size10{font-size:2.074em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size10{--marpit-root-font-size:2.074em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size11{font-size:2.488em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size11{--marpit-root-font-size:2.488em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size1{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size1{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size2{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size2{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size3{font-size:.58333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size3{--marpit-root-font-size:.58333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size4{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size4{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size5{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size5{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size6{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size6{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size7{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size7{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size8{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size8{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size9{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size9{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size10{font-size:1.72833333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size10{--marpit-root-font-size:1.72833333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size11{font-size:2.07333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size11{--marpit-root-font-size:2.07333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size1{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size1{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size2{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size2{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size3{font-size:.48611111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size3{--marpit-root-font-size:.48611111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size4{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size4{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size5{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size5{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size6{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size6{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size7{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size7{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size8{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size8{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size9{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size9{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size10{font-size:1.44027778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size10{--marpit-root-font-size:1.44027778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size11{font-size:1.72777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size11{--marpit-root-font-size:1.72777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size1{font-size:.28935185em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size1{--marpit-root-font-size:.28935185em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size2{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size2{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size3{font-size:.40509259em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size3{--marpit-root-font-size:.40509259em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size4{font-size:.46296296em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size4{--marpit-root-font-size:.46296296em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size5{font-size:.52083333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size5{--marpit-root-font-size:.52083333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size6{font-size:.5787037em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size6{--marpit-root-font-size:.5787037em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size7{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size7{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size8{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size8{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size9{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size9{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size10{font-size:1.20023148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size10{--marpit-root-font-size:1.20023148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size11{font-size:1.43981481em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size11{--marpit-root-font-size:1.43981481em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size1{font-size:.24108004em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size1{--marpit-root-font-size:.24108004em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size2{font-size:.28929605em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size2{--marpit-root-font-size:.28929605em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size3{font-size:.33751205em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size3{--marpit-root-font-size:.33751205em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size4{font-size:.38572806em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size4{--marpit-root-font-size:.38572806em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size5{font-size:.43394407em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size5{--marpit-root-font-size:.43394407em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size6{font-size:.48216008em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size6{--marpit-root-font-size:.48216008em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size7{font-size:.57859209em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size7{--marpit-root-font-size:.57859209em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size8{font-size:.69431051em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size8{--marpit-root-font-size:.69431051em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size9{font-size:.83317261em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size9{--marpit-root-font-size:.83317261em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size10{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size10{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size11{font-size:1.19961427em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size11{--marpit-root-font-size:1.19961427em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size1{font-size:.20096463em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size1{--marpit-root-font-size:.20096463em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size2{font-size:.24115756em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size2{--marpit-root-font-size:.24115756em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size3{font-size:.28135048em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size3{--marpit-root-font-size:.28135048em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size4{font-size:.32154341em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size4{--marpit-root-font-size:.32154341em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size5{font-size:.36173633em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size5{--marpit-root-font-size:.36173633em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size6{font-size:.40192926em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size6{--marpit-root-font-size:.40192926em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size7{font-size:.48231511em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size7{--marpit-root-font-size:.48231511em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size8{font-size:.57877814em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size8{--marpit-root-font-size:.57877814em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size9{font-size:.69453376em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size9{--marpit-root-font-size:.69453376em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size10{font-size:.83360129em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size10{--marpit-root-font-size:.83360129em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size11{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size11{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .delimsizing.size1{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.size2{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .delimsizing.size3{font-family:KaTeX_Size3}div#p>svg>foreignObject>section .katex .delimsizing.size4{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .nulldelimiter{display:inline-block;width:.12em}div#p>svg>foreignObject>section .katex .delimcenter,div#p>svg>foreignObject>section .katex .op-symbol{position:relative}div#p>svg>foreignObject>section .katex .op-symbol.small-op{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .op-symbol.large-op{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .accent>.vlist-t,div#p>svg>foreignObject>section .katex .op-limits>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .accent .accent-body{position:relative}div#p>svg>foreignObject>section .katex .accent .accent-body:not(.accent-full){width:0}div#p>svg>foreignObject>section .katex .overlay{display:block}div#p>svg>foreignObject>section .katex .mtable .vertical-separator{display:inline-block;min-width:1px}div#p>svg>foreignObject>section .katex .mtable .arraycolsep{display:inline-block}div#p>svg>foreignObject>section .katex .mtable .col-align-c>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .mtable .col-align-l>.vlist-t{text-align:left}div#p>svg>foreignObject>section .katex .mtable .col-align-r>.vlist-t{text-align:right}div#p>svg>foreignObject>section .katex .svg-align{text-align:left}div#p>svg>foreignObject>section .katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}div#p>svg>foreignObject>section .katex svg path{stroke:none}div#p>svg>foreignObject>section .katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}div#p>svg>foreignObject>section .katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}div#p>svg>foreignObject>section .katex .stretchy:after,div#p>svg>foreignObject>section .katex .stretchy:before{content:""}div#p>svg>foreignObject>section .katex .hide-tail{width:100%;position:relative;overflow:hidden}div#p>svg>foreignObject>section .katex .halfarrow-left{left:0}div#p>svg>foreignObject>section .katex .halfarrow-left,div#p>svg>foreignObject>section .katex .halfarrow-right{position:absolute;width:50.2%;overflow:hidden}div#p>svg>foreignObject>section .katex .halfarrow-right{right:0}div#p>svg>foreignObject>section .katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}div#p>svg>foreignObject>section .katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}div#p>svg>foreignObject>section .katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}div#p>svg>foreignObject>section .katex .x-arrow-pad{padding:0 .5em}div#p>svg>foreignObject>section .katex .mover,div#p>svg>foreignObject>section .katex .munder,div#p>svg>foreignObject>section .katex .x-arrow{text-align:center}div#p>svg>foreignObject>section .katex .boxpad{padding:0 .3em}div#p>svg>foreignObject>section .katex .fbox,div#p>svg>foreignObject>section .katex .fcolorbox{box-sizing:border-box;border:.04em solid}div#p>svg>foreignObject>section .katex .cancel-pad{padding:0 .2em}div#p>svg>foreignObject>section .katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}div#p>svg>foreignObject>section .katex .sout{border-bottom-style:solid;border-bottom-width:.08em}div#p>svg>foreignObject>section .katex-display{display:block;margin:1em 0;text-align:center}div#p>svg>foreignObject>section .katex-display>.katex{display:block;text-align:center;white-space:nowrap}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html{display:block;position:relative}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html>.tag{position:absolute;right:0}div#p>svg>foreignObject>section .katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}div#p>svg>foreignObject>section .katex-display.fleqn>.katex{text-align:left}div#p>svg>foreignObject>section .katex-display{margin:0}div#p>svg>foreignObject>section svg[data-marp-fitting-math]{--preserve-aspect-ratio:xMidYMid meet}div#p>svg>foreignObject>section svg[data-marp-fitting-math] [data-marp-fitting-svg-content]{margin:0 auto}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{display:block;height:auto;width:100%}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{position:static}}div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{content:""}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{position:relative}}div#p>svg>foreignObject>section [data-marp-fitting-svg-content]{display:table;white-space:nowrap}div#p>svg>foreignObject>section [data-marp-fitting-svg-content-wrap]{white-space:pre}div#p>svg>foreignObject>section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em}
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 /*!
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 * Marp default theme.
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 *
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 * @theme default
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 * @author Yuki Hattori
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 *
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 * @auto-scaling true
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 * @size 4:3 960px 720px
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 */div#p>svg>foreignObject>section .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}div#p>svg>foreignObject>section .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}div#p>svg>foreignObject>section .anchor:focus{outline:none}div#p>svg>foreignObject>section h1 .octicon-link,div#p>svg>foreignObject>section h2 .octicon-link,div#p>svg>foreignObject>section h3 .octicon-link,div#p>svg>foreignObject>section h4 .octicon-link,div#p>svg>foreignObject>section h5 .octicon-link,div#p>svg>foreignObject>section h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}div#p>svg>foreignObject>section h1:hover .anchor,div#p>svg>foreignObject>section h2:hover .anchor,div#p>svg>foreignObject>section h3:hover .anchor,div#p>svg>foreignObject>section h4:hover .anchor,div#p>svg>foreignObject>section h5:hover .anchor,div#p>svg>foreignObject>section h6:hover .anchor{text-decoration:none}div#p>svg>foreignObject>section h1:hover .anchor .octicon-link,div#p>svg>foreignObject>section h2:hover .anchor .octicon-link,div#p>svg>foreignObject>section h3:hover .anchor .octicon-link,div#p>svg>foreignObject>section h4:hover .anchor .octicon-link,div#p>svg>foreignObject>section h5:hover .anchor .octicon-link,div#p>svg>foreignObject>section h6:hover .anchor .octicon-link{visibility:visible}div#p>svg>foreignObject>section h1:hover .anchor .octicon-link:before,div#p>svg>foreignObject>section h2:hover .anchor .octicon-link:before,div#p>svg>foreignObject>section h3:hover .anchor .octicon-link:before,div#p>svg>foreignObject>section h4:hover .anchor .octicon-link:before,div#p>svg>foreignObject>section h5:hover .anchor .octicon-link:before,div#p>svg>foreignObject>section h6:hover .anchor .octicon-link:before{width:16px;height:16px;content:" ";display:inline-block;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' d='M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z'/%3E%3C/svg%3E")}div#p>svg>foreignObject>section{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5;word-wrap:break-word}div#p>svg>foreignObject>section{--marpit-root-font-size:16px}div#p>svg>foreignObject>section details{display:block}div#p>svg>foreignObject>section summary{display:list-item}div#p>svg>foreignObject>section a{background-color:initial}div#p>svg>foreignObject>section a:active,div#p>svg>foreignObject>section a:hover{outline-width:0}div#p>svg>foreignObject>section strong{font-weight:inherit;font-weight:bolder}div#p>svg>foreignObject>section h1{margin:.67em 0}div#p>svg>foreignObject>section img{border-style:none}div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section kbd,div#p>svg>foreignObject>section pre{font-family:monospace,monospace;font-size:1em}div#p>svg>foreignObject>section hr{box-sizing:initial;overflow:visible}div#p>svg>foreignObject>section input{font:inherit;margin:0;overflow:visible}div#p>svg>foreignObject>section [type=checkbox]{padding:0}div#p>svg>foreignObject>section *,div#p>svg>foreignObject>section [type=checkbox]{box-sizing:border-box}div#p>svg>foreignObject>section input{font-family:inherit;font-size:inherit;line-height:inherit}div#p>svg>foreignObject>section a{color:#0366d6;text-decoration:none}div#p>svg>foreignObject>section a:hover{text-decoration:underline}div#p>svg>foreignObject>section strong{font-weight:600}div#p>svg>foreignObject>section hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #dfe2e5}div#p>svg>foreignObject>section hr:after,div#p>svg>foreignObject>section hr:before{display:table;content:""}div#p>svg>foreignObject>section hr:after{clear:both}div#p>svg>foreignObject>section table{border-spacing:0;border-collapse:collapse}div#p>svg>foreignObject>section td,div#p>svg>foreignObject>section th{padding:0}div#p>svg>foreignObject>section details summary{cursor:pointer}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2,div#p>svg>foreignObject>section h3,div#p>svg>foreignObject>section h4,div#p>svg>foreignObject>section h5,div#p>svg>foreignObject>section h6{margin-top:0;margin-bottom:0}div#p>svg>foreignObject>section h1{font-size:32px}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2{font-weight:600}div#p>svg>foreignObject>section h2{font-size:24px}div#p>svg>foreignObject>section h3{font-size:20px}div#p>svg>foreignObject>section h3,div#p>svg>foreignObject>section h4{font-weight:600}div#p>svg>foreignObject>section h4{font-size:16px}div#p>svg>foreignObject>section h5{font-size:14px}div#p>svg>foreignObject>section h5,div#p>svg>foreignObject>section h6{font-weight:600}div#p>svg>foreignObject>section h6{font-size:12px}div#p>svg>foreignObject>section p{margin-top:0;margin-bottom:10px}div#p>svg>foreignObject>section blockquote{margin:0}div#p>svg>foreignObject>section ol,div#p>svg>foreignObject>section ul{padding-left:0;margin-top:0;margin-bottom:0}div#p>svg>foreignObject>section ol ol,div#p>svg>foreignObject>section ul ol{list-style-type:lower-roman}div#p>svg>foreignObject>section ol ol ol,div#p>svg>foreignObject>section ol ul ol,div#p>svg>foreignObject>section ul ol ol,div#p>svg>foreignObject>section ul ul ol{list-style-type:lower-alpha}div#p>svg>foreignObject>section dd{margin-left:0}div#p>svg>foreignObject>section code,div#p>svg>foreignObject>section pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}div#p>svg>foreignObject>section pre{margin-top:0;margin-bottom:0}div#p>svg>foreignObject>section input::-webkit-inner-spin-button,div#p>svg>foreignObject>section input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;appearance:none}div#p>svg>foreignObject>section :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}div#p>svg>foreignObject>section .border{border:1px solid #e1e4e8!important}div#p>svg>foreignObject>section .border-0{border:0!important}div#p>svg>foreignObject>section .border-bottom{border-bottom:1px solid #e1e4e8!important}div#p>svg>foreignObject>section .rounded-1{border-radius:3px!important}div#p>svg>foreignObject>section .bg-white{background-color:#fff!important}div#p>svg>foreignObject>section .bg-gray-light{background-color:#fafbfc!important}div#p>svg>foreignObject>section .text-gray-light{color:#6a737d!important}div#p>svg>foreignObject>section .pl-3,div#p>svg>foreignObject>section .px-3{padding-left:16px!important}div#p>svg>foreignObject>section .px-3{padding-right:16px!important}div#p>svg>foreignObject>section .f6{font-size:12px!important}div#p>svg>foreignObject>section div#p>svg>foreignObject>section section.f6{--marpit-root-font-size:12px!important}div#p>svg>foreignObject>section .lh-condensed{line-height:1.25!important}div#p>svg>foreignObject>section .text-bold{font-weight:600!important}div#p>svg>foreignObject>section .pl-c{color:#6a737d}div#p>svg>foreignObject>section .pl-c1,div#p>svg>foreignObject>section .pl-s .pl-v{color:#005cc5}div#p>svg>foreignObject>section .pl-e,div#p>svg>foreignObject>section .pl-en{color:#6f42c1}div#p>svg>foreignObject>section .pl-s .pl-s1,div#p>svg>foreignObject>section .pl-smi{color:#24292e}div#p>svg>foreignObject>section .pl-ent{color:#22863a}div#p>svg>foreignObject>section .pl-k{color:#d73a49}div#p>svg>foreignObject>section .pl-pds,div#p>svg>foreignObject>section .pl-s,div#p>svg>foreignObject>section .pl-s .pl-pse .pl-s1,div#p>svg>foreignObject>section .pl-sr,div#p>svg>foreignObject>section .pl-sr .pl-cce,div#p>svg>foreignObject>section .pl-sr .pl-sra,div#p>svg>foreignObject>section .pl-sr .pl-sre{color:#032f62}div#p>svg>foreignObject>section .pl-smw,div#p>svg>foreignObject>section .pl-v{color:#e36209}div#p>svg>foreignObject>section .pl-bu{color:#b31d28}div#p>svg>foreignObject>section .pl-ii{color:#fafbfc;background-color:#b31d28}div#p>svg>foreignObject>section .pl-c2{color:#fafbfc;background-color:#d73a49}div#p>svg>foreignObject>section .pl-c2:before{content:"^M"}div#p>svg>foreignObject>section .pl-sr .pl-cce{font-weight:700;color:#22863a}div#p>svg>foreignObject>section .pl-ml{color:#735c0f}div#p>svg>foreignObject>section .pl-mh,div#p>svg>foreignObject>section .pl-mh .pl-en,div#p>svg>foreignObject>section .pl-ms{font-weight:700;color:#005cc5}div#p>svg>foreignObject>section .pl-mi{font-style:italic;color:#24292e}div#p>svg>foreignObject>section .pl-mb{font-weight:700;color:#24292e}div#p>svg>foreignObject>section .pl-md{color:#b31d28;background-color:#ffeef0}div#p>svg>foreignObject>section .pl-mi1{color:#22863a;background-color:#f0fff4}div#p>svg>foreignObject>section .pl-mc{color:#e36209;background-color:#ffebda}div#p>svg>foreignObject>section .pl-mi2{color:#f6f8fa;background-color:#005cc5}div#p>svg>foreignObject>section .pl-mdr{font-weight:700;color:#6f42c1}div#p>svg>foreignObject>section .pl-ba{color:#586069}div#p>svg>foreignObject>section .pl-sg{color:#959da5}div#p>svg>foreignObject>section .pl-corl{text-decoration:underline;color:#032f62}div#p>svg>foreignObject>section .mb-0{margin-bottom:0!important}div#p>svg>foreignObject>section .my-2{margin-bottom:8px!important;margin-top:8px!important}div#p>svg>foreignObject>section .pl-0{padding-left:0!important}div#p>svg>foreignObject>section .py-0{padding-top:0!important;padding-bottom:0!important}div#p>svg>foreignObject>section .pl-1{padding-left:4px!important}div#p>svg>foreignObject>section .pl-2{padding-left:8px!important}div#p>svg>foreignObject>section .py-2{padding-top:8px!important;padding-bottom:8px!important}div#p>svg>foreignObject>section .pl-3{padding-left:16px!important}div#p>svg>foreignObject>section .pl-4{padding-left:24px!important}div#p>svg>foreignObject>section .pl-5{padding-left:32px!important}div#p>svg>foreignObject>section .pl-6{padding-left:40px!important}div#p>svg>foreignObject>section .pl-7{padding-left:48px!important}div#p>svg>foreignObject>section .pl-8{padding-left:64px!important}div#p>svg>foreignObject>section .pl-9{padding-left:80px!important}div#p>svg>foreignObject>section .pl-10{padding-left:96px!important}div#p>svg>foreignObject>section .pl-11{padding-left:112px!important}div#p>svg>foreignObject>section .pl-12{padding-left:128px!important}div#p>svg>foreignObject>section hr{border-bottom-color:#eee}div#p>svg>foreignObject>section kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}div#p>svg>foreignObject>section:after,div#p>svg>foreignObject>section:before{display:table
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
11 /* content:""; */}div#p>svg>foreignObject>section:after{clear:both}div#p>svg>foreignObject>section>:first-child{margin-top:0!important}div#p>svg>foreignObject>section>:last-child{margin-bottom:0!important}div#p>svg>foreignObject>section a:not([href]){color:inherit;text-decoration:none}div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section details,div#p>svg>foreignObject>section dl,div#p>svg>foreignObject>section ol,div#p>svg>foreignObject>section p,div#p>svg>foreignObject>section pre,div#p>svg>foreignObject>section table,div#p>svg>foreignObject>section ul{margin-top:0;margin-bottom:16px}div#p>svg>foreignObject>section hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}div#p>svg>foreignObject>section blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}div#p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#p>svg>foreignObject>section blockquote>:last-child{margin-bottom:0}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2,div#p>svg>foreignObject>section h3,div#p>svg>foreignObject>section h4,div#p>svg>foreignObject>section h5,div#p>svg>foreignObject>section h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}div#p>svg>foreignObject>section h1{font-size:2em}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}div#p>svg>foreignObject>section h2{font-size:1.5em}div#p>svg>foreignObject>section h3{font-size:1.25em}div#p>svg>foreignObject>section h4{font-size:1em}div#p>svg>foreignObject>section h5{font-size:.875em}div#p>svg>foreignObject>section h6{font-size:.85em;color:#6a737d}div#p>svg>foreignObject>section ol,div#p>svg>foreignObject>section ul{padding-left:2em}div#p>svg>foreignObject>section ol ol,div#p>svg>foreignObject>section ol ul,div#p>svg>foreignObject>section ul ol,div#p>svg>foreignObject>section ul ul{margin-top:0;margin-bottom:0}div#p>svg>foreignObject>section li{word-wrap:break-all}div#p>svg>foreignObject>section li>p{margin-top:16px}div#p>svg>foreignObject>section li+li{margin-top:.25em}div#p>svg>foreignObject>section dl{padding:0}div#p>svg>foreignObject>section dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}div#p>svg>foreignObject>section dl dd{padding:0 16px;margin-bottom:16px}div#p>svg>foreignObject>section table{display:block;width:100%;overflow:auto}div#p>svg>foreignObject>section table th{font-weight:600}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{padding:6px 13px;border:1px solid #dfe2e5}div#p>svg>foreignObject>section table tr{background-color:#fff;border-top:1px solid #c6cbd1}div#p>svg>foreignObject>section table tr:nth-child(2n){background-color:#f6f8fa}div#p>svg>foreignObject>section img{max-width:100%;box-sizing:initial;background-color:#fff}div#p>svg>foreignObject>section img[align=right]{padding-left:20px}div#p>svg>foreignObject>section img[align=left]{padding-right:20px}div#p>svg>foreignObject>section code{padding:.2em .4em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}div#p>svg>foreignObject>section pre{word-wrap:normal}div#p>svg>foreignObject>section pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}div#p>svg>foreignObject>section .highlight{margin-bottom:16px}div#p>svg>foreignObject>section .highlight pre{margin-bottom:0;word-break:normal}div#p>svg>foreignObject>section pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}div#p>svg>foreignObject>section pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:initial;border:0}div#p>svg>foreignObject>section .commit-tease-sha{display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:90%;color:#444d56}div#p>svg>foreignObject>section div#p>svg>foreignObject>section section.commit-tease-sha{--marpit-root-font-size:90%}div#p>svg>foreignObject>section .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}div#p>svg>foreignObject>section .blob-wrapper{overflow-x:auto;overflow-y:hidden}div#p>svg>foreignObject>section .blob-wrapper-embedded{max-height:240px;overflow-y:auto}div#p>svg>foreignObject>section .blob-num{width:1%;min-width:50px;padding-right:10px;padding-left:10px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;line-height:20px;color:rgba(27,31,35,.3);text-align:right;white-space:nowrap;vertical-align:top;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div#p>svg>foreignObject>section div#p>svg>foreignObject>section section.blob-num{--marpit-root-font-size:12px}div#p>svg>foreignObject>section .blob-num:hover{color:rgba(27,31,35,.6)}div#p>svg>foreignObject>section .blob-num:before{content:attr(data-line-number)}div#p>svg>foreignObject>section .blob-code{position:relative;padding-right:10px;padding-left:10px;line-height:20px;vertical-align:top}div#p>svg>foreignObject>section .blob-code-inner{overflow:visible;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;color:#24292e;word-wrap:normal;white-space:pre}div#p>svg>foreignObject>section div#p>svg>foreignObject>section section.blob-code-inner{--marpit-root-font-size:12px}div#p>svg>foreignObject>section .pl-token.active,div#p>svg>foreignObject>section .pl-token:hover{cursor:pointer;background:#ffea7f}div#p>svg>foreignObject>section .tab-size[data-tab-size="1"]{-moz-tab-size:1;-o-tab-size:1;tab-size:1}div#p>svg>foreignObject>section .tab-size[data-tab-size="2"]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}div#p>svg>foreignObject>section .tab-size[data-tab-size="3"]{-moz-tab-size:3;-o-tab-size:3;tab-size:3}div#p>svg>foreignObject>section .tab-size[data-tab-size="4"]{-moz-tab-size:4;-o-tab-size:4;tab-size:4}div#p>svg>foreignObject>section .tab-size[data-tab-size="5"]{-moz-tab-size:5;-o-tab-size:5;tab-size:5}div#p>svg>foreignObject>section .tab-size[data-tab-size="6"]{-moz-tab-size:6;-o-tab-size:6;tab-size:6}div#p>svg>foreignObject>section .tab-size[data-tab-size="7"]{-moz-tab-size:7;-o-tab-size:7;tab-size:7}div#p>svg>foreignObject>section .tab-size[data-tab-size="8"]{-moz-tab-size:8;-o-tab-size:8;tab-size:8}div#p>svg>foreignObject>section .tab-size[data-tab-size="9"]{-moz-tab-size:9;-o-tab-size:9;tab-size:9}div#p>svg>foreignObject>section .tab-size[data-tab-size="10"]{-moz-tab-size:10;-o-tab-size:10;tab-size:10}div#p>svg>foreignObject>section .tab-size[data-tab-size="11"]{-moz-tab-size:11;-o-tab-size:11;tab-size:11}div#p>svg>foreignObject>section .tab-size[data-tab-size="12"]{-moz-tab-size:12;-o-tab-size:12;tab-size:12}div#p>svg>foreignObject>section .task-list-item{list-style-type:none}div#p>svg>foreignObject>section .task-list-item+.task-list-item{margin-top:3px}div#p>svg>foreignObject>section .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}div#p>svg>foreignObject>section .hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto}div#p>svg>foreignObject>section .hljs-comment,div#p>svg>foreignObject>section .hljs-meta{color:#969896}div#p>svg>foreignObject>section .hljs-emphasis,div#p>svg>foreignObject>section .hljs-quote,div#p>svg>foreignObject>section .hljs-strong,div#p>svg>foreignObject>section .hljs-template-variable,div#p>svg>foreignObject>section .hljs-variable{color:#df5000}div#p>svg>foreignObject>section .hljs-keyword,div#p>svg>foreignObject>section .hljs-selector-tag,div#p>svg>foreignObject>section .hljs-type{color:#d73a49}div#p>svg>foreignObject>section .hljs-attribute,div#p>svg>foreignObject>section .hljs-bullet,div#p>svg>foreignObject>section .hljs-literal,div#p>svg>foreignObject>section .hljs-symbol{color:#0086b3}div#p>svg>foreignObject>section .hljs-name,div#p>svg>foreignObject>section .hljs-section{color:#63a35c}div#p>svg>foreignObject>section .hljs-tag{color:#333}div#p>svg>foreignObject>section .hljs-attr,div#p>svg>foreignObject>section .hljs-selector-attr,div#p>svg>foreignObject>section .hljs-selector-class,div#p>svg>foreignObject>section .hljs-selector-id,div#p>svg>foreignObject>section .hljs-selector-pseudo,div#p>svg>foreignObject>section .hljs-title{color:#6f42c1}div#p>svg>foreignObject>section .hljs-addition{color:#55a532;background-color:#eaffea}div#p>svg>foreignObject>section .hljs-deletion{color:#bd2c00;background-color:#ffecec}div#p>svg>foreignObject>section .hljs-link{text-decoration:underline}div#p>svg>foreignObject>section .hljs-number{color:#005cc5}div#p>svg>foreignObject>section .hljs-string{color:#032f62}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{max-height:563px}div#p>svg>foreignObject>section h1{color:#246;font-size:1.6em}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2{border-bottom:none}div#p>svg>foreignObject>section h2{font-size:1.3em}div#p>svg>foreignObject>section h3{font-size:1.1em}div#p>svg>foreignObject>section h4{font-size:1.05em}div#p>svg>foreignObject>section h5{font-size:1em}div#p>svg>foreignObject>section h6{font-size:.9em}div#p>svg>foreignObject>section h1 strong,div#p>svg>foreignObject>section h2 strong,div#p>svg>foreignObject>section h3 strong,div#p>svg>foreignObject>section h4 strong,div#p>svg>foreignObject>section h5 strong,div#p>svg>foreignObject>section h6 strong{font-weight:inherit;color:#48c}div#p>svg>foreignObject>section hr{height:0;padding-top:.25em}div#p>svg>foreignObject>section pre{border:1px solid #999;line-height:1.15;overflow:visible}div#p>svg>foreignObject>section pre code svg[data-marp-fitting=svg]{max-height:529px}div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{margin:0;position:absolute;left:30px;color:hsla(0,0%,40%,.75);font-size:18px}div#p>svg>foreignObject>section header{top:21px}div#p>svg>foreignObject>section footer{bottom:21px}div#p>svg>foreignObject>section{align-items:stretch;background:#fff;display:flex;flex-direction:column;flex-wrap:nowrap;font-size:29px;height:720px;justify-content:center;padding:78.5px;width:1280px}div#p>svg>foreignObject>section{--marpit-root-font-size:29px}div#p>svg>foreignObject>section>:last-child,div#p>svg>foreignObject>section[data-footer]>:nth-last-child(2){margin-bottom:0}div#p>svg>foreignObject>section>:first-child,div#p>svg>foreignObject>section>header:first-child+*{margin-top:0}div#p>svg>foreignObject>section:after{position:absolute;padding:0;right:30px;bottom:21px;font-size:24px;color:#777}div#p>svg>foreignObject>section:after{--marpit-root-font-size:24px}div#p>svg>foreignObject>section.invert{background-color:#222;color:#e6eaf0}div#p>svg>foreignObject>section.invert:after{color:#999}div#p>svg>foreignObject>section.invert img{background-color:transparent}div#p>svg>foreignObject>section.invert a{color:#50b3ff}div#p>svg>foreignObject>section.invert h1{color:#a3c5e7}div#p>svg>foreignObject>section.invert h2,div#p>svg>foreignObject>section.invert h3,div#p>svg>foreignObject>section.invert h4,div#p>svg>foreignObject>section.invert h5{color:#ebeff5}div#p>svg>foreignObject>section.invert blockquote,div#p>svg>foreignObject>section.invert h6{border-color:#3d3f43;color:#939699}div#p>svg>foreignObject>section.invert h1 strong,div#p>svg>foreignObject>section.invert h2 strong,div#p>svg>foreignObject>section.invert h3 strong,div#p>svg>foreignObject>section.invert h4 strong,div#p>svg>foreignObject>section.invert h5 strong,div#p>svg>foreignObject>section.invert h6 strong{color:#7bf}div#p>svg>foreignObject>section.invert hr{background-color:#3d3f43}div#p>svg>foreignObject>section.invert footer,div#p>svg>foreignObject>section.invert header{color:hsla(0,0%,60%,.75)}div#p>svg>foreignObject>section.invert code,div#p>svg>foreignObject>section.invert kbd{background-color:#111}div#p>svg>foreignObject>section.invert kbd{border-color:#666;box-shadow:inset 0 -1px 0 #555;color:#e6eaf0}div#p>svg>foreignObject>section.invert table tr{background-color:#12181d;border-color:#60657b}div#p>svg>foreignObject>section.invert table tr:nth-child(2n){background-color:#1b2024}div#p>svg>foreignObject>section.invert table td,div#p>svg>foreignObject>section.invert table th{border-color:#5b5e61}div#p>svg>foreignObject>section.invert pre{background-color:#0a0e12;border-color:#777}div#p>svg>foreignObject>section.invert pre code{background-color:transparent}div#p>svg>foreignObject>section[data-color] h1,div#p>svg>foreignObject>section[data-color] h2,div#p>svg>foreignObject>section[data-color] h3,div#p>svg>foreignObject>section[data-color] h4,div#p>svg>foreignObject>section[data-color] h5,div#p>svg>foreignObject>section[data-color] h6{color:currentColor}div#p>svg>foreignObject>section{background-color:#FFFFFF;font-size:28px}div#p>svg>foreignObject>section{--marpit-root-font-size:28px}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button><button data-bespoke-marp-osc="presenter" tabindex="-1" title="Open presenter view (p)">Open presenter view</button></div><div id="p"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="1" data-paginate="true" data-theme="default" data-style="section {
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
12 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
13 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
14 }
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
15 " data-marpit-pagination="1" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
16 ;">
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 <h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content> 情報工学科演習用のコンテナ技術を用いた新規サービスの設計・実装</span></foreignObject></svg></h1>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 <ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 <li>宮平 賢
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 <ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 <li>琉球大学工学部工学科知能情報コース</li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 </li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 <li>河野 真治
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 <ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 <li>琉球大学工学部</li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 </li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 </section>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
31 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-paginate="true" data-theme="default" data-style="section {
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
32 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
33 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
34 }
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
35 " data-marpit-pagination="2" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
36 ;">
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 <h1>研究目的</h1>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 <ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 <li>情報技術の普及に伴い情報系の学生が課題や演習を行う学習環境が必要である</li>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
40 <li>学習環境として VM や コンテナがあるが, 使用には高性能 PC が必要となる
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 <ul>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
42 <li>並列処理で GPU の使用など</li>
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 </li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 <li>近年ではクラウドサービスが普及しているが, 制限があったり有料だったりする</li>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
46 <li>オンプレミス環境で学生が利用できる学習環境を提供したい</li>
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 </section>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
49 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-paginate="true" data-theme="default" data-style="section {
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
50 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
51 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
52 }
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
53 " data-marpit-pagination="3" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
54 ;">
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 <h1>本コースで利用しているサービス</h1>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 <p>本コースでは, 学生が課題や演習などで利用できる VM の貸出を行うサービスがある。</p>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 <ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 <li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 <p>Akatsuki</p>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 <ul>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
61 <li>Web コンソールから VM の作成などができる</li>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
62 <li>利用には申請が必要</li>
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 </li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 <li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 <p>ie-virsh</p>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 <ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 <li>virsh をラップし, CLI で操作できる</li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 <li>手元の PC で作成した VM を移行できる</li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 </li>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 </ul>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 </section>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
74 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
75 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
76 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
77 }
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
78 " data-marpit-pagination="4" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
79 ;">
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 <h1>本コースで利用しているサービス</h1>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
81 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
82 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
83 <p>デフォルトのスペック</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
84 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
85 <li>CPU 1コア</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
86 <li>メモリ 1GB</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
87 <li>ディスク 10GB</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
88 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
89 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
90 <li>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
91 <p>GPU の共有に対応していない</p>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
92 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
93 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
94 <p>PCI パススルーが必要である</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
95 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
96 <li>VM 1つに 1台の GPU が必要となる</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
97 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
98 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
99 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
100 <p>そこで新たにコンテナ技術を用いて学生の学習環境を提供するサービスの実装を行った。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
101 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
102 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
103 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
104 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
105 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
106 " data-marpit-pagination="5" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
107 ;">
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
108 <h1>新規サービスの設計</h1>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
109 <p>コンテナ貸出を行うため, コンテナ仮想化を利用できる Docker と Kubernetes, Singularity を利用する。</p>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
110 <ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
111 <li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
112 <p>Docker</p>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
113 <ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
114 <li>OS レベルの仮想化技術を利用して, ソフトウェアをコンテナと呼ばれるパッケージで提供する。</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
115 </ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
116 </li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
117 <li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
118 <p>Kubernetes</p>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
119 <ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
120 <li>アプリケーションのデプロイ, スケーリング, 及び管理を用意にするためのコンテナを動的管理するコンテナオーケストレーションである。</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
121 </ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
122 </li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
123 <li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
124 <p>Singularity</p>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
125 <ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
126 <li>HCP クラスタ上で複雑なアプリケーションを実行するために開発されたコンテナプラットフォームである。</li>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
127 <li>マルチユーザ環境で利用できる</li>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
128 </ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
129 </li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
130 </ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
131 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
132 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-paginate="true" data-theme="default" data-style="section {
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
133 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
134 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
135 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
136 " data-marpit-pagination="6" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
137 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
138 <h1>新規サービスの設計</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
139 <p>コンテナで学習環境を提供するにあたって以下の用件が必要となる。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
140 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
141 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
142 <p>他のユーザのコンテナを削除や操作ができない</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
143 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
144 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
145 <p>コンテナで使用するイメージを自由に作成できる</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
146 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
147 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
148 <p>学科サーバに搭載される GPU を利用できる</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
149 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
150 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
151 <p>ファイル共有</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
152 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
153 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
154 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
155 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
156 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
157 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
158 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
159 " data-marpit-pagination="7" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
160 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
161 <h1>新規サービスの設計</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
162 <p>他のユーザのコンテナを削除や操作ができなくするために, Web コンソールを用意する。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
163 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
164 <li>学生は学科アカウントでログインする</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
165 <li>作成したコンテナとアカウントを紐付ける</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
166 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
167 <p><img src="images/conlist.png" alt="" /></p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
168 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
169 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-paginate="true" data-theme="default" data-style="section {
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
170 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
171 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
172 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
173 " data-marpit-pagination="8" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
174 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
175 <h1>新規サービスの設計</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
176 <p>イメージの作成には, 学科で使用している GitLab の CI/CD 機能を利用する。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
177 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
178 <li>Web コンソールで CI トークンを設定する</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
179 <li>学科の GitLab の CI で Dockerfile をビルドする</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
180 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
181 <p><img src="images/gitlab.png" alt="" /></p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
182 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
183 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-paginate="true" data-theme="default" data-style="section {
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
184 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
185 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
186 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
187 " data-marpit-pagination="9" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
188 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
189 <h1>新規サービスの設計</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
190 <p>GPU を利用するために, NVIDIA Container Toolkit を導入する。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
191 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
192 <li>NVIDIA Container Toolkit である nvidia-docker を利用する</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
193 <li>CUDA のバージョンを指定できる</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
194 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
195 <pre><code class="language-yaml"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-string">FROM</span> <span class="hljs-string">nvidia/cuda:10.0-base</span>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
196 </span></span></foreignObject></svg></code></pre>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
197 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
198 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-paginate="true" data-theme="default" data-style="section {
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
199 background-color: #FFFFFF;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
200 font-size: 28px;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
201 }
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
202 " data-marpit-pagination="10" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
203 ;">
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
204 <h1>新規サービスの設計</h1>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
205 <p>ファイル共有のとして, Singularity を利用する。</p>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
206 <ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
207 <li>$HOME, /tmp, /proc, /sys, /dev がコンテナにマウントされる</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
208 <li><code>--nv</code> で GPU を利用することも可能となる</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
209 </ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
210 </section>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
211 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-paginate="true" data-theme="default" data-style="section {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
212 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
213 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
214 }
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
215 " data-marpit-pagination="11" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
216 ;">
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
217 <h1>新規サービスの実装</h1>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
218 <p>コンテナ貸出を行うサービスとして以下を実装した。</p>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
219 <ul>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
220 <li>Web コンソール</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
221 <li>Docker の操作</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
222 <li>Kubernetes の操作</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
223 <li>Singularity イメージの提供</li>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
224 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
225 </section>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
226 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-paginate="true" data-theme="default" data-style="section {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
227 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
228 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
229 }
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
230 " data-marpit-pagination="12" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
231 ;">
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
232 <h1>新規サービスの実装</h1>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
233 <p>Web コンソールとして以下の機能を実装した。</p>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
234 <ul>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
235 <li>本コースの教員や学生が利用できるように LDAP 認証</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
236 <li>コンテナやイメージの管理を行う DB</li>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
237 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
238 </section>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
239 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-paginate="true" data-theme="default" data-style="section {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
240 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
241 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
242 }
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
243 " data-marpit-pagination="13" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
244 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
245 <h1>新規サービスの実装</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
246 <p>Docker の操作には Docker Engine SDKs を使用し, コンテナやイメージの操作に必要な機能を抜き出し実装した。実装した機能は以下である。</p>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
247 <ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
248 <li>コンテナの作成</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
249 <li>コンテナの削除</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
250 <li>コンテナへデータのコピー</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
251 <li>コンテナでコマンドの実行</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
252 <li>イメージの削除</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
253 <li>イメージの一覧取得</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
254 </ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
255 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
256 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
257 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
258 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
259 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
260 " data-marpit-pagination="14" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
261 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
262 <h1>新規サービスの実装</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
263 <p>GPU を利用する場合, コンテナに割り当てるリソースを宣言する。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
264 <pre><code class="language-go"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>resource = container.Resources{
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
265 DeviceRequests: []container.DeviceRequest{
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
266 {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
267 Driver: <span class="hljs-string">&quot;&quot;</span>,
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
268 Count: <span class="hljs-number">-1</span>,
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
269 DeviceIDs: []<span class="hljs-keyword">string</span>{},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
270 Capabilities: [][]<span class="hljs-keyword">string</span>{
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
271 {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
272 <span class="hljs-string">&quot;gpu&quot;</span>,
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
273 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
274 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
275 Options: <span class="hljs-keyword">map</span>[<span class="hljs-keyword">string</span>]<span class="hljs-keyword">string</span>{},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
276 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
277 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
278 }
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
279 </span></span></foreignObject></svg></code></pre>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
280 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
281 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-paginate="true" data-theme="default" data-style="section {
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
282 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
283 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
284 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
285 " data-marpit-pagination="15" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
286 ;">
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
287 <h1>新規サービスの実装</h1>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
288 <p>Kubernetes の操作には Kubernetes クラスターと対話するライブラリである client-go を使用し, 必要な機能を抜き出し実装した。</p>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
289 <ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
290 <li>コンテナの作成</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
291 <li>コンテナの削除</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
292 <li>Kubernetes API のアクセス制御</li>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
293 </ul>
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
294 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
295 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
296 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
297 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
298 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
299 " data-marpit-pagination="16" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
300 ;">
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
301 <h1>新規サービスの実装</h1>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
302 <p>学生ごとの Namespace を作成する。また Role を以下のように定義することで, 学生が手元の PC から自身の Namespace のリソースを操作することができる。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
303 <pre><code class="language-go"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>role := &amp;unstructured.Unstructured{
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
304 Object: <span class="hljs-keyword">map</span>[<span class="hljs-keyword">string</span>]<span class="hljs-keyword">interface</span>{}{
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
305 <span class="hljs-string">&quot;apiVersion&quot;</span>: <span class="hljs-string">&quot;rbac.authorization.k8s.io/v1&quot;</span>,
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
306 <span class="hljs-string">&quot;kind&quot;</span>: <span class="hljs-string">&quot;Role&quot;</span>,
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
307 <span class="hljs-string">&quot;metadata&quot;</span>: <span class="hljs-keyword">map</span>[<span class="hljs-keyword">string</span>]<span class="hljs-keyword">interface</span>{}{
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
308 <span class="hljs-string">&quot;name&quot;</span>: namespace + <span class="hljs-string">&quot;-role&quot;</span>,
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
309 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
310 <span class="hljs-string">&quot;rules&quot;</span>: []<span class="hljs-keyword">map</span>[<span class="hljs-keyword">string</span>]<span class="hljs-keyword">interface</span>{}{
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
311 {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
312 <span class="hljs-string">&quot;apiGroups&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;*&quot;</span>},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
313 <span class="hljs-string">&quot;resources&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;pods&quot;</span>, <span class="hljs-string">&quot;pods/log&quot;</span>, <span class="hljs-string">&quot;deployments&quot;</span>, <span class="hljs-string">&quot;services&quot;</span>, <span class="hljs-string">&quot;ingresses&quot;</span>},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
314 <span class="hljs-string">&quot;verbs&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;get&quot;</span>, <span class="hljs-string">&quot;list&quot;</span>, <span class="hljs-string">&quot;watch&quot;</span>},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
315 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
316 {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
317 <span class="hljs-string">&quot;apiGroups&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;&quot;</span>},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
318 <span class="hljs-string">&quot;resources&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;pods/exec&quot;</span>},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
319 <span class="hljs-string">&quot;verbs&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;create&quot;</span>},
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
320 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
321 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
322 },
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
323 }
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
324 </span></span></foreignObject></svg></code></pre>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
325 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
326 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
327 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
328 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
329 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
330 " data-marpit-pagination="17" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
331 ;">
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
332 <h1>新規サービスの実装</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
333 <p>Singularity はマルチユーザに対応しているため, CLI から操作できるようにする。</p>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
334 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
335 <li>学生は ssh でサーバへ接続し利用する</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
336 <li>イメージのビルドには sudo 権限が必要となる
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
337 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
338 <li>Web コンソールからイメージをダウンロード</li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
339 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
340 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
341 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
342 <p><img src="images/singularity.png" alt="w:450 h:300" style="width:450px;height:300px;" /></p>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
343 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
344 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-paginate="true" data-theme="default" data-style="section {
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
345 background-color: #FFFFFF;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
346 font-size: 28px;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
347 }
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
348 " data-marpit-pagination="18" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
349 ;">
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
350 <h1>サービスの使用例</h1>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
351 <p>Web コンソールからコンテナを作成する例である。</p>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
352 <p><img src="images/create2.png" alt="w:1000 H:700" style="width:1000px;" /></p>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
353 </section>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
354 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
355 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
356 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
357 }
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
358 " data-marpit-pagination="19" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
359 ;">
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
360 <h1>サービスの使用例</h1>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
361 <p>コンテナ作成時に GPU を使用するにチェックを入れることで, コンテナから GPU を利用することができる。</p>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
362 <p><img src="images/ope.png" alt="w:850 h:530" style="width:850px;height:530px;" /></p>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
363 </section>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
364 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-theme="default" data-style="section {
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
365 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
366 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
367 }
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
368 " data-marpit-pagination="20" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
369 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
370 <h1>サービスの使用例</h1>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
371 <p>Kubernetes で作成したコンテナには, 手元の PC からコンテナの操作を行うことができる。</p>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
372 <p><img src="images/kube.png" alt="" /></p>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
373 <pre><code class="language-shell"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-meta">&gt;</span><span class="bash">&gt;&gt; kube get pods </span>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
374 NAME READY STATUS RESTARTS AGE
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
375 e175733-web1-7b88fb4b6b-sdnnb 1/1 Running 0 104s
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
376 e175733-web2-6775767cc8-4rmt9 1/1 Running 0 92s
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
377 </span></span></foreignObject></svg></code></pre>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
378 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
379 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-theme="default" data-style="section {
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
380 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
381 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
382 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
383 " data-marpit-pagination="21" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
384 ;">
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
385 <h1>比較</h1>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
386 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
387 <li>本コースで利用している VM 貸出サービス
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
388 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
389 <li>コンテナに使用する Docker イメージで構築されたアプリケーションに限定される</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
390 <li>Docker イメージを作成しなければいけないため, Docker について学習する必要がある</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
391 <li>他のユーザにイメージを共有することで同じ環境を利用することができる</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
392 </ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
393 </li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
394 </ul>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
395 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
396 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
397 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
398 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
399 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
400 " data-marpit-pagination="22" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
401 ;">
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
402 <h1>比較</h1>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
403 <p>本コースでは VM 貸出サービス以外にコンテナを利用できるサービスもある。</p>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
404 <ul>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
405 <li>ie-docker
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
406 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
407 <li>Docker をラップしたツールであり, CLI から利用できる</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
408 <li>ユーザの UID 及び GID 情報を取得することで, 他のユーザのコンテナを操作させない</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
409 </ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
410 </li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
411 <li>digdog
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
412 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
413 <li>Kubernetes を利用したコンテナ貸出サービスである</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
414 </ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
415 </li>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
416 </ul>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
417 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
418 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
419 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
420 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
421 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
422 " data-marpit-pagination="23" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
423 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
424 <h1>比較</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
425 <ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
426 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
427 <p>ie-docker</p>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
428 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
429 <li>Docker Hub に登録されているイメージ, または作成したイメージを利用することができる</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
430 <li>管理者の負担が少なくなる</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
431 </ul>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
432 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
433 <li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
434 <p>digdog</p>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
435 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
436 <li>Docker Hub に登録されているイメージを利用できる</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
437 <li>Docker にも対応している</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
438 </ul>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
439 </li>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
440 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
441 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
442 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-paginate="true" data-theme="default" data-style="section {
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
443 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
444 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
445 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
446 " data-marpit-pagination="24" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
447 ;">
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
448 <h1>比較</h1>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
449 <ul>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
450 <li>クラウドサービス
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
451 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
452 <li>オンプレミス環境のため利用の制限がない</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
453 <li>物理サーバなどのメンテナンスや, サービスの導入にあたって環境構築が必要である</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
454 </ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
455 </li>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
456 </ul>
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
457 </section>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
458 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-paginate="true" data-theme="default" data-style="section {
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
459 background-color: #FFFFFF;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
460 font-size: 28px;
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
461 }
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
462 " data-marpit-pagination="25" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
463 ;">
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
464 <h1>改善点 1/2</h1>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
465 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
466 <li>データの永続化
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
467 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
468 <li>Singularity でデータの永続化はできるが, Docker や Kubernetes のコンテナでは永続化ができない</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
469 <li>学生のディレクトリに保存するなどの設定が必要</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
470 </ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
471 </li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
472 <li>イメージの管理
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
473 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
474 <li>Docker イメージ, Singularity イメージで容量を圧迫する可能性がある</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
475 <li>使用されていないイメージを削除するなどの対策が必要</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
476 <li>Docker イメージのセキュリティ対策を考える必要</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
477 </ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
478 </li>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
479 </ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
480 </section>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
481 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-paginate="true" data-theme="default" data-style="section {
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
482 background-color: #FFFFFF;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
483 font-size: 28px;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
484 }
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
485 " data-marpit-pagination="26" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
486 ;">
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
487 <h1>改善点 2/2</h1>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
488 <ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
489 <li>ネットワーク
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
490 <ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
491 <li>コンテナのサービスにアクセスには, ブレードサーバの IP とポート番号となる</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
492 <li>コンテナごとに IP アドレスを設定する</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
493 <li>Docker コンテナでは
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
494 <ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
495 <li>pipework</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
496 </ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
497 </li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
498 <li>Kubernetes のコンテナでは
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
499 <ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
500 <li>MetalLB</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
501 </ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
502 </li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
503 </ul>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
504 </li>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
505 <li>リソースの占有
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
506 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
507 <li>ユーザごとにリソースの制限</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
508 <li>GPU などをジョブスケジューラで管理する</li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
509 </ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
510 </li>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
511 </ul>
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
512 </section>
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
513 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-paginate="true" data-theme="default" data-style="section {
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
514 background-color: #FFFFFF;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
515 font-size: 28px;
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
516 }
28
1c5b6f768ae2 update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
517 " data-marpit-pagination="27" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
27
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
518 ;">
a69ae277bd6a update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
519 <h1>まとめ</h1>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
520 <ul>
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
521 <li>本コースで利用する新規サービスの設計と実装, また本コースで利用しているサービスとの比較を行った</li>
30
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
522 <li>コンテナ技術を用いて学生が利用できる学習環境を提供するサービスの実装をすることができた</li>
17d034fa49be update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
523 <li>今後テスト環境にデプロイを行い, ユーザや管理者からのフィードバックをもらい, 改善や実証実験を目指す</li>
29
01e61c619a1b update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
524 </ul>
26
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
525 </section>
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
526 <script>!function(){"use strict";let t=void 0;function e(e){let r=!1;Array.from(document.querySelectorAll("svg[data-marpit-svg]"),i=>{const{children:o,clientHeight:n,clientWidth:a,viewBox:s}=i;i.style.transform||(i.style.transform="translateZ(0)");const l=e||window!==window.parent&&window.parent.marpitSVGPolyfillZoomFactor||i.currentScale||1;t!==l&&(t=l,r=l);const c=s.baseVal.width/l,d=s.baseVal.height/l,p=Math.min(n/d,a/c);for(let t=0;t<o.length;t+=1){const{style:e}=o[t].firstChild;e.position||(e.position="fixed"),e.transformOrigin||(e.transformOrigin="0 0"),e.transform=`scale(${p}) translateZ(0)`}}),!1!==r&&Object.defineProperty(window,"marpitSVGPolyfillZoomFactor",{configurable:!0,value:r})}const r=(t,e,r)=>{if(t.getAttribute(e)!==r)return t.setAttribute(e,r),!0};function i(t=!0){for(const t of"Apple Computer, Inc."===navigator.vendor?[e]:[])t();Array.from(document.querySelectorAll('svg[data-marp-fitting="svg"]'),t=>{var e;const i=t.firstChild,o=i.firstChild,{scrollWidth:n,scrollHeight:a}=o;let s,l=1;if(t.hasAttribute("data-marp-fitting-code")&&(s=null===(e=t.parentElement)||void 0===e?void 0:e.parentElement),t.hasAttribute("data-marp-fitting-math")&&(s=t.parentElement),s){const t=getComputedStyle(s),e=Math.ceil(s.clientWidth-parseFloat(t.paddingLeft||"0")-parseFloat(t.paddingRight||"0"));e&&(l=e)}const c=Math.max(n,l),d=Math.max(a,1),p=`0 0 ${c} ${d}`;r(i,"width",""+c),r(i,"height",""+d),r(t,"preserveAspectRatio",getComputedStyle(t).getPropertyValue("--preserve-aspect-ratio")||"xMinYMin meet"),r(t,"viewBox",p)&&t.classList.toggle("__reflow__")}),t&&window.requestAnimationFrame(()=>i(t))}!function(){if("undefined"==typeof window)throw new Error("Marp Core's browser script is valid only in browser context.");window.marpCoreBrowserScript?console.warn("Marp Core's browser script has already executed."):(Object.defineProperty(window,"marpCoreBrowserScript",{value:!0}),i())}()}();
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
527 </script></foreignObject></svg></div><script>!function(){"use strict";var e=function(e,t){var n,r=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),a=[].filter.call("string"==typeof e.slides?r.querySelectorAll(e.slides):e.slides||r.children,(function(e){return"SCRIPT"!==e.nodeName})),s={},i=function(e,t){return(t=t||{}).index=a.indexOf(e),t.slide=e,t},o=function(e,t){s[e]=(s[e]||[]).filter((function(e){return e!==t}))},l=function(e,t){return(s[e]||[]).reduce((function(e,n){return e&&!1!==n(t)}),!0)},c=function(e,t){a[e]&&(n&&l("deactivate",i(n,t)),n=a[e],l("activate",i(n,t)))},d=function(e,t){var r=a.indexOf(n)+e;l(e>0?"next":"prev",i(n,t))&&c(r,t)},u={off:o,on:function(e,t){return(s[e]||(s[e]=[])).push(t),o.bind(null,e,t)},fire:l,slide:function(e,t){if(!arguments.length)return a.indexOf(n);l("slide",i(a[e],t))&&c(e,t)},next:d.bind(null,1),prev:d.bind(null,-1),parent:r,slides:a,destroy:function(e){l("destroy",i(n,e)),s={}}};return(t||[]).forEach((function(e){e(u)})),n||c(0),u};function t(e){e.parent.classList.add("bespoke-marp-parent"),e.slides.forEach(e=>e.classList.add("bespoke-marp-slide")),e.on("activate",t=>{const n=t.slide,r=!n.classList.contains("bespoke-marp-active");e.slides.forEach(e=>{e.classList.remove("bespoke-marp-active"),e.setAttribute("aria-hidden","true")}),n.classList.add("bespoke-marp-active"),n.removeAttribute("aria-hidden"),r&&(n.classList.add("bespoke-marp-active-ready"),document.body.clientHeight,n.classList.remove("bespoke-marp-active-ready"))})}function n(e){let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map(e=>[null,...e.querySelectorAll("[data-marpit-fragment]")])});const r=r=>void 0!==e.fragments[t][n+r],a=(r,a)=>{t=r,n=a,e.fragments.forEach((e,t)=>{e.forEach((e,n)=>{if(null==e)return;const s=t<r||t===r&&n<=a;e.setAttribute("data-bespoke-marp-fragment",s?"active":"inactive"),t===r&&n===a?e.setAttribute("data-bespoke-marp-current-fragment","current"):e.removeAttribute("data-bespoke-marp-current-fragment")})}),e.fragmentIndex=a;const s={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:a};e.fire("fragment",s)};e.on("next",({fragment:s=!0})=>{if(s){if(r(1))return a(t,n+1),!1;const s=t+1;e.fragments[s]&&a(s,0)}else{const r=e.fragments[t].length;if(n+1<r)return a(t,r-1),!1;const s=e.fragments[t+1];s&&a(t+1,s.length-1)}}),e.on("prev",({fragment:s=!0})=>{if(r(-1)&&s)return a(t,n-1),!1;const i=t-1;e.fragments[i]&&a(i,e.fragments[i].length-1)}),e.on("slide",({index:t,fragment:n})=>{let r=0;if(void 0!==n){const a=e.fragments[t];if(a){const{length:e}=a;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}a(t,r)}),a(0,0)}var r=function(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}((function(e){
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
528 /*!
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
529 * screenfull
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
530 * v5.0.2 - 2020-02-13
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
531 * (c) Sindre Sorhus; MIT License
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
532 */
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
533 !function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,a=n.length,s={};r<a;r++)if((e=n[r])&&e[1]in t){for(r=0;r<e.length;r++)s[n[0][r]]=e[r];return s}return!1}(),a={change:r.fullscreenchange,error:r.fullscreenerror},s={request:function(e){return new Promise(function(n,a){var s=function(){this.off("change",s),n()}.bind(this);this.on("change",s);var i=(e=e||t.documentElement)[r.requestFullscreen]();i instanceof Promise&&i.then(s).catch(a)}.bind(this))},exit:function(){return new Promise(function(e,n){if(this.isFullscreen){var a=function(){this.off("change",a),e()}.bind(this);this.on("change",a);var s=t[r.exitFullscreen]();s instanceof Promise&&s.then(a).catch(n)}else e()}.bind(this))},toggle:function(e){return this.isFullscreen?this.exit():this.request(e)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var r=a[e];r&&t.addEventListener(r,n,!1)},off:function(e,n){var r=a[e];r&&t.removeEventListener(r,n,!1)},raw:r};r?(Object.defineProperties(s,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),n?e.exports=s:window.screenfull=s):n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()}));function a(e){e.fullscreen=()=>{r.isEnabled&&r.toggle(document.body)},document.addEventListener("keydown",t=>{70!==t.which&&122!==t.which||t.altKey||t.ctrlKey||t.metaKey||!r.isEnabled||(e.fullscreen(),t.preventDefault())})}function s(e=2e3){return t=>{let n;function r(){n&&clearTimeout(n),n=setTimeout(()=>{t.parent.classList.add("bespoke-marp-inactive"),t.fire("marp-inactive")},e),t.parent.classList.contains("bespoke-marp-inactive")&&(t.parent.classList.remove("bespoke-marp-inactive"),t.fire("marp-active"))}document.addEventListener("mousedown",r),document.addEventListener("mousemove",r),document.addEventListener("touchend",r),setTimeout(r,0)}}const i=["AUDIO","BUTTON","INPUT","SELECT","TEXTAREA","VIDEO"];function o(e){e.parent.addEventListener("keydown",e=>{if(!e.target)return;const t=e.target;(i.includes(t.nodeName)||"true"===t.contentEditable)&&e.stopPropagation()})}function l(e){window.addEventListener("load",()=>{for(const t of e.slides){const e=t.querySelector("[data-marp-fitting]")?"":"hideable";t.setAttribute("data-bespoke-marp-load",e)}})}var c;function d({interval:e=200}={}){return t=>{document.addEventListener("keydown",e=>{if(32===e.which&&e.shiftKey)t.prev();else if(33===e.which||37===e.which||38===e.which)t.prev({fragment:!e.shiftKey});else if(32!==e.which||e.shiftKey)if(34===e.which||39===e.which||40===e.which)t.next({fragment:!e.shiftKey});else if(35===e.which)t.slide(t.slides.length-1,{fragment:-1});else{if(36!==e.which)return;t.slide(0)}else t.next();e.preventDefault()});let n,r,a=0;t.parent.addEventListener("wheel",s=>{let i=!1;const o=(e,t)=>{e&&(i=i||function(e,t){return function(e,t){const n=t===c.X?"Width":"Height";return e["client"+n]<e["scroll"+n]}(e,t)&&function(e,t){const{overflow:n}=e,r=e["overflow"+t];return"auto"===n||"scroll"===n||"auto"===r||"scroll"===r}(getComputedStyle(e),t)}(e,t)),(null==e?void 0:e.parentElement)&&o(e.parentElement,t)};if(0!==s.deltaX&&o(s.target,c.X),0!==s.deltaY&&o(s.target,c.Y),i)return;s.preventDefault(),r&&clearTimeout(r),r=setTimeout(()=>{n=0},e);const l=Date.now()-a<e,d=Math.sqrt(Math.pow(s.deltaX,2)+Math.pow(s.deltaY,2)),u=d<=n;if(n=d,l||u)return;let f;(s.deltaX>0||s.deltaY>0)&&(f="next"),(s.deltaX<0||s.deltaY<0)&&(f="prev"),f&&(t[f](),a=Date.now())})}}!function(e){e.X="X",e.Y="Y"}(c||(c={}));const u=(...e)=>history.replaceState(...e);var f;!function(e){e.Normal="",e.Presenter="presenter",e.Next="next"}(f||(f={}));const m=(e,{protocol:t,host:n,pathname:r,hash:a}=location)=>{const s=e.toString();return`${t}//${n}${r}${s?"?":""}${s}${a}`},p=()=>{switch(document.body.getAttribute("data-bespoke-view")){case f.Normal:return f.Normal;case f.Presenter:return f.Presenter;case f.Next:return f.Next;default:throw new Error("View mode is not assigned.")}},h=e=>new URLSearchParams(location.search).get(e),g=(e,t={})=>{const n=Object.assign({location:location,setter:u},t),r=new URLSearchParams(n.location.search);for(const t of Object.keys(e)){const n=e[t];"string"==typeof n?r.set(t,n):r.delete(t)}try{n.setter(null,document.title,m(r,n.location))}catch(e){console.error(e)}},v={available:(()=>{try{return localStorage.setItem("bespoke-marp","bespoke-marp"),localStorage.removeItem("bespoke-marp"),!0}catch(e){return console.warn("Warning: Using localStorage is restricted in the current host so some features may not work."),!1}})(),get:e=>{try{return localStorage.getItem(e)}catch(e){return null}},set:(e,t)=>{try{return localStorage.setItem(e,t),!0}catch(e){return!1}},remove:e=>{try{return localStorage.removeItem(e),!0}catch(e){return!1}}};function b(e=".bespoke-marp-osc"){const t=document.querySelector(e);if(!t)return()=>{};const n=(e,n)=>{t.querySelectorAll(`[data-bespoke-marp-osc=${JSON.stringify(e)}]`).forEach(n)};return r.isEnabled||n("fullscreen",e=>e.style.display="none"),v.available||n("presenter",e=>{e.disabled=!0,e.title="Presenter view is disabled due to restricted localStorage."}),e=>{t.addEventListener("click",t=>{if(t.target instanceof HTMLElement){const{bespokeMarpOsc:n}=t.target.dataset;switch(n&&t.target.blur(),n){case"next":e.next({fragment:!t.shiftKey});break;case"prev":e.prev({fragment:!t.shiftKey});break;case"fullscreen":"function"==typeof e.fullscreen&&r.isEnabled&&e.fullscreen();break;case"presenter":e.openPresenterView()}}}),e.parent.appendChild(t),e.on("activate",({index:t})=>{n("page",n=>n.textContent=`Page ${t+1} of ${e.slides.length}`)}),e.on("fragment",({index:t,fragments:r,fragmentIndex:a})=>{n("prev",e=>e.disabled=0===t&&0===a),n("next",n=>n.disabled=t===e.slides.length-1&&a===r.length-1)}),e.on("marp-active",()=>t.removeAttribute("aria-hidden")),e.on("marp-inactive",()=>t.setAttribute("aria-hidden","true")),r.isEnabled&&r.onchange(()=>n("fullscreen",e=>e.classList.toggle("exit",r.isEnabled&&r.isFullscreen)))}}function w(){const e=Math.max(Math.floor(.85*window.innerWidth),640),t=Math.max(Math.floor(.85*window.innerHeight),360);return window.open(this.presenterUrl,"bespoke-marp-presenter-"+this.syncKey,`width=${e},height=${t},menubar=no,toolbar=no`)}function y(){const e=new URLSearchParams(location.search);return e.set("view","presenter"),e.set("sync",this.syncKey),m(e)}var x=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];let E=e=>String(e).replace(/[&<>"']/g,e=>`&${k[e]};`),k={"&":"amp","<":"lt",">":"gt",'"':"quot","'":"apos"},L="dangerouslySetInnerHTML",S={className:"class",htmlFor:"for"},I={};function P(e,t){let n=[],r="";t=t||{};for(let e=arguments.length;e-- >2;)n.push(arguments[e]);if("function"==typeof e)return t.children=n.reverse(),e(t);if(e){if(r+="<"+e,t)for(let e in t)!1!==t[e]&&null!=t[e]&&e!==L&&(r+=` ${S[e]?S[e]:E(e)}="${E(t[e])}"`);r+=">"}if(-1===x.indexOf(e)){if(t[L])r+=t[L].__html;else for(;n.length;){let e=n.pop();if(e)if(e.pop)for(let t=e.length;t--;)n.push(e[t]);else r+=!0===I[e]?e:E(e)}r+=e?`</${e}>`:""}return I[r]=!0,r}const M=({children:e})=>P(null,null,...e),N="bespoke-marp-presenter-container",F="bespoke-marp-presenter-next",O="bespoke-marp-presenter-next-container",q="bespoke-marp-presenter-note-container",C="bespoke-marp-presenter-info-container",T="bespoke-marp-presenter-info-page",A="bespoke-marp-presenter-info-page-text",K="bespoke-marp-presenter-info-page-prev",$="bespoke-marp-presenter-info-page-next",j="bespoke-marp-presenter-info-time",D="bespoke-marp-presenter-info-timer";function R(e){const{title:t}=document;document.title="[Presenter view]"+(t?" - "+t:"");const n={},r=e=>(n[e]=n[e]||document.querySelector("."+e),n[e]);document.body.appendChild((e=>{const t=document.createElement("div");return t.className=N,t.appendChild(e),t.insertAdjacentHTML("beforeend",P(M,null,P("div",{class:O},P("iframe",{class:F,src:"?view=next"})),P("div",{class:q}),P("div",{class:C},P("div",{class:T},P("button",{class:K,tabindex:"-1",title:"Previous"},"Previous"),P("span",{class:A}),P("button",{class:$,tabindex:"-1",title:"Next"},"Next")),P("time",{class:j,title:"Current time"}),P("div",{class:D})))),t})(e.parent)),(e=>{r(O).addEventListener("click",()=>e.next());const t=r(F),n=(a=t,(e,t)=>{var n;return null===(n=a.contentWindow)||void 0===n?void 0:n.postMessage(`navigate:${e},${t}`,"null"===window.origin?"*":window.origin)});var a;t.addEventListener("load",()=>{r(O).classList.add("active"),n(e.slide(),e.fragmentIndex),e.on("fragment",({index:e,fragmentIndex:t})=>n(e,t))});const s=document.querySelectorAll(".bespoke-marp-note");s.forEach(e=>{e.addEventListener("keydown",e=>e.stopPropagation()),r(q).appendChild(e)}),e.on("activate",()=>s.forEach(t=>t.classList.toggle("active",t.dataset.index==e.slide()))),e.on("activate",({index:t})=>{r(A).textContent=`${t+1} / ${e.slides.length}`});const i=r(K),o=r($);i.addEventListener("click",t=>{i.blur(),e.prev({fragment:!t.shiftKey})}),o.addEventListener("click",t=>{o.blur(),e.next({fragment:!t.shiftKey})}),e.on("fragment",({index:t,fragments:n,fragmentIndex:r})=>{i.disabled=0===t&&0===r,o.disabled=t===e.slides.length-1&&r===n.length-1});const l=()=>r(j).textContent=(new Date).toLocaleTimeString();l(),setInterval(l,250)})(e)}function U(e){const t=p();return t===f.Next&&e.appendChild(document.createElement("span")),e=>{t===f.Normal&&function(e){if(!(e=>e.syncKey&&"string"==typeof e.syncKey)(e))throw new Error("The current instance of Bespoke.js is invalid for Marp bespoke presenter plugin.");Object.defineProperties(e,{openPresenterView:{enumerable:!0,value:w},presenterUrl:{enumerable:!0,get:y}}),v.available&&document.addEventListener("keydown",t=>{80!==t.which||t.altKey||t.ctrlKey||t.metaKey||(t.preventDefault(),e.openPresenterView())})}(e),t===f.Presenter&&R(e),t===f.Next&&function(e){const t=t=>{if(t.origin!==window.origin)return;const[n,r]=t.data.split(":");if("navigate"===n){const[t,n]=r.split(",");let a=Number.parseInt(t,10),s=Number.parseInt(n,10)+1;s>=e.fragments[a].length&&(a+=1,s=0),e.slide(a,{fragment:s})}};window.addEventListener("message",t),e.on("destroy",()=>window.removeEventListener("message",t))}(e)}}function V(e){e.on("activate",t=>{document.querySelectorAll(".bespoke-progress-bar").forEach(n=>{n.style.flexBasis=100*t.index/(e.slides.length-1)+"%"})})}const X=e=>{const t=Number.parseInt(e,10);return Number.isNaN(t)?null:t};function Y(e={}){const t=Object.assign({history:!0},e);return e=>{let n=!0;const r=e=>{const t=n;try{return n=!0,e()}finally{n=t}},a=(t={fragment:!0})=>{((t,n)=>{const{fragments:r,slides:a}=e,s=Math.max(0,Math.min(t,a.length-1)),i=Math.max(0,Math.min(n||0,r[s].length-1));s===e.slide()&&i===e.fragmentIndex||e.slide(s,{fragment:i})})((X(location.hash.slice(1))||1)-1,t.fragment?X(h("f")||""):null)};e.on("fragment",({index:e,fragmentIndex:r})=>{n||g({f:0===r||r.toString()},{location:Object.assign(Object.assign({},location),{hash:"#"+(e+1)}),setter:(...e)=>t.history?history.pushState(...e):history.replaceState(...e)})}),setTimeout(()=>{a(),window.addEventListener("hashchange",()=>r(()=>{a({fragment:!1}),g({f:void 0})})),window.addEventListener("popstate",()=>{n||r(()=>a())}),n=!1},0)}}function B(e={}){const t=e.key||((e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;){let r=63&n[e];t+=r<36?r.toString(36):r<62?(r-26).toString(36).toUpperCase():r<63?"_":"-"}return t})(),n="bespoke-marp-sync-"+t,r=()=>{const e=v.get(n);return e?JSON.parse(e):Object.create(null)},a=e=>{const t=r(),a=Object.assign(Object.assign({},t),e(t));return v.set(n,JSON.stringify(a)),a};return a(e=>({reference:(e.reference||0)+1})),e=>{Object.defineProperty(e,"syncKey",{value:t,enumerable:!0});let s=!0;setTimeout(()=>{e.on("fragment",e=>{s&&a(()=>({index:e.index,fragmentIndex:e.fragmentIndex}))})},0),window.addEventListener("storage",t=>{if(t.key===n&&t.oldValue&&t.newValue){const n=JSON.parse(t.oldValue),r=JSON.parse(t.newValue);if(n.index!==r.index||n.fragmentIndex!==r.fragmentIndex)try{s=!1,e.slide(r.index,{fragment:r.fragmentIndex})}finally{s=!0}}}),e.on("destroy",()=>{const{reference:e}=r();void 0===e||e<=1?v.remove(n):a(()=>({reference:e-1}))})}}function z({slope:e=Math.tan(-35*Math.PI/180),swipeThreshold:t=30}={}){return n=>{let r;const a=n.parent,s=e=>{const t=a.getBoundingClientRect();return{x:e.pageX-(t.left+t.right)/2,y:e.pageY-(t.top+t.bottom)/2}};a.addEventListener("touchstart",e=>{r=1===e.touches.length?s(e.touches[0]):void 0},{passive:!0}),a.addEventListener("touchmove",e=>{if(r)if(1===e.touches.length){e.preventDefault();const t=s(e.touches[0]),n=t.x-r.x,a=t.y-r.y;r.delta=Math.sqrt(Math.pow(Math.abs(n),2)+Math.pow(Math.abs(a),2)),r.radian=Math.atan2(n,a)}else r=void 0}),a.addEventListener("touchend",a=>{if(r){if(r.delta&&r.delta>=t&&r.radian){let t=r.radian-e;t=(t+Math.PI)%(2*Math.PI)-Math.PI,n[t<0?"next":"prev"](),a.stopPropagation()}r=void 0}},{passive:!0})}}
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
534 /*! *****************************************************************************
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
535 Copyright (c) Microsoft Corporation.
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
536
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
537 Permission to use, copy, modify, and/or distribute this software for any
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
538 purpose with or without fee is hereby granted.
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
539
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
540 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
541 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
542 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
543 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
544 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
545 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
546 PERFORMANCE OF THIS SOFTWARE.
7ed1d2e0749f update slide
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
547 ***************************************************************************** */function H(e,t,n,r){return new(n||(n=Promise))((function(a,s){function i(e){try{l(r.next(e))}catch(e){s(e)}}function o(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,o)}l((r=r.apply(e,t||[])).next())}))}let W=void 0;const J=()=>(void 0===W&&(W="wakeLock"in navigator&&navigator.wakeLock),W),_=()=>H(void 0,void 0,void 0,(function*(){const e=J();if(e)try{const t=yield e.request("screen");return t.addEventListener("release",()=>{console.debug("[Marp CLI] Wake Lock was released")}),console.debug("[Marp CLI] Wake Lock is active"),t}catch(e){console.warn(e)}return null}));function G(){return H(this,void 0,void 0,(function*(){if(!J())return;let e;const t=()=>{e&&"visible"===document.visibilityState&&_()};return document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t),e=yield _(),e}))}const Q=[f.Normal,f.Presenter,f.Next];!function(r=document.getElementById("p")){document.body.setAttribute("data-bespoke-view",(()=>{switch(h("view")){case"next":return f.Next;case"presenter":return f.Presenter;default:return f.Normal}})());const i=(e=>{const t=h(e);return g({[e]:void 0}),t})("sync")||void 0,c=!1,u=!0,m=e(r,((...e)=>{const t=Q.findIndex(e=>p()===e);if(t<0)throw new Error("Invalid view");return e.map(([e,n])=>e[t]&&n).filter(e=>e)})([[u,u,c],B({key:i})],[[u,u,u],U(r)],[[u,u,c],o],[[u,u,u],t],[[u,c,c],s()],[[u,u,u],l],[[u,u,u],Y({history:!1})],[[u,u,c],d()],[[u,u,c],a],[[u,c,c],V],[[u,u,c],z()],[[u,c,c],b()],[[u,u,u],n],[[u,u,c],G]));window.addEventListener("beforeunload",()=>g({sync:m.syncKey})),window.addEventListener("unload",()=>m.destroy())}()}();</script></body></html>