Archive for the ‘Servidors Web’ Category

Alliberat Apache Tomcat 7.0.47

diumenge, octubre 27th, 2013

El proppassat dia 24 d’Octubre s’alliberà la versió 7.0.47 del Servidor Apache Tomcat.

La novetat més important que incorpora és que han manllevat de Tomcat 8 el suport per a WebSockets 1.0 i l’han incorporat.

Back-port the JSR-356 Java WebSocket 1.0 implementation from Apache Tomcat 8.

Cal fer notar que per a aquesta funcionalitat és necessari emprar Java 7.

 

Alliberat Apache Tomcat 7.0.37

Dimarts, febrer 19th, 2013

Apache ha alliberat la versió 7.0.37 de Tomcat.

Aquesta versió soluciona diversos bugs.

Alliberat Apache TomCat 7.0.30

divendres, setembre 7th, 2012

Ahir dia 6 s’alliberà la versió 7.0.30 del Programari Lliure Apache TomCat.

Aquesta versió adreça nombrosos problemes de seguretat i incorpora algunes noves funcionalitats.

Alliberat Apache Tomcat 7.0.29

dilluns, juliol 9th, 2012

Ahir es va alliberar la versió 7.0.29 del servidor d’aplicacions java.

Aquesta versió adreça algunes regressions de la versió 7.0.28, així com incorpora algunes millores i soluciona diversos bugs.

Alliberat Apache Tomcat 7.0.27

diumenge, abril 8th, 2012

El proppassat dia 5 d’Abril s’alliberà la versió 7.0.27 d’Apache Toomcat, el servidor d’aplicacions d’Apache per a Java.

Aquesta versió soluciona força bugs, i implementa noves funcionalitats com ara:

– Suport per al protocol WebSocket (RFC6455) (aqeusta és una de les funcionalitats més interessants de HTML 5)

També millora la prevenció de memory leaks i soluciona errors al connector HTTP NIO.

Podeu veure la llista de millores a http://tomcat.apache.org/tomcat-7.0-doc/changelog.html

 

Evolució de Servidors Web des de Desembre de 1995

dimecres, març 28th, 2012

Veig a Netcraft l’evolució dels Servidors Web, des de 1995, fins Març d’enguany, 2012.

Podem observar com el servidor Programari Lliure Apache no para de pujar i supera absolutament el servidor propietari de microsoft.

El servidor Apache amb més de 420 Milions de servidors executant-lo i el 65,24 % de quota.

El servidor de microsoft amb 88 Milions i un 13,81 %.

M’agrada veure com Nginx puja amb 65 Milions i un 10,85 % de quota.

Podem observar com el servidor propietari de Sun Microsystem està caput, i no veiem a les gràfiques productes com el servidor d’Oracle IAS, servidors d’aplicacions com Ibm WebSphere (per a java), ServletExec (per a java), ColdFusion o productes potents com Lighttpd.

Avançament de les característiques de xdebug 2.2 (PHP)

dijous, març 22nd, 2012

Al bloc de Derick Rethans ens avancen algunes de les novetats de la funcionalitat xdebug_var_dump() , que per cert sobrecarrega la nadiva var_dump, de xdebug 2.2, actualment en desenvolupament.

M’agrada especialment la funcionalitat de mostrar colors d’un dump (volcat de dades) a un terminal.

Aquesta funcionalitat és suportada només a consoles unix, executant des de línia de comandes.

Emprar JQuery i Smarty

dimecres, gener 11th, 2012

JQuery és empradísism a Internet per a desenvolupar la part visual, coneguda com Front-End, i Smarty és un sistema de plantilles que s’empra molt en programació en PHP.

JQuery empra una nomenclatura tipus:

<script> 
    $('metode_pagament').click(
        function() { 
            $('capa_tarjeta').appendTo('#capa_tipus_pagament'); 
        }
      ); 
</script>

Aquest codi dins una plantilla d’Smarty, coneguda com tpl, provocarà un error ja que els corxets { } són emprats per Smarty per a indicar on comença codi que executa Smarty, i com JQuery o Javascript empren els corxets { } això confondrà a l’intèrpret, retornant un error.

