Asier Marqués

Hablando sobre tecnologías web y otras cosas que me interesan

Archivo de la categoría 'Microsoft'...

Archivado bajo Desarrollo Web, Microsoft, PHP, Sistemas

La próxima versión de php incluirá una serie de cambios generales, como la introducción de namespaces por ejemplo, que afectarán a todos las versiones de los diferentes sistemas operativos.

Pero en la versión para Microsoft Windows se incluyen una serie de cambios que debemos conocer los que desarrollamos bajo esta plataforma.

- Sólo serán soportados Windows 2000, XP, Server 2003, Vista y Server 2008. Se elimina el soporte para Windows 98, ME, and NT.

- Las nuevas versiones de php a partir de esta versión usarán el compilador VC9 (Microsoft Visual C++ 2008) por lo que requiere la librería msvcr90.dll. Si usas el instalador oficial, este incluirá dicha librería automáticamente.

Por razones de compatibilidad con algunas extensiones y con el servidor web Apache, durante las versiones php5.3.x se tendrá que utilizar la versión compatible con VC6, el cual data de 1998. En las siguientes versiones de php éste solo podrá ser compilado con VC9.

- Se incluirán versiones de 64 bits pero tendrán un soporte experimental por el momento.

- Las extensiones PECL no serán incluidas en php hasta que el nuevo sistema de compilado de PECL funcione correctamente.

- Los binarios se publicarán al mismo tiempo que el código fuente.

Comentarios (0) Posted by Asier Marqués on Jueves, Agosto 28th, 2008

Archivado bajo Innovación, Microsoft, Sistemas

El otro día leí en el blog de Eduardo Collado un planteamiento que hizo sobre si era mejor opción usar Windows o usar Linux en un dispositivo UltraMobile PC.

Estoy de acuerdo en algunas cosas que plantea y en desacuerdo en algunas otras.

De acuerdo estoy en que en un dispositivo UMPC de bajo coste es una opción muy acertada el uso de Linux, ya que en ese tipo de dispositivos, debido precisamente a su bajo coste, si queremos disponer de Windows Vista no tenemos hardware suficiente como para disfrutar de una experiencia de usuario óptima en el caso de conseguir instalar dicho sistema. Una pena que Microsoft no disponga de una sistema reducido a considerar para hardware menos potente o desfasado.

Sin embargo, no todos los sistemas UMPC son de bajo coste y no todo su uso tiene por qué ser esporádico. Yo soy de la opinión de que no todo es blanco ni negro y cada sistema operativo tiene su lugar.

En el caso de tener una buena máquina, no quiero decir que una opción de bajo coste sea una mala opción sino que es posible que no sea adecuado para ciertos usos, es interesante tener en cuenta Windows Vista como una opción por dos motivos: La seguridad y Origami Experience.

La seguridad de windows vista es un punto muy a considerar con respecto a su anterior versión XP y Origami es sencillamente una maravilla.

Como sobéis Microsoft tiende cada vez más al desarrollo de tecnologías y aplicaciones para su uso desde tecnologías táctiles. No es un secreto que Windows Mobile es una opción desfasada en este sentido y, frente a la aparición de tecnologías como WPF y Silverlight junto a la “competencia” con dispositivos como iPhone, es imperativo ver un cambio en la interacción con las aplicaciones de este sistema.

No he tenido la oportunidad de probar en mis propias manos Origami Experience, pero os dejo este video en el que os podéis hacer una idea de lo que hace… simplemente genial.

Comentarios (9) Posted by Asier Marqués on Martes, Agosto 19th, 2008

Archivado bajo Eventos, Microsoft, Sistemas

Raul Illana en nombre de encuentros sociales, como colaborador de la organización de Lancelona, me ha ofrecido la oportunidad de ser ponente en dicho evento.

Será un conjunto de ponencias abiertas en las que, junto a otros profesionales que trabajan con sistemas operativos de otras plataformas, expondremos las posibilidades que ofrecen los mismos y por qué pueden ser buenos candidatos a su uso.

Me tocará defender a los sistemas operativos Microsoft de los mitos habituales que podemos encontrarnos, hablaré sobre tecnologías, tanto de escritorio como de servidor, que creo que hacen que el hecho de elegir sistemas Microsoft merezca la pena y hablaré desde un punto de vista realista de por qué, al usuario normal y a las empresas, les interesarían usar Microsoft Windows como sistema operativo doméstico y profesional respectívamente.

Los que me conocen saben de sobra que no soy talibán de ninguna tecnología (lo considero absurdo) y trabajo habitualmente con sistemas Microsoft, Linux y MacOSX.

Espero veros por la Lancelona el 29,30 y 31 de este mes!

Comentarios (16) Posted by Asier Marqués on Viernes, Agosto 8th, 2008

Archivado bajo Bases de Datos, Desarrollo Web, Frameworks, Microsoft, PHP, Sistemas, Trucos

En la actual versión de symfony se usa Propel junto a Creole para crear un orm y una capa de abstracción entre la base de datos y el resto de nuestra aplicación.

Esto nos permite desarrollar aplicaciones independientes del motor de base de datos que usemos.

Php utiliza oficialmente la librería mssql para conectarse a una base de datos Sql Server y aunque existe una opción mejor por parte de Microsoft en fase CTP, Propel (y por lo tanto Symfony) la utilizan para conectarse a este tipo de motor.

Sin embargo, para conseguir conectarse y operar con éxito con Sql Server 2005 hay que hacer una serie de configuraciones en php/symfony y hacks en creole.
(Espero que no os siente esto como un cubata de Baileys con tonica : )

Vamos a verlo paso por paso:

1- Actualizar la librería ntwdblib.dll a la versión 2000.80.194.0.

2- Activar las extensiones php_mssql y php_xsl en el php.ini.

Adicionalmente debemos indicar los siguientes parámetros para php_mssql:

mssql.datetimeconvert = 0
mssql.textlimit = 2147483647
mssql.textsize = 2147483647

3- Crear nuestra base de datos en Sql Server y asignar el login y permisos adecuados al usuario que usemos para conectarnos.

4- Editar el archivo schema.yml con nuestro esquema de base de datos.

5- Configurar la conexión a la base de datos:

[ruta_completa]\symfony.bat configure:database
“mssql://usuario:password@equipo\instancia/nombre_baseDatos”

6- Construir el modelo orm de symfony:

[ruta_completa]\symfony.bat propel:build_model

7- Editar el fichero MSSQLConnection.php ubicado en \lib\plugins\sfPropelPlugin\lib\vendor\creole\drivers\mssql dentro del directorio de symfony.

En el caso de que no se especifique un puerto en el string de conexión a la base de datos, creole te inserta el valor de puerto predeterminado para sql server. Sin embargo, en Sql Server 2005 esto provoca un fallo impidiendo realizar una conexión exitosa a la base de datos.

Para evitar que creole nos meta el puerto si o si, debemos modificar la siguiente secuencia de control en MSSQLConnection.php:

if(!empty($dsninfo['port'])) {
$dbhost .= $portDelimiter.$dsninfo['port'];

}

//*else {
//$dbhost .= $portDelimiter.’1433′;
// }

Con estas modificaciones ya deberíamos poder trabajar con sql server 2005 desde symfony.

Comentarios (0) Posted by Asier Marqués on Miércoles, Julio 16th, 2008

Archivado bajo Desarrollo Web, Frameworks, Microsoft, PHP, Servidores Web, Sistemas

Desde hace algún tiempo he estado leyendo sobre varios frameworks de desarrollo con php, que me permitiesen de una forma fiable automatizar trabajo que, a pesar de no tener una dificultad notable para alguien que sepa programar, te hace perder un montón de tiempo si quieres hacer las cosas bien.

La opción que más me ha gustado para php es sin duda Symfony y puesto que desarrollo tanto para plataformas UNIX/Linux como para sistemas Microsoft, me interesé por hacerlo funcionar e incluso utilizarla en proyectos que actualmente me encuentro desarrollando bajo sistemas Microsoft.

Voy a detallar como es una instalación de Symfony en IIS. Yo lo tengo funcionando sobre 2003 Server SP2 con IIS6

1 - Se descarga el código fuente de Symfony y se descomprime en un directorio en una de las unidades de disco duro del servidor. (Supongamos D:\symfony)

2 - Se crea un directorio cuyo contenido será el que usemos como sitio web. (Supongamos D:\dir_proyecto)

3 - Abrimos un terminal, nos situamos en “dir_proyecto” y ejecutamos lo siguiente para crear un proyecto:

D:\symfony\data\bin\symfony.bat init-project nuevo_proyecto

Ahora creamos una primera aplicación para ese proyecto:

D:\symfony\data\bin\symfony.bat init-app nueva_aplicacion

4 - Creamos un sitio web nuevo que apunte al directorio “D:\dir_proyecto\web”.

5 - Dentro del ese nuevo sitio web, creamos un directorio virtual que apunte a “D:\symfony\data\web\sf”

6 -  Si usamos isapi rewrite necesitamos ahora aplicar las reglas de redirecciones para nuestro sitio web. En la documentación oficial nos comentan una serie de reglas específicas para entornos de IIS. Esas reglas pueden darnos problemas a la hora de acceder a los archivos del directorio “D:\symfony\data\web\sf”.

Para evitar estos problemas, debemos ser fieles a las reglas definidas en el .htaccess que se ha creado en el directorio “D:\dir_proyecto\web” y añadir las reglas de seguridad relativas a entornos Microsoft.

