Skip to content

Instantly share code, notes, and snippets.

View JuanFdS's full-sized avatar

Juan Manuel Fernandes dos Santos JuanFdS

  • FannyPack Studios
View GitHub Profile
@JuanFdS
JuanFdS / warning_aggregator.gd
Created December 4, 2024 14:09
Objeto para hacer un poquito mas facil el poner errores en _get_configuration_warning en Godot 3
class_name WarningAggregator
extends Reference
var object
var warnings
func _init(_object):
object = _object
warnings = []
@JuanFdS
JuanFdS / exportar_correccion
Created November 17, 2024 17:11
Exportar corrección. OJO, solamente funciona si se seleccionan rangos de lineas para hacer los comentarios. Si se hace un comentario sobre una línea, va a calcular mal la línea comentada. Para usarlo, crear un marcador y poner el código como URL.
javascript:var linea_actual=0,correccion="",comment_class="js-comment-container",line_class="js-file-line";var current_file=null;document.querySelectorAll(`.${line_class},.${comment_class}`).forEach((e=>{var file=e.closest(".file");if(current_file==null){current_file=file}else if(file!=current_file){current_file=file;linea_actual=0};if(e.classList.contains(line_class)&&!e.id&&(linea_actual+=1),e.classList.contains(comment_class)){let c="";if(e.querySelector(".js-multi-line-preview-start"))c=`#L${e.querySelector(".js-multi-line-preview-start").innerText.slice(1).trim()}-L${e.querySelector(".js-multi-line-preview-end").innerText.slice(1).trim()}`;else%20%20c=`#L${linea_actual}`;var%20file_url=file.querySelectorAll(".pl-5.dropdown-item.btn-link")[1].href;correccion+=`${file_url}${c}\n`,correccion+=e.innerText.split("\n").slice(2,-2).join("\n"),correccion+="\n\n--------------\n\n"}})),console.log(correccion);
trabaja(migue, profesion(maestro, cocina), ollaEssen).
trabaja(carla, profesion(maestro, alquimia), mechero).
trabaja(ludat, profesion(aprendiz, mecanica), llaveInglesa).
trabaja(marilu, profesion(oficial, alquimia), piedraFilosofal).
trabajo(profesion(Exp, Area)):-
trabaja(_, profesion(Exp, _), _),
trabaja(_, profesion(_, Area), _).
% sonCamaradas(UnaPersona, OtraPersona):-
@JuanFdS
JuanFdS / palitosDeLaSelva.pl
Created July 17, 2020 16:05
Código de la clase de forall de PdeP
% El enunciado está en https://docs.google.com/document/d/12KmvUy8JmINbykXA-ilL0u7EY31L1d9a-vTiwHgWr2w/edit?usp=sharing
/*animal(Nombre,Clase, Medio)*/
animal(ballena,mamifero,acuatico).
animal(tiburon,pez,acuatico).
animal(lemur,mamifero,terrestre).
animal(golondrina,ave,aereo).
animal(tarantula,insecto,terrestre).
animal(lechuza,ave,aereo).
animal(orangutan,mamifero,terrestre).
@JuanFdS
JuanFdS / tucufix.rb
Last active December 11, 2019 19:34
def generate_absolute_bbox(customization, product = customization.product)
print_file = customization.print_files.first
return nil if print_file.nil?
# Got this logic from Fulfillment::ReadyToPrintImageGenerator#get_absolute_bbox
bbox_url = ImageApi::V2::BboxUrlGenerator[subject_url: print_file.asset.signed_url]
response = ImageApi.get(bbox_url, Fulfillment::ReadyToPrintImageGenerator)
response_hash = JSON.parse(response.body)
image_bbox = response_hash['bbox']
@JuanFdS
JuanFdS / lhm-migraciones-y-locks.md
Last active October 30, 2019 18:07
Escribí esto mientras pair-corríamos una migración que potencialmente podía haberse lockeado con maty, dave y nahue. Al final no se lockeó así que no necesitamos debuggearlo pero igual anoto lo que aprendimos:

Migraciones que se lockean

Migrator wrappea toda la migración

Entangler -> Chunker -> AtomicSwitcher (estos corren uno atrás del otro, mientras corre la migración se puede leer los nombres de estas cosas en los logs)

Entangler: crea los triggers para mantener sincronizadas la tabla nueva con la actual.

Chunker: va copiando cachos de la tabla actual a la nueva.

@JuanFdS
JuanFdS / clase-tadp-3-10-18.scala
Created November 8, 2018 16:19
Código usado en la clase de tadp del sábado 3/10
import java.util.function.Predicate
object Pociones {
case class Persona(nombre: String, niveles: Niveles)
case class Niveles(suerte: Int, convencimiento: Int, fuerza: Int) {
def duplicar = map(2 * _)
def map(f: Int ⇒ Int) = this.copy(suerte = f(suerte),
convencimiento = f(convencimiento),
@JuanFdS
JuanFdS / naiveSolution.hs
Last active October 10, 2017 00:32
Max increasing subsequence length
maxIncreasingSubsequenceLengthAuxiliar n (x:y:xs) | x < y = maxIncreasingSubsequenceLength' (n+1) (y:xs)
maxIncreasingSubsequenceLengthAuxiliar n (_:xs) = max (n + 1) $ maxIncreasingSubsequenceLength xs
maxIncreasingSubsequenceLengthAuxiliar n [] = max n 0
maxIncreasingSubsequenceLength :: Ord a => [a] -> Int
maxIncreasingSubsequenceLength = maxIncreasingSubsequenceLength' 0
--or, a more foldy solution:
maxIncreasingSubsequenceLength' =
(\(_,_,result) -> result) .
type Criterio = Pelicula -> Int
data Pelicula = UnaPelicula { duracion::Int,
calificacion::Int,
generos::[String] } deriving (Show, Eq)
data Cinefilo = UnCinefilo { peliculasDisponibles::[Pelicula],
criterio::Criterio }
esDe::String -> Pelicula -> Bool
pointsToNextLevel level = case level of
0 -> 0
1 -> 6
2 -> 10
3 -> 15
4 -> 30
5 -> 40
6 -> 50
7 -> 60
8 -> 70