Entradas

Mostrando entradas de diciembre, 2012

Feliz y prospero año nuevo =D

Imagen
Saludos a todos los seguidores y nuevos usuarios del blog, esta noche un año 2012 cargado de experiencias e ilusiones se va para dejar paso a un 2013 aun más suculento. Espero de corazón que todos vuestros objetivos se cumplan, y estos den lugar a nuevas metas que cumplir y superar.


Ánimo para seguir haciendo lo que os gusta y apasiona, por que solo así podréis llegar a lo más alto, sin olvidar lo más importante, las personas que tenéis a vuestro lado, y siempre estarán ahí.

Feliz y próspero año 2013.

Ejecutar HTML desde Sublime Text

Imagen
Si tienen alguna duda de como crear un nuevo Build System, echadle un vistazo a esta entrada donde está todo explicado al detalleCompilar y ejecutar JAVA desde Sublime Text. Una vez lo tengáis todo claro, aquí está el código JSON que contendrá nuestro nuevo Build System.


//Codigo para Windows { "cmd": ["start", "$file_name", "&&", "exit"], "shell": true } //Codigo para Linux { "cmd": ["python -c 'import webbrowser; webbrowser.open(\"$file_name\")'"], "shell": true }

Compilar y ejecutar C# desde Sublime Text

Imagen
Todo lo referente a la creación de un nuevo Build System en Sublime Text está explicado detalladamente en la entredaCompilar y ejecutar JAVA desde Sublime Text, así que si tienes alguna duda, pásate por esta entrada ya que la única diferencia entre la presente y la realizada para Java es el contenido del archivo .sublime-build que simplemente es copiar y pegar.


De este modo el contenido del archivo .sublime-build que debemos crear será el siguiente:
//Codigo para Windows { "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe /utf8output /nologo", "$file_name", "&&", "$file_base_name.exe"], "shell": true } //Codigo para Linux (compilador mono-mcs) { "cmd": ["mcs -out:${file_base_name} ${file_name} && chmod 764 ${file_base_name} && ./${file_base_name}"], "shell": true }

Ejecutar en cmd.exe desde Sublime Text

Imagen
Uno de los pocos puntos negativos de este excelente editor de código es que si compilamos y ejecutamos nuestros programas en Java, C++, etcétera con algún Build Sytem, nuestro programa se compilará y ejecutará mostrando el resultado satisfactoriamente si este NO requiere interacción con el usuario. En cambio, si nuestro programa debe leer algún dato, como por ejemplo (std::cin >> entrada;) en el caso de C++, nuestro programa no se ejecutará como es debido y la ejecución terminará con fallos.


Para solventar esto, y después de múltiples intentos de solucionarlo mediante Build System, es necesario modificar un archivo de configuración de Sublime Text llamado exec.py, para conseguir que al ejecutar nuestroBuild System, la ejecución de nuestro programa se haga en el cmd.exe, donde no tendremos ningún problema en introducir datos para nuestros programas.

Java vs C++ (algoritmo numeros primos)

Imagen
A continuación podréis ver una comparación entre Java y C++ donde se medirá el tiempo que toman ambos en contar la cantidad de números primos que hay desde 0 hasta 10.000, 100.000 y 1.000.000 respectivamente.
Comenzamos mostrando el código de ambos programas, este será el mismo en las tres pruebas exceptuando el cambio en el límite del primer bucle for para las siguientes pruebas.

Código JAVA:
public class Main { public static void main(String[] args) { int nPrimos = 0; boolean isPrimo; for(int i = 2;i < 10000; i++) { isPrimo = true; for(int j = 2; isPrimo && j <= Math.sqrt((double)i); j++) { if(i % j == 0) { isPrimo = false; } } if(isPrimo) { nPrimos++; } } System.out.println(nPrimos + " encontrados."); } }

Compilar y ejecutar C++ desde Sublime Text

Imagen
Como todo el proceso de creación de un nuevo Build System ya lo expliqué en la anterior entradaCompilar y ejecutar JAVA desde Sublime Text, solo colocaré el código JSON que deberá contener este nuevo Build System que se encargará de compilar y ejecutar nuestro programa en C++. //Codigo para Windows { "cmd": ["g++ -Wall ${file_name} -o ${file_base_name} && ${file_base_name}.exe"], "working_dir": "${file_path}", "shell": true } //Codigo para Linux { "cmd": ["g++ -Wall ${file_name} -o ${file_base_name} && ./${file_base_name}"], "working_dir": "${file_path}", "shell": true } Si tienes dudas sobre qué hacer con el código anterior, haz click sobre el enlace anterior donde está todo explicado paso por paso.

Numeros aleatorios en intervalos con JAVA

