Skip to content

Instantly share code, notes, and snippets.

View owickstrom's full-sized avatar

Oskar Wickström owickstrom

View GitHub Profile
@owickstrom
owickstrom / gist:3072696
Created July 8, 2012 20:34
Aliases in Scala pattern matching
// If we have a Person class like this...
case class Person(firstName : String, lastName : String)
// ... and we want to use pattern matching to ensure
// an object is a Person with lastName "Jones" before
// send it to someFunction, we could do something like
// this:
someObject match {
@owickstrom
owickstrom / cp11-async-curl.cpp
Created July 31, 2012 16:47
C++11 Async cURL
#include <iostream>
#include <curl/curl.h>
#include <math.h>
#include <vector>
#include <future>
#include <boost/format.hpp>
#define logbase(a, b) (log(a)/log(b))
using namespace std;
@owickstrom
owickstrom / .gitignore
Created October 17, 2012 07:52
A simple Continuous Integration and Deployment workflow with ASP.NET MVC, GitHub and Jenkins
# Ignore dot-files, except the .gitignore file.
.*
!.gitignore
# (All rules from CSharp.gitignore)
@owickstrom
owickstrom / Thing.cs
Created October 17, 2012 07:54
A simple Continuous Integration and Deployment workflow with ASP.NET MVC, GitHub and Jenkins (Changing the model)
public class Thing
{
public long ThingId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
@owickstrom
owickstrom / GetFromTo.cs
Created December 30, 2012 14:27
Possible solution (not tested)
public virtual IEnumerable<Commit> GetFromTo(DateTime start, DateTime end)
{
this.ThrowWhenDisposed();
Logger.Debug(Resources.GettingAllCommitsFromToTime, start, end);
var selectedCommitIds = this.stamps.Where(x => x.Value >= start && x.Value < end).Select(x => x.Key);
var firstCommitId = selectedCommitIds.FirstOrDefault();
var lastCommitId = selectedCommitIds.LastOrDefault();
if (lastCommitId == Guid.Empty && lastCommitId == Guid.Empty)
@owickstrom
owickstrom / create_user.rake
Last active December 18, 2015 09:58
This is an update of https://gist.github.com/svanzoest/4028058 for Gitlab 5.2.0.
# gitlab 5.2.0 create user
# rake create_user["john@doe.com","johndoe","John Doe"] RAILS_ENV=production
desc "Create new user"
task :create_user, [:email, :username, :name] => :environment do |t, args|
puts "creating user '" + args.username + "' ('" + args.name + "') with email '" + args.email + "'"
@user = User.new({ email: args.email, name: args.name, username: args.username, force_random_password: true, projects_limit: 10 }, as: :admin)
if @user.save
puts "success"
else
@owickstrom
owickstrom / defer.go
Last active December 23, 2015 07:09
Going Async in Go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
syslog, err := os.Open("/var/log/system.log")
@owickstrom
owickstrom / state.ex
Last active July 28, 2020 20:52
Exposing a synchronous API in Elixir. Inspired by http://elixir-lang.org/getting_started/mix_otp/3.html.
defmodule State.Counter do
use GenServer
def start_link(opts \\ []) do
GenServer.start_link(__MODULE__, :ok, opts)
end
## Client API
@doc "Gets the counter's current value."
@owickstrom
owickstrom / test.ex
Created November 18, 2014 05:39
Missing binary concatenation operator in Elixir gives no warning
defmodule BinaryConcat do
def run do
data =
<<65, 32, 119, 97>> <>
<<114, 110, 105, 110>> # <- binary concatenation operator missing here
<<103, 32, 112, 101>> <>
<<114, 104, 97, 112, 115, 63>>
IO.puts <<data :: binary>>
end
@owickstrom
owickstrom / typed_pmap.clj
Created December 11, 2014 05:01
core.typed pmap error
(require '[clojure.core.typed :as t])
; This seem to work nicely
(t/cf (identity 1)) ;=> [(t/Val 123) {:then tt, :else ff}]
; And this
(t/cf pmap) ;=> (All [c a b ...] (t/IFn [[a b ... b -> c] (t/NonEmptySeqable a) (t/NonEmptySeqable b) ... b -> (t/NonEmptyASeq c)] [[a b ... b -> c] (t/U nil (Seqable a)) (t/U nil (Seqable b)) ... b -> (t/ASeq c)]))
; But when I combine the two...
(t/cf (pmap identity [1 2 3]) ;=> Type Error (/tmp/form-init5174330476817989076.clj:1:7) Polymorphic function pmap could not be applied to arguments: