Developing my life

Programacion, Mono y .NETApril 15, 2006 10:17 pm

En esta versión ya se encuentra integrado Stetic, el diseñador de GUI’s para Gtk#, ahora los que se quejaban de que MonoDevelop le faltaba el diseñador de Gtk# integrado, ahora no tendran excusas para empezar a usar Mono como plataforma de desarrollo :) . A menos que ahora se quejen de que falta el diseñador para ASP.NET integrado :? , pero esto no tardará mucho, porque ya se esta desarrollando AspNetEditor, para intergrarlo a MonoDevelop :D , solo es cuestion de tiempo.

Para muestra un pantallazo:

MonoDevelop0.10

La disposición de los paneles no es la que esta por defecto, las acomodé para recordarles a alguna otra IDE para .NET :D .

Ahí los vidrios :D .

Programacion, PHPJanuary 21, 2006 3:25 am

En estos días estuve trabajando en el rediseño de NetMoviles, por contacto de mi amigo grapitix radicado en la madre patria, entre otras cosas quieren cambio de diseño, y de la web, agregar unas cosas entre ellas un chat para realizar consultas en línea.

No tenía tiempo para desarrollar uno en flash (asi lo querían :P ), así que me puse a la busca de uno en google. Encontré varios pero eran un poco pesados para mi gusto, hasta que dí con Develooping flash chat desarrollado en flash y php; incluso hay una demo para que lo prueben en línea, haber si les convence :D .

En la web del autor dice lo siguiente “Es gratuito, puedes usarlo libremente y modificarlo como desees (siempre que mantengas los créditos).”; creo que el autor quiso decir libre :P . Lo descargué y me dispuse a instalarlo, pero no funcionaba :S, asi que revisé el código, y ví que usaba variables globales por todos lados, es decir, para que funcione la opción en el php.ini, register_globals debería estar activada. Yo tengo dicha opción desactivada porque no me gusta usar variables globales nunca, y no solo en php, en mi opinión el uso de variables globales hace que el código se vuelva dificíl de mantener y entender, a parte que no es un buen hábito de programación, ni muy seguro que digamos :P , aunque algunos ven el uso de globales como desarrollo mas rápido, lo cual es diferente de productivo :D .

Para dar un ejemplo del uso de globales, Si llamamos a una página con http://www.miweb.com/mipagina.php?mivariable=5, esto provoca que en la página mipagina.php automáticamente genere la variable $mivariable con el valor 5. Pero por razones de seguridad este comportamiento automático se ha cambiado, estableciendo el valor por defecto de register_globals a off, a partir de la version 4.2.x de PHP.

Ahora para no trabajar con globales debemos buscar todas aquellas variables que son definidas automáticamente, variables del servidor, que provienen de get o post, cookies, files, variables de entorno o sesión. Reemplazar esas variables por las referencias adecuadas en cada caso, en PHP se han definido unos arrays diferentes con valores, dependiendo del lugar de procedencia. Así tenemos los arrays $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES, $_ENV, $REQUEST y $_SESSION.

Si por ejemplo tenemos el siguiente script:

echo "Usuario: " . $usuario; //session
echo "Tipo de navegador: " . $HTTP_USER_AGENT;
echo "Variable: ".$mivariable; //variable de get

Se reemplaza por:

echo "Su edad: " . $_SESSION['usuario']; //session
echo "Tipo de navegador: " . $_SERVER['HTTP_USER_AGENT'];
echo "Variable: " . $_GET['mivariable']; //variable de get

Hechos los cambios para que no use variables globales, me puse a instalarlo en el servidor de pruebas y funciona perfectamente :D .

Le envié el proyecto modificado al autor para que lo revise y lopublique en su web si lo desea :P .

Para los que lo quieren probar lo pueden descargar de aquí(siempre y cuando mi pc este encendidad :P )
O desde aquí

Ahí los vidrios. :D

Programacion, PHPDecember 28, 2005 6:16 pm

A raiz de un proyecto web para una empresa que cayo en mis manos, he estado aprendiendo en estos dias PHP, ya que no sabia nada de este lenguaje :P . Por lo que he visto, PHP es sumamente facil de aprender, bueno tal vez me sirvio de base mis conocimientos en C/C++/C# :D , pero para cualquier impetuoso habido de aprender PHP, no debe ser nada dificil de asimilar. Y ahora estoy aqui para compartir un poco de lo que aprendido :) .

Bueno al asunto, si se tiene un formulario en donde se le pide un usuario que suba una imagen, ya sea para copiarla en una carpeta del server o guardarla en un base de datos, es necesario validar dicho archivo antes de realizar cualquier accion con este.

Para el caso de archivos, PHP nos ofrece una serie de variables a las que podemos acceder con la información del archivo enviado. Puedes usar $_HTTP_POST_FILES o $_FILES, como gustes, yo prefiero el segundo :P .

  • $_FILES[’userfile’][’name’]. El nombre original del fichero en la máquina cliente.
  • $_FILES[’userfile’][’type’]. El tipo mime del fichero (si el navegador lo proporciona). Un ejemplo podría ser “image/gif”.
  • $_FILES[’userfile’][’size’]. El tamaño en bytes del fichero recibido.
  • $_FILES[’userfile’][’tmp_name’]. El nombre del fichero temporal que se utiliza para almacenar en el servidor el archivo recibido.

Primero que nada un archivo no puede tener 0 bytes y si le puede limitar a un tamaño para que el usuario no pueda subir un archivo muy grande y nos eche a perder el dia :P . Luego hay que verificar que el archivo sea una imagen. Vamos al codigo :

Si se quiere aceptar cualquier tipo de imagen.

<?php
$filesize = $_FILES['userfile']['size'];
$filetype = $_FILES['userfile']['type'];

if ( $filesize > 0 && $filesize <= 100000 && strpos($filetype,"image") != false ) {
//realizar acciones
}
else
echo "imagen no valida!.";
?>

En este codigo estamos limitando que la imagen no pese mas de 100kb, con strpos(filetype,”image”) validamos que el tipo de archivo sea una imagen ya que este filetype puede contener: image/gif, image/png, etc. Si vamos a utilizar las imagenes subidas, por ejemplo en una galeria de imagenes, no es muy recomendable que el usuario pueda subir cualquier tipo de imagen, ya que hay imagenes que no son aptas para web. Ahora vamos a restringir que solo pueda subir los de tipo jpeg, gif y png:

<?php
$filesize = $_FILES['userfile']['size'];
$filetype = $_FILES['userfile']['type'];
$type = substr($filetype, (strpos($filetype,"/"))+1);
$types=array("jpeg","gif","png");

if ( $filesize > 0 && $filesize <= 100000 && in_array($type, $types) ) {
// realizar acciones
}
else
echo "Imagen no valida!.";
?>

Como vemos tenemos un array donde especificamos los tipos de imagen que son aceptados, y luego con la funcion in_array buscamos si tipo ($type) de la imagen proporcionada por el usuario se encuentra en el array devolviendonos true si esta y false sino. Este codigo no solo nos sirve para imagenes sino para cualquier tipo de archivo que nosotros queremos validar.

Nota: PHP saca el tipo del archivo segun su MimeType, esto quiere decir que si a un archivo de texto con extension TXT lo cambio la extension a JPG, php no lo toma como imagen (image/jpeg) sino como texto (text/txt) . Recordarles que recien empiezo con PHP, asi que cualquier sugerencia será bienvenida :) .

Ahi los vidrios :D .

Programacion, Mono y .NETNovember 28, 2005 12:48 pm

