First public release

This commit is contained in:
Oscar Blue 2022-02-23 23:37:24 +00:00
parent 3dc50b630f
commit e6289a3f38
109 changed files with 3633 additions and 0 deletions

54
public/404.html Normal file
View file

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="404 Page not found" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mmp.oscar.blue/404.html" />
<title>404 Page not found | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
<style>
.not-found {
text-align: center;
}
.not-found h1 {
margin: .25em 0 0 0;
opacity: .25;
font-size: 40vmin;
}
</style>
</head>
<body>
<main class="flex justify-center not-found">
<div>
<h1>404</h1>
<h2>Page Not Found</h2>
<h3>
<a href="/">MMP | Oscar Pocock</a>
</h3>
</div>
</main>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,284 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Categories" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mmp.oscar.blue/categories/" />
<title>Categories | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/categories/index.xml" title="MMP | Oscar Pocock" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Categories</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav>
<ul>
<li class="book-section-flat">
<strong>Categories</strong>
<ul>
</ul>
</li>
<li class="book-section-flat">
<strong>Tags</strong>
<ul>
</ul>
</li>
</ul>
</nav>
</aside>
</header>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav>
<ul>
<li class="book-section-flat">
<strong>Categories</strong>
<ul>
</ul>
</li>
<li class="book-section-flat">
<strong>Tags</strong>
<ul>
</ul>
</li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Categories on MMP | Oscar Pocock</title>
<link>https://mmp.oscar.blue/categories/</link>
<description>Recent content in Categories on MMP | Oscar Pocock</description>
<generator>Hugo -- gohugo.io</generator><atom:link href="https://mmp.oscar.blue/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View file

@ -0,0 +1 @@
<!DOCTYPE html><html><head><title>https://mmp.oscar.blue/categories/</title><link rel="canonical" href="https://mmp.oscar.blue/categories/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/categories/" /></head></html>

View file

@ -0,0 +1,247 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This is the developer documentation. (Work-in-progress)">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Developer Documentation" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mmp.oscar.blue/docs/developer/" />
<title>Developer Documentation | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/developer/index.xml" title="MMP | Oscar Pocock" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class=" active">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Developer Documentation</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><p>This is the developer documentation. (Work-in-progress)</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Developer Documentation on MMP | Oscar Pocock</title>
<link>https://mmp.oscar.blue/docs/developer/</link>
<description>Recent content in Developer Documentation on MMP | Oscar Pocock</description>
<generator>Hugo -- gohugo.io</generator><atom:link href="https://mmp.oscar.blue/docs/developer/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

242
public/docs/index.html Normal file
View file

@ -0,0 +1,242 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Docs" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mmp.oscar.blue/docs/" />
<title>Docs | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/index.xml" title="MMP | Oscar Pocock" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Docs</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
</aside>
</header>
<article class="markdown"></article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
</div>
</aside>
</main>
</body>
</html>

9
public/docs/index.xml Normal file
View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Docs on MMP | Oscar Pocock</title>
<link>https://mmp.oscar.blue/docs/</link>
<description>Recent content in Docs on MMP | Oscar Pocock</description>
<generator>Hugo -- gohugo.io</generator><atom:link href="https://mmp.oscar.blue/docs/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

247
public/docs/user/index.html Normal file
View file

@ -0,0 +1,247 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This is the user documentation. (Work-in-progress)">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="User Documentation" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mmp.oscar.blue/docs/user/" />
<title>User Documentation | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/user/index.xml" title="MMP | Oscar Pocock" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class=" active">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>User Documentation</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><p>This is the user documentation. (Work-in-progress)</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>User Documentation on MMP | Oscar Pocock</title>
<link>https://mmp.oscar.blue/docs/user/</link>
<description>Recent content in User Documentation on MMP | Oscar Pocock</description>
<generator>Hugo -- gohugo.io</generator><atom:link href="https://mmp.oscar.blue/docs/user/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
'use strict';(function(){const a=document.querySelector('#book-search-input'),b=document.querySelector('#book-search-results');if(!a)return;a.addEventListener('focus',c),a.addEventListener('keyup',d),document.addEventListener('keypress',f);function f(b){if(a===document.activeElement)return;const c=String.fromCharCode(b.charCode);if(!g(c))return;a.focus(),b.preventDefault()}function g(b){const c=a.getAttribute('data-hotkeys')||'';return c.indexOf(b)>=0}function c(){a.removeEventListener('focus',c),a.required=!0,e('/flexsearch.min.js'),e('/en.search-data.min.95b533accf7aeae1f2c29114e6443fa4a0f41073f61ca03e1c609a487ffebb85.js',function(){a.required=!1,d()})}function d(){while(b.firstChild)b.removeChild(b.firstChild);if(!a.value)return;const c=window.bookSearchIndex.search(a.value,10);c.forEach(function(a){const c=h('<li><a href></a><small></small></li>'),d=c.querySelector('a'),e=c.querySelector('small');d.href=a.href,d.textContent=a.title,e.textContent=a.section,b.appendChild(c)})}function e(b,c){const a=document.createElement('script');a.defer=!0,a.async=!1,a.src=b,a.onload=c,document.head.appendChild(a)}function h(b){const a=document.createElement('div');return a.innerHTML=b,a.firstChild}})()

BIN
public/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

1
public/favicon.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M3 18h12v-2H3v2zM3 6v2h18V6H3zm0 7h18v-2H3v2z"/></svg>

After

Width:  |  Height:  |  Size: 185 B

42
public/flexsearch.min.js vendored Normal file
View file

