dijous, 26 de març del 2009

Executant els pròpis tests per a la PHP TestFest

Seguint les instrccions per a la redacció d'arixus .phpt per a la PHP TestFest, i l'escrit d'en Zoe Slattery a la revista PHP Architect d'aquest mes, ens descarregarem del repositori Subversion del CCCPHP el programa que executa aquests i fem la primera prova de foc:

--TEST--
Template per a fer nous .phpt
--CREDITS--
Àlex Corretgé - alex@corretge.cat
--FILE--
<?php
echo "Hola Món!";
?>
--EXPECT--
Hola Món!


I executem:
./run53 *.phpt

=====================================================================
PHP : /home/template/download/php
PHP_SAPI : cli
PHP_VERSION : 5.3.0beta2-dev
ZEND_VERSION: 2.3.0
PHP_OS : Linux - Linux testfest 2.6.24-19-server #1 SMP Wed Aug 20 23:54:28 UTC 2008 i686
INI actual : /usr/local/lib/php.ini
More .INIs :
CWD : /var/www/cccphp/testfest
Extra dirs :
VALGRIND : Not used
=====================================================================
Running selected tests.
PASS Template per a fer nous .phpt [template.phpt]
PASS time_nanosleep — Delay for a number of seconds and nanoseconds [time_nanosleep_basic.phpt]
=====================================================================
Number of tests : 2 2
Tests skipped : 0 ( 0.0%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 0 ( 0.0%) ( 0.0%)
Expected fail : 0 ( 0.0%) ( 0.0%)
Tests passed : 2 (100.0%) (100.0%)
---------------------------------------------------------------------
Time taken : 2 seconds
=====================================================================


llegiu l'arxiu README per a poder fer les proves a la vostra instal·lació.

Si voleu contribuir a l'excel·lència del llenguatge PHP, apunteu-vos al grup CCCPHP i demaneu més informació sobre com participar-hi.

dimecres, 25 de març del 2009

Capçaleres per a Charset UTF-8

Per a aplicacions multilingüe és recomenable l'ús del joc de caràcters UTF-8. Si volem que les nostres planes avisin als navegadors d'aquesta situació, independentment de la configuració del servidor, caldrà emetre una capçalera HTTP com:
header('Content-Type: text/html; charset=utf-8');

També cal indicar-ho a la capçalera HTML abans del tag del TITLE
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8" />
</head>
</html>


O amb el crtphpfwk 2.0

$www = new crtmlWWW();
$www->setCharSet('utf-8'); // per omissió ja ho és utf-8.
$head = new crtmlHEAD();
$meta = new crtmlMETA("text/html; charset=utf-8");
$meta->set_httpEquiv("Content-Type");
$head->addContingut($meta);
$www->addContingut($head);
echo $www;

dimarts, 24 de març del 2009

Format de dates en SQLRPGLE

Per a indicar als programes SQLRPGLE que les dates es tractaran en un format concret, per exemple *EUR, cal executar aquesta instrucció:
c/EXEC SQL SET OPTION DATFMT = *EUR, TIMFMT = *ISO
c/END-EXEC

Softcatalà presenta la traducció al català de l'escriptori GNOME 2.26

Ja està disponible la versió 2.26 de l'entorn d'escriptori GNOME. El GNOME proporciona la interfície gràfica d'usuari i un conjunt d'aplicacions que permeten realitzar les tasques habituals amb l'ordinador, com ara l'edició de textos, la navegació per Internet, la reproducció d'àudio/vídeo i la missatgeria instantània, entre moltes d'altres. Tot això posant un èmfasi especial en l'accessibilitat, la internacionalització i els principis d'usabilitat i del programari lliure. El GNOME és compatible amb el Linux, Solaris, *BSD i d'altres sistemes basats en l'UNIX, i és l'entorn d'escriptori predeterminat de les principals distribucions d'aquests sistemes operatius.

Algunes de les novetats que cal destacar en aquesta ocasió se centren en un programa nou d'enregistrament de CD/DVD, el Brasero, una més senzilla compartició de fitxers, la funció d'importació de fitxers de correu PST de l'Outlook que incorpora el client de correu Evolution, així com la compatibilitat amb el protocol Exchange MAPI, la integració del gestor de so PulseAudio a l'escriptori, la videoconferència a través de còdecs lliures amb el programa de missatgeria instantània Telepathy i la incorporació de lectors d'empremtes dactilars, entre d'altres.

Si voleu obtenir més informació sobre totes les novetats del GNOME 2.26, podeu llegir les notes de la versió al lloc web del GNOME.

Com de costum, aquesta versió també estarà traduïda al català, gràcies a l'esforç dels voluntaris del projecte de traducció del GNOME, en el qual us animem a col·laborar subscrivint-vos a la seva llista de correu.

Softcatalà és una associació sense afany de lucre que treballa per la normalització de la llengua catalana en el sector informàtic relacionat amb Internet i les noves tecnologies, a partir de la traducció de programari lliure i de distribució gratuïta. Per a més informació sobre els programes que aquesta associació ha traduït al català, podeu consultar el seu lloc web a http://www.softcatala.org.

dissabte, 21 de març del 2009

Compilant PHP 5.3

En un servidor Ubuntu 8.04 LTS de proves per a la PHP TestFest instal·larem la versió 5.3 de PHP desde el codi font original preparat per a compilar, enlloc del clàssic apt-get install php5. Al fer-ho d'aquesta manera les actualitzacions les haurem de fer manualment i no amb el senzill apt-get update.

El grup PHP de Melbourne ha fet una HowTo molt interessant per a compilar el PHP i seguirem les seves pases.

Treballarem com a root:
sudo su -

Instal·lem la paqueteria prèvia:
apt-get install apache2 apache2-threaded-dev apache2-mpm-prefork apache2-utils aspell curl libaspell-dev libbz2-dev libc-client-dev libcurl4-openssl-dev libfreetype6 libfreetype6-dev libjpeg62 libjpeg62-dev libmcrypt4 libmcrypt-dev libmhash2 libmhash-dev libming-dev libmysqlclient15-dev libncurses-dev libpng3 libpng12-dev libpspell-dev libreadline-dev libsasl2-dev libsnmp-dev libt1-5 libt1-dev libtidy-dev libxml2 libxml2-dev libxml2-utils libxpm4 libxpm-dev libxslt1-dev make mysql-client mysql-server build-essential autoconf

Descarregarem la darrera versió de PHP a la plana on son els snapshots.
cd ~
mkdir download
cd download/
wget http://snaps.php.net/php5.3-200903210730.tar.bz2
tar xjf php5.3-200903210730.tar.bz2
cd php5.3-200903210730
chown -R root.root .


El make install de PHP creu que el LoadModules està a /etc/apache2/httpd.conf. Ubuntu no empra aquest arxiu, però la instal·lació de PHP cascarà. Farem un workarroud:
echo "# Afegit només per a make install PHP" > /etc/apache2/httpd.conf
echo "LoadModule vhost_alias_module /usr/lib/apache2/modules/mod_vhost_alias.so" >> /etc/apache2/httpd.conf


El configurem amb similars mòduls que els de Melbourne:
./configure --with-apxs2=/usr/bin/apxs2 --disable-short-tags --with-openssl --with-zlib --enable-bcmath --with-bz2=/bin/bzip2 --enable-calendar --with-curl --with-curlwrappers --enable-exif --enable-ftp --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-xpm-dir=/usr/lib --with-t1lib --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-imap --with-imap-ssl --with-ldap --with-ldap-sasl --enable-mbstring --with-mcrypt --with-mhash --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql --with-pspell --with-readline --with-snmp --enable-soap --enable-sockets --without-sqlite --enable-sqlite-utf8 --with-tidy --enable-wddx --with-xmlrpc --with-xsl --enable-zip --with-pear --with-kerberos

I ara procedim a compilar el PHP, en una màquina virutal amb 512 MB de RAM i dedicant un sol processador de 2.6GHz triga uns 6 minuts.
make && make install

Instal·larem el php.ini preparat per a desenvolupament
cp php.ini-development /usr/local/lib/php.ini

Adaptarem la configuració a Ubuntu i esborrarem l'httpd.conf per a evitar confusions.
cat /etc/apache2/httpd.conf | grep libphp5 > /etc/apache2/mods-available/php5.load
rm -f /etc/apache2/httpd.conf && touch /etc/apache2/httpd.conf


Afegim el mòdul a l'Apache
a2enmod php5
apache2ctl configtest && apache2ctl restart
/etc/init.d/apache2 restart


Per a certificar que tot funciona correctament farem
echo "<?php phpinfo();?>" > /var/www/index.php
rm /var/www/index.html

i obrirem un navegador que apunti a la IP del servidor que hem muntat, et voilà:

dijous, 19 de març del 2009

PHP TestFest 2009


A l'hora de donar per acabada i deixar llesta per l'ús una aplicació informàtica, és necessari provar-la exaustivament. Comprovar que el seu funcionament és l'adequat i que el codi font en que s'ha programat està lliure d'errors.

Aquesta feina és molt necessària, els programadors som humans i sovint cometem errades, i més en una feina complexa com és la programació d'aplicacions. Cada versió de l'aplicatiu que es realitza cal ser provada, per a demostrar l'absència d'errors en el seu codi de programació. I fins-i-tot, seria desitjable poder provar cadascuna de les línies de codi font que formen l'aplicatiu, per a demostrar que tot ell, en conjunt, no conté cap error.

Aquesta necessària feina i a la vegada tediosa i repetitiva és apta per a fer-la automàticament un ordinador. Per això s'han creat uns entorns d'execució, on cada versió de l'aplicatiu que es vol verificar que no conté errors, es sotmet a un conjunt de tests creats pels usuaris.

Aquest conjunt de tests especifiquen què ha de fer el programa i quins resultats ha d'obtenir en el cas d'un funcionament correcte.

En particular, el PHP TestFest, és això, realitzar tots els tests possibles per a provar cada línia escrita del llenguatge de programació PHP. Cada mòdul, cada llibreria i cada funció del llenguatge ha de ser provada.

És clar que és una feina llarga i extensa, per això se'ns demana la col·laboració de tots els usuaris i programadors de PHP d'arreu del món. El grup d'usuaris CCCPHP (Consell PHP dels Països Catalans http://cccphp.net/) està preparant l'event a Catalunya. Podeu veure la resta de participacions d'arreu, al wiki del PHP TestFest

Entre tots farem possible l'objectiu comú: un PHP lliure d'errors de programació.

La pàgina web oficial, per a més informació http://qa.php.net/testfest.php


Procediment


Tenim entorns d'execució reals, no simulats, de PHP en diferents arquitectures hardware i sistemes operatius.

A través de l'entorn de proves de PHP-QA (PHP Quality Assurance) llançarem les proves creades per nosaltres conjuntament amb la versió que provem de PHP. Això provocarà l'execució dels tests, produint uns resultats.

Si els resultats obtinguts són idèntics als que havíem previst en el fitxer de test programat, aquella part del PHP i en aquella versió en concret, es pot considerar provada amb èxit. S'ha passat la prova.

Si els resultats obtinguts no són exactament iguals als que havíem previst, no haurà passat la prova. Tant en un cas com en l'altre, els resultats es posen en coneixement de l'equip PHP-QA per a ser tinguts molt en compte.

Més detall de com es llancen els tests a http://qa.php.net/running-tests.php

Instal·lant Chromium a Ubuntu

El port per a Linux de Google Chrome es diu Chromium. Encara està en una versió pre-Alfa i cada dia hi ha novetats, pel que és molt encertat fer la instal·lació via paqueteria deb i així actualitzar-se sense dolors.

Seguirem les pases indicades a PPA for Ubuntu Chromium Daily Builds per a la instal·lació via apt-get.

Acreditem PPA afegint les claus al nostre gestor de paqueteria:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xfbef0d696de1c72ba5a835fe5a9bf3bb4e5e17b5

Afegim aquestes instruccions al final del nostre arxiu /etc/apt/sources.list
# Chromium el port Linux de Chrome
deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu hardy main
deb-src http://ppa.launchpad.net/chromium-daily/ppa/ubuntu hardy main


Actualitzem el repositori i instal·lem el chromium
sudo apt-get update
sudo apt-get install chromium-browser


Si no hi ha cap problema, que no els ha d'haver, al menú Aplicacions / InterNet trobarem un nou element, el Chromium Web Browser. En arrencar avisa de que està en una versió molt inicial i que podem tenir problemes.

HTTP_USER_AGENT Mozilla/5.0 (Linux; U; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

Falten moltes coses encara per a implementar, com per exemple poder modificar les opcions, altres temes que no funcionen, però es deixa provar bé, sense Tabs però amb opcions JavaScripts incloses. Ja anirà evolucionant, de moment només serveix per a fer proves de laboratori.

Google Chrome 2.0 beta oberta al públic

Redacció iMàticaUn mes després d’obrir la beta de Chrome 2 als desenvolupadors, Google ha posat a disposició de tot aquell internauta que la vulgui provar, la beta pública d’aquest navegador web.

Logo de Google ChromeEntre les novetats que aporta Chrome 2.0 podem destacar la inclusió de la darrera versió del motor de renderització WebKit. Això li permet disposar de noves funcionalitats com l'autoomplert de formularis, zoom de la pàgina, o autoscroll.

Una funcionalitat que serà molt útil és la d’autoajustament de diferents finestres a l’escriptori. Quan separem una pestanya de la finestra per a crear-ne una altra de nova, tenim la possibilitat que ambdues finestres quedin ajustades de costat per a què l’usuari pugui veure el contingut de les dues repartit a meitat i meitat de la pantalla respectivament. Això és molt pràctic a l’hora de prendre notes d’una finestra del navegador per escriure a l’altra.

La velocitat de renderització de les pàgines web també augmenta.

S’ha obert el canal d’actualització d’aquesta versió beta pública, pel què aquells internautes que la instal·lin al seu ordinador, veuran com es va actualitzant a mesura que en vagin sortint noves versions, de la mateixa manera que fan altres navegadors web com Firefox.


Copyleft 2009 www.imatica.org
Aquesta obra es troba subjecta a la següent llicència:
La difusió, reproducció i traducció d’aquest text es permet lliurement en qualsevol mitjà o suport amb les úniques obligacions de mantenir la present llicència i incloure un enllaç o referència a la pàgina en què es troba l’original dins del servidor www.imatica.org . En mitjans audiovisuals es requereix la cita al mitjà www.imatica.org


Restarem a l'espera de que surti el port per a Linux.

Mapeig de tipus de dades C / RPGLE

Per a poder cridar desde RPGLE procediments escrits en C amb EXTPROC *CWIDEN cal mapejar correctament els tipus de dades que hi ha en un llenguatge i en altri de l'AS/400.

Aquesta taula extreta del web http://www.opensource400.org/callc.html ens mostra la correlació:


C | RPG
------------------------+-----------------------------------
int x | D x 10I 0 VALUE
long x | D x 10I 0 VALUE
long long x | D x 20I 0 VALUE
unsigned int x | D x 10U 0 VALUE
unsigned long x | D x 10U 0 VALUE
unsigned long long x | D x 20U 0 VALUE
double x | D x 8F VALUE
|
short *x | D x 5I 0
int *x | D x 10I 0
long *x | D x 10I 0
long long *x | D x 20I 0
unsigned short *x | D x 5U 0
unsigned int *x | D x 10U 0
unsigned long *x | D x 10U 0
unsigned long long *x | D x 20U 0
float *x | D x 4F
double *x | D x 8F


C | RPG
------------------------+------------------------------------------
struct SSS s | D s VALUE LIKE(SSS)
struct SSS *s | D s LIKE(SSS)
TTT t | D t VALUE LIKE(TTT)
TTT *t | D t LIKE(TTT)
char *s | D s * VALUE OPTIONS(*STRING)
|OR D s nA
void *p | D p * VALUE
|OR D s LIKE(SSS)
wchar_t a | D a 1C VALUE
wchar_t a |OR D a 1G VALUE
wchar_t *a | D a nC
wchar_t *a |OR D a nG

dimecres, 18 de març del 2009

Atributs de pantalla 5250

Relació dels atributs de pantalla 5250 necessaris per a mostrar, per exemple, alarmes en resultats SQL.

4.47.3.1 Valid P-field Values (Nonprotect)

+------------------------------------------------------------------------+
¦ Figure 4-66. P-field values (nonprotect) ¦
+------------------------------------------------------------------------¦
¦ Hex ¦ Limited Color ¦ Full Color ¦
+-----------------------+------------------------+-----------------------¦
¦ 20 ¦ Normal ¦ Green ¦
+-----------------------+------------------------+-----------------------¦
¦ 21 ¦ Reverse image ¦ Green, reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ 22 ¦ High intensity ¦ White ¦
+-----------------------+------------------------+-----------------------¦
¦ 23 ¦ High intensity, ¦ White, reverse image ¦
¦ ¦ reverse image ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 24 ¦ Underscore ¦ Green, underscore ¦
+-----------------------+------------------------+-----------------------¦
¦ 25 ¦ Underscore, reverse ¦ Green, underscore, ¦
¦ ¦ image ¦ reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ 26 ¦ Underscore, high ¦ White, underscore ¦
¦ ¦ intensity ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 27 ¦ Nondisplay ¦ Nondisplay ¦
+-----------------------+------------------------+-----------------------¦
¦ 28 ¦ Blink ¦ Red ¦
+-----------------------+------------------------+-----------------------¦
¦ 29 ¦ Blink, reverse image ¦ Red, reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ 2A ¦ Blink, high intensity ¦ Red, high intensity ¦
+-----------------------+------------------------+-----------------------¦
¦ 2B ¦ Blink, high intensity, ¦ Red, high intensity, ¦
¦ ¦ reverse image ¦ reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ 2C ¦ Blink, underscore ¦ Red, underscore ¦
+-----------------------+------------------------+-----------------------¦
¦ 2D ¦ Blink, underscore, ¦ Red, underscore, ¦
¦ ¦ reverse image ¦ reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ 2E ¦ Blink, underscore, ¦ Red, underscore, ¦
¦ ¦ high intensity ¦ blink ¦
+-----------------------+------------------------+-----------------------¦
¦ 2F ¦ Nondisplay ¦ Nondisplay ¦
+-----------------------+------------------------+-----------------------¦
¦ 30 ¦ Column separator ¦ Turquoise, column ¦
¦ ¦ ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ 31 ¦ Reverse image, column ¦ Turquoise, column ¦
¦ ¦ separator ¦ separator, reverse ¦
¦ ¦ ¦ image ¦
+-----------------------+------------------------+-----------------------¦
¦ 32 ¦ High intensity, column ¦ Yellow, column ¦
¦ ¦ separator ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ 33 ¦ High intensity, ¦ White, reverse image, ¦
¦ ¦ reverse image, column ¦ column separator ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 34 ¦ Underscore, column ¦ Turquoise, ¦
¦ ¦ separator ¦ underscore, column ¦
¦ ¦ ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ 35 ¦ Underscore, reverse ¦ Turquoise, ¦
¦ ¦ image, column ¦ underscore, reverse ¦
¦ ¦ separator ¦ image, column ¦
¦ ¦ ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ 36 ¦ Underscore, high ¦ Yellow, underscore, ¦
¦ ¦ intensity, column ¦ column separator ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 37 ¦ Nondisplay ¦ Nondisplay ¦
+-----------------------+------------------------+-----------------------¦
¦ 38 ¦ Blink, column ¦ Pink ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 39 ¦ Blink, reverse image, ¦ Pink, reverse image ¦
¦ ¦ column separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 3A ¦ Blink, high intensity, ¦ Blue ¦
¦ ¦ column separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 3B ¦ Blink, high intensity, ¦ Blue, reverse image ¦
¦ ¦ reverse image, column ¦ ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 3C ¦ Blink, underscore, ¦ Pink, underscore ¦
¦ ¦ column separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 3D ¦ Blink, underscore, ¦ Pink, underscore, ¦
¦ ¦ reverse image, column ¦ reverse image ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 3E ¦ Blink, underscore, ¦ Blue, underscore ¦
¦ ¦ high intensity, column ¦ ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ 3F ¦ Nondisplay ¦ Nondisplay ¦
+------------------------------------------------------------------------+

4.47.3.2 Valid P-Field Values (Protect)

+------------------------------------------------------------------------+
¦ Figure 4-67. P-field values (protect) ¦
+------------------------------------------------------------------------¦
¦ Hex ¦ Limited Color ¦ Full Color ¦
+-----------------------+------------------------+-----------------------¦
¦ A0 ¦ Normal ¦ Green ¦
+-----------------------+------------------------+-----------------------¦
¦ A1 ¦ Reverse image ¦ Green, reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ A2 ¦ High intensity ¦ White ¦
+-----------------------+------------------------+-----------------------¦
¦ A3 ¦ High intensity, ¦ White, reverse image ¦
¦ ¦ reverse image ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ A4 ¦ Underscore ¦ Green, underscore ¦
+-----------------------+------------------------+-----------------------¦
¦ A5 ¦ Underscore, reverse ¦ Green, underscore, ¦
¦ ¦ image ¦ reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ A6 ¦ Underscore,high ¦ White, underscore ¦
¦ ¦ intensity ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ A7 ¦ Nondisplay ¦ Nondisplay ¦
+-----------------------+------------------------+-----------------------¦
¦ A8 ¦ Blink ¦ Red ¦
+-----------------------+------------------------+-----------------------¦
¦ A9 ¦ Blink, reverse image ¦ Red, reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ AA ¦ Blink,high intensity ¦ Red, high intensity ¦
+-----------------------+------------------------+-----------------------¦
¦ AB ¦ Blink, high intensity, ¦ Red, high intensity, ¦
¦ ¦ reverse image ¦ reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ AC ¦ Blink, underscore ¦ Red, underscore ¦
+-----------------------+------------------------+-----------------------¦
¦ AD ¦ Blink, underscore, ¦ Red, underscore, ¦
¦ ¦ reverse image ¦ reverse image ¦
+-----------------------+------------------------+-----------------------¦
¦ AE ¦ Blink, underscore, ¦ Red, underscore, ¦
¦ ¦ high intensity ¦ blink ¦
+-----------------------+------------------------+-----------------------¦
¦ AF ¦ Nondisplay ¦ Nondisplay ¦
+-----------------------+------------------------+-----------------------¦
¦ B0 ¦ Column separator ¦ Turquoise, column ¦
¦ ¦ ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ B1 ¦ Reverse image, column ¦ Turquoise, column ¦
¦ ¦ separator ¦ separator, reverse ¦
¦ ¦ ¦ image ¦
+-----------------------+------------------------+-----------------------¦
¦ B2 ¦ High intensity, column ¦ Yellow, column ¦
¦ ¦ separator ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ B3 ¦ High intensity, ¦ White, reverse image, ¦
¦ ¦ reverse image, column ¦ column separator ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ B4 ¦ Underscore, column ¦ Turquoise, ¦
¦ ¦ separator ¦ underscore, column ¦
¦ ¦ ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ B5 ¦ Underscore, reverse ¦ Turquoise, ¦
¦ ¦ image, column ¦ underscore, reverse ¦
¦ ¦ separator ¦ image, column ¦
¦ ¦ ¦ separator ¦
+-----------------------+------------------------+-----------------------¦
¦ B6 ¦ Underscore, high ¦ Yellow, underscore, ¦
¦ ¦ intensity, column ¦ column separator ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ B7 ¦ Nondisplay ¦ Nondisplay ¦
+-----------------------+------------------------+-----------------------¦
¦ B8 ¦ Blink, column ¦ Pink ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ B9 ¦ Blink, reverse image, ¦ Pink, reverse image ¦
¦ ¦ column separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ BA ¦ Blink, high intensity, ¦ Blue ¦
¦ ¦ column separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ BB ¦ Blink, high intensity, ¦ Blue, reverse image ¦
¦ ¦ reverse image, column ¦ ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ BC ¦ Blink, underscore, ¦ Pink, underscore ¦
¦ ¦ column separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ BD ¦ Blink, underscore, ¦ Pink, underscore, ¦
¦ ¦ reverse image, column ¦ reverse image ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ BE ¦ Blink, underscore, ¦ Blue, underscore ¦
¦ ¦ high intensity, column ¦ ¦
¦ ¦ separator ¦ ¦
+-----------------------+------------------------+-----------------------¦
¦ BF ¦ Nondisplay ¦ Nondisplay ¦
+------------------------------------------------------------------------+

dimarts, 17 de març del 2009

Campanya per a la jubilació del IE6

S'ha iniciat la campanya que tot creador de web estava esperant. La petició als navegants que empren Internet Explorer 6 que es passin a la versió 7 o 8 o qualsevol altre navegador que compleixi amb els estandards W3C.

No es tracta d'una campanya anti-Microsoft, l'organtizar la mateixa .NET Magazine. Si calculèssim la d'hores que es perden testejant que les planes web es visualitzin correctament en aquest navegador que no compleix la normativa, la quantitat seria astronòmica.

A la plana de la campanya It's time to unite Bring Down IE6 fan una crida per a afegir el logotip i enllaçar al lloc web de la campanya.

Webmasovers del món, uniu-vos!



Codi a implementar per a que s'avisi als navegants que estan emprant IE6 que s'actualitzin:

$.browser.msie6 = $.browser.msie && /MSIE 6\.0/i.test(window.navigator.userAgent) && !/MSIE 7\.0/i.test(window.navigator.userAgent);
if (jQuery.browser.msie6)
{
alert("Esteu navegant amb una versió antiga i descontinuada d'Internet Explorer. Podeu actualitzar-vos a la versió 7 o navegar en català amb el Firefox.");
}

Linux Filesystem Hierarchy Standard

Relació de carpetes arrels en sistemes Linux i Ubuntu que conformen l'estructura jeràrquica del sistema d'arxius, segons l'intent d'estandarització de la Filesystem Hierarchy Standard.



/bin
Conté comandes que poden ser utilitzats tant per l'administrador del sistema com pels usuaris, però que es necessari quan no existeixen altres sistemes de fitxers muntats (per exemple, en mode d'usuari únic). També pot contenir comandes que s'utilitzen indirectament per scripts.


/home
és un concepte bastant estàndard, però és clarament un lloc específic del sistema de fitxers per a dades dels usuaris. La instal·lació pot ser diferent de host a host. Per tant, cap programa s'ha de basar en aquesta ubicació.


/usr
és compartit, només de lectura de dades.

/opt
està reservada per a la instal·lació dels afegits de paquets de programari i per a aplicacions no mantingudes per paqueteria.

/sbin
Arxius binaris del sistema
Serveis públics utilitzats per l'administració del sistema (i altres comandaments root-only) s'emmagatzemen en /sbin, /usr/sbin o /usr/local/sbin. /sbin conté els fitxers binaris essencials per arrencar, restaurar, recuperar i / o reparar el sistema, a més dels binaris a /bin. Programes executats després de que /usr hagi estat muntat (quan no hi ha problemes) es produeixen generalment en /usr/sbin. Els programes d'administració del sistema locals han de situar-se a /usr/local/sbin.

/media
punt de muntatge dels volums removibles com diskettes, cdroms i discs USB.

/dev
directori de localització d'arxius especials o de dispositius.

/etc
jerarquia que conté fitxers de configuració. Un "arxiu de configuració" és un arxiu local que s'utilitza per a controlar el funcionament d'un programa, ha de ser estàtic i no pot ser un binari executable.

/mnt
punt de muntatge temporal dels volums removibles com diskettes, cdroms i discs USB.

/srv
arxius amb dades per a serveis oferts per aquest sistema.

/root
el directori home per a l'usuari root.

/var
arxius amb dades variables.

/lib
conté les imatges de biblioteques compartides necessàries per arrencar el sistema i executar les ordres al sistema de fitxers arrel, és a dir per als binaris a /bin i /sbin

/boot
conté tot el necessari per al procés d'arrencada, excepte els fitxers de configuració no es necessiten en temps d'arrencada i l'instal·lador de mapeig. Per tant / boot emmagatzema les dades que s'utilitza abans de que el nucli d'execució s'inicii en mode d'usuari. Això pot incloure guardat els sectors d'arrencada mestres i del sector d'arxius de mapeig.

Normes CUA

IBM va definir l'any 1988 les normes CUA Common User Access. Si bé és cert que en el model d'aplicacions actuals la usabilitat ha canviat molt, resulta interessant revisar que es va idear sobre aquest tema tants anys enrere.

IBM va crear els manuals

GG22-9508-00 SAA COMMON USER ACCESS BASIC INTERFACE DESIGN GUIDE 1991 ADDENDA
GG22-9509-00 SAA COMMON USER ACCESS TIPS AND TECHNIQUES, VOLUME 2
GG66-3174-00 IMP THE CUA 1989 INTERFACE FOR NON-PROGRAMMABLE TERMINALS USING
GG66-3177-00 COMMON USER ACCESS TIPS AND TECHNIQUES
G321-5480-00 THE EVOLUTION OF THE COMMON USER ACCESS WORKPLACE MODEL - SJ31-3
G321-5481-00 THE DESIGNER'S MODEL OF THE CUA WORKPLACE - SJ31-3
SC26-4583-00 SAA CUA BASIC INTERFACE DESIGN GUIDE
SK2T-0018-00 SAA CUA91 GUIDE & REFERENCE KIT


A data d'avui només hem pogut trobar aquest on-line:
Summarize

TITLE Title Page

COVER Book Cover

EDITION Edition Notice

PREFACE Special Notices

CONTENTS Table of Contents

FIGURES Figures

TABLES Tables
FRONT_1 About This Book
FRONT_1.1 Who Should Use This Book
FRONT_1.2 How to Use This Book
FRONT_1.3 Systems Application Architecture
FRONT_1.4 Related Publications

1.0 Part 1. Introduction and Principles

1.1 Chapter 1. Introduction to CUA
1.1.1 Entry Model
1.1.2 Graphical Model
1.1.3 Text Subset of the Graphical Model
1.1.4 Workplace Environment
1.1.5 CUA Documentation
1.1.6 CUA 1989 Versus CUA 1987
1.1.7 Programming Tools
1.1.8 Summary

1.2 Chapter 2. Principles
1.2.1 Design Approaches
1.2.2 Design Principles
1.2.3 Developing the Users' Conceptual Model
1.2.3.1 Using Metaphors
1.2.3.2 Designing a User-Driven Interface
1.2.3.3 Making the User Interface Consistent
1.2.3.4 Avoiding Modes
1.2.3.5 Making the Interface Transparent
1.2.4 Allowing Users to Control the Dialog
1.2.4.1 Making the Interface Forgiving
1.2.4.2 Making the Interface Visual
1.2.4.3 Providing Feedback

2.0 Part 2. Application Models
2.1 Consistency
2.2 Ease of Use
2.3 User Migration
2.4 Aspects of User Interface

2.5 Chapter 3. Text Subset of the Graphical Model
2.5.1 Process Sequence
2.5.2 Presentation
2.5.2.1 Panels
2.5.2.2 Copyright Notice
2.5.2.3 Pop-Ups
2.5.2.3.1 Dialog Pop-Up
2.5.2.3.2 Prompt List Pop-Up
2.5.2.3.3 Message Pop-Ups
2.5.2.3.4 Help Pop-Ups
2.5.2.4 User Options
2.5.2.5 Application Use of Color
2.5.3 Interaction
2.5.3.1 Object and Action Selection
2.5.3.2 Selection Techniques
2.5.3.3 Selection Indicators and Emphasis
2.5.3.4 Fast Paths
2.5.4 Action Bar Common Actions
2.5.4.1 Standard Action Bar Pull-Downs
2.5.4.1.1 File Pull-Down
2.5.4.1.2 Edit Pull-Down
2.5.4.1.3 View Pull-Down
2.5.4.1.4 Options Pull-Down
2.5.4.1.5 Help Pull-Down
2.5.4.2 Dialog Pop-Ups for File Pull-Down Choices
2.5.4.2.1 Open
2.5.4.2.2 Save As
2.5.5 A Sample Text Subset Application

2.6 Chapter 4. Entry Model
2.6.1 Differences between Entry Model and Text Subset
2.6.2 Entry Model Example: A Simple Data-Entry Application

2.7 Chapter 5. Migration to the Programmable Workstation
2.7.1 Programmable Workstation Differences
2.7.2 Sample Programmable Workstation Screens
2.7.3 Action Bar Differences
2.7.4 Programming Considerations
2.7.5 Summary of Differences

3.0 Part 3. Component Descriptions

3.1 Chapter 6. Introduction to Basic Interface Components
3.1.1 Double-Byte Character Set Considerations
3.1.2 Summary of Interface Components
3.1.3 Component Requirements by Model

3.2 Chapter 7. Panel Elements
3.2.1 Panel ID
3.2.2 Panel Title
3.2.3 Panel Area Separators
3.2.4 Instructions
3.2.5 Headings
3.2.5.1 Column Headings
3.2.5.2 Group Headings
3.2.6 Field Prompts
3.2.7 Descriptive Text
3.2.8 Protected Text

3.3 Chapter 8. Entry and Selection
3.3.1 Entry Fields
3.3.1.1 Entry Field Layout
3.3.1.2 What Happens When an Invalid Value Is Entered
3.3.2 Selection Elements
3.3.2.1 Single-Choice Selection Fields
3.3.2.1.1 Numbering Choices
3.3.2.2 Single-Choice Selection Lists
3.3.2.3 Multiple-Choice Selection Fields and Lists
3.3.2.4 Selection Acknowledgement
3.3.2.5 Selection Element Initial Conditions
3.3.2.6 Selection Element Unavailable Emphasis
3.3.3 Action Lists
3.3.3.1 Action List General Layout
3.3.3.2 Action List Interaction
3.3.3.3 Action Codes
3.3.3.4 Action Entry Fields
3.3.3.5 Positioning the Cursor in Action Lists
3.3.3.6 Action List Processing
3.3.4 Summary of Selection Element and Action List Characteristics

3.4 Chapter 9. Prompt
3.4.1 Prompt Indicator
3.4.2 Tailoring the Prompt List

3.5 Chapter 10. Action Bar and Pull-Downs
3.5.1 Action Bar Layout
3.5.2 Action Bar Content
3.5.3 Cursor Position in Action Bar
3.5.4 Action Bar Pull-Down Layout
3.5.5 Action Bar Pull-Down Content
3.5.6 Action Bar Emphasis
3.5.7 How Users Interact with the Action Bar and Pull-Downs
3.5.7.1 Rules for User Interaction
3.5.7.2 What Happens When an Available Pull-Down Choice is Selected
3.5.7.3 What Happens When an Unavailable Pull-Down Choice is Selected
3.5.7.4 What Happens if There is No Object for an Action to Act On
3.5.8 Action Bar and Pull-Down Interaction Example

3.6 Chapter 11. Command Area
3.6.1 Command Area Layout
3.6.2 How Users Interact with a Command Area
3.6.2.1 The Enter Action
3.6.2.2 The Command Action
3.6.2.3 The Prompt Action
3.6.2.4 The Retrieve Action
3.6.3 Using Both a Command Area and the Action Bar

3.7 Chapter 12. Function Key Area
3.7.1 Function Key Area Layout
3.7.2 Support for Keyboards with 24 Function Keys
3.7.2.1 Function Key Area Content
3.7.3 Support for Keyboards with 12 Function Keys
3.7.3.1 Function Key Area Content
3.7.3.1.1 Function Key Area Definition: SET 1
3.7.3.1.2 Function Key Area Definition: SET 2
3.7.4 Action Abbreviations
3.7.5 Engraved Keys
3.7.6 Function Key Area Common Actions
3.7.6.1 Backward and Forward
3.7.6.2 Cancel
3.7.6.2.1 Responses to Cancel
3.7.6.3 Command
3.7.6.4 Display Keys
3.7.6.5 Display Panel IDs
3.7.6.6 Exit
3.7.6.7 Help
3.7.6.8 Left and Right
3.7.6.9 Mark and Unmark
3.7.6.10 Prompt
3.7.6.11 Refresh
3.7.6.12 Retrieve
3.7.6.13 Set 1/Set 2
3.7.6.14 Switch to Action Bar
3.7.6.15 Undo
3.7.6.16 Enter
3.7.6.16.1 Responses to Enter

3.8 Chapter 13. Scrolling Panel Areas
3.8.1 Scrolling Actions
3.8.2 Scrolling Techniques
3.8.2.1 Cursor-Independent Scrolling
3.8.2.2 Cursor-Dependent Scrolling
3.8.3 Scrolling Information
3.8.3.1 Scrolling Arrows
3.8.3.1.1 Scrolling Arrows Location and Layout
3.8.3.1.2 How Users Interact with Scrolling Arrows
3.8.3.2 Textual Scrolling Information
3.8.3.2.1 Textual Scrolling Information Location and Layout
3.8.3.2.2 How Users Interact with Textual Scrolling Information
3.8.3.3 Textual Scrolling Location Information
3.8.3.3.1 Textual Scrolling Location Information Location and Layout
3.8.3.3.2 Textual Scrolling Location Information Content
3.8.3.3.3 How Users Interact with Textual Scrolling Location Information
3.8.4 Panel Area Scrolling Examples
3.8.4.1 Cursor-Dependent Scrolling
3.8.4.2 Cursor-Independent Scrolling

3.9 Chapter 14. Pop-Ups
3.9.1 Pop-Up Positioning
3.9.1.1 Location of a Pop-Up by Item-Adjacent Positioning
3.9.1.2 Location of a Pop-Up by Offset Positioning
3.9.2 Pop-Up Layout
3.9.3 Pop-Up Content
3.9.4 Pop-Up Interaction
3.9.4.1 How Users Interact with Pop-Ups

3.10 Chapter 15. Help
3.10.1 Types of Help Information
3.10.2 Help Pull-Down in Application Panels
3.10.3 Help Panel Design
3.10.3.1 Help Content
3.10.3.2 Help Title
3.10.3.3 Function Key Area in Help Panels
3.10.3.4 Translation Considerations
3.10.3.5 Help Panel Display
3.10.4 Help Interaction
3.10.4.1 How Users Request Help Actions from the Action Bar
3.10.4.2 How Users Request Help Actions Using Function Keys
3.10.4.3 How Users Interact with Help Pop-Ups
3.10.4.4 How Users End Help

3.11 Chapter 16. Messages
3.11.1 Types of Messages
3.11.2 Message Layout and Content
3.11.3 Message Removal
3.11.4 Audible Feedback
3.11.5 Guidelines for Creating Messages
3.11.6 Message Pop-up Examples

3.12 Chapter 17. Copyright Information

APPENDIX1 Part 4. Appendixes

APPENDIX1.1 Appendix A. Key Assignments
APPENDIX1.1.1 Rules and Guidelines for Assigning Keys
APPENDIX1.1.2 Key Assignment Tables
APPENDIX1.1.2.1 How to Use the Key Assignment Tables
APPENDIX1.1.3 Keyboards Outside the United States
APPENDIX1.1.3.1 Character Key Differences
APPENDIX1.1.4 Emulator Key Mapping
APPENDIX1.1.4.1 Support of AS/400* and System/370*
APPENDIX1.1.4.2 Personal Computer Key Assignments for Terminal Functions

APPENDIX1.2 Appendix B. Color and Emphasis Table
APPENDIX1.2.1 Colors and Emphasis for Nonprogrammable Terminals

APPENDIX1.3 Appendix C. Designing an Object-Action Oriented Application
APPENDIX1.3.1 Objects
APPENDIX1.3.2 Actions
APPENDIX1.3.3 Testing

APPENDIX1.4 Appendix D. Recommended Readings
APPENDIX1.4.1 Getting Started
APPENDIX1.4.2 Getting More Technical
APPENDIX1.4.2.1 User Interface Technology and Techniques
APPENDIX1.4.2.2 User-Centered Design: General Principles
APPENDIX1.4.2.3 User-Centered Design: Case Studies
APPENDIX1.4.2.4 Understanding Users and Their Tasks
APPENDIX1.4.2.5 Human Information Processing

APPENDIX1.5 Appendix E. Translated Terms

GLOSSARY Glossary

INDEX Index

dilluns, 16 de març del 2009

La crisi no afecta el registre de dominis

Pel que es pot veure en la darrera estadística de NetCraft sobre el número de dominis registrats i el número de dominis actius, es pot veure que la crisi no està afectant el número de registres de dominis.


El que si que sembla afectar és al número de dominis actius, que es manté sobre els 68 milions des de l'any passat.

Interpretem que s'està registrant dominis com si fossin opcions de futur i aparcant temporalment les opcions de negoci reals per a quan les empreses. Si teniu cap idea de registre de domini, podeu fer servir http://domini.net on s'ofereix un servei de parking gratuït mentre no us decidiu a executar el projecte.

Diferents dominis poden apuntar a una sola IP, i un sol domini pot apuntar a diferents IP clusteritzades. La norma IPv4, la de quatre paraules de 8 bits, amb que es regeix InterNet avui dia, consta de 4.294.967.296 d'adreces disponibles, es calcula que un 12% estan reservades i alguns càlculs diuen que acabarem amb les IP's versió 4 cap el 2011.

Com a nota friki de l'estadística, es destaca que un 0,02% dels servidors web s'executen per una empresa rusa sobre ZX Spectrums de Sinclair, una màquina que es va descontinuar abans de que existí la World Wide Web.

També és destacable l'augment de servidors qq.com, la missatgeria instantània xinesa més de moda avui en dia. Aquí caldria veure si, com és le cas del servidor de Google, també es tracta d'un port basat en Apache, fet que explicaria la baixada de share d'aquest servidor web, o com comenten a NetCraft és un port de thttpd dels laboratoris ACME.

divendres, 13 de març del 2009

Nou Atenea I v9.1

Presentada la nova estació de treball Atenea I versió 9.1.



Aquesta estació de treball està concebuda per a ser l'ordinador dels especialistes en programació, disseny gràfic i video. Depenent el grau d'especialització, Atenea I és escalable en prestacions.



Al mateix temps que es presenta la nova Atenea I, s'anuncia que es discontinuen l'estació d'oficina Atenea II i el Servidor potent Atenea S. El buit que deixen aquests productes l'omplirem amb estacions ja pre-ensamblades d'HP, Dell i OKI.

dijous, 12 de març del 2009

La Gendarmeria francesa estalvia 50 milions instal·lant Ubuntu

Segons expliquen en aquesta notícia, la Gendaremeria Francesa estalviarà 50 milions d'Euros implementant Ubuntu.

El tinent coronel Javier Guimard ha explicat que aquest any el pressupost de TI es reduirà en un 70 per cent i això no afectarà als seus sistemes. Quan va veure OpenOffice treballant molt bé i saber que estava disponible de forma gratuïta, es va decidir que havia de ser instal·lat en tots 90,000 equips d'escriptori de la Gendarmerie.

Passar d'XP a Vista Microsoft no ens han portat molts avantatges i Microsoft va dir que seria necessari la formació dels usuaris. Passar d'XP a Ubuntu, però, va resultar molt fàcil. Les dos principals diferències són les icones i els jocs. Els jocs no són la nostra prioritat.

Diu Guimard que aquest pas a Open Source també ha ajudat a reduir els costos de manteniment: El manteniment de GNU/Linux d'escriptori fins a la data és molt més fàcil. Abans, un de nosaltres havia de viatjar durant tot l'any només per instal·lar una nova versió d'aplicació anti-virus en els equips d'escriptori en els llocs avançats de la Gendarmeria a les illes a la Polinèsia francesa. Una operació similar en l'actualitat es finalitza el termini de dues setmanes i no requereix viatjar.

dimarts, 10 de març del 2009

Esborrar registres per clau duplicada MySQL

Una bona manera d'esborrar registres per clau duplicada en MySQL és creant un índex UNIQUE amb la instrucció IGNORE.
ALTER IGNORE TABLE `taula` ADD UNIQUE KEY (`campClau`);
Si s'especifica IGNORE, només la primera fila és manté. Les altres files en conflicte són esborrades. Valors incorrectes seran truncats al valor més proper que esdevingui un valor acceptable.

Més informació al manual ALTER TABLE de MySQL

dijous, 5 de març del 2009

Tecles de funció a Firefox

Relació de tecles de funció del Firefox per a Linux
  • F1 (Ajuda)
  • F3 (Cercar)
  • F5 (Refrescar)
  • F6 (focus a la barra d'adreces)
  • F7 (navegar sense ratolí)
  • F11 (pantalla complerta)
  • F12 (Firebug)

dimecres, 4 de març del 2009

Com fer /tmp noexec

Per a prevenir-se de possibles atacs d'scripts pujats des del web a la carpeta /tmp, una bona manera és fent que /tmp no sigui apta per a l'execució d'scripts.

Seguint les pases indicades a RimuHostin aconseguirem aplicar fàcilment aquesta mesura de seguretat.

# create a 10MB block device which will be the /tmp file system
cd /root
dd if=/dev/zero of=/root/tmpMnt bs=1024 count=10000
mkfs.ext3 -F /root/tmpMnt
# mount it at /tmp
mv /tmp /tmp.backup
mkdir /tmp
mount -o loop,noexec,nosuid,rw /root/tmpMnt /tmp
chmod 0777 /tmp
# make it so it is used on boot up
if ! grep -qai tmpMnt /etc/fstab ; then
echo "/root/tmpMnt /tmp ext3 loop,noexec,nosuid,rw 0 0" >> /etc/fstab
fi
# check your syntax is ok
mount -a
# check that programs in /tmp will not run
cp /bin/ls /tmp/
/tmp/ls

dimarts, 3 de març del 2009