miércoles, 30 de marzo de 2011

Muchas cuentas en gmail

¿No les ha pasado que cuentan con más de una cuenta de gmail o que es administrada por gmail y tienen que estar dando Logout cada vez que necesitan cambiar de cuenta?. Es decir, yo tengo mi cuenta personal con gmail pero además el correo de la empresa utiliza los servicios de gmail aunque cambia la terminación del correo (xxxxx@gmail.com y xxxxx@correoempresa.com.mx).

Para esto google tiene una opción para poder habilitar la sesión múltiple en un navegador de hasta 3 cuentas sin necesidad de salir y volver a introducir tus datos de otra cuenta. Para poderlo activar sólo basta con entrar aquí y activar el servicio.

Es importante destacar la advertencia que nos aparece en esta página que dice:

Al entrar al liga mencionada anteriormente nos aparecerá la siguiente pantalla dónde tendremos que seleccionar "activado" para dar de alta el servicio.

Así tendremos que ingresar nuestros datos de la otra cuenta y ahora en la parte superior derecha nos aparecerá nuestras cuentas y con un sólo clic podremos cambiar entre éstas sin necesidad de introducir de nuevo nuestra información. 

domingo, 9 de enero de 2011

Después de estas fechas navideñas...y un poco de Java jeje

Perdiendo el tiempo en youtube encontré un video muy "adoc" a las fechas navideñas que acabamos de pasar con un toque hasta cierto punto geek jajaja pero más que eso muestra todas las redes sociales con las que convivimos a diario.

También les comparto un video que seguramente ya habrán visto si es que son desarrolladores y amantes de Java jeje es muy bueno y divertido! JAVA 4-EVER :)


sábado, 8 de enero de 2011

Project Euler

Me hacia falta subir los 3 problemas que les había mencionado en el post pasado.

Problema 3 dice:

  • The prime factors of 13195 are 5, 7, 13 and 29.What is the largest prime factor of the number 600851475143 ?
public static void problema3(){
  BigInteger bi= new BigInteger("600851475143");
  BigInteger resultado, ultimo;
  if(bi.mod(new BigInteger("2"))==(new BigInteger("0"))){
   bi=bi.divide(new BigInteger ("2"));
   while(bi.mod(new BigInteger("2"))==(new BigInteger("0")))
    bi=bi.divide(new BigInteger ("2"));
  }
  else
   resultado=new BigInteger("1");
  ultimo=new BigInteger("3");
  while(bi.compareTo(new BigInteger ("1"))==1){
   if(bi.mod(ultimo).intValue()==0){
    bi=bi.divide(ultimo);
    resultado=ultimo;
    while(bi.mod(ultimo)==new BigInteger ("0"))
     bi=bi.divide(ultimo);
   }
   ultimo=ultimo.add(new BigInteger("2"));
  }
  ultimo=ultimo.subtract(new BigInteger("2"));
  System.out.println("R3: "+ultimo);
 }
Problema 4 dice:
  • A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
    Find the largest palindrome made from the product of two 3-digit numbers.
public static void problema4(){
  Integer resultado=0;
  Integer resFin=0; 
  for(int i=999;i>=100; i--){
   for(int j=999;j>=100;j--){
    resultado=i*j;
    StringBuffer res=new StringBuffer(resultado+"");
    String res1=res.toString();
    String res2=(res.reverse()).toString();
    if(res1.equals(res2)){
     if(resultado >resFin)
      resFin=resultado;
    }
   }
  }
  System.out.println("R4: "+ resFin);
  
 }

Problema 5 dice:

  • 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
    What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
public static void problema5(){
  int i=20; 
  while ( (i % 20!=0)||(i % 19!=0)||(i % 18!=0)||(i % 17!=0)||(i % 16!=0)||(i % 15!=0)||(i % 14!=0)
    ||(i % 13!=0)||(i % 12!=0)||(i % 11!=0)||(i % 10!=0)||(i % 9!=0)||(i % 8!=0)||(i % 7!=0)
    ||(i % 6!=0)||(i % 5!=0)||(i % 4!=0)||(i % 3!=0)||(i % 2!=0)||(i % 1!=0)){ 
   i++; 
  } 
  System.out.println("R5: "+i); 
 } 


sábado, 1 de enero de 2011

El regreso...

Estos últimos meses no he realizado ninguna entrada al blog y es que entre la escuela, trabajo, familia y amigos estos meses han sido una locura. Entre exámenes, certificaciones, vacaciones, fiestas y mucho trabajo. Pero bueno, que mejor manera de iniciar el año que realizando una nueva entrada a mi blog olvidado :)

