mirror of
https://github.com/alanorth/cgspace-notes.git
synced 2024-11-22 06:35:03 +01:00
Add notes for 2022-11-26
This commit is contained in:
parent
b5b28f2d78
commit
59cd155eb3
@ -247,4 +247,110 @@ $ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -
|
|||||||
- I did some more work on my `post-ciat-pdfs.py` script and tested uploading the items to my local DSpace and DSpace Test
|
- I did some more work on my `post-ciat-pdfs.py` script and tested uploading the items to my local DSpace and DSpace Test
|
||||||
- Then I ran the script on CGSpace, uploading ~1,500 PDFs to to existing items
|
- Then I ran the script on CGSpace, uploading ~1,500 PDFs to to existing items
|
||||||
|
|
||||||
|
## 2022-11-25
|
||||||
|
|
||||||
|
- Tony Murray, who is working on IFPRI's CGSpace integration, emailed me to ask some questions about the REST API
|
||||||
|
- Oh no, I realized there is a logic issue with the PDFbox cropbox code I added a few weeks ago:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ JAVA_OPTS="-Xmx1024m -Dfile.encoding=UTF-8" dspace filter-media -p "ImageMagick PDF Thumbnail" -v -f -i 10568/77010
|
||||||
|
The following MediaFilters are enabled:
|
||||||
|
Full Filter Name: org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter
|
||||||
|
org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter
|
||||||
|
Loading @mire database changes for module MQM
|
||||||
|
Changes have been processed
|
||||||
|
IM Thumbnail tropentag2016_marshall.pdf is replacable.
|
||||||
|
File: tropentag2016_marshall.pdf.jpg
|
||||||
|
ERROR filtering, skipping bitstream:
|
||||||
|
|
||||||
|
Item Handle: 10568/77010
|
||||||
|
Bundle Name: ORIGINAL
|
||||||
|
File Size: 1486580
|
||||||
|
Checksum: 1ad66d918a56a5e84667386e1a32e352 (MD5)
|
||||||
|
Asset Store: 0
|
||||||
|
java.lang.IndexOutOfBoundsException: 1-based index out of bounds: 2
|
||||||
|
java.lang.IndexOutOfBoundsException: 1-based index out of bounds: 2
|
||||||
|
at org.apache.pdfbox.pdmodel.PDPageTree.get(PDPageTree.java:325)
|
||||||
|
at org.apache.pdfbox.pdmodel.PDPageTree.get(PDPageTree.java:248)
|
||||||
|
at org.apache.pdfbox.pdmodel.PDDocument.getPage(PDDocument.java:1543)
|
||||||
|
at org.dspace.app.mediafilter.ImageMagickThumbnailFilter.getImageFile(ImageMagickThumbnailFilter.java:167)
|
||||||
|
at org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter.getDestinationStream(ImageMagickPdfThumbnailFilter.java:27)
|
||||||
|
at com.atmire.dspace.app.mediafilter.AtmireMediaFilter.processBitstream(AtmireMediaFilter.java:103)
|
||||||
|
at com.atmire.dspace.app.mediafilter.AtmireMediaFilterServiceImpl.filterBitstream(AtmireMediaFilterServiceImpl.java:61)
|
||||||
|
at org.dspace.app.mediafilter.MediaFilterServiceImpl.filterItem(MediaFilterServiceImpl.java:181)
|
||||||
|
at org.dspace.app.mediafilter.MediaFilterServiceImpl.applyFiltersItem(MediaFilterServiceImpl.java:159)
|
||||||
|
at org.dspace.app.mediafilter.MediaFilterCLITool.main(MediaFilterCLITool.java:232)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:229)
|
||||||
|
at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:81)
|
||||||
|
```
|
||||||
|
|
||||||
|
- Salem gave me a list of CGSpace collections that have double spaces in the names
|
||||||
|
- Normally this would only be a minor annoyance, but he discovered that the REST API seems to trim the spaces, which causes an issue when trying to reference them!
|
||||||
|
- He sent me a list of about ten collection UUIDs so I fixed them
|
||||||
|
- I found a bunch of LIVES presentations on CGSpace that have presentations on SlideShare with incorrect licenses... I updated about fifty of them
|
||||||
|
|
||||||
|
## 2022-11-26
|
||||||
|
|
||||||
|
- Sync DSpace Test with CGSpace
|
||||||
|
- I increased the session timeout in Tomcat from thirty minutes to sixty, as requested by Maria a few weeks ago
|
||||||
|
- See: https://gitlab.inf.unibz.it/commul/docker/clarin-dspace/-/issues/44
|
||||||
|
- I re-built DSpace on CGSpace, ran all updates, and rebooted the machine
|
||||||
|
- Then after coming back up the handle server won't start
|
||||||
|
- The `handle-server.log` file shows:
|
||||||
|
|
||||||
|
```console
|
||||||
|
Shutting down...
|
||||||
|
"2022/11/26 02:12:17 CET" 25 Rotating log files
|
||||||
|
Error: null
|
||||||
|
(see the error log for details.)
|
||||||
|
```
|
||||||
|
|
||||||
|
- In the `error.log` file I see:
|
||||||
|
|
||||||
|
```console
|
||||||
|
"2022/11/26 02:12:18 CET" 25 Started new run.
|
||||||
|
java.lang.UnsupportedOperationException
|
||||||
|
at java.lang.Runtime.runFinalizersOnExit(Runtime.java:287)
|
||||||
|
at java.lang.System.runFinalizersOnExit(System.java:1059)
|
||||||
|
at net.handle.server.Main.initialize(Main.java:124)
|
||||||
|
at net.handle.server.Main.main(Main.java:75)
|
||||||
|
Shutting down...
|
||||||
|
```
|
||||||
|
|
||||||
|
- Ah, it seems to be due to an [issue in OpenJDK 1.8.0_352](https://groups.google.com/g/dspace-tech/c/PqjfA5mqG4w/m/FhxI5oXhFwAJ?pli=1)
|
||||||
|
- I see the server upgraded to the new JDK version on 2022-11-10:
|
||||||
|
|
||||||
|
```console
|
||||||
|
Upgrade: openjdk-8-jdk-headless:amd64 (8u342-b07-0ubuntu1~20.04, 8u352-ga-1~20.04), openjdk-8-jre-headless:amd64 (8u342-b07-0ubuntu1~20.04, 8u352-ga-1~20.04)
|
||||||
|
End-Date: 2022-11-10 04:10:45
|
||||||
|
```
|
||||||
|
|
||||||
|
- As highlighted in the dspace-tech mailing list thread above, [this OpenJDK release deprecated `Runtime.runFinalizersOnExit`](https://mail.openjdk.org/pipermail/jdk8u-dev/2022-October/015706.html):
|
||||||
|
|
||||||
|
```console
|
||||||
|
- JDK-8287132: Retire Runtime.runFinalizersOnExit so that it always throws UOE
|
||||||
|
```
|
||||||
|
|
||||||
|
- I downloaded the previous versions of the packages from Launchpad:
|
||||||
|
|
||||||
|
```console
|
||||||
|
# wget https://launchpad.net/~openjdk-security/+archive/ubuntu/ppa/+build/24195357/+files/openjdk-8-jdk-headless_8u342-b07-0ubuntu1~20.04_amd64.deb
|
||||||
|
# wget https://launchpad.net/~openjdk-security/+archive/ubuntu/ppa/+build/24195357/+files/openjdk-8-jre-headless_8u342-b07-0ubuntu1~20.04_amd64.deb
|
||||||
|
# dpkg -i openjdk-8-j*8u342-b07*.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
- Then the handle-server process starts up fine, so I held these OpenJDK versions for now:
|
||||||
|
|
||||||
|
```console
|
||||||
|
# apt-mark hold openjdk-8-jdk-headless:amd64 apt-mark hold openjdk-8-jre-headless:amd64
|
||||||
|
openjdk-8-jdk-headless set on hold.
|
||||||
|
openjdk-8-jre-headless set on hold.
|
||||||
|
```
|
||||||
|
|
||||||
|
- Start a harvest on AReS
|
||||||
|
|
||||||
<!-- vim: set sw=2 ts=2: -->
|
<!-- vim: set sw=2 ts=2: -->
|
||||||
|
@ -24,7 +24,7 @@ I reverted the Cocoon autosave change because it was more of a nuissance that Pe
|
|||||||
<meta property="og:type" content="article" />
|
<meta property="og:type" content="article" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/2022-11/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/2022-11/" />
|
||||||
<meta property="article:published_time" content="2022-11-01T09:11:36+03:00" />
|
<meta property="article:published_time" content="2022-11-01T09:11:36+03:00" />
|
||||||
<meta property="article:modified_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="article:modified_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -54,9 +54,9 @@ I reverted the Cocoon autosave change because it was more of a nuissance that Pe
|
|||||||
"@type": "BlogPosting",
|
"@type": "BlogPosting",
|
||||||
"headline": "November, 2022",
|
"headline": "November, 2022",
|
||||||
"url": "https://alanorth.github.io/cgspace-notes/2022-11/",
|
"url": "https://alanorth.github.io/cgspace-notes/2022-11/",
|
||||||
"wordCount": "1785",
|
"wordCount": "2221",
|
||||||
"datePublished": "2022-11-01T09:11:36+03:00",
|
"datePublished": "2022-11-01T09:11:36+03:00",
|
||||||
"dateModified": "2022-11-23T17:10:47+03:00",
|
"dateModified": "2022-11-24T17:41:34+03:00",
|
||||||
"author": {
|
"author": {
|
||||||
"@type": "Person",
|
"@type": "Person",
|
||||||
"name": "Alan Orth"
|
"name": "Alan Orth"
|
||||||
@ -425,6 +425,107 @@ I reverted the Cocoon autosave change because it was more of a nuissance that Pe
|
|||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<h2 id="2022-11-25">2022-11-25</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Tony Murray, who is working on IFPRI’s CGSpace integration, emailed me to ask some questions about the REST API</li>
|
||||||
|
<li>Oh no, I realized there is a logic issue with the PDFbox cropbox code I added a few weeks ago:</li>
|
||||||
|
</ul>
|
||||||
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ JAVA_OPTS<span style="color:#f92672">=</span><span style="color:#e6db74">"-Xmx1024m -Dfile.encoding=UTF-8"</span> dspace filter-media -p <span style="color:#e6db74">"ImageMagick PDF Thumbnail"</span> -v -f -i 10568/77010
|
||||||
|
</span></span><span style="display:flex;"><span>The following MediaFilters are enabled:
|
||||||
|
</span></span><span style="display:flex;"><span>Full Filter Name: org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter
|
||||||
|
</span></span><span style="display:flex;"><span>org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter
|
||||||
|
</span></span><span style="display:flex;"><span>Loading @mire database changes for module MQM
|
||||||
|
</span></span><span style="display:flex;"><span>Changes have been processed
|
||||||
|
</span></span><span style="display:flex;"><span>IM Thumbnail tropentag2016_marshall.pdf is replacable.
|
||||||
|
</span></span><span style="display:flex;"><span>File: tropentag2016_marshall.pdf.jpg
|
||||||
|
</span></span><span style="display:flex;"><span>ERROR filtering, skipping bitstream:
|
||||||
|
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
|
||||||
|
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span> Item Handle: 10568/77010
|
||||||
|
</span></span><span style="display:flex;"><span> Bundle Name: ORIGINAL
|
||||||
|
</span></span><span style="display:flex;"><span> File Size: 1486580
|
||||||
|
</span></span><span style="display:flex;"><span> Checksum: 1ad66d918a56a5e84667386e1a32e352 (MD5)
|
||||||
|
</span></span><span style="display:flex;"><span> Asset Store: 0
|
||||||
|
</span></span><span style="display:flex;"><span>java.lang.IndexOutOfBoundsException: 1-based index out of bounds: 2
|
||||||
|
</span></span><span style="display:flex;"><span>java.lang.IndexOutOfBoundsException: 1-based index out of bounds: 2
|
||||||
|
</span></span><span style="display:flex;"><span> at org.apache.pdfbox.pdmodel.PDPageTree.get(PDPageTree.java:325)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.apache.pdfbox.pdmodel.PDPageTree.get(PDPageTree.java:248)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.apache.pdfbox.pdmodel.PDDocument.getPage(PDDocument.java:1543)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.dspace.app.mediafilter.ImageMagickThumbnailFilter.getImageFile(ImageMagickThumbnailFilter.java:167)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter.getDestinationStream(ImageMagickPdfThumbnailFilter.java:27)
|
||||||
|
</span></span><span style="display:flex;"><span> at com.atmire.dspace.app.mediafilter.AtmireMediaFilter.processBitstream(AtmireMediaFilter.java:103)
|
||||||
|
</span></span><span style="display:flex;"><span> at com.atmire.dspace.app.mediafilter.AtmireMediaFilterServiceImpl.filterBitstream(AtmireMediaFilterServiceImpl.java:61)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.dspace.app.mediafilter.MediaFilterServiceImpl.filterItem(MediaFilterServiceImpl.java:181)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.dspace.app.mediafilter.MediaFilterServiceImpl.applyFiltersItem(MediaFilterServiceImpl.java:159)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.dspace.app.mediafilter.MediaFilterCLITool.main(MediaFilterCLITool.java:232)
|
||||||
|
</span></span><span style="display:flex;"><span> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
</span></span><span style="display:flex;"><span> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:229)
|
||||||
|
</span></span><span style="display:flex;"><span> at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:81)
|
||||||
|
</span></span></code></pre></div><ul>
|
||||||
|
<li>Salem gave me a list of CGSpace collections that have double spaces in the names
|
||||||
|
<ul>
|
||||||
|
<li>Normally this would only be a minor annoyance, but he discovered that the REST API seems to trim the spaces, which causes an issue when trying to reference them!</li>
|
||||||
|
<li>He sent me a list of about ten collection UUIDs so I fixed them</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>I found a bunch of LIVES presentations on CGSpace that have presentations on SlideShare with incorrect licenses… I updated about fifty of them</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="2022-11-26">2022-11-26</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Sync DSpace Test with CGSpace</li>
|
||||||
|
<li>I increased the session timeout in Tomcat from thirty minutes to sixty, as requested by Maria a few weeks ago
|
||||||
|
<ul>
|
||||||
|
<li>See: <a href="https://gitlab.inf.unibz.it/commul/docker/clarin-dspace/-/issues/44">https://gitlab.inf.unibz.it/commul/docker/clarin-dspace/-/issues/44</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>I re-built DSpace on CGSpace, ran all updates, and rebooted the machine
|
||||||
|
<ul>
|
||||||
|
<li>Then after coming back up the handle server won’t start</li>
|
||||||
|
<li>The <code>handle-server.log</code> file shows:</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>Shutting down...
|
||||||
|
</span></span><span style="display:flex;"><span>"2022/11/26 02:12:17 CET" 25 Rotating log files
|
||||||
|
</span></span><span style="display:flex;"><span>Error: null
|
||||||
|
</span></span><span style="display:flex;"><span> (see the error log for details.)
|
||||||
|
</span></span></code></pre></div><ul>
|
||||||
|
<li>In the <code>error.log</code> file I see:</li>
|
||||||
|
</ul>
|
||||||
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>"2022/11/26 02:12:18 CET" 25 Started new run.
|
||||||
|
</span></span><span style="display:flex;"><span>java.lang.UnsupportedOperationException
|
||||||
|
</span></span><span style="display:flex;"><span> at java.lang.Runtime.runFinalizersOnExit(Runtime.java:287)
|
||||||
|
</span></span><span style="display:flex;"><span> at java.lang.System.runFinalizersOnExit(System.java:1059)
|
||||||
|
</span></span><span style="display:flex;"><span> at net.handle.server.Main.initialize(Main.java:124)
|
||||||
|
</span></span><span style="display:flex;"><span> at net.handle.server.Main.main(Main.java:75)
|
||||||
|
</span></span><span style="display:flex;"><span>Shutting down...
|
||||||
|
</span></span></code></pre></div><ul>
|
||||||
|
<li>Ah, it seems to be due to an <a href="https://groups.google.com/g/dspace-tech/c/PqjfA5mqG4w/m/FhxI5oXhFwAJ?pli=1">issue in OpenJDK 1.8.0_352</a></li>
|
||||||
|
<li>I see the server upgraded to the new JDK version on 2022-11-10:</li>
|
||||||
|
</ul>
|
||||||
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>Upgrade: openjdk-8-jdk-headless:amd64 (8u342-b07-0ubuntu1~20.04, 8u352-ga-1~20.04), openjdk-8-jre-headless:amd64 (8u342-b07-0ubuntu1~20.04, 8u352-ga-1~20.04)
|
||||||
|
</span></span><span style="display:flex;"><span>End-Date: 2022-11-10 04:10:45
|
||||||
|
</span></span></code></pre></div><ul>
|
||||||
|
<li>As highlighted in the dspace-tech mailing list thread above, <a href="https://mail.openjdk.org/pipermail/jdk8u-dev/2022-October/015706.html">this OpenJDK release deprecated <code>Runtime.runFinalizersOnExit</code></a>:</li>
|
||||||
|
</ul>
|
||||||
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span> - JDK-8287132: Retire Runtime.runFinalizersOnExit so that it always throws UOE
|
||||||
|
</span></span></code></pre></div><ul>
|
||||||
|
<li>I downloaded the previous versions of the packages from Launchpad:</li>
|
||||||
|
</ul>
|
||||||
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span># wget https://launchpad.net/~openjdk-security/+archive/ubuntu/ppa/+build/24195357/+files/openjdk-8-jdk-headless_8u342-b07-0ubuntu1~20.04_amd64.deb
|
||||||
|
</span></span><span style="display:flex;"><span># wget https://launchpad.net/~openjdk-security/+archive/ubuntu/ppa/+build/24195357/+files/openjdk-8-jre-headless_8u342-b07-0ubuntu1~20.04_amd64.deb
|
||||||
|
</span></span><span style="display:flex;"><span># dpkg -i openjdk-8-j*8u342-b07*.deb
|
||||||
|
</span></span></code></pre></div><ul>
|
||||||
|
<li>Then the handle-server process starts up fine, so I held these OpenJDK versions for now:</li>
|
||||||
|
</ul>
|
||||||
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span># apt-mark hold openjdk-8-jdk-headless:amd64 apt-mark hold openjdk-8-jre-headless:amd64
|
||||||
|
</span></span><span style="display:flex;"><span>openjdk-8-jdk-headless set on hold.
|
||||||
|
</span></span><span style="display:flex;"><span>openjdk-8-jre-headless set on hold.
|
||||||
|
</span></span></code></pre></div><ul>
|
||||||
|
<li>Start a harvest on AReS</li>
|
||||||
|
</ul>
|
||||||
<!-- raw HTML omitted -->
|
<!-- raw HTML omitted -->
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/categories/notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<meta property="og:description" content="Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." />
|
<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:type" content="website" />
|
||||||
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/posts/" />
|
||||||
<meta property="og:updated_time" content="2022-11-23T17:10:47+03:00" />
|
<meta property="og:updated_time" content="2022-11-24T17:41:34+03:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,19 +3,19 @@
|
|||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||||
<url>
|
<url>
|
||||||
<loc>https://alanorth.github.io/cgspace-notes/categories/</loc>
|
<loc>https://alanorth.github.io/cgspace-notes/categories/</loc>
|
||||||
<lastmod>2022-11-23T17:10:47+03:00</lastmod>
|
<lastmod>2022-11-24T17:41:34+03:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://alanorth.github.io/cgspace-notes/</loc>
|
<loc>https://alanorth.github.io/cgspace-notes/</loc>
|
||||||
<lastmod>2022-11-23T17:10:47+03:00</lastmod>
|
<lastmod>2022-11-24T17:41:34+03:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://alanorth.github.io/cgspace-notes/categories/notes/</loc>
|
<loc>https://alanorth.github.io/cgspace-notes/categories/notes/</loc>
|
||||||
<lastmod>2022-11-23T17:10:47+03:00</lastmod>
|
<lastmod>2022-11-24T17:41:34+03:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://alanorth.github.io/cgspace-notes/2022-11/</loc>
|
<loc>https://alanorth.github.io/cgspace-notes/2022-11/</loc>
|
||||||
<lastmod>2022-11-23T17:10:47+03:00</lastmod>
|
<lastmod>2022-11-24T17:41:34+03:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://alanorth.github.io/cgspace-notes/posts/</loc>
|
<loc>https://alanorth.github.io/cgspace-notes/posts/</loc>
|
||||||
<lastmod>2022-11-23T17:10:47+03:00</lastmod>
|
<lastmod>2022-11-24T17:41:34+03:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://alanorth.github.io/cgspace-notes/2022-10/</loc>
|
<loc>https://alanorth.github.io/cgspace-notes/2022-10/</loc>
|
||||||
<lastmod>2022-10-31T16:59:47+03:00</lastmod>
|
<lastmod>2022-10-31T16:59:47+03:00</lastmod>
|
||||||
|
Loading…
Reference in New Issue
Block a user