« first day (1485 days earlier)      last day (1606 days later) » 

1:15 AM
Aug 4 at 7:27, by ArtEze
10
A: How to add an icon to the bash prompt

PlasmarobActually, Yes, you can. In recent versions of Bash, at least 4 (i could do it in 4.2 and 4.3), you can render emoji with the hex. Use the echo -e flag. paste an emoji you looked up in and do a hexdump to see what it's made of: plasmarob ~ $ echo -n "🇺🇸"| hexdump 0000000 f0 9f 87 ba f0 9...

@MauricioContreras ¿Te referías a eso?
 
 
7 hours later…
7:57 AM
Alguien para una cosilla en C?
 
Buenos días por la mañana
Mientras no salgas con cosillas todas raras.
@ArtEze, pues sip
 
@MauricioContreras Gélidos días. Tengo un programa ya hecho metido todo en un main y ahora lo que tengo que hacer es crear funciones de las lineas que tengo en el main
Pero tengo problemas con los punteros que me cuesta un montón. El programa en si funciona, el caso es estructurarlo
 
Quieres modularizar tu programa.
 
Si, pero es muy simple. No llega a 15 lineas de main
Es para la medición de tiempos de ejecución
Se basa en coger un fichero y pasar a mayusculas todo
 
8:14 AM
A ver
 
@MauricioContreras pastebin.com/uYZdr0Wu
Eso es el programa en general. Pero no se hasta cuando puedo separar en funciones
Ya que he intentado abrir ficheros desde una funcion pasandole como argumento argv[1]
 
8:30 AM
Ok, lo reviso, estaba preparando me un café
 
8:47 AM
@Fernando vaya, es poco lo que puedes modularizar, exactamente qué tienes en mente?
 
@MauricioContreras En realidad el enunciado es el siguiente
Crea un programa en lenguaje C que lea de un fichero de entrada, transforme la entrada que lea (por ejemplo, pasándola a mayúsculas, o permutando
letras,… - la transformación es irrelevante). Escriba el resultado en otro fichero.
Procura que el programa tenga varias funciones que se llamen unas a otras.
No se si a funciones se refiere lo del fopen, fgetc, fputs ...
Pero para un fichero de entrada de una linea obtengo 0,02 s medido con time
 
En el enunciado veo 3 funciones: leer un fichero de entrada, transformar la entrada, escribir la salida.
 
Funciones que ya estan definidas y lo unico que hago es su tratamiento
Entonces para ti está bien ya asi?
 
9:03 AM
No
escribe funciones que implementen los métodos, pero que no las llames secuencialmente,
 
Entonces si que hay que dividir lo del main, no?
 
Sip
eso sería más eficiente
en vez de hacer: 1. leo toda ladat, 2. tranformo toda la date, 3. escribo toda la data.
haces: 1. leo la data caracter a caracter, por cada caracter, transformo la data, por cada dato transformado excribo en la salida.
en una sola pasada al fichero de entrada vas transformando y escribiendo en la salida. para eso debes llamar a tu funcion transformar y a tu funcion escribir dentro de tu funcion leer
 
Y los punteros?
 
 
1 hour later…
10:15 AM
@Fernando disculpa, estaba desayunando
Deja que implemente algo y te lo subo para que veas. Igual en tu código ya estás trabajando con punteros.
 
 
2 hours later…
11:56 AM
@MauricioContreras manejas tambien algo de bases de datos?
 
