Skip to content

Instantly share code, notes, and snippets.

View mdlincoln's full-sized avatar

Matthew Lincoln mdlincoln

View GitHub Profile
@mdlincoln
mdlincoln / Nested.vue
Created October 5, 2019 14:08
Recursive nested list Vue component
<template>
<span>
<ol v-if="Array.isArray(value)">
<li v-for="(item, index) in value" :key="index">
<Nested :value="item" />
</li>
</ol>
<ul v-else-if="typeof value == 'object' && !!value">
<li v-for="(val, name) in value" :key="name">
{{ name }}:
@mdlincoln
mdlincoln / rstudio-cc.yml
Last active August 9, 2022 11:46
cloud-config script to setup Rstudio server and Shiny server on Ubuntu 14.04 on Digital Ocean
#cloud-config
# In order to access RStudio server via the web interface, you must log on with
# a user account that allows password access. This script does not add that user
# by default. You may either ssh as root into the server and `adduser` as
# normal, or script a user addition here:
# users:
# - name: # username #
# lock-passwd: false # allow login with password
@mdlincoln
mdlincoln / search.html
Created March 19, 2020 19:53
lunr search template
---
layout: page
title: Search
noindex: true
---
<script src="https://unpkg.com/lunr/lunr.js"></script>
<script>
const BUFFER = 30 // Number of characters to show for kwic-results
@mdlincoln
mdlincoln / row_rep.R
Created November 6, 2015 04:45
dplyr-friendly verb: replicate the rows of a data_frame n times
row_rep <- function(df, n) {
df[rep(1:nrow(df), times = n),]
}
@mdlincoln
mdlincoln / ffmpeg.sh
Last active September 9, 2019 19:45
Basics to convert .mov to .gif
ffmpeg -i input.mov -t 12 -vf "fps=20,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
@mdlincoln
mdlincoln / aat
Last active July 29, 2019 03:02
Getty open refine strings
'http://vocab.getty.edu/sparql.json?query=select+distinct*{?x+skos:inScheme+aat:;(xl:prefLabel|xl:altLabel)/gvp:term"' + escape(value, 'url') + '"@en}'
@mdlincoln
mdlincoln / ceteicean_hypothesis_annotation.json
Last active October 1, 2018 19:39
Response from the hypothes.is API to a page rendered by CeTEIcean
{
"updated": "2018-10-01T18:16:02.140402+00:00",
"group": "__world__",
"target": [
{
"source": "http://teic.github.io/CETEIcean/EEBOTest.html",
"selector": [
{
"conformsTo": "https://tools.ietf.org/html/rfc3236",
"type": "FragmentSelector",
@mdlincoln
mdlincoln / downsample_pdf.sh
Created September 25, 2015 19:10
ghostscript command to downsample a pdf
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=OUTPUT.pdf INPUT.pdf
@mdlincoln
mdlincoln / prefName.r
Created March 1, 2018 23:20
Get ULAN prefName for a given ID from the Getty Vocabularies SPARQL endpoint
library(tidyverse)
library(httr)
get_prefname <- function(id) {
message(id)
endpoint <- "http://vocab.getty.edu/sparql.csv?query="
query <- URLencode(str_interp("SELECT ?prefName WHERE {
?person dc:identifier '${id}';
xl:prefLabel [xl:literalForm ?prefName ] .
} LIMIT 1"))
@mdlincoln
mdlincoln / letter_position.r
Created February 9, 2018 16:25
How many columns does this spreadsheet have?
letter_position <- function(s) {
comp_str <- stringr::str_split(stringr::str_to_lower(s), "")
purrr::map_int(comp_str, alpha_index)
}
alpha_index <- function(s) {
i <- purrr::map_int(s, ~ which(. == letters))
purrr::reduce(i, function(x, y) {
x * length(letters) + y
})