Skip to content

Instantly share code, notes, and snippets.

View mgarciaisaia's full-sized avatar

Matias Garcia Isaia mgarciaisaia

View GitHub Profile
#include <ncurses.h>
#include <stdio.h>
int main(void) {
printf("&stdscr = %p\n", &stdscr);
}
{
"log": {
"version": "1.2",
"creator": {
"name": "WebInspector",
"version": "537.4"
},
"pages": [
{
"startedDateTime": "2013-07-19T03:30:26.619Z",
#!/bin/bash
target=$(mktemp -d) # crea un directorio temporal
base=`pwd`
ln -s $base/licencias/ $target # enlazo en el temporal para que equivs-build lo encuentre
cd $target
echo $base/$1
equivs-build $base/$1 # genera el .deb en el directorio actual a partir del controlfile $1
mv *\.deb $base/debs/ # mueve el .deb al directorio que corresponde
rm $target/licencias # borro todo el temporal
rmdir $target
ocurrenciasDe _ [] = 0
ocurrenciasDe e (x:xs)
| e == x = 1 + ocurrenciasDe e xs
| otherwise = ocurrenciasDe e xs
tieneRepeticiones n lista = any ((==n).flip ocurrenciasDe (map fst lista)) (map fst lista)
par lista = tieneRepeticiones 2 lista
pierna lista = tieneRepeticiones 3 lista
@mgarciaisaia
mgarciaisaia / gist:7102832
Created October 22, 2013 15:32
Jugando con rm y rmdir
$ mkdir -p temporal/a_directory
$ mkdir -p temporal/another_directory
$ rm temporal
rm: temporal: is a directory
$ rm temporal/a_directory/
rm: temporal/a_directory/: is a directory
$ rmdir temporal
rmdir: temporal: Directory not empty
$ rmdir temporal/a_directory/
$ ls temporal/
@mgarciaisaia
mgarciaisaia / README.md
Last active April 4, 2020 00:29
Ubicaciones en los segmentos de memoria

El problema que tiene esto es que string_append modifica el primer parámetro que recibe, pero los strings literales (como el "HOLA " que está por ahí) se guardan en el segmento de código del programa, por lo que son de sólo lectura.

Durante la primer jornada de charlas en Medrano, no recuerdo por qué motivo pero nos surgió una duda al respecto con los chicos, y lo pude probar con un programa como lo que hay acá.

Fijate cómo hay tres grupos de direcciones perfectamente bien distinguidos: hay un montón de direcciones de la pinta 0x10c4d1???, otras en 0x7fff5372e8??, y otra (la del heap) en 0x7fdc78c03a20.

Fijate, por ejemplo, que la variable local de la funcionUno da exactamente la misma dirección que la funcionDos. Es pura casualidad, sí. Pero no hay problema, porque para cuando yo llamé a la funcionDos, ya había terminado la ejecución de funcionUno. Y el parámetro, obviamente, está en direcciones cercanas. ¿Qué segmento será ese? Claro que sí, el stack.

Las funciones están en direcciones como 0x10c4d1

#include <stdio.h>
#include <stdlib.h>
int *miGlobal;
void asignarGlobal() {
char sarasa[200];
int miNumero;
printf("miNUmero arranca en %d\n", miNumero);
miGlobal = &miNumero;
from: service mail <[email protected]>
to: "[email protected]" <[email protected]>
date: Thu, Jul 31, 2014 at 2:18 PM
subject: ALERTA / CONFIRMAR SU DIRECCIÓN-Referencia: KSFE75GF/KRF‏‏
mailed-by: alerte.onmicrosoft.com
: Important mainly because of the people in the conversation.
Verificación E-mail
@mgarciaisaia
mgarciaisaia / clone.rb
Created December 5, 2014 03:35
Locally clone all repos from a BitBucket team
#!/usr/bin/env ruby
# USAGE: ./clone ORG_NAME
# ( ./clone instedd )
require 'open-uri'
require 'json'
team = ARGV[0] || raise("Must specify organization name")
puts "Fetching https://bitbucket.org/!api/1.0/users/#{team}..."
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int a = 0xcaba6642 + 1;
printf("A vale %d\n", a);
printf("En hexa: %x\n", a);
char *string = malloc(5);
memcpy(string, &a, 4);