Archive for the ‘Software Servidor’ Category

Alliberat Drupal 6.16

dissabte, març 6th, 2010

El proppassat dia 4 fou alliberat Drupal 6.16.

Drupal és un programari lliure, gestor de continguts (Content Management System).

Aquesta nova versió soluciona molts errors, però sobretot evita uns forats de seguretats força greus descoberts darrerament.

Veure: Anunci oficial de Drupal

Alliberat PHP 5.3.2

dissabte, març 6th, 2010

El proppassat dia 4 s’alliberà la versió 5.3.2 de PHP.

En aquesta nova versió de l’estès i potent llenguatge de programació (programari lliure), s’han solucionat més 70 errors (bugs), hi ha noves funcionalitats, i actualitzacions per suportar noves llibreries com:

Algunes de les novetats que destaco:

  • Actualitzat el paquet sqlite a la versió 3.6.22. (Ilia)
  • Actualitzat el paquet libmagic a la versió 5.03. (Mikko)
  • Actualitzat el paquet PCRE a la versió 8.00. (Scott)
  • Actualitzada la base de dades d’ús horari (timezone) a la versió 2010.3. (Derick)
  • Millorada LCG entropy. (Rasmus, Samy Kamkar)
  • Millorat el suport de crypt per a casos extems (edge cases). (Compatibilitat UFC). (Solar Designer, Joey, Pierre)
  • Canviat gmp_strval() per a usar el rang complet de 2 a 62, i -2 a -36. FR #50283 (David Soria Parra)
  • Canviada la directiva “post_max_size” a php.ini per a permetre tamany il·limitat fixant el valor a 0. (Rasmus)
  • Canviada la classe tidyNode class per a no permetre la creació d’un node manualment. (Pierrick) (Nota: no entec perquè han fet això)
  • El·liminat el desbloqueig automàtic del descriptor de fitxer quan s’apaga o el corrent es perd (per a tots els sistemes operatius). (Tony, Ilia)
  • Afegit suport per a libpng 1.4.0 . (Pierre)
  • Afegir suport per a DISABLE_AUTHENTICATOR a imap_open. (Pierre)
  • Afegit la validació de host, que mancava, per a les adreces url HTTP dins de FILTER_VALIDATE_URL. (Ilia)
  • Afegit stream_resolve_include_path(). (Mikko)
  • Afegit suport a INTERNALDATE per a imap_append. (nick at mailtrust dot com)
  • Afegit suport per a SHA-256 i SHA-512 al crypt de PHP. (Pierre)

Via: PHP ChangeLog

Alliberat PHP 5.2.13

divendres, febrer 26th, 2010

Fa unes hores s’ha alliberat PHP en la seva versió 5.2.13.

Aquest versió de la línia 5.2 fa èmfasi en la estabilitat i soluciona més de 40 errors (bugs).

Via: PHP web oficial

Alliberat Wordpress 2.9.2 (seguretat)

dimarts, febrer 16th, 2010

Wordpress ha alliberat la versió 2.9.2, bàsicament soluciona un problema de seguretat en que els usuaris registrats, sense permisos d’administració, podien accedir als articles esborrats, a la paperera.

Darrerament s’havien registrat més usuaris que de costum al bloc, i ara comprenc perquè.

Via: Wordpress bloc oficial

Configurar un servidor Ftp a Ubuntu

diumenge, febrer 14th, 2010

Configurar un servidor Ftp a Ubuntu és d’allò més senzill.

Primer instal·larem el servidor Ftp:

sudo apt-get install vsftpd

Després el configurarem editant l’arxiu:

/etc/vsftpd.conf

I a continuació definirem les opcions que ens interessin:

Per a no permetre accès anònim:
anonymous_enable=NO

Per a permetre accedir als usuaris del sistema:
local_enable=YES

Per a permetre pujar arxius:
write_enable=YES

Un cop instal·lat vsftp s’executarà en iniciar ja que /etc/init.d/vsftpd té permisos d’execució.

Per a iniciar-lo manualment per primer cop executarem la següent comanda:

sudo /etc/init.d/vsftpd start

Via: Instruccions d’Ubuntu

Alliberat Apache SpamAssassin 3.3.0

dimecres, gener 27th, 2010

Aquest potent motor anti-Spam ha estat alliberat en la seva versió 3.3.0.

Apache SpamAssassin és el producte Programari Lliure (Open Source) de filtrat d’email del tipus Spam o correu brossa, que s’empra a nivell de servidors a tot el món els governs, els proveïdors d’Internet, el proveïdors d’Email, empreses del Fortune 500 global, pimes i multinacionals, empreses del sector educatiu…