@Fernando lo básico
@Fernando lo tengo
@Fernando te pongo el pastebin
está caído el pastebin
:(
 
Va fatal. Me salía el gatito antes
 
Lo pongo aquí
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>
#include <signal.h>

// los punteros se indican con * delante del nombre de variable
// puede ser:
//   int* miVariable;
//   int * miVariable;
//   int *miVariable;
// Se usan para indicar la dirección de memoria de la variable
// por lo tanto, no se está pasando el contenido de la variable
// sino que se pasa la referencia a la posición en memoria para
// poder acceder a su contenido.

//creamos una función que leerá un archivo, para esto debemos pasar
De acuerdo a lo que pusiste en el enunciado, es lo que yo haría
 
Está muy bien explicado. Yo lo que peor los punteros, no se por que, me los explicaron mal desde el principio y soy incapaz de aprender
Y cuando me da error voy probando cosas hasta que sale
Hay alguna pagina o pregunta en SO donde se explique bien (para tontos como yo)
 
Los punteros son sencillos, aunque me cuesta entender un poco (me enredo) con los array, ya que son estructuras de punteros realmente como yo lo entiendo.
A ver si te oriento
Sabes que una variable se compone de 3 cosas:
1.- nombre o identificador
2.- valor
3.- dirección de memoria
eso lo tienes claro?
 
12:08 PM
Si
 
En C, cuando declaramos una variable, el compilador asigna un espacio de memoria y almacena: el valor si lo asignamos en la declaración o basura si no lo asignamos
Por ejemplo: int entero; tendrá basura en su contenido, pero tiene un nombre y una dirección de memoria
 
Y en ese caso valor es basura
Vale, si no lo habia leido
 
para ver la dirección de memoria asignada a esa variable puedes hacer: printf("dirección: %d\n", &entero);
Sorry, teclado de miércoles, es &variable
 
Que el & siempre se pone para imprimir variables
 
Entonces, ya sabes ver la dirección de memoria y su valor, para dirección de memoria, haces &variable, para su valor, solo usas el nombre de la misma
El & se usa para obtener el valor de la dirección de memoria
 
12:13 PM
Y sin el &? En el programa que pase para imprimir el buffer lo hacia sin problemas
 
ya te enredas otra vez, el & sólo te dará la dirección de memoria a la que apunta una variable, el contenido de dicha dirección de memoria es otro tema.
 
int variable;

printf("Variable %d \n", variable);

Salida: Variable 0
int variable;

printf("Variable %d \n", &variable);

Salida: Variable 0
 
Exacto, no se ha asignado valor a la variable, ahora asignale un valor:
 
No habia compilado... el segundo la salida me da -12984984
Además de un warning
con int=10, sin el & me da 10
con int=10, con el & me da 1591654
No saco ninguna conclusion
 
1591654 es un entero que indica la dirección de memoria asignada a dicha variable
ahora vamos a crear un puntero (es un objeto que apunta a una dirección de memoria)
dame unos 15 minutos
 
12:36 PM
Listo
Ahora vamos a crear un puntero, como ya sabes, para hacerlo se usa un signo de *
Entonces haremos int *puntero;
Y qué contiene este puntero?
Un detalle que debes tomar en cuenta, para imprimir un valor de memoria que puedas entender mejor, usaremos la máscara %p:
 
Variable 22100
Variable -1509484884
Variable 10
Variable -1509484880
Eso con el %d
es verdad
 
int variable;

printf("Dirección de memoria de variable %p \n", &variable);
Eso te dará salida:
Dirección de memoria de variable 0x7fffe33d1624
 
Variable 0x55de
Variable 0x7fff5281ec7c
Variable 0xa
Variable 0x7fff5281ec80
 
Exacto
hey, solo cuando queremos imprimir la dirección de memoria, para la variable si debes usar %d
 
Las dos primeras sin inicializarla y las 2 ultimas con el valor 10. Y luego en cada uno sin el & y con el &
 
12:44 PM
es decir, si hago printf("Valor: %d\n", variable); uso %d
 
Y rara vez se utilizara %p ya que no me interesara, no?
solo para debug
 
pero si hago printf("Dirección: %p\n", &variable); es porque deseo el hexadecimal
Bien
seguimos
Un puntero es una variable que como su nombre indica, apuntará a una dirección de memoria
el contenido de dicha dirección es un valor que puede ser basura o puede ser algún valor ya asignado.
haz lo siguiente
  int variable;
  int *puntero;
  printf("Variable: %d \n", variable);
  printf("Dirección de variable: %p \n", &variable);
  printf("Valor del Puntero: %d \n", *puntero);
  printf("Dirección del puntero: %p \n", puntero);
La variable tiene una dirección asignada, pero su valor es basura
El puntero tiene asignada una dirección de memoria random y el valor que haya en esa dicha dirección (normalmente basura)
Ahora agrega lo siguiente:
  variable = 5;
  puntero = &variable;
  printf("Variable: %d \n", variable);
  printf("Dirección de variable: %p \n", &variable);
  printf("Valor del Puntero: %d \n", *puntero);
  printf("Dirección del puntero: %p \n", puntero);
Vamos a analizar las primeras 2 líneas
le asigno a la variable un valor de 5
y le asigno al puntero, la dirección de memoria de variable
¿porqué?
 
Para que apunte a la misma direccion de memoria
Y pueda acceder a su valor
 
porque si bien el puntero está declarado como int, su valor no es el entero, sino que su valor será la dirección de memoria
 
La ultima linea
printf("Dirección del puntero: %p \n", puntero);
No se pone el & por que ya hace referencia a &variable
 
12:53 PM
@Fernando si, lo que almacena el puntero es la dirección de memoria al la que apunta
¿Y cómo obtenemos el valor almacenado en esa dirección de memoria?
//así:
  printf("Valor almacenado en la dirección a la que apunta el puntero: %d \n", *puntero);
ya veo que hay un error en el código que pasé anteriormente, era sin el asterisco
printf("Valor del Puntero: %d \n", puntero);
Lo pillas?
 
Si
es imposible entonces printf("Valor del Puntero: %d \n", *puntero);
En este caso me salia 5
Ahora vengo
 
Lo único que hay que entender de los arrays, es que la variable que representa el array es en realidad una especie de "puntero constante" a su primer elemento.

Es decir, si tienes `int a[5]`, entonces `a` es la dirección del primer elemento, y por tanto equivale a `&a[0]` y por tanto es de tipo `int*`, por eso hay tanta confusión entre arrays y punteros.
Si tienes int *p, entonces la asignación p=a es perfectamente válida. Por eso también se pueden pasar arrays a funciones que esperan punteros. Son casi equivalentes. La única diferencia es que puedo asignar otra cosa a p cuando quiera, con algo como p=otra_direccion, pero no puedo hacer eso con a. Por eso digo que es una especie de "puntero constante" (o inmutable)
Por otro lado, a[2] y p[2] ambos funcionan y darían el mismo elemento (si antes hice p=a, y esto es porque la sintaxis x[y] es en realidad "sugar" equivalente a lo que realmente hace el compilador, que es *(x+y)
incidentalmente, esto permite hacer esta aberración, que también funcionará: 2[a]
 
1:10 PM
Gracias maestro, a veces me enredo porque casi no uso C ni C++, y para mi es un remoto recuerdo de cuando era feliz y no lo sabía.
 
1:25 PM
@MauricioContreras De todos modos mi pregunta era sobre el título en Node, no sobre emojis... La respuesta de Plasmarob fue en SO en inglés.
 
1:36 PM
Pues tienes razón, aunque igual creo que aplica.
 
Yo y Fernando una vez hicimos un programa en Java de matrices, fue divertido.
Era el juego de la vida.
 
@ArtEze, yo lo hice en Matlab
 
@MauricioContreras Genial :)
El único problema que tuve fue que Java no lee caracteres por teclado, lee líneas.
 
Me enorgullece decir que saqué la nota máxima posible . Mis compañeros se enredaron demasiado.
 
@MauricioContreras Hay que tener paciencia también.
 
1:51 PM
@ArtEze entonces no es la misma implementación. Porque nosotros teníamos que leer los datos de un archivo que tenía un formato específico. Se supone que el comportamiento esperado podía seguir un patron para ciertas matrices iniciales.
 
@MauricioContreras Creo que si hubiera sido en C o C++, hubiera sido mejor... Al poder capturar entradas de 1 caracter, podrías hacer un W A S D, que te tire una matriz cada vez que tocas una tecla.
 
2:14 PM
Puff todavía me acuerdo de el y había que almacenar matrices temporales, bordes y luego el pretty format de impresión
Me voy a guardar estos mensajes para ir a ellos cada vez que tenga dudas
Gracias por dedicar tu tiempo
 
@Fernando Podrías pasar eso al C así lo tenés de ejemplo y de paso se acaban los problemas de punteros.
 
@ArtEze Es que no se, ahora lo veo un poco mejor, pero yo creo que tengo "temor" por que me lo enseñaron mal, como que era una cosa difícil y que tenías que hacerlo bien y creo que por eso me cuesta mucho
Alguien conoce una herramienta de hacer esquemas SQL?
Osea visualizar las relaciones que hay entre las tablas y demas
 
@Fernando ¿Puedo poner el código del juego de la vida acá?
@Fernando El que hicimos.
 
Si, sin problema
 
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Locale;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Programa {

	private static char vivo_archivo='X';
	private static char muerto_archivo='.';

	private static char vivo_muestra='M';
	private static char muerto_muestra=' ';

	private static char vivo_salida=vivo_archivo;
	private static char muerto_salida=muerto_archivo;
 
2:34 PM
@Fernando, si usas Microsoft SQL Server Management Studio, tienes todo lo que necesitas allí. No necesitas una herramienta adicional.
@ArtEze madre mía, no recuerdo que mi script en Matlab fuese tan extenso. Por cierto, tengo más de 6 años que no programo usando java.swing, voy a implementar esto a ver como corre.
 
@MauricioContreras Sí, probalo, está bueno. Quizás es largo por la forma de programar que tengo, además no sabía nada de Java, estaba experimentando.
@MauricioContreras ¿Qué es swing?
 
Las interfaces graficas de usuario
 
@ArtEze Es una serie de herramientas gráficas para usar en applets de Java
 
Es este caso creo que estaba para introducir el fichero
@MauricioContreras Y si no lo uso hay algo online?
 
JFileChooser es una clase de swing que despliega una ventana para seleccionar un archivo del sistema de archivos.
 
2:43 PM
@MauricioContreras @Fernando Perfecto, igual se podía guardar archivos sin interfaz, pero así está bien igual.
 
@Fernando no que yo conozca.
@Fernando pero es que tienes que usarlo si o si. Cómo haces consultas a tu db? Cómo haces operaciones de backup? Cómo administras tu db?
Si lo haces todo con sqlcmd, mis respetos. Eres un duro en el lenguaje sql
Y porqué no haces un programa que te muestre las relaciones de forma gráfica?
Buen ejercicio que sería ese
 
Bastante tengo ya con lo que tengo, pero me lo apunto para un par de años
@MauricioContreras Sirve para distinguir entre mysql y oracle?
 
2:59 PM
@MauricioContreras Conoceis Golly?

http://golly.sourceforge.net/
Es flipante los avances en el Game of Life de Conway en los últimos años. El logo de la página de Golly es real!! (quiero decir, es un universo evolucionando según las reglas de Game of Life, que produce como resultado el logotipo de golly desplazándose de derecha a izquierda)
Cada "pixel" en ese banner si lo aumentas lo suficiente es un "glider" horizontal
 
@abulafia Me parece que una vez lo probé, muy bueno.
 
o mejor dicho "spaceship"
 
Lo mejor es que se puede hacer zoom para atrás.
 
 
1 hour later…
4:07 PM
@MauricioContreras Como me conecto al servidor? Estoy buscando informacion y no hay nada que me sirva
Enserio no hay otra cosa mas facil de entrar?
 
5:03 PM
@Fernando Disculpa, estuve ocupado
 
5:57 PM
Vaya, el ajo culto
 
culto no, cultivado que soy una planta
 
que aburrido saturday
@abulafia Pero no tiene "Programa principal" xD
 
@LucasDamian Si lo tiene. Empieza con un import modulo_auxiliar
solo que no ha separado el código en dos "cajas", pero la función sería parte de ese módulo
 
Ah jaja, no leí el código
 
6:01 PM
Acabo de escribir un script de scraping para ver todos los usuarios que tienen el mismo identicon
 
@abulafia, el terror de los chavales de alguna escuela que tiene una única conexión a internet, y probablemente un único ordenador.
 
Va a tardar lo suyo.. pues meto un sleep de medio segundo entre peticiones para que no me banee
@MauricioContreras Pero diferentes nombres de usuario. Eso me mata
Hmm. el script lleva ya un buen rato y no ha encontrado ni uno. Me pregunto si lo habré hecho bien
 
uh, mi terror es el ban, siempre me pasa lo mismo con los scraping.. "too many requests... agg los odio, soy un hombre de bien
 
@abulafia Puede ser una IA de S.O., que ha cobrado vida para hacer sus propias preguntas, suena lógico que empiece preguntando cosas sobre su propia escencia (seguro la programaron en Python). Muchachos, mejor empiecen a almacenar agua y alimentos no perecederos, de aquí a Skynet no falta mucho.
 
Yo como lo lanzo desde collaboratory, si me banea una IP, creo otro notebook :-)
 
6:04 PM
ahora me ha pasado mucho, tengo un scraping de forever21.. y me pasa el "no such season"
hasta el crash browser .....
mmm, y como la ves a un "torbrowser" ? es muy malicioso usar torbrowser ?
 
@LucasDamian cuando llegue el mensaje, le haces un cambio de MAC Address al router que provee internet, y continúas
 
@LucasDamian Muchas páginas directamente rechazan peticiones que vengan de la red Tor. Google entre ellas
 
@abulafia F
@abulafia Por más que le declare User-Agent : "vengo en busca de paz" ?
 
@LucasDamian Los nodos "frontera" de la red Tor, o sea los que finalmente hacen la petición a Google o quien sea, seguramente sean "bien conocidos". No será difícil banearles por IP
Por otro lado, me estoy preguntando ahora cómo gestiona Tor lo de los certificados HTTPS y la conexión cifrada "punto a punto"... ¿no son acaso un "hombre en medio"?
Hum, sí. Lo que me temía. Tor proporciona anonimato, pero no privacidad. Los tráficos transmitidos por HTTPS pueden ser visibles a los nodos (finales) de la red Tor, pues tienen que "terminar" el cifrado para iniciar uno nuevo "punto-a-punto" con el servidor final.
 
Como puedo seleccionar filas de una tabla que tiene una fecha por el año?
 
6:18 PM
@Fernando qué tipo de dato tienes almacenado en el campo?
 
Es decir, la fecha 01-nov-2019 01-nov-2018 si quiero 2019 pues me seleccione la primera fila
date
 
@Fernando bien, segunda pregunta: es SQL Server, MySQL, Oracle, PostgreSQL, ...?
 
oracle
 
@Fernando de todas, esperaba que no dijeras precisamente esa, XDDD
 
@MauricioContreras xD
 
6:20 PM
Bueno, pues mysql igual hay algo por internet
 
déjame buscar en mis funciones, trabajé con Oracle el año pasado, pero ya ni recuerdo
 
De todas formas manejas base de datos? Estaba traduciendo un enunciado para crear una base de datos y me podrías decir si voy bien encaminado
 
algo manejo
cuando trabajé con BD's Oracle, usé to_char(<formato>, <campo>) para obtener el valor y sacar el que necesitaba. Estoy viendo lo de los formatos soportados
si, es así: SELECT * FROM table WHERE TO_CHAR(dateField, 'YYYY')='2019';
Bueno, es la forma en la que trabajé hace un tiempo, no sé si es la mejor, no soy muy avispado con ORACLE
Primero el campo, luego el formato.
 
@MauricioContreras funciona
Gracias!
 
@Fernando excelente
 
 
1 hour later…
7:52 PM
WTF
https://es.stackoverflow.com/q/310932/7123
 
8:13 PM
@abulafia no tengo idea que es eso, pero parecen los dibujos ('')_('') recuerdo épocas de windows messenger, enviar el conejito jaja
 
Alguien tiene a mano un cliente ssh para que me diga si funciona serveo?
a mi no me está funcionando y quería saber si es cosa mía solo
 
Hey
@abulafia, el mio de linux
Interesante esa pregunta. Pero no tiene mcve y las reglas son las reglas
 
@MauricioContreras ¿interesante? No entendí ni papa
@MauricioContreras Podrías por favor ejecutar el comando ssh -R 80:localhost:9999 serveo.net y decirme si obtienes alguna salida en consola?
 
@abulafia tiene las reglas, por lo tanto es cuestión de aplicrlas
No devuelve nada
@abulafia se quedó levantado el host, pero no devuleve nada porque está bloqueado el puerto en el router y en el firewall XDDD
ya lo desbloqueo y pruebo
 
8:28 PM
@MauricioContreras No, no creo que ese sea el problema
Precisamente es para evitar bloqueos, firewalls y nats
basta que te deje salir por el puerto 22
no necesitas tener ningún puerto abierto de entrada
pero se ve que no está funcionando su servidor (serveo.net) Te pasa igual que a mi
no muestra nada. Debería mostrar una url tipo feritas.serveo.net
sería la que daría acceso al puerto 5000 de tu ordenador, gracias al tunel SSH reverso
(supongo que no tengas nada en el puerto 5000 pero eso no importa, el túnel se crearía igual)
sólo quería ver si te mostraba la URL pública del túnel
 
pues no hace nada
 
Ya. Se ve que están caidos los servidores de serveo.net
Que pena. Es un servicio útil. Puedes tener en tu ordenador de desarrollo un servidor de una API REST (por ejemplo en Flask o como quieras), escuchando en un cierto puerto, digamos el 5000, y hacerlo accesible al mundo a través de una URL pública temporal
sin abrir puertos ni nada
 
Un reverse proxy a traves de un tunel ssh. Interesante
@abulafia, la defensa de red de Vodafone me bloquea el acceso a serveo.net desde mi móvil
 
8:48 PM
@MauricioContreras Vaya, qué cosa... La página de serveo.net en sí es perfectamente segura. El problema es que las urls temporales que te crea ese servicio están también en el dominio serveo.net y esas pueden ser inseguras pues a saber a dónde te conectas en realidad, al ser un proxy
tal vez por eso han bloqueado el dominio entero
Otro servicio similar es ngrok, pero me gusta menos porque tienes que instalarte su cliente, mientras que en serveo es un cliente ssh estándar
 
 
2 hours later…
11:13 PM
@MauricioContreras Ah..! La web de serveo presenta un gran banner rojo que dice Serveo is temporarily disabled due to phishing.
Eso explica que vodafone te la bloquee
 
11:43 PM
Serveo está temporalmente deshabilitado debido a phishing.
Serveo regresará en unos días con algunas restricciones nuevas para ayudar a disuadir el abuso. ¡Gracias por su paciencia!
 

« first day (1485 days earlier)      last day (1606 days later) »