Skip to content

Instantly share code, notes, and snippets.


Block or report user

Report or block nbogie

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View CrapJsonWebsocketServer.hs
-- don't do it like this, especially the json!
import Network.WebSockets (shakeHands, getFrame, putFrame)
import Network (listenOn, PortID(PortNumber), accept, withSocketsDo)
import System.IO (Handle, hClose)
import qualified Data.ByteString as B (append, null)
import Data.ByteString.UTF8 (fromString) -- this is from utf8-string
import Control.Monad (forever)
import Control.Concurrent (forkIO, threadDelay)
import Data.List (intercalate)
View CrapJsonWebsocketClient.html
<!-- for use with equally crap server at -->
<!-- you'll need jquery and flot -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Flot Log presenter with External json file</title>
<link href="./clientsupport/layout.css" rel="stylesheet" type="text/css">
<script language="javascript" type="text/javascript" src="./clientsupport/jquery.js"></script>
<script language="javascript" type="text/javascript" src="./clientsupport/jquery.flot.js"></script>
nbogie / gist:822659
Created Feb 11, 2011
Nokogiri shortcut for using whatever namespace the doc announced
View gist:822659
envNodes = mydoc.xpath '//xmlns:environment', mydoc.root.namespaces
nbogie / GroupExample.hs
Created Mar 5, 2011
Still avoiding bytestring, and without anticipating next stage. Perf ok: 1 million lines in 2 sec and 1 Mb ram, with -O2
View GroupExample.hs
import Data.Function (on)
import Data.List (groupBy)
import Data.Maybe (mapMaybe)
import qualified Data.List.Utils as U
type Domain = String
type NameServer = String
main :: IO ()
main = interact (processLines . lines)
nbogie / GroupExample.hs
Created Mar 5, 2011
break out parseInput - it's good to have dedicated parse stage indicating parsed type.
View GroupExample.hs
import Data.Function (on)
import Data.List (groupBy)
import Data.Maybe (mapMaybe)
import qualified Data.List.Utils as U
type Domain = String
type NameServer = String
main :: IO ()
main = interact process
nbogie / CompactNameServers.hs
Created Mar 17, 2011
Compacts lists of nameservers "a.y.z", "b.y.z" into z(y(a,b))
View CompactNameServers.hs
import qualified Data.List.Utils as U
import Data.List (sort, groupBy, intercalate)
import Data.Function (on)
-- -------------------------------------------------
-- example data
-- -------------------------------------------------
examples :: [(Domain, [NameServer])]
examples = [("",["7.f.c",
View PodParser.hs
{-- snippet all --}
module PodParser where
import PodTypes
import Text.XML.HaXml
import Text.XML.HaXml.Parse
import Text.XML.HaXml.Posn
import Text.XML.HaXml.Html.Generate(showattr)
import Data.Char
import Data.List
nbogie / haxml_showattr_bugdemo.hs
Created Mar 23, 2011
A demonstration of a problem calling showattr in HaXml
View haxml_showattr_bugdemo.hs
module Main where
import Text.XML.HaXml
import Text.XML.HaXml.Posn
main :: IO ()
main = processXmlWith (hexagrams `o` tag "IChing")
hexagrams :: Content Posn -> [Content Posn]
hexagrams = html [ hbody [htable [rows `o` children `with` ( tag "hexagram")] ] ]
nbogie / SimpleAesonJsonExample.hs
Created May 22, 2011
Simplest Aeson json parsing and generation example
View SimpleAesonJsonExample.hs
{-# LANGUAGE OverloadedStrings #-}
-- This is a very simple example of parsing and generating json with Aeson,
-- by a haskell newbie and intended for newbies.
-- This almost certainly contains a number of bad practices. It works for
-- me and hopefully will get you started.
-- I couldn't find a stand-alone example of Aeson usage and found it tricky to
-- get going. For example, if you don't realize to enable the language extension
nbogie / custom_log_subscriber.rb
Created Jun 16, 2011
attempt to change out ActionController::LogSubscriber in rails 3
View custom_log_subscriber.rb
#put this in config/initializers/custom_ac_log_subscriber.rb
## needed if we re-enable additions
#require 'active_support/core_ext/object/blank'
module MyApp
#TODO: we should no longer interit from ActionController::LogSubscriber
# as we are not truly unregistering the parent.
class CustomAcLogSubscriber < ActiveSupport::LogSubscriber
INTERNAL_PARAMS = ActionController::LogSubscriber::INTERNAL_PARAMS
You can’t perform that action at this time.