Pages

sábado, enero 04, 2014

CyanogenMod forzar modo 3G ó WCDMA

Tengo un Samsung Galaxy Note II, y hace unos meses le instalé el CyanogenMod. El único problema que he tenido hasta hoy es que no podía forzar el modo 3G, todas las opciones que da son siempre 2g+ algún modo 3g, es decir que si tiene una señal fuerte EDGE, y una 3G o HSDPA mala, va siempre al EDGE, y en algunos casos peores se va a GPRS.
La mala noticia es que no hay una opción de configuracion directa para solucionarlo.
La buena es:
  • Vayan al discador telefónico y escriban:
         *#*#4636#*#*
  • Dentro del menú de configuración que les aparece vayan a:
         Informacion del dispositivo.
  • Se van a encontrar primero información del IMEI, Nro. de teléfono y red, luego un botón para ejecutar un testeo, luego mas información de estado e inmediatamente un menú de selección (Está justo antes de que vuelva a comenzar un juego de botones) que les va a decir algo como GSM Preferred., lo cambian por WCDMA Only y voilá!!. 
Si vuelven a entrar luego van a ver que quedó en WCDMA Preferred, así que asumo que si no tiene 3G de ningún tipo pasará a una red 2G solo.

La solución la encontré en el blog de Rodrigo Zamora Nelson, así que nobleza obliga ahi va el link: http://rodrigo.zamoranelson.cl/?p=1384

lunes, diciembre 30, 2013

Windows XP Error 0x0000007E creando una maquina virtual con VirtualBox

Hice una Máquina Virtual en Virtual Box a partir de una imagen realizada con  Clonezilla. Creé la máquina, puse la imagen de Clonezilla adentro del CD de la máquina virtual y restauré la imagen.
Hasta ahí todo normal. Bootee la máquina virtual y dió una pantalla azul con el error mencionado en el titulo. Como habitualmente ocurre, cuando uno crea una máquina virtual a partir de una existente. 
Bootee nuevamente a prueba de fallos y borré todos los dispositivos de hardware que me permitió Windows para que los redetecte (habitualmente esto funciona.)
Para no hacerlo demasiado largo, diré que sin importar cuanto lo intentase, siempre terminaba booteando con la pantalla azul y reiniciándose inmediatamente. 
Para poder chequear el error sin que la máquina se reinicie:
  1. Botón derecho sobre MiPC y en el menu contextual -> Propiedades
  2. Vayan a Opciones avanzadas -> Inicio y recuperación -> Configuración
  3. Destilden la opción que dice "Reiniciar automáticamentente".

Con eso se quedará en la pantalla azul y podrán comprobar el código de error.

La solución final la encontré en el sitio de soporte de microsoft. Básicamente tiene que ver con que la máquina "real" poseía un procesador Intel, y yo estaba intentando hacerla funcionar sobre un procesador AMD, eso aparentemente no le gusta demasiado al XP.
Dejo el vínculo original para quien lo quiera consultar, no obstante detallo el procedimiento para solucionarlo a continuación.
  1. Reinicien el equipo en modo a prueba de errores.
  2. Hagan clic en Inicio, hagan click en Ejecutar, escriban regedit y, a continuación, hagan click en Aceptar.
  3. Busquen y, a continuación, hagan click en la clave del registro siguiente:
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Intelppm
  4. En el panel derecho, haga clic en la entrada de Inicio ó Start y, a continuación, hagan click en Modificar.
  5. En el cuadro información del valor , escriban 4 (no le den importancia a si es decimal o hexa, en realidad, 4 es 4 en ambas bases numéricas) y, a continuación, hagan click en Aceptar.
  6. Salgan del Editor del registro.
Voilá!!



Artículo original: http://support.microsoft.com/kb/953356

lunes, agosto 26, 2013

Transferir variables o datos entre dos HTML, Obtener parametros pasados por GET en HTML

¿Cómo llamar de un HTML a otro enviando informacion y recibirla del otro lado?.


Generalmente uno envía información entre un html y un PHP, por ejemplo, o al lenguaje de servidor que mas les guste. Pero en este caso necesitaba servir una pagina desde PHP y no utilizar un motor de plantillas para reemplazar valores, Envié entonces un header del tipo
"header ('Location: pp.html?parametro='.$variable)", dentro del html, utilice esta funcion para leer este primer parametro que es el valor que me interesaba y transferirlo a una variable de formulario:

function leerGets() {
  var parameters = location.search.substring(1).split("&");
  var temp = parameters[0].split("=");
  document.getElementById("campo").value = unescape(temp[1]);
}
 
Vamos por partes:
 
location.search.substring(1) 

El objeto location, contiene la dirección escrita en el explorador. La propiedad search del objeto contiene el query string. Es decir que suponiendo que la direccion completa fue: http://pp.htm?parametro=xxx&param2=yyy
location.search devolvería ?parametro=xxx&param2=yyy . Al agregarle el método substring con un "1" como parámetro, cortamos el primer caracter de la cadena, en este caso el "?"
 
var parameters = location.search.substring(1).split("&")

al resultado del query string lo dividimos con la funcion split en un array de pares de valores separados por el caracter "&" y lo asignamos a una variable, en este caso parameters.
 
