Cambiando la pantalla del iPhone 4

CambiandoPantallaIPhone

Ayer pasé la tarde entretenido cambiando la pantalla a un iPhone 4 de un familiar. Hará cosa de un año, ya cambié la pantalla del mío, que tubo un accidente y aún llevando el famosoBumper de Apple, la pantalla quedó hecha polvo. Cuando cambié la pantalla al mío, lo hice pensando en que lo máximo que podía pasar era cargarse algo, y tener que llevarlo a algún servicio técnico a que arreglaran el estropicio. No lo tenía muy claro, pero los 200€ que me pedían para cambiarle la pantalla en el SAT de Apple, me ayudaron a decidirme.

Lo que complica un poco el tema, es el hecho de el iPhone está montado de delante hacia atrás, lo que quiere decir que para llegar a acceder a la pantalla, lo empezamos a desmontar desde atrás hasta poder liberar la pantalla, después de haber desmontado gran parte de los componentes del teléfono. Sí que hay que ir con cuidado con algunos componentes, con los conectores y sus minúsculas patas, etc. pero yendo con un poco de cuidado, sin intentar hacer nada con la fuerza bruta, con paciencia y siendo meticulosos con el desmontaje, se termina consiguiendo, y sin demasiados problemas.

La guía a seguir

Para mi los mejores tutoriales sin duda son los de iFixIt, recomendables 100%. IFixIt es una página donde puedes encontrar guías de reparación de todo tipo de artículos (teléfonos, iPads, ordenadores, electrodomésticos, etc.). Solo para el iPhone hay un total de 147 guías distintas.

Aquí está el manual específico para el cambio de pantalla del iPhone 4 de iFixIt. Para empezar, la guía tiene un vídeo donde se pueden ver todos los pasos de la reparación. Además cada paso está descrito, ilustrado con una o más fotos (con posibilidad de visualizarlas en grandes dimensiones para observar cualquier detalle) y completado con consejos tanto para el montaje como para el desmontaje. Digamos que es LA GUÍA en mayúsculas.

Herramientas necesarias

kitHerramientasReparacionIPhone

Venden por eBay unos kits para hacer esta reparación con todo lo necesario por menos de 4€ gastos de envío incluidos (por ejemplo, este). Os recomiendo tener uno de ellos, porque por 4€ tendréis todas las herramientas necesarias para el cambio de pantalla.

Lo único un poco específico que hace falta tener es el destornillador con punta pentalobular, y solo será necesario en el caso de que nuestro iPhone use ese tipo de tornillos en la parte inferior externa de la carcasa, en los tornillos que aguantan las parte trasera del iPhone (inicialmente los iPhone4 tenían esos dos tornillos Philips, pero al tiempo Apple los cambió por los pentalobulares).

Lo demás, un destornillador Philips, y algunas herramientas de plástico con forma de palanca, que nos ayuden a desconectar los conectores y chips. Se usan herramientas de plástico en circuitería de pequeñas dimensiones, porque de tan pequeño que es todo, es fácil tocar varias patas de los chips a la vez. Si esto lo hacemos con una herramienta metálica, estamos haciendo un puente entre varias patas, que depende de lo que sea cada una de ellas, podemos cargarnos el chip o los chips en cuestión.

El template de desmontaje

Otra cosa importante y muy útil, es una plantilla de desmontaje de tornillos que, una vez impresa, nos ayudará a mantener ordenados los tornillos y otros pequeños componentes, a medida que los vayamos desmontando. Podemos descargar la plantilla en formato PDF desde aquí. Son muchos los tornillos que hay que quitar, y de distintos tamaños, así que como no seamos ordenados a la hora de desmontarlo, tendremos problemas importantes al montarlo.

Función from_unixtime con valores negativos

Usando la función from_unixtime() de MySQL, devuelve un valor NULL cuando todo parece estar correcto, y el campo pasado por parámetre existe.

Solución:

Parece ser que la función from_unixtime() de MySQL no acepta valores de unixtime negativos (anteriores al 01/01/1970). Y en el caso de que se le pase un valor negativo, devuelve NULL.

Una solución para estos casos consiste en hacer una suma de fechas, con la función date_add() de timestamp(0) más el valor de la fecha negativo, es decir:

Salto de línea en celda de tabla Latex

Cuando queremos hacer un salto de línea en una celda de una tabla en Latex, no podemos hacer como si estuviéramos fuera de la tabla, por lo que no nos servirá la doble barra invertida. Esto lo que haría sería empezar una nueva fila de la tabla, empezando por la primera columna otra vez.

Hay algunos paquetes que permiten el hacer los saltos de línea dentro de la celda, pero una forma rápida y segura es mediante el comando parbox:

Em 3.5 ponemos el tamaño de la celda, y el contenido hará el salto de línea donde indiquemos, ampliando el alto de la fila. Si no cabe el texto en el ancho especificado, el mismo hará los saltos de línea que sean requeridos.

Parámetros adicionales a función llamada con sapply

