Voy a ser Tío

Codigo QR

Globos
La verdad que esta es una de las noticias que me pone cada vez feliz cuando me pongo a pensar en el proximo sobrino que vendra al mundo. Seré tío a mis 24, con el primero de mis hermanos que tendra su hijo en la ciudad de Santiago de Chile.

Hermano felicidades a la distancia y mucha suerte en tus conferencias en Asunción, Paraguay. De seguro debes estar tomando unas copas por allá.

La familia Ramírez crece :)

CakeFest 2008 – Buenos Aires, Argentina

Codigo QR

Via Mariano Iglesias me llego un mail informandome como expositor en el gran congreso CakePHP a nivel mundial. La verdad que esta noticia me es muy grata, ya que podré ir a exponer sobre un tema del cual llevo bastante tiempo trabajando y ejecutando en las labores diarias de mi trabajo.

Al parecer soy el unico expositor Chileno, a si que vamos a sacar la cara :)

Muchas gracias CakePHP TEAM por esta invitación, y nos vemos el 2 al 5 de Diciembre en el CakeFest.

Borrar carpetas svn

Codigo QR

Hoy me paso algo sumamente extraño .. en la mañana llego a coordinar un proyecto que llevo trabajando aproximadamente 1 mes .. y me doy cuenta que no me estaba versionando el SVN .. FUCK!

Tube que borrar el repositorio y crearlo nuevamente .. lo sé es sucio, pero no podia hacer nada mas ..

Ademas creé un script para borrar estas carpetitas terminadas en .svn. Les dejo el codigo:

# @author: Fabian Ramirez
#
# @desc: Borrar las carpetas SVN
#
echo -n "Borrando las carpetas .svn";
find . | grep .svn | gawk '{print "rm -rf " $1}' >> /tmp/borrarSvn;
sh /tmp/borrarSvn;
rm /tmp/borrarSvn;
echo -e "\nFinalizado"

Solucion rapida y efectiva .. continuo versionando desde la version 0 ..

¿ A alguien le ha pasado ?

ORM PHP

Codigo QR

mapeo objeto-relacional (más conocido por su nombre en inglés, Object-Relational mapping, o sus siglas O/RM, ORM, y O/R mapping) es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional. En la práctica esto crea una base de datos orientada a objetos virtual, por sobre la base de datos relacional. Esto posibilita el uso de las caracterí­sticas propias de la orientación a objetos (básicamente herencia y polimorfismo). Hay paquetes comerciales y de uso libre disponibles que desarrollan el mapeo relacional de objetos, aunque algunos programadores prefieren crear sus propias herramientas ORM. (Fuente Wikipedia)

Propongo el siguiente ejemplo:

  1. Una Persona tiene una o mas fotos (hasMany).
  2. Una Foto tiene asociada una Persona (belongsTo)

En codigo para guardar la asociacion serí­a:

$arreglo['Persona']['nombre'] = "Fabian";
$arreglo['Persona'][]['Fotos']['nombre'] = "Bailando.jpg";
$arreglo['Persona'][]['Fotos']['nombre'] = "Cantando.jpg";
$objeto->guardar($arreglo);

Deseo ahora updatear:

$arreglo['Persona']['id'] = 1;
$arreglo['Persona']['nombre'] = "Fabian Ramirez";
$objeto->guardar($arreglo);

Y mas aun borrar:

$objeto->borrar(1);

Y leer:

$objeto->read(1);

 Lo cual me retornaria un arreglo asi:

  $arreglo['Persona']['nombre'] = "Fabian Ramirez"
  $arreglo['Persona'][0]['Fotos']['nombre'] = "Bailando.jpg";
  $arreglo['Persona'][1]['Fotos']['nombre'] = "Saltando.jpg";

Y si leyera la foto me retornaria:

$arreglo['Fotos']['nombre'] = "Bailando.jpg";
$arreglo['Fotos']['Persona']['nombre'] = "Fabian Ramirez";


¿Deseas tener ORM (Object Relational Mapping) sin usar un framework complejo para tus proyectos?

Aquí­ te dejo una lista con los frameworks ya incorporados que puedes utilizar:

Yo personalmente use Propel para un pequeño desarrollo y me trajo MUY buenos resultados.

¿ Tu cual usas ?

Macstation – Mac Argentina – Macstation LAS CAÑITAS LO PEOR!

Codigo QR

Si van a hacer negocios en Macstation LAS Cañitas , se los recomiendo que no los hagan. Venden y despues SE OLVIDAN DEL CLIENTE. La verdad que son una MIERDA. Me tubieron 2 semanas tramitando y esperando, para QUE NUNCA NISIQUIERA HAYAN TRAMITADO LA ORDEN.

OJO que fueron los tecnicos los malos gestionados, yo creo que por celos de mi nueva Macbook PRO… creo que ellos no tienen ni para comprarse una PC, de ahi vienen los celos. Entonces Macstation LAS Cañitas, te ganaste -10 puntos.

Les recomiendo Maximsoft en Argentina. Un servicio de Excelente calidad, da gusto hacer negocios con estos tipos.

API Needish PHP – Cliente para conectarse

Codigo QR

Needish

Esta es mi ayuda para la comunidad Needish, una comunidad para recibir ayudas frente a necesidades que tengamos.

He creado un cliente para conectarse a la API para desarrollar aplicaciones basadas en PHP. Esto lo he realizado sin ningun interes economico, sino que lo he realizado por AMOR al arte para esta excelente aplicacion.

Si deseas descargar el cliente para conectarse API realizalo aqui

Si deseas ver la documentacion para conectarse a la API realizalo aqui

Ejemplos:

require_once('needish.class.php');
// Api publica
 $needish = new NeedishPublico("Mi codigo API");
 print_r($needish->buscarNecesidadTexto("PHP"));
 print_r($needish->buscarNecesidadTag("PHP"));
 print_r($needish->ultimasNecesidades());
// Api Privada
 $needish = new NeedishPrivado("Codigo","Correo","Pass");
 print_r($needish->nuevaNecesidad("Ejemplo API","Den gracias"));
 print_r($needish->necesidadesAyudadas());

Espero que sea utilizada por los usuarios, y frente a feedbacks, por favor realizarlos en los comentarios de mi BLOG.

Mucha suerte y dale un buen uso a la API que nos brinda esta comunidad.

Agradecimientos:

  1. Pablo Viojo, El Chivito Canadiense :)
  2. Miguel Michelsongs , el master ruby on rails
  3. La comunidad Needish por soportarme

Breadcrumb cakephp helper facilito y limpio

Codigo QR

Cuantas veces no has tenido que programar a cada pagina un:

Inicio >> Paginas >> Orden >> Editar

Yo varias veces y lo cuento, a travez de un codigo SUCIO, limitando así­ cualquier modificacion de estilos, ya que debia realizarlo pagina por pagina.

Cree un pequeño helper para CakePHP, en el cual lo agregas a tu controlador como helper, y luego de forma sencilla te manejar.

<?php
/*
@desc: Helper for BreadCrumb
@idea: Marie Anne Mertens <mmertens@atobiz.com>
@developer: Fabian Ramirez <framirez@atobiz.com>
@demo in the view:
$crumb->add('News', '/admin/news); // With URL
$crumb->add('Edit'); // Without URL
echo $crumb->html();
*/

class CrumbHelper extends Helper
{
var $helpers = array('Html');
var $buffer;   // Array
var $str;       // String

function CrumbHelper() { // Metodo constructor
$this->buffer[] = "<div id='breadcumb'><img src='/img/cms/home.gif' border='0'><a href='/admin/admins/menu'>Home</a>";
}

function add($titulo, $url=null)   {

if(!empty($url)):
$this->buffer[] = " >> " . $this->Html->link($titulo, $url);
else:
$this->buffer[] = " >> " . $titulo;
endif;

return true;
}

function html() {
foreach($this->buffer as $links):
$this->str .= $links;
endforeach;

$this->str .= "</div>";
return $this->output($this->str);
}
}
?>

Ver codigo con colores en: http://bin.cakephp.org/view/1116949936

Problemas seleccion de texto con Drag and drop

Codigo QR

Con mootools, tuve un problema cuando realizaba Drag & Drop para ordenar unas paginas del sitio, el error era que me seleccionaba el texto y me lo dejaba realmente feo.