També molts productes comercials (caríssims) estan basats en SpamAssassin.

Aquesta nova versió separa el nucli del programa de les regles d’identificació d’spam.

Ara s’incorpora la possibilitat d’actualitzar només les regles (rules) que identifiquen l’spam amb una senzilla comanda d’actualització.

sa-update
Molt bones notícies per als responsables de servidors de correu.
Es pot descarregar des de:
http://spamassassin.apache.org/

Wordpress: Crear una pàgina per a cada usuari registrat

dilluns, gener 25th, 2010

Wordpress suporta mostrar pàgines per als usuaris registrats.

L’enfocament és pensat per a autors d’articles, però pot mostrar informació de qualsevol usuari registrat encara que no hagi publicat cap article, ni tingui permisos per a fer-ho.

Nogensmenys la majoria de temes de Wordpress no porten la pàgina author.php

Quan això passa si es demana la url d’un autor, per exemple:

http://www.codic.cat/author/carles/

Wordpress empra la pàgina del tema archive.php

Però podem fer que Wordpress mostri una plana personalitzada per als nostres usuaris desant una plana nova que es digui author.php al directori del nostre tema.

Podem per exemple fer una còpia d’archive.php i anomenar-la author.php i llavors personalitzar-la.

Haurem d’afegir un codi a la part superior, sota de:

get_header();

de manera que quedarà quelcom així:

<?php
/*
*
* @package WordPress
* @subpackage Default_Theme
*/

/*
    Arxiu AUTHOR.PHP creat el 2010/01/24 per Codic.cat
    Permet de tenir plana d'usuaris.
*/

get_header();

// **************************************************
//  Aquí comença el codi per a Author.php
// **************************************************
// Codi de http://codex.wordpress.org/Author_Templates

if(isset($_GET['author_name'])) :    // NOTE: 2.0 bug requires: get_userdatabylogin(get_the_author_login());
    $curauth = get_userdatabylogin($author_name);
else :
    $curauth = get_userdata(intval($author));
endif;
?>

<div id="content">
<h2>Perfil de l'usuari <?php  echo $curauth->nickname; ?></h2><BR>
<?php
// **************************************************
//  Aquí acaba el codi per a Author.php
// **************************************************

