Skip to content

Instantly share code, notes, and snippets.

View wedesoft's full-sized avatar

Jan Wedekind wedesoft

View GitHub Profile
@wedesoft
wedesoft / .gitignore
Last active December 31, 2015 13:09
Python Scheme integration (libguile)
*.so
*.o
*.html
.*.un~
.*.swp
@wedesoft
wedesoft / csv.scm
Created April 10, 2014 09:27
Read CSV data with Guile (GNU Scheme)
(use-modules (system base lalr))
(define csv-parse
(lalr-parser
(CELL COMMA NEWLINE RETURN)
(csv () : '()
(csv row) : (cons $2 $1))
(row (nl) : (list "")
(COMMA row) : (cons "" $2)
(CELL nl) : (list $1)
(CELL COMMA row) : (cons $1 $3))
@wedesoft
wedesoft / amazed.jpg
Last active August 29, 2015 14:03 — forked from staltz/introrx.md
amazed.jpg
@wedesoft
wedesoft / int-to-byte.scm
Created June 18, 2015 12:05
Convert integer array to byte array
(use-modules (oop goops) (aiscm element) (aiscm int) (aiscm sequence) (aiscm op) (srfi srfi-26))
(define s (to-type (list->multiarray '(2 3 5 7)) <int>))
(make (to-type (class-of s) <byte>) #:shape (shape s) #:value (get-value s) #:strides (map (cut * 4 <>) (strides s)))
@wedesoft
wedesoft / task.rb
Last active August 29, 2015 14:23
Background task in Ruby
#!/usr/bin/env ruby
def task n
result = 0
for i in 1 ... n
result += i
sleep 0.01
end
result
end
t = Thread.new 100, &method(:task)
@wedesoft
wedesoft / workshop.rb
Created October 8, 2015 12:40
Count bright pixels
#!/usr/bin/env ruby
require 'hornetseye_rmagick'
require 'hornetseye_xorg'
include Hornetseye
img = MultiArray.load_ubyte 'http://www.shu.ac.uk/research/meri/sites/shu.ac.uk/files/Fabio2%20case%20study.jpg'
sparks = (img >= 200).to_ubyte.sum
puts "about #{sparks} sparkly pixels"
puts "your milling tool is toast" if sparks >= 200
@wedesoft
wedesoft / image-types.rb
Last active June 16, 2016 19:59
HornetsEye, OpenCV, RMagick conversions
require 'multiarray'
require 'hornetseye_opencv'
require 'hornetseye_rmagick'
require 'hornetseye_narray'
include Hornetseye
img = MultiArray[[2, 3, 5, 7], [11, 13, 17, 19]]
# MultiArray(UBYTE,2):
# [ [ 2, 3, 5, 7 ],
# [ 11, 13, 17, 19 ] ]
cvmat = img.to_cvmat
@wedesoft
wedesoft / graph-coloring.scm
Last active June 20, 2016 20:19
Graph coloring using Chaitin's algorithm
(use-modules (srfi srfi-1) (srfi srfi-26) (ice-9 curried-definitions))
(define (dot graph colors)
(apply string-append
(append (list "graph g {")
(map (lambda (color) (format #f " ~a [style=filled, fillcolor=~a];" (car color) (cdr color))) colors)
(map (lambda (edge) (format #f " ~a -- ~a;" (car edge) (cdr edge))) graph)
(list " }"))))
(define (graphviz graph colors) (system (format #f "echo '~a' | dot -Tpng | display -" (dot graph colors))))
(define (nodes graph) (delete-duplicates (append (map car graph) (map cdr graph))))
(define ((has-node? node) edge) (or (eq? (car edge) node) (eq? (cdr edge) node)))
@wedesoft
wedesoft / Dockerfile
Last active June 26, 2016 20:18
Get session key in Guile Artanis
# sudo docker build -t wedesoft/aiscm
# sudo docker run --rm -t -i wedesoft/aiscm /bin/bash
# sudo docker run --rm -p 80:80 wedesoft/aiscm
FROM debian:jessie
MAINTAINER Jan Wedekind <jan@wedesoft.de>
ENV ARTANIS_VERSION 0.1.2.1-be890-dirty
ENV SERVER_HOME /srv/artanis-repl
RUN apt-get update && \
@wedesoft
wedesoft / artanis-user-session.scm
Last active June 23, 2016 21:29
Guile Artanis user session
(use-modules (artanis artanis) (artanis cookie) (artanis utils))
(init-server)
(get "/" #:session 'spawn
(lambda (rc)
(let [(sid (or (cookie-ref (rc-cookie rc) "sid") (:session rc 'spawn)))
(time (strftime "%c" (localtime (current-time))))]
(tpl->response `(html (body (p ,sid) (p ,time)))))))
(run)