@ -0,0 +1,42 @@
/*
FlexSearch v0.6.30
Copyright 2019 Nextapps GmbH
Author: Thomas Wilkerling
Released under the Apache 2.0 Licence
https://github.com/nextapps-de/flexsearch
*/
'use strict';(function(K,R,w){let L;(L=w.define)&&L.amd?L([],function(){return R}):(L=w.modules)?L[K.toLowerCase()]=R:"object"===typeof exports?module.exports=R:w[K]=R})("FlexSearch",function ma(K){function w(a,c){const b=c?c.id:a&&a.id;this.id=b||0===b?b:na++;this.init(a,c);fa(this,"index",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)});fa(this,"length",function(){return this.index.length})}function L(a,c,b,d){this.u!==this.g&&(this.o=this.o.concat(b),this.u++,
d&&this.o.length>=d&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(c,this.o),this.F&&this.F(this.o)));return this}function S(a){const c=B();for(const b in a)if(a.hasOwnProperty(b)){const d=a[b];F(d)?c[b]=d.slice(0):G(d)?c[b]=S(d):c[b]=d}return c}function W(a,c){const b=a.length,d=O(c),e=[];for(let f=0,h=0;f<b;f++){const g=a[f];if(d&&c(g)||!d&&!c[g])e[h++]=g}return e}function P(a,c,b,d,e,f,h,g,k,l){b=ha(b,h?0:e,g,f,c,k,l);let p;g&&(g=b.page,p=b.next,b=b.result);if(h)c=this.where(h,null,
e,b);else{c=b;b=this.l;e=c.length;f=Array(e);for(h=0;h<e;h++)f[h]=b[c[h]];c=f}b=c;d&&(O(d)||(M=d.split(":"),1<M.length?d=oa:(M=M[0],d=pa)),b.sort(d));b=T(g,p,b);this.cache&&this.j.set(a,b);return b}function fa(a,c,b){Object.defineProperty(a,c,{get:b})}function r(a){return new RegExp(a,"g")}function Q(a,c){for(let b=0;b<c.length;b+=2)a=a.replace(c[b],c[b+1]);return a}function V(a,c,b,d,e,f,h,g){if(c[b])return c[b];e=e?(g-(h||g/1.5))*f+(h||g/1.5)*e:f;c[b]=e;e>=h&&(a=a[g-(e+.5>>0)],a=a[b]||(a[b]=[]),
a[a.length]=d);return e}function ba(a,c){if(a){const b=Object.keys(a);for(let d=0,e=b.length;d<e;d++){const f=b[d],h=a[f];if(h)for(let g=0,k=h.length;g<k;g++)if(h[g]===c){1===k?delete a[f]:h.splice(g,1);break}else G(h[g])&&ba(h[g],c)}}}function ca(a){let c="",b="";var d="";for(let e=0;e<a.length;e++){const f=a[e];if(f!==b)if(e&&"h"===f){if(d="a"===d||"e"===d||"i"===d||"o"===d||"u"===d||"y"===d,("a"===b||"e"===b||"i"===b||"o"===b||"u"===b||"y"===b)&&d||" "===b)c+=f}else c+=f;d=e===a.length-1?"":a[e+
1];b=f}return c}function qa(a,c){a=a.length-c.length;return 0>a?1:a?-1:0}function pa(a,c){a=a[M];c=c[M];return a<c?-1:a>c?1:0}function oa(a,c){const b=M.length;for(let d=0;d<b;d++)a=a[M[d]],c=c[M[d]];return a<c?-1:a>c?1:0}function T(a,c,b){return a?{page:a,next:c?""+c:null,result:b}:b}function ha(a,c,b,d,e,f,h){let g,k=[];if(!0===b){b="0";var l=""}else l=b&&b.split(":");const p=a.length;if(1<p){const y=B(),t=[];let v,x;var n=0,m;let I;var u=!0;let D,E=0,N,da,X,ea;l&&(2===l.length?(X=l,l=!1):l=ea=
parseInt(l[0],10));if(h){for(v=B();n<p;n++)if("not"===e[n])for(x=a[n],I=x.length,m=0;m<I;m++)v["@"+x[m]]=1;else da=n+1;if(C(da))return T(b,g,k);n=0}else N=J(e)&&e;let Y;for(;n<p;n++){const ra=n===(da||p)-1;if(!N||!n)if((m=N||e&&e[n])&&"and"!==m)if("or"===m)Y=!1;else continue;else Y=f=!0;x=a[n];if(I=x.length){if(u)if(D){var q=D.length;for(m=0;m<q;m++){u=D[m];var A="@"+u;h&&v[A]||(y[A]=1,f||(k[E++]=u))}D=null;u=!1}else{D=x;continue}A=!1;for(m=0;m<I;m++){q=x[m];var z="@"+q;const Z=f?y[z]||0:n;if(!(!Z&&
!d||h&&v[z]||!f&&y[z]))if(Z===n){if(ra){if(!ea||--ea<E)if(k[E++]=q,c&&E===c)return T(b,E+(l||0),k)}else y[z]=n+1;A=!0}else d&&(z=t[Z]||(t[Z]=[]),z[z.length]=q)}if(Y&&!A&&!d)break}else if(Y&&!d)return T(b,g,x)}if(D)if(n=D.length,h)for(m=l?parseInt(l,10):0;m<n;m++)a=D[m],v["@"+a]||(k[E++]=a);else k=D;if(d)for(E=k.length,X?(n=parseInt(X[0],10)+1,m=parseInt(X[1],10)+1):(n=t.length,m=0);n--;)if(q=t[n]){for(I=q.length;m<I;m++)if(d=q[m],!h||!v["@"+d])if(k[E++]=d,c&&E===c)return T(b,n+":"+m,k);m=0}}else!p||
e&&"not"===e[0]||(k=a[0],l&&(l=parseInt(l[0],10)));c&&(h=k.length,l&&l>h&&(l=0),l=l||0,g=l+c,g<h?k=k.slice(l,g):(g=0,l&&(k=k.slice(l))));return T(b,g,k)}function J(a){return"string"===typeof a}function F(a){return a.constructor===Array}function O(a){return"function"===typeof a}function G(a){return"object"===typeof a}function C(a){return"undefined"===typeof a}function ia(a){const c=Array(a);for(let b=0;b<a;b++)c[b]=B();return c}function B(){return Object.create(null)}function sa(){let a,c;self.onmessage=
function(b){if(b=b.data)if(b.search){const d=c.search(b.content,b.threshold?{limit:b.limit,threshold:b.threshold,where:b.where}:b.limit);self.postMessage({id:a,content:b.content,limit:b.limit,result:d})}else b.add?c.add(b.id,b.content):b.update?c.update(b.id,b.content):b.remove?c.remove(b.id):b.clear?c.clear():b.info?(b=c.info(),b.worker=a,console.log(b)):b.register&&(a=b.id,b.options.cache=!1,b.options.async=!1,b.options.worker=!1,c=(new Function(b.register.substring(b.register.indexOf("{")+1,b.register.lastIndexOf("}"))))(),
c=new c(b.options))}}function ta(a,c,b,d){a=K("flexsearch","id"+a,sa,function(f){(f=f.data)&&f.result&&d(f.id,f.content,f.result,f.limit,f.where,f.cursor,f.suggest)},c);const e=ma.toString();b.id=c;a.postMessage({register:e,options:b,id:c});return a}const H={encode:"icase",f:"forward",split:/\W+/,cache:!1,async:!1,g:!1,D:!1,a:!1,b:9,threshold:0,depth:0},ja={memory:{encode:"extra",f:"strict",threshold:0,b:1},speed:{encode:"icase",f:"strict",threshold:1,b:3,depth:2},match:{encode:"extra",f:"full",threshold:1,
b:3},score:{encode:"extra",f:"strict",threshold:1,b:9,depth:4},balance:{encode:"balance",f:"strict",threshold:0,b:3,depth:3},fast:{encode:"icase",f:"strict",threshold:8,b:9,depth:1}},aa=[];let na=0;const ka={},la={};w.create=function(a,c){return new w(a,c)};w.registerMatcher=function(a){for(const c in a)a.hasOwnProperty(c)&&aa.push(r(c),a[c]);return this};w.registerEncoder=function(a,c){U[a]=c.bind(U);return this};w.registerLanguage=function(a,c){ka[a]=c.filter;la[a]=c.stemmer;return this};w.encode=
function(a,c){return U[a](c)};w.prototype.init=function(a,c){this.v=[];if(c){var b=c.preset;a=c}else a||(a=H),b=a.preset;c={};J(a)?(c=ja[a],a={}):b&&(c=ja[b]);if(b=a.worker)if("undefined"===typeof Worker)a.worker=!1,this.m=null;else{var d=parseInt(b,10)||4;this.C=-1;this.u=0;this.o=[];this.F=null;this.m=Array(d);for(var e=0;e<d;e++)this.m[e]=ta(this.id,e,a,L.bind(this))}this.f=a.tokenize||c.f||this.f||H.f;this.split=C(b=a.split)?this.split||H.split:J(b)?r(b):b;this.D=a.rtl||this.D||H.D;this.async=
"undefined"===typeof Promise||C(b=a.async)?this.async||H.async:b;this.g=C(b=a.worker)?this.g||H.g:b;this.threshold=C(b=a.threshold)?c.threshold||this.threshold||H.threshold:b;this.b=C(b=a.resolution)?b=c.b||this.b||H.b:b;b<=this.threshold&&(this.b=this.threshold+1);this.depth="strict"!==this.f||C(b=a.depth)?c.depth||this.depth||H.depth:b;this.w=(b=C(b=a.encode)?c.encode||H.encode:b)&&U[b]&&U[b].bind(U)||(O(b)?b:this.w||!1);(b=a.matcher)&&this.addMatcher(b);if(b=(c=a.lang)||a.filter){J(b)&&(b=ka[b]);
if(F(b)){d=this.w;e=B();for(var f=0;f<b.length;f++){var h=d?d(b[f]):b[f];e[h]=1}b=e}this.filter=b}if(b=c||a.stemmer){var g;c=J(b)?la[b]:b;d=this.w;e=[];for(g in c)c.hasOwnProperty(g)&&(f=d?d(g):g,e.push(r(f+"($|\\W)"),d?d(c[g]):c[g]));this.stemmer=g=e}this.a=e=(b=a.doc)?S(b):this.a||H.a;this.i=ia(this.b-(this.threshold||0));this.h=B();this.c=B();if(e){this.l=B();a.doc=null;g=e.index={};c=e.keys=[];d=e.field;f=e.tag;h=e.store;F(e.id)||(e.id=e.id.split(":"));if(h){var k=B();if(J(h))k[h]=1;else if(F(h))for(let l=
0;l<h.length;l++)k[h[l]]=1;else G(h)&&(k=h);e.store=k}if(f){this.G=B();h=B();if(d)if(J(d))h[d]=a;else if(F(d))for(k=0;k<d.length;k++)h[d[k]]=a;else G(d)&&(h=d);F(f)||(e.tag=f=[f]);for(d=0;d<f.length;d++)this.G[f[d]]=B();this.I=f;d=h}if(d){let l;F(d)||(G(d)?(l=d,e.field=d=Object.keys(d)):e.field=d=[d]);for(e=0;e<d.length;e++)f=d[e],F(f)||(l&&(a=l[f]),c[e]=f,d[e]=f.split(":")),g[f]=new w(a)}a.doc=b}this.B=!0;this.j=(this.cache=b=C(b=a.cache)?this.cache||H.cache:b)?new ua(b):!1;return this};w.prototype.encode=
function(a){a&&(aa.length&&(a=Q(a,aa)),this.v.length&&(a=Q(a,this.v)),this.w&&(a=this.w(a)),this.stemmer&&(a=Q(a,this.stemmer)));return a};w.prototype.addMatcher=function(a){const c=this.v;for(const b in a)a.hasOwnProperty(b)&&c.push(r(b),a[b]);return this};w.prototype.add=function(a,c,b,d,e){if(this.a&&G(a))return this.A("add",a,c);if(c&&J(c)&&(a||0===a)){var f="@"+a;if(this.c[f]&&!d)return this.update(a,c);if(this.g)return++this.C>=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:a,
content:c}),this.c[f]=""+this.C,b&&b(),this;if(!e){if(this.async&&"function"!==typeof importScripts){let t=this;f=new Promise(function(v){setTimeout(function(){t.add(a,c,null,d,!0);t=null;v()})});if(b)f.then(b);else return f;return this}if(b)return this.add(a,c,null,d,!0),b(),this}c=this.encode(c);if(!c.length)return this;b=this.f;e=O(b)?b(c):c.split(this.split);this.filter&&(e=W(e,this.filter));const n=B();n._ctx=B();const m=e.length,u=this.threshold,q=this.depth,A=this.b,z=this.i,y=this.D;for(let t=
0;t<m;t++){var h=e[t];if(h){var g=h.length,k=(y?t+1:m-t)/m,l="";switch(b){case "reverse":case "both":for(var p=g;--p;)l=h[p]+l,V(z,n,l,a,y?1:(g-p)/g,k,u,A-1);l="";case "forward":for(p=0;p<g;p++)l+=h[p],V(z,n,l,a,y?(p+1)/g:1,k,u,A-1);break;case "full":for(p=0;p<g;p++){const v=(y?p+1:g-p)/g;for(let x=g;x>p;x--)l=h.substring(p,x),V(z,n,l,a,v,k,u,A-1)}break;default:if(g=V(z,n,h,a,1,k,u,A-1),q&&1<m&&g>=u)for(g=n._ctx[h]||(n._ctx[h]=B()),h=this.h[h]||(this.h[h]=ia(A-(u||0))),k=t-q,l=t+q+1,0>k&&(k=0),l>
m&&(l=m);k<l;k++)k!==t&&V(h,g,e[k],a,0,A-(k<t?t-k:k-t),u,A-1)}}}this.c[f]=1;this.B=!1}return this};w.prototype.A=function(a,c,b){if(F(c)){var d=c.length;if(d--){for(var e=0;e<d;e++)this.A(a,c[e]);return this.A(a,c[d],b)}}else{var f=this.a.index,h=this.a.keys,g=this.a.tag;e=this.a.store;var k;var l=this.a.id;d=c;for(var p=0;p<l.length;p++)d=d[l[p]];if("remove"===a&&(delete this.l[d],l=h.length,l--)){for(c=0;c<l;c++)f[h[c]].remove(d);return f[h[l]].remove(d,b)}if(g){for(k=0;k<g.length;k++){var n=g[k];
var m=c;l=n.split(":");for(p=0;p<l.length;p++)m=m[l[p]];m="@"+m}k=this.G[n];k=k[m]||(k[m]=[])}l=this.a.field;for(let u=0,q=l.length;u<q;u++){n=l[u];g=c;for(m=0;m<n.length;m++)g=g[n[m]];n=f[h[u]];m="add"===a?n.add:n.update;u===q-1?m.call(n,d,g,b):m.call(n,d,g)}if(e){b=Object.keys(e);a=B();for(f=0;f<b.length;f++)if(h=b[f],e[h]){h=h.split(":");let u,q;for(l=0;l<h.length;l++)g=h[l],u=(u||c)[g],q=(q||a)[g]=u}c=a}k&&(k[k.length]=c);this.l[d]=c}return this};w.prototype.update=function(a,c,b){if(this.a&&
G(a))return this.A("update",a,c);this.c["@"+a]&&J(c)&&(this.remove(a),this.add(a,c,b,!0));return this};w.prototype.remove=function(a,c,b){if(this.a&&G(a))return this.A("remove",a,c);var d="@"+a;if(this.c[d]){if(this.g)return this.m[this.c[d]].postMessage({remove:!0,id:a}),delete this.c[d],c&&c(),this;if(!b){if(this.async&&"function"!==typeof importScripts){let e=this;d=new Promise(function(f){setTimeout(function(){e.remove(a,null,!0);e=null;f()})});if(c)d.then(c);else return d;return this}if(c)return this.remove(a,
null,!0),c(),this}for(c=0;c<this.b-(this.threshold||0);c++)ba(this.i[c],a);this.depth&&ba(this.h,a);delete this.c[d];this.B=!1}return this};let M;w.prototype.search=function(a,c,b,d){if(G(c)){if(F(c))for(var e=0;e<c.length;e++)c[e].query=a;else c.query=a;a=c;c=1E3}else c&&O(c)?(b=c,c=1E3):c||0===c||(c=1E3);if(this.g){this.F=b;this.u=0;this.o=[];for(var f=0;f<this.g;f++)this.m[f].postMessage({search:!0,limit:c,content:a})}else{var h=[],g=a;if(G(a)&&!F(a)){b||(b=a.callback)&&(g.callback=null);var k=
a.sort;var l=a.page;c=a.limit;f=a.threshold;var p=a.suggest;a=a.query}if(this.a){f=this.a.index;const y=g.where;var n=g.bool||"or",m=g.field;let t=n;let v,x;if(m)F(m)||(m=[m]);else if(F(g)){var u=g;m=[];t=[];for(var q=0;q<g.length;q++)d=g[q],e=d.bool||n,m[q]=d.field,t[q]=e,"not"===e?v=!0:"and"===e&&(x=!0)}else m=this.a.keys;n=m.length;for(q=0;q<n;q++)u&&(g=u[q]),l&&!J(g)&&(g.page=null,g.limit=0),h[q]=f[m[q]].search(g,0);if(b)return b(P.call(this,a,t,h,k,c,p,y,l,x,v));if(this.async){const I=this;return new Promise(function(D){Promise.all(h).then(function(E){D(P.call(I,
a,t,E,k,c,p,y,l,x,v))})})}return P.call(this,a,t,h,k,c,p,y,l,x,v)}f||(f=this.threshold||0);if(!d){if(this.async&&"function"!==typeof importScripts){let y=this;f=new Promise(function(t){setTimeout(function(){t(y.search(g,c,null,!0));y=null})});if(b)f.then(b);else return f;return this}if(b)return b(this.search(g,c,null,!0)),this}if(!a||!J(a))return h;g=a;if(this.cache)if(this.B){if(b=this.j.get(a))return b}else this.j.clear(),this.B=!0;g=this.encode(g);if(!g.length)return h;b=this.f;b=O(b)?b(g):g.split(this.split);
this.filter&&(b=W(b,this.filter));u=b.length;d=!0;e=[];var A=B(),z=0;1<u&&(this.depth&&"strict"===this.f?n=!0:b.sort(qa));if(!n||(q=this.h)){const y=this.b;for(;z<u;z++){let t=b[z];if(t){if(n){if(!m)if(q[t])m=t,A[t]=1;else if(!p)return h;if(p&&z===u-1&&!e.length)n=!1,t=m||t,A[t]=0;else if(!m)continue}if(!A[t]){const v=[];let x=!1,I=0;const D=n?q[m]:this.i;if(D){let E;for(let N=0;N<y-f;N++)if(E=D[N]&&D[N][t])v[I++]=E,x=!0}if(x)m=t,e[e.length]=1<I?v.concat.apply([],v):v[0];else if(!p){d=!1;break}A[t]=
1}}}}else d=!1;d&&(h=ha(e,c,l,p));this.cache&&this.j.set(a,h);return h}};w.prototype.find=function(a,c){return this.where(a,c,1)[0]||null};w.prototype.where=function(a,c,b,d){const e=this.l,f=[];let h=0;let g;var k;let l;if(G(a)){b||(b=c);var p=Object.keys(a);var n=p.length;g=!1;if(1===n&&"id"===p[0])return[e[a.id]];if((k=this.I)&&!d)for(var m=0;m<k.length;m++){var u=k[m],q=a[u];if(!C(q)){l=this.G[u]["@"+q];if(0===--n)return l;p.splice(p.indexOf(u),1);delete a[u];break}}k=Array(n);for(m=0;m<n;m++)k[m]=
p[m].split(":")}else{if(O(a)){c=d||Object.keys(e);b=c.length;for(p=0;p<b;p++)n=e[c[p]],a(n)&&(f[h++]=n);return f}if(C(c))return[e[a]];if("id"===a)return[e[c]];p=[a];n=1;k=[a.split(":")];g=!0}d=l||d||Object.keys(e);m=d.length;for(u=0;u<m;u++){q=l?d[u]:e[d[u]];let A=!0;for(let z=0;z<n;z++){g||(c=a[p[z]]);const y=k[z],t=y.length;let v=q;if(1<t)for(let x=0;x<t;x++)v=v[y[x]];else v=v[y[0]];if(v!==c){A=!1;break}}if(A&&(f[h++]=q,b&&h===b))break}return f};w.prototype.info=function(){if(this.g)for(let a=0;a<
this.g;a++)this.m[a].postMessage({info:!0,id:this.id});else return{id:this.id,items:this.length,cache:this.cache&&this.cache.s?this.cache.s.length:!1,matcher:aa.length+(this.v?this.v.length:0),worker:this.g,threshold:this.threshold,depth:this.depth,resolution:this.b,contextual:this.depth&&"strict"===this.f}};w.prototype.clear=function(){return this.destroy().init()};w.prototype.destroy=function(){this.cache&&(this.j.clear(),this.j=null);this.i=this.h=this.c=null;if(this.a){const a=this.a.keys;for(let c=
0;c<a.length;c++)this.a.index[a[c]].destroy();this.a=this.l=null}return this};w.prototype.export=function(a){const c=!a||C(a.serialize)||a.serialize;if(this.a){const d=!a||C(a.doc)||a.doc;var b=!a||C(a.index)||a.index;a=[];let e=0;if(b)for(b=this.a.keys;e<b.length;e++){const f=this.a.index[b[e]];a[e]=[f.i,f.h,Object.keys(f.c)]}d&&(a[e]=this.l)}else a=[this.i,this.h,Object.keys(this.c)];c&&(a=JSON.stringify(a));return a};w.prototype.import=function(a,c){if(!c||C(c.serialize)||c.serialize)a=JSON.parse(a);
const b=B();if(this.a){var d=!c||C(c.doc)||c.doc,e=0;if(!c||C(c.index)||c.index){c=this.a.keys;const h=c.length;for(var f=a[0][2];e<f.length;e++)b[f[e]]=1;for(e=0;e<h;e++){f=this.a.index[c[e]];const g=a[e];g&&(f.i=g[0],f.h=g[1],f.c=b)}}d&&(this.l=G(d)?d:a[e])}else{d=a[2];for(e=0;e<d.length;e++)b[d[e]]=1;this.i=a[0];this.h=a[1];this.c=b}};const va=function(){const a=r("\\s+"),c=r("[^a-z0-9 ]"),b=[r("[-/]")," ",c,"",a," "];return function(d){return ca(Q(d.toLowerCase(),b))}}(),U={icase:function(a){return a.toLowerCase()},
simple:function(){const a=r("\\s+"),c=r("[^a-z0-9 ]"),b=r("[-/]"),d=r("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),e=r("[\u00e8\u00e9\u00ea\u00eb]"),f=r("[\u00ec\u00ed\u00ee\u00ef]"),h=r("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),g=r("[\u00f9\u00fa\u00fb\u00fc\u0171]"),k=r("[\u00fd\u0177\u00ff]"),l=r("\u00f1"),p=r("[\u00e7c]"),n=r("\u00df"),m=r(" & "),u=[d,"a",e,"e",f,"i",h,"o",g,"u",k,"y",l,"n",p,"k",n,"s",m," and ",b," ",c,"",a," "];return function(q){q=Q(q.toLowerCase(),u);return" "===q?"":q}}(),advanced:function(){const a=
r("ae"),c=r("ai"),b=r("ay"),d=r("ey"),e=r("oe"),f=r("ue"),h=r("ie"),g=r("sz"),k=r("zs"),l=r("ck"),p=r("cc"),n=r("sh"),m=r("th"),u=r("dt"),q=r("ph"),A=r("pf"),z=r("ou"),y=r("uo"),t=[a,"a",c,"ei",b,"ei",d,"ei",e,"o",f,"u",h,"i",g,"s",k,"s",n,"s",l,"k",p,"k",m,"t",u,"t",q,"f",A,"f",z,"o",y,"u"];return function(v,x){if(!v)return v;v=this.simple(v);2<v.length&&(v=Q(v,t));x||1<v.length&&(v=ca(v));return v}}(),extra:function(){const a=r("p"),c=r("z"),b=r("[cgq]"),d=r("n"),e=r("d"),f=r("[vw]"),h=r("[aeiouy]"),
g=[a,"b",c,"s",b,"k",d,"m",e,"t",f,"f",h,""];return function(k){if(!k)return k;k=this.advanced(k,!0);if(1<k.length){k=k.split(" ");for(let l=0;l<k.length;l++){const p=k[l];1<p.length&&(k[l]=p[0]+Q(p.substring(1),g))}k=k.join(" ");k=ca(k)}return k}}(),balance:va},ua=function(){function a(c){this.clear();this.H=!0!==c&&c}a.prototype.clear=function(){this.cache=B();this.count=B();this.index=B();this.s=[]};a.prototype.set=function(c,b){if(this.H&&C(this.cache[c])){let d=this.s.length;if(d===this.H){d--;
const e=this.s[d];delete this.cache[e];delete this.count[e];delete this.index[e]}this.index[c]=d;this.s[d]=c;this.count[c]=-1;this.cache[c]=b;this.get(c)}else this.cache[c]=b};a.prototype.get=function(c){const b=this.cache[c];if(this.H&&b){var d=++this.count[c];const f=this.index;let h=f[c];if(0<h){const g=this.s;for(var e=h;this.count[g[--h]]<=d&&-1!==h;);h++;if(h!==e){for(d=e;d>h;d--)e=g[d-1],g[d]=e,f[e]=d;g[h]=c;f[c]=h}}}return b};return a}();return w}(function(){const K={},R="undefined"!==typeof Blob&&
"undefined"!==typeof URL&&URL.createObjectURL;return function(w,L,S,W,P){S=R?URL.createObjectURL(new Blob(["("+S.toString()+")()"],{type:"text/javascript"})):w+".min.js";w+="-"+L;K[w]||(K[w]=[]);K[w][P]=new Worker(S);K[w][P].onmessage=W;return K[w][P]}}()),this);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

