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
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
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
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.
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 : )
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:
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:
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]
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
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
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
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
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.
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
Asier Marqués es un profesional freelance que trabaja como analista y desarrollador de aplicaciones web, así como consultor de sistemas Microsoft.
Tiene más de 5 años de experiencia en desarrollo de aplicaciones web,
ha trabajado como profesor de informática y se ha desarrollado como administrador de sistemas en varias consultoras internacionales.