Archive for Febrero, 2008

Tutorial para empezar con Zend_Form()

actualmente en ingles; pero esperemos poder traducirlo en algún momento.

ejemplo para empezar a utilizarlo

y como no; la documentación  :D

Empezaré a ir probando

propuesta para ampliar Zend_Config_Xml; leer atributos en el xml.

Muchas veces pasa que tengo una idea pero no la plasmo en ningún sitio; de pronto alguien plasma esa misma idea.

Esto es lo que me ha pasado, Zend_Config acepta varios formatos para crear los parámettros de configuración.

Uno de ellos es poder hacerlo en un XML (archivo.xml) con Zend_Config_Xml; aunque tiene la limitación que todos los parámetros tienen que ser de tipo: nombre_nodo(parámetros) y valor(valor_del_parametro), ejemplo:

<database> 
<adapter>pdo_mysql</adapter>
<params>
<host>localhost</host>
<username></username>
<password></password>
<dbname></dbname>
</params>
</database>

Por suerte actualmente hay una propuesta para poder ampliar Zend_Config_Xml y así poder insertar atributos como parámetros. Puede que alguno vea innecesario esta extensión(yo lo pensé) pero seguro que en algún momento puede sernos útil. Un ejemplo de como quedaría:

opción_1:

<database adapter=“pdo_mysql”
<params>
<host>localhost</host>
<username></username>
<password></password>
<dbname></dbname>
</params>
</database>

opción_2:

<database adapter=“pdo_mysql”
<params>
<host value=“localhost”/> 
<username value=“”/> 
<password value=“”/> 
<dbname value=“”/> 
</params>
</database>

opción_3:

<database adapter=“pdo_mysql”
<params>
<param name=“host” value=“localhost”/> 
<param name=“username” value=“”/> 
<param name=“password” value=“”/> 
<param name=“dbname” value=“”/> 
</params>
</database>

opción_4:

<database adapter=“pdo_mysql”
<params host=“localhost” username=“” password=“” dbname=“”/> 
</database>

Espero que la idea cale en la comunidad y así la pueden implementar en próximas  versione; aunque ya podríamos ir extendiéndolo.

Cómo gestionar un carrito de la compra en symfony; guía de sfShoppingCartPlugin en español.

veo en la lista que Javier Eguiluz ha subido a la wiki de symfony una traducción, de la guía de How to manage a shopping cart , en perfecto español :D

link: ¿Cómo gestionar un carrito de la compra en symfony?

Alternativa a “magic_quotes_gpc” en Zend Framework (ZF)

Como muchos saben; magic_quotes_gpc suele traer problemas(aunque está pensado para solucionarnos la vida) . Muchas veces no se recomienda su activación; también se dice que en PHP6 será totalmente eliminado.

Pues bien, Shahar  ha creado una clase(magic_quotes_gpc) bastante interesante para poder solucionar este problema de una manera elegante. Muchas veces un código tan sencillo es simplemente, porque está bien escrito.

Esta clase la pone como pluggin dentro de nuestro Zend_Controller y seguro que da buenos resultados.

Ver el código

Esqueleto para empezar una aplicación modular o única con Zend Framework(ZF)

Andries Seutens ha creado un esqueleto de directorios y archivos para poder empezar una aplicación utilizando ZF (en mvc).

Interesante la forma que tiene de estructurar el código para el Indez, metiéndoselos en un archivo “application.php” que es llamado, de manera limpia y ordenada, desde el “index.php”

Aún estoy haciendo pruebas, pero la primera mini aplicación que he podido hacer funciona perfectamente.

versión App unica. (no modular)

descargar. 

Estructura de directorio

se compone de lo siguiente:

  1. una estructura de código convencional (par empezar nuestro proyecto)
  2. un archivo de arranque (index.php)
  3. Un archivo de configuración con 2 etapas: producción, arranque (config.ini)
  4. Controlador de errores(ErrorController.php)
  5. Controlador de arranque(index)(IndexController.php)
  6. Etc…

Para poder empezar a testear lo primero es bajarnos Zend_Framework en el directorio “conventional/lybrary”. Una vez bajado ZF lo ponemos en nuestro servidor de prueba y lo testeamos así: “http://localhost/ <foldername> /document_root/”

versión modular:

descargar.

estructura de directorios

Básicamente se compone de los mismo que la versión unica, solo que cambia el disparador en el indice y la configuración; pero funciona todo a la perfección.

Personalmente lo pienso utilizar en el primer proyecto que pueda.

fuentes:
original:  http://andries.systray.be
metodología de funcionamiento: http://naneau.nl

¿Quieres saber quién te tiene no admitido/eliminado en el MSN? Pues no des tu contraseña a desconocidos

