217 lines
8.2 KiB
HTML
217 lines
8.2 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Khaos im Kiez</title>
|
|
<meta name="description" content="Khaos im Kiez kleine Chaos-Veranstaltung des CCC Berlin, 28.-29. November 2026, Marienstraße 11, Berlin.">
|
|
<link rel="icon" type="image/png" href="logo.png">
|
|
<link rel="alternate" hreflang="en" href="en.html">
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
<body>
|
|
<main class="term">
|
|
|
|
<p class="prompt"><b>visitor@khaos-im-kiez</b>:~$ cat README<span class="cursor"></span></p>
|
|
|
|
<header>
|
|
<img src="logo.png" alt="KiK-Logo: roter Stern mit Tastatur und den Buchstaben kik" width="150" height="150">
|
|
<div>
|
|
<h1>Khaos<br>im <span>Kiez</span></h1>
|
|
<p class="tagline">CCC Berlin · 28. – 29.11.2026</p>
|
|
</div>
|
|
</header>
|
|
|
|
<nav aria-label="Navigation">
|
|
<a href="#infos">[1] Infos</a>
|
|
<a href="#mitmachen">[2] Mitmachen</a>
|
|
<a href="#anfahrt">[3] Anfahrt</a>
|
|
<a class="lang" href="en.html" hreflang="en">[EN]</a>
|
|
</nav>
|
|
|
|
<section id="infos">
|
|
<h2>1 Infos</h2>
|
|
<p>
|
|
Khaos im Kiez ist ein kleines Chaos-Event, back to the roots: inspiriert von
|
|
anderen kleinen Chaos-Events. Ein Wochenende zum Chillen und um die Seite
|
|
von Chaos-Events zu erleben, für die bei größeren Events oft keine Zeit
|
|
mehr bleibt.
|
|
</p>
|
|
<p>
|
|
Du kannst einen Talk oder Workshop halten, an deinen Projekten schrauben,
|
|
gemeinsam hacken, löten, basteln oder einfach vorbeikommen, zuhören und
|
|
Leute kennenlernen. Alle sind willkommen, die Lust auf $Dinge, Neugier und
|
|
Chaos mitbringen.
|
|
</p>
|
|
<dl class="kv">
|
|
<dt>Was</dt> <dd>Khaos im Kiez (KiK)</dd>
|
|
<dt>Wann</dt> <dd>Sa 28.11. – So 29.11.2026, 11:00 – 23:59</dd>
|
|
<dt>Wo</dt> <dd>Marienstraße 11, 10117 Berlin</dd>
|
|
<dt>Wer</dt> <dd>Chaos Computer Club Berlin</dd>
|
|
<dt>Preis</dt> <dd>0,00 € (Ticket trotzdem nötig, ~50 Plätze)</dd>
|
|
<dt>Fahrplan</dt> <dd><a href="https://cfp.berlin.ccc.de">cfp.berlin.ccc.de</a></dd>
|
|
<dt>Essen</dt> <dd>Ewiges Frühstück, vegan</dd>
|
|
<dt>Regeln</dt> <dd><a href="coc.html">Code of Conduct</a></dd>
|
|
|
|
</dl>
|
|
</section>
|
|
|
|
<section id="mitmachen">
|
|
<h2>2 Mitmachen</h2>
|
|
<p>
|
|
<b>Ticket:</b> Anmeldung über den Ticketshop. Das Ticket ist kostenlos,
|
|
aber die Plätze sind begrenzt.
|
|
</p>
|
|
<p>
|
|
<a class="btn hot" href="https://tickets.berlin.ccc.de/cccb/kik-v0.1/">Ticket sichern</a>
|
|
</p>
|
|
<p>
|
|
<b>Talks & Workshops:</b> Reiche deinen Beitrag im Call for Participation ein
|
|
und schau dir später den Fahrplan an.
|
|
</p>
|
|
<p>
|
|
<a class="btn" href="https://cfp.berlin.ccc.de/kik-v01/cfp">Talk einreichen</a>
|
|
<a class="btn" href="https://cfp.berlin.ccc.de/kik-v01/schedule">Fahrplan</a>
|
|
</p>
|
|
<p>
|
|
<b>Sonstiges:</b> Du willst anders helfen oder hast Fragen? Schreib an
|
|
aprl [at] berlin [dot] ccc [dot] de.
|
|
</p>
|
|
</section>
|
|
|
|
<section id="anfahrt">
|
|
<h2>3 Anfahrt</h2>
|
|
<dl class="kv">
|
|
<dt>Adresse</dt> <dd>Clubräume im Hinterhof der Marienstraße 11, 10117 Berlin</dd>
|
|
<dt>Koordinaten</dt> <dd>52,52194° N, 13,38261° O</dd>
|
|
<dt>Fahrrad</dt> <dd>Im Innenhof gibt es eine begrenzte Zahl an Fahrradständern. Auf dem Weg liegen viele Fahrradstraßen, nutz die am besten, z. B. mit <a href="http://www.bbbike.de/">BBBike.de</a>.</dd>
|
|
<dt>ÖPNV</dt> <dd>Der Club liegt direkt beim S+U-Bahnhof Friedrichstraße (auch Regionalbahnen). Vom oberirdischen S-Bahn-Steig (S3/S5/S7) nimmst du den Ausgang Schiffbauerdamm und gehst unter der Bahnbrücke über die Spree. Über die Albrechtstraße kommst du zur Marienstraße.</dd>
|
|
<dt>Fernverkehr</dt> <dd>Aussteigen in Berlin Hauptbahnhof, dann mit S-Bahn oder Regionalbahn Richtung Osten eine Station bis Friedrichstraße. Bahnhof Richtung Spree verlassen, über die Fußgängerbrücke und der Albrechtstraße bis zur Stichstraße Marienstraße folgen.</dd>
|
|
<dt>Flugzeug</dt> <dd>BER: Airport Express (RE7, RB14) oder S9 bis Friedrichstraße, alternativ FEX bis Hauptbahnhof (dann wie Fernverkehr). Achtung: Terminal 5 (früher SXF) ist nicht mit dem Rest des BER verbunden, dort fährt nur die S9. Flugplatz Strausberg (EDAY): S7 direkt bis Friedrichstraße.</dd>
|
|
<dt>Auto</dt> <dd>Zufahrt von Hauptbahnhof oder Brandenburger Tor über die Luisenstraße. Von der Friedrichstraße entweder über Schiffbauerdamm und Albrechtstraße (Außengastronomie und Kopfsteinpflaster) oder über Reinhardstraße und Luisenstraße (die Albrechtstraße ist nur in Gegenrichtung befahrbar).</dd>
|
|
<dt>Parken</dt> <dd>Achtung: Es gibt kaum Parkplätze, und die Marienstraße und alle umliegenden Straßen sind parkraumbewirtschaftet.</dd>
|
|
</dl>
|
|
<p>
|
|
<a href="https://www.openstreetmap.org/node/3872556357#map=20/52.5217003/13.3828041&layers=H">[ Karte (OpenStreetMap) ]</a>
|
|
</p>
|
|
</section>
|
|
|
|
<footer>
|
|
<p>
|
|
<a href="https://berlin.ccc.de/page/impressum/">Impressum</a> ·
|
|
<a href="https://berlin.ccc.de/">CCC Berlin</a>
|
|
</p>
|
|
<p class="prompt"><b>visitor@khaos-im-kiez</b>:~$ <span id="term-input"></span><span class="cursor"></span></p>
|
|
</footer>
|
|
|
|
</main>
|
|
<script>
|
|
(function(){
|
|
const term = document.getElementById('term-input');
|
|
if(!term) return;
|
|
let buf = '';
|
|
let ws = null;
|
|
let connected = false;
|
|
let firstEnter = true;
|
|
|
|
function appendOutput(text){
|
|
if(!text) return;
|
|
// append to term display (simple)
|
|
term.textContent += text;
|
|
}
|
|
|
|
document.addEventListener('keydown', function(e){
|
|
const t = e.target;
|
|
if(t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable)) return;
|
|
if(e.ctrlKey || e.altKey || e.metaKey) return;
|
|
|
|
if(e.key === 'Backspace'){
|
|
e.preventDefault();
|
|
if(connected && ws && ws.readyState === WebSocket.OPEN){
|
|
ws.send('\b');
|
|
return;
|
|
}
|
|
buf = buf.slice(0, -1);
|
|
term.textContent = buf;
|
|
return;
|
|
}
|
|
if(e.key === 'Enter'){
|
|
e.preventDefault();
|
|
if(firstEnter && !connected){
|
|
// open ssh over websocket connection with username/password auth
|
|
// keep connection open; run command after connection
|
|
const line = buf;
|
|
buf = '';
|
|
firstEnter = false;
|
|
term.textContent = term.textContent + '\n';
|
|
// try to connect - endpoint can be configured
|
|
const wsUrl = (location.protocol === 'https:' ? 'wss://' : 'ws://') + location.host + '/ssh';
|
|
try {
|
|
ws = new WebSocket(wsUrl);
|
|
ws.onopen = function(){
|
|
connected = true;
|
|
// send auth info and/or initial command
|
|
try {
|
|
ws.send(JSON.stringify({type:'auth', line: line}));
|
|
} catch(err) {
|
|
ws.send(line + '\n');
|
|
}
|
|
ws.send('\n'); // run command/start shell
|
|
};
|
|
ws.onmessage = function(ev){
|
|
appendOutput(ev.data);
|
|
};
|
|
ws.onclose = function(){
|
|
connected = false;
|
|
};
|
|
ws.onerror = function(){
|
|
connected = false;
|
|
};
|
|
} catch(err) {
|
|
// fallback
|
|
}
|
|
return;
|
|
}
|
|
if(connected && ws && ws.readyState === WebSocket.OPEN){
|
|
ws.send('\r');
|
|
term.textContent = term.textContent + '\n';
|
|
return;
|
|
}
|
|
buf += '\n';
|
|
term.textContent = buf;
|
|
return;
|
|
}
|
|
if(e.key === 'Escape'){
|
|
e.preventDefault();
|
|
if(connected && ws && ws.readyState === WebSocket.OPEN){
|
|
ws.send('\x1b');
|
|
return;
|
|
}
|
|
buf = '';
|
|
term.textContent = buf;
|
|
return;
|
|
}
|
|
if(e.key === 'Tab'){
|
|
e.preventDefault();
|
|
if(connected && ws && ws.readyState === WebSocket.OPEN){
|
|
ws.send('\t');
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
if(e.key.length === 1){
|
|
e.preventDefault();
|
|
if(connected && ws && ws.readyState === WebSocket.OPEN){
|
|
ws.send(e.key);
|
|
// don't echo locally if server echoes; but keep simple
|
|
return;
|
|
}
|
|
buf += e.key;
|
|
term.textContent = buf;
|
|
return;
|
|
}
|
|
});
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|