8 de septiembre de 2013

Separador de miles en Bash

Usar printf.

Aqui un par de links que lo explica:
http://www.rokerias.com/2013/06/imprimir-separador-de-miles-en-bash.html
http://linux.about.com/library/cmd/blcmdl3_printf.htm

jQuery: un toolkit de JavaScript

Un objetivo que tengo es aplicar JavaScript a página web www.pedeefes.com para aumentar su interactividad y capacidad de respuesta con los usuarios.

Como es habitual en el actual mundo web, los temas de diseño son críticos y para optimizar el tiempo empleado y el resultado obtenido hay que acudir a frameworks o toolkits que hagan mas productiva la tarea de programación .


Uno de los que mas desarrollo y expansión esta teniendo es jQuery.

Mas que un framework se trata de un toolkit que hace mucho mas llevadera la programación de efectos gráficos e interactividad con el usuario basado en JavaScript.

Su lema: Escribir menos, hacer mas, realmente se cumple.
Aunque finalmente siempre es necesario escribir algo de código en JavaScript, el trabajo duro lo realiza jQuery con una sintaxis sencilla y una enorme potencia.

La curva de aprendizaje es rápida y se puede comenzar sin saber nada de JavaScript o mejor dicho, ir aprendiendo los fundamentos de JavaScript al mismo tiempo.

También es necesario tener conocimientos de HTML, CSS y DOM para sacar el máximo partido a jQuery.

En cuanto a bibliografia os remito a www.pedeefes.com donde podréis encontrar numerosos pedeefes sobre jquery, javascript, html, css3, y muchas muchas cosas mas.

23 de agosto de 2013

Cambiar el UUID de un disco virtual .vdi de Virtual Box

Cuando hago una copia de un disco virtual e intento arrancarla en una nueva máquina virtual con Virtual Box, aparece un error diciendo que el UUID del disco ya existe.

Para solucionar esto podemos cambiar la UUID del disco virtual .vdi copiado con el siguiete comando desde MS-DOS:


C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands sethduuid "C:\HDfile.vdi"
UUID changed to: 1727a910-2037-4d8d-866b-ae6d52c5a6cd

y problema resuelto.

Python: ejecutando comandos linux

Para ejecutar comandos de Linux desde Python podemos usar los módulos os y commands.

Con os se ejecuta el comando ls y retorna un bit de ejecución, no el resultado del comando:

import os
out = os.system("ls")



Si necesitamos el resultado del comando linux ejecutado usar commands:

import commands
out = commands.getoutput("ls")

18 de agosto de 2013

Colorizando Scripts en Php CLI ... y en Bash

Salida en color para script en php cli:

#!/usr/bin/php
echo "\033[31m Texto en color rojo \033[0m\n";
die;