Tenemos una función a la que queremos llamar para cada uno de los objetos de una lista. Para hacerlo de forma eficiente lo queremos hacer con sApply(), y no haciendo un for() o un while(). La función a la que queremos llamar, además del propio objeto sobre el que se hace la llamada, tiene un segundo parámetro que tenemos que pasar.

Esta es la función en cuestión:

De los dos parámetros, el primero se lo pasará la función sApply, y será uno de los elementos de la lista de sApply. Pero el segundo parámetro, cómo se lo pasamos?

La función sApply (o simplemente apply, o sus derivadas), tiene el parámetro ‘…’, por lo que acepta en su llamada cualquier parámetro adicional no especificado en la lista formal de parámetros. Todos estos parámetros adicionales que pasemos, apply los pasará directamente a la función llamada. Por lo que, podemos hacer la llamada a sApply añadiendo el parámetro idDisease de la forma:

SApply() pasará este valor como parámetro idDisease de la función ancestorsFunction().

Convertir una variable de tipo factor (R) a numérica

A veces nos encontramos variables que representar valores porcentuales, con el símbolo de porcentaje, y guardados como factor. Si queremos hacer gráficos exploratorios, seguramente nos interesará tener estos valores como valores numéricos.

Por ejemplo, tenemos una variable que estos son sus 10 primeros valores:

Nos interesa pasarlo a numeric:

Con lo que si volvemos a listar los 10 primeros valores:

Usando librerías externas con R

Antes de poder utilitzar funciones de una librería o package que no forma parte del core de R, tenemos que cargarlo.

Función para cargar librería externa

En este caso, vemos que nos da un mensaje de error porque no encuentra el package ‘ElemStatLearn’. El motivo es porque no hemos descargado previamente esta librería a nuestro PC. Por lo que tendremos que descargarla antes de poderla cargar.

Descargar un package

Ahora ya sí que podremos cargar la librería sin ningún problema, con la función library()como hemos dicho antes:

 

 

Volver a hacer visible un fichero que se ha vuelto oculto

Algunos virus / troyanos y demás se dedican a volver ocultos archivos o carpetas de nuestro sistema, así como de unidades extraíbles que tengamos conectadas.

Para volver a hacer visibles o “desocultar” estos archivos, haremos lo siguiente:

  1. Abrimos la línea de comandos (Por ejemplo, Menu Inicio, escribimos ‘CMD’ en el buscador, y damos al Enter)
  2. En la línea de comandos, nos situamos al a carpeta donde se haya producido el desastre, por ejemplo la carpeta de ‘Mis documentos‘.
  3. Ejecutamos: ATTRIB -R -H -S “nombre archivo/carpeta a desocultar”, o bien  ATTRIB -R -H -S *.* para desocultar todos los archivos que tengamos en esa carpeta.

De todas formas, hay que tener en cuenta, que si no hemos sido nosotros quien ha ocultado los ficheros, lo habrá hecho algun software malintencionado, por lo que deberemos preocuparnos de quitar ese software en cuestión, ya sea un virus, un troyano o lo que sea, porque sino volveremos a tener el problema en cuatro días…

Split para separar en dos una columna en R

Tenemos una tabla con dos columnas, una de las cuales queremos separar en dos basándonos en el delimitador “:” es decir, queremos tener en una columna la parte anterior al delimitador, y en la otra columna la parte posterior.

Datos originales:

Ejecutamos la siguiente sentencia:

Dando por resultado:

 

Error en la importación de bases de datos

Tenemos una base de datos MySQL vacía, e intentamos importar mediante un script de exportación generado desde otro servidor MySQL, toda una base de datos, tanto estructura como datos. Subimos el script de importación desde desde PhpMyAdmin, y no se crea ni una tabla, dándonos el siguiente error:

Solución:

El error viene provocado por unas sentencias que hay en el inicio del fichero de importación, que se encargan de guardar los valores de determinadas variables globales del servidor de SQL, para reestablecer su valor una vez terminada la importación. En según que versiones de MySQL, estas variables todavía no existían (por ejemplo, la variable CHARACTER_SET_CLIENT solo está disponible a partir de la versión 5 de MySQL).

Para evitar este error, o bien actualizamos a una versión más reciente el sevidor MySQL (que ya iría siendo hora…) si tenemos tiempo y nos es posible, o sino borramos estas sentencias conflictivas. Si elegimos borrar las sentencias, hay que tener en cuenta que también tendremos que borrar las instrucciones del final del fichero, donde se reestablecen los valores que estas variables tenían antes de la importación.

Las sentencias del inicio del documento:

Las del final del documento:

Despues de haber hecho estas modificaciones en el fichero .SQL de la importación, probamos de hacer la importación de nuevo, y ahora ya no nos dará ningún error.

Formatos de fechas en MySQL

Pasar de String a Date:

Pasar de Date a String en un formato concreto:

En el segundo parámetro, que corresponde al formato en que se representará la fecha, pueden usarse todos los tokens listados en http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#func…

Conversión de Timestamp a Date:

donde dateReceived es un camp de la tabla m de tipo TIMESTAMP.

Conversión de Timestamp a String:

Intervalos

En este ejemplo hacemos una lista de la tabla X de los registros subidos en los últimos 7 días: