miércoles, 17 de julio de 2013

Mis primeras impresiones con Ouya

Hola aquí os presento mi Ouya y las primeras impresiones con ella.

Aquí esta la Ouya dentro de su caja, junto con la pegatina que la acompaña.





Como puede verse, la presentación de la consola está muy cuidada, aunque no se aprecia en la foto, en la parte de arriba de la caja está el nombre de la consola.

Aquí teneis los mandos, la primera foto contiene los 2 mandos que pedí y la segunda un mando abierto para ver los compartimentos de pilas:


 A mí lo que me chocó es que las pilas estuvieran situadas en los laterales. Aunque como me comentaron en los foros, esto puede haberse hecho para equiparar el peso del mando.

En el primer arranque tardó unas 4 horas en actualizarse, supongo que los servidores estarían un poco saturados.
Después de esto ya pude entrar en la consola.

Lo que me chocó bastante es que al loguearme la primera vez tuviera que añadir una tarjeta o un código de cupón para poder entrar.






Es una de las pocas cosas que me desagradan de la consola, además no deja claro si los datos se guardan en la consola u online.

La pantalla principal me gusta por su sencillez:
 
Aquí teneis 2 fotos del market, el cual se entra mediante la opción discover del menú principal:

 

 El market me gusta por su sencillez, pero creo que deberían de mejorarlo. Aunque sencillo es un poco engorroso.
Las imágenes se cargan cada vez, lo que hace que si te quedas sin conexión no se vea ninguna.
La primera vez que intentas ir a ver la lista de juegos, como no hay ninguno, te abre directamente el market.

Otra cosa que he visto y que creo que han de mejorar es la personalización de los menús de configuración:



Utilizan los que lleva Android por defecto y no están personalizados, podrían por lo menos cambiarles el color al rojo de los menús de la consola.


Una cosa que echo de menos son muchos juegos que tiene android y que espero que poco a poco los vayan incorporando.
Pese a que hay algunas cosas que no me gustan, creo que se ha de dar una oportunidad a la consola y a la comunidad que hay detrás de ella.

Saludos.
 

jueves, 11 de julio de 2013

Mozilla Add-on builder: Posibilidades a la hora de abrir un link desde una entrada de menú.

Las posibilidades son las siguientes:

require("windows").browserWindows.open(pageURL); --> abre la url en una ventana nueva.
require("windows").browserWindows.activewindow.open(pageURL); --> abre la url en una pestaña nueva.
require("tabs").open(pageURL); --> abre la url en una pestaña nueva.
require("tabs").activeTab.url=pageURL; --> abre la url en la pestaña actual.

Para el siguiente ejemplo los cambios habría que hacerlos dentro del onMessage:

Fichero: main.js

var contextMenu = require("context-menu");
var data = require("self").data;

//Menu contextual para cuando se selecciona un link en la página.
var searchMenu = contextMenu.Menu({
  label: "Abrir URL ",
  context: contextMenu.SelectorContext("a[href]"),
  contentScriptFile: [data.url("links.js")],
  items: [],
  onMessage: function (pageURL) {
    require("tabs").open(pageURL);
  }
});

Fichero: links.js

self.on("click", function (node, data)
{
    var searchURL = data + node.baseURI;
    self.postMessage(searchURL);
});

Saludos.

lunes, 13 de mayo de 2013

Como obtener el ID autogenerado al realizar un insert en una base de datos

Para obtener el ID autogenerado se han de concatenar las sentencias marcadas en negrita:

SQLServer

INSERT INTO Foo () VALUES (); SELECT CAST(scope_identity() AS int);

MySql

INSERT INTO Foo () VALUES (); SELECT LAST_INSERT_ID();

SQlite

INSERT INTO Foo () VALUES (); SELECT last_insert_rowid();


Saludos.

jueves, 9 de mayo de 2013

Log4Java en Java

Para poder utilizar el Log4Java en una aplicación de Java se han de seguir los siguientes pasos.

Añadir los siguientes imports a los ficheros que vayan a utilizarlo.
import org.apache.log4j.Logger;

Al principio de la aplicación hay que introducir esta línea:

PropertyConfigurator.configure("log4j.properties");

Al principio de la clase se ha de introducir la siguiente línea:
private final Logger logger = Logger.getLogger(this.getClass().getName());

Por cada salida a log que queramos obtener tenemos que introducir una de las siguientes líneas de código, dependiendo del nivel de log deseado:
logger.debug(texto_a_sacar_por_log);
logger.error(texto_a_sacar_por_log);
logger.fatal(texto_a_sacar_por_log);
logger.info(texto_a_sacar_por_log);

Si además queremos que saque la información de una excepción obtenida:
logger.debug(texto_a_sacar_por_log, excepción);
logger.error(texto_a_sacar_por_log, excepción);
logger.fatal(texto_a_sacar_por_log, excepción);
logger.info(texto_a_sacar_por_log, excepción);

Ejemplo de un fichero de configuración, esta vez en vez de utilizar un fichero xml utilizaré un fichero properties, en nuestro caso llamado log4j.properties:

# Registro de los appenders, junto al nivel de log.

log4j.rootLogger=ALL, FLOG


# Appender de fichero circular (RollingFileAppender)
log4j.appender.FLOG=org.apache.log4j.RollingFileAppender
log4j.appender.FLOG.File=log/fingerreader2.log

# Configuración del formato del contenido del fichero de log.
log4j.appender.FLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.FLOG.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

# Configuración del tama\u00f1o del fichero y del número de ficheros
log4j.appender.FLOG.MaxFileSize=10240KB
log4j.appender.FLOG.MaxBackupIndex=10

Saludos.

viernes, 19 de abril de 2013

Log4net con VB.NET

Para poder utilizar el Log4net en una aplicación de VB.NET se han de seguir los siguientes pasos.

Añadir el log4net a las referencias del proyecto.

La inicialización de Log4NET se realiza incluyendo la siguiente llamada en el fichero AssemblyInfo.vb:
<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="Configuracion.log4net", Watch:=True)>

Esta línea hace que se cargue la configuración del Log4net desde el fichero Configuracion.log4net.
En la declaración de las variables de las clases añadir:
Private ReadOnly LogPagina As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)



Por cada salida de log realizar la siguiente llamada:
LogPagina.debug(texto_a_sacar_por_log);
LogPagina.info(texto_a_sacar_por_log);
LogPagina.warn(texto_a_sacar_por_log);
LogPagina.error(texto_a_sacar_por_log);
LogPagina.fatal(texto_a_sacar_por_log);


Si queremos que en una excepción se imprima el error que contiene el objeto excepción:
LogPagina.debug(texto_a_sacar_por_log, excepción);
LogPagina.info(texto_a_sacar_por_log, excepción);
LogPagina.warn(texto_a_sacar_por_log, excepción);
LogPagina.error(texto_a_sacar_por_log, excepción);
LogPagina.fatal(texto_a_sacar_por_log, excepción);



El fichero de configuración del Log4Net ha de llamarse Configuracion.log4net y ha de estar situado en la raiz del proyecto.
<?xml version="1.0" encoding="utf-8" ?>
<log4net>

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log\Mtmnet.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %c - %m%n" />
    </layout>
  </appender>

  <root>
    <level value="ALL" />
    <appender-ref ref="RollingLogFileAppender" />
  </root></log4net>



Saludos.

jueves, 21 de febrero de 2013

Log4net con C#

Para poder utilizar el Log4net en una aplicación de C# se han de seguir los siguientes pasos.

Añadir el log4net a las referencias del proyecto.

En el fichero AssemblyInfo.cs añadir la siguiente línea:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Configuracion.log4net", Watch = true)]

Esta línea hace que se cargue la configuración del Log4net desde el fichero Configuracion.log4net.

En la declaración de las variables de las clases añadir:
private readonly ILog LogPagina = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);


Por cada salida de log realizar la siguiente llamada:
LogPagina.debug(texto_a_sacar_por_log);
LogPagina.info(texto_a_sacar_por_log);
LogPagina.warn(texto_a_sacar_por_log);
LogPagina.error(texto_a_sacar_por_log);
LogPagina.fatal(texto_a_sacar_por_log);


Si queremos que en una excepción se imprima el error que contiene el objeto excepción:
LogPagina.debug(texto_a_sacar_por_log, excepción);
LogPagina.info(texto_a_sacar_por_log, excepción);
LogPagina.warn(texto_a_sacar_por_log, excepción);
LogPagina.error(texto_a_sacar_por_log, excepción);
LogPagina.fatal(texto_a_sacar_por_log, excepción);

El fichero de configuración del Log4Net ha de llamarse Configuracion.log4net y ha de estar situado en la raiz del proyecto.
<?xml version="1.0" encoding="utf-8" ?>

<log4net>

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log\Mtmnet.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %c - %m%n" />
    </layout>
  </appender>

  <root>
    <level value="ALL" />
    <appender-ref ref="RollingLogFileAppender" />
  </root></log4net>

Saludos.