dimarts, 7 de desembre del 2010

Com crear un template d'Ubuntu en un XenServer

Per a crear un template d'Ubuntu en un Citrix XenServer, executarem aquest script a la XenServer console.

makeubuntu.sh

#!/bin/bash
## makeubuntu.sh, this creates Ubuntu server 10.04 32 and 64 bit templates on Xenserver 5.6. Net install only
## Author: David Markey
## This is not an officially supported guest OS on XenServer 5.6

LENNY=$(xe template-list name-label=Debian\ Lenny\ 5.0\ \(32-bit\) --minimal)

if [[ -z $LENNY ]] ; then
echo "Cant find lenny 32bit template, is this on 5.6?"
exit 1
fi

distro="Ubuntu 10.04"
arches=("32-bit" "64-bit")


for arch in ${arches[@]} ; do
echo "Attempting $distro ($arch)"
if [[ -n $(xe template-list name-label="$distro ($arch)" params=uuid --minimal) ]] ; then
echo "$distro ($arch)" already exists, Skipping
else
NEWUUID=$(xe vm-clone uuid=$LENNY new-name-label="$distro ($arch)")
xe template-param-set uuid=$NEWUUID other-config:install-methods=http,ftp \
other-config:install-repository=http://archive.ubuntu.net/ubuntu \
PV-args="-- quiet console=hvc0 partman/default_filesystem=ext3" \
other-config:debian-release=lucid \
other-config:default_template=true

if [[ "$arch" == "32-bit" ]] ; then
xe template-param-set uuid=$NEWUUID other-config:install-arch="i386"
else
xe template-param-set uuid=$NEWUUID other-config:install-arch="amd64"
fi
echo "Success"
fi

done

echo "Done"







Nota: M'ha estat complicat trobar l'enllaç d'on vaig treure aquest script, així que prego disculpes al creador del mateix per no oferir l'origen.

dijous, 2 de desembre del 2010

Instal·lant vim a CentOs

L'editor vim està en aquests paquets
yum install vim-common vim-enhanced vim-minimal

Aquí trobarem una xulleta de vim.

divendres, 15 d’octubre del 2010

Descarregada tecnològica a Verges

Coincidint amb la fira ecològica, el dissabte 16 d'octubre des de quarts de 10 fins a les dues de la tarda podeu dur aquell ordinador antic que ja no feu servir i no sabeu si funciona.

No importa l'estat en que es trobin les coses que dueu, de tot el que recollim en aquesta descarregada tecnològica, n'agafarem el que es pugui fer servir i potser de cada tres o quatre ordinadors en fem un.

Ordinadors, discs, memòries, targetes, teclats, pantalles, ratolins, cables, impressores... tot el que tingui relació amb la informàtica i ja no empreu.

Es podran dur les màquines a Corretgé.com, al carrer de la Font número 2 (Plaça Major) fins el divendres 29 d'octubre.

Amb els ordinadors i peces recollides a la Descarregada Tecnològica, farem un taller per als i les joves de Verges que vulguin aprendre a reparar (potser apedaçar és més adhient ;-) ordinadors.

La primera hora serà teòrica i s'explicarà per sobre el funcionament dels ordinadors.

La resta d'hores, farem quatre o cinc grups, en funció de lo bé que hagi anat la descarregada i començarem a muntar ordinadors 'nous'.

Després tocarà instal·lar el sistema operatiu per a poder fer anar els ordinadors que hem creat amb les peces descarregades. Serà Programari Lliure: l'autopista sense peatge cap a la sobirania tecnològica.

Instal·larem una distribució de Linux anomenada Ubuntu que és molt fàcil d'instal·lar, fer anar i actualitzar.

Si algú vol dur el seu ordinador de casa per participar de la festa de la instal·lació, endavant! no ens el quedarem pas per a l'Aula ;-)

dilluns, 27 de setembre del 2010

Xulleta d'instruccions MySQL

Els autors del llibre Get It Done With MySQL 5&6, Peter Brawley i Arthur Fuller ens ofereixen un recull de receptes mySQL molt ben endreçat.

Xulleta MySQL

dimecres, 22 de setembre del 2010

Correus prioritaris al NetAccess

Els clients de Corretgé.com que gaudeixen del paquet NetAccess, la integració de les Google Apps al seu pròpi domini, ara gaudiran dels correus electrònics prioritaris.








Consulta del correu electrònic amb més rapidesa

sections Proveu de llegir i de respondre primer els missatges de la secció "Importants i no llegits". Marqueu amb una estrella els que necessitin un seguiment i continueu amb la secció "La resta". Si sortiu de "Prioritaris", podeu tornar-hi si feu clic a l'enllaç que hi ha al costat de "Safata d'entrada", a la navegació lateral de Gmail.

Funcionament

