View find-removed-videos.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
#!/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 |
View reorder-rosbag.py
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) |
View FastScrollComponent-test.js
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; |
View permutations.js
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; | |
} |
View SimpleBlobDetector.js
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) { |
View models_helper.rb
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 |
View apply_diffs_to_map_document_data.rb
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('')} |
View identity_of_model.rb
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 |
View pronto.rb
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 } => |
View monorepo-tester.js
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