This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -Eeuxo pipefail | |
# Install youtube-dl | |
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /tmp/youtube-dl | |
chmod a+rx /tmp/youtube-dl | |
# Create /tmp/print-missing-youtube.sh script. | |
echo '#!/bin/bash' > /tmp/print-missing-youtube.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import rosbag | |
with rosbag.Bag('output.bag', 'w') as outbag: | |
for topic, msg, t in rosbag.Bag('input.bag').read_messages(): | |
outbag.write(topic, msg, t) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-disable react/prop-types */ | |
import React from 'react'; | |
import ReactDOM from 'react-dom'; | |
import ReactTestUtils from 'react-dom/test-utils'; | |
import FastScrollComponent from './FastScrollComponent'; | |
describe('<FastScrollComponent>', function() { | |
const setupComponent = ({ cacheWhenNotVisible = false, height = 100 }) => { | |
// eslint-disable-line react/prop-types | |
const rowHeight = 25; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const uniq = require('lodash/uniq'); | |
function permutations(n, colors, arr) { | |
if (!n) return [arr]; | |
if (!arr) arr = []; | |
let ret = []; | |
for (let i = 0; i < colors; i++) ret = ret.concat(permutations(n - 1, colors, arr.concat([i]))); | |
return ret; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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('')} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 } => |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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. |
NewerOlder