Black log

Archivo para December, 2009

Para cargar una extensión en tiempo de ejecución en php, tenemos la función dl();

Para cargar por ejemplo la extensión para conectarse a una base de datos mysql haríamos:

if(!extension_loaded("mysql")){
  dl("php_mysql.".PHP_SHLIB_SUFFIX);
}

El valor de la constante PHP_SHLIB_SUFFIX almacena la extensión que tendría una librería dependiendo el sistema operativo en el que corra nuestra aplicación.

Saludos, Asier Marqués

1 comentario | Archivado como Desarrollo web | 24/12/2009

Disponible el SDK para Powershell 2.0

Escrito por admin el 23-12-2009

Microsoft ha publicado la descarga del sdk para powershell 2.0, viene con ejemplos de código y documentación en los que se muestra cómo atacar a las diferentes APIs de powershell, y como usar características como acceso remoto, eventing, transactions y jobs en tus aplicaciones.

Sin comentarios | Archivado como Sistemas TI | 23/12/2009

Algunas veces disponemos de un array que contiene a su vez varios arrays asociativos, que contienen por ejemplo datos obtenidos tras una consulta a la base de datos.

Puede que dicho array esté cacheado y no queramos atacar a la base de datos para ordenar esos resultados, por lo que nos vendría genial poder ordenar los arrays asociativos que contenga dicho array, en base a los valores que contenga una de las claves de los mismos.

Lo vemos más claro en un ejemplo. Tenemos el siguiente array:


$resultados = array(

array(

      'id' => 1,
      'nombre' => 'Enjuto',
      'apellido' => 'Mojamuto'

     ),

array(

      'id' => 2,
      'nombre'  => 'Marlo',
      'apellido'  => 'Brando'

     )

);

En php disponemos de la función usort(), que ordena en base a una función de comparación que nosotros especifiquemos.

Por ejemplo si quisiéramos ordenar en base a la clave id, en orden descendiente, la función sería:


function comparar($x, $y){

          if ( $x['id'] == $y['id'] )
             return 0;
          else if ( $x['id'] > $y['id'] )
             return -1;
          else
             return 1;

}

Y ahora llamamos a usort para que utilice dicha función:


//si no estamos en un entorno Orientado a Objetos
usort($resultados, array('comparar'));

//si estamos en un entorno Orientado a Objetos
usort($resultados, array('nombreDeClase','comparar'));

9 comentarios | Archivado como Desarrollo web |

¿Por qué contratar nuestros servicios?

Escrito por admin el 22-12-2009

En Blackslot nos dedicamos a dos cosas: a la gestión de sistemas TI y el desarrollo avanzado de aplicaciones web para nuestros clientes.
Nuestro enfoque consiste en crear soluciones conjuntas o específicamente para cada uno de esas áreas sin salirnos del ámbito de internet.

Gestión de infraestructuras TI

En internet es clave disponer de una óptima infraestructura técnica de sistemas, que no sólo englobe la instalación y configuración del servidor o servidores involucrados en un proyecto. Nuestra apuesta es una gestión de sistemas en la que los profesionales encargados de administrar las infraestructuras de nuestros clientes o nuestras propias soluciones platform as a service como dedicalia.com, tengan siempre un punto de vista crítico sobre las necesidades reales que pueda tener el proyecto, ofreciendo un know-how junto a las tecnologías de desarrollo más vanguardistas disponibles en éste momento.

Desarrollo avanzado de aplicaciones para internet

Hoy en día, el desarrollo de un proyecto en internet requiere un punto de vista global que abarca más disciplinas que el diseño y desarrollo de una aplicación web. Además de contar con una buena arquitectura de software, que escale adecuadamente y sea fácilmente mantenible, nos enfrentamos con la problemática de conseguirlo haciendo un buen uso de los recursos de los que precisamos, tanto económicos como tecnológicos, tanto a medio como a largo plazo.

En Blackslot desarrollamos bajo plataformas maduras, como .net o php, haciendo uso de herramientas y frameworks como asp.net mvc y symfony que nos permiten desarrollar aplicaciones de una forma ágil, dotadas de una arquitectura sólida, escalable y de gran nivel de calidad.

Además podemos asegurar un gran nivel de estabilidad y fiabilidad tanto a medio como a largo plazo en nuestras aplicaciones, al realizar despliegues sobre nuestra propia infraestructura de sistemas. Este punto es nuestra mayor baza para poder asegurar un servicio completo y de gran calidad, sin importar lo ambicioso que pueda llegar a ser el proyecto.

1 comentario | Archivado como Desarrollo web, Nuestros servicios, Sistemas TI | 22/12/2009

Instalar WordPress desde nuestro panel de control

Escrito por Sergio Sainz el 22-12-2009

1) En  el panel de control de nuestro dominio, seleccionamos la opción Aplicaciones web.

image

2) Seleccionamos Instalar aplicación web.

image

3) Localizamos la aplicación WordPress y pinchamos en Instalar.

image

4) En este punto se revisarán los requisitos de WordPress y si falta algo, el asistente nos avisará de ello. Tendremos que resolver el problema para poder continuar.

image

Nota: Para resolver este problema de Safe Mode, visita este artículo.

5) Aceptamos el texto legal.

Hosting WordPress en Blackslot 1

6) Ahora vamos a la parte más importante del proceso de instalación.

  1. Botón personalizado para acceder a la aplicación: Creará un botón de acceso a la aplicación en el panel de control.
  2. Directorio de destino: Si queremos que el blog aparezca como página principal de nuestro dominio, entonces hay que elegir la opción Carpeta raíz (/). Esto instalará WordPress directamente en el directorio /httpdocs de nuestro alojamiento.
    Si por el contrario queremos meterlo en un subdirectorio, como http://midominio.com/wordpress le indicamos en la opción otros el lugar deseado.
  3. Servidor de la base de datos: Lo normal es dejar el que viene por defecto.
  4. Nombre de la base de datos: Autogenera un nombre bastante difícil de recordar. Se puede sustituir por algo más sencillo, lo mismo para el usuario.
  5. Contraseña: Será la del usuario que se crea para la base de datos.
  6. Administrator´s login: Será el usuario administrador de WordPress (wp-admin), es importante recordarlo, así como la contraseña que le pongamos.
  7. Weblog title: Finalemnte ponemos el título de nuestro blog y ya podemos pinchar en instalar.

Hosting WordPress en Blackslot 2

7) Una vez tenemos la aplicación instalada, podemos verla desde el panel y acceder a la misma.

Hosting WordPress en Blackslot 3

Hosting WordPress en Blackslot 4

Sin comentarios | Archivado como Nuestros servicios, Sistemas TI |

Validar un nombre de dominio en php

Escrito por admin el 22-12-2009

$domain = "blackslot.com";
$expr   = '/^(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+[a-z]{2,6}/i';

if(preg_match($expr,strtolower($domain))){
  echo "el dominio es válido";
}else{
  echo "el dominio no es válido";
}

Saludos, Asier Marqués

Sin comentarios | Archivado como Desarrollo web |

Restaurar un backup de Plesk 8 en Plesk 9.*

Escrito por Sergio Sainz el 22-12-2009

En Plesk 9 se ha modificado la forma de realizar los backups que se usaba desde Plesk 7.5 y se ha sustituido el formato en el que se almacenaban.

Por tanto, para poder restaurar un backup de una versión antigua de Plesk, antes es necesario convertirlo a un formato que la nueva versión pueda manejar. Vamos a ello:

1. Sino tenemos aún el backup creado, en el servidor de origen, ejecutamos:

# /usr/local/psa/bin/pleskbackup all mibackup.psa

En caso de no encontrarse pleskbackup instalado, hay que entrar al panel de control y en SERVIDOR –> ACTUALIZADOR e instalar PLESK BACKUP MANAGER.

2. Una vez tenemos el archivo de backup generado, lo movemos al servidor de destino y convertimos el archivo a formato Plesk 9.

# /usr/local/psa/bin/pre9-backup-convert -v convert -d /var/lib/psa/dumps/ mibackup.psa

El directorio /var/lib/psa/dumps es la ubicación por defecto para almacenar los backups con Plesk 9. Ahí se creará un archivo .xml con los metadatos del backup.

3. En el panel de control, accedemos a SERVIDOR –> ADMINISTRADOR DE BACKUPS –> REPOSITORIO DEL SERVIDOR.

Ahora veremos un listado de los backups disponibles, entre ellos debería aparecer el que hemos convertido, pinchamos en él y veremos las opciones y podemos empezar el proceso de restauración.

1 comentario | Archivado como Sistemas TI |

IIS7, reglas de url rewrite que deberías conocer

Escrito por admin el 18-12-2009

Cada vez es más importante disponer de una buena arquitectura de urls en nuestras aplicaciones y sitios web.

Arquitecturas de servicios como REST y la importancia de optimizar el SEO cara a resultados de búsquedas, suelen ser los dos motivos más importantes para que nuestra aplicación necesite disponer de su propia estrategia de urls corente al contenido que se ofrece en cada solicitud.

Desde hace ya dos años, IIS7 goza de su propio sistema de url rewrite nativo, que nos permite de una forma muy sencilla aplicar las reglas necesarias para implantar nuestra estrategia de urls.

Aquí van unos ejemplos de reglas imprescindibles que he ido recopilando estos últimos años:

Eliminar la última barra “/” de la url


<rule name="Eliminar la ultima barra en la url"
      stopProcessing="true">

  <match url="(.*)/$" />
  <conditions>
     <add input="{REQUEST_FILENAME}"
          matchType="IsFile" negate="true" />
     <add input="{REQUEST_FILENAME}"
          matchType="IsDirectory" negate="true" />
  </conditions>

<action type="Redirect"
        redirectType="Permanent" url="{R:1}" />
</rule>

Agregar la última barra “/” a la url

<rule name="Agregar la ultima barra a la url"
      stopProcessing="true">

  <match url="<span><span>(.*[^/])</span></span>$" />
  <conditions>
     <add input="{REQUEST_FILENAME}"
          matchType="IsFile" negate="true" />
     <add input="{REQUEST_FILENAME}"
          matchType="IsDirectory" negate="true" />
  </conditions>

<action type="Redirect"
        redirectType="Permanent" url="{R:1}/" />
</rule>

Convertir toda la url a minúsculas

<rule name="Forzar toda la url a minusculas"
      stopProcessing="true">

      <match url=".*[A-Z].*" ignoreCase="false" />
      <action type="Redirect" url="{ToLower:{R:0}}"
              redirectType="Permanent" />

</rule>

Quitar las www del hostname

<rule name="Quitar las www"
      stopProcessing="true">
     <match url="(.*)" />
     <conditions>
       <add input="{HTTP_HOST}" negate="true"
            pattern="^blackslot\.com$" />
     </conditions>
     <action type="Redirect" url="http://blackslot.com/{R:1}"
             redirectType="Permanent" />
</rule>

Añadir las www al hostname

<rule name="Añadir las www"
      stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" negate="true"
                pattern="^www\.blackslot\.com$" />
      </conditions>
      <action type="Redirect" url="http://www.blackslot.com/{R:1}"
              redirectType="Permanent" />
</rule>

Forzar https

<rule name="Forzar https"
      stopProcessing="true">

      <match url="(.*)" />
      <conditions>
         <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect"
              url="https://{HTTP_HOST}/{R:1}"
              redirectType="SeeOther" />
</rule>

Rechazar hotlinking a imágenes

<rule name="Rechazar hotlinking"
      stopProcessing="true">

      <match url=".*\.(gif|jpg|png)$"/>
      <conditions>
        <add input="{HTTP_REFERER}"
                pattern="^$" negate="true" />
        <add input="{HTTP_REFERER}"
               pattern="^http://blackslot\.com/.*$" negate="true" />
      </conditions>
      <action type="Rewrite" url="/images/gandalf_nopuedespasar.jpg" />
</rule>

WordPress

<rule name="Wordpress"
      stopProcessing="true">

            <match url="*" />
            <conditions>
                <add input="{REQUEST_FILENAME}"
                        matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}"
                        matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Rewrite" url="index.php" />

</rule>

Symfony (producción)

<rule name="Symfony"
      stopProcessing="true">

      <match url="^(.*)$" ignoreCase="false" />
       <conditions logicalGrouping="MatchAll">
           <add input="{REQUEST_FILENAME}"
                  matchType="IsFile" negate="true" />
           <add input="{REQUEST_FILENAME}"
                   matchType="IsDirectory" negate="true" />
       </conditions>
       <action type="Rewrite" url="index.php"
                  appendQueryString="true" />

</rule>

Saludos, Asier Marqués

1 comentario | Archivado como Desarrollo web | 18/12/2009

Nuestros servidores virtuales HyperV R2

Escrito por admin el 17-12-2009

Microsoft HyperV R2 es una tecnología de servidor que permite a nuestros clientes disponer de una máquina dedicada y totalmente independiente, con ventajas adicionales sobre una solución de servidor dedicado.

Blackslot es el único proveedor en España que ofrece este servicio.

Además de capacidades de redundancia y migración automática entre diferentes nodos sin pérdida de servicio, nos permite realizar backups y clonaciones del servidor completo (no sólo de sus archivos), escalabilidad de recursos de hardware y estrategias de alta disponibilidad que se pueden implementar en varios minutos.

A diferencia de servidores virtuales que hacen uso de otras tecnologías de virtualización como Virtuozzo, nuestros servidores virtuales no comparten recursos de sistema con otrás máquinas alojadas que comparten anfitrión, haciendo de ellas la solución preferida para nuestros clientes que requieran un servidor independiente, flexible en cuanto a prestaciones de hardware y seguridad.

Además de esto a Blackslot nos permite ofrecer servicios impensables para servidores dedicados. Como ejemplo de estos servicios son:

Envío de máquinas virtuales.

Algunos de nuestros clientes necesitan disponer de servidores virtuales con ciertas características de hardware concretas, que estén ubicados en un entorno seguro y que tengan una instalación/configuración de sistema, aplicaciones y servicios realizada por ellos mismos o certificada por algún organismo externo.

Otros clientes necesitan redundancia total de sus servidores y equipos de oficina, junto un rápido soporte y reabastecimiento en caso de emergencia. En este caso nuestros clientes suelen elegir entre  enviar sus configuraciones o arquitectura de sistema interna, para que lo implantemos nosotros en un entorno virtual, o enviarnos directamente todo en máquinas virtuales listas para arrancar y funcionar.

Para ambos clientes nuestras soluciones HyperV R2 presentan una oportunidad para llevar a un nivel superior su gestión TI y tener la seguridad de contar con un respaldo total que evitaría, en caso de urgencia, incalculables pérdidas económicas para sus empresas.

Sistemas operativos Linux y Windows

A diferencia de otras opciones disponibles con otros proveedores, ofrecemos HyperV R2 con un amplio catálogo de sistemas operativos como Windows 2008 Server (Standard y Enterprise Editions), Windows 7 (Cualquier versión profesional y Enterprise), Suse Linux y otras distribuciones de Linux según requisitos de cliente.

Arquitecturas híbridas virtuales/físicas

Estamos implementando y gestionando soluciones que combinan servidores dedicados y servidores virtuales en una misma arquitectura.

La ventaja de disponer servidores virtuales para roles como servidor web frontal o de cache, reside en la posibilidad de escalar de forma automática sin tiempos de espera y de redundar o disponer de infraestructuras replicadas en otras ubicaciones físicas con un coste muy reducido, algo que mejora los tiempos de respuesta de la web para usuarios de otros países.

Esto unido a la posibilidad de disponer de aplicaciones centralizadas virtualizadas, que los clientes puedan utilizar sin instalar en su equipo, hace que se reduzcan costes que deberían ser asumidos en una infraestructura basada exclusivamente en hardware físico.

2 comentarios | Archivado como Nuestros servicios | 17/12/2009

A traves de la genial revista PHP Architect conocemos la iniciativa PHP on Windows® Contest, en la que se invita a todo desarrollador php a crear una aplicación web que corra bajo entornos Microsoft, o aportar una significante contribución a algún proyecto open source relacionada con el objetivo del concurso.

Entre los premios está un sistema de entretenimiento completo formado por:

  • Una TV Samsung 52” 1080p LCD HDTV (modelo LN52B540)
  • Un Samsung Digital 5.1 home theatre system (modelo TZ322T)
  • Una XBOX 360 Ultimate
  • Un viaje al php|tek 2010 desde cualquier lugar de Estados Unidos
  • Dar una charla sobre tu proyecto en el php|tek 2010

Aunque el concurso es sólo para personas residentes en Estados Unidos, se puede participar, ser votado e incluso ganar por votación al enviar el proyecto, lo que puede darte una gran visibilidad a nivel mundial.

Fatan 76 días.

1 comentario | Archivado como Eventos | 14/12/2009