Per identificar quins correus electrònics són més importants, els servidors de Gmail comproven diferents tipus d'informació, com les persones a qui envieu més correus electrònics i amb qui xategeu més, amb quina freqüència ho feu i quines paraules clau apareixen normalment als correus electrònics que llegiu.

Formació de "Prioritaris"

Si "Prioritaris" s'equivoca, podeu utilitzar els botons Mark important Mark not important per marcar una conversa com a important o com a no important; "Prioritaris" aprendrà ràpidament quines preferències teniu.
sections

I molt més...

  • Personalització de "Prioritaris": Podeu canviar el tipus de correu electrònic que veieu a cada secció (per exemple, podeu passar de la secció "Importants i no llegits" a només "Importants"). Només cal que feu clic a les capçaleres de les seccions o que aneu a la pestanya de "Prioritaris" que hi ha a Configuració per personalitzar-los.
  • Utilització de filtres per garantir la importància: Si voleu tenir la certesa total que determinats missatges es marquin sempre com a importants (com, per exemple, els correus electrònics del vostre cap), podeu establir un filtre i triar l'opció "Marca'l sempre com a important".
  • Cerques per importància: Si voleu veure tots els missatges que s'han marcat com a importants, tant els llegits com els no llegits, podeu fer una cerca de Gmail amb les paraules "is:important".
  • Desactivació: Si "Prioritaris" no us convenç, podeu tornar fàcilment a la safata d'entrada normal. Només heu de fer clic a "Safata d'entrada" a l'esquerra. També podeu ocultar "Prioritaris" des de la secció Configuració de Gmail.
Per obtenir més informació sobre la gestió dels correus electrònics amb "Prioritaris", visiteu el Centre d'Ajuda de Gmail

dilluns, 6 de setembre del 2010

Traductors automàtics i humans

Amb l'arribada d'Apertium al món de les traduccions automàtiques, a Serveis Informàtics Corretgé.com vam voler comparar traduccions que ofereix aquest traductor OpenSource anomenat Apertium, el Google Translate i una persona humana: na Terry Batten de Mackenzie School BCN.

El text a traduir són els dos primers paràgrafs del post sobre Google Wave de la setmana passada.

Val a dir que generalment quan s'empren traductors automàtics s'esciu pensant en ells, i aquest no és el cas, hem fet Copiar i enganxar.

Per al text:
El 4 d'agost Google va anunciar que abandonava el projecte Wave, però que mantenia el servei com a mínim fins a finals d'any.

La confusió estava servida: els que no n'havien sentit a parlar mai del Wave, preguntaven, els que en tenien un compte però no ho feien servir, entraven a veure si hi havia novetats, que n'hi han hagut! i els que el fem servir, començàvem a planejar una retirada ordenada de continguts del Wave.


Google Translate sembla ser que enten què és Wave qui deixa el projecte:
On 4 August Google announced that Wave left the project, but kept the service at least until the end of the year.

The confusion was served: those who had not ever heard of the Wave, asked those who had in mind but never used, came to see if there was news that there have been!and that we use, we began to plan an orderly withdrawal of the contents of the Wave.


Apertium malforma la data i costa de llegir:
The 4 of August Google announced that it abandoned the project Wave, but that kept the service at least until finals of year.

The confusion was served: those that had not felt to speak never of the Wave, asked, those that had an account but did not use it, entered to see if there were novelties, that have had ! And those that use it, began to plan a withdrawal ordered of contents of the Wave.


Na Terry Batten de Mackenzie School BCN enten realment que és el que es vol dir:
On the 4th of August Google announced that it was abandoning the project Wave, but that they would maintain the service until at least the end of the year.

Confusion reigned: those that had never heard of the Wave, started asking about it,, those that had an account but had never used it, entered to see if there was anything new. And those that had used it, began to plan an organised retrieval of Wave's contents .


Els traductors automàtics encara no són de fiar, i costarà molt que ho siguin, si mai arriba a succeir, però es constata que hi ha avenços significatius.

Com a curiositat, en aquest video podreu entendre com funciona el traductor de Google, força interessant, sobretot pq es millora a sí mateix a mesura que 'llegeix' traduccions.

dimarts, 24 d’agost del 2010

Realment Google abandornarà Wave?

El 4 d'agost Google va anunciar que abandonava el projecte Wave, però que mantenia el servei com a mínim fins a finals d'any.

La confusió estava servida: els que no n'havien sentit a parlar mai del Wave, preguntaven, els que en tenien un compte però no ho feien servir, entraven aviam si hi havia novetats, que n'hi han hagut! i els que el fem servir, començàvem a planejar una retirada ordenada de continguts del Wave.

A Corretgé.com creiem que el Wave és una eina molt imortant per a la nova InterNet, i ens ha sobtat que Google llenci la tovallola tant aviat... si no és que tot plegat formi part d'una campanya de marketing malanomenat 'viric' sobre el Wave.

Què el Wave estigui avançat a la seva època no ha de ser motiu per a que Google, també coneguda com a The Beta Company, el fulmini en un tan breu espai de temps. Que el públic en general no està demanant una eina d'aquest tipus ho demostren les estadísitiques Trends de Google. Però l'anunci d'abandonament de la plataforma Wave genera uns esquemes mentals impensables fa un any: I si Google fes el mateix amb el GMail? Evidentment això no creiem que passi, però certament Google ha obert la porta al dubte.

I totes les empreses que han desenvolupat add-ons per a Wave? ho faran per a la propera novetat que presenti Google?

Si no ho resol ràpidament Google pot perdre la possibilitat de posicionar-se com a lider en la infraestructura de comunicació personal i comercial de la nova InterNet, el nou correu electrònic.

A diferència del que li va passar a Apple amb el seu Newtoon, a InterNet Google no pot abandonar plataformes de futur, a InterNet generalment guanya qui abans es posiciona en un sector. El Newtoon va ser també un giny avançat a la seva època, i ara Apple és lider en aquest sector.

Amb tot, és mentida que Google hagi deixat de desenvolupar per a Wave, aquesta setmana ha introduit un canvi que provoca que no es pugui accedir al Wave des de Chromium, el port de la comunitat Chrome per a Linux, necessari quan no existien paquets Chrome.


No és rés que no es pugui sol·lucionar instal·lant el paquet oficial de Chrome, però al més pur estil deja vu de Màtrix, ens mostra que encara remenen el codi.

I si és mentida que abandonaran Wave? i si fusionen Sites, Buzz i Wave en una única plataforma tota ella sota protocol wave? Això amic meu, tansols ho sap el vent... i les ones.

dissabte, 14 d’agost del 2010

Com fer un Upgrade d'Ubuntu Server 8.04 LTS a 10.04 LTS d'una tacada

Per actualitzar els servidors Ubuntu 8.04 LTS a la següent LTS, la 10.04 d'una tacada, hem de seguir aquestes pases amb la màquina dedicada per a nosaltres (cal reinicar diversos cops):

- Actualitzar el nostre sistema a la darrera versió de la seva release i reniciem per aplicar canvis en el kernel si hi son:
sudo apt-get update
sudo apt-get upgrade
sudo shutdown -r now

Si normalment actualitzem el sistema, amb un cop n'hi haurà prou, si no, cal repetir aquest procediment fins assegurar-nos estar a la darrera versió.

- Instal·lem l'update manager core, si és que no el tenim ja:
sudo apt-get install update-manager-core
I ens assegurem que la configuració a l'arxiu /etc/update-manager/release-upgrades indica que únicament actualitzi a versions LTS:
Prompt=lts

- Iniciem la actualització
sudo do-release-upgrade --proposed
I seguim les instruccions de la pantalla

dijous, 5 d’agost del 2010

Solucionant /bin/sh^M: bad interpreter o /bin/bash^M: bad interpreter

Instal·lant la darrera versió del generador de documentació PhpDocumentor, ens hem trobat que l'script phpdoc peta per

bash: ./phpdoc: /bin/sh^M: bad interpreter: No such file or directory


L'error rau en que l'script es va programar en un editor de windows que ha desat el x'0d0a' per salt de línia que l'intèrpret de comandes de Linux li costa de gestionar.

Hi ha diferents maneres de solucionar aquest problema, una és executant la utilitat dos2unix, si no la tenim la instal·lem amb:

sudo apt-get install tofrodos


I procedim a la conversió de l'script phpdoc

dos2unix phpdoc


I ara que ja tenim l'script amb un únic i necessari x'0a'


Procedim a provar el PhpDocumentor generant la seva pròpia documentació

./phpdoc -c makedocs

dimarts, 3 d’agost del 2010

NetBeans 6.9 IDE PHP en català

Arrel de tenir molts problemes a Corretgé.com amb l'Ecplipse PDT en un Windows 7 Professional 64 bits, hem decidit provar el NetBeans 6.9 que també permet editar PHP, que tanta get en parla.

Els problemes amb la màquina windows, inclos executant-se amb el modus de compatibilitat XP, han continuat amb el NetBeans, així que el problema no és de l'Eclipse, rau en la màquina java de Win7/64.

L'entorn ens ha semblat molt correcte, gestió de subversion de fàbrica, gestor de projectes i mega classes include... bàsicament tot el que ha de tenir un IDE PHP.
A més a més, com podeu veure a les pantalles copiades, l'editor està en català. Això sempre ajuda a pujar nota ;-)

Així que l'hem instal·lat a l'entorn de desenvolupament Linux i l'observarem durant un periode de temps raonable. Us tindrem informats.

divendres, 9 de juliol del 2010

EinesTIC per a Autònoms i micro-PiMES