229
public/index.html Normal file
View file

@ -0,0 +1,229 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Autophotographer # This project aims to automate the process of selecting &ldquo;aesthetic&rdquo; images from a video feed.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Homepage" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mmp.oscar.blue/" />
<title>Homepage | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/index.xml" title="MMP | Oscar Pocock" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Homepage</strong>
<label for="toc-control">
</label>
</div>
</header>
<article class="markdown"><h1 id="autophotographer">
Autophotographer
<a class="anchor" href="#autophotographer">#</a>
</h1>
<p>This project aims to automate the process of selecting &ldquo;aesthetic&rdquo; images from a video feed.</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
</main>
</body>
</html>

52
public/index.xml Normal file
View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Homepage on MMP | Oscar Pocock</title>
<link>https://mmp.oscar.blue/</link>
<description>Recent content in Homepage on MMP | Oscar Pocock</description>
<generator>Hugo -- gohugo.io</generator>
<lastBuildDate>Wed, 23 Feb 2022 12:46:59 +0000</lastBuildDate><atom:link href="https://mmp.oscar.blue/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Week 4</title>
<link>https://mmp.oscar.blue/posts/week-4/</link>
<pubDate>Wed, 23 Feb 2022 12:46:59 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-4/</guid>
<description>This week&amp;hellip;
Work # Created blog Weekly 1:1 meeting # </description>
</item>
<item>
<title>Week 3</title>
<link>https://mmp.oscar.blue/posts/week-3/</link>
<pubDate>Sun, 20 Feb 2022 12:46:55 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-3/</guid>
<description>Filming footage # At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.
Gaining more useful information # I used the footage I had recorded at the start of the week and revised my &amp;ldquo;filesize&amp;rdquo; code.</description>
</item>
<item>
<title>Week 2</title>
<link>https://mmp.oscar.blue/posts/week-2/</link>
<pubDate>Sun, 13 Feb 2022 12:46:54 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-2/</guid>
<description>This week I set up my repositories and starting writing some basic code.
Set up # Before starting any coding, I wanted to set up my remote git repositories. I had already decided I wanted the project mirrored over two remote git repositories from different providers as a safety precaution. My intial plan was to use the university&amp;rsquo;s GitLab instance but as it&amp;rsquo;s recently been moved behind the firewall it would have made mirroring quite difficult.</description>
</item>
<item>
<title>Week 1</title>
<link>https://mmp.oscar.blue/posts/week-1/</link>
<pubDate>Sun, 06 Feb 2022 12:46:51 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-1/</guid>
<description>This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.
Papers # Photo Aesthetics Analysis via DCNN Feature Encoding1 - Predicting aesthetic performance using a bespoke CNN solution
AVA: A large-scale database for aesthetic visual analysis2 - Making of an aestehtic visual analysis dataset
Code # Image Quality Assessment - Convolutional Neural Networks to predict the aesthetic and technical quality of images.</description>
</item>
</channel>
</rss>

