Lista de certificados raiz de confianza en dispositivos iOS

Si alguna vez desarrollando una app nativa o con cordova tienes problemas de conexión con el servidor al tratar de conectar mediante https, puede ser que el certificado raiz con el que se ha firmado el certificado de tu servidor no sea de confianza.

Para comprobarlo puedes consultar las siguientes listas

Fuente

Bonus:

Si no puedes cambiar el certificado del servidor por uno confiado, pero quieres conectarte puedes usar este método ( no es recomendable usarlo en producción, sólo en desarrollo si tienes un certificado auto firmado )

@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES; 
}
@end

 

Review Braun Series 3 3040S

He podido probar la Braun Series 3 3040S gracias a trnd y mi impresión
general es buena

Empezaré con una breve descripción:

La presentación en general es buena, aunque la caja trae un código QR que lleva a una web que no existe. También se echa en falta un funda para los viajes, porque no vas a llevar toda la caja, así que al final te toca llevarla suelta.
Su diseño es genial, el color azul me gusta mucho y es muy cómoda para agarrar y con una textura que hace que no se resbale, importante sobre todo si la vas a usar en la ducha
Respecto al manejo, te permite afeitarte rápidamente, y lo mas importante, la limpieza es aún más rápida, sólo hay que meterla bajo el grifo.
Sus funciones principales son:
– Batería de larga duración
– Se puede usar bajo el agua
– Limpieza bajo el agua
– Se puede usar con espuma

Los resultados y el acabado han sido mejorables, a la vista parece que está bien apurado, pero al tacto se nota que no está apurado del todo, estoy acostumbrado a usar las gillette fusión y no queda igual, aunque si es un poco más rápido el afeitado.

Lo que más me ha gustado es poder usarlo con espuma porque así no te irrita nada la piel, y poder limpiarla bajo el agua porque ahorras mucho tiempo.
Lo que mejoraría de cara a próximas versiones es que el apurado sea perfecto, sobre todo bajo el agua, y estaría bien poder usarla mientras se carga, porque como no estés pendiente y se te acabe la batería te puedes quedar a medias, aunque por otro lado tiene su lógica, si se puede usar bajo el agua y la estás cargando puedes morir electrocutado.

Después de mi experiencia, recomiendo el producto porque siempre viene bien tener una maquinilla eléctrica para afeitarte rápidamente cuando tienes prisa y para llevar de viaje, ya que es más cómoda que una cuchilla con espuma, aunque si buscas un apurado perfecto mejor usar cuchillas.

Solicitar correspondencia entre Títulos Universitarios Oficiales (“pre-Bolonia”) y niveles MECES usando Cl@ve PIN

Hoy voy a hablar sobre como solicitar la correspondencia entre Títulos Universitarios Oficiales (“pre-Bolonia”) y niveles MECES, usando el sistema Cl@ve PIN, un trámite que a primera vista parece sencillo, pero no lo es tanto, si no hubiera tenido problemas no haría un tutorial.
Lo primero y más importante que debemos saber es que para poder solicitar la correspondencia usando Cl@ve PIN, el registro en el sistema Cl@ve lo tendremos que haber hecho de manera presencial o mediante certificado electrónico, esto no lo verás en ningún sitio mencionado, pero si te registaste mediante el proceso de la carta de invitación y registro mediante CSV recibirás el siguiente error al intentar validarte mediante Cl@ve. “[66] La calidad de servicio solicitada es mayor que la censada”

error_clave

Esto no lo pone en ningún sitio, y lo deberían haber indicado con este logo de Cl@ve específico para ello:
clave

¿Que haremos si nuestro registro en Cl@ve fue mediante la carta de invitación?
Pues si tenemos certificado electrónico, podemos cambiar el nivel de acceso de vuestro registro para que sea el aceptado a través de la siguiente dirección:
https://www1.agenciatributaria.gob.es/es13/s/pi24pi24010f
Pero lo normal será que no lo tengais, porque si lo tuvieseis os hubiéseis registrado en Cl@ve con él, y seguramente haríais el trámite de solicitud de título también con él.
Asi que si no tenéis certificado electrónico tendréis que ir a una oficina a que os cambien el nivel de acceso.
Yo personalmente, ya puestos a perder una mañana en oficinas, recomendaría pedir el certificado electrónico personal de la FNMT y te ahorrarás muchas visitas a otras administraciones en el futuro…

Comenzamos
Después de todo este tochazo, si todo lo anterior no se os aplica porque vuestro nivel de acceso es el necesario, podrémos inciar la solicitud a través de la siguiente dirección:
https://www.mecd.gob.es/servicios-al-ciudadano-mecd/catalogo-servicios/gestion-titulos/estudios-universitarios/titulos-espanoles/correspondencias-titulos-meces.html

Allí encontraremos toda la información relacionada con la correspondencia entre titulos y el proceso, leedlo bien para ver que vuestra titulación es una de las que pueden solicitar la correspondencia.

Para solicitarlo pinchamos en el botón “Acceso al servicio online”, que nos llevará a la siguiente dirección.
https://sede.educacion.gob.es/tramite/login/inicio.jjsp?idConvocatoria=617

Se presentará la siguiente pantalla en la que se permite el acceso desde Cl@ve o certificado, pulsamos en Acceder de Cl@ve
acceso_clave

Al pulsarlo se nos llevará a la pasarela Cl@ve en la que podremos seleccionar todas las formas de acceso que permite Cl@ve
opciones_clave

Seleccionamos Cl@ve PIN y rellenamos los datos de acceso (NIF, clave de usuario y PIN), y si todo es correcto nos llevará a la pantalla de solicitud con un único botón, acceso a trámite, lo pulsamos y ya nos llevará a la pantalla de solicitud

solicitud

En esta pantalla tan sólo tendrémos que introducir nuestro número del título, pero el título tiene muchos números y en ninguno pone explícitamente “número de titulo”, ¿cual es? En el que pone “Registro Nacional de Títulos”, con un formato tal que XXXX/YYYYYY, lo introducimos tal cual está, marcamos las casillas de “¿Es credencial de homologación?” y “En cumplimiento de lo establecido en la Ley Orgánica…” y finalmente pulsamos en “Obtener correspondencia”, nos llevará a la pantalla resumen de solicitud, pulsamos el botón “Tramitar solicitud de correspondencia” y nos llevará a una pantalla donde podremos descargar nuestra copia.

Recuperar pestañas de firefox en mac

A todos nos habrá pasado alguna vez que por alguna u otra razón abrimos el firefox y no nos muestra el botón de recuperar sesión anterior, ni en la página de inicio ni en el menú Historial -> “Restaurar sesión anterior”, a mi me ha pasado cientos de veces y normalmente me resignaba a perder todas las pestañas y volver a empezar de 0.
Pero una vez no quise perder todas las pestañas recopiladas durante meses para leer luego o con cosas pendientes y me puse a investigar como recuperarlas y la verdad es que es bastante sencillo, solo hay que seguir estos pasos:

1.- Abrimos firefox y pones en la barra de navegación about:support
2.- En la primera tabla que aparece, a la derecha de Carpeta del perfil aparece el botón “Mostrar en Finder”, lo pulsamos y se abrirá una carpeta
3.- Cerramos firefox del todo
4.- Hacemos una copia de seguridad de la carpeta que apareció en el paso 2, o si no queremos guardar absolutamente todo, guardamos solamente los archivos sessionCheckpoints.json, todos los que empiecen por sessionstore (sessionstore.bak, sessionstore.js y alguno mas que haya), y la carpeta sessionstore-backups con todo su contenido.
5.- abrimos el último upgrade.js-fecha que encontremos en la carpeta sessionstore-backups y copiamos su contenido a sessionstore.js
6.- Abrimos firefox de nuevo, ya nos debería volver a salir el menú de Restaurar sesión anterior.

Si no sale ir probando con otros upgrade.js anteriores.

Nota: Si no encuentras en sessionstore.js es que no has cerrado completamente el firefox.

Sustituir códigos HTML por el caracter correspondiente de un NSString

Si por alguna razón tienes un NSString que contiene códigos HTML  (como por ejemplo á en vez de á, o ñ en vez de ñ o & en vez del ampersand &) y quieres que se te muestre el caracter equivalente en vez del código, la forma más fácil de conseguirlo es usar un NSAttributedString de la siguiente manera

NSString * stringConCodigosHTML = @"Saludos desde España. ¿Qué tal están?";

