martes, 29 de diciembre de 2009

Reiniciar Plesk (cualquier versión)

Desde la linea de comandos, escribir :

# /etc/init.d/psa stop
# /etc/init.d/psa start

sábado, 26 de diciembre de 2009

Volcado de bases de datos con MySQL

Estos son los comandos que yo uso:

mysqldump --opt --password --user=myuser mydatabase > filename.sql
gzip filename.sql

Y para volcar de nuevo los datos:

gunzip filename.sql
mysql --password --user=myuser mydatabase < filename.sql

sábado, 17 de octubre de 2009

cambiar el propietario de un enlace simbólico

Para cambiar el propietario de un enlace simbólico (symbolic link) has de poner el parámetro -h.

Si haces

chown user.group linkname

cambiarás el propietario del fichero al que apunta el enlace, no del enlace en sí.

Si haces

chown -h user.group linkname

cambiarás el propietario del link mismo.

Esto es útil si quieres hacer que el directorio httpdocs de un virtual host de plesk apunte a otro lugar, ya que sólo root puede crear archivos en /var/www/vhosts/dominio.com/ (ahí debería estar httpdocs), pero como el apache se ejecuta con el nombre de usuario del dominio en particular saldrá un error de permisos si el link simbólico no es legible o propiedad de ese usuario.

crear un repositorio SVN para acceder por webdav

Lo primero es crear el repositorio de subversion y darle permisos de escritura:

mkdir /var/svn/domain.com
chmod -R 777 /var/svn/domain.com
svnadmin create /var/svn/domain.com

Luego hay que crear el acceso desde apache. Para ello, editamos la configuración. En caso de Plesk 9 con CentOS hay que modificar este archivo (notar que utilizo un solo subdominio del tipo svn.midominiobase.com para acceder a todos mis repositorios de SVN):

cd /var/svn/
svnadmin create domain.com
htpasswd -c /etc/svn-auth-file user1
htpasswd /etc/svn-auth-file user2
cd /var/www/vhosts/basedomain.com/subdomains/svn/conf/
vi vhost.conf

añadir:

<location>
DAV svn
SVNPath /var/svn/domain.com/
AuthType Basic
AuthName "domain.com Subversion Repository"
AuthUserFile /etc/svn-auth-file
Require user user1 user2
</location>


y finalmente

/etc/init.d/httpd restart

miércoles, 23 de septiembre de 2009

modificar configuración de apache en Plesk

Como Plesk modifica los archivos de configuración de apache automáticamente, no es bueno hacer cambios de apache, como cambiar el open_basedir o configurar webdav para un subversion, usando los archivos de configuración que encuentres ya creados.

Has de crear uno en la ruta /var/www/vhosts/dominio.com/conf/vhost.conf
o si es un subdominio /var/www/vhosts/dominio.com/subdomains/subdomain/conf/vhost.conf

Por ejemplo, para acabar con el horrible error "open_basedir restriction" si quieres poner fuera de la carpeta pública tu código, añade esto:

<Directory /var/www/vhosts/dominio.com/httpdocs>
php_admin_flag engine on
php_admin_value open_basedir "/var/www/vhosts/dominio.com/httpdocs:/var/www/vhosts/dominio.com/directorio_privado:/tmp"
</Directory>


Pero la primera vez no funcionará hasta que plesk regenere sus archivos de configuración. Esto es porque Plesk necesita hacer un link en el httpd.include que hay en esa misma carpeta, de manera que lea el archivo. La mejor manera de conseguir que apache lea ese archivo es diciendo a Plesk que escanee tu directorio de conf/ en busca de tus vhost.conf, y eso lo puedes conseguir ejecutando el comando:

# /usr/local/psa/admin/sbin/websrvmng -u --vhost-name=dominio.com

Y luego, por supuesto, reiniciando el apache:

# /etc/init.d/httpd restart

Si quieres instalar subversion, mira este link (en inglés)

viernes, 11 de septiembre de 2009

Migrando de Plesk 8 a plesk 9

Esta es una nota para acordarme de los comandos de consola del proceso de migración de plesk 8 a 9:


(en el VIEJO servidor)
# /usr/local/psa/bin/pleskbackup domains dominio.com dominio.psa
(una vez hecho esto movemos por scp el archivo y vamos al nuevo)
(en el NUEVO servidor)
# /usr/local/psa/bin/pre9-backup-convert -v convert -d /var/lib/psa/dumps/ dominio.psa
# /usr/local/psa/bin/pleskrestore --restore /var/lib/psa/dumps/domains/dominio.com/converted_dominio.com_info_XXX.xml -level domains -debug


* Acuérdate de añadir la IP del viejo dominio al nuevo servidor, temporalmente, para que plesk pueda hacer la migración. Luego, si es necesario, cambias la IP a la nueva y listos.

lunes, 3 de agosto de 2009

Debug activo en elpais.com

Los desarrolladores de elpais.com se han dejado activado por un momento este debug que parece el típico var_dump() de PHP. Al menos parece que no muestra mucha información relevante para ataques: sólo unas cuantas rutas internas a archivos xml :-)


En todas partes cuecen habas jajaja






domingo, 5 de julio de 2009

domingo, 28 de junio de 2009

Cómo mejorar el reloj de la barra de menús de Mac OS X Leopard

reloj básico

Esto es lo máximo que he conseguido al configurar el reloj desde las preferencias del sistema de mi Mac. Es extraño que el reloj de Windows sea más configurable que el de Mac, pero entonces encontré una aplicación (hay varias) gratis que instala un reloj mucho más configurable: Eigenclock.

Para instalarla sólo te has de bajar el programa que encontrarás en la web (o en este enlace) y tras "montar el instalador", como con cualquier otro software, arrastrar la aplicación a tu carpeta de aplicaciones.

Luego tienes que ir a Preferencias del Sistema > Cuentas y decirle a tu Mac que quieres que arranque ese programa cada vez que inicies sesión:

preferencias del sistema cuentas

Ahora sólo queda abrir la aplicación eigenclock"" y configurarla

abrir aplicación

configurando

ACTUALIZADO: Todo esto y mucho más y más fácil de instalar en la aplicación iStat Menus

jueves, 18 de junio de 2009

Cómo activar el tethering con el iPhone 3G de movistar

Tethering es compartir la conexión 3G de tu móvil con otro dispositivo (como un laptop o un PC) a través de USB, bluetooth u otra conexión parecida.

Cuando ayer actualicé a las versión 3.0 del S.O. del iPhone, al cabo de un rato el iTunes me avisó de que había configuraciones de mi operador pendientes de instalar. Las instalé.

Luego busqué en los menús de configuración y encontré el botón para activar "compartir conexión" o tethering. Os paso las pantallas a seguir:














Una vez hecho esto, al enchufar el iPhone por USB a mi iMac me indicó que un módem se había conectando y se conectó a Internet a través del iPhone automáticamente.

Mientras estaba conectado, la cabecera del iPhone se volvió azul y mostró este mensaje: "Compartir Internet".



Si activas la opción bluetooth también te puedes conectar. Esta vez lo he probado desde el DELL laptop. Al conectarme a mi iphone



Me pide un PIN (escribo algo en el PC y doy a aceptar, luego escribo lo mismo en el iPhone cuando me lo pide) y ya estoy conectado de nuevo!

Genial!

lunes, 25 de mayo de 2009

Lista de dominios e IPs en Plesk

Si usas Plesk y quieres un listado de todos tus dominios y la IP que utilizan, sólo tienes que ejecutar esta consulta desde un cliente mysql con un usuarios que tenga permisos de lectura a la base de datos psa (es la base de datos de plesk), por ejemplo, usa como usuario las mismas credenciales que tu "superadmin" de plesk.


SELECT i.ip_address, d.name FROM psa.hosting AS h
LEFT JOIN psa.domains AS d ON h.dom_id = d.id
LEFT JOIN psa.IP_Addresses AS i ON h.ip_address_id = i.id;


Si lo que quieres es un resumen con todas las IPS, el número de dominios que usan y un dominio de ejemplo, usa esta consulta


SELECT i.ip_address, COUNT(d.name) AS dominios, d.name AS uno FROM psa.hosting AS h
LEFT JOIN psa.domains AS d ON h.dom_id = d.id
LEFT JOIN psa.IP_Addresses AS i ON h.ip_address_id = i.id
GROUP BY h.ip_address_id
ORDER BY h.ip_address_id, d.name

martes, 28 de abril de 2009

Informe SEO evolución diaria

Por fin @ollorente y yo lanzamos el último proyecto en el que he estado metido: seofollow.com

Con este servicio podrás ver un informe gratuito y bastante completo de las variables SEO de tu web:

  • Google Page Rank
  • Google indexed pages
  • Google indexed images
  • Yahoo indexed pages
  • Yahoo inlinks
  • Yahoo inlinks to home
  • Live! indexed pages
  • Alexa Ranking
  • Digg
  • Mister Wong

    ¿Otra web de informes SEO? ¡No! Hemos hecho algo nuevo: la primera vez que generas un informe sobre un dominio, lo almacenamos y cada noche recuperamos las variables SEO de todos los dominios almacenados, de manera que cuando vuelvas a ver el informe, habremos hecho un seguimiento diario de la evolución de tu web.

    informe seofollow.com


    Pruébalo
  • miércoles, 22 de abril de 2009

    Subversion hosting

    Esta semana he tenido que analizar un montón de proveedores de hosting de proyectos
    En esta lista sólo incluyo los que ofrecen control de versiones (SVN) y gestión de proyectos (Trac, excepto XP-DEV que tiene el suyo propio)
    Los precios están en dólares americanos y a veces son aproximaciones, pero sirven para comparar unos planes con otros.
    Parece que los mejores son:
    • De pago: repositoryhosting.com, por cierto, su web es muy chula, aunque parecen muy nuevos en esto y no se los ve estables

    • Gratis: XP-dev.com, una pena que no usen trac, que es estándar, ya que su sistema de gestión de tareas deja mucho que desear

    ¿Me he dejado alguno? ¿Cuáles preferís vosotros?

    NombrePlan$/mesGBcoste / GBReposTracUsers
    svnrepository.comOne$40,5$811
    svnrepository.comTwo$71,0$7
    hosted-projects.comdeveloper$70,1$70
    hosted-projects.comteam$151,0$15
    projectlocker.comfree$00,3$0??2
    projectlocker.comangel$53,0$2??5
    avlux.netEntrepreneur$250,5$50??
    eurosvn.comPersonal$60,2$3011
    eurosvn.comTeam$131,0$1311
    projecthut.comdeveloper$100,2$501010
    projecthut.comteam$201,0$205050
    wush.netprofessional$155,0$311
    prosvn.orgTiny$60,2$30313
    prosvn.orgNormal$80,6$13616
    devguard.comIndividual$70,2$35201
    devguard.comdeveloper$150,4$38501
    devguard.comprofessional$200,8$251001
    repositoryhosting.comone$62,0$3
    xp-dev.comfree$00,5$0∞*
    xp-dev.compro$42,0$2∞*

    viernes, 17 de abril de 2009

    Reemplazar enlaces relativos por absolutos parseando con PHP

    Tenía un problema: parseando el HTML de una página, necesitaba que las url de las imágenes, estilos y javascript fueran absolutos (al ponerlo en otro dominio). Como añadido, vi que algunas sí que tenían "path" absoluto, así que no podía hacer un reemplazar básico.

    Estrujándome el cerebro saqué esta expresión regular que comparto. ¿Alguna mejora?
    $html = 
    preg_replace(
    "#((src|href)=\")(http:\/\/www\.ejemplo\.com\/)?([^\"]+)#",
    '${1}http://www.ejemplo.com/${4}',
    $html);

    domingo, 1 de marzo de 2009

    Desbloquear recursivamente archivos en Mac OSX

    Si copias archivos de un CD o un disco NTFS o cualquier sistema de archivos en el que los archivos estén bloqueados (modo lectura), tendrás que hacer click con el botón derecho > mostrar información y desmarcar la casilla "Bloqueado".

    Si son muchos archivos o subcarpetas no funcionará por herencia, por lo que has de ejecutar:

    chflags -R nouchg *

    cuando estés en el directorio en cuestión.

    sábado, 21 de febrero de 2009

    Creando dominios de desarrollo en local (con Mac OSX)

    Cuando trabajas una web en local conviene mucho poder acceder a ella a través de un dominio "falso". Lo que yo hago es configurar los mismos dominios de verdad, pero acabados en .lan

    Para ello edito /etc/hosts (previo sudo su, porque requiere permisos de root) añadiendo la linea

    172.0.0.1 www.ejemplo.lan


    Luego añado un virtualhost al apache, que responda a ese dominio y apunte al directorio donde esté el código:

    NameVirtualHost *:80

    <VirtualHost *:80>

    ServerName localhost

    DocumentRoot "/Users/user/Sites/"

    </VirtualHost>


    <VirtualHost *:80>

    ServerName www.ejemplo.lan

    DocumentRoot "/Users/user/Sites/www.ejemplo.lan/httpdocs"

    ServerAlias ejemplo.lan

    ErrorLog "logs/ejemplo-error_log"

    CustomLog "logs/ejemplo-access_log" common

    </VirtualHost>



    Puedes hacer esto para cada dominio, pero recuerda que en /etc/hosts no debes añadir una línea para cada uno, sino ponerlos detrás del último dominio, separados por un espacio. Tampoco puedes usar willcards (comodín o *)

    172.0.0.1 www.ejemplo.lan ejemplo.lan otra-web.lan www.otra-web.lan

    lunes, 9 de febrero de 2009

    Desactivando el "diseño de lectura" o "vista previa" de Word

    Para empezar: el problema.

    A veces abres un documento de word y sale en una vista extraña, que no corresponde exactamente a la vista de impresión que estás acostumbrado a usar. Desaparecen los iconos de formato, entre otras cosas.

    Solución temporal: Darle al botón cerrar en medio de la barra de botones (aparece junto con un libro abierto) o ir al menú > ver > diseño de impresión.

    Causa: ¡la culpa es de Outlook! Si te fijas, sólo pasa eso cuando abres un adjunto de outook.

    Solución permanente: En Word, entra en Herramientas > Opciones > General y desactiva la marca en "permitir el inicio en diseño lectura"

    viernes, 6 de febrero de 2009

    MySQL query cache

    Vale: ya tienes tu web subversionada y con un sistema para hacer deploys en producción.
    ¿Qué necesitas ahora? Un DEBUG! Tienes que ver cuánto tiempo tarda en cargarse la página. Menos de medio segundo está bien y menos de un segundo es razonable... si tarda más, mira dónde falla.

    Pon contadores usando microtime() en diversos puntos de la página

    list($usec, $sec) = explode(' ',microtime());
    $cronometro['punto de interés 1'] = ((float)$usec + (float)$sec);


    Reescribe o cachea las partes del código que tarden más

    Y registra el tiempo que tarda cada consulta de MySQL. Si ves que hay consultas lentas usa EXPLAIN para ver por qué son lentas. Si no puedes optimizarlas y se repiten a menudo, asegúrate de que tu servidor de MySQL tiene la query_cache activada (SHOW VARIABLES LIKE 'query_cache_size'; tiene que ser > 0).

    Si no está activa, usa SET GLOBAL query_cache_size = 524288; para activarla. Le he puesto 512 MB de RAM asignada a la query cache: si no tienes un servidor dedicado no sé si podrás hacer esto :-)

    Es INCREÍBLE el efecto que esto tiene sobre el rendimiento.

    OJO! al hacer cualquier ALTER, INSERT o UPDATE de la tabla se pierde la caché. Así que si usabas algún campo "hits" para registrar accesos a páginas de la web o similar, ya estás normalizando eso y poniéndolo en otra tabla por separado.

    sábado, 31 de enero de 2009

    no subir archivos de subversion a la carpeta pública

    Si trabajas con Subversion (deberías! http://subversion.tigris.org y para trabajar en equipo, http://xp-dev.com) y haces "deployments" en el servidor público de tu código, ve con cuidado de no subir las carpetas .svn donde subversion guarda información de los archivos.

    Podría delatarte, aunque sólo hay nombres de archivo y alguna cosa más, como la URL de tu repositorio, pero eso ya es un peligro.

    La cuestión es que en todos los sistemas operativos te oculta esas carpetas y, depende cómo subas tus archivos a producción puede jugarte una mala pasada.

    Yo te recomiendo que en el servidor público no hagas un checkout ni un update, sino un export: problema solucionado.
    svn export --force http://servidor-de-subversion/repositorio carpeta_pública


    Pero si no puedes ejecutar subversion en el servidor público (suele pasar en muchos casos salvo que tengas un servidor dedicado) tendrás que ejecutar este comando en la shell (si tienes acceso, claro)
    find ./ -name ".svn" | xargs rm -Rf

    Si ni siquiera tienes acceso a shell (terminal), puedes probar de usar la opción de ocultación de tu cliente FTP favorito. En el caso de dreamweaver, en "administrar sitios", selecciona el sitio, dale a "editar...", luego a "ocultación". Ahí marca "activar ocultación" y "ocultar archivos que terminen en:". Rellena (separando por espacios) el siguiente campo con las extensiones que no quieres subir: por ejemplo ".fla .psd .svn" (fíjate que he añadido .svn, que no es la extensión, sino la terminación del nombre de la carpeta).

    Cambia de formato tus videos...

    He aquí una de esas aplicaciones imprescindibles que cualquier usuario tiene que tener instalada en un ordenador, un conversor de formatos para vídeo...

    Esta aplicación se llama MPEG Streamclip. Esta disponible tanto para PC como para MAC.

    Ocupa menos de 2 Megas, y es GRATIS!!!

    Puedes convertir casi cualquier formato de vídeo y DVD, a quicktime, mpeg, avi, flv, mp4, etc... con solo un clic de ratón... extraer el audio a los ficheros de vídeo... y para lo más experimentados en video, te permite ajustar el tamaño,el bitrate y otra multitud de opciones.

    Ya no hay excusa para llevar tu videoclips y vídeos favoritos en tu iPhone o iPod!!

    Plugin para descargar Videos de Internet

    He aquí una de esas complementos para Firefox, que aumentará tu videoteca exponencialmente...

    Sothink video downloader para Firefox... sí también hay una versión para los usuarios de Internet Explorer...

    Funciona tanto en Mac como en Windows, y una vez instalado, aparece un icono en barra superior de Firefox que aumenta exponencialmente cada vez que visitas una web con algún vídeo en ella, guardando las rutas de los vídeos para posteriormente, seleccionar la opción de descargar y verlos en su ordenador una y otra vez!!

    Captura casi cualquier formato de Video, FLV, mov, wmv, etc...

    Pues eso espero que os sirva de ayuda, y a descargar Vídeos!!!

    lunes, 26 de enero de 2009

    requerir las www en tu web mediante htaccess

    si tienes acceso para crear un htaccess en la raiz de tu carpeta pública de apache y está activado mod_rewrite, sólo tienes que poner


    RewriteCond %{http_host} ^example\.com [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

    Todo el que lo escriba sin www. será redirigido con un 301 a la opción CON www.

    sábado, 24 de enero de 2009

    Collations y encodes en MySQL

    Ahora que empiezas un nuevo proyecto, hazte un favor y usa UTF-8. Por cierto, desde 1994 la Asociación de Academias de la Lengua Española decidió que la CH y la LL no se tienen en cuenta como letras propias al ordenar el diccionario, por lo que la COLLATION adecuada en español es utf8_spanish_ci y NO utf8_spanish2_ci. Curiosamente, el Diccionario de la Real Academia ordenó la CH después de la C desde 1803 hasta 1994... unos poquitos años.

    ¿No sabes qué es una codificación de caracteres? ¿No sabes qué es una collation?
    http://dev.mysql.com/doc/refman/5.0/en/charset.html

    Aquí hay una buena lista de todas las collation y sus ordenaciones alfabéticas:
    http://www.collation-charts.org/mysql60/by-charset.html

    ¿Problemas buscando cosas con eñes u ordinales (º, ª)...? Usa COLLATE utf8_bin. Si no lo usas, al buscar "º" te encontrará "º" y "o" y "ó" y "Ò"... Por ejemplo:

    SELECT * FROM table
    WHERE field COLLATE utf8_bin LIKE '%º%';