This commit is contained in:
@@ -743,76 +743,209 @@ APP_HTML = r"""<!doctype html>
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Org Site Authoring</title>
|
<title>Org Site Authoring</title>
|
||||||
<style>
|
<style>
|
||||||
:root { color-scheme: light; --bg: #f4f5f2; --sidebar: #e8ece6; --panel: #fffefa; --panel-2: #f8faf7; --ink: #1e2524; --muted: #67706d; --line: #d7ddd6; --line-strong: #b9c5bd; --accent: #0f6861; --accent-2: #a64f2e; --focus: rgba(15, 104, 97, 0.16); --shadow: 0 16px 36px rgba(31, 42, 39, 0.08); }
|
:root {
|
||||||
|
color-scheme: dark;
|
||||||
|
--bg: #11100d;
|
||||||
|
--bg-2: #191814;
|
||||||
|
--sidebar: #1d1a16;
|
||||||
|
--panel: #f3ead7;
|
||||||
|
--panel-2: #e7dac0;
|
||||||
|
--panel-dark: #242019;
|
||||||
|
--ink: #282016;
|
||||||
|
--ink-light: #f7ecd5;
|
||||||
|
--muted: #9d9078;
|
||||||
|
--muted-dark: #695d4b;
|
||||||
|
--line: rgba(202, 179, 126, 0.28);
|
||||||
|
--line-strong: rgba(217, 190, 124, 0.56);
|
||||||
|
--accent: #b89145;
|
||||||
|
--accent-2: #7d2f36;
|
||||||
|
--accent-3: #446a57;
|
||||||
|
--focus: rgba(184, 145, 69, 0.3);
|
||||||
|
--shadow: 0 24px 70px rgba(0, 0, 0, 0.34);
|
||||||
|
--paper-shadow: 0 22px 48px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.52);
|
||||||
|
}
|
||||||
* { box-sizing: border-box; }
|
* { box-sizing: border-box; }
|
||||||
body { margin: 0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: var(--bg); color: var(--ink); }
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 18% 12%, rgba(125, 47, 54, 0.24), transparent 28%),
|
||||||
|
radial-gradient(circle at 84% 18%, rgba(68, 106, 87, 0.24), transparent 24%),
|
||||||
|
linear-gradient(135deg, #0f0e0b 0%, #17140f 42%, #211b14 100%);
|
||||||
|
color: var(--ink-light);
|
||||||
|
}
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
inset: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0.2;
|
||||||
|
background-image:
|
||||||
|
linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
|
||||||
|
linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
|
||||||
|
background-size: 34px 34px, 34px 34px;
|
||||||
|
mask-image: linear-gradient(90deg, rgba(0,0,0,0.9), rgba(0,0,0,0.35));
|
||||||
|
}
|
||||||
button, input, textarea, select { font: inherit; }
|
button, input, textarea, select { font: inherit; }
|
||||||
button { border: 1px solid var(--line); background: var(--panel); color: var(--ink); min-height: 38px; padding: 0 12px; border-radius: 7px; cursor: pointer; transition: background 140ms ease, border-color 140ms ease, box-shadow 140ms ease, color 140ms ease; }
|
button {
|
||||||
button:hover { border-color: var(--line-strong); background: #ffffff; }
|
border: 1px solid var(--line);
|
||||||
|
background: rgba(243, 234, 215, 0.08);
|
||||||
|
color: var(--ink-light);
|
||||||
|
min-height: 38px;
|
||||||
|
padding: 0 12px;
|
||||||
|
border-radius: 7px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: transform 140ms ease, background 140ms ease, border-color 140ms ease, box-shadow 140ms ease, color 140ms ease;
|
||||||
|
}
|
||||||
|
button:hover { transform: translateY(-1px); border-color: var(--line-strong); background: rgba(243, 234, 215, 0.14); box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18); }
|
||||||
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible { outline: 0; box-shadow: 0 0 0 3px var(--focus); border-color: var(--accent); }
|
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible { outline: 0; box-shadow: 0 0 0 3px var(--focus); border-color: var(--accent); }
|
||||||
button.primary { background: var(--accent); color: white; border-color: var(--accent); box-shadow: 0 8px 20px rgba(15, 104, 97, 0.18); }
|
button.primary { background: linear-gradient(180deg, #c79d4e, #96702f); color: #18130d; border-color: #d6b566; font-weight: 820; box-shadow: 0 12px 28px rgba(184, 145, 69, 0.22); }
|
||||||
button.primary:hover { background: #0b5953; border-color: #0b5953; }
|
button.primary:hover { background: linear-gradient(180deg, #d3ad5b, #a87d35); border-color: #e0c378; }
|
||||||
button.icon { min-width: 38px; padding: 0 10px; font-weight: 700; }
|
button.icon { min-width: 38px; padding: 0 10px; font-weight: 800; font-family: Georgia, "Times New Roman", serif; }
|
||||||
.app { min-height: 100vh; display: grid; grid-template-columns: minmax(300px, 420px) 1fr; }
|
.app { position: relative; min-height: 100vh; display: grid; grid-template-columns: minmax(320px, 430px) 1fr; }
|
||||||
aside { border-right: 1px solid var(--line); background: var(--sidebar); padding: 18px; overflow: auto; max-height: 100vh; }
|
aside {
|
||||||
main { padding: 24px clamp(18px, 3vw, 42px); overflow: auto; max-height: 100vh; }
|
border-right: 1px solid var(--line);
|
||||||
.topbar { display: flex; align-items: center; gap: 10px; justify-content: space-between; margin-bottom: 16px; }
|
background: linear-gradient(180deg, rgba(29, 26, 22, 0.96), rgba(18, 17, 14, 0.98));
|
||||||
h1 { font-size: 20px; margin: 0; font-weight: 760; }
|
padding: 20px;
|
||||||
h2 { font-size: 13px; margin: 22px 0 9px; color: var(--muted); font-weight: 760; text-transform: uppercase; }
|
overflow: auto;
|
||||||
.status { border: 1px solid var(--line); background: rgba(255, 254, 250, 0.78); padding: 10px 12px; border-radius: 8px; font-size: 13px; margin-bottom: 14px; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) inset; }
|
max-height: 100vh;
|
||||||
.status.running { border-color: #d1a15a; background: #fff9ec; }
|
box-shadow: 18px 0 42px rgba(0, 0, 0, 0.22);
|
||||||
.status.ok { border-color: #86b9a6; background: #f3fbf7; }
|
}
|
||||||
.status.fail { border-color: #d69a92; background: #fff4f2; }
|
main { padding: 28px clamp(20px, 3vw, 46px); overflow: auto; max-height: 100vh; }
|
||||||
.quick-link { display: inline-block; color: var(--accent); font-size: 13px; margin: -7px 0 14px; text-decoration: none; }
|
.topbar { display: flex; align-items: center; gap: 12px; justify-content: space-between; margin-bottom: 18px; }
|
||||||
.quick-link:hover { text-decoration: underline; }
|
h1 { font-family: Georgia, "Times New Roman", serif; font-size: 25px; margin: 0; font-weight: 700; letter-spacing: 0; color: #f8edd7; }
|
||||||
.filters { display: grid; gap: 8px; margin-bottom: 14px; }
|
main h1 { font-size: 31px; color: var(--panel); text-shadow: 0 2px 24px rgba(0, 0, 0, 0.34); }
|
||||||
.page-list { display: grid; gap: 4px; }
|
h2 { font-size: 12px; margin: 24px 0 10px; color: #c4a766; font-weight: 840; text-transform: uppercase; letter-spacing: 0.08em; }
|
||||||
.tree-dir { margin: 1px 0; }
|
.status {
|
||||||
.tree-dir summary { list-style: none; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 8px; align-items: center; min-height: 36px; padding: 6px 8px; border: 1px solid transparent; border-radius: 7px; cursor: pointer; color: var(--ink); }
|
border: 1px solid var(--line);
|
||||||
|
background: rgba(243, 234, 215, 0.08);
|
||||||
|
padding: 11px 13px;
|
||||||
|
border-radius: 8px;
|
||||||
|
font-size: 13px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
color: #dfd0b5;
|
||||||
|
box-shadow: inset 3px 0 0 rgba(184, 145, 69, 0.68);
|
||||||
|
}
|
||||||
|
.status.running { border-color: rgba(214, 181, 102, 0.62); background: rgba(214, 181, 102, 0.12); }
|
||||||
|
.status.ok { border-color: rgba(88, 139, 111, 0.7); background: rgba(68, 106, 87, 0.16); box-shadow: inset 3px 0 0 #5e9a78; }
|
||||||
|
.status.fail { border-color: rgba(158, 62, 70, 0.76); background: rgba(125, 47, 54, 0.18); box-shadow: inset 3px 0 0 #9d3d46; }
|
||||||
|
.quick-link { display: inline-block; color: #cfb36e; font-size: 13px; margin: -10px 0 14px; text-decoration: none; border-bottom: 1px solid rgba(207, 179, 110, 0.35); }
|
||||||
|
.quick-link:hover { color: #f1d68d; border-bottom-color: currentColor; }
|
||||||
|
.filters { display: grid; gap: 9px; margin-bottom: 16px; }
|
||||||
|
.page-list { display: grid; gap: 5px; }
|
||||||
|
.tree-dir { margin: 2px 0; }
|
||||||
|
.tree-dir summary {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
||||||
|
gap: 8px;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 38px;
|
||||||
|
padding: 7px 9px;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 7px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #eee0c4;
|
||||||
|
}
|
||||||
.tree-dir summary::-webkit-details-marker { display: none; }
|
.tree-dir summary::-webkit-details-marker { display: none; }
|
||||||
.tree-dir summary:hover, .page-item:hover { background: rgba(255, 254, 250, 0.72); border-color: rgba(185, 197, 189, 0.7); }
|
.tree-dir summary:hover, .page-item:hover { background: rgba(243, 234, 215, 0.08); border-color: rgba(217, 190, 124, 0.32); }
|
||||||
.tree-dir summary::before { content: ">"; display: inline-block; width: 14px; color: var(--muted); }
|
.tree-dir summary::before { content: ">"; display: inline-block; width: 14px; color: #c8ad69; font-family: "SFMono-Regular", Consolas, monospace; }
|
||||||
.tree-dir[open] > summary::before { content: "v"; }
|
.tree-dir[open] > summary::before { content: "v"; }
|
||||||
.tree-label { display: flex; align-items: baseline; gap: 6px; min-width: 0; }
|
.tree-label { display: flex; align-items: baseline; gap: 6px; min-width: 0; }
|
||||||
.tree-label strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 720; }
|
.tree-label strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 760; }
|
||||||
.tree-label span { color: var(--muted); font-size: 12px; white-space: nowrap; }
|
.tree-label span { color: var(--muted); font-size: 12px; white-space: nowrap; }
|
||||||
.tree-children { display: grid; gap: 3px; margin-left: 15px; padding-left: 10px; border-left: 1px solid var(--line); }
|
.tree-children { display: grid; gap: 4px; margin-left: 15px; padding-left: 11px; border-left: 1px solid rgba(217, 190, 124, 0.22); }
|
||||||
.tree-add { min-height: 28px; padding: 0 8px; font-size: 12px; color: var(--accent); background: transparent; opacity: 0.82; }
|
.tree-add { min-height: 28px; padding: 0 8px; font-size: 12px; color: #e0c680; background: rgba(184, 145, 69, 0.1); opacity: 0.9; }
|
||||||
.tree-add:hover { opacity: 1; background: #ffffff; }
|
.tree-add:hover { opacity: 1; background: rgba(184, 145, 69, 0.18); }
|
||||||
.page-item { width: 100%; text-align: left; min-height: auto; padding: 9px 10px; background: transparent; border-color: transparent; }
|
.page-item { width: 100%; text-align: left; min-height: auto; padding: 10px 11px; background: transparent; border-color: transparent; }
|
||||||
.page-item.active { border-color: rgba(15, 104, 97, 0.55); background: var(--panel); box-shadow: 0 8px 18px rgba(31, 42, 39, 0.06); }
|
.page-item.active { border-color: rgba(214, 181, 102, 0.65); background: rgba(243, 234, 215, 0.13); box-shadow: inset 3px 0 0 var(--accent), 0 12px 24px rgba(0, 0, 0, 0.18); }
|
||||||
.page-item strong { display: block; font-size: 14px; margin-bottom: 2px; overflow-wrap: anywhere; font-weight: 720; }
|
.page-item strong { display: block; font-size: 14px; margin-bottom: 3px; overflow-wrap: anywhere; font-weight: 780; color: #f3e7ce; }
|
||||||
.page-item span { display: block; color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
|
.page-item span { display: block; color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
|
||||||
.page-item .filename { color: var(--ink); }
|
.page-item .filename { color: #cab68d; }
|
||||||
form { display: grid; gap: 14px; }
|
form {
|
||||||
|
display: grid;
|
||||||
|
gap: 16px;
|
||||||
|
border: 1px solid rgba(217, 190, 124, 0.32);
|
||||||
|
border-radius: 8px;
|
||||||
|
background: linear-gradient(180deg, rgba(36, 32, 25, 0.96), rgba(26, 23, 18, 0.96));
|
||||||
|
padding: clamp(16px, 2.2vw, 26px);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
}
|
||||||
.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
|
.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
|
||||||
.toolbar { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; border: 1px solid var(--line); background: var(--panel-2); border-radius: 8px; padding: 7px; }
|
.toolbar {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 7px;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid rgba(217, 190, 124, 0.28);
|
||||||
|
background: rgba(17, 16, 13, 0.52);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
.toolbar input[type="file"] { display: none; }
|
.toolbar input[type="file"] { display: none; }
|
||||||
.link-picker { display: grid; grid-template-columns: minmax(220px, 1fr) auto auto; gap: 8px; align-items: center; border: 1px solid var(--line); background: var(--panel-2); border-radius: 8px; padding: 8px; }
|
.link-picker { display: grid; grid-template-columns: minmax(220px, 1fr) auto auto; gap: 8px; align-items: center; border: 1px solid rgba(217, 190, 124, 0.28); background: rgba(17, 16, 13, 0.52); border-radius: 8px; padding: 8px; }
|
||||||
label { display: grid; gap: 5px; font-size: 13px; font-weight: 700; color: var(--muted); }
|
label { display: grid; gap: 6px; font-size: 12px; font-weight: 820; color: #c7ad74; text-transform: uppercase; letter-spacing: 0.06em; }
|
||||||
input, textarea, select { width: 100%; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); color: var(--ink); padding: 10px 11px; transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease; }
|
label span { text-transform: none; letter-spacing: 0; color: #ddcfb6; }
|
||||||
input:hover, textarea:hover, select:hover { border-color: var(--line-strong); }
|
input, textarea, select {
|
||||||
textarea { min-height: 48vh; resize: vertical; font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; line-height: 1.5; font-size: 14px; }
|
width: 100%;
|
||||||
|
border: 1px solid rgba(107, 91, 57, 0.6);
|
||||||
|
border-radius: 8px;
|
||||||
|
background: var(--panel);
|
||||||
|
color: var(--ink);
|
||||||
|
padding: 11px 12px;
|
||||||
|
transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
|
||||||
|
box-shadow: inset 0 1px 5px rgba(55, 36, 16, 0.1);
|
||||||
|
}
|
||||||
|
input::placeholder, textarea::placeholder { color: #8a7b61; }
|
||||||
|
input:hover, textarea:hover, select:hover { border-color: rgba(214, 181, 102, 0.86); }
|
||||||
|
textarea {
|
||||||
|
min-height: 49vh;
|
||||||
|
resize: vertical;
|
||||||
|
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
|
||||||
|
line-height: 1.58;
|
||||||
|
font-size: 14px;
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(83, 63, 32, 0.06) 1px, transparent 1px),
|
||||||
|
linear-gradient(90deg, rgba(125, 47, 54, 0.1) 1px, transparent 1px),
|
||||||
|
var(--panel);
|
||||||
|
background-size: 100% 30px, 54px 100%, auto;
|
||||||
|
box-shadow: var(--paper-shadow);
|
||||||
|
}
|
||||||
.content-layout { display: grid; gap: 12px; }
|
.content-layout { display: grid; gap: 12px; }
|
||||||
.content-layout.previewing { grid-template-columns: minmax(0, 1fr) minmax(280px, 1fr); align-items: start; }
|
.content-layout.previewing { grid-template-columns: minmax(0, 1fr) minmax(280px, 1fr); align-items: start; }
|
||||||
.preview-panel { border: 1px solid var(--line); border-radius: 8px; background: var(--panel); padding: 14px 16px; min-height: 48vh; overflow: auto; overflow-wrap: anywhere; box-shadow: var(--shadow); }
|
.preview-panel {
|
||||||
.preview-panel h1, .preview-panel h2, .preview-panel h3 { color: var(--ink); margin: 0.8em 0 0.35em; }
|
border: 1px solid rgba(107, 91, 57, 0.6);
|
||||||
.preview-panel h1 { font-size: 24px; }
|
border-radius: 8px;
|
||||||
.preview-panel h2 { font-size: 20px; }
|
background:
|
||||||
.preview-panel h3 { font-size: 17px; }
|
linear-gradient(rgba(83, 63, 32, 0.045) 1px, transparent 1px),
|
||||||
|
var(--panel);
|
||||||
|
background-size: 100% 30px, auto;
|
||||||
|
color: var(--ink);
|
||||||
|
padding: 18px 20px;
|
||||||
|
min-height: 49vh;
|
||||||
|
overflow: auto;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
text-transform: none;
|
||||||
|
letter-spacing: 0;
|
||||||
|
box-shadow: var(--paper-shadow);
|
||||||
|
}
|
||||||
|
.preview-panel h1, .preview-panel h2, .preview-panel h3 { color: #3a2416; margin: 0.8em 0 0.35em; font-family: Georgia, "Times New Roman", serif; letter-spacing: 0; text-transform: none; }
|
||||||
|
.preview-panel h1 { font-size: 27px; }
|
||||||
|
.preview-panel h2 { font-size: 22px; }
|
||||||
|
.preview-panel h3 { font-size: 18px; }
|
||||||
.preview-panel p, .preview-panel ul, .preview-panel ol, .preview-panel blockquote { margin: 0 0 0.8em; }
|
.preview-panel p, .preview-panel ul, .preview-panel ol, .preview-panel blockquote { margin: 0 0 0.8em; }
|
||||||
.preview-panel blockquote { border-left: 3px solid var(--line); padding-left: 10px; color: var(--muted); }
|
.preview-panel blockquote { border-left: 3px solid #9f7d3d; padding-left: 11px; color: #604f3a; background: rgba(184, 145, 69, 0.08); }
|
||||||
.preview-panel img, .preview-panel video { max-width: 100%; height: auto; }
|
.preview-panel img, .preview-panel video { max-width: 100%; height: auto; border-radius: 6px; border: 1px solid rgba(107, 91, 57, 0.24); }
|
||||||
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
|
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
|
||||||
.hint { color: var(--muted); font-size: 13px; }
|
.hint { color: #b3a181; font-size: 13px; overflow-wrap: anywhere; }
|
||||||
.full { grid-column: 1 / -1; }
|
.full { grid-column: 1 / -1; }
|
||||||
.tags { display: flex; gap: 6px; flex-wrap: wrap; }
|
.tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 5px; }
|
||||||
.tag { background: #e3f0ec; color: #134d48; padding: 2px 7px; border-radius: 999px; font-size: 12px; }
|
.tag { background: rgba(68, 106, 87, 0.25); color: #d5eadb; border: 1px solid rgba(104, 151, 121, 0.36); padding: 2px 7px; border-radius: 999px; font-size: 12px; }
|
||||||
.queue-list { display: grid; gap: 8px; margin-bottom: 12px; }
|
.queue-list { display: grid; gap: 8px; margin-bottom: 12px; }
|
||||||
.queue-item { border: 1px solid var(--line); border-radius: 8px; background: var(--panel); padding: 10px 11px; font-size: 13px; box-shadow: 0 6px 18px rgba(31, 42, 39, 0.04); }
|
.queue-item { border: 1px solid rgba(217, 190, 124, 0.26); border-radius: 8px; background: rgba(243, 234, 215, 0.08); color: #e7dac0; padding: 11px 12px; font-size: 13px; box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16); }
|
||||||
.queue-item strong { display: block; overflow-wrap: anywhere; }
|
.queue-item strong { display: block; overflow-wrap: anywhere; color: #f3e6c9; }
|
||||||
.queue-item span { color: var(--muted); overflow-wrap: anywhere; }
|
.queue-item span { color: #b9a789; overflow-wrap: anywhere; }
|
||||||
pre { white-space: pre-wrap; overflow: auto; max-height: 280px; background: #1d2422; color: #edf5ef; padding: 14px; border-radius: 8px; font-size: 12px; box-shadow: var(--shadow); }
|
pre { white-space: pre-wrap; overflow: auto; max-height: 280px; background: #0d0c0a; color: #ecdcbf; border: 1px solid rgba(217, 190, 124, 0.24); padding: 15px; border-radius: 8px; font-size: 12px; box-shadow: var(--shadow); }
|
||||||
@media (max-width: 980px) { .content-layout.previewing { grid-template-columns: 1fr; } }
|
@media (max-width: 980px) { .content-layout.previewing { grid-template-columns: 1fr; } }
|
||||||
@media (max-width: 860px) { .app { grid-template-columns: 1fr; } aside, main { max-height: none; } aside { border-right: 0; border-bottom: 1px solid var(--line); } .grid { grid-template-columns: 1fr; } .link-picker { grid-template-columns: 1fr; } }
|
@media (max-width: 860px) { .app { grid-template-columns: 1fr; } aside, main { max-height: none; } aside { border-right: 0; border-bottom: 1px solid var(--line); } .grid { grid-template-columns: 1fr; } .link-picker { grid-template-columns: 1fr; } }
|
||||||
</style>
|
</style>
|
||||||
@@ -1219,6 +1352,7 @@ APP_HTML = r"""<!doctype html>
|
|||||||
async function refreshPages() {
|
async function refreshPages() {
|
||||||
try {
|
try {
|
||||||
state.pages = await api("/api/pages");
|
state.pages = await api("/api/pages");
|
||||||
|
populatePageLinkSelect();
|
||||||
renderPages();
|
renderPages();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (state.pages.length) {
|
if (state.pages.length) {
|
||||||
@@ -1465,7 +1599,8 @@ APP_HTML = r"""<!doctype html>
|
|||||||
return `[${label || page.title}](${pageUrl(page)})`;
|
return `[${label || page.title}](${pageUrl(page)})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showPageLinkPicker() {
|
function populatePageLinkSelect() {
|
||||||
|
const selected = pageLinkSelect.value;
|
||||||
pageLinkSelect.innerHTML = "";
|
pageLinkSelect.innerHTML = "";
|
||||||
state.pages.forEach((page) => {
|
state.pages.forEach((page) => {
|
||||||
const option = document.createElement("option");
|
const option = document.createElement("option");
|
||||||
@@ -1473,10 +1608,16 @@ APP_HTML = r"""<!doctype html>
|
|||||||
option.textContent = `${page.title} - ${page.path}`;
|
option.textContent = `${page.title} - ${page.path}`;
|
||||||
pageLinkSelect.appendChild(option);
|
pageLinkSelect.appendChild(option);
|
||||||
});
|
});
|
||||||
|
if (selected && state.pages.some((page) => page.path === selected)) {
|
||||||
|
pageLinkSelect.value = selected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function showPageLinkPicker() {
|
||||||
|
populatePageLinkSelect();
|
||||||
pageLinkPicker.hidden = false;
|
pageLinkPicker.hidden = false;
|
||||||
pageLinkSelect.focus();
|
pageLinkSelect.focus();
|
||||||
}
|
}
|
||||||
showPageLinkPicker();
|
|
||||||
|
|
||||||
function insertSelectedPageLink() {
|
function insertSelectedPageLink() {
|
||||||
const page = state.pages.find((item) => item.path === pageLinkSelect.value);
|
const page = state.pages.find((item) => item.path === pageLinkSelect.value);
|
||||||
|
|||||||
@@ -9,8 +9,3 @@ I made quite a few changes. It all started when I realised that not everyone kno
|
|||||||
- I probably didn’t explain it as well, but you can create folders and files under the `lima-website` directory. The files must have a `.md` extension at the end (markdown).
|
- I probably didn’t explain it as well, but you can create folders and files under the `lima-website` directory. The files must have a `.md` extension at the end (markdown).
|
||||||
|
|
||||||
- One other thing, a more personal one: what do you think of all this? am i doing too much? am i doing too little? am i overengineering things? am i forcing you to do something you dont wanna do? these little trinkets work for me, but i’m not sure if it would work for someone else, so at any point if you have reservations, let me know okay?
|
- One other thing, a more personal one: what do you think of all this? am i doing too much? am i doing too little? am i overengineering things? am i forcing you to do something you dont wanna do? these little trinkets work for me, but i’m not sure if it would work for someone else, so at any point if you have reservations, let me know okay?
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
This is a test
|
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ See the categories: @@html:<a href="../../home/categories.html">Categories</a>@@
|
|||||||
- [[file:restful-api.org][Restful API]] @@html:<span class="post-date">15-02-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:restful-api.org][Restful API]] @@html:<span class="post-date">15-02-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
|
|
||||||
** January 2026
|
** January 2026
|
||||||
|
- [[file:database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:<span class="post-date">18-01-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:monitoring-and-logging.org][Monitoring and Logging]] @@html:<span class="post-date">18-01-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:monitoring-and-logging.org][Monitoring and Logging]] @@html:<span class="post-date">18-01-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:pipelines.org][Pipelines and how they work (as well as CI/CD)]] @@html:<span class="post-date">18-01-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:pipelines.org][Pipelines and how they work (as well as CI/CD)]] @@html:<span class="post-date">18-01-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:<span class="post-date">18-01-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
|
||||||
|
|
||||||
** December 2025
|
** December 2025
|
||||||
- [[file:probation-objectives.org][Probation Objectives:]] @@html:<span class="post-date">08-12-2025 17:55</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:probation-objectives.org][Probation Objectives:]] @@html:<span class="post-date">08-12-2025 17:55</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
@@ -23,13 +23,13 @@ See the categories: @@html:<a href="../../home/categories.html">Categories</a>@@
|
|||||||
** November 2025
|
** November 2025
|
||||||
- [[file:airflow.org][Datamarts, Airflow and DAG's]] @@html:<span class="post-date">15-11-2025 18:37</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:airflow.org][Datamarts, Airflow and DAG's]] @@html:<span class="post-date">15-11-2025 18:37</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:normalisation.org][Benefits of Normalisation]] @@html:<span class="post-date">10-11-2025 18:04</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:normalisation.org][Benefits of Normalisation]] @@html:<span class="post-date">10-11-2025 18:04</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:wireframe-designs.org][Wireframe Designs]] @@html:<span class="post-date">06-11-2025 22:01</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
|
||||||
- [[file:management-of-self.org][Management of self training]] @@html:<span class="post-date">06-11-2025 22:01</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:management-of-self.org][Management of self training]] @@html:<span class="post-date">06-11-2025 22:01</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
|
- [[file:wireframe-designs.org][Wireframe Designs]] @@html:<span class="post-date">06-11-2025 22:01</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] @@html:<span class="post-date">06-11-2025 22:01</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] @@html:<span class="post-date">06-11-2025 22:01</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:career-intro.org][Career Introduction]] @@html:<span class="post-date">06-11-2025 21:29</span>@@ @@html:<a href="/tags/introduction.html"><span class="post-tag">introduction</span></a>@@
|
- [[file:career-intro.org][Career Introduction]] @@html:<span class="post-date">06-11-2025 21:29</span>@@ @@html:<a href="/tags/introduction.html"><span class="post-tag">introduction</span></a>@@
|
||||||
- [[file:invest-principles.org][Invest Principles]] @@html:<span class="post-date">06-11-2025 21:08</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:invest-principles.org][Invest Principles]] @@html:<span class="post-date">06-11-2025 21:08</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:lean.org][Lean]] @@html:<span class="post-date">05-11-2025 20:46</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
|
||||||
- [[file:retrospectives.org][Retrospectives]] @@html:<span class="post-date">05-11-2025 20:46</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:retrospectives.org][Retrospectives]] @@html:<span class="post-date">05-11-2025 20:46</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
|
- [[file:lean.org][Lean]] @@html:<span class="post-date">05-11-2025 20:46</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
|
|
||||||
** October 2025
|
** October 2025
|
||||||
- [[file:owasp.org][OWASP Top Ten]] @@html:<span class="post-date">19-10-2025 13:21</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:owasp.org][OWASP Top Ten]] @@html:<span class="post-date">19-10-2025 13:21</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
See the categories: @@html:<a href="../home/categories.html">Categories</a>@@
|
See the categories: @@html:<a href="../home/categories.html">Categories</a>@@
|
||||||
|
|
||||||
* Posts:
|
* Posts:
|
||||||
- [[file:career/career-list.org][Career List]] @@html:<span class="post-date">09-05-2026 16:36</span>@@
|
- [[file:career/career-list.org][Career List]] @@html:<span class="post-date">09-05-2026 17:06</span>@@
|
||||||
- [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:<span class="post-date">11-03-2026 17:18</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:<span class="post-date">11-03-2026 17:18</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:career/javascript.org][Understands the Javascript language]] @@html:<span class="post-date">11-03-2026 16:52</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:career/javascript.org][Understands the Javascript language]] @@html:<span class="post-date">11-03-2026 16:52</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
- [[file:career/restful-api.org][Restful API]] @@html:<span class="post-date">15-02-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
- [[file:career/restful-api.org][Restful API]] @@html:<span class="post-date">15-02-2026 23:00</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
#+OPTIONS: toc:nil num:nil
|
#+OPTIONS: toc:nil num:nil
|
||||||
|
|
||||||
* Recently Updated (top 26 files)
|
* Recently Updated (top 26 files)
|
||||||
- [[file:home/notes.org][Notes]] @@html:<span class="post-date">2026-05-09 15:05</span>@@
|
- [[file:home/wird-tracker.org][Wird Tracker]] @@html:<span class="post-date">2026-05-09 16:45</span>@@
|
||||||
- [[file:home/wird-tracker.org][Wird Tracker]] @@html:<span class="post-date">2026-05-09 01:18</span>@@
|
- [[file:home/status.org][Competency Status Board]] @@html:<span class="post-date">2026-05-09 16:45</span>@@
|
||||||
- [[file:home/status.org][Competency Status Board]] @@html:<span class="post-date">2026-05-09 01:18</span>@@
|
- [[file:home/services.org][Service]] @@html:<span class="post-date">2026-05-09 16:45</span>@@
|
||||||
- [[file:home/services.org][Service]] @@html:<span class="post-date">2026-05-09 01:18</span>@@
|
- [[file:home/notes.org][Notes]] @@html:<span class="post-date">2026-05-09 16:45</span>@@
|
||||||
- [[file:home/contact.org][Contact]] @@html:<span class="post-date">2026-05-09 01:18</span>@@
|
- [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] @@html:<span class="post-date">2026-05-09 16:45</span>@@
|
||||||
- [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] @@html:<span class="post-date">2026-05-09 01:18</span>@@
|
- [[file:home/contact.org][Contact]] @@html:<span class="post-date">2026-05-09 16:45</span>@@
|
||||||
- [[file:home/guide/setup.org][Setup]] @@html:<span class="post-date">2026-05-09 01:18</span>@@
|
- [[file:home/guide/setup.org][Setup]] @@html:<span class="post-date">2026-05-09 16:45</span>@@
|
||||||
- [[file:blogs/2026/05-may/ai-datacamp-08-05.org][AI Datacamp]] @@html:<span class="post-date">2026-05-08 12:49</span>@@
|
- [[file:blogs/2026/05-may/ai-datacamp-08-05.org][AI Datacamp]] @@html:<span class="post-date">2026-05-08 12:49</span>@@
|
||||||
- [[file:blogs/2026/05-may/using-codex-07-05-26.org][Using Codex]] @@html:<span class="post-date">2026-05-07 16:12</span>@@
|
- [[file:blogs/2026/05-may/using-codex-07-05-26.org][Using Codex]] @@html:<span class="post-date">2026-05-07 16:12</span>@@
|
||||||
- [[file:blogs/2026/05-may/03-05-week-review.org][[03-05-2026] - Weekly Review]] @@html:<span class="post-date">2026-05-03 12:00</span>@@
|
- [[file:blogs/2026/05-may/03-05-week-review.org][[03-05-2026] - Weekly Review]] @@html:<span class="post-date">2026-05-03 12:00</span>@@
|
||||||
|
|||||||
44
sitemap.org
44
sitemap.org
@@ -3,43 +3,28 @@
|
|||||||
- [[file:index.org][Home]]
|
- [[file:index.org][Home]]
|
||||||
- [[file:wip.org][Work in progress]]
|
- [[file:wip.org][Work in progress]]
|
||||||
- [[file:recently-updated.org][Recently Updated]]
|
- [[file:recently-updated.org][Recently Updated]]
|
||||||
- tags
|
|
||||||
- [[file:tags/life.sync-conflict-20260417-233423-VT6366A.org][Tag: life]]
|
|
||||||
- [[file:tags/review.sync-conflict-20260328-203248-VT6366A.org][Tag: review]]
|
|
||||||
- [[file:tags/introduction.org][Tag: introduction]]
|
|
||||||
- [[file:tags/learning.org][Tag: learning]]
|
|
||||||
- [[file:tags/notes.org][Tag: notes]]
|
|
||||||
- [[file:tags/review.org][Tag: review]]
|
|
||||||
- [[file:tags/website.org][Tag: website]]
|
|
||||||
- [[file:tags/life.org][Tag: life]]
|
|
||||||
- [[file:tags/education.org][Tag: education]]
|
|
||||||
- [[file:tags/update.org][Tag: update]]
|
|
||||||
- [[file:tags/insights.org][Tag: insights]]
|
|
||||||
- [[file:tags/emacs.org][Tag: emacs]]
|
|
||||||
- [[file:tags/maths.org][Tag: maths]]
|
|
||||||
- [[file:tags/reading.org][Tag: reading]]
|
|
||||||
- books
|
- books
|
||||||
- [[file:books/books-list.org][Books List]]
|
- [[file:books/books-list.org][Books List]]
|
||||||
- clean-code
|
- clean-code
|
||||||
- [[file:books/clean-code/clean-code-notes.org][Clean Code Notes]]
|
- [[file:books/clean-code/clean-code-notes.org][Clean Code Notes]]
|
||||||
- lima
|
- blogs
|
||||||
- [[file:lima/lima-list.org][Lima]]
|
- [[file:blogs/blogs-intro.org][Blogs Introduction]]
|
||||||
|
- [[file:blogs/publish-pages.org][How to publish pages using Org Publish]]
|
||||||
|
- [[file:blogs/blogs-list.org][Blogs List]]
|
||||||
- home
|
- home
|
||||||
- [[file:home/countdown.org][Countdown]]
|
- [[file:home/countdown.org][Countdown]]
|
||||||
- [[file:home/backlog.org][Backlog]]
|
- [[file:home/backlog.org][Backlog]]
|
||||||
|
- [[file:home/contact.org][Contact]]
|
||||||
- [[file:home/status.org][Competency Status Board]]
|
- [[file:home/status.org][Competency Status Board]]
|
||||||
- [[file:home/wird-tracker.org][Wird Tracker]]
|
- [[file:home/wird-tracker.org][Wird Tracker]]
|
||||||
- [[file:home/contact.org][Contact]]
|
|
||||||
- [[file:home/services.org][Service]]
|
- [[file:home/services.org][Service]]
|
||||||
- [[file:home/notes.org][Notes]]
|
- [[file:home/notes.org][Notes]]
|
||||||
- [[file:home/categories.org][Categories]]
|
- [[file:home/categories.org][Categories]]
|
||||||
- guide
|
- guide
|
||||||
- [[file:home/guide/setup.org][Setup]]
|
- [[file:home/guide/setup.org][Setup]]
|
||||||
- [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]]
|
- [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]]
|
||||||
- blogs
|
- lima
|
||||||
- [[file:blogs/blogs-intro.org][Blogs Introduction]]
|
- [[file:lima/lima-list.org][Lima]]
|
||||||
- [[file:blogs/publish-pages.org][How to publish pages using Org Publish]]
|
|
||||||
- [[file:blogs/blogs-list.org][Blogs List]]
|
|
||||||
- posts
|
- posts
|
||||||
- [[file:posts/posts-intro.org][Posts Introduction]]
|
- [[file:posts/posts-intro.org][Posts Introduction]]
|
||||||
- [[file:posts/posts-list.org][Posts List]]
|
- [[file:posts/posts-list.org][Posts List]]
|
||||||
@@ -63,3 +48,18 @@
|
|||||||
- [[file:posts/career/javascript.org][Understands the Javascript language]]
|
- [[file:posts/career/javascript.org][Understands the Javascript language]]
|
||||||
- [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]]
|
- [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]]
|
||||||
- [[file:posts/career/career-list.org][Career List]]
|
- [[file:posts/career/career-list.org][Career List]]
|
||||||
|
- tags
|
||||||
|
- [[file:tags/review.sync-conflict-20260328-203248-VT6366A.org][Tag: review]]
|
||||||
|
- [[file:tags/life.sync-conflict-20260417-233423-VT6366A.org][Tag: life]]
|
||||||
|
- [[file:tags/introduction.org][Tag: introduction]]
|
||||||
|
- [[file:tags/learning.org][Tag: learning]]
|
||||||
|
- [[file:tags/notes.org][Tag: notes]]
|
||||||
|
- [[file:tags/review.org][Tag: review]]
|
||||||
|
- [[file:tags/website.org][Tag: website]]
|
||||||
|
- [[file:tags/update.org][Tag: update]]
|
||||||
|
- [[file:tags/life.org][Tag: life]]
|
||||||
|
- [[file:tags/education.org][Tag: education]]
|
||||||
|
- [[file:tags/insights.org][Tag: insights]]
|
||||||
|
- [[file:tags/reading.org][Tag: reading]]
|
||||||
|
- [[file:tags/emacs.org][Tag: emacs]]
|
||||||
|
- [[file:tags/maths.org][Tag: maths]]
|
||||||
@@ -5,16 +5,16 @@
|
|||||||
- [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]]
|
- [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]]
|
||||||
- [[file:../posts/career/javascript.org][Understands the Javascript language]]
|
- [[file:../posts/career/javascript.org][Understands the Javascript language]]
|
||||||
- [[file:../posts/career/restful-api.org][Restful API]]
|
- [[file:../posts/career/restful-api.org][Restful API]]
|
||||||
|
- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]]
|
||||||
- [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]]
|
- [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]]
|
||||||
- [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]]
|
- [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]]
|
||||||
- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]]
|
|
||||||
- [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]]
|
- [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]]
|
||||||
- [[file:../posts/career/normalisation.org][Benefits of Normalisation]]
|
- [[file:../posts/career/normalisation.org][Benefits of Normalisation]]
|
||||||
- [[file:../posts/career/wireframe-designs.org][Wireframe Designs]]
|
|
||||||
- [[file:../posts/career/management-of-self.org][Management of self training]]
|
- [[file:../posts/career/management-of-self.org][Management of self training]]
|
||||||
|
- [[file:../posts/career/wireframe-designs.org][Wireframe Designs]]
|
||||||
- [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]]
|
- [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]]
|
||||||
- [[file:../posts/career/invest-principles.org][Invest Principles]]
|
- [[file:../posts/career/invest-principles.org][Invest Principles]]
|
||||||
- [[file:../posts/career/lean.org][Lean]]
|
|
||||||
- [[file:../posts/career/retrospectives.org][Retrospectives]]
|
- [[file:../posts/career/retrospectives.org][Retrospectives]]
|
||||||
|
- [[file:../posts/career/lean.org][Lean]]
|
||||||
- [[file:../posts/career/owasp.org][OWASP Top Ten]]
|
- [[file:../posts/career/owasp.org][OWASP Top Ten]]
|
||||||
- [[file:../posts/career/solid-principles.org][SOLID Principles]]
|
- [[file:../posts/career/solid-principles.org][SOLID Principles]]
|
||||||
|
|||||||
@@ -5,17 +5,17 @@
|
|||||||
- [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]]
|
- [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]]
|
||||||
- [[file:../posts/career/javascript.org][Understands the Javascript language]]
|
- [[file:../posts/career/javascript.org][Understands the Javascript language]]
|
||||||
- [[file:../posts/career/restful-api.org][Restful API]]
|
- [[file:../posts/career/restful-api.org][Restful API]]
|
||||||
|
- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]]
|
||||||
- [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]]
|
- [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]]
|
||||||
- [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]]
|
- [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]]
|
||||||
- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]]
|
|
||||||
- [[file:../posts/career/probation-objectives.org][Probation Objectives:]]
|
- [[file:../posts/career/probation-objectives.org][Probation Objectives:]]
|
||||||
- [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]]
|
- [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]]
|
||||||
- [[file:../posts/career/normalisation.org][Benefits of Normalisation]]
|
- [[file:../posts/career/normalisation.org][Benefits of Normalisation]]
|
||||||
- [[file:../posts/career/wireframe-designs.org][Wireframe Designs]]
|
|
||||||
- [[file:../posts/career/management-of-self.org][Management of self training]]
|
- [[file:../posts/career/management-of-self.org][Management of self training]]
|
||||||
|
- [[file:../posts/career/wireframe-designs.org][Wireframe Designs]]
|
||||||
- [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]]
|
- [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]]
|
||||||
- [[file:../posts/career/invest-principles.org][Invest Principles]]
|
- [[file:../posts/career/invest-principles.org][Invest Principles]]
|
||||||
- [[file:../posts/career/lean.org][Lean]]
|
|
||||||
- [[file:../posts/career/retrospectives.org][Retrospectives]]
|
- [[file:../posts/career/retrospectives.org][Retrospectives]]
|
||||||
|
- [[file:../posts/career/lean.org][Lean]]
|
||||||
- [[file:../posts/career/owasp.org][OWASP Top Ten]]
|
- [[file:../posts/career/owasp.org][OWASP Top Ten]]
|
||||||
- [[file:../posts/career/solid-principles.org][SOLID Principles]]
|
- [[file:../posts/career/solid-principles.org][SOLID Principles]]
|
||||||
|
|||||||
Reference in New Issue
Block a user