Això se soluciona facilment obrint una etiqueta d’Smarty {literal}:

{literal}
<script> 
    $('metode_pagament').click(
        function() { 
            $('capa_tarjeta').appendTo('#capa_tipus_pagament'); 
        }
      ); 
</script>
{/literal}

Amb això funcionarà el vostre codi.

Reiniciar apache2 a Ubuntu

dissabte, setembre 17th, 2011

Fer:

 

/etc/init.d/apache2 restart

Des de un CentOs faríem:

 

/etc/init.d/http restart

Alliberat Apache Tomcat 7.0.11

divendres, març 11th, 2011

S’acaba d’alliberar la versió 7.0.11 del servidor d’aplicacions per a Java Apache Tomcat 7.0.11.

Aquesta versió conté arranjaments de seguretat pel que és molt recomanable actualitzar-se.

Aquí podeu veure la llista de tots els canvis:

http://tomcat.apache.org/tomcat-7.0-doc/changelog.html

Adreça curta Twitter: http://wp.me/pzeab-1N8

Alliberat Apache Tomcat 7.0.6

diumenge, gener 16th, 2011

El proppassat dia 14 fou alliberat el Servidor d’Aplicacions Java Programari Lliure: Apache TomCat en la seva versió 7.0.6.

Se solucionen problemes, bugs, per a veure la llista de canvis: http://tomcat.apache.org/tomcat-7.0-doc/changelog.html

Curs de programació en PHP

diumenge, gener 2nd, 2011

Aquest és un petit curs per a aprendre a programar des de 0.

No tothom és capaç d’estructurar la ment i les idees i ser capaç de crear programes, però amb aquest petit curs podràs descobrir si t’agrada i n’ets capaç.

Dedico aquest curs a la Eli i a la Yazmina, dues persones amb moltes ganes d’aprendre i voluntat i capaces.

Introducció: Posant nom a les coses

Què vol dir programar?. De seguida hi arribarem, però primer hem de comprendre coses com què són els ordinadors.

Molt simplificat els ordinadors són uns ginys, que mitjançant uns valors d’entrada, proporcionen uns resultat. Per exemple, enviant-los 1+1 proporcionen un resultat de 2.

Els ordinadors realment funcionen amb impulsos elèctrics, que es transformen en uns i zeros. Si els voltatges són positius representen un 1, en cas contrari un 0.

Imaginem-nos un gran magatzem.

Hi ha una sèrie d’entrades de càrrega i descàrrega que poden ser portes d’entrada (càrrega), de sortida (descàrrega) o d’entrada i sortida (input/output dirien en anglès).

Dins d’aquest gran magatzem hi ha un operari, que seguint instruccions d’un paper, agafa els paquets que li donen per les portes d’entrada, els manipula i els desa als prestatges del magatzem o bé els retorna per una porta de sortida.

Aquest operari és el cervell de l’ordinador o CPU (Central Processing Unit). Les prestatgeries equivaldrien a la memòria. I les portes d’entrada/sortida del magatzem a les portes d’entrada/sortida de l’ordinador (els ports USB són ports d’entrada sortida, el port VGA on connectem el monitor és un port de sortida, etc…)

Com més ràpid és el processador, més feina pot fer per segon. La velocitat dels ordinadors la mesurem en Megahertzos o avui en dia en Gigahertzos.

Les instruccions s’executen als ordinadors marcades per un tic de rellotge de quartz, que són molt i molt precisos, una mica s’executen seguint el ritme dels tambors de les galeres, cada cop de tambor (clic de rellotge), una instrucció.

El prefix Mega vol dir 1.000 i Giga 1.000.000, i un hertz és una oscil·lació o tick del rellotge per segon, per tant un Gigahertz són un milió d’operacions per segon.