Revisando el blog de Miguel veo que ya ha salido una nueva version de MonoDevelop y tiene características nuevas muy interesantes; las notas de esta version estan aqui.

  • Página de bienvenida. En la cual aparecen los proyectos creados o modificados recientemente.

    MD-Welcome

  • Una nueva arquitectura basada en componentes para la IDE. Para mas detalles ver Architecture Overview.

    MD-Architecture

  • Un nuevo administrador de Add-In.Para instalar, remover y actualizar plugins para la IDE de MonoDevelop.

    MD-Add-In

  • Una herramienta de construcion (build) en linea de comandos.. Ahora se puede integrar proyectos de MonoDevelop dentro de un batch de proceso de compilación.
  • Smart Indent para C# y Boo.. Esta opcion puede ser habilitada desde el panel de comportamiento del editor de texto, en el diálogo de preferencias.

Aunque yo uso Vim :P para programar, pero es bueno ver los avances que se hacen con la IDE de MonoDevelop.

Ahi los vidrios :) .

Programacion, OpenBSSOctober 9, 2005 6:41 am

Pues hace tiempo que no posteaba alo, pero he estado ocupado estos dias. Ahora lo hago para contarles sobre un nuevo proyecto en MonoHispano.

Al principio se trataba de una terminal punto venta - MonoTPV (original el nombrecillo :P ) basado en la idea de Facturalux, pero a iniciativa de Enzo se decidio cambiar la perspectiva del proyecto y transformarlo en una aplicación ERP + CRM multiplataforma para PYMEs, de la cual nació Open BSS - Open Business Solution System (me gusta mas este nombre :D ).

Ahora estamos en la etapa inicial del proyecto, pero vamos por buen camino :D .

Programacion, Mono y .NET, MonoBlogSeptember 20, 2005 5:15 pm

Hoy he subido al svn de MonoBlog lo que habia avanzado el dia de ayer, es una version pre-alfa :P . Despues de pelearme con el Gtk.ComboBox y lograr lo que queria, Mario me dijo que mejor utilizara Gtk.ComboBoxEntry porque Gtk.ComboBox ya estaba obsoleto, muy tarde :S. Pero bueno eso ya lo ire viendo.

Cosas que he hecho:

  • Logeo correcto mediante la GUI
  • Obtencion de blogs en un Gtk.ComboBox
  • Vista previa del post
  • Envio del post

Cosas que faltan hacer:

  • Implementacion de las opciones del Menu
  • Una barra de herramientas para hml
  • Resaltado de sintaxis html
  • Obtencion automatica de blogs despues del logeo
  • Resolver varios bugs, que de seguro hay :P
  • Y alguna otra sugerencia :D

Si quieres ir testeandolo (solo funciona con Blogger) pos hazlo:

svn checkout svn+ssh://anonymous@forgesvn1.novell.com/svn/mono-blog/trunk/0.1
pass: anonymous o aqui

Requerimientos: gtk#2, glade#2 y gecko#2. Full desarrollo :P .
Compilado con: Mono 1.1.9

Aqui algunos pantallazos:

Le doy gracias a Parodisoft por el logo que hizo, pero para serle sincero no me gusta mucho que digamos :P .
Se aceptan mas propuestas!, tamaño (232 x 264).

Una ultima cosa, si van a introducir codigo html, pues que sea uno bien formado, sino no postea, cierren todas las etiquetas que habran y coloquelas como son :D .

Programacion, MonoBlogSeptember 13, 2005 6:30 pm

Pues diseñando la GUI de MonoBlog con Glade como que me familiarizo un poco con esta herramienta. Es una GUI simple, pero poco a poco le iré agregando mas cosas, además falta el logo de MonoBlog que ya se lo encargué a Parodisoft porque creando logos no soy muy bueno que digamos :P , por el momento le he puesto una imagen que saqué del planeta de los ximios :D . Parodisoft me dijo que para el viernes estará listo :P . Espero que para este fin de semana tenga la GUI lista para subirla al SVN de MonoBlog, tengo que hacer varias cosas esta semana, ojalá me alcanze el tiempo :) .

