Skip to content

Instantly share code, notes, and snippets.

View ocharles's full-sized avatar
🥳

Ollie Charles ocharles

🥳
View GitHub Profile

Keybase proof

I hereby claim:

  • I am ocharles on github.
  • I am ocharles (https://keybase.io/ocharles) on keybase.
  • I have a public key whose fingerprint is 741D 56D6 5A2F A961 3B4A CD13 B834 A915 55D4 8746

To claim this, I am signing this object:

@ocharles
ocharles / Soundex.hs
Created August 14, 2014 08:58
Soundex in Haskell
import Control.Arrow ((&&&))
import Data.Char (toLower)
import Data.Maybe (catMaybes)
import System.Random
import qualified Data.Map as M
data Sxcode = Sxcode Char [Sxdigit]
deriving (Eq, Ord, Show)
something = foo
bar
baz
blah one 2
blah
somethingCorrect = foo (bar) (baz (blah one 2)) (blah)
import Control.Arrow
import Data.Map (Map)
import qualified Data.Map as Map
import Schema
--------------------------------------------------------------------------------
-- Here's your database access layer
findRelease :: String -> IO (Entity Release)
getReleaseMediums :: (Ref Release) -> IO (Map (Ref Release) [Entity Medium])
from hashlib import sha512
from hmac import HMAC
import base64
print base64.b64encode(str(HMAC('foo', 'bar', sha512).digest()))
@ocharles
ocharles / ConduitSnippet.hs
Created June 20, 2012 09:56
Using http-conduit to merely print the response is cumbersome.
{-# LANGUAGE OverloadedStrings #-}
import Data.CaseInsensitive (original)
import Data.Conduit (($$), yield)
import Data.Conduit.Binary (sinkHandle)
import Network.HTTP.Conduit
import Network.HTTP.Types
import System.IO (stdout)
import qualified Data.ByteString.Char8 as S
2012-01-12 21:29:04.425080500 [error] Caught exception in MusicBrainz::Server::Controller::ReleaseEditor::Add->add "Failed query:
2012-01-12 21:29:04.425084500 '
2012-01-12 21:29:04.425086500 SELECT DISTINCT
2012-01-12 21:29:04.425087500 entity.id,
2012-01-12 21:29:04.425089500 entity.gid,
2012-01-12 21:29:04.425090500 entity.comment,
2012-01-12 21:29:04.425092500 entity.artist_credit AS artist_credit_id,
2012-01-12 21:29:04.425093500 entity.language, entity.script, entity.country, entity.barcode,
2012-01-12 21:29:04.425125500 entity.date_year, entity.date_month, entity.date_day,
2012-01-12 21:29:04.425127500 r.name,
Apache Maven 3.0.3 (r1075438; 2011-02-28 17:31:09+0000)
Maven home: /usr/share/maven-bin-3.0
Java version: 1.6.0_27, vendor: Sun Microsystems Inc.
Java home: /opt/sun-jdk-1.6.0.27/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "2.6.39-gentoo-r3", arch: "amd64", family: "unix"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/share/maven-bin-3.0/conf/settings.xml
[DEBUG] Reading user settings from /home/ollie/.m2/settings.xml
[DEBUG] Using local repository at /home/ollie/.m2/repository
Index: src/main/java/fm/last/catalogue/musicbrainzupdate/dao/musicbrainz/SpringTemplateMusicBrainzDao.java
===================================================================
--- src/main/java/fm/last/catalogue/musicbrainzupdate/dao/musicbrainz/SpringTemplateMusicBrainzDao.java (revision 206724)
+++ src/main/java/fm/last/catalogue/musicbrainzupdate/dao/musicbrainz/SpringTemplateMusicBrainzDao.java (working copy)
@@ -27,11 +27,12 @@
private static final String GET_ALL_ALBUMS = "SELECT an.name, rn.name, r.gid, r.id, 0 "
+ "FROM musicbrainz.release r " + "JOIN musicbrainz.release_name rn ON r.name = rn.id "
- + "JOIN musicbrainz.artist_credit_name acn ON r.artist_credit = acn.artist_credit "
+ + "JOIN musicbrainz.artist_credit ac ON r.artist_credit = ac.id "
-- Initialize a random database with languages, and keep track of what languages
-- are available.
instance Arbitrary (DBState (LoadedEntity Language)) where
arbitrary = do
l <- Language <$> (T.pack <$> name) <*> name `suchThat` (not . null)
return $ DBState (void $ insertLanguage l) (toEnt l)
where insertLanguage l = HDBC.run "INSERT INTO language (iso_code, name) VALUES (?, ?)"
[ toSql $ languageIsoCode l
, toSql $ languageName l ]
toEnt l = Entity { entityRef = Ref (toSql $ languageIsoCode l)