Un ordinador a 2 Ghz hauria de ser més ràpid que un a 1 Ghz. Però no sempre és així. Els nous models fan les operacions cada cop més ràpid, i una ordre que pot tarda 5 clics de rellotge en un ordinador més antic, pot trigar un sol clic de rellotge en un ordinador modern. Per tant ens podem trobar que un ordinador modern a 1 Ghz sigui més ràpid que un ordinador més antic a 2 Ghz.

Per últim, un ordinador amb dual core, seria com dir que al magatzem hi treballen dos operaris independents, per tant, un sol paquet el recullen, el processen i l’entreguen a la mateixa velocitat, però si hi ha més d’un paquet, els dos operaris despatxen dos paquets en el mateix temps que un ordinador amb un sol nucli o core en processen un.

Els ordinadors només fan el que prèviament els hem dit. Els operaris segueixen les instruccions per a manegar els paquets amb una llista d’ordres, i aquesta llista d’ordres és el que anomenem un programa.

Programar és dir-li a l’ordinador què ha de fer mitjançant un llistat d’instruccions que anomenem programes.

Nivells en programació

Les instruccions que segueix l’operari de la fàbrica (el processador) no són com les nostres.

L’operari no entén “recull la caixa i deixa-la a la taula”. L’operari de l’exemple entén instruccions més senzilles com ara:

– Dóna una passa endavant

– Fira 90 graus a la dreta

– Hi ha algun objecte davant?

I encadenades com:

1. Dóna una passa endavant

2. Hi ha algun objecte davant?

3. Si hi ha un objecte recull l’bjecte

4. Si no hi ha un objecte torna al pas 1

En això consisteix la feina del programador. En crear programes, o sia llista d’ordres, per a que l’ordinador (l’operari) faci el que volem.

Per això els programadors han de tenir en compte tots els possibles problemes.

Per a programar utilitzem llenguatges de programació.

Els llenguatges de programació són similars als llenguatges que parlem els humans en diferents països: n’hi ha de diferents amb diferents estructures gramaticals.

Depenent de si el llenguatge que emprem és més similar al que entén l’ordinador (passa, passa, hi ha alguna cosa?, passa, agafa, gira 180 graus, passa, passa, hi ha la taula? desa a la taula…) o més similar al que entenem els humans (porta la caixa a la taula) parlem de llenguatges de baix nivell, nivell mig o alt nivell.

Els llenguatges de baix nivell són els que se semblen molt al que entén la màquina.

Els d’alt nivell són els que se semblen molt al que parlem els humans.

En principi en un llenguatge d’alt nivell no sabem ben bé què fa la màquina per sota, mentre que en un llenguatge de baix nivell controlem tots el que fan els seus components.

Un exemples més real de programació en codi màquina, que és el de més baix nivell seria:

ETIQUETA_INICI:
	push	ax
	push	bx
	push	dx
	xor	ax,ax
	mov	dx,TIMER1_CNT
	in	al,dx
	or	al,al
	jnz	ETIQUETA_ES0
	xor	ax,ax
	out	dx,ax
	mov	dx,TIMER0_CNT
ETIQUETA_ES0:
	mov	bx,ax
	mov	ax,_dt_ymppr
	sub	ax,bx

L’objectiu d’aquest codi és veure que no enteneu res.

Si enteneu aquest codi deixeu de llegir que vindré jo a que em doneu classes si és que la Nasa no us contracta i us deixa una estoneta lliure.

El més interessant és la línia que diu jnz ETIQUETA_ES0. jnz és una de les instruccions bàsiques que mira si la última operació matemàtica ha retornat 0, (jnz significa jump if not 0, és a dir, salta a la etiqueta si no és 0).

Respireu, sé que és complicat. L’objectiu no és comprendre aquest codi si no veure la diferència entre baix nivell i alt nivell.

En un llenguatge de baix nivell tenim cura i treballem amb totes les peces internes de l’ordinador.

Per exemple, unes petites memòries (ax, dx, cx, ex) que serveixen per a fer les operacions bàsiques com mov ax, dx que vol diu mou el valor que hi ha a la memòria dx a la memòria ax.