Investigando llege a la conclusión de eliminar el evento onselect directamente del body de nuestra pagina. En el siguiente trozo de codigo demuestro com o se puede evitar la seleccion de texto en Internet Explorer:


<script type="text/javascript">
window.onDomReady(function() {
// IE Fix
document.body.onselectstart = function () { return false; };
}
</script>

i’m not hacker

Codigo QR

Descubri un hoyo de seguridad, el cual informe debidamente a un contacto directo del sitio dev.cl , debido a un problema de seguridad en la pequeña aplicacion para acortar las url:

“Los nuevos sistemas WEB 2.0 tienen APIs abiertas para usuarios sin tener el concepto B2P o B2B de limites

de recursos ni el control. Por esto surge mi concepto de probar la generacion de URLs automaticas en el sitio realizando un

DoS Atack Prof exitoso para ver la cantidad de urls maximas que se podrí­an generar y resulto ser ILIMITADA POR IP y ILIMITADA
POR USUARIO.”

Cualquier consultoria de seguridad, hacemela llegar a mi correo framirez(at)gurunet.cl y encantado te ayudaré y mejoraremos el servicio.

Fabian Ramirez


El script no lo publicare por asuntos eticos y como te dije, no soy hacker, sino consultor de seguridad.

Saludos

Tips y Seguridad para PHP

Codigo QR

He realizado algunos tips, basados en mi experiencia de este fabuloso lenguaje de programación para sitios webs. Aquí­ va la lista. Se aceptan sugerencias:

  1. Siempre al poner en producción un desarrollo, habilitar el error_reporting(0) en cabecera, en caso de error, el cliente no verá un mensaje feo en pantalla.
  2. Siempre esconder la tecnologí­a utilizada, vale decir todos los .php , arreglalos con mod_rewrite.
  3. Siempre validar los parámetros que se entregan. Todos los datos que vienen de INTERNET deben ser validados. Ejemplo:

    if(is_numeric($_GET['variable'])) // Integer
    if(is_string($_GET['variable'])) // String
    if($this->Session->check('Usuario')) // Chequear usuario valido

  4. Para evitar un SQL Injection o un XSS Atack, utilizar la funcion addslashes. Ejemplo:
    $variable = addslashes(trim($_GET['variable']))
  5. Todos los datos que se envien deben ser codificados en UTF-8 para ser internacionalizados.
  6. Siempre formatear los numeros en formato €. Ejemplo:

    $total = number_format($euro,2,'.',',');
    Resultado: €1.000,20
  7. El formato de fecha SIEMPRE debe ser DIA-MES-Aí‘O, esto se realiza con la función date. Ejemplo:
    $fecha = date('d-m-Y', strtotime($fecha));
  8. Al comunicarse con flash, se debe tener en cuenta el crossdomain.xml. Ejemplo:

    <cross-domain-policy>
    <allow-access-from domain="”*.atobiz.com”"></allow-access-from>
    </cross-domain-policy>
  9. Al realizar pagos y demases, guardar SIEMPRE el precio en una session, ya que por $_GET o $_POST puede ser hackeado.
  10. Siempre encriptar los password con md5, ningún password puede quedar almacenado en texto plano.
  11. Siempre para comprobar si existen datos, utilizar las funciones isset o empty, ejemplo:

    if( ¡empty($_POST['valor']))
    if(isset($_POST['valor']))
  12. Si se esta utilizando un textarea, siempre traspasar el contenido a la funcion htmlspecialchars. Ejemplo:

    $texto = htmlspecialchars($_POST['texto']);

  13. Ningun directorio puede quedar visible para las personas. Para regular esto, poner un index.html en el directorio, para que al ser visualizado quede la pantalla en blanco.
  14. Register Globals esta obsoleto, usar $_GET o $_POST.
  15. NUNCA transpasar datos de usuario via $_GET.
  16. $_POST es para enviar información, $_GET es para recibir.
  17. Utilizar Javascript para validar datos no es suficiente, recuerda que hay clientes que tienen esto deshabilitado.
  18. Nunca utilizar terminaciones .inc ,estas pueden ser vistas por los usuarios, ya que el servidor las entiende como texto plano.

dokshor.com (RSS) + Sator-ii theme by Felipe Lavín and finally edited by dokshor.