Skip to content

Instantly share code, notes, and snippets.

View jonasraoni's full-sized avatar
☠️
Do what you want cause a pirate is free! You are a pirate!

Jonas Raoni Soares da Silva jonasraoni

☠️
Do what you want cause a pirate is free! You are a pirate!
View GitHub Profile
@jonasraoni
jonasraoni / twin-strings.cs
Last active February 24, 2019 11:58
Twin Strings
/*
Twin Strings
Two strings, a and b, are said to be twins only if they can be made equivalent by performing some number of operations on one or both strings. There are two possible operations:
SwapEven: Swap a character at an even-numbered index with a character at another even-numbered index.
SwapOdd: Swap a character at an odd-numbered index with a character at another odd-numbered index.
For example, a = "abcd" and b = "cdab" are twins because we can make them equivalent by performing operations. Alternatively, a = "abcd" and b = "bcda" are not twins (operations do not move characters between odd and even indices), and neither are a = "abc" and b = "ab" (no amount of operations will insert a 'c' into string b).
Complete the twins function in the provided code. It has two parameters:
@jonasraoni
jonasraoni / Extends.cs
Created November 4, 2017 09:58
Some C# extensions.
using System;
using System.IO;
using System.Web;
using System.Text;
using System.Collections.Generic;
using System.Collections;
namespace Raoni {
public delegate bool Generator<T>(out T value);
public delegate bool Enumerator<T>(T value);
@jonasraoni
jonasraoni / pgsql-find-create-missing-indexes.sql
Created November 4, 2017 09:27
PostgreSQL SELECT statement to find/create foreign keys that are missing indexes
-- find missing indexes
SELECT
conrelid::regclass, conname, reltuples::bigint
FROM
pg_constraint
JOIN pg_class
ON conrelid = pg_class.oid
WHERE
contype = 'f'
AND NOT EXISTS (
@jonasraoni
jonasraoni / sql-server-find-missing-indexes.sql
Last active November 4, 2017 09:28
SQL Server SELECT statement to find foreign keys that are missing indexes
SELECT
C.Table_Name,
C.Constraint_Name,
C.Constraint_Columns
FROM
(
SELECT
object_name(i.object_id) table_name, i.name index_name,
MAX(CASE index_column_id when 1 THEN col_name(ic.object_id,ic.column_id) ELSE '' END) +
MAX(CASE index_column_id when 2 THEN col_name(ic.object_id,ic.column_id) ELSE '' END) +
@jonasraoni
jonasraoni / sql-server-paging.cs
Created November 4, 2017 08:52
Transforms a simple SQL Server SELECT statement into a pageable statement.
using System;
using System.Text.RegularExpressions;
namespace Raoni {
public static class Utils {
private string queryLimit(string query, uint limit, uint? offset) {
if(limit > 0) {
offset = offset == null ? 0 : offset;
if(offset < 0)
throw new Exception("LIMIT argument offset=" + offset + " is not valid");
@jonasraoni
jonasraoni / backup.js
Last active February 27, 2019 13:03
Creates a full backup of all SQL Server, PostgreSQL and MySQL databases in JScript/JavaScript.
Backup = {
shell: WScript.CreateObject("WScript.Shell"),
base: "C:/BACKUP/",
username: "USERNAME",
hostname: "HOST",
password: "PASSWORD",
type: {
postgreSQL: function(){
var shell = Backup.shell;
var path = "c:/program files/postgresql/9.6/bin/";
@jonasraoni
jonasraoni / chained-sum.js
Last active January 3, 2021 12:35
A chained sum function in JavaScript
//+ Jonas Raoni Soares Silva
//@ http://raoni.org
// Iteration 3: manually minified xD
const sum = (...args) => ((v, r = sum.bind(this, v)) => (r[Symbol.toPrimitive] = () => v, r))(args.reduce((a, b) => a + b, 0));
// Iteration 2: supports sum(1,2,3)
const sum = (...args) => {
const operation = (...args) => args.reduce((a, b) => a + b, 0);
let current = operation(...args);
@jonasraoni
jonasraoni / print-spiral-array.js
Created October 27, 2017 12:00
Given a square matrix of at least 3x3, print its elements following a spiral path
function print(o){
var
m = o.length >> 1,
r = m,
c = m + 1;
p = function(){
console.log(o[r][c]);
},
left = function(i){
for(; c > i; p(--c));
@jonasraoni
jonasraoni / increment.js
Last active March 8, 2018 22:55
A variable that increments itself whenever it's accessed.
class Increment{
constructor(value) {
this.current = +value || 0;
};
[Symbol.toPrimitive]() {
return ++this.current;
}
}
var increment = new Increment();
var _, D;
(_ = function(){return this["trela".match(/\w/g)["reverse"]().join("")];})[false] = "jonas";
_()(_[ (_(_)===D )]);