Skip to content

Instantly share code, notes, and snippets.

View john-kurkowski's full-sized avatar

John Kurkowski john-kurkowski

View GitHub Profile
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['foo'],
foo: ''
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
@john-kurkowski
john-kurkowski / override-test-adapter-exception-test.js
Created March 1, 2016 02:34
My answer to "How to test Ember error substate, with Ember CLI test runner?" http://stackoverflow.com/q/34074386/62269
import Ember from 'ember';
import moduleForAcceptance from '../helpers/module-for-acceptance';
import sinon from 'sinon';
const { Test } = Ember;
moduleForAcceptance('Acceptance | error', {
beforeEach() {
this.sandbox = sinon.sandbox.create();
import Ember from 'ember';
export default Ember.Component.extend({
foo: '',
init() {
this._super(...arguments);
console.info(this.constructor, 'init', this.getProperties('foo', 'attrs.foo.value'));
},
@john-kurkowski
john-kurkowski / tags2vtags.py
Last active April 16, 2016 18:22
Copy SemVer tags without a "v" prefix to tags with the "v" prefix, e.g. 1.2.3 -> v1.2.3.
#!/usr/bin/env python
'''Copy SemVer tags without a "v" prefix to tags with the "v" prefix, e.g.
1.2.3 -> v1.2.3. Preserve tag author, date, & message.'''
import re
import subprocess
OLD_TAG_RE = re.compile(r'^\d+\.\d+')
@john-kurkowski
john-kurkowski / lyrics.sh
Created March 22, 2012 19:46
Search lyrics without leaving the terminal
# Usage: `griot fucking ridiculous`
function griot() {
lynx "http://rapgenius.com/search?q=`echo $@ | perl -p -e 's/\s+/+/g'`";
}
@john-kurkowski
john-kurkowski / npm-version-with-custom-git-tag-description.zsh
Created February 28, 2016 02:50
`npm version` with custom Git tag description.
npm version patch | parallel -I % git tag % %^{} -f -a
@john-kurkowski
john-kurkowski / StreamOuter.scala
Created August 15, 2011 17:41
Scala closures capture outer variables, which can lead to unhappy serialization when you don't expect a lazy data structure under the covers. The lesson is, for serialization, favor strict, concrete types.
class A
class B extends Serializable
val baos = new java.io.ByteArrayOutputStream(1024)
val oos = new java.io.ObjectOutputStream(baos)
val streamSurprise: Seq[A] = Stream.fill(3)(new A) // say you don't know it's a Stream under the covers
val transformation = streamSurprise map (a => new B)
oos.writeObject(transformation) // fails due to NotSerializableException: A
@john-kurkowski
john-kurkowski / group_folders_by_file_count.sh
Created May 31, 2013 22:13
Group folders by number of files recursively within
#!/bin/zsh
ls > foo.txt
ls | parallel -j 1 'ls {}/**/*.* | wc -l' > bar.txt
paste foo.txt bar.txt | sort -t "<TAB>" -k2 -n # <TAB> = Ctrl+V, Tab
@john-kurkowski
john-kurkowski / V01.scala
Last active December 15, 2015 13:09
Accumulating More Than One Failure In A ValidationNEL
def evenNumber(n: Int) = if (n % 2 == 0) Some(n) else None
// an example for-comprehension …
for {
num <- List(1, 2, 3)
evenNum <- evenNumber(num)
} yield evenNum
// … which desugars to …
List(1, 2, 3) flatMap (evenNumber)