NSData *stringData = [stringConCodigosHTML dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary *options = @{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType};
NSAttributedString *decodedString;
decodedString = [[NSAttributedString alloc] initWithData:stringData
options:options
documentAttributes:nil
error:nil];

NSLog(@”%@”,decodedString.string);//sacará por consola “Saludos desde España. ¿Qué tal están?”

Cambiar el User Agent de una UIWebView en iOS

Para cambiar el user agent de una UIWebView en iOS tan solo tenemos que usar el siguiente código:

NSDictionary *dictionario = [[NSDictionary alloc] initWithObjectsAndKeys:@”Mi user agent personalizado”, @”UserAgent”, nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionario];
Se puede usar por ejemplo para que las páginas no nos carguen la versión móvil de una web, poniendo por ejemplo el User Agent de firefox o Chrome.
También cambiaría el User Agent para phonegap, tanto para la CordovaWebView como para el InAppBrowser.
Para saber el User Agent de una UIWebView podemos usar este código:
UIWebView* webViewTemporal = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* userAgent = [webViewTemporal stringByEvaluatingJavaScriptFromString:@”navigator.userAgent”];
Esto nos puede ser útil para poder modificar el User Agent original de la UIWebView y personalizarlo como acabamos de ver. Ejemplo:
UIWebView* webViewTemporal = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* userAgent = [webViewTemporal stringByEvaluatingJavaScriptFromString:@”navigator.userAgent”];
NSString * miUserAgentPersonal = [NSString stringWithFormat:@”Mi app %@”,userAgent];
NSDictionary *dictionario = [[NSDictionary alloc] initWithObjectsAndKeys:miUserAgentPersonal, @”UserAgent”, nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionario];
De esta forma mantenemos el User Agent original pero con una pequeña modificación para detectar que se accede desde nuestra aplicación.

 

Othello Classic

Othello Classic is my first phonegap app.

This is the classic board game Othello.

The rules:

Othello is a 2 player game.

The object of the game is to have the majority of your color discs on the board at the end of the game.

Black always move first.

A move consists of “outflanking” your opponent’s disc(s), then flipping the outflanked disc(s) to your color.

If a player can’t place his disc, the game will automatically change the turn.

You can know the turn by the color of the background

My first version of the game was a game for 2 human players, but I’ve added a 1 player mode (or VS machine mode) with 2 levels of difficulty (easy and medium).

The iOS version includes online game with the Game Center Phonegap plugin I developed

You can find the iOS version here

You cand find the free Android version with a new name (Iago Classic) here 

Review del libro PhoneGap Beginner’s Guide

Phonegap es un framework para desarrollar aplicaciones móviles multiplataforma (iOS, WP, webOS, symbian, bada, blackberry, android) con html5, css3 y javascript. Para más información visitar www.phonegap.com

El autor del libro es uno de los desarrolladores de phonegap, por lo que ya se intuye que el libro va a ser bastante completo.

Son más de 300 páginas divididas en 11 capitulos, y en estos capitulos no solo se centra en phonegap, si no que explica bastantes cosas de html5, css y javascript. Para la mayoría de los ejemplos usa la librería javascript XUI, una buena librería para desarrollos móviles, que puede ser una buena alternativa al famoso ( y lento) jquery mobile por ser bastante ligera y completa.

Durante los capitulos se irán realizando una serie de ejercicios para desarrollar mini aplicaciones, por lo que es muy ameno de leer y yo creo que esto sirve mejor para aprender. Además de vez en cuando te hace preguntas test para ver si lo vas comprendiendo, y va poniendote retos.

A lo largo de los capitulos te enseñarán a usar todas las características de su API como son el almacenamiento, camara, brujula, acelerometro, localización, contactos, etc. Y además te enseñan como usar plugins desarrollados por terceros e inlcuso desarrollar tus propios plugins para cuando necesites algo que no esté incluido en la API básica de phonegap.

Me ha parecido un libro perfecto para iniciarse con phonegap, y en el desarrollo movil en general, ya sea desarrollo web móvil o de aplicaciones hibridas.

La unica pega que le veo es que se ha centrado solo en iOS y android, (a quien quiero engañar, son los más usados, yo si hubiese escrito el libro también me hubiese centrado en iOS y android). No obstante, la parte de html, css y javascript debería ser comun o casi para todos los dispositivos. Otra posible pega es que esté en inglés, pero como pasa con la mayor parte de la documentación relacionada con la informática, asi que tampoco es un gran problema)

El libro me lo mandaron de la editorial packtpub, y se puede comprar aqui
http://www.packtpub.com/phonegap-beginners-guide/book