El pla Pimestic ha alliberat EinesTIC és una acció que s’emmarca dins el pla PIMESTIC per oferir un conjunt d’eines informàtiques per cobrir les necessitats bàsiques informàtiques dels treballadors autònoms i les petites empreses i facilitar d’aquesta manera la introducció de les tecnologies de la informació i les comunicacions (les TIC) en la gestió d’aquests negocis.

Aquest conjunt d’aplicacions es troben integrades en un tauler de control, des del qual es pot accedir a qualsevol funcionalitat que es desitgi, i son les següents:
  • Una versió modificada d'Abanq, d'InfoSial, SL, http://abanq.org/. La crida a l'aplicació es fa des del tauler de control, que permet l'accés directe a les diferents funcionalitats (gestió de clients, proveïdors, agents comercials, pressupostos, comandes, albarans, factures i productes). També permet la impressió d'ofertes, comandes, albarans i factures amb les plantilles seleccionades en l'EinesTIC.
  • Una versió modificada de l'aplicació de punt de venda (TPV) OpenbravoPOS, d'Openbravo, SL,http://www.openbravo.com/. La variació es compon d'unes modificacions en el codi per permetre'n la integració amb l'aplicació de gestió, per a la sincronització de productes definits des del tauler de control i la sincronització de les factures generades des del TPV.
  • El producte OpenOffice, http://www.openoffice.org/, per a totes les funcionalitats d'ofimàtica (edició de textos,elaboració de presentacions, cartes, faxos...).
  • Un mòdul propi de generació de models d'Hisenda.
  • Gimp com a programa de retoc fotogràfic, http://www.gimp.org/
  • Firefox com a navegador web, http://www.mozilla.org/firefox/
  • Thunderbird com a gestor de correu electrònic, http://www.mozilla.org/thunderbird/
  • En les distribucions per a sistemes Windows, l'EinesTIC inclou l'aplicació PDFCreator per a la creació de PDF. Aquesta eina permet crear fitxers PDF des de qualsevol aplicació que pugui imprimir.
Serveis Informàtics Corretgé.com té àmplia experiència en aquests paquets. Si necessiteu assessorament especialitzat, poseu-vos en contacte amb Corretgé.com.

divendres, 2 de juliol del 2010

Comparativa velocitat gravació discs durs

En el següent experiment de Corretgé.com observem la gravació d'un arxiu d'1 MB sobre diferents suports i els temps obtinguts, en tots hem fet servir la instrucció dd:

dd if=/dev/zero of=/tmp/1gb.tmp bs=1M count=1

Obtenim la mitja de només 3 mostres, totes són similars:

En un SATA Western Digital Caviar Black normal i corrent en ASUS P5Q: 322 MB/s
En dos SATA Western Digital Caviar Black amb RAID-1 per placa ASUS P5Q: 525 MB/s
En unitat NFS sobre el servidor en RAID anterior a GigaBit: 60,1 MB/s
En disc virtual VMWare sobre servidor RAID anterior: 506 MB/s
En disc virtual XenServer sobre servidor amb discos SSD: 935 MB/s
En unitat NFS sobre el servidor XenServer anterior: 341 MB/s

dijous, 20 de maig del 2010

Google Wave al NetAccess

En Guillem, que gaudeix de les Google Apps amb el seu propi domini al tenir contractat un NetAccess amb Corretgé.com, ens ha informat de la possibilitat d'integrar Google Wave dins el NetAccess.



El funcionament és idèntic al Wave, però amb l'avantatge de que l'adreça de wave i de correu electrònic és la mateixa i amb el mateix domini contractat al NetAccess.



Si heu de contactar via wave amb qualsevol dels col·laboradors de Serveis Informàtics Corretgé.com, ho podeu fer a partir d'ara amb l'adreça corporativa nom@corretge.cat

Els clients de NetAccess actuals que vulguin tenir aquesta opció habilitada, ens ho poden sol·licitar, sense cap cost administratiu, a info@corretge.cat

divendres, 14 de maig del 2010

Permissos amb chmod i el modus octal

Per canviar permissos d'arxius en Linux emprem chmod i el tipus de permís que volem atorgar:

ugo/a -> per a user, group, other i all
rwxs -> per a read, write, execute i suid

També hi ha la manera octal de representació d'aquests permisos i s'empra sobretot en les màqueres de creació d'arxius en sistemes de fitxers externs i samba per exemple.

És el que es coneix com a sistema octal, el primer dígit de la dreta per a other, el segon per a group i el tercer per a user.

Cada xifra el que vol dir:

7 -> rwx read, write, execute (+rwx)
6 -> rw- read, write (-x+rw)
5 -> r-x read, execute (-w+rx)
4 -> r-- read (-wx+r)
3 -> -wx write, execute (-r+wx)
2 -> -w- write (-rx+w)
1 -> --x execute (-rw+x)
0 -> --- no permissions (-rwx)

dijous, 13 de maig del 2010

