Upgrade to kiln 0.2
13
static/cgi-bin/debug
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ "$QUERY_STRING" = "" ]; then
|
||||
echo -ne "10 Enter a query string\r\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -ne "20 text/plain\r\n"
|
||||
echo -ne "SCRIPT_NAME: $SCRIPT_NAME\r\n"
|
||||
echo -ne "PATH_INFO: $PATH_INFO\r\n"
|
||||
echo -ne "QUERY_STRING: $QUERY_STRING\r\n"
|
||||
|
||||
|
87
static/cgi-bin/translate
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/ruby --disable-all
|
||||
|
||||
# A cgi-bin script that translates between languages. It relies on apertium
|
||||
# being installed on the machine.
|
||||
#
|
||||
# CGI works with environment variables. Here are the ones that matter:
|
||||
#
|
||||
# PATH_INFO: /<from>/<to>
|
||||
# QUERY_STRING: Some%20text%20to%20translate
|
||||
#
|
||||
# We expect to be called like: /cgi-bin/translate/eng/spa?Food
|
||||
#
|
||||
# If we don't have two languages, make it a Not Found error.
|
||||
# If we don't have a query string to translate, ask for one.
|
||||
|
||||
require 'cgi'
|
||||
|
||||
LANGUAGE_PAIRS = %w[en-es es-en]
|
||||
|
||||
Encoding.default_internal = Encoding::UTF_8
|
||||
Encoding.default_external = Encoding::UTF_8
|
||||
|
||||
class Object
|
||||
def blank?
|
||||
nil? || self&.empty?
|
||||
end
|
||||
end
|
||||
|
||||
def respond!(code, meta, body = nil)
|
||||
STDOUT.print("#{code} #{meta}\r\n")
|
||||
STDOUT.print(body) unless body.blank?
|
||||
exit 0
|
||||
end
|
||||
|
||||
def ask!(prompt)
|
||||
respond!(10, prompt)
|
||||
end
|
||||
|
||||
def ok!(meta, body = nil)
|
||||
respond!(20, meta, body)
|
||||
end
|
||||
|
||||
def temp_fail!(meta = 'Temporary Failure')
|
||||
respond!(40, meta)
|
||||
end
|
||||
|
||||
def not_found!(meta = 'Not Found')
|
||||
respond!(51, meta)
|
||||
end
|
||||
|
||||
def extract_langpair(path)
|
||||
return if path.blank? || !path.start_with?('/')
|
||||
|
||||
_, src, dst, *rest = path.split('/')
|
||||
|
||||
return unless rest.empty?
|
||||
|
||||
pair = [src, dst].join('-')
|
||||
return unless LANGUAGE_PAIRS.include?(pair)
|
||||
|
||||
pair
|
||||
end
|
||||
|
||||
def extract_text(query)
|
||||
return "" if query.blank?
|
||||
|
||||
CGI.unescape(query)
|
||||
end
|
||||
|
||||
LANG_PAIR = extract_langpair(ENV['PATH_INFO'])
|
||||
not_found! if LANG_PAIR.blank?
|
||||
|
||||
TRANSLATE = extract_text(ENV['QUERY_STRING'])
|
||||
|
||||
# TODO: we could detect a URL and translate the whole page sometime, perhaps
|
||||
ask!('Enter text to translate') if TRANSLATE.blank?
|
||||
|
||||
require 'open3'
|
||||
|
||||
translation, status = Open3.capture2({'LC_ALL' => 'C.UTF-8'}, 'apertium', '-un', LANG_PAIR, stdin_data: TRANSLATE, binmode: true)
|
||||
translation = translation.force_encoding("UTF-8")
|
||||
|
||||
|
||||
temp_fail!("Couldn't get translation") unless status.success?
|
||||
|
||||
ok!('text/plain; charset="utf-8"', translation)
|
||||
|
BIN
static/img/nick-thomas.jpg
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
static/img/pig-dog-01/politicalcompass-me.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
static/img/pig-dog-01/politicalcompass-uk-parties.png
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
static/img/pig-dog-02/expenses.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
static/img/pig-dog-02/net-worth.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
static/img/pig-dog-05/chimney-state.jpg
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
static/img/pig-dog-05/foundations-state.jpg
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
static/img/pig-dog-05/groundwater-state.jpg
Normal file
After Width: | Height: | Size: 577 KiB |
BIN
static/img/pig-dog-05/wall-state.jpg
Normal file
After Width: | Height: | Size: 2.7 MiB |
30
static/me@ur.gs.gpg.asc
Normal file
@@ -0,0 +1,30 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQENBFOW+lMBCAD05mgSzlPUOeA2Gt4zqSCJEyCVNLe5lD91/C0kd+QydMt3Ut52
|
||||
a+f2Xi0AN4uyB/62vQao7g5lZar6amwFxGSdZ801J939lCDZuW1BzKuTZP5XCMsw
|
||||
60PhP5FU0CJ6+QN2rLbEuyoQfsxz2raHbaZWLazu/7brq6TPTlk3LcEdq6t9uC/Q
|
||||
OYd2Q2MOBetTLISInfpJbnsSku1kPAOiF20mVvbv203xoWrk9X7jdEEzWYadxlQc
|
||||
16nk7RI9N9aJZQz+QKQhSS07iTJewQmnGXCjRL/zxOFfH9MiwdsW7CqOaBHZ9KIR
|
||||
+RMi/OmGlUx/Kos7OqWwlolRJUVAEIJqvipxABEBAAG0Fk5pY2sgVGhvbWFzIDxt
|
||||
ZUB1ci5ncz6JAVUEEwEKAD8CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAFiEE
|
||||
hBJaWPrZKL9IsuK5Hxp+zM/guS8FAmAtRF0FCR9iTQoACgkQHxp+zM/guS9lXggA
|
||||
g8k2vrbxgVWNvtQaj06dJOwy+IbX5qlhjo/6xooeJNyUiekDoP2dkSLbmkFuFxeC
|
||||
T1F9kuuGv4d//o3FGirTE3IdXZBgP6W20bw/UY2adQ1czPMbu1muIN3EeBtfZ+gx
|
||||
ElRZh6NupxViZHuiS6wcceO2a9G5gACMHWqoD3DtqtUP5dtkpMA+09ofhqQD+zK1
|
||||
iPBjg9HcNEngDeBUB1VOzErmzV60Tc3ZdgecwffA4mmWmjufi/7w7Wywg9YwyXj3
|
||||
3zOAE9223CSHtSNIbFN9m9OOyAoJ4vQ8scbj+KEZCpDhe0a2O+kBryyT/s+kb6YU
|
||||
F/At5MDoi05BdbkLOPVaKbkBDQRTlvpTAQgAxYz8lhTBMSXLwrDf2OqyQ48M31lj
|
||||
50MwuPlMKN+e5z04hwaoYDgArKVLYY9uz8LwsJZS67k4jrUtVTbEIQmjMZpir8VF
|
||||
vGs8JsKDzCOfOD9FgJMxS4foAxRNSQVRRDSvCdUqL0Yk5q2kIaqO74Gfly7nrjYR
|
||||
ice3yFA2fMAPsyhFkQS+sD19HtdhncAyoyCO9yQotVyHZXQreVQO4KyELtcqvUud
|
||||
Ik+pf434ArxCe11plDEBaUxdMenvu8RMaMbzkcgMWyy61QYrBofM0FS8LWOutOVM
|
||||
z1w/tVUp5Tla0tpJgM1s1ld20Gfw0j3tLQShqye+eaOCNv9p4q2oOPfMnwARAQAB
|
||||
iQE8BBgBCgAmAhsMFiEEhBJaWPrZKL9IsuK5Hxp+zM/guS8FAmAtRHcFCR9iTSQA
|
||||
CgkQHxp+zM/guS8tNQgAxc9zgBJ1cjhztBSVqsT0TSUaO+QDeqbCPRVEy0GoT0Fo
|
||||
FPEt+vnM5mUi1ceH2SNI9WMgNRKX2SOTsT420jyAFDvmdc7PBYmUq0f9ON2MLpqQ
|
||||
oYcG1Pvhs2yKY4xhnlwe+4rBUFURg5aDYHUAUg2UKTgJu6eSOOKfZX+wHfL5x6ob
|
||||
nrkXUaZYp1xng4hu1f/YEbvQbBSg02pCMfZWm6EpZUTK/cbmEdJX9QalRB4re0co
|
||||
ZKoZPlCGBUNwc1JmRzgO90EA6ymJ50SJ8eFoyiw9Ar3xFmiE1I6PGMJOAeqQLNe4
|
||||
HuHNA3gHoA0WByf/TWuUZGCl4i1IIpY1OiEMyIoHOg==
|
||||
=fti4
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
BIN
static/pdf/payling2014.pdf
Normal file
36
static/robots.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
# Being archived in a long-term store is harmful to my privacy. Never
|
||||
# know when I might need to change something in a hurry
|
||||
User-Agent: ia_archiver
|
||||
Disallow: /
|
||||
|
||||
User-Agent: archiver
|
||||
Disallow: /
|
||||
|
||||
# Search engines tend to update their indexes fairly quickly, so no
|
||||
# objections to being indexed by them in general. That said, I want to
|
||||
# do my own (tiny) part in making Google useless
|
||||
# not contribute to
|
||||
User-Agent: indexer
|
||||
Disallow:
|
||||
|
||||
User-agent: Googlebot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: gus
|
||||
Disallow:
|
||||
|
||||
# Research *should* only report anonymised aggregates, I can live with
|
||||
# that
|
||||
User-Agent: researcher
|
||||
Disallow:
|
||||
|
||||
# I remain confused by the incluson of proxies in robots.txt, but am
|
||||
# happy for them to access the site as long as they themselves forbid
|
||||
# being indexed or archived. I can add exceptions if I find any that
|
||||
# don't do that
|
||||
User-Agent: webproxy
|
||||
Disallow:
|
||||
|
||||
# Here be dragons
|
||||
User-Agent: *
|
||||
Disallow: /cgi-bin/
|
1
static/success.txt
Normal file
@@ -0,0 +1 @@
|
||||
success
|