From e15f838c597dfc5473576a95d0efbc184a90f85c Mon Sep 17 00:00:00 2001 From: Thomas Jespersen Date: Fri, 15 Jan 2016 11:14:41 +0100 Subject: Initial commit --- .gitignore | 2 + README.md | 19 ++ _config.yml | 2 + _includes/editor.js | 259 ++++++++++++++++ _includes/example.rs | 22 ++ _includes/example.rs.html | 23 ++ _includes/include.js | 38 +++ _includes/set_platform.js | 49 +++ _layouts/default.html | 95 ++++++ css/bootstrap.css | 601 +++++++++++++++++++++++++++++++++++++ css/ides.css | 10 + css/style.css | 425 ++++++++++++++++++++++++++ fonts/FiraSans-Light.woff | Bin 0 -> 83388 bytes fonts/FiraSans-Medium.woff | Bin 0 -> 84076 bytes fonts/FiraSans-Regular.woff | Bin 0 -> 83136 bytes fonts/LICENSE | 99 ++++++ fonts/fontello.woff | Bin 0 -> 2624 bytes img/cphrs-logo.png | Bin 0 -> 3123 bytes img/cphrs_sketch_block.png | Bin 0 -> 12017 bytes img/cphrs_sketch_block_logo.png | Bin 0 -> 11521 bytes img/cphrs_smallz.png | Bin 0 -> 6230 bytes img/cphrs_urban_sketch.png | Bin 0 -> 8872 bytes img/cphrs_varius_multiplex.png | Bin 0 -> 13575 bytes index.html | 103 +++++++ logos/cargo.png | Bin 0 -> 58730 bytes logos/error.png | Bin 0 -> 38310 bytes logos/favicon.ico | Bin 0 -> 23229 bytes logos/forkme.png | Bin 0 -> 16374 bytes logos/rust-logo-128x128-blk-v2.png | Bin 0 -> 5758 bytes logos/rust-logo-128x128-blk.png | Bin 0 -> 3479 bytes logos/rust-logo-128x128.png | Bin 0 -> 14098 bytes logos/rust-logo-16x16-blk.png | Bin 0 -> 351 bytes logos/rust-logo-16x16.png | Bin 0 -> 386 bytes logos/rust-logo-196x196-blk.png | Bin 0 -> 5650 bytes logos/rust-logo-256x256-blk.png | Bin 0 -> 7460 bytes logos/rust-logo-256x256.png | Bin 0 -> 37076 bytes logos/rust-logo-32x32-blk.png | Bin 0 -> 691 bytes logos/rust-logo-32x32.png | Bin 0 -> 2078 bytes logos/rust-logo-48x48-blk.png | Bin 0 -> 1091 bytes logos/rust-logo-512x512-blk.png | Bin 0 -> 11171 bytes logos/rust-logo-512x512.png | Bin 0 -> 96029 bytes logos/rust-logo-64x64-blk.png | Bin 0 -> 1448 bytes logos/rust-logo-64x64.png | Bin 0 -> 5264 bytes logos/rust-logo-all-blk.ico | Bin 0 -> 269444 bytes logos/rust-logo-blk.svg | 1 + logos/rust-logo-large-blk.ico | Bin 0 -> 254172 bytes logos/rust-logo-small-blk.ico | Bin 0 -> 15278 bytes 47 files changed, 1748 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 _config.yml create mode 100644 _includes/editor.js create mode 100644 _includes/example.rs create mode 100644 _includes/example.rs.html create mode 100644 _includes/include.js create mode 100644 _includes/set_platform.js create mode 100644 _layouts/default.html create mode 100644 css/bootstrap.css create mode 100644 css/ides.css create mode 100644 css/style.css create mode 100644 fonts/FiraSans-Light.woff create mode 100644 fonts/FiraSans-Medium.woff create mode 100644 fonts/FiraSans-Regular.woff create mode 100644 fonts/LICENSE create mode 100644 fonts/fontello.woff create mode 100644 img/cphrs-logo.png create mode 100644 img/cphrs_sketch_block.png create mode 100644 img/cphrs_sketch_block_logo.png create mode 100644 img/cphrs_smallz.png create mode 100644 img/cphrs_urban_sketch.png create mode 100644 img/cphrs_varius_multiplex.png create mode 100644 index.html create mode 100644 logos/cargo.png create mode 100644 logos/error.png create mode 100644 logos/favicon.ico create mode 100644 logos/forkme.png create mode 100644 logos/rust-logo-128x128-blk-v2.png create mode 100644 logos/rust-logo-128x128-blk.png create mode 100644 logos/rust-logo-128x128.png create mode 100644 logos/rust-logo-16x16-blk.png create mode 100644 logos/rust-logo-16x16.png create mode 100644 logos/rust-logo-196x196-blk.png create mode 100644 logos/rust-logo-256x256-blk.png create mode 100644 logos/rust-logo-256x256.png create mode 100644 logos/rust-logo-32x32-blk.png create mode 100644 logos/rust-logo-32x32.png create mode 100644 logos/rust-logo-48x48-blk.png create mode 100644 logos/rust-logo-512x512-blk.png create mode 100644 logos/rust-logo-512x512.png create mode 100644 logos/rust-logo-64x64-blk.png create mode 100644 logos/rust-logo-64x64.png create mode 100644 logos/rust-logo-all-blk.ico create mode 100644 logos/rust-logo-blk.svg create mode 100644 logos/rust-logo-large-blk.ico create mode 100644 logos/rust-logo-small-blk.ico diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..badbc02 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +_site +.sass-cache diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f57112 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# cph.rs + +This repository contains the source files for cph.rs. + +## Testing Locally + +To install jekyll (and any other dependencies, if we get any): + +``` +bundle install +``` + +To run this website as a developer: + +``` +jekyll serve +``` + +This will serve the site at `localhost:4000`. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..d4bacfa --- /dev/null +++ b/_config.yml @@ -0,0 +1,2 @@ +name: The Rust Programming Language +markdown: redcarpet diff --git a/_includes/editor.js b/_includes/editor.js new file mode 100644 index 0000000..c99fe52 --- /dev/null +++ b/_includes/editor.js @@ -0,0 +1,259 @@ +(function () { + "use strict"; + // ECMAScript 6 Backwards compatability + if (typeof String.prototype.startsWith !== 'function') { + String.prototype.startsWith = function(str) { + return this.slice(0, str.length) === str; + }; + } + + // Regex for finding new lines + var newLineRegex = /(?:\r\n|\r|\n)/g; + + // Fetching DOM items + var activeCode = document.getElementById("active-code"); + var editorDiv = document.getElementById("editor"); + var staticCode = document.getElementById("static-code"); + var runButton = document.getElementById("run-code"); + var resultDiv = document.getElementById("result"); + var playLink = document.getElementById("playlink"); + + // Background colors for program result on success/error + var successColor = "#E2EEF6"; + var errorColor = "#F6E2E2"; + var warningColor = "#FFFBCB"; + + // Error message to return when there's a server failure + var errMsg = "The server encountered an error while running the program."; + + // Stores ACE editor markers (highights) for errors + var markers = []; + + // Status codes, because there are no enums in Javascript + var SUCCESS = 0; + var ERROR = 1; + var WARNING = 2; + + // JS exists, display ACE editor + staticCode.style.display = "none"; + activeCode.style.display = "block"; + + // Setting up ace editor + var editor = ace.edit("editor"); + var Range = ace.require('ace/range').Range; + editor.setTheme("ace/theme/chrome"); + editor.getSession().setMode("ace/mode/rust"); + editor.setShowPrintMargin(false); + editor.renderer.setShowGutter(false); + editor.setHighlightActiveLine(false); + + // Changes the height of the editor to match its contents + function updateEditorHeight() { + // http://stackoverflow.com/questions/11584061/ + var newHeight = editor.getSession().getScreenLength() + * editor.renderer.lineHeight + + editor.renderer.scrollBar.getWidth(); + + editorDiv.style.height = Math.ceil(newHeight).toString() + "px"; + editor.resize(); + } + + // Set initial size to match initial content + updateEditorHeight(); + + // Safely remove all content from the result div + function clearResultDiv() { + // Clearing the result div will break our reference to + // the playlink icon, so let's save it if it exists + var newPlayLink = document.getElementById("playlink"); + if (newPlayLink) { + playLink = resultDiv.removeChild(newPlayLink); + } + resultDiv.innerHTML = ""; + } + + function escapeHTML(unsafe) { + return unsafe + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'") + .replace(newLineRegex, '
'); + } + + // Dispatches a XMLHttpRequest to the Rust playpen, running the program, and + // issues a callback to `callback` with the result (or null on error) + function runProgram(program, callback) { + var req = new XMLHttpRequest(); + var data = JSON.stringify({ + version: "beta", + optimize: "2", + code: program + }); + + // console.log("Sending", data); + req.open('POST', "https://play.rust-lang.org/evaluate.json", true); + req.onload = function(e) { + var statusCode = false; + var result = null; + + if (req.readyState === 4 && req.status === 200) { + result = JSON.parse(req.response); + + // handle application errors from playpen + if (typeof result['error'] === 'string') { + statusCode = ERROR; + result = 'Playpen Error: ' + result['error']; + } else if (typeof result['result'] === 'string') { + statusCode = SUCCESS; + result = result['result']; + + // handle rustc errors/warnings + // Need server support to get an accurate version of this. + if (result.indexOf("error:") !== -1) { + statusCode = ERROR; + } else if (result.indexOf("warning:") !== -1) { + statusCode = WARNING; + } + } + } + + callback(statusCode, result); + }; + + req.onerror = function(e) { + callback(false, null); + }; + + req.setRequestHeader("Content-Type", "application/json"); + req.send(data); + } + + // The callback to runProgram + function handleResult(statusCode, message) { + // Dispatch depending on result type + if (result == null) { + clearResultDiv(); + resultDiv.style.backgroundColor = errorColor; + resultDiv.innerHTML = errMsg; + } else if (statusCode === SUCCESS) { + handleSuccess(message); + } else if (statusCode === WARNING) { + handleWarning(message); + } else { + handleError(message); + } + } + + // Called on successful program run: display output and playground icon + function handleSuccess(message) { + resultDiv.style.backgroundColor = successColor; + displayOutput(escapeHTML(message), editor.getValue()); + } + + // Called when program run results in warning(s) + function handleWarning(message) { + resultDiv.style.backgroundColor = warningColor; + handleProblem(message, "warning"); + } + + // Called when program run results in error(s) + function handleError(message) { + resultDiv.style.backgroundColor = errorColor; + handleProblem(message, "error"); + } + + // Called on unsuccessful program run. Detects and prints problems (either + // warnings or errors) in program output and highlights relevant lines and text + // in the code. + function handleProblem(message, problem) { + // Getting list of ranges with problems + var lines = message.split(newLineRegex); + + // Cleaning up the message: keeps only relevant problem output + var cleanMessage = lines.map(function(line) { + if (line.startsWith("") || line.indexOf("^") !== -1) { + var errIndex = line.indexOf(problem + ": "); + if (errIndex !== -1) {return line.slice(errIndex);} + return ""; + } + + // Discard playpen messages, keep the rest + if (line.startsWith("playpen:")) {return "";} + return line; + }).filter(function(line) { + return line !== ""; + }).map(function(line) { + return escapeHTML(line); + }).join("
"); + + // Setting message + displayOutput(cleanMessage, editor.getValue()); + + // Highlighting the lines + var ranges = parseProblems(lines); + markers = ranges.map(function(range) { + return editor.getSession().addMarker(range, "ace-" + problem + "-line", + "fullLine", false); + }); + + // Highlighting the specific text + markers = markers.concat(ranges.map(function(range) { + return editor.getSession().addMarker(range, "ace-" + problem + "-text", + "text", false); + })); + } + + // Parses a problem message returning a list of ranges (row:col, row:col) where + // problems in the code have occured. + function parseProblems(lines) { + var ranges = []; + for (var i in lines) { + var line = lines[i]; + if (line.startsWith(":") && line.indexOf(": ") !== -1) { + var parts = line.split(/:\s?|\s+/, 5).slice(1, 5); + var ip = parts.map(function(p) { return parseInt(p, 10) - 1; }); + // console.log("line:", line, parts, ip); + ranges.push(new Range(ip[0], ip[1], ip[2], ip[3])); + } + } + + return ranges; + } + + // Registering handler for run button click + runButton.addEventListener("click", function(ev) { + resultDiv.style.display = "block"; + clearResultDiv(); + resultDiv.innerHTML = "Running..."; + + // clear previous markers, if any + markers.map(function(id) { editor.getSession().removeMarker(id); }); + + // Get the code, run the program + var program = editor.getValue(); + runProgram(program, handleResult); + }); + + // Display an output message and a link to the Rust playground + function displayOutput(message, program) { + var programUrl = "https://play.rust-lang.org/?code=" + + encodeURIComponent(program) + "&run=1"; + playLink.href = programUrl; + + clearResultDiv(); // clear resultDiv, then add + resultDiv.appendChild(playLink); // playLink icon and message + resultDiv.innerHTML += message; + } + + // Highlight active line when focused + editor.on('focus', function() { + editor.setHighlightActiveLine(true); + }); + + // Don't when not + editor.on('blur', function() { + editor.setHighlightActiveLine(false); + }); +}()); diff --git a/_includes/example.rs b/_includes/example.rs new file mode 100644 index 0000000..7691b23 --- /dev/null +++ b/_includes/example.rs @@ -0,0 +1,22 @@ +// This code is editable and runnable! +fn main() { + // A simple integer calculator: + // `+` or `-` means add or subtract by 1 + // `*` or `/` means multiply or divide by 2 + + let program = "+ + * - /"; + let mut accumulator = 0; + + for token in program.chars() { + match token { + '+' => accumulator += 1, + '-' => accumulator -= 1, + '*' => accumulator *= 2, + '/' => accumulator /= 2, + _ => { /* ignore everything else */ } + } + } + + println!("The program \"{}\" calculates the value {}", + program, accumulator); +} diff --git a/_includes/example.rs.html b/_includes/example.rs.html new file mode 100644 index 0000000..297af76 --- /dev/null +++ b/_includes/example.rs.html @@ -0,0 +1,23 @@ +
// This code is editable and runnable!
+fn main() {
+// A simple integer calculator:
+// `+` or `-` means add or subtract by 1
+// `*` or `/` means multiply or divide by 2
+
+let program = "+ + * - /";
+let mut accumulator = 0;
+
+for token in program.chars() {
+match token {
+    '+' => accumulator += 1,
+    '-' => accumulator -= 1,
+    '*' => accumulator *= 2,
+    '/' => accumulator /= 2,
+    _ => { /* ignore everything else */ }
+}
+}
+
+println!("The program \"{}\" calculates the value {}",
+   program, accumulator);
+}
+
diff --git a/_includes/include.js b/_includes/include.js new file mode 100644 index 0000000..4f1cf2f --- /dev/null +++ b/_includes/include.js @@ -0,0 +1,38 @@ +include = function() { + + // save references to save a few bytes + var args = arguments; + var doc = document; + + var toLoad = args.length; // load this many scripts + var lastArgument = args[toLoad - 1]; + var hasCallback = lastArgument.call; // is the last arg a callback? + if (hasCallback) { + toLoad --; + } + + function onScriptLoaded() { + var readyState = this.readyState; // we test for "complete" or "loaded" if on IE + if (!readyState || /ded|te/.test(readyState)) { + toLoad --; + if (!toLoad && hasCallback) { + lastArgument(); + } + } + } + + var script; + for (var i = 0; i < toLoad; i ++) { + + script = doc.createElement('script'); + script.src = arguments[i]; + script.async = true; + script.onload = script.onerror = script.onreadystatechange = onScriptLoaded; + ( + doc.head || + doc.getElementsByTagName('head')[0] + ).appendChild(script); + + } + +}; diff --git a/_includes/set_platform.js b/_includes/set_platform.js new file mode 100644 index 0000000..e1eacdd --- /dev/null +++ b/_includes/set_platform.js @@ -0,0 +1,49 @@ +function detect_platform() { + "use strict"; + var os = "unknown"; + + if (os == "unknown") { + if (navigator.platform == "Linux x86_64") {os = "x86_64-unknown-linux-gnu";} + if (navigator.platform == "Linux i686") {os = "i686-unknown-linux-gnu";} + } + + // I wish I knew by know, but I don't. Try harder. + if (os == "unknown") { + if (navigator.appVersion.indexOf("Win")!=-1) {os = "x86_64-pc-windows-gnu";} + if (navigator.appVersion.indexOf("Mac")!=-1) {os = "x86_64-apple-darwin";} + if (navigator.appVersion.indexOf("Linux")!=-1) {os = "x86_64-unknown-linux-gnu";} + } + + return os; +} + +(function () { + "use strict"; + var platform = detect_platform(); + + var rec_package_name = "1.5.0"; + var rec_version_type = "source"; + var rec_download_file = "rustc-1.5.0-src.tar.gz"; + + if (platform == "x86_64-unknown-linux-gnu") { + rec_version_type = "Linux binary"; + rec_download_file = "rust-" + rec_package_name + "-x86_64-unknown-linux-gnu.tar.gz"; + } else if (platform == "i686-unknown-linux-gnu") { + rec_version_type = "Linux binary"; + rec_download_file = "rust-" + rec_package_name + "-i686-unknown-linux-gnu.tar.gz"; + } else if (platform == "x86_64-apple-darwin") { + rec_version_type = "Mac installer"; + rec_download_file = "rust-" + rec_package_name + "-x86_64-apple-darwin.pkg"; + } else if (platform == "x86_64-pc-windows-gnu") { + rec_version_type = "Windows installer"; + rec_download_file = "rust-" + rec_package_name + "-x86_64-pc-windows-gnu.msi"; + } + + var rec_package_desc = rec_package_name + " (" + rec_version_type + ")"; + var rec_vers_div = document.getElementById("install-version"); + rec_vers_div.innerHTML = rec_package_desc; + + var rec_dl_addy = "https://static.rust-lang.org/dist/" + rec_download_file; + var rec_inst_link = document.getElementById("inst-link"); + rec_inst_link.setAttribute("href", rec_dl_addy); +}()); diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..5c7e3aa --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,95 @@ + + + + + + {{ page.title }} + + + + + + + + + + +
+ + +
+ {{ content }} + + diff --git a/css/bootstrap.css b/css/bootstrap.css new file mode 100644 index 0000000..1379b03 --- /dev/null +++ b/css/bootstrap.css @@ -0,0 +1,601 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +header { + display: block; +} +a { + background: transparent; +} +a:active, +a:hover { + outline: 0; +} +b { + font-weight: bold; +} +img { + border: 0; +} +pre { + overflow: auto; +} +pre { + font-family: monospace, monospace; + font-size: 1em; +} +@media print {* { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + pre { + border: 1px solid #999; + + page-break-inside: avoid; + } + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2 { + orphans: 3; + widows: 3; + } + h2 { + page-break-after: avoid; + }} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 62.5%; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +a { + color: #428bca; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +img { + vertical-align: middle; +} +.img-responsive { + display: block; + max-width: 100%; + height: auto; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +h2 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h2 { + margin-top: 20px; + margin-bottom: 10px; +} +h2 { + font-size: 30px; +} +p { + margin: 0 0 10px; +} + +ul { + margin-top: 0; + margin-bottom: 10px; +} +ul ul { + margin-bottom: 0; +} + +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) {.container { + width: 750px; + }} +@media (min-width: 992px) {.container { + width: 970px; + }} +@media (min-width: 1200px) {.container { + width: 1170px; + }} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus { + color: #333; + text-decoration: none; +} +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active { + color: #333; + background-color: #ebebeb; + border-color: #adadad; +} +.btn-default:active { + background-image: none; +} +.btn-primary { + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active { + color: #fff; + background-color: #3276b1; + border-color: #285e8e; +} +.btn-primary:active { + background-image: none; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.container:before, +.container:after, +.row:before, +.row:after { + display: table; + content: " "; +} +.container:after, +.row:after { + clear: both; +} +@-ms-viewport { + width: device-width; +} \ No newline at end of file diff --git a/css/ides.css b/css/ides.css new file mode 100644 index 0000000..f98f590 --- /dev/null +++ b/css/ides.css @@ -0,0 +1,10 @@ +p.clear { + clear: both; +} +div.contents { + margin: 20px; + padding: 20px; + float: right; + border: 1px black solid; + border-radius: 20px; +} diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..55b93a0 --- /dev/null +++ b/css/style.css @@ -0,0 +1,425 @@ +@font-face { + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 300; + src: local('Fira Sans Light'), url("../fonts/FiraSans-Light.woff") format('woff'); +} +@font-face { + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 400; + src: local('Fira Sans'), url("../fonts/FiraSans-Regular.woff") format('woff'); +} +@font-face { + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 500; + src: local('Fira Sans Medium'), url("../fonts/FiraSans-Medium.woff") format('woff'); +} +@font-face { + font-family: 'fontello'; + src: url('data:application/octet-stream;base64,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') format('woff'), + url('data:application/octet-stream;base64,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BkUrIyA8IC4jOLEmARQrLbA8LLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEmARQrLbA9LLAwKy6xJgEUKy2wPiywMSshIyAgPLAEI0IjOLEmARQrsARDLrAmKy2wPyywABUgR7AAI0KyAAEBFRQTLrAsKi2wQCywABUgR7AAI0KyAAEBFRQTLrAsKi2wQSyxAAEUE7AtKi2wQiywLyotsEMssAAWRSMgLiBGiiNhOLEmARQrLbBELLAII0KwQystsEUssgAAPCstsEYssgABPCstsEcssgEAPCstsEgssgEBPCstsEkssgAAPSstsEossgABPSstsEsssgEAPSstsEwssgEBPSstsE0ssgAAOSstsE4ssgABOSstsE8ssgEAOSstsFAssgEBOSstsFEssgAAOystsFIssgABOystsFMssgEAOystsFQssgEBOystsFUssgAAPistsFYssgABPistsFcssgEAPistsFgssgEBPistsFkssgAAOistsFossgABOistsFsssgEAOistsFwssgEBOistsF0ssDIrLrEmARQrLbBeLLAyK7A2Ky2wXyywMiuwNystsGAssAAWsDIrsDgrLbBhLLAzKy6xJgEUKy2wYiywMyuwNistsGMssDMrsDcrLbBkLLAzK7A4Ky2wZSywNCsusSYBFCstsGYssDQrsDYrLbBnLLA0K7A3Ky2waCywNCuwOCstsGkssDUrLrEmARQrLbBqLLA1K7A2Ky2wayywNSuwNystsGwssDUrsDgrLbBtLCuwCGWwAyRQeLABFTAtAAAAS7gAyFJYsQEBjlm5CAAIAGMgsAEjRLADI3CyBCgJRVJEsgoCByqxBgFEsSQBiFFYsECIWLEGA0SxJgGIUVi4BACIWLEGAURZWVlZuAH/hbAEjbEFAEQAAA==') format('truetype'); + font-weight: normal; + font-style: normal; +} + +body { + font-family: 'Fira Sans', "Helvetica Neue", Helvetica, Arial, sans-serif; + margin-top: 20px; + margin-bottom: 10px; + /* max-width: 820px; */ +} +p { + margin-top: 1.2em; + margin-bottom: 1.2em; +} +.pitch b { + font-weight: 400; +} +li { + margin-bottom: .5em; +} +h1 { + font-size: 2em; + margin-top: 1.2em; + margin-bottom: 0.5em; +} + +ul { + padding-left: 30px; +} +ul.menu { + font-size: 1em; + margin: 0; + padding: 0; + text-align: center; +} +ul.menu li { + list-style-type: none; + margin-top: 0em; + margin-bottom: 0em; +} +ul.menu h2 { + font-size: 15.4px; + font-weight: 500; + margin: .8em 0; +} +ul.menu li>ul { + margin-top: .5em; + padding-left: 0em; + line-height: 1.5em; +} + +.menu img { + margin: 0 auto 20px auto; +} +@media (min-width: 992px) { + ul.menu { + text-align: left; + } + .menu img { + margin: 0; + } +} + +h2 { + font-weight: 500; + font-size: 18.5px; /* gridfit */ +} +h3 { + font-weight: 500; +} + +.side-header h2 { + font-weight: 500; + font-size: 18.5px; + line-height: 24px; + margin-top: 7px; +} + +.side-header h3 { + font-size: 1em; + margin-top: 0px; +} + +.side-header p { + color: #777; +} + +.table-features { + width: 100%; + margin-bottom: 18px; + border: 1px solid #ccc; + border-radius: 3px; + border-collapse: inherit; +} +.table-features td { + padding: 6px 12px; + border: none; +} + +div.install { + margin-top: 2.5em; + margin-bottom: 1.5em; +} +@media (min-width: 662px) { + div.install { + margin-top: 5em; + } +} + +.table-installers { + border-spacing: 4px; + border: 0px; + empty-cells: hide; +} + +.table-installers td { + padding: 0px; +} + +.table-installers td.inst-type { + border: 0px; + color: black; + text-align: left; + width: 13em; +} + +.table-installers div.inst-button { + border: 1px solid #ccc; + text-align: center; + border-radius: 3px; + padding: 0.3em; +} + +.table-installers div.inst-button:hover { + border-color: #428BCA; + color: white; + background-color: #428BCA; +} + +.table-installers a { + text-decoration: none; +} + +.install-row { + margin-bottom: 0em; +} + +p.pitch { + font-size: 25px; + font-weight: 300; + text-align: center; +} +@media (min-width: 992px) { + p.pitch { + font-size: 25px; + margin-top: 2.7em; + margin-bottom: 1em; + margin-right: 1em; + text-align: left; + } +} + +p.pitch a { + font-size: 80%; +} + +.install-box { + color: #777; + text-align: right; + font-size: 130%; + margin-top: 2em; +} + +.version-rec-box-inner { + display: block; + font-size: 12px; + text-align: center; +} + +hr { + margin-top: 2em; + margin-bottom: 3em; +} + +.asterisk { + margin-left: 0px; + color: #428BCA; +} + +.footnote { + color: #777; + text-align: right; + font-size: 12px; + padding: 0 15px; +} + +.laundry-list { + font-size: 16px; + list-style-type: square; +} + +.install-box a.btn { + display: block; + margin:1em auto; + max-width: 250px; +} + +ul.laundry-list { + column-count: 2; + -moz-column-count: 2; + -webkit-column-count: 2; + margin-bottom: 20px; +} + +.resp-block { + display: none; +} + +@media (min-width: 992px) { + .install-box a.btn { + font-size: 18px; + padding: 10px 15px; + } + ul.laundry-list { + column-count: auto; + -moz-column-count: auto; + -webkit-column-count: auto; + } + img.ribbon { + display: inline !important; + position: absolute; + top: 0; + right: 0; + border: 0; + width: 149px; + height: 149px; + } + ul.menu .col-xs-12 { + padding-left: 0; + } + .resp-block { + display: block; + } +} + +#editor { + padding: none; + margin: none; + width: 100%; + min-height: 340px; + font-size: 13px; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + white-space: pre-wrap; +} + +#active-code { + position: relative; + display: none; + padding: 10px; + border-radius: 4px; + background-color: #FDFDFD; + border: 1px solid #CCC; +} + +#run-code { + position: absolute; + z-index: 10; + float: right; + right: 8px; + top: 8px; + outline: none; +} + + [class^="icon-"]:before, [class*=" icon-"]:before { + cursor: pointer; + cursor: hand; /* cursor: hand ensures IE 5.5 */ + font-family: "fontello"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + position: relative; + float: right; + font-size: 120%; + +} + +.icon-link-ext:before { content: '\e800'; } /* '' */ + +#result { + background-color: #E2EEF6; + margin-top: 10px; + padding: 10px; + display: none; + border-radius: 4px; +} + +.ace-error-text, .ace-error-line, .ace-warning-text, .ace-warning-line { + position: absolute; +} + +.ace-error-text { + background-color: #e9abab; +} + +.ace-error-line { + background-color: #F6E2E2; +} + +.ace-warning-text { + background-color: #FFEF00; +} + +.ace-warning-line { + background-color: #FFFBCB; +} + +.ace-chrome .ace_comment { + color: #565656; +} + +.ace-chrome .ace-keyword { + color: #8959A8; +} + +.ace-chrome .ace_entity.ace_name.ace_function { + color: #4271AE; +} + +.ace-chrome .ace_constant.ace_numeric { + color: #718C00; +} + +.ace-chrome .ace_keyword.ace_operator { + color: black; +} + +.ace-chrome .ace_string { + color: #3E999F; +} + +#active-code, #editor { + background-color: #FAFAFA; +} + +.more-examples { + text-align: right; + margin: 5px 10px 0 0; +} + +.chprs-title { + text-transform: uppercase; +} + +.cphrs { + font-face: monospace; + text-align: center; +} + +.cphrs-title-box { + border-left: 1px solid #222; +} + +dl { + margin-top: 0; + margin-bottom: 20px; +} + +dd, dt { + line-height: 1.42857; +} + +dt { + font-weight: bold; +} + +.dl-horizontal dt { + float: left; + width: 50px; + overflow: hidden; + clear: left; + text-align: left; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 60px; +} \ No newline at end of file diff --git a/fonts/FiraSans-Light.woff b/fonts/FiraSans-Light.woff new file mode 100644 index 0000000..af97f50 Binary files /dev/null and b/fonts/FiraSans-Light.woff differ diff --git a/fonts/FiraSans-Medium.woff b/fonts/FiraSans-Medium.woff new file mode 100644 index 0000000..61a59e0 Binary files /dev/null and b/fonts/FiraSans-Medium.woff differ diff --git a/fonts/FiraSans-Regular.woff b/fonts/FiraSans-Regular.woff new file mode 100644 index 0000000..16e74f2 Binary files /dev/null and b/fonts/FiraSans-Regular.woff differ diff --git a/fonts/LICENSE b/fonts/LICENSE new file mode 100644 index 0000000..b4a3967 --- /dev/null +++ b/fonts/LICENSE @@ -0,0 +1,99 @@ +Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ +with Reserved Font Name Fira Sans. + +Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ +with Reserved Font Name Fira Mono. + +Copyright (c) 2014, Telefonica S.A. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/fontello.woff b/fonts/fontello.woff new file mode 100644 index 0000000..072ff13 Binary files /dev/null and b/fonts/fontello.woff differ diff --git a/img/cphrs-logo.png b/img/cphrs-logo.png new file mode 100644 index 0000000..a70df09 Binary files /dev/null and b/img/cphrs-logo.png differ diff --git a/img/cphrs_sketch_block.png b/img/cphrs_sketch_block.png new file mode 100644 index 0000000..ab27eca Binary files /dev/null and b/img/cphrs_sketch_block.png differ diff --git a/img/cphrs_sketch_block_logo.png b/img/cphrs_sketch_block_logo.png new file mode 100644 index 0000000..1154649 Binary files /dev/null and b/img/cphrs_sketch_block_logo.png differ diff --git a/img/cphrs_smallz.png b/img/cphrs_smallz.png new file mode 100644 index 0000000..362f3da Binary files /dev/null and b/img/cphrs_smallz.png differ diff --git a/img/cphrs_urban_sketch.png b/img/cphrs_urban_sketch.png new file mode 100644 index 0000000..e57447a Binary files /dev/null and b/img/cphrs_urban_sketch.png differ diff --git a/img/cphrs_varius_multiplex.png b/img/cphrs_varius_multiplex.png new file mode 100644 index 0000000..911620e Binary files /dev/null and b/img/cphrs_varius_multiplex.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..81d0e7a --- /dev/null +++ b/index.html @@ -0,0 +1,103 @@ +--- +layout: default +title: The Copenhagen Rust Group +--- + +
+
+

+ We are a Copenhagen-based group of programmers enthusiastic + about the programming language Rust, a systems + programming language developed by Mozilla. +

+

We organize events, meetups and hackathons, so stay tuned + on this site for future events!

+
+
+ +
+
+

Upcoming events

+
+
+

Jan

+

13

+

2016

+
+
+

Hackathon

+ +
+
Where
+
Kronprinsessegade 54, 5th floor
+ +
When
+
18:00
+
+ +

We get together to hack some Rust. If you would like to attend, please let us know by sending an e-mail to laumann.thomas@gmail.com

+
+
+
+
+

Past events

+
+
+

May

+

15

+

2015

+
+
+

Rust 1.0 Release Party

+ +
+
Where
+
Robocat office, Pilestræde 43, 2nd floor
+ +
When
+
18:00
+
+ +

Along with other Rust-enthusiastic groups, we had a Rust 1.0 release party, with t-shirts and everything! Link to the event.

+
+
+ +
+
+

Mar

+

18

+

2015

+
+
+

Rust - Copenhagen Tech + Polyglot Meetup

+ +
+
Where
+
Kronprinsessegade 54, 4th floor
+ +
When
+
19:00
+
+ +

A Rust event organized in collaboration with + the Copenhagen Tech + Polyglots. We had a good evening talking all things + Rust, and, of course, stickers. See the + event here.

+
+
+
+
+ + + + + + + + + + + + diff --git a/logos/cargo.png b/logos/cargo.png new file mode 100644 index 0000000..9a94dcc Binary files /dev/null and b/logos/cargo.png differ diff --git a/logos/error.png b/logos/error.png new file mode 100644 index 0000000..ec71bd0 Binary files /dev/null and b/logos/error.png differ diff --git a/logos/favicon.ico b/logos/favicon.ico new file mode 100644 index 0000000..b8ad237 Binary files /dev/null and b/logos/favicon.ico differ diff --git a/logos/forkme.png b/logos/forkme.png new file mode 100644 index 0000000..0b3bdc8 Binary files /dev/null and b/logos/forkme.png differ diff --git a/logos/rust-logo-128x128-blk-v2.png b/logos/rust-logo-128x128-blk-v2.png new file mode 100644 index 0000000..74b4bd6 Binary files /dev/null and b/logos/rust-logo-128x128-blk-v2.png differ diff --git a/logos/rust-logo-128x128-blk.png b/logos/rust-logo-128x128-blk.png new file mode 100644 index 0000000..ecea9e1 Binary files /dev/null and b/logos/rust-logo-128x128-blk.png differ diff --git a/logos/rust-logo-128x128.png b/logos/rust-logo-128x128.png new file mode 100644 index 0000000..3b9087b Binary files /dev/null and b/logos/rust-logo-128x128.png differ diff --git a/logos/rust-logo-16x16-blk.png b/logos/rust-logo-16x16-blk.png new file mode 100644 index 0000000..7490ca3 Binary files /dev/null and b/logos/rust-logo-16x16-blk.png differ diff --git a/logos/rust-logo-16x16.png b/logos/rust-logo-16x16.png new file mode 100644 index 0000000..b0fd953 Binary files /dev/null and b/logos/rust-logo-16x16.png differ diff --git a/logos/rust-logo-196x196-blk.png b/logos/rust-logo-196x196-blk.png new file mode 100644 index 0000000..9df6ebe Binary files /dev/null and b/logos/rust-logo-196x196-blk.png differ diff --git a/logos/rust-logo-256x256-blk.png b/logos/rust-logo-256x256-blk.png new file mode 100644 index 0000000..f9668c5 Binary files /dev/null and b/logos/rust-logo-256x256-blk.png differ diff --git a/logos/rust-logo-256x256.png b/logos/rust-logo-256x256.png new file mode 100644 index 0000000..63506dd Binary files /dev/null and b/logos/rust-logo-256x256.png differ diff --git a/logos/rust-logo-32x32-blk.png b/logos/rust-logo-32x32-blk.png new file mode 100644 index 0000000..9cc1452 Binary files /dev/null and b/logos/rust-logo-32x32-blk.png differ diff --git a/logos/rust-logo-32x32.png b/logos/rust-logo-32x32.png new file mode 100644 index 0000000..3736aed Binary files /dev/null and b/logos/rust-logo-32x32.png differ diff --git a/logos/rust-logo-48x48-blk.png b/logos/rust-logo-48x48-blk.png new file mode 100644 index 0000000..b0e329d Binary files /dev/null and b/logos/rust-logo-48x48-blk.png differ diff --git a/logos/rust-logo-512x512-blk.png b/logos/rust-logo-512x512-blk.png new file mode 100644 index 0000000..0daa1b5 Binary files /dev/null and b/logos/rust-logo-512x512-blk.png differ diff --git a/logos/rust-logo-512x512.png b/logos/rust-logo-512x512.png new file mode 100644 index 0000000..38484c6 Binary files /dev/null and b/logos/rust-logo-512x512.png differ diff --git a/logos/rust-logo-64x64-blk.png b/logos/rust-logo-64x64-blk.png new file mode 100644 index 0000000..27bdac6 Binary files /dev/null and b/logos/rust-logo-64x64-blk.png differ diff --git a/logos/rust-logo-64x64.png b/logos/rust-logo-64x64.png new file mode 100644 index 0000000..b7a4f6c Binary files /dev/null and b/logos/rust-logo-64x64.png differ diff --git a/logos/rust-logo-all-blk.ico b/logos/rust-logo-all-blk.ico new file mode 100644 index 0000000..608f6a4 Binary files /dev/null and b/logos/rust-logo-all-blk.ico differ diff --git a/logos/rust-logo-blk.svg b/logos/rust-logo-blk.svg new file mode 100644 index 0000000..de4d53d --- /dev/null +++ b/logos/rust-logo-blk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/logos/rust-logo-large-blk.ico b/logos/rust-logo-large-blk.ico new file mode 100644 index 0000000..e2f5b4c Binary files /dev/null and b/logos/rust-logo-large-blk.ico differ diff --git a/logos/rust-logo-small-blk.ico b/logos/rust-logo-small-blk.ico new file mode 100644 index 0000000..3b595bf Binary files /dev/null and b/logos/rust-logo-small-blk.ico differ -- cgit v1.2.3