Skip to content

Instantly share code, notes, and snippets.

Mariano Gappa marianogappa

Block or report user

Report or block marianogappa

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@marianogappa
marianogappa / query.sql
Created Sep 4, 2018
Big Query SQL to get how many go files are main package vs non-main package on Github
View query.sql
SELECT
IF(package_line = 'main', 'main', 'non_main') AS is_main, COUNT(1) AS count, LEFT(GROUP_CONCAT(UNIQUE(package_line)), 100) AS package_names
FROM (
SELECT
REGEXP_EXTRACT(content, r'package\s+([^\s]+)\s') AS package_line
FROM
(
SELECT
id,
content
@marianogappa
marianogappa / ordered_parallel.go
Last active Sep 5, 2019
Parallel processing with ordered output in Go
View ordered_parallel.go
/*
Parallel processing with ordered output in Go
(you can use this pattern by importing https://github.com/MarianoGappa/parseq)
This example implementation is useful when the following 3 conditions are true:
1) the rate of input is higher than the rate of output on the system (i.e. it queues up)
2) the processing of input can be parallelised, and overall throughput increases by doing so
3) the order of output of the system needs to respect order of input
- if 1 is false, KISS!
@marianogappa
marianogappa / backpressure.go
Created Dec 4, 2016
Example backpressure implementation in Go
View backpressure.go
/*
This snippet is an example of backpressure implementation in Go.
It doesn't run in Go Playground, because it starts an HTTP Server.
The example starts an HTTP server and sends multiple requests to it. The server starts denying
requests by replying an "X" (i.e. a 502) when its buffered channel reaches capacity.
This is not the same as rate-limiting; you might be interested in https://github.com/juju/ratelimit
or https://godoc.org/golang.org/x/time/rate.
@marianogappa
marianogappa / average_carpark_rent_auckland_central.sh
Created Aug 20, 2016
Average weekly rent price for advertised carparks on Auckland City Centre
View average_carpark_rent_auckland_central.sh
# The following one-liner calculates the average weekly rent price for a carpark on Auckland City Centre (New Zealand)
curl -s 'http://www.trademe.co.nz/Browse/CategoryAttributeSearchResults.aspx?search=1&cid=5748&sidebar=1&132=FLAT&selected135=7&134=1&135=7&136=89&216=0&216=0&217=0&217=0&153=&29=Car+park&59=0&59=0&178=0&178=0' | grep 'per week</' | sed 's/.*\$\(.*\) per week.*/\1/g' | awk '{ sum += $1; n++ } END { if (n > 0) print "$" sum / n " based on " n " advertised items."; }'
# Example output (2016-08-20): $77.7917 based on 24 advertised items.
#
#
# Note that this script doesn't consider pagination, but I tried a whole-country search
# of carparks and there were only 78 results, and Trademe didn't paginate, so I think
# it's not necessary.
@marianogappa
marianogappa / reporank.sh
Last active Feb 12, 2017
Ranking of GH repos per stargazers on your organisation
View reporank.sh
# (requires jq)
# USER=your_github_username
# ACCESS_TOKEN=your_github_access_token
# ORGANIZATION=your_organization
curl -u $USER:$ACCESS_TOKEN -s "https://api.github.com/orgs/$ORGANIZATION/members?per_page=100" | \
jq -r '.[] | "\(.repos_url)?per_page=100"' | \
while read line; do echo -n "$(curl -s $line | jq --raw-output '.[] | {a:.stargazers_count,b:.full_name} | .[] ' | paste -s -d ' \n' - )"; done | \
sort -rn | grep -v '^0'
@marianogappa
marianogappa / loc.sh
Created May 22, 2016
Byte count per programming language on your github account
View loc.sh
USER=my_github_username
ACCESS_TOKEN=my_github_access_token
curl -u $USER:$ACCESS_TOKEN -s "https://api.github.com/user/repos" | jq -r 'map(.languages_url) | .[]' | xargs curl -s -u $USER:$ACCESS_TOKEN | jq -r '. as $in| keys[] | [.+ " "]+[$in[.] | tostring] | add' | awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}' | awk '{print $2, $1}' | sort -nr
@marianogappa
marianogappa / version.sh
Last active Sep 17, 2018
Echoes the build.sbt project version to STDOUT
View version.sh
#!/usr/bin/env bash
# Echoes the build.sbt project version to STDOUT.
#
# NOTES:
# - place this script on the root of your project
# - this script will then work on the first build.sbt found anywhere on your project
# - this script assumes your project version setting is a literal e.g.: `version := "0.1-SNAPSHOT"`
# Exit on unset variables or if any of the following commands returns non-zero
@marianogappa
marianogappa / big_rand_decimal.php
Created Mar 29, 2015
Generates a random decimal with a large number of digits.
View big_rand_decimal.php
function big_rand_decimal($integerDigits, $decimalDigits, $decimalSeparator = ".") {
if(!is_numeric($integerDigits) || $integerDigits <= 0)
$integerDigits = 0;
else if(!is_integer($integerDigits))
$integerDigits = (int)ceil($integerDigits);
if(!is_numeric($decimalDigits) || $decimalDigits <= 0)
$decimalDigits = 0;
else if(!is_integer($decimalDigits))
$decimalDigits = (int)ceil($decimalDigits);
@marianogappa
marianogappa / big_rand_integer.php
Created Mar 29, 2015
Generates a random integer with a large number of digits.
View big_rand_integer.php
function big_rand_integer($digits) {
if(!is_numeric($digits) || $digits <= 0)
return '0';
if(!is_integer($digits))
$digits = (int)ceil($digits);
$multiplier = (int)ceil($digits / 9.0);
$function = function() {
@marianogappa
marianogappa / str_repeat_func.php
Last active Aug 29, 2015
PHP function equivalent to str_repeat but taking a callable instead.
View str_repeat_func.php
function str_repeat_func($function, $multiplier) {
if(!is_callable($function) || !is_integer($multiplier) || $multiplier <= 0)
return "";
$accumulator = "";
for($i = 0; $i < $multiplier; $i++)
$accumulator .= call_user_func($function);
return $accumulator;
}
You can’t perform that action at this time.