Com aquestes memòries tenen molt poca capacitat, 8 bytes en el cas de ax, cx, el que fa que només puguem tenir valors entre 0 i 255, hem de vigilar quan fem sumes, que no ens passem per tal no obtenir resultat erronis.

Programar en ensamblador o en altres llenguatges de baix nivell és complicat, és molt difícil controlar un error, i un programa per a un tipus d’ordinador no servirà per a un altre ordinador o un mòbil.

Per això avui en dia molt pocs programen en baix nivell, i queda reservat per a alguns enginyers que fan controladors (drivers) on la velocitat és crucial o bé no hi ha una altra manera de fer-ho que emprar certs components de la màquina.

La majoria de gent avui en dia programa en llenguatges d’alt nivell, on no t’has de preocupar de quines peces hi ha per sota.

Exemple de llenguatges d’alt nivell són: PHP, Java, microsoft .NET.

Un llenguatge de mig nivell (entre la màquina i els humans) és el C.

El llenguatge de baix nivell és l’ensamblador (el de mov ax, dx) que és el mes semblant al que parla la màquina (0 i 1 en realitat).

Compilar o interpretar

Precisament, perquè l’ordinador només entén 0 i 1, necessitem algun programa que transformi els nostres programes en que es poden llegir i entendre al llenguatge que entén la màquina, que s’anomena codi màquina o codi binari.

L’ordinador només entén uns – voltatge positiu o zeros.

Al principi els programadors programaven amb uns i zeros, però era òbviament molt difícil de mantenir programes d’aquesta manera.

Trobar errors i fer modificacions era una feina realment complicada.

Per això es van crear els compiladors.

Els compiladors agafen un programa fet en un llenguatge d’alt nivell, mig o baix, i el transformen en codi màquina, que és l’únic que l’ordinador finalment entén.

Però no tots els programes es compilen.

Hi ha uns llenguatges que es diuen interpretats. Això vol dir, que enlloc de compilador, hi ha un intèrpret que en temps real tradueix el llenguatge de programació a codi màquina.

Els llenguatges interpretats mai són tan ràpids com els que es compilen per aquest motiu, perquè l’intèrpret els tradueix sobre la marxa i ha de fer les traduccions del llenguatge a codi màquina.

Diem que interpreta el codi en temps real o on-the-fly (al vol).

PHP és un llenguatge interpretat. Això fa que certament no sigui tan ràpid com el codi en C compilat, però el fet de ser interpretat ofereix alguns avantatges com el fet que un codi en PHP funciona en un Linux, en un Windows, en un Mac, en un Solaris… simplement és qüestió de crear intèrprets per als ordinadors (o mòbils) que sigui i tots els programes escrits en PHP ja funcionaran.

Per exemple, parem atenció a aquest codi en PHP:

<?php
 echo 'Hola Catalunya!\n';
?>

Aquest codi imprimirà per pantalla el missatge Hola Catalunya en qualsevol ordinador amb PHP instal·lat en que l’executem.

No és genial?. :-)

A la imatge el fitxer hola.php executat en el meu Linux. En un ordinador amb windows produeix la mateixa resposta.

Els llenguatges interpretats també s’anomenen de vegades llenguatges de script (script és un guió en anglès).

Perquè PHP?

Per diversos motius.

PHP és un programari lliure, això vol dir que el podem utilitzar sense pagar res, és molt potent, ve preparat amb moltes llibreries per a fer moltes coses com connectar-se a bases de dades, comprimir en format zip, etc… i està orientat a treballar en web.

Facebook per posar un exemple, utilitza PHP, així com la majoria d’empreses líders d’Internet.

Segons la Wikipedia el 75% dels servidors Web d’Internet utilitzen PHP com a llenguatge de programació.

PHP s’integra amb els principals servidors web.

Per tant, per aprendre a programar en PHP necessitarem instal·lar en el nostre ordinador un servidor web, per exemple Apache, també i PHP.

Podem instal·lar un programa com ara Wamp, que inclou en un Apache, MySql, i PHP.