Parece mentira que después de tanto tiempo (¡años ya!) del invento de este fraude todavía haya gente que siga cayendo en él. Es muy simple, y seguro que muchos lo conocéis, simplemente se trata de páginas que ofrecen el servicio de mostrarte quién te tiene como no admitido o te ha eliminado del mésenyer a cambio de que les des tu datos de conexión, es decir, tu usuario y contraseña. Creía que este negocio ya estaba más que muerto, pero hoy mismo un par de contactos míos me han saltado con la típica ventanita que me acceda a una de esas páginas para que me lea el futuro.

Como norma general, dar la contraseña de tu correo a alguien que no pertenezca a tu familia ya es un suicidio tecnológico, y en este caso sería como darle la contraseña de tu tarjeta de crédito a una persona desconocida para que te muestre el dinero que tienes. ¿Quieres saber qué es lo que hacen? La mayoría de páginas, después de mostrarte esa información, se conectan a tu cuenta varias veces al día para molestar a todos tus contactos con spam descarado. Lo que es peor, esto puede colapsar tu cuenta y no sería raro que la perdieras para siempre, o al menos que la conexión sea pésima. Así que ya sabes, no des tu contraseña a ningún sitio web, o atente a las consecuencias.

Pero claro, ¡tú quieres saber quién te tiene como no admitido! Sorpresa: esos sitios, además de ser peligrosos, no funcionan. Microsoft cambió hace tiempo el protocolo para que los servidores de msn no difundieran esta información. Antes sí podías, pero ahora mismo ni siquiera puedes saber el estado de otra persona sin que ella te invite/admite o sin saber la contraseña de la cuenta (sin cambiar la configuración de la cuenta). Sin rebuscar demasiado, algunos sitios

fraudulentos que siguen esta práctica serían: blockoo.com, scanmessenger.com, detectando.com, quienteadmite.info, checkmessenger.net, blockstatus, etc… Todos ellos son potenciales phishing, y ninguno funciona más allá de recolectar cuentas de correo.

Disculpad los lectores avanzados que ya habéis dejado atrás este tipo de engaños facilones hace mucho tiempo, pero es que hoy me he vuelto a conectar al messenger por obligación y me he dado cuenta de que las cosas han cambiado muy poquito.

——————————————-

fuente original: cache de google
visto en: http://meneame.net/story/weblogs-esta-siendo-atacada-no-retirar-noticias/

Grades reinvenciones de la rueda(I)

Este post, es un grito desesperado que no puedo hacer ahora mismo en la empresa (cliente) que estoy.
Antes de nada decir que estoy por aquí(una importante organización) de paso.

Se están desrrollando un portal con utilidades de leerning y una de las “especificaciones” dicta que se haga un trazado de navegación por parte del usuario en el portal, más los tipos procesos en los test que se planean hacer a los alumnos usuarios y demás.
La primera vez que leí esto pensé que se solventaria con moodel y una contratación de analitics y cosas parecidas; que ya hay bastante y son soluciones de solvencia comprobada.

Ahora estaban hablando: el  “Jefe” responsable de la sección informatica de esta “organización” y la empresa responsable de la creación del CMS y todo el back-end (yo solo estoy para labores de Front-end), voy a tratar de transcribir las palabras que me han impactado tremendamente:

Director de informática en la organización: ¿cómo va todo el desarrollo?
Comercial de la empresa(dice que es informatico) contratada: Bueno… estamos cumpliendo las expectativas (mentira, pero creo que yo soy el único que lo ve)….. Creo que tenemos que reunirnos para hablar sobre la información que se quiere de los usuarios: por donde navegan, que formularios se rellenan y demás; porque es un desarrollo complejo y tenemos que consultar los tiempos de entrega más el presupuesto; también esta el tema de los test y toda la información que se quiere recoger por parte del usuario…..

Cuando estaba escuchando a este personaje; dentro de mi cabeza solo sonaba una cosa, “Moodle, analitycs, Moodle, analitycs, Moodle, analitycs”; quería gritarlo y explicarle que eso que estaban diciendo era una burrada. (por el tiempo de desarrollo y costo)

No se, sí yo estoy perdido en esto del negocio del software, porque supuestamente esta gente son empresas grandes de consultoria informática, y “saben” de lo que hablan. No entiendo porque alguien quiere hacer un software para mapeo de navegación (cliente, servidor. creo que no saben como hacerlo, porque han mandado a investigar de como se haría) y definir todo el concepto de información y actividades en los módulos de leerning.

Alguno que tenga experiencia puede explicarme porque se toma este tipo de decisiones tan rápido y con un desconocimiento de las herramientas existentes??
Yo solo lo veo justificado, por un lado. Esa empresa alquila a sus “desarrolladores” y cobra por cada día trabajado(por horas)

API para meneame.net en ZF - V0.01

Hola gente, después de ver en la lista de Servicios que hay en la lista de clases propuestas en la wiky de ZF, me he dado cuenta que Meneame.net todavía no tiene su espacio :)
La verdad que la API de meneame.net tampoco es que sea una maravilla y tiene unos servicios bastantes limitados, pero menos da una piedra :)

