Nuevo Area tecno.puentesdiaz.com.ar

Desde hace unos días pueden visitar : tecno.puentesdiaz.com.ar

Una nueva área donde desarrollaremos con mejor enfoque todos los temas eminentemente IT, como JAVA, OSGi, ECLIPSE, DB4O, Symfony, PHP, BPM, EMF, SaaS, etc…

 

Publicado en Sin categoría | Deja un comentario

MySpace y los ecos de la burbuja de internet

Escribir sobre como los proyectos de negocios en la web fracasan, no se aun si es agradable o no. No lo es porque es estimulante ver un emprendimiento crecer. Y puede que si, cuando parece ser solo una maniobra especulativa/financiera de mentes con sobredosis de arrogancia.

Hace ya unos días, Newscorp vendió Myspace por 35 millones de dolares estadounidenses (2011), es decir, un 6% del valor original de compra. Como dato mediatico entre los compradores está Justin Timberlake. Otro desastre que nos trae a la memoria lo que fue la venta de Lycos (Terra) en 100 millones de la misma moneda(2004), cuando su valor de compra fue de 12.500 millones.

 

 

Publicado en General, Sociedad, Tecnología IT | Etiquetado | Deja un comentario

Bootear Multiples OS con ISOs desde PENDRIVE

El título puede ser medio largo, pero es eso sin mas rodeos. Crear un Pendrive para bootear distintos Sistemas Operativos, usando solo las imagenes ISO, sin necesidad de instalar nada. Esta es una gran herramienta para aquellos que deseen probar los sabores de Linux por ejemplo, que siendo usuarios de Windows, aun no saben que elegir y son temerosos de instalar otro OS en sus discos duros.

Entonces para ellos, tenemos YUMI ( web ) ( Descarga ) .

YUMI - Multiboot USB Creator

Como podemos apreciar, solo hay que conectar el pendrive al puerto USB, lo que nos permitirá tener una Unidad de Disco, que debemos seleccionar, y luego elegir que sistema deseamos, para terminar un tercer paso en la búsqueda de la imagen ISO.

Ejecutando una segunda vez YUMI podremos cargar el otro sistema de nuestra preferencia.

Publicado en Software Libre, Tecnología IT | Deja un comentario

JAVA y la Aritmética de los Decimales

Una de las cosas que siempre pasamos por alto, es realizar las típicas operaciones aritméticas sin pensar demasiado en como los compiladores o interpretadores lo realizan.

Por ejemplo, podemos comprobar como correcta la siguiente ecuación:

(int) ( (0.7 + 0.1) * 10 ) = (0.7 + 0.1) * 10

Como bien sabemos todos, (int), es una forma de obtener el Entero de un número. Otro aspecto interesante es su velocidad, ya que en muchos lenguajes, es un constructor de los mismos, es decir es un rasgo nativo del ellos y ahí radica la razón de su performance. Sigue leyendo

Publicado en I & D, JAVA | Deja un comentario

Salve GNU/Linux

¿Que título no?

En realidad, debemos agradecer a GNU, Linux, EXT4, Ubuntu, y a un programita llamado TESTDISK.

Creo que sería imposible explicar cuales fueron las razones. Lo cierto es que la notebook, mostraba que el disco rígido estaba vacío. Ese es el momento es que uno pensaba porque no compre de una vez  “ese” disco externo de 1 o 2 TeraBytes… para luego pensar que no era para tanto los meses y meses de información guardada.

¿Como sigue esto?

Con la imagen de la última versión de Ubuntu (al día de hoy, la 10.10). Me hice de un PenDrive, (ese pendorcho usb que nadie sabe como se llama), y lo transformamos en un Pendrive de instalación.

Recomiendo esta modalidad, pues he notado que tratar de hacerlo desde un CD o DVD, es mas lento, y a veces falla.

Desde hace mucho, muchas distribuciones de GNU/Linux, y Ubuntu no es la excepción, se puede bootear y ejecutar el sistema sin necesidad de instalación. Y en este caso, detectó todo, inclusive esa placa de red wifi que no traía los drivers.

Empezamos a googlear, y la comunidad da un montón de buenos tutoriales. Donde se recomienda TESTDISK.

Cuando se descarga, nos damos cuenta que no es un .deb o .rpm, pero no debe importarnos. Solo debemos ejecutar desde consola el ejecutable y con 15 segundos y 4 pasos, se reestablecerá tu Tabla de Particiones, y con ello rebootear para darnos cuenta que la pesadilla pasó.

Todo pero Todo, esta como debería estar. En resumen, TESTDISK, funciona amigos!!!!!!

Publicado en General, Software Libre | Deja un comentario

Teorema CAP

Bueno, estas son de las cosas que a veces uno le gustaria haberse enterado hace algunas decadas…

Damas y Caballeros

EL TEOREMA CAP, también llamado Brewer’s theorem, establece que es imposible para un sistema de computo distribuído dar simultaneamente las siguientes tres garantías:

Consistency (Consistencia :todos los nodos ven la misma información al mismo tiempo)

Availability (Disponibilidad: la falla de un nodo no impedirá al resto de los nodos seguir funcionando)

Partition Tolerance (Tolerancia a Fallos: El sistema sigue funcionando a pesar de la pérdida de información)

Segun el teorema, solo se pueden satisfacer dos de estas tres carasterísticas al mismo tiempo, pero nunca las tres.

Publicado en Tecnología IT | Deja un comentario

PHP Desreferenciado

En los artículos de Johnathan Wage y de Schlueters hay una excelente explicación sobre está característica de PHP.

Publicado en General | Deja un comentario

Google Scripts : Dando valor a un Rango de Celdas

Vamos a seguir con una forma muy practica de asignar un valor a una o rango de celdas. Para aclarar lo de Rango, lo podemos definir como una selección de 1 a n celdas, siendo esta selección siempre conjunta y consecutiva de manera de formar un rectángulo. Es decir podemos seleccionar las celdas b1, b2, b3,  c1, c2, y c3, pero no b1, b2, b3, y d8.

Aclarado lo que queremos entender por Rango, retomamos nuestra serie de códigos. En la función onOpen(), incluimos la siguiente linea :

 {name: "Rellenar Celdas", functionName: "rellenarCeldas"},

La función quedaría así:

function onOpen() {
 var planilla = SpreadsheetApp.getActiveSpreadsheet();
 var itemsDeAcciones = [
 {name: "Rellenar Celdas", functionName: "rellenarCeldas"},
 {name: "Recordar mi Email", functionName: "recordarEmail"},
 {name: "Pedir Nacionalidad", functionName: "pedirNacionalidad"}];
 planilla.addMenu(“Acciones”, itemsDeAcciones);
}

Ahora que ya tenemos nuestro nueva acción en el menú, vamos a establecer la funcionalidad propiamente dicha:

function rellenarCeldas() {
  var rellenar = Browser.inputBox("Rellenar las Celdas con:");
  SpreadsheetApp.getActiveRange().setValue(rellenar);
}

Paso a explicar el código de las siguiente forma. Se define una nueva función como habíamos aprendido anteriormente, se establece una nueva variable rellenar con la información que suministre el usuario a través de un cuadro de diálogo con el método inputBox(). Luego para el documento actual, se obtiene el Rango de Celdas seleccionadas con el método getActiveRange(), y a las mismas se les asigna un valor dado setValue().

Cabe recordar que para la prueba del ejemplo el usuario antes de elegir la acción del menú, debería hacer su selección de celdas.

Como siempre, para probar todo esto, guardamos el código en el editor, y recargamos la página en el navegador.

Antes de pensar que hoy hemos terminado, pensemos en que otras formas podemos asignar valores a una celda. Pensemos en poder indicar la celda y su valor. Reiniciamos entonces en la función onOpen(), incluimos la siguiente linea :

 {name: "Asignar Valor", functionName: "asignarValor"},

La función quedaría así:

function onOpen() {
 var planilla = SpreadsheetApp.getActiveSpreadsheet();
 var itemsDeAcciones = [
 {name: "Asignar Valor", functionName: "asignarValor"},
 {name: "Rellenar Celdas", functionName: "rellenarCeldas"},
 {name: "Recordar mi Email", functionName: "recordarEmail"},
 {name: "Pedir Nacionalidad", functionName: "pedirNacionalidad"}];
 planilla.addMenu(“Acciones”, itemsDeAcciones);
}

Ahora que ya tenemos nuestro nueva acción en el menú, vamos a establecer la funcionalidad propiamente dicha:

function asignarValor() {
  var planilla = SpreadsheetApp.getActiveSpreadsheet();
  var celda = Browser.inputBox("Indique la Celda:");
  var valor = Browser.inputBox("Indique el Valor:");

  if (typeof valor != "number") {
    // comprobamos que valor sea un número
    Browser.msgBox("El Valor ingresado, no es un número");
  } else {
    planilla.getRange(celda).setValue(valor);
    Browser.msgBox("Se ha asignado a la celda " + celda + ", el valor numérico " + valor );
  }

}