Per programar ens podem instal·lar un programa com Notepad++ que és gratuït i posa colors a les instruccions PHP. Hi ha altres IDE (entorns de desenvolupament) més potents, però ja ho anirem veient. Poc a poc.

De moment instal·lem Wamp i Notepad++.

Ho normal és que necessiteu la versió de 32 bits: http://www.wampserver.com/en/dl32.php

Adreça curta Twitter d’aquest article: http://wp.me/pzeab-1It

Instal·lació de Selenium amb PHPUnit per a windows

dimecres, novembre 17th, 2010

Unes petites instruccions per a instal·lar Selenium RC amb PHPUnit a windows.

Selenium és una eina per a testejar la funcionalitat de les nostres aplicacions web.

Hi ha un complement (plugin) per a Firefox que suporta guions (scripts):

Selenium IDE

Però té moltes menys funcionalitats que la versió servidor i quan intervé Ajax no és capaç de detectar les respostes siguin correctes o incorrectes.

Amb la versió servidor:

Selenium Remote Control (RC)

ho podrem controlar absolutament tot, i veurem les passes que segueix el nostre guió alhora que el navegador anirà fent les instruccions que indica el nostre codi PHP tal i com si fòrem nosaltres qui premèrem els butons al navegador (i veurem tot el que passa).

Primer cal instal·lar la darrera versió de PEAR, al moment d’escriure aquestes línies la 1.9.1.

Per a aquest fi teclejarem si emprem ZendServer:

c:\Program Files\Zend\ZendServer\bin\go-pear.bat

Si emprem wamp o php sense wamp:

c:\wamp\bin\php\php5.3.3\go-pear.bat

Un cop això farem:

pear channel-discover pear.phpunit.de

pear channel-discover components.ez.no

pear channel-discover pear.symfony-project.com

I un cop fet això:

pear install phpunit/PHPUnit

Si tinguèssim una versió molt antiga de PHP, per exemple la versió 5.2.11, i de PEAR, obtindriem un error i caldrà que actualitzem primer PEAR:

pear upgrade

Ara caldrà modificar la secció include_path de l’arxiu php.ini per afegir-hi les rutes a PEAR i al Framework de PHPUnit.

Per a Zend:

C:\Program Files\Zend\ZendServer\bin\PEAR;
C:\Program Files\Zend\ZendServer\bin\PEAR\PHPUnit\Framework;

Per a wamp:

include_path=”.;C:\Selenium\selenium-remote-control-1.0.3\selenium-php-client-driver-1.0.1\PEAR;C:\wamp\bin\php\php5.2.11\pear;c:\php\includes;C:\Program Files\Zend\ZendFramework-1.10.8\library;C:\Program Files\Zend\ZendFramework-1.10.8\library”

Recordeu reiniciar el servidor web per a  que els canvis sorgeixin efecte.

Finalment caldria descarregar el servidor Selenium RC de la URL:

 http://selenium.googlecode.com/files/selenium-remote-control-1.0.3.zip

O de la seva plana de descàrregues:

http://seleniumhq.org/download/

Si el descomprimiu a C:\Selenium haureu d’executar Selenium amb les instruccions:

cd C:\Selenium\selenium-remote-control-1.0.3\selenium-server-1.0.3
java -jar selenium-server.jar

Caldrà que tingueu instal·lar el Java Runtime Environment (JRE).

La ruta a la carpeta PEAR de Selenium també s’haurà d’afegir a l’include_path de php.ini:

include_path=”.;C:\Selenium\selenium-remote-control-1.0.3\selenium-php-client-driver-1.0.1\PEAR;C:\wamp\bin\php\php5.2.11\pear;c:\php\includes;C:\Program Files\Zend\ZendFramework-1.10.8\library;C:\Program Files\Zend\ZendFramework-1.10.8\library”

Les primeres línies del nostre codi també hauran d’indicar on trobar els arxius del framework.

Per a wamp:

<?php
require_once 'Testing/Selenium.php';
spl_autoload_register('selenium_autoload');
function selenium_autoload($name) {
 $tempFilename = explode('_', $name);
 $filename = 'C:\\wamp\\bin\\php\\php5.2.11\\PEAR\\PHPUnit\\Framework\\' . array_pop($tempFilename) . '.php'; 
 if(is_file($filename)) require_once($filename);
}

Per a Zend Server:

<?php
require_once 'Testing/Selenium.php';
spl_autoload_register('selenium_autoload');
function selenium_autoload($name) {
 $tempFilename = explode('_', $name);
 $filename = 'C:\\Program Files\\Zend\\ZendServer\\bin\\PEAR\\PHPUnit\\Framework\\' . array_pop($tempFilename) . '.php'; 
 if(is_file($filename)) require_once($filename);
}

Tingueu present que Selenium executa el navegador amb un perfil (profile) diferent al que emprem normalment, amb la finalitat de realitzar les prives.

Això us causarà problemes en el cas de certificats SSL ja que els haureu d’acceptar cada vegada que comenceu uns nous tests.

Podeu solucionar aquest problema creant un perfil específic per a les proves i passant-li per línia de comandes a Selenium:

-firefoxProfileTemplate "ruta_al_perfil"

Podeu crear un perfil executant firefox -P sense cap procés firefox executant-se prèviament.

Amb windows 7 crearem es diu selenium.profile al directori c:\Documents and Settings\[el nostre usuari de windows]\Program Data\Mozilla\Firefox\Profiles\selenium.profile

Llavors executarem firefox amb aquest perfil (no marcar la opció no preguntar a l’inici) i posar com a url about:config

Als paràmetres de configuració crearem una nova entrada del tipus lògic amb el nom extensions.newAddons i valor false.

Dins del menú Eïnes – Opcions – Avançat – Actualització desmarcarem totes les opcions de la secció “Comprovar si hi ha actualitzacions de Firefox, complements i motors de cerca”.

Si pretenem testellar llocs SSL accedirem a la pestanya Xifrat del mateix menú, premerem sobre Visualitzar els certificats i a la pestanya Servidor afegirem totes les excepcions per als dominis que hem de testejar. Pe: *.codic.cat

Podeu trobar més informació a la documentació de Selenium:

http://seleniumhq.org/docs/05_selenium_rc.html

Servidors web IIS i Apache alhora en el mateix servidor windows 2003 server

dissabte, juliol 24th, 2010

windows té moltes coses que no m’agraden.

Mentre que a Linux, un cop l’has aprés, tot és clar i coherent, i les coses no canvien soles si no modifiques els arxius de configuració (que s’editen a mà), windows és un món multicolor on poden passar moltes coses no desitjades.

Si tenim un servidor microsoft windows 2003 amb més d’una adreça ip i instal·lem el servidor web Apache o qualsevol altre, descobrirem que windows no permet fer que Internet Information Services (IIS, el servidor de microsoft) utilitzi només una ip.

Malgrat que li indiquem que utilitzi només una, intentarà escoltar per totes, i l’Apache no podrà arrencar, o bé si aquest s’executa abans, IIS no podrà arrencar perquè Apache estarà escoltant per una de les adreces Ip.

Aquí us adjunto un truc per a poder fer que IIS només escolti per alguna de les adreces Ip i no per totes.

Es tracta d’editar el registre com mostren les imatges.

La clau que editarem o afegirem és:

My Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\ Services\HTTP\Parameters\ListenOnlyList

És important deixar una línia en blanc. Si us fixeu en el cursor s’ha premut enter després de la darrera adreça Ip.

Indicant-li aquestes adreces, aquestes seran les úniques per a les que escoltarà el servidor web de microsoft i podrem fer que l’Apache o un altre servidor Web escolti de la resta d’ips del servidor.

Alliberat Apache Tomcat 6.0.29 (estable)

dissabte, juliol 24th, 2010

El proppassat dia 22 s’alliberà Apache Tomcat, el servidor web per a Java programari lliure.

Soluciona alguns errors (bugs).

Podeu veure els canvis al changelog (històric de canvis entre versions).