Skip to content

Instantly share code, notes, and snippets.

View alejoasotelo's full-sized avatar

Alejo A. Sotelo alejoasotelo

View GitHub Profile
<p>Este es una ejemplo de validación de 2 passwords. El típico ejemplo de repetir password.</p>
<form name="myForm">
<input type="password" name="pass" ng-model="user.pass" ng-change="user.pass_equals = (user.pass == user.pass_copy)" required/>
<br>
<span ng-if="!myForm.pass.$pristine && myForm.pass.$invalid">campo invalido.</span>
<br>
<br>
<input type="password" name="pass_copy" ng-model="user.pass_copy" ng-change="user.pass_equals = (user.pass == user.pass_copy)" required/><br>
@alejoasotelo
alejoasotelo / index.js
Last active February 18, 2021 20:25
get tokens prices by BUSD from coingecko - obteners los precios de tokens en BUSD de coingecko
(async () => {
let response = await fetch('https://api.coingecko.com/api/v3/exchanges/pancakeswap/tickers?coin_ids=pancakeswap-token,bakerytoken,helmet-insure,bdollar,bdollar-share');
let data = await response.json();
let tickers = json.tickers.filter(ticker => ticker.target == 'BUSD');
let values = tickers.map(ticker => {
return ticker.base + '/' + ticker.target + ' = $' + ticker.last;
});
values.sort().forEach(value => console.log(value));
})();
@alejoasotelo
alejoasotelo / index.js
Created March 8, 2021 16:10
Calculadora de rewards de SBDO por epoch
function calcularRewardsPorEpoch(expansionRate, totalBDOSupply, totalSBDOStakedBoardroom, mySBDOStakedInBoardroom) {
return ((0.8 * (expansionRate/100) * totalBDOSupply) / totalSBDOStakedBoardroom) * mySBDOStakedInBoardroom;
}
function calcularRewardsPorDia(expansionRate, totalBDOSupply, totalSBDOStakedBoardroom, mySBDOStakedInBoardroom) {
return calcularRewardsPorEpoch(expansionRate, totalBDOSupply, totalSBDOStakedBoardroom, mySBDOStakedInBoardroom) * 4;
}
console.log('Rewards diarios:', calcularRewardsPorDia(1.25, 41289517, 16856.865, 1))
@alejoasotelo
alejoasotelo / myip.php
Created April 7, 2021 22:07
Debuggear según IP
<?php
class MyIP {
private static $ips = [];
/**
* Setea las IPs del cliente
*
* @return bool
*/
@alejoasotelo
alejoasotelo / detectar-ddos-wordpress-en-apache.md
Last active June 24, 2021 16:49
Detectar IPs del log de Apache intentando buscar una instalación de Wordpress

Detectar IPs del log de Apache que intengn acceder a una insalación de Wordpress:

cat ssl_access_log* | grep 'wp-(admin|content|include|login)' -E | cut -d' ' -f1 | sort | uniq -c | sort

Este script de linea de comandos en bash, funciona de la siguiente manera:

  1. Lees con cat archivos donde el nombre empiece con "ssl_access_log"
  2. Busca con grep urls que tengan el texto: wp-admin, wp-content, wp-include y wp-login
  3. Separa las lineas por espacios con cut y devuelve la primer parte (ip)
@alejoasotelo
alejoasotelo / migrar-articulos-k2-a-joomla.md
Last active June 24, 2021 23:17
Migrar artículos de K2 a artículos de Joomla

Cómo migrar artículos de K2 a Artículos Joomla

Nota: Probar este script en un joomla en localhost para arender cómo funciona. Nunca hacerlo sobre un sitio en producción. Hacer backup de su base de datos antes de probar este script en producción. Si se equivocan y lo hacen en un sitio en producción como mucho se vna a agregar artículos en Joomla, los eliminan y listo, pero mejor hacerlo previamente sobre un sitio de desarrollo

Aplica para Joomla! 3

Esta consulta SQL lo que hace es leer todos los artículos de K2 e insertar los artículos en el gestor de contenidos de Joomla.

Cuando se crean los artículos en el gestor de contenidos se les asigna la categoria de la variable @id_categoria_default (modificar por el ID de la categoría Joomla que prefieran).

@alejoasotelo
alejoasotelo / calculate-leverage-aave .js
Last active November 30, 2021 14:12
Cálculo automático para saber si conviene o no y saber qué ganancia se podría hacer haciendo Leverage en AAVE (aplicable tambíen a otros proyectos de lending/borrow)
/**
* Cálculo automático para saber si conviene o no y saber qué ganancia se podría hacer haciendo Leverage en AAVE.
* También se podría aplicar a cualquier otro proyecto que haga lending/borrow (compound, venus, fortress, etc).
* El leverage en AAVE consiste en depositar, pedir prestado una parte (colateral) y volver a depositar.
* Esto se puede repetir varias veces, lo óptimo es repetirlo 10 veces. Más de 10 veces no aumentan practicamente las ganancias.
* Haciendo esto podemos pasar de una ganancia de 9% a 40% aprox. Según los rewards que nos den por depositar y pedir prestado.
* (!) IMPORTANTE: es necesario saber que hacer esto implica el riesgo de que nos liquiden!!!
*/
/**
@alejoasotelo
alejoasotelo / get-apr-short-long-mirror-protocol.js
Created December 1, 2021 19:14
Script para obtener los APR del LONG y SHORT de https://mirrorprotocol.app/#/farm
async function postQuery(query) {
var r = await fetch('https://graph.mirror.finance/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: query
})
@alejoasotelo
alejoasotelo / facturas-afip-por-fechas.js
Last active July 21, 2022 00:00
Script para obtener las facturas de AFIP por fechas dentro de Mis Comprobantes AFIP (https://serviciosjava2.afip.gob.ar/mcmp/jsp/comprobantesEmitidos.do)
/**
@author Alejo Sotelo <alejosotelo.com.ar>
@date 2022-07-20
*/
async function getFacturas(from, to, tipoComprobante) {
var query = encodeURIComponent(from + '+-+' + to + '&tiposComprobantes[]=' + tipoComprobante)
var r = await fetch("https://serviciosjava2.afip.gob.ar/mcmp/jsp/ajax.do?f=generarConsulta&t=E&fechaEmision=" + query, {
@alejoasotelo
alejoasotelo / taskqueue.js
Last active July 21, 2022 19:14
TaskQueue es para agregar tareas que se ejecuten secuencialmente cada cierto intervalo de segundos.
/**
@author Alejo Sotelo <alejosotelo.com.ar>
@date 2022-07-20
Las tareas se ejecutan secuencialmente según el intervalo configurado.
Si agrego 3 task/tareas, se van a ejecutar en el orden que las agrego.
Cada task tiene un callback (function) que tiene que devolver true (se elimina la tarea y no se ejecuta más) o false (se sigue ejecutando).
var fiveSeconds = 5 * 1000;
var myTasks = new TaskQueue(fiveSeconds);