Paso a explicar el código de las siguiente forma. En realidad, salvo la última linea las demás ya son conocidas; lo único que introducimos en este ejemplo es el uso del método getRange(). Además hemos empleado un condicional if y de la palabra reservada typeof . Ambas se explican por sí mismas, pero sino, no se preocupen. Estas son las razones por las que Google eligió Javascript, existe un millón uno de tutoriales que explicarán mejor que este servidor su utilidad.

Publicado en General, Tecnología IT | 2 comentarios

Google Scripts : Cuadros de Dialogos: Pidiendo e Informando

Para completar el tutorial anterior, lo mejor es asignar un sentido a cada acción del menu creado.

Con el siguiente código, habíamos creamos una función que se ejecutará automáticamente cada vez que la planilla se recargue.

function onOpen() {
// Esto es un comentario
}

Lo que este entre “{” y “}”, será parte de esta función onOpen().

Entonces editamos la función onOpen() para que quede de la siguiente forma. Las lineas que empiezan con “//” son lineas de comentarios que explican la linea de código debajo de ellas y por ende son ignoradas

function onOpen() {
 var planilla = SpreadsheetApp.getActiveSpreadsheet();
 var itemsDeAcciones = [
 {name: "Recordar mi Email", functionName: "recordarEmail"},
 {name: "Pedir Nacionalidad", functionName: "pedirNacionalidad"}];
 planilla.addMenu(“Acciones”, itemsDeAcciones);
}

Declaramos una variable “planilla” que representará a la hoja activa de nuestro documento

var planilla = SpreadsheetApp.getActiveSpreadsheet();

Declaramos los items de nuevo menu a crear, los mismo se contiene en una variable “acciones”

var itemsDeAcciones  = [

Declara cada item, con “name” establecemos que aparece,  con “functionName” establecemos que función debe ejecutarse

{name: "Recordar mi Email", functionName: "recordarEmail"}

A la planilla de nuestro documento ahora le agregamos un menu ( método addMenu() ), que se llame “Acciones”, que tendra como items lo anteriormente declarado en “itemsDeAcciones”

planilla.addMenu(“Acciones”, itemsDeAcciones);

Note que revisando las dos lineas que más se parecen, la única diferencia es que la última no termina con una coma (,).

Ahora es turno de escribir las dos nuevas funciones :

function recordarEmail() {
 var email = Session.getUser().getEmail();
 Browser.msgBox("Tu dirección de email es : " + Session.getUser().getEmail() );
} 

En la anterior función, solo reportamos un cuadro de diálogo con Browser.msgBox(), que muestre una leyenda mas tu dirección de correo electrónico

function pedirNacionalidad() {
 var nacion = Browser.inputBox("Indique su Nacionalidad:");
 Browser.msgBox("Gracias, la nacionalidad ingresada fue : " + nacion);
}

Aquí, un cuadro de diálogo con Browser.inputBox() pide que el usuario ingrese un dato, el mismo se guarda en la variable nacion y luego se informa junto a una leyenda para darle sentido.

Publicado en General, Tecnología IT | 2 comentarios

Google Scripts: Creando un Menu de Acciones Personalizado

Para empezar con un ejemplo simple, lo mejor es hacerlo también con uno que nos sirva para el resto de los ejemplos.

En esta primera oportunidad, crearemos una opción más para el MENU.

Vamos al editor, y en el cuerpo del mismo pegamos este código:

function onOpen() {
  var planilla = SpreadsheetApp.getActiveSpreadsheet();
  var itemsDeAcciones= [ 
    {name: "Primera Accion", functionName: "primerAccion"},
    {name: "Segunda Accion", functionName: "segundaAccion"},
    {name: "Tercera Accion", functionName: "terceraAccion"}
  ];
  planilla.addMenu("Acciones", itemsDeAcciones);
}

Guardamos el anterior script ( MENU ARCHIVO > GUARDAR ), y seguramente nos preguntara que nombre le daremos al archivo. De ustedes depende.

Cerramos el editor, y recargamos nuestra planilla de calculo.

Notarán al cabo de unos segundo un MENU ACCIONES, al lado de AYUDA.

¡Felicitaciones! han logrado pasar el primer tutorial.

Publicado en General, Tecnología IT | 2 comentarios