Aquí unos pantallazos.

Login

Editor

Programacion, Mono y .NETSeptember 10, 2005 11:17 am

Mono 1.1.9 introduces two new ports of the Mono JIT compiler: Itanium and ARM processor. This release introduces SSL support on XSP, a reusable web server, Cairo 1.0 bindings, a more scalable and hardened version of ASP.NET and the new .NET-compatible international collation code and much more.

This release includes various improvements from the summer of code: an updated and more conformant JScript.NET compiler and a revamped documentatiom browser now with integrated searching and Mozilla support.

For a more complete list see our release notes.

Mono 1.1.9 is packaged for a number of platforms and available for download.

Programacion, Mono y .NET, MonoBlogAugust 8, 2005 4:40 pm

Este ultimo fin de semana, he estado empapandome de lo que se habia avanzado con MonoBlog, ya que por otros motivos no tenia mucho tiempo. He revisado la libreria base hecha por Gmikex y le he hecho unas modificaciones:

  • Documentacion: He mejorado la documentacion de la libreria utilizando etiquetas XML, asi el mantenimiento y su comprension de la libreria sera mas facil.
  • Interfaz Provider: Siguiendo la recomendacion de Gmikex he creado una interfaz Provider, la cual deberan implementar cada clase que maneje un motor de blog diferente (Blogger, WordPress, etc.). Esto facilitara la adaptacion para mas motores blog.
  • Actualizacion del codigo: He hecho unos cambios en el codigo, para que se entienda mejor y ademas realize su trabajo mas eficientemente. Ademas he agregado y adaptado la funcionalidad de posteo hecha por NeCuDeCo.
  • Creacion de la gui DemoWriter: He creado una gui simple solo para verificar el correcto funcionamiento de la libreria de MonoBlog, ademas he puesto algunas ideas que tengo de como sea la GUI final de MonoBlog. Como por ejemplo la capacidad de postear una misma entrada en varios blogs diferentes, por el momento solo funciona con Blogger, pero la idea es que funcione con mas (WordPress, etc.). Esto funcionalidad me va a ser muy util, porque por ejemplo en mi caso, cada avance que haga con MonoBlog lo posteare en el blog del proyecto, pero ademas desearia postearlo en mi blog personal, por el momento no se puede ya que mi blog esta en Blogsome :( . Como a mi esta funcionalidad le puede ser util a varias personas, como NeCuDeCo que tiene como 40 Blogs :P .


Un pantallazo de DemoWriter

Lo he probado en Windows :lol: y por el lado de la portabilidad de MonoBlog, va bien :D . El binario y el codigo esta en el svn de MonoBlog, aqui.

Programacion, Gnu/LinuxJuly 22, 2005 1:34 pm

Ragnarok es un proyecto personal de mi amigo NeCuDeCo, que nacio partir de su labor en las instalaciones de la red telematica de la UNT.

Esta Distro esta basada en Gentoo. De momento solo existen versiones para Intel 686 e Intel P4.

Con esta distribucion se pretende cubrir el area de desarrollo profesional, y mas no el area de ofimatica, Ragnarok viene en 4 versiones:

  • Developer : Incluye paqueteria para desarrollo de software.
  • NetworkAdmin : Incluye paqueteria para Administracion y Control de Redes.
  • ForensicLive : LiveCD con software para recuperacion y Analisis de Datos.
  • Cluster : Incluye Servidores y Kernel listos para realizar Clustering.

De momento, solo esta disponible la version de Developer. Al no contar todavia con hosting para la ISO, Ragnarok de momento solo esta disponible para Peru y mas especificamente Trujillo. Si alguien quiere brindar un hosting por favor comunicarse con necudeco_en_gmail_com o con juanperojas_en_gmail_com.

Aquí algunos screen shots.