var temp = parameters[0].split("=");

Ahora tomamos el primer conjunto de parametro=valor (es el que me interesa a mi, aunque bien podríamos haber recorrido todo el query string) y lo volvemos a dividir pero en este caso por el carácter "=".
Es decir. parameters[0] contiene "parametro=xxx" ahora tendre un array "temp" que contendra temp[0] = "parametro" y temp[1] = "xxx".
 
document.getElementById("campo").value = unescape(temp[1]);

asignamos el valor a una variable de formulario con id="campo".
unescape(valor) me permite sacar los caracteres de codificación del query string. si por ejemplo, parámetro hubiese contenido espacios entonces habría llegado con un formato parecido a este parametro=Juan%20Perez.

Listo!. Espero que sirva.

Agregado mas tarde...

Y ya que estamos amplio la función y la convierto en algo mucho mas útil.

 
function leerGets() {
  var gets = {}; temp=[];
  var parameters = location.search.substring(1).split("&");

  parameters.forEach(function(entrada) {
              temp = entrada.split("=");
              gets[temp[0]] = unescape(temp[1]);
  });
  return gets;
}

martes, agosto 07, 2012

JSONP - Cross Domain AJAX, Ejemplo con jQuery y PHP

Si ud. como yo, es un pobre programador que ha intentado hacer alguna aplicacion para telefonos Android y tuvo la peregrina idea de hacer que el telefono tenga la logica de su lado y se comunique via Ajax con su servidor... Entonces esta entrada se la dedico desde el fondo de mi corazón.

Después de mucho deambular leyendo un montón de incoherencias llegué a un post que me mostró la luz. http://bob.ippoli.to/archives/2005/12/05/remote-json-jsonp/
De ahí en mas avancé y aqui van mis conclusiones.

1) llamada ajax en javascript con jQuery:

$.ajax({
 dataType: "jsonp",
 url: "http://algunotrodominio.com/unscript.php",
 data: "parametro1=valor1&parametro2=valor2",
 type: GET,
 crossDomain: true,
 jsonpCallback:'jpCallback',
 success: function(jsondata) {   
  datos = jsondata[0].respuesta.datos;
  otros = jsondata[0].respuesta.otracosa;
  (hacer algo con todo esto.)
 },
 error: function (jqXHR, textStatus, errorThrown) {
   (haceralgo)
 }
});

jpCallback(jsondata){
  (pueden ejecutar alguna validación previa con los datos,
 o no hacer absolutamente nada.)
} 

2) unscript.php :
<?php

$json = '{ "respuesta": {
   "datos": [ 
              {"codigo": 1, "dato": "algo1"},
              {"codigo": 2, "dato": "algo2"}
            ],
   "otracosa":"undatomasadevolver"  
   }   
}';
  
echo 'jpCallback(['.$json.'])';
?> 

Y eso es todo. Si no lo captaron: al $.ajax() de jQuery modifican el dataType a "jsonp", esto solo ya habilita a hacer una llamada cross domain. pero hay un parametro mas crossDomain : true. Sin esto tambien funciona. jsonpCallback : 'nombredefuncioncallback' Al decir que esto es "jsonp" jQuery agrega 2 parametros a la cadena de datos que se envian por ejemplo:

http://algunotrodominio.com/unscript.php?callback=jQuery17206061169685839634_1344380380503&parametro1=valor1&parametro2=valor2&_=1344380387364

si en cambio agregamos el parametro jsonpCallback : 'funcioncallback' entonces la llamada se parecera a esto:

http://algunotrodominio.com/unscript.php?callback=funcioncallback&parametro1=valor1&parametro2=valor2&_=1344380387364

Como sea lo importante es que la devolucion del script PHP debe ser el nombre de la funcion callback y como parametro de la funcion el JSON que quiero devolver. jQuery ejecuta entonces la funcion callback y luego al success: envia solo el objeto JSON. En el ejemplo muestro como acceder a los distintos componentes.

Espero que les sea útil.

viernes, julio 27, 2012

FIREBIRD: Convertir un Unix timestamp, equivalente a MYSQL FROM_UNIXTIME()

En teoría los Unix timestamp, son los segundos transcurridos desde la medianoche del primero de enero de 1970, en MySQL hay dos funciones para manejar estos timestamps FROM_UNIXTIME() y UNIX_TIMESTAMP(). Ahora, dentro del mismo MySQL la conversión entre ambas funciones no es exacta, debido (segun entendí) a las diferencias locales según la zona horaria desde donde se trabaje... O sea, no pidan demasiada precisión muchachos que esto no es una ciencia exacta!!!.
Como sea el bueno de Firebird (la base de datos con la que habitualmente trabajo) no tienen contemplado esto asi que para obtener una fecha legible a partir de un Unix timestamp yo hice esto:

select dateadd(second, 1255033470, cast('01/01/1970 00:00:00.0000' as timestamp)) 
from rdb$database;

Por ahora sirve a mis propositos, si logro entender como hacer jugar los problemas de ubicación lo mejoro. Si alguien tiene alguna mejor idea soy todo ojos!.