Ubuntu Enterprise Cloud

En aquest enllaç trobem un interessant article sobre com instal·lar un Ubuntu Enterprise Cloud.

MySQL ssh tunel

De vegades, ja sigui per seguretat o per necessitat de saltar-se proteccions d'accés a xarxa de servidors MySQL, necessitem accedir-hi al servidor a través d'un tunel assegurat amb ssh.

Seguin les passes indicades per Marion Bates a l'article MySQL ssh tunnel Quickstart crearem ràpidament una connexió per ssh cap a un servidor MySQL.

Només cal picar en una terminal:

ssh -L 3307:nom.servidor.mysql:3306 usuari@nom.servidor.ssh

Això obre un tunel a localhost:3307 que apunta al servidorMySQL:3306 via connexió ssh.
Hem indicat el port local 3307 pq a la màquina on fem això tenim un servidor MySQL de proves.

Si la màquina oberta a ssh és la mateixa que te el servidor MySQL, nom.servidor.mysql serà localhost.

Aquesta connexió la deixarem oberta, mentre estigui activa la terminal, estarà actiu el tunel.
Per a connectar-nos, obrim el MySQL QueryBrowser i indiquem host 127.0.0.1, port el 3307 i un usuari i contrasenya vàlid per a connectar-se a la base de dades MySQL.



divendres, 30 d’abril del 2010

Rational Open Access RPG Edition

Encara no hem pogut provar l'Open Access RPG, però seguim de prop les evolucions i controversies.

La revista IBM Systems Magazine Power Systems digital fa una breu pinzellada del que representa Open Access RPG.
Recordo una conversa amb en Xavier Navarro de Recursos AS/400 a finals del segle anterior on arribavem a la conclusió de que el futur de l'AS/400 passava per poder tenir arxius WEBF, com tenim DSPF, que unicament el que havien de fer és preparar la corrent de dades 5250 per a WEB.

Han passat més de 10 anys, i IBM ha decidit fer el pas amb l'Open Access RPG que permet apropar les dades gestionades per l'RPG a tot tipus de dispositiu.

Els programes RPG tradicionalment feien la sortida interactiva dels seus programes cap a dispositius 5250... emulacions avui en dia. I per a fer planes web o desar la informació en arxius plans s'havia de recòrrer a API's del sistema.

Open Access RPG proporciona la possibilitat d'aplicar una capa de gestió per a aquesta funcionalitat, per exemple mapejar la sortida a pantalla cap a web, la sortida a impressió a un full de càlcul, o l'accés a base de dades amb un servei web.

La paraula clau, mai millor dit, és HANDLER


Fmyfile cf e workstn
handler('MYLIB/MYSRVPGM(hdlMyfile)')
F extdesc('MYFILE')
F


Per a poder crear aquests gestors, hem de tenir la biblioteca QOAR, proporcionada pel producte 5733-OAR, i ens proporciona includes ILE per a RPG i COBOL.

Aquesta possibilitat obre un nou ninxol de mercat per a les empreses que programem utilitats per a departaments d'informàtica AS/400 i obre moltes possibilitats de modernització de les actuals aplicacions 5250 de pantalla verda.

De moment els manuals d'RPG de la versió v7r1 encara no inclouen aquesta instrucció HANDLER, podem esperar una mica més.

dijous, 29 d’abril del 2010

i18n el numerònim d'Internacionalització

Avui hem descobert que el mot i18n emprat per a indetificar la internacionalització de les aplicacions, és un numerònim.

Principalment els numerònims s'empren per abreviar paraules emprant el so dels números: a10 per Adéu, OS3 per Ostres, K7 per Cassette, etc...

També, i és el cas que ens ocupa, es pot formar un numerònim posant la primera lletra, un número i la darrera lletra. El número es correspon al número de lletres suprimides. Així doncs, i18n val per internationalization.

En alguns casos, es posen lletres de caixa alta o baixa, per a evitar confusions, per exemple L10n correspon a Localisation i així distingir fàcilment entre I/i i L/l.

Més info a la Wiki per numeronym.

dimecres, 28 d’abril del 2010

TeamViewer for Linux

Ja està disponible la versió per a Linux (βeta) del capturador d'escriptoris remot TeamViewer.

Hi ha un paquet de TeamViewer per a Ubuntu de 32 i de 64 bits. A Corretgé.com hem provat, molt satisfactòriament, el TeamViewer de 32 bits.

TeamViewer permet la captura d'escriptoris sense haver de modificar routers i firewalls, si es te accés a la navegació per InterNet, es pot fer servir TeamViewer.

TeamViewer encripta la sessió amb una codificació de 256-bit AES.

Fins ara es podia fer servir el TeamViewer via Wine, només per a capturar escritoris d'altri.

Es tracta d'una molt bona notícia! Gràcies TeamViewer!

dissabte, 24 d’abril del 2010

