2016-04-18

Tablas con div, evitar el doble borde en celdas

Cuando tienes que mostrar datos tabulados lo normal es elegir maquetarlas con tablas pero éstas no se comportan bien en dispositivos móviles de pantalla pequeña. hay diversas soluciones pero ninguna me convence cuando se trata de pantallas de 320 píxeles.
Me puse manos a la obra a hacer la tabla con divs y al principio me salía un borde dos veces pero eso con css lo pude solucionar.




<div class="table"> <div class="rowtable"> <div class="cell">Date</div> <div class="cell">Sun, 21 Feb 2016 08:25:29 GMT</div> <div class="cell">data</div> </div> <div class="rowtable"> <div class="cell">Date</div> <div class="cell">Sun, 21 Feb 2016 08:25:29 GMT</div> <div class="cell">data</div> </div> <div class="rowtable"> <div class="cell">Date</div> <div class="cell">Sun, 21 Feb 2016 08:25:29 GMT</div> <div class="cell">data</div> </div> </div> Este sería el css, incluido el responsive que evita el doble borde en algunas celdas de la tabla: /* Tables */ .table { display: table; } .rowtable { display: table-row; } .rowtable:nth-child(odd){ background: #f9f9f9; } .cell:nth-child(odd){ width:25%; } .cell{ border: 1px solid #ddd; border-left: none; border-bottom:none; padding: 8px; vertical-align: top; display: table-cell; } .cell:first-child { border-left: 1px solid #ddd; } .rowtable:last-child .cell{ border-bottom: 1px solid #ddd; } /* End Tables */ /* Media Queries */ @media screen and (max-width: 480px) { .cell{ width:100%; display:inline-block; border-left: 1px solid #ddd; } .cell:nth-child(odd){ width:100%; } } } /* End Media Queries */ Lo he comprobado con dos y tres columnas y no he visto ningún problema.

2016-03-15

Chequear coincidencias en las lineas de dos archivos de texto

Tenía el siguiente problema:

Dos archivos de texto cada uno con entre 7 y 9 millones de registros de datos y no sabía si parte de los registros de A estaban en B. Quería saber los registros que estaban en A y no estaban en B para sumarlos a B.

Comprobarlo en mysql me resultaba imposible por lo que tardaba.

Probé desde la consola de linux:

grep -Fvf archivo1.txt archivo2.txt>/home/usuario/noestan.txt 

y se quedaba sin memoria.

Probé este archivo de linux haciendo que el archivo1 tuviera sólo 1000 líneas y así pronosticar cuanto tardaría con los 7 millones de líneas:


file1=open("C:\\Users\\carlos\\Documents\\de\\archivo1.txt","r")
file2=open("C:\\Users\\carlos\\Documents\\de\\archivo2.txt","r")
file3=open("C:\\Users\\carlos\\Documents\\de\\noestan.txt","w")
lines1=file1.readlines()
lines2=file2.readlines()
encontrado=0
for line1 in lines1:
for line2 in lines2:
if line1==line2:
encontrado2=1
if encontrado2==0:
print(line1)
file3.write(line1)
encontrado2=0
# Cerrar archivos abiertos
file1.close()
file2.close()
file3.close()
El resultado fue que tardaría más de 400 días...

Así que probé con sets:

import time
start = time.time()
file1=open("C:\\Users\\carlos\\Documents\\de\\archivo1.txt","r")
file2=open("C:\\Users\\carlos\\Documents\\de\\archivo2.txt","r")
file3=open("C:\\Users\\carlos\\Documents\\de\\noestan.txt","w")
data2   = set(file2.read().splitlines())
data1   = set(file1.read().splitlines())
for list in data1:
if list not in data2:
file3.write(list)
file3.write('\n')
# Close opend file
file1.close()
file2.close()
file3.close()
end = time.time()
print(end - start)


Y el resultado fue que tardó 12 segundos. Lo peor fue que todos los registros de A estaban en B por lo que me servirá para otra vez pero no para esta. Metí algún resultado falso en A para ver que realmente funcionaba y si.



2016-02-22

Recetas para Mysql

Estas son algunas recetas para el mantenimiento de bases de datos que utilizo. Igual solo lo utilizo dos veces al año.. por eso nunca recuerdo a la perfección el sql necesario. No es algo que haga todos los días.


Exportar en formato csv directamente desde mysql:

SELECT id, name, email INTO OUTFILE '/tmp/result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ‘\\’
LINES TERMINATED BY '\n'
FROM users WHERE 1

Importar sql comprimido con gunzip a Mysql:

zcat /home/usuario/database-backup/data.sql.gz | mysql -u usuario -p nombre_base_de_datos


Exportar base de datos

mysqldump --opt -u usuario -p nombre_BD> /ruta/documentos/archivo.sql 

Importar csv a una tabla:

LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

2015-11-12

Failed to connect to FTP Server localhost:21

wordpress
A veces por querer tener un hosting en un sitio distinto al habitual pasa que los chicos del hosting no han hecho los deberes pertinentes o es posible que no sepan hacerlos.

 El caso es que tenemos un blog en un país paraíso fiscal al que no se puede actualizar ni siquiera los plugins ya que el usuario de instalación no tiene permisos. Para actualizar wordpress solía subir por ftp los archivos. Hay una solución mejor. Consiste en definir varias cosas en el archivo de configuración de wordpress wp-config.php:
define('FS_METHOD', 'ftpext');

define('FTP_BASE', 'ruta');

define('FTP_USER', 'usuario');

define('FTP_PASS', 'contraseña');

//define('FTP_HOST', 'localhost');

define('FTP_HOST', 'ip_del_servidor:21');

define('FTP_SSL', false);

define('WP_MEMORY_LIMIT', '128M');
Básicamente el truco consiste en poner la ip del servidor donde está alojado, dos puntos y el puerto de conexión. Normalmente el 21. A nosotros nos ha funcionado y se actualizan los plugins de una forma normal.

2015-06-02

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

Con este error me encuentro cuando hago un reboot.

Al parecer esta orden no cierra adecuadamente los progrmas en uso y por eso luego Mysql falla.

Si cuando vas a reiniciar el servicio con

sudo /etc/init.d/mysql restart

Ves que  falla

tail -200 /var/log/mysql/error.log

Debes analizar los errores que te salen y ver que sucede.

En mi último caso es que había cambiadao los permisos de la carpeta /tmp y no podía escribir allí un fichero temporal.


2015-05-12

Cambiar el puerto ssh de tu VPS o servidor

Si analizas las entradas a tu servidor verás que hay  miles de peticiones al día con el único propósito de entrar clandestinamente en tu equipo.

Normalmente para acceder a tu servidor se utiliza el puerto por eso si tecleas

netstat -lnptu


verás que se está escuchando en ese puerto 22

Una forma adicional de mejorar la seguridad de nuestro servidor o VPS coniste en modificar este puerto hacia otro que no esté ya siendo utilizado. De esa forma te evitas miles de intentos de entrar.

Lom que debes hacer es cambiar ese puerto y reiniciar posteriormente els ervicio de ssh. Veamos los pasos


vi /etc/ssh/sshd_config

o

nano /etc/ssh/sshd_config 

una vez allí verásalgo como esto:

# What ports, IPs and protocols we listen for
Port 22
 

 



Donde pone 22 deberás poner otro número. Lo normal sería poner un número entre el 49152 y el 65535 que son puertos disponibles. Como te he indicado antes mira primero que puertos están siendo ocupados.

Guardas el archivo y entonces reinicias el ssh:

A mi me funciona este:

service ssh restart

Pero en otros equipos os puede funcionar este otro:

/etc/init.d/ssh restart

service sshd restart


Con esto ya tenéis todo cambiado

Se comprueba con el comando  netstat -lnptu que está todo bien.

Entonces y sólo entonces puedes salir de la consola. Por si acaso abre otra consola y trata de entrar con la nueva configuración:

ssh root@ip -p puerto

Ahora deberás añadir el puerto siempre que te conectes

Ni que decir tiene que si tienes aplicaciones que utilizan ssh como scp o rsync también lo deberás añadir.

Ya tienes tu servidor un poco más seguro. También estaría bien que el usuario root no pudiera ser accesible vía ssh. 

 


 

2015-04-29

Convertir los videos de una carpeta a mp3 Bandcamp

Pues nada, me bajé las canciones del grupo Rajoy Division de bandcamp.com y venían en formato mpeg. Así que para no tener problemas en algunos reproductores lo he convertido a mp3 de una tirada todos los elementos de video de una carpeta:
for i in *.mpeg;
do name=`echo $i | cut -d'.' -f1`;
echo $name;
ffmpeg -i $i $name.mp3;
done