1
public/katex/auto-render.min.js vendored Normal file
View file

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.length;n<t.length;){var i=t[n];if(o<=0&&t.slice(n,n+a)===e)return n;"\\"===i?n++:"{"===i?o++:"}"===i&&o--,n++}return-1},i=function(e,t,r,n){for(var o=[],i=0;i<e.length;i++)if("text"===e[i].type){var l=e[i].data,d=!0,s=0,f=void 0;for(-1!==(f=l.indexOf(t))&&(s=f,o.push({type:"text",data:l.slice(0,s)}),d=!1);;){if(d){if(-1===(f=l.indexOf(t,s)))break;o.push({type:"text",data:l.slice(s,f)}),s=f}else{if(-1===(f=a(r,l,s+t.length)))break;o.push({type:"math",data:l.slice(s+t.length,f),rawData:l.slice(s,f+r.length),display:n}),s=f+r.length}d=!d}o.push({type:"text",data:l.slice(s)})}else o.push(e[i]);return o},l=function(e,t){for(var r=function(e,t){for(var r=[{type:"text",data:e}],n=0;n<t.length;n++){var o=t[n];r=i(r,o.left,o.right,o.display||!1)}return r}(e,t.delimiters),n=document.createDocumentFragment(),a=0;a<r.length;a++)if("text"===r[a].type)n.appendChild(document.createTextNode(r[a].data));else{var l=document.createElement("span"),d=r[a].data;t.displayMode=r[a].display;try{t.preProcess&&(d=t.preProcess(d)),o.a.render(d,l,t)}catch(e){if(!(e instanceof o.a.ParseError))throw e;t.errorCallback("KaTeX auto-render: Failed to parse `"+r[a].data+"` with ",e),n.appendChild(document.createTextNode(r[a].rawData));continue}n.appendChild(l)}return n};t.default=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},function e(t,r){for(var n=0;n<t.childNodes.length;n++){var o=t.childNodes[n];if(3===o.nodeType){var a=l(o.textContent,r);n+=a.childNodes.length-1,t.replaceChild(a,o)}else 1===o.nodeType&&function(){var t=" "+o.className+" ";-1===r.ignoredTags.indexOf(o.nodeName.toLowerCase())&&r.ignoredClasses.every(function(e){return-1===t.indexOf(" "+e+" ")})&&e(o,r)}()}}(e,r)}}]).default});

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
public/katex/katex.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
public/katex/katex.min.js vendored Normal file

