- Sponsor
-
Notifications
You must be signed in to change notification settings - Fork 111
Commit
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,245 @@ | ||
/* Code modified from the blender website | ||
* https://www.blender.org/wp-content/themes/bthree/assets/js/get_os.js?x82196 | ||
*/ | ||
|
||
let options = { | ||
windows64: "x86_64-pc-windows", | ||
windows32: "i686-pc-windows", | ||
windowsArm: "aarch64-pc-windows", | ||
|
||
mac64: "x86_64-apple", | ||
mac32: "i686-apple", | ||
macSilicon: "aarch64-apple", | ||
|
||
linux64: "x86_64-unknown-linux", | ||
linux32: "i686-unknown-linux", | ||
linuxArm: "aarch64-unknown-linux", | ||
|
||
// ios: "ios", | ||
// android: "linux-android", | ||
// freebsd: "freebsd", | ||
}; | ||
|
||
function isAppleSilicon() { | ||
try { | ||
var glcontext = document.createElement("canvas").getContext("webgl"); | ||
var debugrenderer = glcontext | ||
? glcontext.getExtension("WEBGL_debug_renderer_info") | ||
: null; | ||
var renderername = | ||
(debugrenderer && | ||
glcontext.getParameter(debugrenderer.UNMASKED_RENDERER_WEBGL)) || | ||
""; | ||
if (renderername.match(/Apple M/) || renderername.match(/Apple GPU/)) { | ||
return true; | ||
} | ||
|
||
return false; | ||
} catch (e) {} | ||
} | ||
|
||
function getOS() { | ||
var OS = options.windows64.default; | ||
var userAgent = navigator.userAgent; | ||
var platform = navigator.platform; | ||
|
||
if (navigator.appVersion.includes("Win")) { | ||
if ( | ||
!userAgent.includes("Windows NT 5.0") && | ||
!userAgent.includes("Windows NT 5.1") && | ||
(userAgent.indexOf("Win64") > -1 || | ||
platform == "Win64" || | ||
userAgent.indexOf("x86_64") > -1 || | ||
userAgent.indexOf("x86_64") > -1 || | ||
userAgent.indexOf("amd64") > -1 || | ||
userAgent.indexOf("AMD64") > -1 || | ||
userAgent.indexOf("WOW64") > -1) | ||
) { | ||
OS = options.windows64; | ||
} else { | ||
if ( | ||
window.external && | ||
window.external.getHostEnvironmentValue && | ||
window.external | ||
.getHostEnvironmentValue("os-architecture") | ||
.includes("ARM64") | ||
) { | ||
OS = options.windowsArm; | ||
} else { | ||
try { | ||
var canvas = document.createElement("canvas"); | ||
var gl = canvas.getContext("webgl"); | ||
|
||
var debugInfo = gl.getExtension("WEBGL_debug_renderer_info"); | ||
var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); | ||
if (renderer.includes("Qualcomm")) OS = options.windowsArm; | ||
} catch (e) {} | ||
} | ||
} | ||
} | ||
|
||
//MacOS, MacOS X, macOS | ||
if (navigator.appVersion.includes("Mac")) { | ||
if ( | ||
navigator.userAgent.includes("OS X 10.5") || | ||
navigator.userAgent.includes("OS X 10.6") | ||
) { | ||
OS = options.mac32; | ||
} else { | ||
OS = options.mac64; | ||
|
||
const isSilicon = isAppleSilicon(); | ||
if (isSilicon) { | ||
OS = options.macSilicon; | ||
} | ||
} | ||
} | ||
|
||
// linux | ||
if (platform.includes("Linux")) { | ||
OS = options.linux64; | ||
// FIXME: Can we find out whether linux 32-bit or ARM are used? | ||
} | ||
|
||
// if ( | ||
// userAgent.includes("iPad") || | ||
// userAgent.includes("iPhone") || | ||
// userAgent.includes("iPod") | ||
// ) { | ||
// OS = options.ios; | ||
// } | ||
// if (platform.toLocaleLowerCase().includes("freebsd")) { | ||
// OS = options.freebsd; | ||
// } | ||
|
||
return OS; | ||
} | ||
|
||
let os = getOS(); | ||
window.os = os; | ||
|
||
// Unhide and hydrate selector with events | ||
const archSelect = document.querySelector(".arch-select"); | ||
if (archSelect) { | ||
archSelect.classList.remove("hidden"); | ||
const selector = document.querySelector("#install-arch-select"); | ||
if (selector) { | ||
selector.addEventListener("change", onArchChange); | ||
} | ||
} | ||
|
||
// Hydrate tab buttons with events | ||
Array.from(document.querySelectorAll(".install-tab[data-id]")).forEach((tab) => { | ||
tab.addEventListener("click", onTabClick); | ||
}); | ||
|
||
function onArchChange(evt) { | ||
// Get target | ||
const target = evt.currentTarget.value; | ||
// Find corresponding installer lists | ||
const newContentEl = document.querySelector(`.arch[data-arch=${target}]`); | ||
const oldContentEl = document.querySelector(`.arch[data-arch]:not(.hidden)`); | ||
// Hide old content element (if applicable) | ||
if (oldContentEl) { | ||
oldContentEl.classList.add("hidden"); | ||
} | ||
// Show new content element | ||
newContentEl.classList.remove("hidden"); | ||
// Show the first tab's content if nothing was selected before | ||
if (newContentEl.querySelectorAll(".install-tab.selected").length === 0) { | ||
const firstContentChild = newContentEl.querySelector(".install-content:first-of-type"); | ||
const firstTabChild = newContentEl.querySelector(".install-tab:first-of-type"); | ||
firstContentChild.classList.remove("hidden"); | ||
if (firstTabChild) { | ||
firstTabChild.classList.add("selected"); | ||
} | ||
} | ||
// Hide "no OS detected" message | ||
const noDetectEl = document.querySelector(".no-autodetect"); | ||
noDetectEl.classList.add("hidden"); | ||
// Hide Mac hint | ||
document.querySelector(".mac-switch").classList.add("hidden"); | ||
} | ||
|
||
function onTabClick(evt) { | ||
// Get target and ID | ||
const {triple, id} = evt.currentTarget.dataset; | ||
if (triple) { | ||
// Find corresponding content elements | ||
const newContentEl = document.querySelector(`.install-content[data-id="${String(id)}"][data-triple=${triple}]`); | ||
const oldContentEl = document.querySelector(`.install-content[data-triple=${triple}][data-id]:not(.hidden)`); | ||
// Find old tab to unselect | ||
const oldTabEl = document.querySelector(`.install-tab[data-triple=${triple}].selected`); | ||
// Hide old content element | ||
if (oldContentEl && oldTabEl) { | ||
oldContentEl.classList.add("hidden"); | ||
oldTabEl.classList.remove("selected"); | ||
} | ||
|
||
// Unhide new content element | ||
newContentEl.classList.remove("hidden"); | ||
// Select new tab element | ||
evt.currentTarget.classList.add("selected"); | ||
} | ||
} | ||
|
||
const allPlatforms = Array.from(document.querySelectorAll(`.arch[data-arch]`)); | ||
let hit = allPlatforms.find( | ||
(a) => { | ||
// Show Intel Mac downloads if no M1 Mac downloads are available | ||
if ( | ||
a.attributes["data-arch"].value.includes(options.mac64) && | ||
os.includes(options.macSilicon) && | ||
!allPlatforms.find(p => p.attributes["data-arch"].value.includes(options.macSilicon))) { | ||
// Unhide hint | ||
document.querySelector(".mac-switch").classList.remove("hidden"); | ||
return true; | ||
} | ||
return a.attributes["data-arch"].value.includes(os); | ||
} | ||
); | ||
|
||
if (hit) { | ||
hit.classList.remove("hidden"); | ||
const selectEl = document.querySelector("#install-arch-select"); | ||
selectEl.value = hit.dataset.arch; | ||
const firstContentChild = hit.querySelector(".install-content:first-of-type"); | ||
const firstTabChild = hit.querySelector(".install-tab:first-of-type"); | ||
firstContentChild.classList.remove("hidden"); | ||
if (firstTabChild) { | ||
firstTabChild.classList.add("selected"); | ||
} | ||
} else { | ||
const noDetectEl = document.querySelector(".no-autodetect"); | ||
if (noDetectEl) { | ||
const noDetectElDetails = document.querySelector(".no-autodetect-details"); | ||
if (noDetectElDetails) { | ||
noDetectElDetails.innerHTML = `We detected you're on ${os} but there don't seem to be installers for that. ` | ||
} | ||
noDetectEl.classList.remove("hidden"); | ||
} | ||
} | ||
|
||
let copyButtons = Array.from(document.querySelectorAll("[data-copy]")); | ||
if (copyButtons.length) { | ||
copyButtons.forEach(function (element) { | ||
element.addEventListener("click", () => { | ||
navigator.clipboard.writeText(element.attributes["data-copy"].value); | ||
}); | ||
}); | ||
} | ||
|
||
// Toggle for pre releases | ||
const checkbox = document.getElementById("show-prereleases"); | ||
|
||
if (checkbox) { | ||
checkbox.addEventListener("click", () => { | ||
const all = document.getElementsByClassName("pre-release"); | ||
|
||
if (all) { | ||
for (var item of all) { | ||
item.classList.toggle("hidden"); | ||
} | ||
} | ||
}); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"format_version":"0.6.1","tag":"v0.5.0","formatted_date":"Jan 30 2023 at 11:52 UTC","platforms_with_downloads":[{"target":["aarch64-apple-darwin"],"display_name":"macOS Apple Silicon","installers":[0]},{"target":["x86_64-apple-darwin"],"display_name":"macOS Intel","installers":[0]},{"target":["x86_64-pc-windows-msvc"],"display_name":"Windows x64","installers":[0]},{"target":["x86_64-unknown-linux-gnu"],"display_name":"Linux x64","installers":[0]}],"downloadable_files":[],"release":{"artifacts":{"files":[{"name":"scaphandre-x86_64-pc-windows-msvc.exe","download_url":"https://github.com/hubblo-org/scaphandre/releases/download/v0.5.0/scaphandre-x86_64-pc-windows-msvc.exe","view_path":null,"checksum_file":null},{"name":"scaphandre-x86_64-unknown-linux-gnu","download_url":"https://github.com/hubblo-org/scaphandre/releases/download/v0.5.0/scaphandre-x86_64-unknown-linux-gnu","view_path":null,"checksum_file":null}],"installers":[{"label":"crates.io","description":"","app_name":null,"method":{"type":"Run","file":null,"run_hint":"cargo install scaphandre"}},{"label":"binstall","description":"","app_name":null,"method":{"type":"Run","file":null,"run_hint":"cargo binstall scaphandre"}}],"targets":{"aarch64-apple-darwin":[0],"aarch64-pc-windows-msvc":[0],"aarch64-unknown-linux-gnu":[0],"aarch64-unknown-linux-musl":[0],"i686-apple-darwin":[0],"i686-pc-windows-msvc":[0],"i686-unknown-linux-gnu":[0],"i686-unknown-linux-musl":[0],"x86_64-apple-darwin":[0],"x86_64-pc-windows-msvc":[0],"x86_64-unknown-linux-gnu":[0],"x86_64-unknown-linux-musl":[0]}}},"os_script":"/scaphandre/artifacts.js","has_checksum_files":false} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
<!DOCTYPE html> | ||
<html lang="en" id="oranda" class="light"> | ||
<head> | ||
<title>scaphandre</title> | ||
|
||
<meta property="og:url" content="https://scaphandre.hubblo.org" /> | ||
|
||
|
||
<link rel="icon" href="/scaphandre/favicon.ico" /> | ||
|
||
<meta charset="utf-8" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
|
||
<meta name="description" content="Electric power/energy consumption monitoring agent." /> | ||
<meta property="og:description" content="Electric power/energy consumption monitoring agent." /> | ||
|
||
<meta property="og:type" content="website" /> | ||
<meta property="og:title" content="scaphandre" /> | ||
|
||
|
||
<meta property="og:image:alt" content="Hubblo's twitter/x account" /> | ||
|
||
|
||
<meta name="twitter:creator" content="@HubbloOrg" /> | ||
<meta name="twitter:site" content="@HubbloOrg" /> | ||
|
||
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" /> | ||
<link rel="stylesheet" href="/scaphandre/oranda-v0.6.1.css" /> | ||
|
||
|
||
</head> | ||
<body> | ||
<div class="container"> | ||
<div class="page-body"> | ||
|
||
<div class="repo_banner"> | ||
<a href="https://github.com/hubblo-org/scaphandre"> | ||
<div class="github-icon" aria-hidden="true"></div> | ||
Check out our GitHub! | ||
</a> | ||
</div> | ||
|
||
|
||
<main> | ||
<header> | ||
|
||
<h1 class="title">scaphandre</h1> | ||
|
||
<nav class="nav"> | ||
<ul> | ||
<li><a href="/scaphandre/">Home</a></li> | ||
|
||
|
||
|
||
|
||
<li><a href="/scaphandre/artifacts/">Install</a></li> | ||
|
||
|
||
|
||
<li><a href="/scaphandre/book/">Docs</a></li> | ||
|
||
|
||
|
||
<li><a href="/scaphandre/funding/">Funding</a></li> | ||
|
||
|
||
|
||
<li><a href="/scaphandre/changelog/">Changelog</a></li> | ||
|
||
</ul> | ||
</nav> | ||
|
||
</header> | ||
|
||
|
||
<div> | ||
<div class="package-managers-downloads"> | ||
|
||
|
||
|
||
<div> | ||
<h3>binstall</h3> | ||
<div class="install-code-wrapper"> | ||
<pre style="background-color:#263238;"> | ||
<span style="color:#82aaff;">cargo binstall scaphandre</span></pre> | ||
|
||
<button class="button copy-clipboard-button primary" data-copy="cargo binstall scaphandre"> | ||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg> | ||
</button> | ||
|
||
|
||
</div> | ||
</div> | ||
|
||
|
||
|
||
|
||
<div> | ||
<h3>crates.io</h3> | ||
<div class="install-code-wrapper"> | ||
<pre style="background-color:#263238;"> | ||
<span style="color:#82aaff;">cargo install scaphandre</span></pre> | ||
|
||
<button class="button copy-clipboard-button primary" data-copy="cargo install scaphandre"> | ||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg> | ||
</button> | ||
|
||
|
||
</div> | ||
</div> | ||
|
||
|
||
</div> | ||
<div> | ||
<h3>Downloads</h3> | ||
<table class="artifacts-table"> | ||
<tbody> | ||
<tr> | ||
<th>File</th> | ||
<th>Platform</th> | ||
|
||
</tr> | ||
|
||
</tbody> | ||
</table> | ||
</div> | ||
</div> | ||
|
||
</main> | ||
</div> | ||
|
||
<footer> | ||
|
||
<a href="https://github.com/hubblo-org/scaphandre"><div class="github-icon" aria-hidden="true"></div></a> | ||
|
||
<span> | ||
scaphandre, Apache-2.0 | ||
</span> | ||
</footer> | ||
</div> | ||
|
||
|
||
|
||
|
||
|
||
<script src="/scaphandre/artifacts.js"></script> | ||
|
||
</body> | ||
</html> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
<!DOCTYPE HTML> | ||
<html lang="en" class="sidebar-visible no-js oranda-light"> | ||
<head> | ||
<!-- Book generated using mdBook --> | ||
<meta charset="UTF-8"> | ||
<title>Page not found - Scaphandre documentation</title> | ||
<base href="/docs/"> | ||
|
||
|
||
<!-- Custom HTML head --> | ||
|
||
<meta name="description" content="Extensible and lightweight monitoring agent for energy consumption metrics"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
<meta name="theme-color" content="#ffffff" /> | ||
|
||
<link rel="icon" href="favicon.svg"> | ||
<link rel="shortcut icon" href="favicon.png"> | ||
<link rel="stylesheet" href="css/variables.css"> | ||
<link rel="stylesheet" href="css/general.css"> | ||
<link rel="stylesheet" href="css/chrome.css"> | ||
<link rel="stylesheet" href="css/print.css" media="print"> | ||
|
||
<!-- Fonts --> | ||
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css"> | ||
<link rel="stylesheet" href="fonts/fonts.css"> | ||
|
||
<!-- Highlight.js Stylesheets --> | ||
<link rel="stylesheet" href="highlight.css"> | ||
<link rel="stylesheet" href="tomorrow-night.css"> | ||
<link rel="stylesheet" href="ayu-highlight.css"> | ||
<link rel="stylesheet" href="oranda-highlight.css"> | ||
|
||
<!-- Custom theme stylesheets --> | ||
|
||
</head> | ||
<body> | ||
<div id="body-container"> | ||
<!-- Provide site root to javascript --> | ||
<script> | ||
var path_to_root = ""; | ||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "oranda-light" : "oranda-light"; | ||
</script> | ||
|
||
<!-- Work around some values being stored in localStorage wrapped in quotes --> | ||
<script> | ||
try { | ||
var theme = localStorage.getItem('orandamdbook-theme'); | ||
var sidebar = localStorage.getItem('mdbook-sidebar'); | ||
|
||
if (theme.startsWith('"') && theme.endsWith('"')) { | ||
localStorage.setItem('orandamdbook-theme', theme.slice(1, theme.length - 1)); | ||
} | ||
|
||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) { | ||
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1)); | ||
} | ||
} catch (e) { } | ||
</script> | ||
|
||
<!-- Set the theme before any content is loaded, prevents flash --> | ||
<script> | ||
var theme; | ||
try { theme = localStorage.getItem('orandamdbook-theme'); } catch(e) { } | ||
if (theme === null || theme === undefined) { theme = default_theme; } | ||
var html = document.querySelector('html'); | ||
html.classList.remove('no-js') | ||
html.classList.remove('oranda-light') | ||
html.classList.add(theme); | ||
html.classList.add('js'); | ||
</script> | ||
|
||
<!-- Hide / unhide sidebar before it is displayed --> | ||
<script> | ||
var html = document.querySelector('html'); | ||
var sidebar = 'hidden'; | ||
if (document.body.clientWidth >= 1080) { | ||
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { } | ||
sidebar = sidebar || 'visible'; | ||
} | ||
html.classList.remove('sidebar-visible'); | ||
html.classList.add("sidebar-" + sidebar); | ||
</script> | ||
|
||
<nav id="sidebar" class="sidebar" aria-label="Table of contents"> | ||
<div class="sidebar-scrollbox"> | ||
<ol class="chapter"><li class="chapter-item expanded affix "><a href="index.html">Introduction</a></li><li class="chapter-item expanded affix "><li class="part-title">Tutorials</li><li class="chapter-item expanded "><a href="tutorials/getting_started.html"><strong aria-hidden="true">1.</strong> Getting Started</a></li><li class="chapter-item expanded "><a href="tutorials/installation-linux.html"><strong aria-hidden="true">2.</strong> Installation on GNU/Linux</a></li><li class="chapter-item expanded "><a href="tutorials/installation-windows.html"><strong aria-hidden="true">3.</strong> Installation on Windows</a></li><li class="chapter-item expanded "><a href="tutorials/docker-compose.html"><strong aria-hidden="true">4.</strong> Docker-compose</a></li><li class="chapter-item expanded "><a href="tutorials/compilation-linux.html"><strong aria-hidden="true">5.</strong> Compilation for GNU/Linux</a></li><li class="chapter-item expanded "><a href="tutorials/compilation-windows.html"><strong aria-hidden="true">6.</strong> Compilation for Windows</a></li><li class="chapter-item expanded "><a href="tutorials/kubernetes.html"><strong aria-hidden="true">7.</strong> Power consumption of a Kubernetes cluster with scaphandre, prometheus and grafana</a></li><li class="chapter-item expanded affix "><li class="part-title">How-to guides</li><li class="chapter-item expanded "><a href="how-to_guides/propagate-metrics-hypervisor-to-vm_qemu-kvm.html"><strong aria-hidden="true">8.</strong> Propagate power consumption metrics from hypervisor to virtual machines (Qemu/KVM)</a></li><li class="chapter-item expanded "><a href="how-to_guides/get-process-level-power-in-grafana.html"><strong aria-hidden="true">9.</strong> Get process-level power consumption in my grafana dashboard</a></li><li class="chapter-item expanded "><a href="how-to_guides/install-prometheuspush-only-rhel.html"><strong aria-hidden="true">10.</strong> Install Scaphandre with only Prometheus-push exporter compiled, for Prometheus Push Gateway, on RHEL 8 and 9</a></li><li class="chapter-item expanded affix "><li class="part-title">Explanations</li><li class="chapter-item expanded "><a href="explanations/how-scaph-computes-per-process-power-consumption.html"><strong aria-hidden="true">11.</strong> How scaphandre computes per process power consumption</a></li><li class="chapter-item expanded "><a href="explanations/internal-structure.html"><strong aria-hidden="true">12.</strong> Internal structure</a></li><li class="chapter-item expanded "><a href="explanations/about-containers.html"><strong aria-hidden="true">13.</strong> About containers</a></li><li class="chapter-item expanded "><a href="explanations/rapl-domains.html"><strong aria-hidden="true">14.</strong> About RAPL domains</a></li><li class="chapter-item expanded affix "><li class="part-title">References</li><li class="chapter-item expanded "><a href="references/metrics.html"><strong aria-hidden="true">15.</strong> Metrics available</a></li><li class="chapter-item expanded "><a href="references/exporter-json.html"><strong aria-hidden="true">16.</strong> JSON exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-prometheus.html"><strong aria-hidden="true">17.</strong> Prometheus exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-qemu.html"><strong aria-hidden="true">18.</strong> Qemu exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-riemann.html"><strong aria-hidden="true">19.</strong> Riemann exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-stdout.html"><strong aria-hidden="true">20.</strong> Stdout exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-warp10.html"><strong aria-hidden="true">21.</strong> Warp10 exporter</a></li><li class="chapter-item expanded "><a href="references/sensor-msr_rapl.html"><strong aria-hidden="true">22.</strong> MSR_RAPL sensor</a></li><li class="chapter-item expanded "><a href="references/sensor-powercap_rapl.html"><strong aria-hidden="true">23.</strong> PowercapRAPL sensor</a></li><li class="chapter-item expanded "><a href="references/sensor-msr_rapl.html"><strong aria-hidden="true">24.</strong> MSRRAPL sensor</a></li><li class="chapter-item expanded affix "><a href="why.html">Why this project ?</a></li><li class="chapter-item expanded affix "><a href="compatibility.html">Compatibility</a></li><li class="chapter-item expanded affix "><a href="troubleshooting.html">Troubleshooting</a></li><li class="chapter-item expanded affix "><a href="contributing.html">Contributing guide</a></li><li class="chapter-item expanded affix "><a href="sources.html">External references you may be interested in</a></li></ol> | ||
</div> | ||
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div> | ||
</nav> | ||
|
||
<div id="page-wrapper" class="page-wrapper"> | ||
|
||
<div class="page"> | ||
<div id="menu-bar-hover-placeholder"></div> | ||
<div id="menu-bar" class="menu-bar sticky bordered"> | ||
<div class="left-buttons"> | ||
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar"> | ||
<i class="fa fa-bars"></i> | ||
</button> | ||
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list"> | ||
<i class="fa fa-paint-brush"></i> | ||
</button> | ||
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu"> | ||
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="oranda-light">Oranda Light</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="oranda-dark">Oranda Dark</button></li> | ||
|
||
</ul> | ||
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar"> | ||
<i class="fa fa-search"></i> | ||
</button> | ||
</div> | ||
|
||
<h1 class="menu-title">Scaphandre documentation</h1> | ||
|
||
<div class="right-buttons"> | ||
<a href="print.html" title="Print this book" aria-label="Print this book"> | ||
<i id="print-button" class="fa fa-print"></i> | ||
</a> | ||
|
||
</div> | ||
</div> | ||
|
||
<div id="search-wrapper" class="hidden"> | ||
<form id="searchbar-outer" class="searchbar-outer"> | ||
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header"> | ||
</form> | ||
<div id="searchresults-outer" class="searchresults-outer hidden"> | ||
<div id="searchresults-header" class="searchresults-header"></div> | ||
<ul id="searchresults"> | ||
</ul> | ||
</div> | ||
</div> | ||
|
||
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM --> | ||
<script> | ||
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible'); | ||
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible'); | ||
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) { | ||
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1); | ||
}); | ||
</script> | ||
|
||
<div id="content" class="content"> | ||
<main> | ||
<h1 id="document-not-found-404"><a class="header" href="#document-not-found-404">Document not found (404)</a></h1> | ||
<p>This URL is invalid, sorry. Please use the navigation bar or search to continue.</p> | ||
|
||
</main> | ||
|
||
<nav class="nav-wrapper" aria-label="Page navigation"> | ||
<!-- Mobile navigation buttons --> | ||
|
||
|
||
<div style="clear: both"></div> | ||
</nav> | ||
</div> | ||
</div> | ||
|
||
<nav class="nav-wide-wrapper" aria-label="Page navigation"> | ||
|
||
</nav> | ||
|
||
</div> | ||
|
||
|
||
|
||
<script> | ||
window.playground_line_numbers = true; | ||
</script> | ||
|
||
<script> | ||
window.playground_copyable = true; | ||
</script> | ||
|
||
<script src="ace.js"></script> | ||
<script src="editor.js"></script> | ||
<script src="mode-rust.js"></script> | ||
<script src="theme-dawn.js"></script> | ||
<script src="theme-tomorrow_night.js"></script> | ||
|
||
<script src="elasticlunr.min.js"></script> | ||
<script src="mark.min.js"></script> | ||
<script src="searcher.js"></script> | ||
|
||
<script src="clipboard.min.js"></script> | ||
<script src="highlight.js"></script> | ||
<script src="book.js"></script> | ||
|
||
<!-- Custom JS scripts --> | ||
|
||
|
||
</div> | ||
</body> | ||
</html> |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* | ||
Based off of the Ayu theme | ||
Original by Dempfi (https://github.com/dempfi/ayu) | ||
*/ | ||
|
||
.hljs { | ||
display: block; | ||
overflow-x: auto; | ||
background: #191f26; | ||
color: #e6e1cf; | ||
} | ||
|
||
.hljs-comment, | ||
.hljs-quote { | ||
color: #5c6773; | ||
font-style: italic; | ||
} | ||
|
||
.hljs-variable, | ||
.hljs-template-variable, | ||
.hljs-attribute, | ||
.hljs-attr, | ||
.hljs-regexp, | ||
.hljs-link, | ||
.hljs-selector-id, | ||
.hljs-selector-class { | ||
color: #ff7733; | ||
} | ||
|
||
.hljs-number, | ||
.hljs-meta, | ||
.hljs-builtin-name, | ||
.hljs-literal, | ||
.hljs-type, | ||
.hljs-params { | ||
color: #ffee99; | ||
} | ||
|
||
.hljs-string, | ||
.hljs-bullet { | ||
color: #b8cc52; | ||
} | ||
|
||
.hljs-title, | ||
.hljs-built_in, | ||
.hljs-section { | ||
color: #ffb454; | ||
} | ||
|
||
.hljs-keyword, | ||
.hljs-selector-tag, | ||
.hljs-symbol { | ||
color: #ff7733; | ||
} | ||
|
||
.hljs-name { | ||
color: #36a3d9; | ||
} | ||
|
||
.hljs-tag { | ||
color: #00568d; | ||
} | ||
|
||
.hljs-emphasis { | ||
font-style: italic; | ||
} | ||
|
||
.hljs-strong { | ||
font-weight: bold; | ||
} | ||
|
||
.hljs-addition { | ||
color: #91b362; | ||
} | ||
|
||
.hljs-deletion { | ||
color: #d96c75; | ||
} |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,251 @@ | ||
/* Base styles and content styles */ | ||
|
||
@import "variables.css"; | ||
|
||
:root { | ||
/* Browser default font-size is 16px, this way 1 rem = 10px */ | ||
font-size: 62.5%; | ||
} | ||
|
||
html { | ||
font-family: var(--main-font); | ||
color: var(--fg); | ||
background-color: var(--bg); | ||
text-size-adjust: none; | ||
-webkit-text-size-adjust: none; | ||
} | ||
|
||
body { | ||
margin: 0; | ||
font-size: 1.6rem; | ||
overflow-x: hidden; | ||
} | ||
|
||
code { | ||
font-family: var(--mono-font) !important; | ||
font-size: var(--code-font-size); | ||
} | ||
|
||
/* make long words/inline code not x overflow */ | ||
main { | ||
overflow-wrap: break-word; | ||
} | ||
|
||
/* make wide tables scroll if they overflow */ | ||
.table-wrapper { | ||
overflow-x: auto; | ||
} | ||
|
||
/* Don't change font size in headers. */ | ||
h1 code, | ||
h2 code, | ||
h3 code, | ||
h4 code, | ||
h5 code, | ||
h6 code { | ||
font-size: unset; | ||
} | ||
|
||
.left { | ||
float: left; | ||
} | ||
.right { | ||
float: right; | ||
} | ||
.boring { | ||
opacity: 0.6; | ||
} | ||
.hide-boring .boring { | ||
display: none; | ||
} | ||
.hidden { | ||
display: none !important; | ||
} | ||
|
||
h2, | ||
h3 { | ||
margin-top: 2.5em; | ||
} | ||
h4, | ||
h5 { | ||
margin-top: 2em; | ||
} | ||
|
||
.header + .header h3, | ||
.header + .header h4, | ||
.header + .header h5 { | ||
margin-top: 1em; | ||
} | ||
|
||
h1:target::before, | ||
h2:target::before, | ||
h3:target::before, | ||
h4:target::before, | ||
h5:target::before, | ||
h6:target::before { | ||
display: inline-block; | ||
content: "»"; | ||
margin-left: -30px; | ||
width: 30px; | ||
} | ||
|
||
/* This is broken on Safari as of version 14, but is fixed | ||
in Safari Technology Preview 117 which I think will be Safari 14.2. | ||
https://bugs.webkit.org/show_bug.cgi?id=218076 | ||
*/ | ||
:target { | ||
scroll-margin-top: calc(var(--menu-bar-height) + 0.5em); | ||
} | ||
|
||
.page { | ||
outline: 0; | ||
padding: 0 var(--page-padding); | ||
margin-top: calc( | ||
0px - var(--menu-bar-height) | ||
); /* Compensate for the #menu-bar-hover-placeholder */ | ||
} | ||
.page-wrapper { | ||
box-sizing: border-box; | ||
} | ||
.js:not(.sidebar-resizing) .page-wrapper { | ||
transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */ | ||
} | ||
|
||
.content { | ||
overflow-y: auto; | ||
min-height: 70vh; | ||
padding: 0 5px 50px 5px; | ||
} | ||
.content main { | ||
margin-left: auto; | ||
margin-right: auto; | ||
max-width: var(--content-max-width); | ||
} | ||
.content p { | ||
line-height: 1.45em; | ||
} | ||
.content ol { | ||
line-height: 1.45em; | ||
} | ||
.content ul { | ||
line-height: 1.45em; | ||
} | ||
.content a { | ||
text-decoration: none; | ||
} | ||
.content a:hover { | ||
text-decoration: underline; | ||
} | ||
.content img, | ||
.content video { | ||
max-width: 100%; | ||
} | ||
.content h1 .header:link, | ||
.content h1 .header:visited { | ||
color: var(--title-fg); | ||
} | ||
h2, | ||
h3, | ||
h4, | ||
h5, | ||
h6, | ||
.content .header:link, | ||
.content .header:visited { | ||
color: var(--subtitle-fg); | ||
} | ||
|
||
.content .header:link, | ||
.content .header:visited:hover { | ||
text-decoration: none; | ||
} | ||
|
||
table { | ||
margin: 0 auto; | ||
border-collapse: collapse; | ||
} | ||
table td { | ||
padding: 3px 20px; | ||
border: 1px var(--table-border-color) solid; | ||
} | ||
table thead { | ||
background: var(--table-header-bg); | ||
} | ||
table thead td { | ||
font-weight: 700; | ||
border: none; | ||
} | ||
table thead th { | ||
padding: 3px 20px; | ||
} | ||
table thead tr { | ||
border: 1px var(--table-header-bg) solid; | ||
} | ||
/* Alternate background colors for rows */ | ||
table tbody tr:nth-child(2n) { | ||
background: var(--table-alternate-bg); | ||
} | ||
|
||
blockquote { | ||
margin: 20px 0; | ||
padding: 0 20px; | ||
color: var(--fg); | ||
background-color: var(--quote-bg); | ||
border-top: 0.1em solid var(--quote-border); | ||
border-bottom: 0.1em solid var(--quote-border); | ||
} | ||
|
||
kbd { | ||
background-color: var(--table-border-color); | ||
border-radius: 4px; | ||
border: solid 1px var(--theme-popup-border); | ||
box-shadow: inset 0 -1px 0 var(--theme-hover); | ||
display: inline-block; | ||
font-size: var(--code-font-size); | ||
font-family: var(--mono-font); | ||
line-height: 10px; | ||
padding: 4px 5px; | ||
vertical-align: middle; | ||
} | ||
|
||
:not(.footnote-definition) + .footnote-definition, | ||
.footnote-definition + :not(.footnote-definition) { | ||
margin-top: 2em; | ||
} | ||
.footnote-definition { | ||
font-size: 0.9em; | ||
margin: 0.5em 0; | ||
} | ||
.footnote-definition p { | ||
display: inline; | ||
} | ||
|
||
.tooltiptext { | ||
position: absolute; | ||
visibility: hidden; | ||
color: #fff; | ||
background-color: #333; | ||
transform: translateX( | ||
-50% | ||
); /* Center by moving tooltip 50% of its width left */ | ||
left: -8px; /* Half of the width of the icon */ | ||
top: -35px; | ||
font-size: 0.8em; | ||
text-align: center; | ||
border-radius: 6px; | ||
padding: 5px 8px; | ||
margin: 5px; | ||
z-index: 1000; | ||
} | ||
.tooltipped .tooltiptext { | ||
visibility: visible; | ||
} | ||
|
||
.chapter li.part-title { | ||
color: var(--sidebar-fg); | ||
margin: 5px 0px; | ||
font-weight: bold; | ||
} | ||
|
||
.result-no-output { | ||
font-style: italic; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
|
||
#sidebar, | ||
#menu-bar, | ||
.nav-chapters, | ||
.mobile-nav-chapters { | ||
display: none; | ||
} | ||
|
||
#page-wrapper.page-wrapper { | ||
transform: none !important; | ||
margin-inline-start: 0px; | ||
overflow-y: initial; | ||
} | ||
|
||
#content { | ||
max-width: none; | ||
margin: 0; | ||
padding: 0; | ||
} | ||
|
||
.page { | ||
overflow-y: initial; | ||
} | ||
|
||
code { | ||
direction: ltr !important; | ||
} | ||
|
||
pre > .buttons { | ||
z-index: 2; | ||
} | ||
|
||
a, a:visited, a:active, a:hover { | ||
color: #4183c4; | ||
text-decoration: none; | ||
} | ||
|
||
h1, h2, h3, h4, h5, h6 { | ||
page-break-inside: avoid; | ||
page-break-after: avoid; | ||
} | ||
|
||
pre, code { | ||
page-break-inside: avoid; | ||
white-space: pre-wrap; | ||
} | ||
|
||
.fa { | ||
display: none !important; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,399 @@ | ||
|
||
/* Globals */ | ||
|
||
:root { | ||
--sidebar-width: 300px; | ||
--page-padding: 15px; | ||
--content-max-width: 750px; | ||
--menu-bar-height: 50px; | ||
|
||
--mono-font: "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace; | ||
--code-font-size: 0.875em /* please adjust the ace font size accordingly in editor.js */ | ||
|
||
/* axomdbook mods to add some more knobs to themes */ | ||
--title-fg: var(--fg); | ||
--subtitle-fg: var(--title-fg); | ||
--main-font: "Open Sans", sans-serif; | ||
} | ||
|
||
/* Themes */ | ||
|
||
.ayu { | ||
--bg: hsl(210, 25%, 8%); | ||
--fg: #c5c5c5; | ||
|
||
--sidebar-bg: #14191f; | ||
--sidebar-fg: #c8c9db; | ||
--sidebar-non-existant: #5c6773; | ||
--sidebar-active: #ffb454; | ||
--sidebar-spacer: #2d334f; | ||
|
||
--scrollbar: var(--sidebar-fg); | ||
|
||
--icons: #737480; | ||
--icons-hover: #b7b9cc; | ||
|
||
--links: #0096cf; | ||
|
||
--inline-code-color: #ffb454; | ||
|
||
--theme-popup-bg: #14191f; | ||
--theme-popup-border: #5c6773; | ||
--theme-hover: #191f26; | ||
|
||
--quote-bg: hsl(226, 15%, 17%); | ||
--quote-border: hsl(226, 15%, 22%); | ||
|
||
--table-border-color: hsl(210, 25%, 13%); | ||
--table-header-bg: hsl(210, 25%, 28%); | ||
--table-alternate-bg: hsl(210, 25%, 11%); | ||
|
||
--searchbar-border-color: #848484; | ||
--searchbar-bg: #424242; | ||
--searchbar-fg: #fff; | ||
--searchbar-shadow-color: #d4c89f; | ||
--searchresults-header-fg: #666; | ||
--searchresults-border-color: #888; | ||
--searchresults-li-bg: #252932; | ||
--search-mark-bg: #e3b171; | ||
} | ||
|
||
.coal { | ||
--bg: hsl(200, 7%, 8%); | ||
--fg: #98a3ad; | ||
|
||
--sidebar-bg: #292c2f; | ||
--sidebar-fg: #a1adb8; | ||
--sidebar-non-existant: #505254; | ||
--sidebar-active: #3473ad; | ||
--sidebar-spacer: #393939; | ||
|
||
--scrollbar: var(--sidebar-fg); | ||
|
||
--icons: #43484d; | ||
--icons-hover: #b3c0cc; | ||
|
||
--links: #2b79a2; | ||
|
||
--inline-code-color: #c5c8c6; | ||
|
||
--theme-popup-bg: #141617; | ||
--theme-popup-border: #43484d; | ||
--theme-hover: #1f2124; | ||
|
||
--quote-bg: hsl(234, 21%, 18%); | ||
--quote-border: hsl(234, 21%, 23%); | ||
|
||
--table-border-color: hsl(200, 7%, 13%); | ||
--table-header-bg: hsl(200, 7%, 28%); | ||
--table-alternate-bg: hsl(200, 7%, 11%); | ||
|
||
--searchbar-border-color: #aaa; | ||
--searchbar-bg: #b7b7b7; | ||
--searchbar-fg: #000; | ||
--searchbar-shadow-color: #aaa; | ||
--searchresults-header-fg: #666; | ||
--searchresults-border-color: #98a3ad; | ||
--searchresults-li-bg: #2b2b2f; | ||
--search-mark-bg: #355c7d; | ||
} | ||
|
||
.light { | ||
--bg: hsl(0, 0%, 100%); | ||
--fg: hsl(0, 0%, 0%); | ||
|
||
--sidebar-bg: #fafafa; | ||
--sidebar-fg: hsl(0, 0%, 0%); | ||
--sidebar-non-existant: #aaaaaa; | ||
--sidebar-active: #1f1fff; | ||
--sidebar-spacer: #f4f4f4; | ||
|
||
--scrollbar: #8F8F8F; | ||
|
||
--icons: #747474; | ||
--icons-hover: #000000; | ||
|
||
--links: #20609f; | ||
|
||
--inline-code-color: #301900; | ||
|
||
--theme-popup-bg: #fafafa; | ||
--theme-popup-border: #cccccc; | ||
--theme-hover: #e6e6e6; | ||
|
||
--quote-bg: hsl(197, 37%, 96%); | ||
--quote-border: hsl(197, 37%, 91%); | ||
|
||
--table-border-color: hsl(0, 0%, 95%); | ||
--table-header-bg: hsl(0, 0%, 80%); | ||
--table-alternate-bg: hsl(0, 0%, 97%); | ||
|
||
--searchbar-border-color: #aaa; | ||
--searchbar-bg: #fafafa; | ||
--searchbar-fg: #000; | ||
--searchbar-shadow-color: #aaa; | ||
--searchresults-header-fg: #666; | ||
--searchresults-border-color: #888; | ||
--searchresults-li-bg: #e4f2fe; | ||
--search-mark-bg: #a2cff5; | ||
} | ||
|
||
.navy { | ||
--bg: hsl(226, 23%, 11%); | ||
--fg: #bcbdd0; | ||
|
||
--sidebar-bg: #282d3f; | ||
--sidebar-fg: #c8c9db; | ||
--sidebar-non-existant: #505274; | ||
--sidebar-active: #2b79a2; | ||
--sidebar-spacer: #2d334f; | ||
|
||
--scrollbar: var(--sidebar-fg); | ||
|
||
--icons: #737480; | ||
--icons-hover: #b7b9cc; | ||
|
||
--links: #2b79a2; | ||
|
||
--inline-code-color: #c5c8c6; | ||
|
||
--theme-popup-bg: #161923; | ||
--theme-popup-border: #737480; | ||
--theme-hover: #282e40; | ||
|
||
--quote-bg: hsl(226, 15%, 17%); | ||
--quote-border: hsl(226, 15%, 22%); | ||
|
||
--table-border-color: hsl(226, 23%, 16%); | ||
--table-header-bg: hsl(226, 23%, 31%); | ||
--table-alternate-bg: hsl(226, 23%, 14%); | ||
|
||
--searchbar-border-color: #aaa; | ||
--searchbar-bg: #aeaec6; | ||
--searchbar-fg: #000; | ||
--searchbar-shadow-color: #aaa; | ||
--searchresults-header-fg: #5f5f71; | ||
--searchresults-border-color: #5c5c68; | ||
--searchresults-li-bg: #242430; | ||
--search-mark-bg: #a2cff5; | ||
} | ||
|
||
.rust { | ||
--bg: hsl(60, 9%, 87%); | ||
--fg: #262625; | ||
|
||
--sidebar-bg: #3b2e2a; | ||
--sidebar-fg: #c8c9db; | ||
--sidebar-non-existant: #505254; | ||
--sidebar-active: #e69f67; | ||
--sidebar-spacer: #45373a; | ||
|
||
--scrollbar: var(--sidebar-fg); | ||
|
||
--icons: #737480; | ||
--icons-hover: #262625; | ||
|
||
--links: #2b79a2; | ||
|
||
--inline-code-color: #6e6b5e; | ||
|
||
--theme-popup-bg: #e1e1db; | ||
--theme-popup-border: #b38f6b; | ||
--theme-hover: #99908a; | ||
|
||
--quote-bg: hsl(60, 5%, 75%); | ||
--quote-border: hsl(60, 5%, 70%); | ||
|
||
--table-border-color: hsl(60, 9%, 82%); | ||
--table-header-bg: #b3a497; | ||
--table-alternate-bg: hsl(60, 9%, 84%); | ||
|
||
--searchbar-border-color: #aaa; | ||
--searchbar-bg: #fafafa; | ||
--searchbar-fg: #000; | ||
--searchbar-shadow-color: #aaa; | ||
--searchresults-header-fg: #666; | ||
--searchresults-border-color: #888; | ||
--searchresults-li-bg: #dec2a2; | ||
--search-mark-bg: #e69f67; | ||
} | ||
|
||
@media (prefers-color-scheme: dark) { | ||
.light.no-js { | ||
--bg: hsl(200, 7%, 8%); | ||
--fg: #98a3ad; | ||
|
||
--sidebar-bg: #292c2f; | ||
--sidebar-fg: #a1adb8; | ||
--sidebar-non-existant: #505254; | ||
--sidebar-active: #3473ad; | ||
--sidebar-spacer: #393939; | ||
|
||
--scrollbar: var(--sidebar-fg); | ||
|
||
--icons: #43484d; | ||
--icons-hover: #b3c0cc; | ||
|
||
--links: #2b79a2; | ||
|
||
--inline-code-color: #c5c8c6; | ||
|
||
--theme-popup-bg: #141617; | ||
--theme-popup-border: #43484d; | ||
--theme-hover: #1f2124; | ||
|
||
--quote-bg: hsl(234, 21%, 18%); | ||
--quote-border: hsl(234, 21%, 23%); | ||
|
||
--table-border-color: hsl(200, 7%, 13%); | ||
--table-header-bg: hsl(200, 7%, 28%); | ||
--table-alternate-bg: hsl(200, 7%, 11%); | ||
|
||
--searchbar-border-color: #aaa; | ||
--searchbar-bg: #b7b7b7; | ||
--searchbar-fg: #000; | ||
--searchbar-shadow-color: #aaa; | ||
--searchresults-header-fg: #666; | ||
--searchresults-border-color: #98a3ad; | ||
--searchresults-li-bg: #2b2b2f; | ||
--search-mark-bg: #355c7d; | ||
} | ||
} | ||
|
||
/* oranda theme gets injected here */ | ||
.oranda-dark { | ||
/* | ||
This part is just defining constants that are consistent | ||
between both oranda themes, which oranda-css should probably | ||
be injecting into this file. For now, they're hardcoded. | ||
*/ | ||
--dark-color: #141414; | ||
--light-color: #ffffff; | ||
--link-color: #0284c7; | ||
--light-highlight-bg-color: #ededed; | ||
--light-highlight-fg-color: #595959; | ||
--dark-highlight-bg-color: #595959; | ||
--dark-highlight-fg-color: #ededed; | ||
--font-face: "Fira Sans", sans-serif; | ||
|
||
/* | ||
Here we select which colors/fonts to use for this specific theme. | ||
This first block calls a lot of the shots, most other definitions just | ||
defer to these values. | ||
*/ | ||
--bg: var(--dark-color); | ||
--fg: var(--light-color); | ||
--well-bg: var(--dark-color); | ||
--well-bg-highlight: var(--dark-color); | ||
--title-fg: var(--light-color); | ||
--subtitle-fg: var(--light-color); | ||
--border-color: var(--dark-highlight-fg-color); | ||
--main-font: var(--font-face); | ||
--mono-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, | ||
Liberation Mono, Courier New, monospace; | ||
|
||
--sidebar-bg: var(--bg); | ||
--sidebar-fg: var(--fg); | ||
--sidebar-non-existant: var(--bg); | ||
--sidebar-active: var(--link-color); | ||
--sidebar-spacer: var(--border-color); | ||
|
||
--scrollbar: default; | ||
|
||
--icons: var(--light-color); | ||
--icons-hover: var(--light-color); | ||
|
||
--links: var(--link-color); | ||
--links-hover: var(--link-color); | ||
|
||
--inline-code-color: var(--link-color); | ||
|
||
--theme-popup-bg: var(--well-bg); | ||
--theme-popup-border: var(--border-color); | ||
--theme-hover: var(--well-bg-highlight); | ||
|
||
--quote-bg: var(--bg); | ||
--quote-border: var(--border-color); | ||
|
||
--table-border-color: var(--border-color); | ||
--table-header-bg: var(--well-bg-highlight); | ||
--table-alternate-bg: var(--well-bg); | ||
|
||
--searchbar-border-color: var(--border-color); | ||
--searchbar-bg: var(--well-bg); | ||
--searchbar-fg: var(--fg); | ||
--searchbar-shadow-color: var(--border-color); | ||
--searchresults-header-fg: var(--title-fg); | ||
--searchresults-border-color: var(--border-color); | ||
--searchresults-li-bg: var(--well-bg); | ||
--search-mark-bg: var(--links); | ||
} | ||
|
||
.oranda-light { | ||
/* | ||
This part is just defining constants that are consistent | ||
between both oranda themes, which fringe/oranda-css should probably | ||
be injecting into this file. For now, they're hardcoded. | ||
*/ | ||
--dark-color: #141414; | ||
--light-color: #ffffff; | ||
--link-color: #0284c7; | ||
--light-highlight-bg-color: #ededed; | ||
--light-highlight-fg-color: #595959; | ||
--dark-highlight-bg-color: #595959; | ||
--dark-highlight-fg-color: #ededed; | ||
--font-face: "Fira Sans", sans-serif; | ||
|
||
/* | ||
Here we select which colors/fonts to use for this specific theme. | ||
This first block calls a lot of the shots, most other definitions just | ||
defer to these values. | ||
*/ | ||
--bg: var(--light-color); | ||
--fg: var(--dark-color); | ||
--well-bg: var(--light-color); | ||
--well-bg-highlight: var(--light-color); | ||
--title-fg: var(--dark-color); | ||
--subtitle-fg: var(--dark-color); | ||
--border-color: var(--dark-color); | ||
--main-font: var(--font-face); | ||
--mono-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, | ||
Liberation Mono, Courier New, monospace; | ||
|
||
--sidebar-bg: var(--bg); | ||
--sidebar-fg: var(--fg); | ||
--sidebar-non-existant: var(--bg); | ||
--sidebar-active: var(--link-color); | ||
--sidebar-spacer: var(--border-color); | ||
|
||
--scrollbar: default; | ||
|
||
--icons: var(--dark-color); | ||
--icons-hover: var(--dark-color); | ||
|
||
--links: var(--link-color); | ||
--links-hover: var(--link-color); | ||
|
||
--inline-code-color: var(--link-color); | ||
|
||
--theme-popup-bg: var(--well-bg); | ||
--theme-popup-border: var(--border-color); | ||
--theme-hover: var(--well-bg-highlight); | ||
|
||
--quote-bg: var(--bg); | ||
--quote-border: var(--border-color); | ||
|
||
--table-border-color: var(--border-color); | ||
--table-header-bg: var(--well-bg-highlight); | ||
--table-alternate-bg: var(--well-bg); | ||
|
||
--searchbar-border-color: var(--border-color); | ||
--searchbar-bg: var(--well-bg); | ||
--searchbar-fg: var(--fg); | ||
--searchbar-shadow-color: var(--border-color); | ||
--searchresults-header-fg: var(--title-fg); | ||
--searchresults-border-color: var(--border-color); | ||
--searchresults-li-bg: var(--well-bg); | ||
--search-mark-bg: var(--links); | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
"use strict"; | ||
window.editors = []; | ||
(function(editors) { | ||
if (typeof(ace) === 'undefined' || !ace) { | ||
return; | ||
} | ||
|
||
Array.from(document.querySelectorAll('.editable')).forEach(function(editable) { | ||
let display_line_numbers = window.playground_line_numbers || false; | ||
|
||
let editor = ace.edit(editable); | ||
editor.setOptions({ | ||
highlightActiveLine: false, | ||
showPrintMargin: false, | ||
showLineNumbers: display_line_numbers, | ||
showGutter: display_line_numbers, | ||
maxLines: Infinity, | ||
fontSize: "0.875em" // please adjust the font size of the code in general.css | ||
}); | ||
|
||
editor.$blockScrolling = Infinity; | ||
|
||
editor.getSession().setMode("ace/mode/rust"); | ||
|
||
editor.originalCode = editor.getValue(); | ||
|
||
editors.push(editor); | ||
}); | ||
})(window.editors); |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
/* fonts used by axo themes, not sure if this is the best way to fetch them */ | ||
|
||
@import url("https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;700&display=swap"); | ||
@import url("https://fonts.googleapis.com/css2?family=Comfortaa:wght@400;700&display=swap"); | ||
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600;700&display=swap"); | ||
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap"); | ||
|
||
/* note that the standard mdbook themes lose their custom fonts by us overriding this */ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
/* | ||
* An increased contrast highlighting scheme loosely based on the | ||
* "Base16 Atelier Dune Light" theme by Bram de Haan | ||
* (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) | ||
* Original Base16 color scheme by Chris Kempson | ||
* (https://github.com/chriskempson/base16) | ||
*/ | ||
|
||
/* Comment */ | ||
.hljs-comment, | ||
.hljs-quote { | ||
color: #575757; | ||
} | ||
|
||
/* Red */ | ||
.hljs-variable, | ||
.hljs-template-variable, | ||
.hljs-attribute, | ||
.hljs-tag, | ||
.hljs-name, | ||
.hljs-regexp, | ||
.hljs-link, | ||
.hljs-name, | ||
.hljs-selector-id, | ||
.hljs-selector-class { | ||
color: #d70025; | ||
} | ||
|
||
/* Orange */ | ||
.hljs-number, | ||
.hljs-meta, | ||
.hljs-built_in, | ||
.hljs-builtin-name, | ||
.hljs-literal, | ||
.hljs-type, | ||
.hljs-params { | ||
color: #b21e00; | ||
} | ||
|
||
/* Green */ | ||
.hljs-string, | ||
.hljs-symbol, | ||
.hljs-bullet { | ||
color: #008200; | ||
} | ||
|
||
/* Blue */ | ||
.hljs-title, | ||
.hljs-section { | ||
color: #0030f2; | ||
} | ||
|
||
/* Purple */ | ||
.hljs-keyword, | ||
.hljs-selector-tag { | ||
color: #9d00ec; | ||
} | ||
|
||
.hljs { | ||
display: block; | ||
overflow-x: auto; | ||
background: #f6f7f6; | ||
color: #000; | ||
} | ||
|
||
.hljs-emphasis { | ||
font-style: italic; | ||
} | ||
|
||
.hljs-strong { | ||
font-weight: bold; | ||
} | ||
|
||
.hljs-addition { | ||
color: #22863a; | ||
background-color: #f0fff4; | ||
} | ||
|
||
.hljs-deletion { | ||
color: #b31d28; | ||
background-color: #ffeef0; | ||
} |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,211 @@ | ||
<!DOCTYPE HTML> | ||
<html lang="en" class="sidebar-visible no-js oranda-light"> | ||
<head> | ||
<!-- Book generated using mdBook --> | ||
<meta charset="UTF-8"> | ||
<title>Introduction - Scaphandre documentation</title> | ||
|
||
|
||
<!-- Custom HTML head --> | ||
|
||
<meta name="description" content="Extensible and lightweight monitoring agent for energy consumption metrics"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
<meta name="theme-color" content="#ffffff" /> | ||
|
||
<link rel="icon" href="favicon.svg"> | ||
<link rel="shortcut icon" href="favicon.png"> | ||
<link rel="stylesheet" href="css/variables.css"> | ||
<link rel="stylesheet" href="css/general.css"> | ||
<link rel="stylesheet" href="css/chrome.css"> | ||
<link rel="stylesheet" href="css/print.css" media="print"> | ||
|
||
<!-- Fonts --> | ||
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css"> | ||
<link rel="stylesheet" href="fonts/fonts.css"> | ||
|
||
<!-- Highlight.js Stylesheets --> | ||
<link rel="stylesheet" href="highlight.css"> | ||
<link rel="stylesheet" href="tomorrow-night.css"> | ||
<link rel="stylesheet" href="ayu-highlight.css"> | ||
<link rel="stylesheet" href="oranda-highlight.css"> | ||
|
||
<!-- Custom theme stylesheets --> | ||
|
||
</head> | ||
<body> | ||
<div id="body-container"> | ||
<!-- Provide site root to javascript --> | ||
<script> | ||
var path_to_root = ""; | ||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "oranda-light" : "oranda-light"; | ||
</script> | ||
|
||
<!-- Work around some values being stored in localStorage wrapped in quotes --> | ||
<script> | ||
try { | ||
var theme = localStorage.getItem('orandamdbook-theme'); | ||
var sidebar = localStorage.getItem('mdbook-sidebar'); | ||
|
||
if (theme.startsWith('"') && theme.endsWith('"')) { | ||
localStorage.setItem('orandamdbook-theme', theme.slice(1, theme.length - 1)); | ||
} | ||
|
||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) { | ||
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1)); | ||
} | ||
} catch (e) { } | ||
</script> | ||
|
||
<!-- Set the theme before any content is loaded, prevents flash --> | ||
<script> | ||
var theme; | ||
try { theme = localStorage.getItem('orandamdbook-theme'); } catch(e) { } | ||
if (theme === null || theme === undefined) { theme = default_theme; } | ||
var html = document.querySelector('html'); | ||
html.classList.remove('no-js') | ||
html.classList.remove('oranda-light') | ||
html.classList.add(theme); | ||
html.classList.add('js'); | ||
</script> | ||
|
||
<!-- Hide / unhide sidebar before it is displayed --> | ||
<script> | ||
var html = document.querySelector('html'); | ||
var sidebar = 'hidden'; | ||
if (document.body.clientWidth >= 1080) { | ||
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { } | ||
sidebar = sidebar || 'visible'; | ||
} | ||
html.classList.remove('sidebar-visible'); | ||
html.classList.add("sidebar-" + sidebar); | ||
</script> | ||
|
||
<nav id="sidebar" class="sidebar" aria-label="Table of contents"> | ||
<div class="sidebar-scrollbox"> | ||
<ol class="chapter"><li class="chapter-item expanded affix "><a href="index.html" class="active">Introduction</a></li><li class="chapter-item expanded affix "><li class="part-title">Tutorials</li><li class="chapter-item expanded "><a href="tutorials/getting_started.html"><strong aria-hidden="true">1.</strong> Getting Started</a></li><li class="chapter-item expanded "><a href="tutorials/installation-linux.html"><strong aria-hidden="true">2.</strong> Installation on GNU/Linux</a></li><li class="chapter-item expanded "><a href="tutorials/installation-windows.html"><strong aria-hidden="true">3.</strong> Installation on Windows</a></li><li class="chapter-item expanded "><a href="tutorials/docker-compose.html"><strong aria-hidden="true">4.</strong> Docker-compose</a></li><li class="chapter-item expanded "><a href="tutorials/compilation-linux.html"><strong aria-hidden="true">5.</strong> Compilation for GNU/Linux</a></li><li class="chapter-item expanded "><a href="tutorials/compilation-windows.html"><strong aria-hidden="true">6.</strong> Compilation for Windows</a></li><li class="chapter-item expanded "><a href="tutorials/kubernetes.html"><strong aria-hidden="true">7.</strong> Power consumption of a Kubernetes cluster with scaphandre, prometheus and grafana</a></li><li class="chapter-item expanded affix "><li class="part-title">How-to guides</li><li class="chapter-item expanded "><a href="how-to_guides/propagate-metrics-hypervisor-to-vm_qemu-kvm.html"><strong aria-hidden="true">8.</strong> Propagate power consumption metrics from hypervisor to virtual machines (Qemu/KVM)</a></li><li class="chapter-item expanded "><a href="how-to_guides/get-process-level-power-in-grafana.html"><strong aria-hidden="true">9.</strong> Get process-level power consumption in my grafana dashboard</a></li><li class="chapter-item expanded "><a href="how-to_guides/install-prometheuspush-only-rhel.html"><strong aria-hidden="true">10.</strong> Install Scaphandre with only Prometheus-push exporter compiled, for Prometheus Push Gateway, on RHEL 8 and 9</a></li><li class="chapter-item expanded affix "><li class="part-title">Explanations</li><li class="chapter-item expanded "><a href="explanations/how-scaph-computes-per-process-power-consumption.html"><strong aria-hidden="true">11.</strong> How scaphandre computes per process power consumption</a></li><li class="chapter-item expanded "><a href="explanations/internal-structure.html"><strong aria-hidden="true">12.</strong> Internal structure</a></li><li class="chapter-item expanded "><a href="explanations/about-containers.html"><strong aria-hidden="true">13.</strong> About containers</a></li><li class="chapter-item expanded "><a href="explanations/rapl-domains.html"><strong aria-hidden="true">14.</strong> About RAPL domains</a></li><li class="chapter-item expanded affix "><li class="part-title">References</li><li class="chapter-item expanded "><a href="references/metrics.html"><strong aria-hidden="true">15.</strong> Metrics available</a></li><li class="chapter-item expanded "><a href="references/exporter-json.html"><strong aria-hidden="true">16.</strong> JSON exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-prometheus.html"><strong aria-hidden="true">17.</strong> Prometheus exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-qemu.html"><strong aria-hidden="true">18.</strong> Qemu exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-riemann.html"><strong aria-hidden="true">19.</strong> Riemann exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-stdout.html"><strong aria-hidden="true">20.</strong> Stdout exporter</a></li><li class="chapter-item expanded "><a href="references/exporter-warp10.html"><strong aria-hidden="true">21.</strong> Warp10 exporter</a></li><li class="chapter-item expanded "><a href="references/sensor-msr_rapl.html"><strong aria-hidden="true">22.</strong> MSR_RAPL sensor</a></li><li class="chapter-item expanded "><a href="references/sensor-powercap_rapl.html"><strong aria-hidden="true">23.</strong> PowercapRAPL sensor</a></li><li class="chapter-item expanded "><a href="references/sensor-msr_rapl.html"><strong aria-hidden="true">24.</strong> MSRRAPL sensor</a></li><li class="chapter-item expanded affix "><a href="why.html">Why this project ?</a></li><li class="chapter-item expanded affix "><a href="compatibility.html">Compatibility</a></li><li class="chapter-item expanded affix "><a href="troubleshooting.html">Troubleshooting</a></li><li class="chapter-item expanded affix "><a href="contributing.html">Contributing guide</a></li><li class="chapter-item expanded affix "><a href="sources.html">External references you may be interested in</a></li></ol> | ||
</div> | ||
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div> | ||
</nav> | ||
|
||
<div id="page-wrapper" class="page-wrapper"> | ||
|
||
<div class="page"> | ||
<div id="menu-bar-hover-placeholder"></div> | ||
<div id="menu-bar" class="menu-bar sticky bordered"> | ||
<div class="left-buttons"> | ||
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar"> | ||
<i class="fa fa-bars"></i> | ||
</button> | ||
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list"> | ||
<i class="fa fa-paint-brush"></i> | ||
</button> | ||
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu"> | ||
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="oranda-light">Oranda Light</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="oranda-dark">Oranda Dark</button></li> | ||
|
||
</ul> | ||
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar"> | ||
<i class="fa fa-search"></i> | ||
</button> | ||
</div> | ||
|
||
<h1 class="menu-title">Scaphandre documentation</h1> | ||
|
||
<div class="right-buttons"> | ||
<a href="print.html" title="Print this book" aria-label="Print this book"> | ||
<i id="print-button" class="fa fa-print"></i> | ||
</a> | ||
|
||
</div> | ||
</div> | ||
|
||
<div id="search-wrapper" class="hidden"> | ||
<form id="searchbar-outer" class="searchbar-outer"> | ||
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header"> | ||
</form> | ||
<div id="searchresults-outer" class="searchresults-outer hidden"> | ||
<div id="searchresults-header" class="searchresults-header"></div> | ||
<ul id="searchresults"> | ||
</ul> | ||
</div> | ||
</div> | ||
|
||
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM --> | ||
<script> | ||
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible'); | ||
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible'); | ||
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) { | ||
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1); | ||
}); | ||
</script> | ||
|
||
<div id="content" class="content"> | ||
<main> | ||
<h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h1> | ||
<p><a href="https://github.com/hubblo-org/scaphandre/"><img src="scaphandre.svg" width="250px"/></a></p> | ||
<p>Welcome on <a href="https://github.com/hubblo-org/scaphandre">Scaphandre</a> documentation.</p> | ||
<p>Scaphandre is a <strong>monitoring agent</strong>, dedicated to <strong>energy consumption</strong> metrics. Its purpose is to help measuring and thus understanding tech services energy consumption patterns. This is key, in our opinion, to enable the tech industry to shift towards more sustainability. 💚</p> | ||
<p>If at this point you think "why bother ?", or if you want more details about this project's motivations, please have a look at the <a href="why.html">why</a> section.</p> | ||
<p>If not and you want to proceed, just directly jump to the <a href="tutorials/getting_started.html">tutorials</a> section.</p> | ||
<p>If you need more in-depth, use-case oriented instructions, the <a href="how-to_guides/propagate-metrics-hypervisor-to-vm_qemu-kvm.html">how-to guides</a> are here for you.</p> | ||
<p><a href="explanations/how-scaph-computes-per-process-power-consumption.html">Explanations</a> is about theoretical concepts behind scaphandre and the reasons for the technical choices that have been made so far.</p> | ||
<p>If you are already using, hacking or exploring scaphandre and need precise informations about one of its components, go to the <a href="references/exporter-prometheus.html">references</a> section. (The code documentation itself is <a href="https://docs.rs/scaphandre/">here</a>).</p> | ||
|
||
</main> | ||
|
||
<nav class="nav-wrapper" aria-label="Page navigation"> | ||
<!-- Mobile navigation buttons --> | ||
|
||
<a rel="next" href="tutorials/getting_started.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> | ||
<i class="fa fa-angle-right"></i> | ||
</a> | ||
|
||
<div style="clear: both"></div> | ||
</nav> | ||
</div> | ||
</div> | ||
|
||
<nav class="nav-wide-wrapper" aria-label="Page navigation"> | ||
|
||
<a rel="next" href="tutorials/getting_started.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> | ||
<i class="fa fa-angle-right"></i> | ||
</a> | ||
</nav> | ||
|
||
</div> | ||
|
||
|
||
|
||
<script> | ||
window.playground_line_numbers = true; | ||
</script> | ||
|
||
<script> | ||
window.playground_copyable = true; | ||
</script> | ||
|
||
<script src="ace.js"></script> | ||
<script src="editor.js"></script> | ||
<script src="mode-rust.js"></script> | ||
<script src="theme-dawn.js"></script> | ||
<script src="theme-tomorrow_night.js"></script> | ||
|
||
<script src="elasticlunr.min.js"></script> | ||
<script src="mark.min.js"></script> | ||
<script src="searcher.js"></script> | ||
|
||
<script src="clipboard.min.js"></script> | ||
<script src="highlight.js"></script> | ||
<script src="book.js"></script> | ||
|
||
<!-- Custom JS scripts --> | ||
|
||
|
||
</div> | ||
</body> | ||
</html> |
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
/*! | ||
Theme: Material | ||
Author: Nate Peterson | ||
License: ~ MIT (or more permissive) [via base16-schemes-source] | ||
Maintainer: @highlightjs/core-team | ||
Version: 2021.09.0 | ||
*/ | ||
|
||
/* | ||
WARNING: DO NOT EDIT THIS FILE DIRECTLY. | ||
This theme file was auto-generated from the Base16 scheme material | ||
by the Highlight.js Base16 template builder. | ||
- https://github.com/highlightjs/base16-highlightjs | ||
*/ | ||
|
||
/* | ||
base00 #263238 Default Background | ||
base01 #2E3C43 Lighter Background (Used for status bars, line number and folding marks) | ||
base02 #314549 Selection Background | ||
base03 #546E7A Comments, Invisibles, Line Highlighting | ||
base04 #B2CCD6 Dark Foreground (Used for status bars) | ||
base05 #EEFFFF Default Foreground, Caret, Delimiters, Operators | ||
base06 #EEFFFF Light Foreground (Not often used) | ||
base07 #FFFFFF Light Background (Not often used) | ||
base08 #F07178 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted | ||
base09 #F78C6C Integers, Boolean, Constants, XML Attributes, Markup Link Url | ||
base0A #FFCB6B Classes, Markup Bold, Search Text Background | ||
base0B #C3E88D Strings, Inherited Class, Markup Code, Diff Inserted | ||
base0C #89DDFF Support, Regular Expressions, Escape Characters, Markup Quotes | ||
base0D #82AAFF Functions, Methods, Attribute IDs, Headings | ||
base0E #C792EA Keywords, Storage, Selector, Markup Italic, Diff Changed | ||
base0F #FF5370 Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> | ||
*/ | ||
|
||
pre code.hljs { | ||
display: block; | ||
overflow-x: auto; | ||
padding: 1em; | ||
} | ||
|
||
code.hljs { | ||
padding: 3px 5px; | ||
} | ||
|
||
.hljs { | ||
color: #EEFFFF; | ||
background: #263238; | ||
} | ||
|
||
.hljs::selection, | ||
.hljs ::selection { | ||
background-color: #314549; | ||
color: #EEFFFF; | ||
} | ||
|
||
|
||
/* purposely do not highlight these things */ | ||
.hljs-formula, | ||
.hljs-params, | ||
.hljs-property | ||
{} | ||
|
||
/* base03 - #546E7A - Comments, Invisibles, Line Highlighting */ | ||
.hljs-comment { | ||
color: #546E7A; | ||
} | ||
|
||
/* base04 - #B2CCD6 - Dark Foreground (Used for status bars) */ | ||
.hljs-tag { | ||
color: #B2CCD6; | ||
} | ||
|
||
/* base05 - #EEFFFF - Default Foreground, Caret, Delimiters, Operators */ | ||
.hljs-subst, | ||
.hljs-punctuation, | ||
.hljs-operator { | ||
color: #EEFFFF; | ||
} | ||
|
||
.hljs-operator { | ||
opacity: 0.7; | ||
} | ||
|
||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ | ||
.hljs-bullet, | ||
.hljs-variable, | ||
.hljs-template-variable, | ||
.hljs-selector-tag, | ||
.hljs-name, | ||
.hljs-deletion { | ||
color: #F07178; | ||
} | ||
|
||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ | ||
.hljs-symbol, | ||
.hljs-number, | ||
.hljs-link, | ||
.hljs-attr, | ||
.hljs-variable.constant_, | ||
.hljs-literal { | ||
color: #F78C6C; | ||
} | ||
|
||
/* base0A - Classes, Markup Bold, Search Text Background */ | ||
.hljs-title, | ||
.hljs-class .hljs-title, | ||
.hljs-title.class_ | ||
{ | ||
color: #FFCB6B; | ||
} | ||
|
||
.hljs-strong { | ||
font-weight:bold; | ||
color: #FFCB6B; | ||
} | ||
|
||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ | ||
.hljs-code, | ||
.hljs-addition, | ||
.hljs-title.class_.inherited__, | ||
.hljs-string { | ||
color: #C3E88D; | ||
} | ||
|
||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ | ||
.hljs-built_in, | ||
.hljs-doctag, /* guessing */ | ||
.hljs-quote, | ||
.hljs-keyword.hljs-atrule, | ||
.hljs-regexp { | ||
color: #89DDFF; | ||
} | ||
|
||
/* base0D - Functions, Methods, Attribute IDs, Headings */ | ||
.hljs-function .hljs-title, | ||
.hljs-attribute, | ||
.ruby .hljs-property, | ||
.hljs-title.function_, | ||
.hljs-section { | ||
color: #82AAFF; | ||
} | ||
|
||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ | ||
.hljs-type, | ||
/* .hljs-selector-id, */ | ||
/* .hljs-selector-class, */ | ||
/* .hljs-selector-attr, */ | ||
/* .hljs-selector-pseudo, */ | ||
.hljs-template-tag, | ||
.diff .hljs-meta, | ||
.hljs-keyword { | ||
color: #C792EA; | ||
} | ||
.hljs-emphasis { | ||
color: #C792EA; | ||
font-style: italic; | ||
} | ||
|
||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */ | ||
.hljs-meta, | ||
/* | ||
prevent top level .keyword and .string scopes | ||
from leaking into meta by accident | ||
*/ | ||
.hljs-meta .hljs-keyword, | ||
.hljs-meta .hljs-string | ||
{ | ||
color: #FF5370; | ||
} | ||
|
||
.hljs-meta .hljs-keyword, | ||
/* for v10 compatible themes */ | ||
.hljs-meta-keyword { | ||
font-weight: bold; | ||
} |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
/* Tomorrow Night Theme */ | ||
/* https://github.com/jmblog/color-themes-for-highlightjs */ | ||
/* Original theme - https://github.com/chriskempson/tomorrow-theme */ | ||
/* https://github.com/jmblog/color-themes-for-highlightjs */ | ||
|
||
/* Tomorrow Comment */ | ||
.hljs-comment { | ||
color: #969896; | ||
} | ||
|
||
/* Tomorrow Red */ | ||
.hljs-variable, | ||
.hljs-attribute, | ||
.hljs-tag, | ||
.hljs-regexp, | ||
.ruby .hljs-constant, | ||
.xml .hljs-tag .hljs-title, | ||
.xml .hljs-pi, | ||
.xml .hljs-doctype, | ||
.html .hljs-doctype, | ||
.css .hljs-id, | ||
.css .hljs-class, | ||
.css .hljs-pseudo { | ||
color: #cc6666; | ||
} | ||
|
||
/* Tomorrow Orange */ | ||
.hljs-number, | ||
.hljs-preprocessor, | ||
.hljs-pragma, | ||
.hljs-built_in, | ||
.hljs-literal, | ||
.hljs-params, | ||
.hljs-constant { | ||
color: #de935f; | ||
} | ||
|
||
/* Tomorrow Yellow */ | ||
.ruby .hljs-class .hljs-title, | ||
.css .hljs-rule .hljs-attribute { | ||
color: #f0c674; | ||
} | ||
|
||
/* Tomorrow Green */ | ||
.hljs-string, | ||
.hljs-value, | ||
.hljs-inheritance, | ||
.hljs-header, | ||
.hljs-name, | ||
.ruby .hljs-symbol, | ||
.xml .hljs-cdata { | ||
color: #b5bd68; | ||
} | ||
|
||
/* Tomorrow Aqua */ | ||
.hljs-title, | ||
.css .hljs-hexcolor { | ||
color: #8abeb7; | ||
} | ||
|
||
/* Tomorrow Blue */ | ||
.hljs-function, | ||
.python .hljs-decorator, | ||
.python .hljs-title, | ||
.ruby .hljs-function .hljs-title, | ||
.ruby .hljs-title .hljs-keyword, | ||
.perl .hljs-sub, | ||
.javascript .hljs-title, | ||
.coffeescript .hljs-title { | ||
color: #81a2be; | ||
} | ||
|
||
/* Tomorrow Purple */ | ||
.hljs-keyword, | ||
.javascript .hljs-function { | ||
color: #b294bb; | ||
} | ||
|
||
.hljs { | ||
display: block; | ||
overflow-x: auto; | ||
background: #1d1f21; | ||
color: #c5c8c6; | ||
} | ||
|
||
.coffeescript .javascript, | ||
.javascript .xml, | ||
.tex .hljs-formula, | ||
.xml .javascript, | ||
.xml .vbscript, | ||
.xml .css, | ||
.xml .hljs-cdata { | ||
opacity: 0.5; | ||
} | ||
|
||
.hljs-addition { | ||
color: #718c00; | ||
} | ||
|
||
.hljs-deletion { | ||
color: #c82829; | ||
} |
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,225 @@ | ||
<!DOCTYPE HTML> | ||
<html lang="en" class="sidebar-visible no-js oranda-light"> | ||
<head> | ||
<!-- Book generated using mdBook --> | ||
<meta charset="UTF-8"> | ||
<title>Compilation for GNU/Linux - Scaphandre documentation</title> | ||
|
||
|
||
<!-- Custom HTML head --> | ||
|
||
<meta name="description" content="Extensible and lightweight monitoring agent for energy consumption metrics"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
<meta name="theme-color" content="#ffffff" /> | ||
|
||
<link rel="icon" href="../favicon.svg"> | ||
<link rel="shortcut icon" href="../favicon.png"> | ||
<link rel="stylesheet" href="../css/variables.css"> | ||
<link rel="stylesheet" href="../css/general.css"> | ||
<link rel="stylesheet" href="../css/chrome.css"> | ||
<link rel="stylesheet" href="../css/print.css" media="print"> | ||
|
||
<!-- Fonts --> | ||
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css"> | ||
<link rel="stylesheet" href="../fonts/fonts.css"> | ||
|
||
<!-- Highlight.js Stylesheets --> | ||
<link rel="stylesheet" href="../highlight.css"> | ||
<link rel="stylesheet" href="../tomorrow-night.css"> | ||
<link rel="stylesheet" href="../ayu-highlight.css"> | ||
<link rel="stylesheet" href="../oranda-highlight.css"> | ||
|
||
<!-- Custom theme stylesheets --> | ||
|
||
</head> | ||
<body> | ||
<div id="body-container"> | ||
<!-- Provide site root to javascript --> | ||
<script> | ||
var path_to_root = "../"; | ||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "oranda-light" : "oranda-light"; | ||
</script> | ||
|
||
<!-- Work around some values being stored in localStorage wrapped in quotes --> | ||
<script> | ||
try { | ||
var theme = localStorage.getItem('orandamdbook-theme'); | ||
var sidebar = localStorage.getItem('mdbook-sidebar'); | ||
|
||
if (theme.startsWith('"') && theme.endsWith('"')) { | ||
localStorage.setItem('orandamdbook-theme', theme.slice(1, theme.length - 1)); | ||
} | ||
|
||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) { | ||
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1)); | ||
} | ||
} catch (e) { } | ||
</script> | ||
|
||
<!-- Set the theme before any content is loaded, prevents flash --> | ||
<script> | ||
var theme; | ||
try { theme = localStorage.getItem('orandamdbook-theme'); } catch(e) { } | ||
if (theme === null || theme === undefined) { theme = default_theme; } | ||
var html = document.querySelector('html'); | ||
html.classList.remove('no-js') | ||
html.classList.remove('oranda-light') | ||
html.classList.add(theme); | ||
html.classList.add('js'); | ||
</script> | ||
|
||
<!-- Hide / unhide sidebar before it is displayed --> | ||
<script> | ||
var html = document.querySelector('html'); | ||
var sidebar = 'hidden'; | ||
if (document.body.clientWidth >= 1080) { | ||
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { } | ||
sidebar = sidebar || 'visible'; | ||
} | ||
html.classList.remove('sidebar-visible'); | ||
html.classList.add("sidebar-" + sidebar); | ||
</script> | ||
|
||
<nav id="sidebar" class="sidebar" aria-label="Table of contents"> | ||
<div class="sidebar-scrollbox"> | ||
<ol class="chapter"><li class="chapter-item expanded affix "><a href="../index.html">Introduction</a></li><li class="chapter-item expanded affix "><li class="part-title">Tutorials</li><li class="chapter-item expanded "><a href="../tutorials/getting_started.html"><strong aria-hidden="true">1.</strong> Getting Started</a></li><li class="chapter-item expanded "><a href="../tutorials/installation-linux.html"><strong aria-hidden="true">2.</strong> Installation on GNU/Linux</a></li><li class="chapter-item expanded "><a href="../tutorials/installation-windows.html"><strong aria-hidden="true">3.</strong> Installation on Windows</a></li><li class="chapter-item expanded "><a href="../tutorials/docker-compose.html"><strong aria-hidden="true">4.</strong> Docker-compose</a></li><li class="chapter-item expanded "><a href="../tutorials/compilation-linux.html" class="active"><strong aria-hidden="true">5.</strong> Compilation for GNU/Linux</a></li><li class="chapter-item expanded "><a href="../tutorials/compilation-windows.html"><strong aria-hidden="true">6.</strong> Compilation for Windows</a></li><li class="chapter-item expanded "><a href="../tutorials/kubernetes.html"><strong aria-hidden="true">7.</strong> Power consumption of a Kubernetes cluster with scaphandre, prometheus and grafana</a></li><li class="chapter-item expanded affix "><li class="part-title">How-to guides</li><li class="chapter-item expanded "><a href="../how-to_guides/propagate-metrics-hypervisor-to-vm_qemu-kvm.html"><strong aria-hidden="true">8.</strong> Propagate power consumption metrics from hypervisor to virtual machines (Qemu/KVM)</a></li><li class="chapter-item expanded "><a href="../how-to_guides/get-process-level-power-in-grafana.html"><strong aria-hidden="true">9.</strong> Get process-level power consumption in my grafana dashboard</a></li><li class="chapter-item expanded "><a href="../how-to_guides/install-prometheuspush-only-rhel.html"><strong aria-hidden="true">10.</strong> Install Scaphandre with only Prometheus-push exporter compiled, for Prometheus Push Gateway, on RHEL 8 and 9</a></li><li class="chapter-item expanded affix "><li class="part-title">Explanations</li><li class="chapter-item expanded "><a href="../explanations/how-scaph-computes-per-process-power-consumption.html"><strong aria-hidden="true">11.</strong> How scaphandre computes per process power consumption</a></li><li class="chapter-item expanded "><a href="../explanations/internal-structure.html"><strong aria-hidden="true">12.</strong> Internal structure</a></li><li class="chapter-item expanded "><a href="../explanations/about-containers.html"><strong aria-hidden="true">13.</strong> About containers</a></li><li class="chapter-item expanded "><a href="../explanations/rapl-domains.html"><strong aria-hidden="true">14.</strong> About RAPL domains</a></li><li class="chapter-item expanded affix "><li class="part-title">References</li><li class="chapter-item expanded "><a href="../references/metrics.html"><strong aria-hidden="true">15.</strong> Metrics available</a></li><li class="chapter-item expanded "><a href="../references/exporter-json.html"><strong aria-hidden="true">16.</strong> JSON exporter</a></li><li class="chapter-item expanded "><a href="../references/exporter-prometheus.html"><strong aria-hidden="true">17.</strong> Prometheus exporter</a></li><li class="chapter-item expanded "><a href="../references/exporter-qemu.html"><strong aria-hidden="true">18.</strong> Qemu exporter</a></li><li class="chapter-item expanded "><a href="../references/exporter-riemann.html"><strong aria-hidden="true">19.</strong> Riemann exporter</a></li><li class="chapter-item expanded "><a href="../references/exporter-stdout.html"><strong aria-hidden="true">20.</strong> Stdout exporter</a></li><li class="chapter-item expanded "><a href="../references/exporter-warp10.html"><strong aria-hidden="true">21.</strong> Warp10 exporter</a></li><li class="chapter-item expanded "><a href="../references/sensor-msr_rapl.html"><strong aria-hidden="true">22.</strong> MSR_RAPL sensor</a></li><li class="chapter-item expanded "><a href="../references/sensor-powercap_rapl.html"><strong aria-hidden="true">23.</strong> PowercapRAPL sensor</a></li><li class="chapter-item expanded "><a href="../references/sensor-msr_rapl.html"><strong aria-hidden="true">24.</strong> MSRRAPL sensor</a></li><li class="chapter-item expanded affix "><a href="../why.html">Why this project ?</a></li><li class="chapter-item expanded affix "><a href="../compatibility.html">Compatibility</a></li><li class="chapter-item expanded affix "><a href="../troubleshooting.html">Troubleshooting</a></li><li class="chapter-item expanded affix "><a href="../contributing.html">Contributing guide</a></li><li class="chapter-item expanded affix "><a href="../sources.html">External references you may be interested in</a></li></ol> | ||
</div> | ||
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div> | ||
</nav> | ||
|
||
<div id="page-wrapper" class="page-wrapper"> | ||
|
||
<div class="page"> | ||
<div id="menu-bar-hover-placeholder"></div> | ||
<div id="menu-bar" class="menu-bar sticky bordered"> | ||
<div class="left-buttons"> | ||
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar"> | ||
<i class="fa fa-bars"></i> | ||
</button> | ||
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list"> | ||
<i class="fa fa-paint-brush"></i> | ||
</button> | ||
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu"> | ||
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="oranda-light">Oranda Light</button></li> | ||
<li role="none"><button role="menuitem" class="theme" id="oranda-dark">Oranda Dark</button></li> | ||
|
||
</ul> | ||
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar"> | ||
<i class="fa fa-search"></i> | ||
</button> | ||
</div> | ||
|
||
<h1 class="menu-title">Scaphandre documentation</h1> | ||
|
||
<div class="right-buttons"> | ||
<a href="../print.html" title="Print this book" aria-label="Print this book"> | ||
<i id="print-button" class="fa fa-print"></i> | ||
</a> | ||
|
||
</div> | ||
</div> | ||
|
||
<div id="search-wrapper" class="hidden"> | ||
<form id="searchbar-outer" class="searchbar-outer"> | ||
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header"> | ||
</form> | ||
<div id="searchresults-outer" class="searchresults-outer hidden"> | ||
<div id="searchresults-header" class="searchresults-header"></div> | ||
<ul id="searchresults"> | ||
</ul> | ||
</div> | ||
</div> | ||
|
||
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM --> | ||
<script> | ||
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible'); | ||
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible'); | ||
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) { | ||
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1); | ||
}); | ||
</script> | ||
|
||
<div id="content" class="content"> | ||
<main> | ||
<h1 id="compile-scaphandre-from-source-gnulinux"><a class="header" href="#compile-scaphandre-from-source-gnulinux">Compile scaphandre from source (GNU/Linux)</a></h1> | ||
<p>We recommand using this version of the rust toolchain or later:</p> | ||
<pre><code>cargo --version | ||
cargo 1.48.0 (65cbdd2dc 2020-10-14) | ||
rustc --version | ||
rustc 1.48.0 (7eac88abb 2020-11-16) | ||
</code></pre> | ||
<p>To be sure to be up to date, you may install rust from the <a href="https://www.rust-lang.org/">official website</a> instead of your package manager.</p> | ||
<p>To hack <em>scaph</em>, or simply be up to date with latest developments, you can download scaphandre from the main branch:</p> | ||
<pre><code>git clone https://github.com/hubblo-org/scaphandre.git | ||
cd scaphandre | ||
cargo build # binary path is target/debug/scaphandre | ||
</code></pre> | ||
<p>To use the latest code for a true use case, build for release instead of debug:</p> | ||
<pre><code>cargo build --release | ||
</code></pre> | ||
<p>Binary path is <code>target/release/scaphandre</code>.</p> | ||
|
||
</main> | ||
|
||
<nav class="nav-wrapper" aria-label="Page navigation"> | ||
<!-- Mobile navigation buttons --> | ||
<a rel="prev" href="../tutorials/docker-compose.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> | ||
<i class="fa fa-angle-left"></i> | ||
</a> | ||
|
||
<a rel="next" href="../tutorials/compilation-windows.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> | ||
<i class="fa fa-angle-right"></i> | ||
</a> | ||
|
||
<div style="clear: both"></div> | ||
</nav> | ||
</div> | ||
</div> | ||
|
||
<nav class="nav-wide-wrapper" aria-label="Page navigation"> | ||
<a rel="prev" href="../tutorials/docker-compose.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> | ||
<i class="fa fa-angle-left"></i> | ||
</a> | ||
|
||
<a rel="next" href="../tutorials/compilation-windows.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> | ||
<i class="fa fa-angle-right"></i> | ||
</a> | ||
</nav> | ||
|
||
</div> | ||
|
||
|
||
|
||
<script> | ||
window.playground_line_numbers = true; | ||
</script> | ||
|
||
<script> | ||
window.playground_copyable = true; | ||
</script> | ||
|
||
<script src="../ace.js"></script> | ||
<script src="../editor.js"></script> | ||
<script src="../mode-rust.js"></script> | ||
<script src="../theme-dawn.js"></script> | ||
<script src="../theme-tomorrow_night.js"></script> | ||
|
||
<script src="../elasticlunr.min.js"></script> | ||
<script src="../mark.min.js"></script> | ||
<script src="../searcher.js"></script> | ||
|
||
<script src="../clipboard.min.js"></script> | ||
<script src="../highlight.js"></script> | ||
<script src="../book.js"></script> | ||
|
||
<!-- Custom JS scripts --> | ||
|
||
|
||
</div> | ||
</body> | ||
</html> |