Provant l'ADSL d'Orange

Avui ens han confirmat la portabilitat de la línia ADSL de backup de Telefònica a Orange. Per a la principal, de moment continuem amb Telefònica.

Hem configurat el router antic, el d'Orange arribarà la setmana vinent i hem tingut una agradable sorpresa:

El ratio de baixada és el mateix que teníem amb Telefònica, però el de pujada s'ha duplicat quasibé!

Download Speed: 5816 kbps (727 KB/sec transfer rate)
Upload Speed: 521 kbps (65.1 KB/sec transfer rate)



Per mesurar-ho hem fet servir el test de velocitat d'adsl4ever.

Està bé això de pagar menys per tenir-ne més :-)

divendres, 16 d’abril del 2010

PHP Zend Server per a AS/400 - IBM i

Diu la Zend Newsletter que el PHP s'ha convertit en el llenguatge d'elecció per a la modernització d'aplicacions COBOL i RPG, i Zend Server 5.0 amb suport per a AS/400 - IBM i tindrà un paper clau per garantir implementacions exitoses.



Més informació a http://www.zend.com/products/server/zend-server-ibm-i

És clar que falta per veure l'impacte d'Open Access per a RPG dins l'entorn web, les espectatives són molt altes.

dimecres, 31 de març del 2010

Instal·lant skipfish a Ubuntu

Skipfish és un scanner de vulnerabilitats en aplicacions web de Google.

És força ràpid (prop de 2000 peticions per segon a una LAN) i exhaustiu, li farem un seguiment sobretot per la senzillesa a l'hora d'executar-ho.

Per a instal·lar-ho a Ubuntu, cal descarregar el programa des del Google Code SkipFish i descomprimir-ho.

Prèviament necessitarem tenir instal·lades algunes llibreries, farem:
sudo apt-get install apt-get install libssl-dev zlibc zlib-bin libidn11-dev libidn11

I iniciarem la compilació de l'aplicació amb un senzill
make

Copiem el diccionari a emprar, com que estem fent proves ho fem amb el complete :-)
cp dictionaries/complete.wl ./skipfish.wl

I procedim a fer el test de seguretat
./skipfish -o ../test.skipfish http://url.projecte.dev

Amb l'opció C podem indicar una cookie que contingui l'ID de sessió. És a dir que podem loginejar-nos normalment i un cop autentificats, executar l'scanner.

És important que les primeres proves les fem en entorns de desenvolupament local i desconnectem els logs del servidor web, no sigui cas que iniciem un auto atac DoS!

Una revisió complerta d'un web relativament petit, en xarxa local amb infraestructura a Gigabit, ha trigat més de 12 hores.

Una curiositat: per temes de seguretat el resultat no es visualitza correctament amb el Chromium i sí amb el Firefox si s'executa directament desde file://. Per a visualitzar-ho desde Safari o Chrome cal posar el resultat en una carpeta gestionada per un servidor web.

dilluns, 29 de març del 2010

Emulant SEQUENCE d'Oracle a MySQL

Oracle te un component força interessant per a la gestió de comptadors. És l'objecte SEQUENCE.

Per obtenir el següent valor de la seqüència executarem
SELECT nom_sequencia.nextval FROM DUAL;

A MySQL podem muntar un workarround per a emular aquesta característica d'Oracle creant una taula i dues funcions pròpies.