<?php
if (have_posts()) {

Amb la funció get_userdata($user) podem accedir a força informació:

<?php
     $user_info = get_userdata(1);
     echo("Nom de l'usuari: ".$user_info->user_login."<br/>");
     echo("Nivell de l'usuari: ".$user_info->user_level."<br/>");
     echo("ID de l'usuari: ".$user_info->ID."<br/>");
     echo("Nom i cognom: ".$user_info->first_name.", ".$user_info->last_name."<br/>");
?>

Podem accedir a aquestes dades:

Taula: user
ID
user_login
user_pass
user_nicename
user_email
user_url
user_registered
user_activation_key
user_status
display_name

Taula: user_meta
first_name
last_name
nickname
description
user_level
admin_color (Tema de la vostra plana d'administrador.Per defecte és fresh.)
closedpostboxes_page
nickname
primary_blog
rich_editing
source_domain

Segons la documentació a partir de la versió 2.0 a més podem emprar:
aim
jabber
yim

I a la versió 1.2 i 1.5:
user_msn
user_icq

Podeu trobar més informació a:

http://codex.wordpress.org/Function_Reference/get_userdata

http://codex.wordpress.org/Function_Reference/get_currentuserinfo

http://codex.wordpress.org/Author_Templates

http://codex.wordpress.org/Template_Hierarchy

Error de seguretat en tots els Windows 32 bit

dissabte, gener 23rd, 2010

Ha trascendit un error de seguretat que afecta totes les versions de Windows 32 bit, des de 1993 fins a les actuals (des de windows nt, xp, vista, 7).

El juny del 2009, Tavis Ormandi, va informar microsoft d’aquest greu problema de seguretat, que permet guanyar el control de la màquina.

Tècnicament permet a un programa de 16 bits executat des d’un compte d’usuari sense privilegis, guanyar el nivell SYSTEM, que pot fer-ho tot a l’ordinador.

Microsoft no ha solucionat l’error de seguretat, però impedir aprofitar-se d’aquest bug és fàcil.

Adjunto un vídeo que indica pas per pas com desactivar la possibilitat d’executar codi 16 bits.

S’ha cobert de glòria microsoft no solucionant-ho en més de 6 mesos.

Via: NoticiesdotCom

Alliberat Apache Tomcat 6.0.24

dijous, gener 21st, 2010

Tot just s’acaba d’alliberar la versió 6.0.24 d’Apache Tomcat.

Tomcat és el servidor web Apache capaç d’executar codi Java (JSP, Servlets…).

S’han solucionat molts problemes des de la versió 6.0.20 (hi ha hagut diverses versions que no s’han publicat i que solucionaven problemes).

A la web d’Apache Tomcat podeu veure la llista completa de canvis.

També s’ha actualitzat Apache Tomcat Native a la versió 1.1.19.

Apache Tomcat Native és un JNI (Java Native Interface) que proporciona moltes de les funcions centrals de Tomcat en codi natiu (codi màquina per a processadors Intel compatibles) en comptes d’en el bytecode Java.

Això es tradueix en un augment molt gran de velocitat.

Veure la llista completa de canvis.

Petita guia de Zend Framework

divendres, gener 15th, 2010

Zend Framework és un framework per a PHP, és a dir un sistema de treball i conjunt de llibreries per a desenvolupar aplicacions en PHP.

Zend es basa en el MCV – Model Control Viewer, el que significa:

  • Control – El controlador (controller) és qui rep la petició. Fa les tasques que hagi de fet, com càlculs, i demana les dades al Model.
  • Model – El Model és qui recupera o introdueix les dades de la base de dades.
  • Viewer – Visualitzador. És la part que conté l’HTML i que pot disposar de les dades que genera el Model si el Controller l’autoritza.

Zend ofereix abstraccions. Per exemple, Zend_DB per a base de dades, ofereix unes funcions per les quals tant és si el servidor de base de dades és un MySql, un oracle, un sql server de microsoft o un altre, les crides sempre són les mateixes i a Zend_DB.

El framework s’encarrega de fer que les dades s’entreguin a l’aplicació de forma transparent.

Algunes de les facilitats que ofereix el framework són:

  • Zend_Feed – per a consumir i publicar feeds RSS i Atom.
  • Zend_Pdf – per a crear, editar i carregar documents Pdf.
  • Zend_Search – Per a fer cerques sofisticades sobre els nostres texts.
  • Zend_Service_Amazon, Zend_Service_Flickr, and Zend_Service_Yahoo – per a emprar les API (funcions) d’aquestes empreses

Zend és tot programació orientada a objectes.

En la imatge de l’esquerra podem veure un arbre de directoris d’una aplicació escrita en Zend.

trunk és el nom del projecte.

Dins d’application hi tenim el directori controller, que és on hi haurà els controladors (el codi).

També hi tenim model, on aniran les classes que accedeixen a base de dades.

I views que és on hi haurà les vistes, o codi html amb crides per a fer servir les dades accedides pels Models.

A la carpeta controllers /application/controllers/ de la il·lustració, hi trobem un arxiu que es diu IndexController.php

Aquest arxiu: IndexController.php és qui rebrà les crides que fem a l’aplicació web.

Es el controlador Index.

En Zend el nom dels arxius és molt important, ja que el nom de l’arxius és la manera per la que es localitza l’encarregat de fer determinades tasques.

La plana més senzilla que faríem amb Zend és un “Hola món!”.

<?php

class IndexController extends Zend_Controller_Action
{

    public function indexAction()
    {
        $this->view->title = 'Hola, món!';
    }

}

Les majúscules també són molt importants com ara en el cas d’ indexAction.

Zend_Db_Table sempre assumirà que la primary key (la clau primària d’una taula) és id si no s’especifica el contrari.

Els paràmetres de connexió a la base de dades s’especifiquen a /config/config.ini

db.adapter = PDO_MYSQL
db.host = localhost
db.username = usuari_de_la_base_de_dades
db.password = mot_de_pas
db.dbname =

Els Helpers o View Helpers són unes funcions d’ajuda, per exemple per a construir formularis.

Per exemple el formCheckbox:

echo $this->formCheckBox('Independència', null, null, array (
                                                             'Checked' => 'Sí',
                                                             'unChecked' => 'No'));

El codi anterior generarà un control de tipus checkbox amb l’opció Sí marcada i la No desmarcada.

Els Helpers, quan se’ls crida, es carreguen en memòria i s’instancien automàticament si és necessari.

Un que és especialment útil és BaseUrl.

$this->baseUrl(); // Això ens retorna la Url on es troben els scripts.

Emprant baseUrl ens assegurem que cridem els scripts de l’indret pertinent, i podem construir aplicacions que no depenguin de rutes absolutes o estàtiques al servidor web.

En el Model podrem recuperar les dades i ho farem mitjançant get’s i set’s.

Per exemple: getNom o getEmail.

Emprem get’s predefinits al Model enlloc del “magic method” __set o __get perquè es calcula que és un 300% més ràpid fer-ho així.

Pareu atenció que de nou les majúscules són molt importants.

getNom ha de coincidir amb el nom de la variable que ens passaran pel formulari nom , en minúscules, ja que a setOptions es convertiran els paràmetres rebuts del formulari en crides a setNom (es converteix la primera lletra de la variable a majúscula).

public function setOptions(array $opcions)
{
     $metodes = get_class_methods($this);
     for each ($opcions as $clau => $valor)
     {
         $metode = "set".ucfirst($clau); // això és el que posa en majúscula la primera lletra com setId
         if (in_array($metode, $metodes))
         {
              $this->$metode($valor);
         }
     }
     return $this;
}

Habitualment tindrem un únic mètode anomenat save que farà un insert o un update en funció de si ens passen un id o no, i comprovant si rebem un post de formulari (isPost).

Els arxius a application/components/ com ara test.yml serveixen per a accedir a la base de dades si ho volem, encara que jo em decanto per utilitzar directament el Model.

Les crides al projecte via web es fan seguint la següent estructura:

http://servidor/nom_projecte/Nom_Controller/Nom_Action/Nom_Paràmetre1/Valor_Paràmetre1/…/Nom_ParàmetreN/Valor_ParàmetreN

Per exemple:

http://codic.cat/ProjecteC/index

Com index és el Controller per defecte si no diem ser s’asumirà index.

http://codic.cat/ProjecteC

O per exemple

http://codic.cat/ProjecteC/edit/id/23

La pàgina final es renderitzarà en base a les vistes (views).

Per al controller Index tindrem a views/scripts/index/ un arxiu .phtml per a cadascuna de les accions.

En aquest cas com el controller es diu Index i l’acció es diu index tindrem:

views/scripts/index/index.phtml

En qualsevol moment podem fer un debug (veure com estan les coses) amb:

Zend_Debug::dump(); exit;

Dins de index.phtml per a tenir accès a les dades definides al Controller i recuperades pel Model, farem el següent:

<?php
    $dades_index = $this->index_db;
    echo $dades->id;
?>

On previament hem definit dins el controller index_db.

$indexModelObj = new Model_Index();
$this->view->index_db = $indexModelObj->getDades;

On getDades és un mètode al Model index que recupera uns valors.

D’aquesta manera amb $this->view>index_db = … permetem que index_db estigui disponible a la vista index.phtml, és a dir, que tingui accès a aquelles dades.

Uns bons consells per als XHTML, per tal que es validin bé són:

  • Posar els nombre dels tags HTML en minúscules

Per exemple: <input type=”text” name=”camp_text” />

  • Tancar els tags com a: <br />.
  • En els camps select quan és el valor seleccionat fet <option selected=”selected” value> i no el clàssic <option selected value>
  • Posar un alt sempre a les imatges.

Pe: <img src=”imatges/bondia.png” alt=”Bon dia Catalunya!!!” />

Zend_DB_Table és el que s’acostuma a utilitzar per a treballar amb la base de dades.

És a més alt nivell, per a treballar amb conjunts de registres o recordsets.

De vegades necessitarem treballar amb Zend_DB per a treballar amb les dades a nivell de files i no a nivell de recordsets.

Zend_DB proporciona:

  • select
  • fetchAll
  • fetchRow
  • find
  • delete
  • quote
  • quoteinto

Quote i quoteinto s’asseguren que no utilitzem noms de variables que són camps reservats de la base de dades.

Algunes bases de dades tenen paraules reservades que serveixen per a  dur a terme determinades funcionalitats, i d’altres tenen altres. Per exemple, EMAIL pot ser una paraula reservada en un sqlserver mentre que en un MySql no.

Com Zend_DB_Table no té quote ni quoteinto necessitem l’Adapter per a obtenir un Zend_DB.

Nogensmenys Zend_DB fa un quoteinto per a les selects però no per als delete.

Adjunto algunes guies:

Understanding the Zend Framework (IBM)

Part 3: A Simple Hello World Tutorial

Part 4: Setting the Design Stage with Blueprint CSS Framework and Zend_Layout

Part 5: Creating Models with Zend_Db and adding an Administration Module