2019-02-01 20:45:50 +01:00
<!DOCTYPE html>
2019-10-11 10:19:42 +02:00
< html lang = "en" >
2019-02-01 20:45:50 +01:00
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no" >
2020-12-06 15:53:29 +01:00
2019-02-01 20:45:50 +01:00
< meta property = "og:title" content = "Posts" / >
< meta property = "og:description" content = "Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." / >
< meta property = "og:type" content = "website" / >
< meta property = "og:url" content = "https://alanorth.github.io/cgspace-notes/posts/" / >
2022-07-04 08:25:14 +02:00
< meta property = "og:updated_time" content = "2022-07-02T14:07:36+03:00" / >
2020-12-06 15:53:29 +01:00
2019-02-01 20:45:50 +01:00
< meta name = "twitter:card" content = "summary" / >
< meta name = "twitter:title" content = "Posts" / >
< meta name = "twitter:description" content = "Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." / >
2022-06-23 07:40:53 +02:00
< meta name = "generator" content = "Hugo 0.101.0" / >
2019-02-01 20:45:50 +01:00
< script type = "application/ld+json" >
{
"@context": "http://schema.org",
"@type": "Blog",
"headline": "CGSpace Notes",
2020-04-02 09:55:42 +02:00
"url" : "https://alanorth.github.io/cgspace-notes/posts/",
2019-02-01 20:45:50 +01:00
"author": {
"@type": "Person",
"name": "Alan Orth"
},
2022-07-04 08:25:14 +02:00
"dateModified": "2022-07-02T14:07:36+03:00",
2020-11-16 09:54:00 +01:00
"keywords": "notes, migration, notes",
2020-04-02 09:55:42 +02:00
"description":"Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository."
2019-02-01 20:45:50 +01:00
}
< / script >
< link rel = "canonical" href = "https://alanorth.github.io/cgspace-notes/posts/" >
< title > CGSpace Notes< / title >
2019-10-11 10:19:42 +02:00
2019-02-01 20:45:50 +01:00
<!-- combined, minified CSS -->
2020-01-23 19:19:38 +01:00
2021-01-24 08:46:27 +01:00
< link href = "https://alanorth.github.io/cgspace-notes/css/style.beb8012edc08ba10be012f079d618dc243812267efe62e11f22fe49618f976a4.css" rel = "stylesheet" integrity = "sha256-vrgBLtwIuhC+AS8HnWGNwkOBImfv5i4R8i/klhj5dqQ=" crossorigin = "anonymous" >
2019-10-11 10:19:42 +02:00
2019-02-01 20:45:50 +01:00
2020-01-28 11:01:42 +01:00
<!-- minified Font Awesome for SVG icons -->
2021-09-28 09:32:32 +02:00
< script defer src = "https://alanorth.github.io/cgspace-notes/js/fontawesome.min.f5072c55a0721857184db93a50561d7dc13975b4de2e19db7f81eb5f3fa57270.js" integrity = "sha256-9QcsVaByGFcYTbk6UFYdfcE5dbTeLhnbf4HrXz+lcnA=" crossorigin = "anonymous" > < / script >
2020-01-28 11:01:42 +01:00
2019-02-01 20:45:50 +01:00
<!-- RSS 2.0 feed -->
2019-04-14 15:59:47 +02:00
< link rel = "alternate" type = "application/rss+xml" href = "https://alanorth.github.io/cgspace-notes/posts/index.xml" title = "CGSpace Notes" / >
2019-02-01 20:45:50 +01:00
< / head >
< body >
< div class = "blog-masthead" >
< div class = "container" >
< nav class = "nav blog-nav" >
< a class = "nav-link " href = "https://alanorth.github.io/cgspace-notes/" > Home< / a >
< / nav >
< / div >
< / div >
< header class = "blog-header" >
< div class = "container" >
2019-10-11 10:19:42 +02:00
< h1 class = "blog-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/" rel = "home" > CGSpace Notes< / a > < / h1 >
< p class = "lead blog-description" dir = "auto" > Documenting day-to-day work on the < a href = "https://cgspace.cgiar.org" > CGSpace< / a > repository.< / p >
2019-02-01 20:45:50 +01:00
< / div >
< / header >
< div class = "container" >
< div class = "row" >
< div class = "col-sm-8 blog-main" >
2022-07-04 08:25:14 +02:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2019-05/" > May, 2019< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2019-05-01T07:37:43+03:00" > Wed May 01, 2019< / time > by Alan Orth in
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
< / p >
< / header >
< h2 id = "2019-05-01" > 2019-05-01< / h2 >
< ul >
< li > Help CCAFS with regenerating some item thumbnails after they uploaded new PDFs to some items on CGSpace< / li >
< li > A user on the dspace-tech mailing list offered some suggestions for troubleshooting the problem with the inability to delete certain items
< ul >
< li > Apparently if the item is in the < code > workflowitem< / code > table it is submitted to a workflow< / li >
< li > And if it is in the < code > workspaceitem< / code > table it is in the pre-submitted state< / li >
< / ul >
< / li >
< li > The item seems to be in a pre-submitted state, so I tried to delete it from there:< / li >
< / ul >
< pre tabindex = "0" > < code > dspace=# DELETE FROM workspaceitem WHERE item_id=74648;
DELETE 1
< / code > < / pre > < ul >
< li > But after this I tried to delete the item from the XMLUI and it is < em > still< / em > present… < / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2019-05/' > Read more →< / a >
< / article >
2022-06-06 08:45:43 +02:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2019-04/" > April, 2019< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2019-04-01T09:00:43+03:00" > Mon Apr 01, 2019< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-06-06 08:45:43 +02:00
< / p >
< / header >
< h2 id = "2019-04-01" > 2019-04-01< / h2 >
< ul >
< li > Meeting with AgroKnow to discuss CGSpace, ILRI data, AReS, GARDIAN, etc
< ul >
< li > They asked if we had plans to enable RDF support in CGSpace< / li >
< / ul >
< / li >
< li > There have been 4,400 more downloads of the CTA Spore publication from those strange Amazon IP addresses today
< ul >
< li > I suspected that some might not be successful, because the stats show less, but today they were all HTTP 200!< / li >
< / ul >
< / li >
< / ul >
< pre tabindex = "0" > < code > # cat /var/log/nginx/access.log /var/log/nginx/access.log.1 | grep ' Spore-192-EN-web.pdf' | grep -E ' (18.196.196.108|18.195.78.144|18.195.218.6)' | awk ' {print $9}' | sort | uniq -c | sort -n | tail -n 5
4432 200
< / code > < / pre > < ul >
< li > In the last two weeks there have been 47,000 downloads of this < em > same exact PDF< / em > by these three IP addresses< / li >
< li > Apply country and region corrections and deletions on DSpace Test and CGSpace:< / li >
< / ul >
< pre tabindex = "0" > < code > $ ./fix-metadata-values.py -i /tmp/2019-02-21-fix-9-countries.csv -db dspace -u dspace -p ' fuuu' -f cg.coverage.country -m 228 -t ACTION -d
$ ./fix-metadata-values.py -i /tmp/2019-02-21-fix-4-regions.csv -db dspace -u dspace -p ' fuuu' -f cg.coverage.region -m 231 -t action -d
$ ./delete-metadata-values.py -i /tmp/2019-02-21-delete-2-countries.csv -db dspace -u dspace -p ' fuuu' -m 228 -f cg.coverage.country -d
$ ./delete-metadata-values.py -i /tmp/2019-02-21-delete-1-region.csv -db dspace -u dspace -p ' fuuu' -m 231 -f cg.coverage.region -d
< / code > < / pre >
< a href = 'https://alanorth.github.io/cgspace-notes/2019-04/' > Read more →< / a >
< / article >
2022-05-04 10:09:45 +02:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2019-03/" > March, 2019< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2019-03-01T12:16:30+01:00" > Fri Mar 01, 2019< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-05-04 10:09:45 +02:00
< / p >
< / header >
< h2 id = "2019-03-01" > 2019-03-01< / h2 >
< ul >
< li > I checked IITA’ s 259 Feb 14 records from last month for duplicates using Atmire’ s Duplicate Checker on a fresh snapshot of CGSpace on my local machine and everything looks good< / li >
< li > I am now only waiting to hear from her about where the items should go, though I assume Journal Articles go to IITA Journal Articles collection, etc… < / li >
< li > Looking at the other half of Udana’ s WLE records from 2018-11
< ul >
< li > I finished the ones for Restoring Degraded Landscapes (RDL), but these are for Variability, Risks and Competing Uses (VRC)< / li >
< li > I did the usual cleanups for whitespace, added regions where they made sense for certain countries, cleaned up the DOI link formats, added rights information based on the publications page for a few items< / li >
< li > Most worryingly, there are encoding errors in the abstracts for eleven items, for example:< / li >
< li > 68.15% <20> 9.45 instead of 68.15% ± 9.45< / li >
< li > 2003<EFBFBD> 2013 instead of 2003– 2013< / li >
< / ul >
< / li >
< li > I think I will need to ask Udana to re-copy and paste the abstracts with more care using Google Docs< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2019-03/' > Read more →< / a >
< / article >
2022-04-04 18:15:58 +02:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2019-02/" > February, 2019< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2019-02-01T21:37:30+02:00" > Fri Feb 01, 2019< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-04-04 18:15:58 +02:00
< / p >
< / header >
< h2 id = "2019-02-01" > 2019-02-01< / h2 >
< ul >
< li > Linode has alerted a few times since last night that the CPU usage on CGSpace (linode18) was high despite me increasing the alert threshold last week from 250% to 275%—I might need to increase it again!< / li >
< li > The top IPs before, during, and after this latest alert tonight were:< / li >
< / ul >
< pre tabindex = "0" > < code > # zcat --force /var/log/nginx/*.log /var/log/nginx/*.log.1 | grep -E " 01/Feb/2019:(17|18|19|20|21)" | awk ' {print $1}' | sort | uniq -c | sort -n | tail -n 10
245 207.46.13.5
332 54.70.40.11
385 5.143.231.38
405 207.46.13.173
405 207.46.13.75
1117 66.249.66.219
1121 35.237.175.180
1546 5.9.6.51
2474 45.5.186.2
5490 85.25.237.71
< / code > < / pre > < ul >
< li > < code > 85.25.237.71< / code > is the “ Linguee Bot” that I first saw last month< / li >
< li > The Solr statistics the past few months have been very high and I was wondering if the web server logs also showed an increase< / li >
< li > There were just over 3 million accesses in the nginx logs last month:< / li >
< / ul >
< pre tabindex = "0" > < code > # time zcat --force /var/log/nginx/* | grep -cE " [0-9]{1,2}/Jan/2019"
3018243
real 0m19.873s
user 0m22.203s
sys 0m1.979s
< / code > < / pre >
< a href = 'https://alanorth.github.io/cgspace-notes/2019-02/' > Read more →< / a >
< / article >
2022-03-01 15:48:40 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2019-01/" > January, 2019< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2019-01-02T09:48:30+02:00" > Wed Jan 02, 2019< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-03-01 15:48:40 +01:00
< / p >
< / header >
< h2 id = "2019-01-02" > 2019-01-02< / h2 >
< ul >
< li > Linode alerted that CGSpace (linode18) had a higher outbound traffic rate than normal early this morning< / li >
< li > I don’ t see anything interesting in the web server logs around that time though:< / li >
< / ul >
2022-03-04 13:30:06 +01:00
< pre tabindex = "0" > < code > # zcat --force /var/log/nginx/*.log /var/log/nginx/*.log.1 | grep -E " 02/Jan/2019:0(1|2|3)" | awk ' {print $1}' | sort | uniq -c | sort -n | tail -n 10
2022-03-01 15:48:40 +01:00
92 40.77.167.4
99 210.7.29.100
120 38.126.157.45
177 35.237.175.180
177 40.77.167.32
216 66.249.75.219
225 18.203.76.93
261 46.101.86.248
357 207.46.13.1
903 54.70.40.11
< / code > < / pre >
< a href = 'https://alanorth.github.io/cgspace-notes/2019-01/' > Read more →< / a >
< / article >
2022-02-10 18:35:40 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2018-12/" > December, 2018< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2018-12-02T02:09:30+02:00" > Sun Dec 02, 2018< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-02-10 18:35:40 +01:00
< / p >
< / header >
< h2 id = "2018-12-01" > 2018-12-01< / h2 >
< ul >
< li > Switch CGSpace (linode18) to use OpenJDK instead of Oracle JDK< / li >
< li > I manually installed OpenJDK, then removed Oracle JDK, then re-ran the < a href = "http://github.com/ilri/rmg-ansible-public" > Ansible playbook< / a > to update all configuration files, etc< / li >
< li > Then I ran all system updates and restarted the server< / li >
< / ul >
< h2 id = "2018-12-02" > 2018-12-02< / h2 >
< ul >
< li > I noticed that there is another issue with PDF thumbnails on CGSpace, and I see there was another < a href = "https://usn.ubuntu.com/3831-1/" > Ghostscript vulnerability last week< / a > < / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2018-12/' > Read more →< / a >
< / article >
2022-01-01 14:21:47 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2018-11/" > November, 2018< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2018-11-01T16:41:30+02:00" > Thu Nov 01, 2018< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-01-01 14:21:47 +01:00
< / p >
< / header >
< h2 id = "2018-11-01" > 2018-11-01< / h2 >
< ul >
< li > Finalize AReS Phase I and Phase II ToRs< / li >
< li > Send a note about my < a href = "https://github.com/ilri/dspace-statistics-api" > dspace-statistics-api< / a > to the dspace-tech mailing list< / li >
< / ul >
< h2 id = "2018-11-03" > 2018-11-03< / h2 >
< ul >
< li > Linode has been sending mails a few times a day recently that CGSpace (linode18) has had high CPU usage< / li >
< li > Today these are the top 10 IPs:< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2018-11/' > Read more →< / a >
< / article >
2021-12-03 11:58:43 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2018-10/" > October, 2018< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2018-10-01T22:31:54+03:00" > Mon Oct 01, 2018< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2021-12-03 11:58:43 +01:00
< / p >
< / header >
< h2 id = "2018-10-01" > 2018-10-01< / h2 >
< ul >
< li > Phil Thornton got an ORCID identifier so we need to add it to the list on CGSpace and tag his existing items< / li >
< li > I created a GitHub issue to track this < a href = "https://github.com/ilri/DSpace/issues/389" > #389< / a > , because I’ m super busy in Nairobi right now< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2018-10/' > Read more →< / a >
< / article >
2021-11-01 09:49:21 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2018-09/" > September, 2018< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2018-09-02T09:55:54+03:00" > Sun Sep 02, 2018< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2021-11-01 09:49:21 +01:00
< / p >
< / header >
< h2 id = "2018-09-02" > 2018-09-02< / h2 >
< ul >
< li > New < a href = "https://jdbc.postgresql.org/documentation/changelog.html#version_42.2.5" > PostgreSQL JDBC driver version 42.2.5< / a > < / li >
< li > I’ ll update the DSpace role in our < a href = "https://github.com/ilri/rmg-ansible-public" > Ansible infrastructure playbooks< / a > and run the updated playbooks on CGSpace and DSpace Test< / li >
< li > Also, I’ ll re-run the < code > postgresql< / code > tasks because the custom PostgreSQL variables are dynamic according to the system’ s RAM, and we never re-ran them after migrating to larger Linodes last month< / li >
< li > I’ m testing the new DSpace 5.8 branch in my Ubuntu 18.04 environment and I’ m getting those autowire errors in Tomcat 8.5.30 again:< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2018-09/' > Read more →< / a >
< / article >
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2018-08/" > August, 2018< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2018-08-01T11:52:54+03:00" > Wed Aug 01, 2018< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2021-11-01 09:49:21 +01:00
< / p >
< / header >
< h2 id = "2018-08-01" > 2018-08-01< / h2 >
< ul >
< li > DSpace Test had crashed at some point yesterday morning and I see the following in < code > dmesg< / code > :< / li >
< / ul >
< pre tabindex = "0" > < code > [Tue Jul 31 00:00:41 2018] Out of memory: Kill process 1394 (java) score 668 or sacrifice child
[Tue Jul 31 00:00:41 2018] Killed process 1394 (java) total-vm:15601860kB, anon-rss:5355528kB, file-rss:0kB, shmem-rss:0kB
[Tue Jul 31 00:00:41 2018] oom_reaper: reaped process 1394 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
< / code > < / pre > < ul >
< li > Judging from the time of the crash it was probably related to the Discovery indexing that starts at midnight< / li >
< li > From the DSpace log I see that eventually Solr stopped responding, so I guess the < code > java< / code > process that was OOM killed above was Tomcat’ s< / li >
< li > I’ m not sure why Tomcat didn’ t crash with an OutOfMemoryError… < / li >
< li > Anyways, perhaps I should increase the JVM heap from 5120m to 6144m like we did a few months ago when we tried to run the whole CGSpace Solr core< / li >
< li > The server only has 8GB of RAM so we’ ll eventually need to upgrade to a larger one because we’ ll start starving the OS, PostgreSQL, and command line batch processes< / li >
< li > I ran all system updates on DSpace Test and rebooted it< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2018-08/' > Read more →< / a >
< / article >
2019-02-01 20:45:50 +01:00
< nav class = "blog-pagination" >
< a class = "btn btn-outline-primary" href = "/cgspace-notes/posts/page/4/" rel = "prev" role = "button" > Previous page< / a >
2019-11-04 15:41:19 +01:00
< a class = "btn btn-outline-primary" href = "/cgspace-notes/posts/page/6/" rel = "next" role = "button" > Next page< / a >
2019-02-01 20:45:50 +01:00
< / nav >
< / div > <!-- /.blog - main -->
< aside class = "col-sm-3 ml-auto blog-sidebar" >
< section class = "sidebar-module" >
< h4 > Recent Posts< / h4 >
< ol class = "list-unstyled" >
2022-07-04 08:25:14 +02:00
< li > < a href = "/cgspace-notes/2022-07/" > July, 2022< / a > < / li >
2022-06-06 08:45:43 +02:00
< li > < a href = "/cgspace-notes/2022-06/" > June, 2022< / a > < / li >
2022-05-04 10:09:45 +02:00
< li > < a href = "/cgspace-notes/2022-05/" > May, 2022< / a > < / li >
2022-04-27 08:58:45 +02:00
< li > < a href = "/cgspace-notes/2022-04/" > April, 2022< / a > < / li >
2022-03-01 15:48:40 +01:00
2022-04-27 08:58:45 +02:00
< li > < a href = "/cgspace-notes/2022-03/" > March, 2022< / a > < / li >
2022-04-04 18:15:58 +02:00
2019-02-01 20:45:50 +01:00
< / ol >
< / section >
< section class = "sidebar-module" >
< h4 > Links< / h4 >
< ol class = "list-unstyled" >
< li > < a href = "https://cgspace.cgiar.org" > CGSpace< / a > < / li >
< li > < a href = "https://dspacetest.cgiar.org" > DSpace Test< / a > < / li >
< li > < a href = "https://github.com/ilri/DSpace" > CGSpace @ GitHub< / a > < / li >
< / ol >
< / section >
< / aside >
< / div > <!-- /.row -->
< / div > <!-- /.container -->
< footer class = "blog-footer" >
2019-10-11 10:19:42 +02:00
< p dir = "auto" >
2019-02-01 20:45:50 +01:00
Blog template created by < a href = "https://twitter.com/mdo" > @mdo< / a > , ported to Hugo by < a href = 'https://twitter.com/mralanorth' > @mralanorth< / a > .
< / p >
< p >
< a href = "#" > Back to top< / a >
< / p >
< / footer >
< / body >
< / html >