Skip to content

Instantly share code, notes, and snippets.

View marianogappa's full-sized avatar

Mariano Gappa marianogappa

View GitHub Profile
import scala.io.Source
/* Boilerplate to make Java not throw Exceptions on non UTF-8 characters */
import java.nio.charset.CodingErrorAction
import scala.io.Codec
implicit val codec = Codec("UTF-8")
codec.onMalformedInput(CodingErrorAction.REPLACE)
codec.onUnmappableCharacter(CodingErrorAction.REPLACE)
/* Put your WAV file here. You might want to slice it; a full WAV file will exceed JVM memory limit */
@marianogappa
marianogappa / str_repeat_func.php
Last active August 29, 2015 14:17
PHP function equivalent to str_repeat but taking a callable instead.
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;
}
@marianogappa
marianogappa / big_rand_integer.php
Created March 29, 2015 06:03
Generates a random integer with a large number of digits.
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 / big_rand_decimal.php
Created March 29, 2015 06:09
Generates a random decimal with a large number of digits.
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 / loc.sh
Created May 22, 2016 08:02
Byte count per programming language on your github account
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 / average_carpark_rent_auckland_central.sh
Created August 20, 2016 06:24
Average weekly rent price for advertised carparks on Auckland City Centre
# 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 February 12, 2017 01:55
Ranking of GH repos per stargazers on your organisation
# (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 / query.sql
Created September 4, 2018 01:55
Big Query SQL to get how many go files are main package vs non-main package on Github
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 / version.sh
Last active July 24, 2020 08:02
Echoes the build.sbt project version to STDOUT
#!/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 / uniswap_price_alert.sh
Created March 5, 2021 20:27
Uniswap price alert
while sleep 60; do if [[ $(curl -s "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2" -d'{"query": "{tokenDayDatas(first: 1, orderBy: date, orderDirection: desc, where: { token: \"0xf7413489c474ca4399eee604716c72879eea3615\"}) { priceUSD } }"}' | jq -r '.data.tokenDayDatas[0].priceUSD' | tee /dev/tty | sed 's/$/ <= 1.2/' | bc) -eq "1" ]]; then say "buy APYS now"; fi; done