File diff suppressed because one or more lines are too long

15
public/manifest.json Normal file
View file

@ -0,0 +1,15 @@
{
"name": "MMP | Oscar Pocock",
"short_name": "MMP | Oscar Pocock",
"start_url": "/",
"scope": "/",
"display": "standalone",
"background_color": "#000000",
"theme_color": "#000000",
"icons": [
{
"src": "/favicon.svg",
"sizes": "512x512"
}
]
}

32
public/mermaid.min.js vendored Normal file

File diff suppressed because one or more lines are too long

376
public/posts/index.html Normal file
View file

@ -0,0 +1,376 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Blog" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mmp.oscar.blue/posts/" />
<title>Blog | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/posts/index.xml" title="MMP | Oscar Pocock" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Blog</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav>
<ul>
<li class="book-section-flat">
<strong>Categories</strong>
<ul>
</ul>
</li>
<li class="book-section-flat">
<strong>Tags</strong>
<ul>
</ul>
</li>
</ul>
</nav>
</aside>
</header>
<article class="markdown book-post">
<h2>
<a href="/posts/week-4/">Week 4</a>
</h2>
<h5>February 23, 2022</h5>
<p>This week&hellip;
Work # Created blog Weekly 1:1 meeting #
</p>
</article>
<article class="markdown book-post">
<h2>
<a href="/posts/week-3/">Week 3</a>
</h2>
<h5>February 20, 2022</h5>
<p>Filming footage # At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.
Gaining more useful information # I used the footage I had recorded at the start of the week and revised my &ldquo;filesize&rdquo; code.
<a href="/posts/week-3/">...</a>
</p>
</article>
<article class="markdown book-post">
<h2>
<a href="/posts/week-2/">Week 2</a>
</h2>
<h5>February 13, 2022</h5>
<p>This week I set up my repositories and starting writing some basic code.
Set up # Before starting any coding, I wanted to set up my remote git repositories. I had already decided I wanted the project mirrored over two remote git repositories from different providers as a safety precaution. My intial plan was to use the university&rsquo;s GitLab instance but as it&rsquo;s recently been moved behind the firewall it would have made mirroring quite difficult.
<a href="/posts/week-2/">...</a>
</p>
</article>
<article class="markdown book-post">
<h2>
<a href="/posts/week-1/">Week 1</a>
</h2>
<h5>February 6, 2022</h5>
<p>This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.
Papers # Photo Aesthetics Analysis via DCNN Feature Encoding1 - Predicting aesthetic performance using a bespoke CNN solution
AVA: A large-scale database for aesthetic visual analysis2 - Making of an aestehtic visual analysis dataset
Code # Image Quality Assessment - Convolutional Neural Networks to predict the aesthetic and technical quality of images.
<a href="/posts/week-1/">...</a>
</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav>
<ul>
<li class="book-section-flat">
<strong>Categories</strong>
<ul>
</ul>
</li>
<li class="book-section-flat">
<strong>Tags</strong>
<ul>
</ul>
</li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>

52
public/posts/index.xml Normal file
View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Blog on MMP | Oscar Pocock</title>
<link>https://mmp.oscar.blue/posts/</link>
<description>Recent content in Blog on MMP | Oscar Pocock</description>
<generator>Hugo -- gohugo.io</generator>
<lastBuildDate>Wed, 23 Feb 2022 12:46:59 +0000</lastBuildDate><atom:link href="https://mmp.oscar.blue/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Week 4</title>
<link>https://mmp.oscar.blue/posts/week-4/</link>
<pubDate>Wed, 23 Feb 2022 12:46:59 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-4/</guid>
<description>This week&amp;hellip;
Work # Created blog Weekly 1:1 meeting # </description>
</item>
<item>
<title>Week 3</title>
<link>https://mmp.oscar.blue/posts/week-3/</link>
<pubDate>Sun, 20 Feb 2022 12:46:55 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-3/</guid>
<description>Filming footage # At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.
Gaining more useful information # I used the footage I had recorded at the start of the week and revised my &amp;ldquo;filesize&amp;rdquo; code.</description>
</item>
<item>
<title>Week 2</title>
<link>https://mmp.oscar.blue/posts/week-2/</link>
<pubDate>Sun, 13 Feb 2022 12:46:54 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-2/</guid>
<description>This week I set up my repositories and starting writing some basic code.
Set up # Before starting any coding, I wanted to set up my remote git repositories. I had already decided I wanted the project mirrored over two remote git repositories from different providers as a safety precaution. My intial plan was to use the university&amp;rsquo;s GitLab instance but as it&amp;rsquo;s recently been moved behind the firewall it would have made mirroring quite difficult.</description>
</item>
<item>
<title>Week 1</title>
<link>https://mmp.oscar.blue/posts/week-1/</link>
<pubDate>Sun, 06 Feb 2022 12:46:51 +0000</pubDate>
<guid>https://mmp.oscar.blue/posts/week-1/</guid>
<description>This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.
Papers # Photo Aesthetics Analysis via DCNN Feature Encoding1 - Predicting aesthetic performance using a bespoke CNN solution
AVA: A large-scale database for aesthetic visual analysis2 - Making of an aestehtic visual analysis dataset
Code # Image Quality Assessment - Convolutional Neural Networks to predict the aesthetic and technical quality of images.</description>
</item>
</channel>
</rss>

View file

@ -0,0 +1 @@
<!DOCTYPE html><html><head><title>https://mmp.oscar.blue/posts/</title><link rel="canonical" href="https://mmp.oscar.blue/posts/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/posts/" /></head></html>

View file

@ -0,0 +1,336 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.
Papers # Photo Aesthetics Analysis via DCNN Feature Encoding1 - Predicting aesthetic performance using a bespoke CNN solution
AVA: A large-scale database for aesthetic visual analysis2 - Making of an aestehtic visual analysis dataset
Code # Image Quality Assessment - Convolutional Neural Networks to predict the aesthetic and technical quality of images.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 1" />
<meta property="og:description" content="This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.
Papers # Photo Aesthetics Analysis via DCNN Feature Encoding1 - Predicting aesthetic performance using a bespoke CNN solution
AVA: A large-scale database for aesthetic visual analysis2 - Making of an aestehtic visual analysis dataset
Code # Image Quality Assessment - Convolutional Neural Networks to predict the aesthetic and technical quality of images." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-1/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-02-06T12:46:51+00:00" />
<meta property="article:modified_time" content="2022-02-06T12:46:51+00:00" />
<title>Week 1 | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Week 1</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#papers">Papers</a></li>
<li><a href="#code">Code</a></li>
<li><a href="#datasets">Datasets</a></li>
<li><a href="#project-idea-from-research">Project idea from research</a></li>
<li><a href="#weekly-11-meeting">Weekly 1:1 meeting</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown">
<h1>
<a href="/posts/week-1/">Week 1</a>
</h1>
<h5>February 6, 2022</h5>
<p>This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.</p>
<h1 id="papers">
Papers
<a class="anchor" href="#papers">#</a>
</h1>
<p>
<a href="https://ieeexplore.ieee.org/document/7886320">Photo Aesthetics Analysis via DCNN Feature Encoding</a><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> - Predicting aesthetic performance using a bespoke CNN solution</p>
<p>
<a href="https://ieeexplore.ieee.org/document/6247954">AVA: A large-scale database for aesthetic visual analysis</a><sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> - Making of an aestehtic visual analysis dataset</p>
<h1 id="code">
Code
<a class="anchor" href="#code">#</a>
</h1>
<p>
<a href="https://github.com/idealo/image-quality-assessment">Image Quality Assessment</a> - Convolutional Neural Networks to predict the aesthetic and technical quality of images.</p>
<h1 id="datasets">
Datasets
<a class="anchor" href="#datasets">#</a>
</h1>
<p>
<a href="https://github.com/aimerykong/deepImageAestheticsAnalysis">AADB</a></p>
<p>AVA:
<a href="https://github.com/imfing/ava_downloader">https://github.com/imfing/ava_downloader</a>,
<a href="https://github.com/ylogx/aesthetics/tree/master/data/ava">https://github.com/ylogx/aesthetics/tree/master/data/ava</a></p>
<h1 id="project-idea-from-research">
Project idea from research
<a class="anchor" href="#project-idea-from-research">#</a>
</h1>
<p>Based on the research, I decided a machine learning approach would result in higher quality outputs. Although, I was slightly concerned that following a deep-learning would limit interesting discussion in my report.</p>
<p>The idea was to create a program that can take a video, break it down into frames and use a trained CNN to predict the most aesthetic frames and return them to the user.</p>
<h1 id="weekly-11-meeting">
Weekly 1:1 meeting
<a class="anchor" href="#weekly-11-meeting">#</a>
</h1>
<p>During the meeting I mentioned my concerns following a deep learning approach. Although this approach might provide quality results, it doesn&rsquo;t provide much room to discuss or develop interesting solutions. Instead, as Hannah put, it mostly depends on throwing the problem at powerful hardware to get the best output which doesn&rsquo;t make for an interesting project. Hannah suggested I take a hybrid approach where I could use deep-learning for the last step in the pipeline, depending more on conventional engineering techniques to reduce the input data before passing it to the deep-learning stage.</p>
<p>She mentioned &lsquo;dumb&rsquo; ways in which I could reduce the set of input frames:</p>
<ul>
<li>Comparing file sizes and removing the small ones (might infer single colour images / less complex images)</li>
<li>Fourier frequency analysis</li>
<li>Brightness and contrast analysis</li>
</ul>
<section class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1" role="doc-endnote">
<p>H. -J. Lee, K. -S. Hong, H. Kang and S. Lee, &ldquo;Photo Aesthetics Analysis via DCNN Feature Encoding,&rdquo; in IEEE Transactions on Multimedia, vol. 20, no. 8, pp. 1921-1932, Aug. 2017, doi: 10.1109/TMM.2017.2687759.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>N. Murray, L. Marchesotti and F. Perronnin, &ldquo;AVA: A large-scale database for aesthetic visual analysis,&rdquo; 2012 IEEE Conference on Computer Vision and Pattern Recognition, 2012, pp. 2408-2415, doi: 10.1109/CVPR.2012.6247954.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</section>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#papers">Papers</a></li>
<li><a href="#code">Code</a></li>
<li><a href="#datasets">Datasets</a></li>
<li><a href="#project-idea-from-research">Project idea from research</a></li>
<li><a href="#weekly-11-meeting">Weekly 1:1 meeting</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>