\033[0m : vuelve el color de la consola al color por defecto, importante!! ya que si no se pone cambias el color de la consola al salir del script.

el número XX de los códigos \033[XXm determinal el color y formato del texto según esta tabla:
Style           Foreground      Background
1st Digit       2nd Digit       3rd Digit
0 - Reset       30 - Black      40 - Black
1 - FG Bright   31 - Red        41 - Red
2 - Unknown     32 - Green      42 - Green
3 - Unknown     33 - Yellow     43 - Yellow
4 - Underline   34 - Blue       44 - Blue
5 - BG Bright   35 - Magenta    45 - Magenta
6 - Unknown     36 - Cyan       46 - Cyan
7 - Reverse     37 - White      47 - White

Pudiendo combinarlos, por ejemplo: fondo blanco, texto negro: \033[30;47m


Y ya que estamos ...esto es aplicable para Colorizar Bash Scripts:

#!/bin/bash
echo -en "\033[31m Texto en color rojo \033[0m\n"
echo -en "\033[30;47m Negro sobre Blanco \033[0m\n"


Para añadir un poco de color a nuestras vidas en CommandLine !!!

Ref.:
http://ubuntulife.wordpress.com/2011/04/10/los-codigos-de-color-en-bash/
http://praxis.edoceo.com/howto/bash


13 de agosto de 2013

Eliminando los banners del sevidor apache2

Editar el archivo:


# nano /etc/apache2/conf.d/security

y descomentar solo las lineas:


ServerTokens Minimal
ServerSignature Off
TraceEnable Off


y reiniciar apache2

# service apache2 restart


Ahora ya no aparecerán banners con información del servidor apache2 ni del sistema operativo de la máquina al producirse algún error.

Ref.:
http://www.securityartwork.es/2012/02/22/bastionado-de-un-servidor-web-apache-i/ 

12 de agosto de 2013

Python: letra ñ de UTF-8 a LATIN-1

En un script en Python con codificación UTF-8, necesito la letra 'ñ' con codificación Latin-1 ...

¿Como paso la letra ñ de UTF-8 a Latin-1?

#!/usr/bin/python
# -*- encoding: utf-8 -*-

enieUtf8 = 'ñ'
enieLat1 = 'ñ'.decode("utf-8").encode("latin1","ignore")


Por supuesto que la letra 'ñ' del script se puede sustituir por cualquier otro caracter o variable para su recodificación en Latin-1.

11 de agosto de 2013

Cambiar directorio de MySQL y apparmor

En la entrada de misnotaslinux:
Bases de datos MySQL distribuidas en memoria USB
describía una técnica muy sencilla, que había utilizado con éxito para cambiar los directorios de trabajo de las bases de datos de MySQL, pudiendo alojarlos en memorias USB u otras unidades de disco.

Al intentar esto en mi nanoservidor domo, con Xubuntu 13.04: NO ha funcionado.

La razón es que Xubuntu tiene activado apparmor, que es un sistema de seguridad que bloquea el uso irregular de directorios extraños.

Al intentar cambiar el directorio de trabajo de MySQL a otra unidad, direccionándolo mediante un enlace, appArmor no lo permite.

Apparmor esta en SuSe y Ubuntu.

Protocolo:

# cp -a /var/lib/mysql /mnt/otraunidad
# mv /var/lib/mysql /var/lib/mysql.bck
# ln -s /mnt/otraunidad/mysql mysql
# service restart mysql

... esto no funciona a no ser que inactivemos appArmor para mysqld.

Solución 01:
# aptitude install apparmor-utils
# aa-complain /usr/sbin/mysqld
# service apparmor restart
# service mysql restart

.. y ahora funciona mysql usando como directorio de trabajo /mnt/otraunidad/mysql

Con aa-complain hemos cambiado el protocolo de appArmor para mysqld y no lo bloquea sino que solo logea cuando ve algún comportamiento sospechoso como usar una directorio de trabajo diferente.

Solución 02:
Cambiar el perfil apparmor para mysqld:

# nano /etc/apparmor.d/usr.sbin.mysqld

añadimos las siguientes reglas para la nueva localización de la carpeta de MySQL:

  /mnt/otraunidad/mysql/ r,
 /mnt/otraunidad/mysql/** rwk,

# service apparmor restart
# service mysql restart

Esta solución es mas elegante ya que no desactivas las medidas de seguridad de appArmor para MySQL.

Ref:
Cambiar ruta de MySQL con apparmor: http://www.ubuntu-es.org/node/113525#.UgbW6dJ7LzY

8 de agosto de 2013

Python: Encoding UTF8

Si en los scripts Python utilizas acentos, eñes u otros caacteres no ASCII me aparecen el error:

SyntaxError: Non-ASCII character '\xc3' in file ./yourPytonScript.py  line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details


Para solucionarlo hay que indicar el encoding al principio del script python

#!/usr/bin/python
# -*- encoding: utf-8 -*-
...

Ref.:

3 de agosto de 2013

Python: fecha y hora actual

#!/usr/bin/python
import datetime
now = datetime.datetime.now()
print now

Result:
2013-08-03 01:32:27.711721


Para formatear la salida de la fecha:

import time
datetime.datetime.now().strftime('%d/%m/%Y')

Ref.:
http://www.pythonforbeginners.com/basics/python-datetime-time-examples/
http://www.tutorialspoint.com/python/time_strftime.htm