Creem una taula anomenada ubqSequencia on el nom de la seqüencia és clau primaria:
CREATE TABLE `ubqSequencia` (
`sqId` varchar(64) NOT NULL COMMENT 'Nom de la seqüència',
`sqCnt` bigint(20) UNSIGNED NOT NULL COMMENT 'Comptador de la seqüència',
`sqInc` int(11) NOT NULL default '1' COMMENT 'Increment per omissió de la seqüència',
`sqObs` longtext COMMENT 'Observacions',
PRIMARY KEY (`sqId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Comptadors emulem create sequence a Oracle'


Creem una funció anomenada ubqSequenciaNextVal que li passem el nom de la seqüència i ens retorna el comptador un cop incrementat. És l'equivalent a la pseudo columna NEXTVAL d'Oracle per a objectes SEQUENCE.
DELIMITER $$

DROP FUNCTION IF EXISTS `ubqSequenciaNextVal`$$
CREATE FUNCTION `ubqSequenciaNextVal`(psqId CHAR(64)) RETURNS bigint(20)
BEGIN

insert into ubqSequencia (sqId, sqCnt, sqInc) values(psqId,1,1)
on duplicate key update sqCnt = sqCnt + sqInc;

RETURN (select sqCnt from ubqSequencia where sqId = psqId);

END$$

DELIMITER ;


Aquesta funció inicialitza sempre la seqüència que em passat com a paràmetre. En cas de que salti la clau duplicada, augmenta el comptador amb l'increment establert a la mateixa taula pel mateix comptador, per omissió +1.

I la funció ubqSequenciaCurrVal que retorna el valor actual del comptador. L'equivalent a la pseudo columna CURRVAL d'Oracle pels objectes SEQUENCE.
DELIMITER $$

DROP FUNCTION IF EXISTS `ubqSequenciaCurrVal`$$
CREATE FUNCTION `ubqSequenciaCurrVal`(psqId CHAR(64)) RETURNS bigint(20)
BEGIN

RETURN (select sqCnt from ubqSequencia where sqId = psqId);

END$$

DELIMITER ;


Un dels aspectes positius de tenir els comptadors a nivell de base de dades i no per lògica de programes, és que podem actualitzar els comptadors en MySQL des d'instruccions massives. Per exemple:


update PROVA set nouComptador = ubqSequenciaNextVal('XXYYZZ');


Actualitzant el camp nouComptador de tots els registres de la taula PROVA amb la seqüència XXYYZZ. Les proves realitzades han consumit 0.0946 segons en fer la seqüència de 414 registres en un update massiu.

Certifiquem que el comptador ha quedat actualitzat

mysql> select ubqSequenciaCurrVal('XXYYZZ');
+-------------------------------+
| ubqSequenciaCurrVal('XXYYZZ') |
+-------------------------------+
| 414 |
+-------------------------------+
1 row in set (0.00 sec)


I mostrem com afegim un

mysql> select ubqSequenciaNextVal('XXYYZZ');
+-------------------------------+
| ubqSequenciaNextVal('XXYYZZ') |
+-------------------------------+
| 415 |
+-------------------------------+

divendres, 19 de febrer del 2010

Solució definitiva als problemes d'incompatibilitat d'Internet Explorer

Les continues promeses de que el Microsoft Internet Explorer compliria amb els standards web definits pel World Wide Web Consortium mai acaben de ser del tot certes, sempre ens trobem amb 'cosetes' que implica un munt d'hores de desenvolupament afegides.

La campanya per a la jublicació de l'IE6, va funcionant, però és del tot insuficient.

Google ens ofereix un altre cop una eina que ens farà més competitius en els nostres desenvolupaments web: el Google Chrome Frame for Internet Explorer.




El giny de Google consisteix en substituir el motor de renderitzat de l'Internet Explorer, el Trident, pel motor de renderitzat de Google Chrome, el WebKit, més ràpid i curós amb els standards web.

Per tal de que les nostres planes es visualitzin amb el motor de renderitzat i JavaScript del Google Chrome Frame, cal indicar aquest senzill META a la capçalera de la plana:

<meta http-equiv="X-UA-Compatible" content="chrome=1" />

També podem oferir als nostres visitants que encara no tenen el Google Chrome Frame instal·lat, l'opció de fer-ho afegint aquestes instruccions, tal i com s'indica al lloc web de Google Chrome Frame:

<body>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"> </script>

<div id="placeholder"></div>

<script>
CFInstall.check({
node: "placeholder",
destination: "http://www.corretge.cat"
});
</script>
</body>


Podem veure aquest script en funcionament a http://domini.net/chrome

D'aquesta manera aconseguirem que el Microsoft Internet Explorer superi per primer cop el test de compatibilitat HTML i CSS Acid3. La versió 8 de l'Internet Explorer és la única que ha superat la versió 2 d'aquest test de compatibilitat HTML i CSS.

divendres, 12 de febrer del 2010

Taula de codis de tecles 5250

Els codis AID (attention indicator) identifiquen la tecla de funció que s'ha premut en una terminal 5250.

La tecla premuda la trobarem a la posició 369 de la INFDS de l'arxiu de pantalla que volem monitoritzar.

AID Codes
AID keyMnemonicAID Code
Cmd 1 - 12 (cmd 1=x'31', cmd12=x'3C')QSN_F1 - QSN_F12x'31' - x'3C'
Selector Light Pen Auto EnterQSN_SLPx'3F'
Forward Edge Trigger Auto EnterQSN_FETx'50'
PA1QSN_PA1x'6C'
PA2QSN_PA2x'6E'
PA3QSN_PA3x'6B'
Cmd 13 - 24 (cmd 13=x'B1', cmd24=x'BC')QSN_F13 - QSN_F24x'B1' - x'BC'
ClearQSN_CLEARx'BD'
Enter or Record AdvanceQSN_ENTERx'F1'
Help (not in error state)QSN_HELPx'F3'
Roll Down or Page UpQSN_ROLLDOWN or QSN_PAGEUPx'F4'
Roll Up or Page DownQSN_ROLLUP or QSN_PAGEDOWNx'F5'
PrintQSN_PRINTx'F6'
Record BackspaceQSN_RECBSx'F8'

divendres, 22 de gener del 2010

Assegurant el PHP amb Suhosin. Instal·lació a Ubuntu.

Aquesta setmana hem rebut al despatx de Corretgé.com l'esplèndid PHP Security Poster editat per l'empresa alemanya especialitzada en seguretat SektionEins.

SektionEins és l'empresa que ha creat el paquet de seguretat Suhosin. Si hem instal·lat el PHP desde la paqueteria d'Ubuntu, al fer un phpinfo(), segurament veurem que al PHP instal·lat se li ha aplicat el patch de Suhosin, és fàcil de detectar, per les lletres en coreà 수호신 al final de la plana, que ve a ser la traducció de una deïtat guardiana... sí, és la traducció literal, no és cap de les deïtats guardianes que el budisme assigna segons l'any de naixement a la seva parròquia.

Suhosin logoThis server is protected with the Suhosin Patch 0.9.6.2
Copyright (c) 2006 Hardened-PHP Project


Així doncs, els ubuntaires ja tenim el PHP preparat de sèrie per al Suhosin i no hem de compilar ni aplicar cap patch.

Per a instal·lar aquesta extensió de PHP, farem

sudo apt-get install php5-suhosin

A /etc/php5/apache2/conf.d/suhosin.ini podrem parametritzar aquest guardià protector.

En properes edicions comentarem alguns dels paràmetres de configuració:

DirectiveLocal ValueMaster Value
suhosin.apc_bug_workaroundOffOff
suhosin.cookie.checkraddr00
suhosin.cookie.cryptdocrootOnOn
suhosin.cookie.cryptkey[ protected ][ protected ]
suhosin.cookie.cryptlistno valueno value
suhosin.cookie.cryptraddr00
suhosin.cookie.cryptuaOnOn
suhosin.cookie.disallow_nul11
suhosin.cookie.disallow_ws11
suhosin.cookie.encryptOffOff
suhosin.cookie.max_array_depth5050
suhosin.cookie.max_array_index_length6464
suhosin.cookie.max_name_length6464
suhosin.cookie.max_totalname_length256256
suhosin.cookie.max_value_length1000010000
suhosin.cookie.max_vars100100
suhosin.cookie.plainlistno valueno value
suhosin.coredumpOffOff
suhosin.disable.display_errorsOffOff
suhosin.executor.allow_symlinkOffOff
suhosin.executor.disable_emodifierOffOff
suhosin.executor.disable_evalOffOff
suhosin.executor.eval.blacklistno valueno value
suhosin.executor.eval.whitelistno valueno value
suhosin.executor.func.blacklistno valueno value
suhosin.executor.func.whitelistno valueno value
suhosin.executor.include.blacklistno valueno value
suhosin.executor.include.max_traversal00
suhosin.executor.include.whitelistno valueno value
suhosin.executor.max_depth00
suhosin.filter.actionno valueno value
suhosin.get.disallow_nul11
suhosin.get.disallow_ws00
suhosin.get.max_array_depth5050
suhosin.get.max_array_index_length6464
suhosin.get.max_name_length6464
suhosin.get.max_totalname_length256256
suhosin.get.max_value_length512512
suhosin.get.max_vars100100
suhosin.mail.protect00
suhosin.memory_limit00
suhosin.mt_srand.ignoreOnOn
suhosin.multiheaderOffOff
suhosin.perdir00
suhosin.post.disallow_nul11
suhosin.post.disallow_ws00
suhosin.post.max_array_depth5050
suhosin.post.max_array_index_length6464
suhosin.post.max_name_length6464
suhosin.post.max_totalname_length256256
suhosin.post.max_value_length6500065000
suhosin.post.max_vars200200
suhosin.protectkeyOnOn
suhosin.request.disallow_nul11
suhosin.request.disallow_ws00
suhosin.request.max_array_depth5050
suhosin.request.max_array_index_length6464
suhosin.request.max_totalname_length256256
suhosin.request.max_value_length6500065000
suhosin.request.max_varname_length6464
suhosin.request.max_vars200200
suhosin.server.encodeOnOn
suhosin.server.stripOnOn
suhosin.session.checkraddr00
suhosin.session.cryptdocrootOnOn
suhosin.session.cryptkey[ protected ][ protected ]
suhosin.session.cryptraddr00
suhosin.session.cryptuaOnOn
suhosin.session.encryptOnOn
suhosin.session.max_id_length128128
suhosin.simulationOffOff
suhosin.sql.bailout_on_errorOffOff
suhosin.sql.comment00
suhosin.sql.multiselect00
suhosin.sql.opencomment00
suhosin.sql.union00
suhosin.sql.user_postfixno valueno value
suhosin.sql.user_prefixno valueno value
suhosin.srand.ignoreOnOn
suhosin.stealthOnOn
suhosin.upload.disallow_binary00
suhosin.upload.disallow_elf11
suhosin.upload.max_uploads2525
suhosin.upload.remove_binary00
suhosin.upload.verification_scriptno valueno value