Skip to content

Instantly share code, notes, and snippets.

@janpaul123
janpaul123 / gist:5668857
Last active December 17, 2015 20:39 — forked from markijbema/gist:5668813
My preferences
{
"color_scheme": "Packages/Color Scheme - Default/Mac Classic.tmTheme",
"dictionary": "Packages/Language - English/en_GB.dic",
"spell_check": true,
"draw_minimap_border": true,
"font_size": 12.0,
"highlight_line": true,
@janpaul123
janpaul123 / index.html
Created May 16, 2014 14:58
lesson-learner-analytics
<!DOCTYPE html>
<html>
<head>
<title>lesson-learner-analytics</title>
<script type="text/javascript">
var Keen=Keen||{configure:function(e){this._cf=e},addEvent:function(e,t,n,i){this._eq=this._eq||[],this._eq.push([e,t,n,i])},setGlobalProperties:function(e){this._gp=e},onChartsReady:function(e){this._ocrq=this._ocrq||[],this._ocrq.push(e)}};(function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src=("https:"==document.location.protocol?"https://":"http://")+"dc8na2hxrj29i.cloudfront.net/code/keen-2.1.0-min.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();
</script>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<style>
@janpaul123
janpaul123 / 0-0-100.png
Last active August 29, 2015 14:01
Mini Factwheels
0-0-100.png
@janpaul123
janpaul123 / .diffux_ci-new.yaml
Created July 6, 2016 18:21
Diffux on CircleCI sketch
source_files:
- http://localhost:8080/diffux.js # For convenience, for use with webpack server. Is ignored on CircleCI.
- diffux-new.js
snapshots_folder: ./diffux_snapshots
#!/usr/bin/env node
const commandLineArgs = require('command-line-args');
const { existsSync, writeFileSync } = require('fs');
const { execSync } = require('child_process');
const jmerge = require('junit-merge/lib');
const path = require('path');
const syncRequest = require('sync-request');
// Copyright Jan Paul Posma, 2017. Licensed under MIT license.
@janpaul123
janpaul123 / pronto.rb
Created April 8, 2017 05:30
Custom pronto matcher
#!/usr/bin/env ruby
require 'pronto'
module Pronto
class RegexWarnings < Runner
# Matchers arguments: path, text, addition, first_changed_line
def matchers
{
->(path, text, addition, _) { path.match(/\.js$/) && text.include?('http:') && addition } =>
@janpaul123
janpaul123 / identity_of_model.rb
Created September 29, 2017 06:22
Fun recursive function to test if things like copying deep data structures work correctly. Done with @boconnell at @remix.
def identity_of_model(model, global_excluded=['id', 'created_at', 'updated_at', 'deleted_at'])
excluded_columns = model.class.reflect_on_all_associations.map(&:foreign_key) + global_excluded
identity = model.attributes.except(*excluded_columns)
model.class.reflect_on_all_associations(:has_many).sort_by(&:name).each do |ref|
identity[ref.name.to_s] = model.send(ref.name).map(&method(:identity_of_model)).sort_by(&:to_json)
end
model.class.reflect_on_all_associations(:has_and_belongs_to_many).sort_by(&:name).each do |ref|
identity["#{ref.name}_counts"] = model.send(ref.name).count
end
identity
@janpaul123
janpaul123 / apply_diffs_to_map_document_data.rb
Created November 23, 2017 00:20
Apply diffs in Postgres
module Interactors
module ApplyDiffsToMapDocumentData
def self.call(map_id:, diffs:)
return if diffs.empty?
sql = <<-SQL
UPDATE maps SET document_data =
#{diffs.count.times.map { 'jsonb_set(' }.join('')}
document_data
#{diffs.each_with_index.map { |diff, i| ", '{#{diff[:path].join(',')}}', :value_#{i})" }.join('')}
@janpaul123
janpaul123 / models_helper.rb
Last active December 27, 2017 01:03
Test helper for changing counts
module ModelsHelper
# Expects that only the passed in models have counts that change. For this we
# look at all ActiveRecord models, and store their counts.
#
# Example: `expect_only_counts_changing(Trip: -1) { Trip.first.delete }`
#
# This gives stronger guarantees against future models being affected
# unexpectedly by other parts of the code base.
def expect_only_counts_changing(expected_changes)
previous_counts = ModelsHelper.counts
@janpaul123
janpaul123 / SimpleBlobDetector.js
Last active May 21, 2023 09:21
OpenCV SimpleBlobDetector port to OpenCV.js
// Port of https://github.com/opencv/opencv/blob/a50a355/modules/features2d/src/blobdetector.cpp
// But with special `faster` option which has slightly different semantics,
// but is a whole bunch faster.
function diff(v1, v2) {
if (v1.x !== undefined) return { x: v1.x - v2.x, y: v1.y - v2.y };
return v1.map((value, index) => value - v2[index]);
}
function norm(vector) {