Lo primero que necesitamos saber es cómo generar un numero aleatorio en java, para ello tenemos el método random() de la clase Math. Dicho método tiene las siguientes particularidades:
Es un método static o perteneciente a la clase.Devuelve un número de tipo double.El número devuelto es positivo, mayor o igual que 0.0 y menor que 1.0. Siguiendo estas tres reglas, podemos crear un número aleatorio de la siguiente manera: double nAleatorio = Math.random(); Ahora bien, si lo que necesitamos es generar un número aleatorio que esté dentro de un intervalo, por ejemplo entre 1 y 100  haremos lo siguiente:

Calculadora para linea de comandos en JAVA

Para realizar esta sencilla calculadora, haremos uso del método split(String regex) que aplicado sobre un String, troceará dicho String según el patrón pasado en el argumento, devolviendo un array de String con todos los trozos.

Hecho esto, solo nos queda comprobar con un switch cual ha sido el operador utilizado, y según este, mostramos el resultado.
//Ejemplo de entrada: 4 * 5 ó 5.7 + 2.2 import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; public class Calculadora { public static void main(String[] args) { String[] op = leer().split(" "); switch (op[1].charAt(0)) { case '+': System.out.println(Double.valueOf(op[0])+Double.valueOf(op[2])); break; case '-': System.out.println(Double.valueOf(op[0])-Double.valueOf(op[2])); break; case '*': System.out.println(Double.valueOf(op[0])*…

Ordenar cualquier array con SORT en JAVA

En entradas anteriores ya aprendimos a ordenar un array numérico con la ordenación de burbuja (Bubble sort). En este caso facilitaremos mucho las cosas ya que en la API estándar de JAVA podemos encontrar el método sort de la clase Arrays, que está en el paquete java.util que se encargará de ordenar cualquier tipo de array que le pasemos como argumento.