Las reglas de redireccionamiento quedarían de la siguiente forma:
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule (.*) /index.php [L]

Con esto ya deberíamos comprobar que todo funciona correctamente.

Comentarios (9) Posted by Asier Marqués on Martes, Julio 15th, 2008

Archivado bajo Microsoft, Personal, Sistemas

Tras haber trabajado como administrador y consultor de (y haber frikeado con) sistemas bajo entorno Microsoft, haber cursado y preparado tanto el MCSA como el MCSE con la especialidad en mensajería, el MCTS para SQLServer 2005 y ser MCP en Exchange, XP y Windows server 2003, creo que puedo criticar con poco de base y decir las cosas que más me gustan y las cosas que más odio de Microsoft.

Me gusta

Windows Server 2008

La opción de instalación Windows Server Core

La gestión de clusters en windows server 2008

Windows Server 2003 Enterprise/Estardar SP2

Active Directory

IIS 7 & IIS 6

c#

Powershell

La suscripción technet plus

XBox 360

Exchange Server 2007

Outlook 2003/2007

Visual Web Developer 2005 / 2008

OneNote 2003/2007

Word 2007

Sql Server 2005 o superior

Odio

Windows Live search

El diseño de las aplicaciones windows live (sobre todo spaces y hotmail)

Sharepoint

VBA (Visual Basic for Applications)

Que OWA necesite una versión aparte para poder ser accedido desde otros navegadores que no sean IE

Excel (en general, no porque sea de Microsoft, también odio las opciones open source)

Que IIS no tenga módulo de URL-Rewrite oficial, ni tampoco soporte para host headers para dominios wildcard.

Que intente abarcar tantos productos en lugar de centrarse en sus productos más importantes

Que por lo general las secciones de sus productos, en el sitio Microsoft.com, sean para personas que ya conocen el producto, no tengan capturas de pantalla de los mismos ni muestren con vídeos de lo que es capaz la aplicación en cuestión.

Que no prioricen el minimalismo a la hora de diseñar las interfaces para sus aplicaciones o sistemas operativos.

Las opciones de apagar el equipo en el menú inicio de windows vista.

Que en la instalación Server Core no se haya eliminado por completo todo rastro de entorno gráfico.

Que en la instalación Server Core no se haya integrado una versión de .net sin librerías de entorno gráfico (no debe existir esa opción en .net framework) haciendo imposible correr en él aplicaciones .net ni servidores como sql server o exchange.

Que MSN Messenger tenga publicidad en sistemas operativos con licencia legal y que no se pueda integrar con otros servicios de IM.

Comentarios (8) Posted by Asier Marqués on Sábado, Julio 5th, 2008

Archivado bajo Arquitectura, Microsoft, Sistemas

David Cervigón nos muestra lo rápido e intuitivo que es montar un cluster activo-pasivo con dos nodos corriendo Windows Server Core 2008.

Video: Crear un Cluster

La mejora que más destacaría, además de la herramienta de validación de hardware, es la de no necesitar tener la cuenta del usuario para el servicio de cluster en directorio activo, se agradece y mucho.

Comentarios (0) Posted by Asier Marqués on Lunes, Mayo 19th, 2008

Archivado bajo Bases de Datos, Desarrollo Web, Microsoft, PHP, Sistemas

Microsoft ha publicó hace unos meses la versión RTM de su driver oficial para php que permite conectarse a sus bases de datos SQL Server.

Vamos a usar dicho driver para mostrar cómo recuperaríamos el último id insertado en una tabla.


[php,N]//Especificamos el servidor
$server = “HOST\INSTANCIA”;
//Especificamos los datos de acceso y la base de datos
$info = array( “Database”=>”bd”,”UID” =>”user”,”PWD” =>”pass”);
//nos conectamos
$c = sqlsrv_connect( $server, $info);
//especificamos el código sql para la consulta parametrizada
$sql = “INSERT INTO tabla (valor) VALUES (?);”;
//Scope_Identity nos devuelve el último id insertado
$sql .= “SELECT Scope_Identity() as id;”;
/*
especificamos el valor o valores que se pasarán como
parámetros en la consulta anterior
**/
$param = array($valor);
//preparamos la consulta
$s = sqlsrv_prepare($c, $sql, $param);
//ejecutamos la consulta
sqlsrv_execute($s);
/**
*
En este momento se ha ejecutado la consulta pero, al contrario
de lo que podamos deducir, no se devuelve ningún valor ‘id’
aunque hagamos un fetch
para obtenerlo debemos hacer un sqlsrv_next_result();
**/
sqlsrv_next_result($s);
//Ahora sí, hacemos un fetch
$r = sqlsrv_fetch_array($s, SQLSRV_FETCH_ASSOC);
//Mostramos el resultado
echo “Hemos insertado una fila con el id: “.$r['id'];
//liberamos la variable de estado
sqlsrv_free_stmt($s);
//cerramos la conexión
sqlsrv_close($c);