Como propósito en este año espero por lo menos tener dos entradas por mes y así enriquecer, compartir y hasta ayudarnos en problemas que tengamos en cuanto a programación o configuración de instalaciones.
Este año pinta taaaan bien!!! :) el año lo terminé cerrando un proyecto muy grande dónde se utiliza tecnología de Oracle y que en próximas entradas comentaré sobre éstas, ya que son nuevas y a mi parecer son muy buenas y facilitan la vida.


Dadas las fechas navideñas en la consultora donde trabajo nuestro jefe convocó a un concurso para ganar un póster de Los Simpsons. Y aunque no soy muy fan de ellos decidí participar.
El concurso es resolver de la página http://projecteuler.net/ los primeros 5 problemas. Ayer antes de festejar el fin de año me puse a contestarlos y llevo dos problemas resueltos.
Los resolví con Java, seguramente los algoritmos que desarrollé no son los más eficientes pero los resultados son correctos. Si tienen alguna sugerencia de cómo hacer más eficaces estos programas, se aceptan sugerencias.
El problema número uno dice:

  • If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

public static void problema1(){
  ArrayList< integer > numeros= new ArrayList< integer >(); 
  int suma=0;
  for(int i=1;i < 1000; i++){
   if((i%3)==0 || (i%5==0)){
    numeros.add(i);
    suma+=numeros.get(i);
   }
  }
 }
El resultado es: 233168


El problema dos dice:

  • Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
    1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
    By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
public static int fib(int n) {
         if (n <= 1) 
          return n;
         else 
          return fib(n-1) + fib(n-2);
 }
        public static void problema2(){
  ArrayList< integer > numeros= new ArrayList< integer >(); 
  for(int i=0; i<34; i++)
   numeros.add(fib(i));
  int suma=0;
  for(int i=0; i < numeros.size();i++)
   if(numeros.get(i)%2!=0)
    suma+=numeros.get(i);
  System.out.println("La suma es: " +suma);
 }
 
Así el resultado es: 4613732


Espero que este tipo de problemas sean de su agrado y continuar resolviendo los problemas que se encuentran en esta página.

Saludos y muy buen inicio de año! Pronto agregaré las respuestas de los 3 que me hacen falta :P

jueves, 16 de septiembre de 2010

Las mujeres

El miércoles antes de clase pasé a la biblioteca dado que habría varios días de descanso por eso del bicentenario jaja y yo con muchas cosas que investigar. Mientras buscaba un libro sobre el manejo de las licencias y el open source me tope con un libro titulado: El primer sexo: Las capacidades innatas de las mujeres y cómo están cambiando el mundo por Helen Fisher. Me llamó tanto la atención que como todavía faltaba para mi clase me puse a leerlo.

Iniciaba diciendo:

“Dios creó a la mujer. Y el tedio cesó en verdad desde ese momento”. Friedrich Nietzsche no era precisamente feminista, pero al parecer apreciaba la mente femenina.

Leí el primer capítulo y éste se centra en cómo las mujeres pueden hacer varias actividades al mismo tiempo y los hombres no, además de cómo las mujeres ven todas las variables y las posibles situaciones ante un problema mientras los hombres se centran a solucionar y dar sólo una solución al problema. Todo esto dando argumentos sobre como los hombres y las mujeres eran diferentes de acuerdo a los estudios realizados en cerebros de ambos sexos.
Me resulta interesante como en la actualidad existen este tipo de lecturas, continuaré leyendo este libro y veré el como nos sitúan ante la sociedad. Aquí podrán ver el libro en línea. 
En lo personal, siempre he pensado que las mujeres somo capaces de muchas cosas y que nuestra manera de pensar va más allá del simple análisis que realiza el sexo opuesto. Hace poco una compañera, amiga y hermana realizó un "post" en un blog respecto a Ada Lovelace. Y se preguntarán ¿Quién es ella? Es la primera persona en la historia en escribir el primer programa per se en 1843. Decia textualmente: 



Este programa era un “método”  que calculaba los números de Bernoulli en la máquina diferencial de Babbage. La importancia de este programa radica en que este marcó la separación entre hardware y software, esta secuencia lógica es el primer programa en la historia de la humanidad.


Con esto podemos afirmar que el papel de la mujer en el área de desarrollo de software fue de suma importancia y que mejor que decir que el primer programa desarrollado fue por una GRAN mujer Ada Lovelace. Aunque somos pocas en esta área es un orgullo ser MUJER!!!! :P Continuaré leyendo el libro y más adelante les platicaré de él.

domingo, 5 de septiembre de 2010

Tipos de Software

Hace un año para una materia leí el libro de: Pressman, Roger S. titulado: Ingeniería del software : un enfoque práctico.


Es un libro muy teórico pero sirve mucho en cuanto a la aplicación de términos así como una vista general del ciclo de vida de un proyecto, las entregas que se deben de realizar así como los pasos "a seguir". Y digo a seguir entre "" porque la poca experiencia que he tenido desarrollando software no se apega mucho a dicha teoría.

Si nos definimos como desarrolladores de Software, debemos de tener muy claro los tipos de software que existen. Pressman (2005) los cataloga de la siguiente manera :

1. Software de Sistemas: Colección de programas escritos para servir a otros programas. Algunos programas de sistemas (compiladores, editores y utilerías para la administración de archivos) procesan estructuras de información complejas pero determinadas. Otras (SO, controladores, software de red, procesadores de telecomunicaciones) procesan datos indeterminados.
2. Software de Aplicación: Programas independientes que resuelven una necesidad de negocio específica. Procesan datos empresariales o técnicos de forma que facilitan las operaciones de negocios o la toma de decisiones técnicas o de gestión.
3. Software científico y de ingeniería: Se caracterizaba por algoritmos “devoradores de números”. Sin embargo, las aplicaciones modernas han empezado a tomar características de software en tiempo real e incluso de software de sistemas.
4. Software emportado(mala traducción en el libro debería de ser como incrustado): Reside dentro de la memoria de sólo lectura del sistema y con él se implementan y controlan características y funciones para el usuario final y el sistema mismo. Ejemplo: teclado de un microondas o funciones digitales del carro.
5. Software de línea de productos: Diseñado para proporcionar una capacidad específica y la utilización de muchos clientes diferentes. Se puede enfocar en un nicho de mercado limitado (control de inventarios) o dirigirse hacia los mercados masivos (aplicaciones de hojas de cálculo, de BD)
6. Aplicaciones basadas en Web: Son apenas un poco más que un conjunto de archivos de hipertexto ligados que presenta información mediante texto y algunas gráficas. Sin embargo, las WebApps evolucionan hacia ambientes computacionales sofisticados que integran BD corporativas y aplicaciones de negocio.
7. Software de Inteligencia Artificial: Utiliza algoritmos no numéricos en la resolución de problemas complejos que es imposible abordar por medio de un análisis directo (robótica, SE, reconocimiento de patrones, redes neuronales, comprobación de teoremas y juegos en computadora).

Así es que, ¿qué tipo de software desarrollas?. Todos son con diferentes objetivos, con diferentes tecnologías y diferentes complejidades al momento de programar pero hay que tener claro lo que estamos desarrollando y así saber a dónde queremos ir y que beneficios queremos.

lunes, 31 de mayo de 2010

Parámetros en Java

Últimamente en el trabajo he escuchado decir:
"Que pasa con Java, aqui estoy asignando el valor y en este método ya no esta el valor, haber no que muy muy Java me esta fallando" 
Y aunque no vi el código que señalaban, pensé que seguramente era por la manera en que implementaban el paso de los parámetros. Pero todos sabemos que Java sólo tiene UNA forma de pasar parámetros y esto es: Parámetros por valor.

Pero y ¿qué significa esto?..... veamos unos ejemplos.

public class ParametrosValor {

 public static void main(String [] args) {
  int numero=8;
  calculaNumero(numero);
  System.out.println(numero);
 }

 public static void calculaNumero(int num){
   num=10;
 }
}


Este ejemplo imprimirá "8". Y esto es porque la variable "num" es local y recibe una copia del valor de la variable numero que se envía como parámetro y el valor de la variable num nunca se modifica.

Ahora veremos el siguiente ejemplo:

public class ParametrosValor {

 public static void main(String [] args) {
  int[] arreglo = new int[1];
  arreglo[0] = 8;
  calculaNumero(arreglo);
  System.out.println(arreglo[0]);
 }

 public static void calculaNumero(int[] array) {
  array[0] = 10;
 }
}



Pero entonces lo que aquí imprime es un 10.  Lo que pasa en este ejemplo es que como estamos utilizando un arreglo y un arreglo es un objeto, las variables que apuntan a un objeto son sólo referencias a él. Entonces el método de calculaNumero  modifica el valor del objeto. Y es donde entran las confusiones porque Java no paso los parámetros por referencia. Al contrario, pasó el valor de la referencia.

Y si no me creen,  pruebenlo!! XD! Espero les sirva. Saludos