Quería hacer una clase para poder explotar la API, pero viendo un poco por la red los chicos de www.eyeideas.es ya habían trabajado en una, bastante interesante; por lo que me he limitado a “transcribirla” para poder usarla como “componente” en ZF.

En esta primera clase (en pre-alfa aún) solo hace lo más básico, quedando una cosa muy importante pendiente, el sistema de cache.

Lista de temas pendientes para la versión V0.02:

  1. definir el sistema de cache, o dar varias posibilidades(las que da Zend_Cache: sqlite, .txt, …)
  2. añadir un método “rápido” para abstraer las variables: Zend_Service_Meneame::getInfo(’url_de_la_pagina’)
  3. alguna otra utilidad.

__________________ CLASE ___________________

<?php
class Zend_Service_Meneame
{
var $autoUrl;
var $url;

protected $info =array(’exist’=>false,
‘urlStory’=>”,
‘votes’=>0,
‘portada’=>false);
protected $hostApi =’http://meneame.net/api/url.php?url=’;
//constructor
public function __construct($address=null, $autoUrl=false)
{
if(isset($address))
{
$this->url = $address;
$this->renderInfo();
}
}

//trae el archivo de meneame.net
protected function getScript()
{
preg_match (’/^\\s*(?:\\w+:\\/{2})?(.*?)(:\\d+)?(\\/.*)$/’,$this->hostApi.$this->url, $matches);
$host = $matches[1];
$port = $matches[2];
$path = $matches[3];

if(!$port) {
$port = 80;
}

if(!$path) {
$path = ‘/’;
}
$socket = fsockopen($host, $port);
if (!$socket) {
return false;
}
fwrite ($socket, “GET $path HTTP/1.1\n”);
fwrite ($socket, “Host: $host\n”);
fwrite ($socket, “Connection: close\n\n”);
$bufer = “”;
while (! feof ($socket)) {
$bufer .= fread ($socket, 4096);

}
fclose ($socket);
$bufer = preg_replace (’/^.*?(\\r?\\n){2}/s’, ”, $bufer);
return $bufer;
}

//renderiza el archivo de meneame para traducir los valores
protected function renderInfo($url=null)
{

$info = explode(’ ‘,$this->getScript());
$this->info['exist'] = (stristr($info[0], ‘OK’)?true:false);
$this->info['urlStory'] = $info[1];
$this->info['votes'] = $info[2];
$this->info['portada'] = (stristr($info[3], ‘published’)?true:false);
}

//cambiar la url a comprobar
public function setUrl($adress) {
$this->url = $address;
}

//obtiene la últrima url comprobada
public static function getUrl() {
return $this->url;
}

//este metodo devuelve true cuando la noticia existe en meneame
//y false cuando la noticia no existe
public static function inMeneame() {
return $this->values['exist'];
}

//devuelve el status de la noticia en meneame, puede ser published, queued, etc
public static function inPortada() {
return $this->info['portada'];
}

//obtiene el numero de votos que tiene la noticia, en caso de existir
//en meneame
public static function getVotes() {
return $this->info['votes'];
}

//obtiene la dirección de la noticia en meneame, para menearla o ver los comentarios
public static function getUrlStory() {
return $this->info['urlStory'];
}

//devuelve un array con 3 elementos, siendo el primer elemento la dirección de la noticia
//en meneame, el segundo el estado, y el tercero el número de votos
public function getInfo()
{
return $this->info;
}
}
/*
//ejemplo de uso; perdón por la simplicidad de la variable; creo que se entiende bien
$a = new Zend_Service_Meneame(’http://frikipedia.isdifferent.org/’);
print_r($a->getInfo());
*/

__________________ FIN _____________________

Espero poder publicarlo en la wiki de ZF, pero el proceso para poder enviar una utilidad, es algo engorroso; hay que enviar un fax o mail y tal.

¿Como se hace Zend_Framework?

una imagen vale más que mil palabras:

Listado de todas las propuestas para incluir en Zend Framework, muy recomendable de ver

Los chicos de ZF aceptan todo tipo de propuestas de la comunidad, y te dan el soporte para poder compartirla, mejorarla y en caso de ser aprobada en incluirla en el core de la próxima versión.

Todo hay que decirlo, el proceso es algo engorroso; pero bien vale la pena.

En la lista de propuestas podemos encontrar objetos(en proceso de desarrollados) para pasar la fecha al formato Iraní (Zend_Calendar), procesar valores de colores (Zend_Color), para paginar (Zend_Paginator), ….. y muchos más.

Antes de empezar a desarrollar algo, sobre ZF mejor pasarse por aquí y ver si alguno a empezado a hacer algo parecido.

Enlace:   http://framework.zend.com/wiki/display/ZFPROP/Home

« Píagina anteriorEntradas siguientes »