Soy un Ingeniero de Sistemas y Computación egresado de la Pontificia Universidad Católica Madre y Maestra (PUCMM) y este es un sitio web donde muestro algunos algoritmos, técnicas y análisis de casos que afronto como ingeniero y resuelvo con mis destrezas y conocimientos. Amante de los gatos, Project Manager con más de 4 años de experiencia, SCRUM Manager y desarrollador entusiasta. Por cierto odio los warning
Mostrando las entradas con la etiqueta Curiosidades. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Curiosidades. Mostrar todas las entradas
lunes, 19 de octubre de 2015
Una herramienta práctica para mostrar código en el Blog
Muchas veces tenemos problemas para mostrar código en nuestro blog y nos auxiliamos de plugins que ejecutan JavaScript, pero esto no certifica que se mostrará correctamente, ya que el cliente puede evitar que corra o la PC le tome mucho en procesarlo dependiendo de la máquina (Dispositivos móviles muy lentos) y sea desagradable ver dicho apartado del blog.
Pues una solución es crear a mano el código usando HTML y CSS para decorar y hacer más amigable a los dispositivos lentos nuestro blog, pero eso es muy trabajoso, pero podemos auxiliarnos de una herramienta en linea que hace eso por nosotros y con unas cuantas lineas de JavaScript le da la apariencia, puesto carga el CSS igual.
Aquí tenemos al SyntaxHighlightGenerator-v3.0 con esta herramientas convertimos nuestro código en puro HTML que hace la sintaxis y adicionando unas lineas al cuerpo de nuestro blog logramos ese fabuloso y simple contexto de código indentado sin necesidad de sacrificar a los dispositivos lentos.
domingo, 10 de marzo de 2013
Que haríamos sin @Override?
Cuando programamos tendemos a escribir código con funcionalidades específicas y en combinación con piezas, libs o apis aveces estas no traen lo que necesitamos y por ignorancia o otra razón tendemos a reinventar la rueda.
Es por eso que se creo @Override en los lenguajes de programación POO, para convertir algo que no hace lo que queremos en lo que buscamos.
Un ejemplo claro es cuando tenemos un carro, si el carro no tiene el motor que queremos solo reemplazamos el motor y no el carro completo(reinventar la rueda) y esto es más o menos un ejemplo de @Override en la vida real.
Muchas veces es mejor sobrecargar un método que escribir la clase completa, ya que podríamos añadir métodos específicos de nuestra necesidad si es que no contempla esas caracteristicas el objeto que estamos usando.
Es por eso que se creo @Override en los lenguajes de programación POO, para convertir algo que no hace lo que queremos en lo que buscamos.
Un ejemplo claro es cuando tenemos un carro, si el carro no tiene el motor que queremos solo reemplazamos el motor y no el carro completo(reinventar la rueda) y esto es más o menos un ejemplo de @Override en la vida real.
Muchas veces es mejor sobrecargar un método que escribir la clase completa, ya que podríamos añadir métodos específicos de nuestra necesidad si es que no contempla esas caracteristicas el objeto que estamos usando.
domingo, 30 de diciembre de 2012
Punteros y arreglos en C que se unen.
Cuando trabajamos en C/C++ usamos punteros debido a que son una herramienta muy buena para facilitarnos la vida, pero un detalle interesante de estos que no siempre funcionan como uno quiere.
Como sabemos los punteros son direcciones de memoria y utilizar estos puede ocasionar que la aplicación colapse por acceso de memoria no autorizado, pero los utilizamos porque reducen el código y nos ayudan muchísimo.
Aquí un ejemplo de punteros que nos dan problemas cuando iniciamos y no sabemos por que. Para sorpresa del profesor se encuentra raro cuando nos revelamos a utilizar C y optamos por un lenguaje de alto nivel.
#include <stdio.h>
int *a, *b, *c;
void f(int x) {
int i[3];
i[0] = x;
i[1] = x + 1;
i[2] = x + 2;
a = i;
}
void g(int x) {
int i[3];
i[0] = x;
i[1] = x + 1;
i[2] = x + 2;
b = i;
}
void h(int x) {
int i[3];
i[0] = x;
i[1] = x + 1;
i[2] = x + 2;
c = i;
}
int main() {
f(1);
printf("a = {%d,%d,%d}\n", a[0], a[1], a[2]);
g(2);
printf("a = {%d,%d,%d}\n", a[0], a[1], a[2]);
h(3);
printf("a = {%d,%d,%d}\n", a[0], a[1], a[2]);
}
Noten que imprimo siempre a[0], a[1] y a[2] siempre, pero después de llamar a una de mis funciones para asignar valores a otro puntero.
Como sabemos los punteros son direcciones de memoria y utilizar estos puede ocasionar que la aplicación colapse por acceso de memoria no autorizado, pero los utilizamos porque reducen el código y nos ayudan muchísimo.
Aquí un ejemplo de punteros que nos dan problemas cuando iniciamos y no sabemos por que. Para sorpresa del profesor se encuentra raro cuando nos revelamos a utilizar C y optamos por un lenguaje de alto nivel.
#include <stdio.h>
int *a, *b, *c;
void f(int x) {
int i[3];
i[0] = x;
i[1] = x + 1;
i[2] = x + 2;
a = i;
}
void g(int x) {
int i[3];
i[0] = x;
i[1] = x + 1;
i[2] = x + 2;
b = i;
}
void h(int x) {
int i[3];
i[0] = x;
i[1] = x + 1;
i[2] = x + 2;
c = i;
}
int main() {
f(1);
printf("a = {%d,%d,%d}\n", a[0], a[1], a[2]);
g(2);
printf("a = {%d,%d,%d}\n", a[0], a[1], a[2]);
h(3);
printf("a = {%d,%d,%d}\n", a[0], a[1], a[2]);
}
Noten que imprimo siempre a[0], a[1] y a[2] siempre, pero después de llamar a una de mis funciones para asignar valores a otro puntero.
domingo, 23 de diciembre de 2012
Una función que retorna FALSE, pero es TRUE
Muchas veces en la programación habituamos a usar los booleanos y por alguna razón aveces empleamos el sistema de ellos en base a lo que necesitamos, dígase "1" para verdadero y "0" para falso y según nos acostumbramos a hacer estas asociaciones ligamos dicha sintaxis a nuestros software principalmente en ciclos que ejecutan una determinada acción u/o ciclos que son servicios o demonios que escuchan en espera de un evento específico.
Algunos ejemplos de estos son en los juegos con el ciclo principal, hilos que escuchan puertos en espera de conexiones u otro caso similar y se ven linea como "while(1)" en vez de "while(true)" y de vez en cuando cuando tenemos una función que retorna un booleano le ponemos al final "return 0" o "return 1" y el lenguaje no los acepta, ya que simbólicamente para el lenguaje estos representan lo mismo, pero ¿es en su totalidad cierto?
Aquí les muestro un código que rompe con cualquier lógica de aquellos que trabajamos con booleanos:
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int function_returning_false() {
return FALSE;
}
int main() {
if(function_returning_false) {
printf("La funcion retorna True.\n");
}else {
printf("La funcion retorna false.\n");
}
}
Más adelante seguiré publicando más comportamientos extraños de los código, cualquier pregunta o sugerencia no dudar en preguntar.
Algunos ejemplos de estos son en los juegos con el ciclo principal, hilos que escuchan puertos en espera de conexiones u otro caso similar y se ven linea como "while(1)" en vez de "while(true)" y de vez en cuando cuando tenemos una función que retorna un booleano le ponemos al final "return 0" o "return 1" y el lenguaje no los acepta, ya que simbólicamente para el lenguaje estos representan lo mismo, pero ¿es en su totalidad cierto?
Aquí les muestro un código que rompe con cualquier lógica de aquellos que trabajamos con booleanos:
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int function_returning_false() {
return FALSE;
}
int main() {
if(function_returning_false) {
printf("La funcion retorna True.\n");
}else {
printf("La funcion retorna false.\n");
}
}
Más adelante seguiré publicando más comportamientos extraños de los código, cualquier pregunta o sugerencia no dudar en preguntar.
jueves, 13 de diciembre de 2012
Como buscaban en los 60?
Curioseando se encuentran cosas interesantes y más ahora que es muy fácil buscar y encontrar información acerca de algo que estas interesado, pero antes de que estos sistemas estuvieran tan avanzados ¿como se buscaba información en los años 60?, la respuesta es simple y es como están pensando, haciendo uso de un computador y tarjetas perforadas con un gran tiempo de procesamiento, pero por suerte tenemos la posibilidad de experimentar esa experiencia usando la tecnología de hoy día.
Para aquellos que quieren probar dicha experiencia podrán ver el método de búsqueda pero con la información actualizada de hoy día en el siguiente enlace.
http://www.masswerk.at/google60/
Para aquellos que quieren probar dicha experiencia podrán ver el método de búsqueda pero con la información actualizada de hoy día en el siguiente enlace.
http://www.masswerk.at/google60/
Suscribirse a:
Entradas (Atom)