View file

@ -0,0 +1,358 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This week I set up my repositories and starting writing some basic code.
Set up # Before starting any coding, I wanted to set up my remote git repositories. I had already decided I wanted the project mirrored over two remote git repositories from different providers as a safety precaution. My intial plan was to use the university&rsquo;s GitLab instance but as it&rsquo;s recently been moved behind the firewall it would have made mirroring quite difficult.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 2" />
<meta property="og:description" content="This week I set up my repositories and starting writing some basic code.
Set up # Before starting any coding, I wanted to set up my remote git repositories. I had already decided I wanted the project mirrored over two remote git repositories from different providers as a safety precaution. My intial plan was to use the university&rsquo;s GitLab instance but as it&rsquo;s recently been moved behind the firewall it would have made mirroring quite difficult." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-2/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-02-13T12:46:54+00:00" />
<meta property="article:modified_time" content="2022-02-13T12:46:54+00:00" />
<title>Week 2 | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Week 2</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#set-up">Set up</a></li>
<li><a href="#code">Code</a></li>
<li><a href="#11-weekly-meeting">1:1 Weekly meeting</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown">
<h1>
<a href="/posts/week-2/">Week 2</a>
</h1>
<h5>February 13, 2022</h5>
<p>This week I set up my repositories and starting writing some basic code.</p>
<h1 id="set-up">
Set up
<a class="anchor" href="#set-up">#</a>
</h1>
<p>Before starting any coding, I wanted to set up my remote git repositories. I had already decided I wanted the project mirrored over two remote git repositories from different providers as a safety precaution. My intial plan was to use the university&rsquo;s GitLab instance but as it&rsquo;s recently been moved behind the firewall it would have made mirroring quite difficult. Instead, I decided to use my personal
<a href="https://git.oscar.blue">Gitea instance</a> and mirror it to my personal account on the official
<a href="https://gitlab.com/oscarpocock">GitLab instance</a>.</p>
<p>
<a href="https://git.oscar.blue/noble/mmp-osp1">Gitea</a>
<a href="https://gitlab.com/oscarpocock/mmp-osp1">GitLab</a></p>
<p>Gitea will periodically push to GitLab.</p>
<h1 id="code">
Code
<a class="anchor" href="#code">#</a>
</h1>
<p>Towards the end of the week I put together some simple code to reduce the frame set. I used the OpenCV Python module to export the frames of a given video to an <code>output/</code> folder. The path of this folder is also stored in the <code>outputfolder</code> variable we see used on line 7.</p>
<p>Although this code is a first step at reducing the frames set - it doesn&rsquo;t give us much feedback about the frames that have been deleted or kept.</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
<table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-python" data-lang="python"><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">display_file_sizes</span>():
<span style="color:#e6db74">&#34;&#34;&#34;Calculates the average frame filesize and deletes the frames lower
</span><span style="color:#e6db74">than the average
</span><span style="color:#e6db74">&#34;&#34;&#34;</span>
<span style="color:#75715e"># create an array storing the filesize of each frame</span>
filesizes <span style="color:#f92672">=</span> []
<span style="color:#66d9ef">for</span> filename <span style="color:#f92672">in</span> os<span style="color:#f92672">.</span>listdir(outputfolder):
filepath <span style="color:#f92672">=</span> outputfolder <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;/&#34;</span> <span style="color:#f92672">+</span> filename
filesize <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>getsize(filepath)
print(filepath <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;: &#34;</span> <span style="color:#f92672">+</span> str(filesize))
filesizes<span style="color:#f92672">.</span>append(filesize)
<span style="color:#75715e"># work out average</span>
average <span style="color:#f92672">=</span> sum(filesizes)<span style="color:#f92672">/</span>len(filesizes)
print (<span style="color:#e6db74">&#34;Average is: &#34;</span> <span style="color:#f92672">+</span> str(average))
<span style="color:#75715e"># delete files below average</span>
count <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
<span style="color:#66d9ef">for</span> filename <span style="color:#f92672">in</span> os<span style="color:#f92672">.</span>listdir(outputfolder):
filepath <span style="color:#f92672">=</span> outputfolder <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;/&#34;</span> <span style="color:#f92672">+</span> filename
<span style="color:#66d9ef">if</span> filesizes[count] <span style="color:#f92672">&lt;</span> average:
<span style="color:#75715e"># print(filepath + &#34;: &#34; + str(filesizes[count]))</span>
os<span style="color:#f92672">.</span>remove(filepath)
count <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
</code></pre></td></tr></table>
</div>
</div><p>I didn&rsquo;t end up doing as much as I would have liked this week. I found myself preoccupied in other areas of my life and not putting enough emphasis on this project.</p>
<h1 id="11-weekly-meeting">
1:1 Weekly meeting
<a class="anchor" href="#11-weekly-meeting">#</a>
</h1>
<ul>
<li>As I didn&rsquo;t do as much as I would like to have done there wasn&rsquo;t much to discuss on my part</li>
<li>I needed to produce more code to have some basic functionality.</li>
<li>Discussed my concerns with a machine learning approach</li>
</ul>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#set-up">Set up</a></li>
<li><a href="#code">Code</a></li>
<li><a href="#11-weekly-meeting">1:1 Weekly meeting</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>

View file

@ -0,0 +1,352 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Filming footage # At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.
Gaining more useful information # I used the footage I had recorded at the start of the week and revised my &ldquo;filesize&rdquo; code.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 3" />
<meta property="og:description" content="Filming footage # At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.
Gaining more useful information # I used the footage I had recorded at the start of the week and revised my &ldquo;filesize&rdquo; code." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-3/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-02-20T12:46:55+00:00" />
<meta property="article:modified_time" content="2022-02-20T12:46:55+00:00" />
<title>Week 3 | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Week 3</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#filming-footage">Filming footage</a></li>
<li><a href="#gaining-more-useful-information">Gaining more useful information</a></li>
<li><a href="#analysing-datasets">Analysing datasets</a></li>
<li><a href="#11-weekly-meeting">1:1 Weekly meeting</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown">
<h1>
<a href="/posts/week-3/">Week 3</a>
</h1>
<h5>February 20, 2022</h5>
<h1 id="filming-footage">
Filming footage
<a class="anchor" href="#filming-footage">#</a>
</h1>
<p>At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.</p>
<h1 id="gaining-more-useful-information">
Gaining more useful information
<a class="anchor" href="#gaining-more-useful-information">#</a>
</h1>
<p>I used the footage I had recorded at the start of the week and revised my &ldquo;filesize&rdquo; code. I made a new function <code>order_frames_by_filesize()</code> which orders the frames by the filesize and prints the name of size of each frame in order.</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
<table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-python" data-lang="python"><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">order_frames_by_filesize</span>():
<span style="color:#e6db74">&#34;&#34;&#34;Order the frames by filesize and print the filenames and their sizes&#34;&#34;&#34;</span>
frames <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>listdir(outputfolder)
<span style="color:#75715e"># sort the frames by their filesize</span>
frames <span style="color:#f92672">=</span> sorted(frames,
key <span style="color:#f92672">=</span> <span style="color:#66d9ef">lambda</span> x: os<span style="color:#f92672">.</span>stat(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(outputfolder, x))<span style="color:#f92672">.</span>st_size, reverse <span style="color:#f92672">=</span> <span style="color:#66d9ef">True</span>)
<span style="color:#75715e"># print every frame and it&#39;s size in a human readable format</span>
<span style="color:#66d9ef">for</span> frame <span style="color:#f92672">in</span> frames:
filesize <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>stat(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(outputfolder, frame))<span style="color:#f92672">.</span>st_size
<span style="color:#66d9ef">if</span> filesize <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">1024</span>:
filesize <span style="color:#f92672">=</span> filesize <span style="color:#f92672">/</span> <span style="color:#ae81ff">1024</span>
print(frame <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;: &#34;</span> <span style="color:#f92672">+</span> str(filesize) <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34; KB&#34;</span>)
<span style="color:#66d9ef">else</span>:
print(frame <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;: &#34;</span> <span style="color:#f92672">+</span> str(filesize))
</code></pre></td></tr></table>
</div>
</div><h1 id="analysing-datasets">
Analysing datasets
<a class="anchor" href="#analysing-datasets">#</a>
</h1>
<p>There&rsquo;s been a few datasets that I&rsquo;ve previously looked at which could be useful to use for this project. I wasn&rsquo;t sure how they would perform with the data I was expecting to use. AVA<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> was trained on data that had been photographed under ideal conditions by profesionals. This won&rsquo;t reflect the frames extracted by the footage in this project&rsquo;s use case. I wasn&rsquo;t sure if this distinction was significant enough to effect the results of a trained model. I had previously found a project<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> which had models pretrained using AVA<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> I could use to predict an aesthetic value from images I provided.</p>
<h1 id="11-weekly-meeting">
1:1 Weekly meeting
<a class="anchor" href="#11-weekly-meeting">#</a>
</h1>
<ul>
<li>We discussed that during week 4 I should be looking at implementing CNNs as training might take a while and therefore should be a priority.</li>
<li>Look at what other people are doing with aesthetic analysis to get an idea on how the code works.</li>
<li>Attempt to get a basic CNN working.</li>
</ul>
<section class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1" role="doc-endnote">
<p>N. Murray, L. Marchesotti and F. Perronnin, &ldquo;AVA: A large-scale database for aesthetic visual analysis,&rdquo; 2012 IEEE Conference on Computer Vision and Pattern Recognition, 2012, pp. 2408-2415, doi: 10.1109/CVPR.2012.6247954.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>Image Quality Assessment:
<a href="https://github.com/idealo/image-quality-assessment">https://github.com/idealo/image-quality-assessment</a> - Idealo&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</section>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#filming-footage">Filming footage</a></li>
<li><a href="#gaining-more-useful-information">Gaining more useful information</a></li>
<li><a href="#analysing-datasets">Analysing datasets</a></li>
<li><a href="#11-weekly-meeting">1:1 Weekly meeting</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>

View file

@ -0,0 +1,286 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.92.2" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This week&hellip;
Work # Created blog Weekly 1:1 meeting # ">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 4" />
<meta property="og:description" content="This week&hellip;
Work # Created blog Weekly 1:1 meeting # " />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-4/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-02-23T12:46:59+00:00" />
<meta property="article:modified_time" content="2022-02-23T12:46:59+00:00" />
<title>Week 4 | MMP | Oscar Pocock</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e&#43;yMwwf&#43;9o6QEQ="></script>
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2&#43;Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC&#43;NdcPIvZhzk="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/"><span>MMP | Oscar Pocock</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
<ul>
</ul>
</li>
<li class="book-section-flat" >
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
<ul>
</ul>
</li>
</ul>
<ul>
<li>
<a href="/posts/" >
Blog
</a>
</li>
<li>
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
Aberystwyth MMP Site
</a>
</li>
<li>
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
Source Code
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Week 4</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#work">Work</a></li>
<li><a href="#weekly-11-meeting">Weekly 1:1 meeting</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown">
<h1>
<a href="/posts/week-4/">Week 4</a>
</h1>
<h5>February 23, 2022</h5>
<p>This week&hellip;</p>
<h1 id="work">
Work
<a class="anchor" href="#work">#</a>
</h1>
<ul>
<li>Created blog</li>
</ul>
<h1 id="weekly-11-meeting">
Weekly 1:1 meeting
<a class="anchor" href="#weekly-11-meeting">#</a>
</h1>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#work">Work</a></li>
<li><a href="#weekly-11-meeting">Weekly 1:1 meeting</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>

33
public/sitemap.xml Normal file
View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://mmp.oscar.blue/docs/developer/</loc>
</url><url>
<loc>https://mmp.oscar.blue/docs/user/</loc>
</url><url>
<loc>https://mmp.oscar.blue/posts/</loc>
<lastmod>2022-02-23T12:46:59+00:00</lastmod>
</url><url>
<loc>https://mmp.oscar.blue/</loc>
<lastmod>2022-02-23T12:46:59+00:00</lastmod>
</url><url>
<loc>https://mmp.oscar.blue/posts/week-4/</loc>
<lastmod>2022-02-23T12:46:59+00:00</lastmod>
</url><url>
<loc>https://mmp.oscar.blue/posts/week-3/</loc>
<lastmod>2022-02-20T12:46:55+00:00</lastmod>
</url><url>
<loc>https://mmp.oscar.blue/posts/week-2/</loc>
<lastmod>2022-02-13T12:46:54+00:00</lastmod>
</url><url>
<loc>https://mmp.oscar.blue/posts/week-1/</loc>
<lastmod>2022-02-06T12:46:51+00:00</lastmod>
</url><url>
<loc>https://mmp.oscar.blue/categories/</loc>
</url><url>
<loc>https://mmp.oscar.blue/docs/</loc>
</url><url>
<loc>https://mmp.oscar.blue/tags/</loc>
</url>
</urlset>

1
public/svg/calendar.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z"/><path fill="none" d="M0 0h24v24H0z"/></svg>

After

Width:  |  Height:  |  Size: 248 B

Some files were not shown because too many files have changed in this diff Show more