Su uso se verá mejor con el siguiente ejemplo:
import java.util.Arrays; public class Main { public static void main(String[] args) { //Array de String String[] nombres = {"Pepe", "Juan", "Alex", "Julian", "Francisco", "Luis"}; //Ordena el array Arrays.sort(nombres); //Mostramos el array ya ordenado for (String i : nombres) { System.out.print(i + ", "); } } }

Leer y guardar un archivo de texto en JAVA

Imagen
La siguiente función devolverá un objeto del tipo StringBuilder con el contenido del archivo que le pasemos como parámetro.

Es importante el uso de la clase StringBuilderen este caso para almacenar gran cantidad de información en una variable de manera recursiva o con muchas concatenaciones ya que con la clase String, cada vez que añadamos una linea nueva a nuestra variable, se creará un nuevo objeto de tipo String con el contenido anterios más el contenido que hallamos añadido.

Compilar y ejecutar JAVA desde Sublime Text

En esta entrada veremos como configurar un llamado Build System de Sublime Text para que al presionar ctrl + b se compile y ejecute nuestra aplicación en JAVA.

Lo primero que debemos hacer es iniciar Sublime Text, una vez lo hallamos hecho, vamos a Tools -> Build System -> New Build System... Esto abrirá un pequeño archivo con unas lineas escritas en JSON, de modo que debemos copiar el siguiente código y pegarlo en este archivo.
//Codigo valido para Windows y Linux { "cmd": ["javac ${file_name} && java ${file_base_name}"], "shell": true } Cuando lo hallamos hecho, guardamos dicho archivo en la carpeta donde nos sugiere Sublime Text, y le ponemos un nombre descriptivo como por ejemplo ejecutarJava.sublime-build, ten cuidado que la extensión del archivo sea .sublime-build.

Y con eso ya hemos terminado, para compilar y ejecutar nuestros programas en JAVA tan solo debes ir a Tools -> Build System y elegir el nombre del archivo que h…

Redondear bordes facilmente con Photoshop

Imagen
El uso de imágenes con bordes redondeados es algo que queda muy bien en nuestras páginas web, para ellos se puede simular pintando pixel a pixel las esquinas de nuestra imagen del mismo color que el fondo donde estará la imagen, algo fácil pero un tanto chapucero.


Para redondear correctamente los bordes de una imagen, utilizaremos Adobe Photoshop CS5 y una imagen cualquiera, nosotros utilizaremos esta:

Ordenar cualquier array de numeros en JAVA

Con esta código podremos ordenar cualquier array de números ya sean de tipo int, como en el ejemplo o de cualquier otro tipo como byte, short, long, float o double.
public static int[] ordenarArray(int[] n) { int aux; for (int i = 0; i < n.length - 1; i++) { for (int x = i + 1; x < n.length; x++) { if (n[x] < n[i]) { aux = n[i]; n[i] = n[x]; n[x] = aux; } } } return n; } Para ordenar un array un tipo diferente al del ejemplo, tan solo debemos cambiar los tipos de retorno, el del parámetro de entrada y el tipo de la variable aux presente en la función por el tipo del array a ordenar.

Tipos de datos referencia y ejemplos en JAVA

Imagen
En java existen dos grandes grupos de tipos de datos, los tipos de datos primitivos explicados en la entrada anterior y los tipos de datos referencia, que son los que explicaremos en esta entrada.


Los tipos de datos referencia, indican que vamos a trabajar con instancias de clases, no con tipos primitivos. De esta manera, una variable de tipo referencia establece una conexión hacia un objeto, y a través de esta conexión podemos acceder a sus métodos y atributos.

Invertir cualquier array en JAVA

El código invierte un array de tipo entero o int, para invertir otro tipo de array, solo debemos cambiar el tipo de retorno, el tipo del parámetro que recibe, y el tipo de la variable aux presente en la funcion.
public static int[] invArray(int[] n) { int aux; for (int i = 0; i < n.length / 2; i++) { aux = n[i]; n[i] = n[n.length - 1 - i]; n[n.length - 1 - i] = aux; } return n; }

Sobrecarga de metodos y constructores JAVA

Imagen
En java, una clase puede contener dos métodos con el mismo nombre si:
Tienen diferente número de argumentosSi el tipo de los argumentos es distinto, aunque tenga el mismo número de ellos. Para entender esta sencilla propiedad de java, lo mejor es contemplar el siguiente ejemplo de dos métodos sobrecargados.
public void unMetodo(int numeroEntero) { //Codigo del metodo } public void unMetodo(float numeroReal) { //Codigo del metodo } Como vemos, ambos métodos tienen el mismo nombre y el mismo número de argumentos, en cambio el argumento que reciben es de distinto tipo de modo que cuando se llame al método unMetodo(15), se ejecutará el primero, y cuando se llame de esta manera unMetodo(15.5f), se ejecutará el segundo.

Kim Dotcom podrá acceder a los archivos de espionaje en NZ

Imagen
El creador de Megaupload podrá acceder a los archivos e informes sobre el espionaje al que fue sometido justo antes de su detención. El permiso lo ha dado el gobierno de Nueva Zelanda que ha admitido que sometió a una vigilancia ilegal a Kim, y que este podrá pedir una indemnización por ello.

Esto se debe a que según las leyes de Nueva Zelanda, está prohibido totalmente el espionaje de ciudadanos y residentes Neozelandeses. Ley que se saltó el gobierno en el momento de la detención de Kim, y que ha hecho que altos cargos de Nueva Zelanda hayan expresado su desacuerdo con esta medida declarando "Es responsabilidad de la oficina de seguridad actuar dentro de la ley, y es muy decepcionante que en este caso sus acciones cayeran fuera de la ley".

Top lenguajes de programacion Diciembre 2012

Imagen
Sin excesivos cambios con respecto a Noviembre, Objective-C sigue ganando popularidad afianzándose en el 3º puesto, también cabe destacar el incremento de popularidad y uso del lenguaje C con respecto al año anterior aumentando progresivamente su ventaja con Java.

Sin más, os dejamos con la lista completa de los 20 lenguajes de programación más utilizados en Diciembre de 2012:

Invertir numero entero en JAVA

Esta función sirve para invertir un número entero en JAVA, se invertirá la posición que ocupan los números y no el valor.
public static int invNum(int n) { int nDigitos = Integer.toString(n).length(); int nInv = 0; if (nDigitos == 1) { return n; } else { for (int i = 0; i < nDigitos; i++) { if (i == 0) { nInv += (n % 10) * Math.round(Math.pow(10, (nDigitos - 1))); } else if (i == nDigitos - 1) { nInv += n / Math.round(Math.pow(10, (nDigitos - 1))); } else { nInv += (n / Math.round(Math.pow(10, i))) % 10 * Math.round(Math.pow(10, (nDigitos - 1 - i))); } } } if (nInv < 0) { return nInv / 10; } else { return nInv; } }

Sucesion de Fibonacci en JAVA

Ejercicio muy utilizado cuando empezamos a programar, esta sucesión empieza en 0 y 1, y a partir de estos, los siguientes números son la suma de los dos anteriores.
//Nombre del archivo: Fibonacci.java public class Fibonacci { public static void main(String[] args) { int n1 = 0; int n2 = 1; int aux; int limite = 1000; System.out.println(n1); System.out.println(n2); while (n2 + n1 <= limite) { aux = n1; n1 = n2; n2 = aux + n1; System.out.println(n2); } } }