Comentarios (0) Posted by Asier Marqués on Miércoles, Mayo 14th, 2008

Archivado bajo Microsoft, Seguridad, Servidores Web, Sistemas

Por defecto la pila TCP/IP en un servidor Microsoft Windows 2003 Server viene optimizada para dar servicio de intranet, no para dar servicio de internet.

Tener un servidor sin adaptar adecuadamente dando servicio para internet con iis6 por ejemplo, puede convertirlo en una fácil presa de ataques dDOS entre otros.

Hay que tener en cuenta de igual modo, que un servidor expuesto a internet, no va a tener que soportar ni de lejos la misma carga de tráfico que uno que opere en la intranet de una empresa, en la gran mayoría de los casos.

Para optimizar nuestro sistema debemos tocar las siguientes claves de registro que encontramos en HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services

Nombre: SynAttackProtect

Clave: Tcpip\Parameters

Tipo: REG_DWORD

Valor:1

Este valor del Registro hace que TCP ajuste la retransmisión de SYN-ACKS. Cuando se configura este valor, las respuestas de conexión superan el tiempo de espera antes durante un ataque SYN (En w2k3 con service pack 1 viene a 1 por defecto)

Nombre: EnableDeadGWDetect

Clave: Tcpip\Parameters

Tipo: REG_DWORD

Valor: 0

Cuando esta activada, TCP puede utilizar una puerta de enlace que no se use en el caso de tener problemas con la que usa por defecto.
Si no se configura este valor como 0, se podría cambiar de puerta de enlace del servidor a otra que el atacante quiera.

Nombre: EnablePMTUDiscovery

Clave: Tcpip\Parameters

Tipo: REG_DWORD

Valor: 0

De no ser 0, un atacante podría forzar que el valor de la unidad de transmisión máxima (MTU) fuera muy pequeño y sobrecargar la pila TCP/Ip.

Nombre: KeepAliveTime

Clave: Tcpip\Parameters

Tipo: REG_DWORD-Tiempo en milisegundos

Default: 300000 (5 minutos)

Indica la frecuencia en la que se comprueban si las conexiones TCP inactivas siguen intactas y si el cliente está presente. Generalmente es recomendable cambiar el valor por defecto de 2 horas a 5 minutos, pero en cada caso concreto debemos estipular una configuración adecuada.

Nombre: NoNameReleaseOnDemand

Clave: Netbt\Parameters

Tipo: REG_DWORD

Valor: 1

Con este valor evitamos que el equipo libere su nombre NetBIOS en caso de que se le solicite.

Comentarios (0) Posted by Asier Marqués on Viernes, Mayo 2nd, 2008

Archivado bajo Desarrollo Web, Microsoft, PHP, Servidores Web, Sistemas

Aprovechando que tengo un servidor dedicado con Windows 2003 Server para desarrollo, contratado en Hostalia (por si a alguien le interesa), lo he configurado para que PHP corra en modo FastCGI sobre IIS.

Después de bajar la última versión Non-thread-safe de php y descomprimirla en un directorio, en este caso c:\php, procedemos a la instalación y configuración de FastCgi.

En IIS7 basta con agregar el módulo CGI para tener FastCGI pero en IIS6 debes bajarlo, actualmente en versión RTM, de éste enlace en iis.net.

Una vez instalado, podemos a agregar el módulo FastCgi en el servidor IIS. Para ello vamos a la pestaña Directorio particular, dentro de propiedades de un sitio virtual, y en configuración de la aplicación, añadimos la asignación de extensión para “.php” tal y cómo se ve en la captura.

IIS6 fastcgi

Una vez hecho eso, debemos configurar el fcgiext.ini,localizado en WINDOWS\system32\inetsrv a mano o con un script llamado fcgiconfig.js ,incluido en ese directorio al instalar FastCGI.

Para hacer una configuración rápida lanzamos el siguiente comando en la ruta WINDOWS\system32\inetsrv

cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"

o bien si sólo queremos aplicarlo a un sitio web determinado, en este caso el sitio por defecto que tiene IIS

cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe" –site:1

Si abrimos el fcgiext.ini veremos que se ha configurado fastcgi para funcionar con php y donde tiene que encontrar el ejecutable.

Si llamáis a un script con la función phpinfo(); , veréis que php se ejecuta perfectamente en modo FastCgi.

Si queréis ajustar más cosas para optimizar el rendimiento de fast cgi, os recomiendo que leáis ésta documentación de iis.net.

Comentarios (0) Posted by Asier Marqués on Viernes, Abril 11th, 2008