Friday, December 21, 2007

Ejemplo aplicación en Java



Este es un trabajo que tuve que hacer para la Universidad y lo publico para ayudar a la comprensión de este espectacular lenguaje. Este ejemplo que está en swing, con NetBeans 5.5 comprende,

Uso de
  • Look and Feel, al inicio y en tiempo de ejecución
  • Uso de metodos publicos, estáticos, privados
  • ArrayList (la manera que encontré para trabajar con arreglos dinámicos)
  • JFrame, JPanel, JScrollpanel, JList, JLabel, JtabbedPane, JRadioButton, JCheckButton
  • JComboBox, JButton, ButtonGroup, y otros
Problemas que tuve y solucioné
  • Había que crear un arreglo diámico (ya escribi como lo solucione arriba) pero también había que "traspasarlo" de una ventana a otra, y se me ocurrió crear una clase 'MiAgenda' con un arrayList publico/estático y así pude acceder a ella desde cualquier ventana sin tener que "copiar" los valores del array de una ventana a otra.
  • Para buscar en una cadena use el método contains, es bien simple de usar.
  • Uno de los primero problemas que tuve fue el posisionamiento de los elementos en la ventana, esto lo solucioné con AbsoluteLayout.


Bueno usé varias cosas más pero no me acuerdo ahora. Sólo les queda revisar el codigo y sacar sus propias conclusiones ;)

Agrego que no soy experto en Java pero cuando tomé el ramo este semestre me encantó... más que .NET ;) ( es una apreciación personal )

Lo único que no supe como solucionar, fue el de-seleccionar un radiobutton en tiempo de ejecución, así que si algún lector lo sabe que me diga como porfavor...

Descargar Ejemplo Java (Ejecutable)
Descargar Ejemplo Java (Código fuente)

Thursday, December 06, 2007

Java y Mysql

Bueno este es mi primer aporte a Java ( espero no sea el último ). Es una clase que realicé para facilitar el acceso a la base de datos. Su uso es simple e inicialmente no es necesario modificarla, a no ser que quieras agregarle más cosas.

Esta clase tiene dos métodos: seleccionarBase y consultar. En el primero se conecta a la base y con el segundo hacemos las consultas.

Ejemplo de uso:

//Instanciamos la clase y enviamos parámetros necesarios
MysqlMan conexion = new MysqlMan("localhost", "root", "");
//Intenta conectar a la base y envia un boleano si se conecta correctamente
if (conexion.seleccionarBase("pruebas")) {
//Si conecta ok, realizamos la consulta
ResultSet consulta = conexion.consultar("SELECT * FROM `tabla`");
//Por cada resultado mostramos los datos
while (consulta.next()) {
System.out.println(consulta.getString("id") + " : " + consulta.getString("nombre"));
}
}

Fácil! no?

Bueno como es de mi costumbre no hay como el archivo de ejemplo para descargar:

Mysql-connector
(Si tienen problemas o quieren más información)
Ejemplo (En Netbeans 6)
Ejemplo (Sólo clases)

Wednesday, October 17, 2007

Comprimir archivos JS y CSS de tu sitio

Ya que estoy probando el framework para javascript EXTJS, tuve dudas en usarlo por su tamaño (~500Kb). Pero buscando encontré esta solución que es muy interesante, fácil y necesaria de usar.

Es una cabecera para comprimir el archivo que quieras, en este caso javascript y css.

¿Como?

1) Creamos el archivo compresor para CSS:
gzip-css.php
'<'?php
ob_start ("ob_gzhandlerCSS");
header("Content-type: text/css; charset: UTF-8");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 ;
$ExpStr = "Expires: " .
gmdate("D, d M Y H:i:s",
time() + $offset) . " GMT";
header($ExpStr);
?'>'

2) Creamos el archivo compresor de JS:

gzip-js.php

'<'?php ob_start ("ob_gzhandlerJS"); header("Content-type: application/x-javascript; charset: UTF-8"); header("Cache-Control: must-revalidate"); $offset = 60 * 60 ; $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"; header($ExpStr); ?'>'

3) Creamos el .htaccess:

.haccess

AddHandler application/x-httpd-php .js
php_value auto_prepend_file ../lib/gzip-js.php
AddHandler application/x-httpd-php .css
php_value auto_prepend_file ../lib/gzip-css.php

Notas:
  • @ '../lib/' es la ruta del archivo que llamamos.
  • @ Este archivo debe estar en el mismo directorio que los archivos CSS y JS.

Descargar Ejemplo



Referencias:
The Definitive Post on Gzipping your CSS
How to implement GZIP using PHP

Saturday, October 13, 2007

Errores cuando empezamos con Zend Framework

Les dejo las soluciones a los tres problemas más recurrentes cuando empezamos a trabajar con esta librería:

500 Internal Server Error

Deben descomentariar (o agregar) la línea del archivo httpd.conf de Apache:

#LoadModule rewrite_module modules/mod_rewrite.so
(quiten el #)


Fatal error: Uncaught exception
'Zend_Db_Adapter_Exception' with
message 'The PDO extension is
required for this adapter but the

extension is not loaded' in...

Deben descomentariar (o agregar) la línea del archivo php.ini:

;extension=php_pdo.dll
(quiten la ;)

Fatal error: Uncaught exception
'Zend_Db_Adapter_Exception' with
message 'The mysql driver is not
currently installed' in

Deben descomentariar o agregar (tuve que hacerlo) la
línea del archivo php.ini:

;extension=php_pdo_mysql.dll


IMPORTANTE: No olvidar reiniciar Apache luego de hacer estos cambios.


Espero les sirva de ayuda...

Monday, October 08, 2007

Zend Framework: Primeros Pasos

Este es un mini proyecto web basado en zend framework. La idea es que puedan acercarse más al desarrollo MVC, que debiera ser el patrón de diseño a utilizar ahora.

Yo estoy recién iniciándome en esto pero, quiero compartir lo que hice para que a otros no les cueste tanto entenderlo.

Por ahora sólo subiré el archivo y luego lo explicaré más detalladamente, aunque es un ejemplo más detallado de:

http://akrabat.com/zend-framework-tutorial/

Bueno,
Los requisitos para entender este archivo:

  1. Conocimientos en php
  2. Nociones de MVC ref1 ref2
  3. Paciencia
  4. Detallista en la observación
Les recomiendo, que analicen cada código de cada link y entenderlo bien antes de pasar al otro. Se les hará más fácil progresivamente.

Por ejemplo: (Esto es un extracto de lo primero que verías)


Entras a App, y con un editor php debieras abrir:

(Estamos dentro de \myfirstzend [ej: c:\appserv\www\myfirstzend])

  • index.php (El corazón de tu sitio)
  • application\controllers\AppController.php (El controlador)
  • application\views\scripts\app\index.phtml (La vista)
Fíjate en la extensión phtml, así zend maneja las vistas.

Te encargas de entender bien el código y pasas al otro link.

Más links de ayuda:

Si tienen más links aporten, porque documentación en español es la que falta!!!!

Descargar Archivo

Si tienen problemas vean esto:
http://porquero.blogspot.com/2007/10/errores-cuando-empezamos-con-zend.html

Wednesday, September 26, 2007

Como evitar que el visitante vea errores de php

Muchas veces al realizar y subir nuestros proyectos a la web, vemos que funcionan correctamente, pero después de un tiempo aparecen de las sombras los típicos: fatal error, warning y otros. Entonces nos preguntamos: ¿cuánta gente vio las entrañas de mi sitio?.

Aunque esto parezca algo trivial, nos puede traer problemas de seguridad al hacer visible la estructura de tu sitio.

Las soluciones:

Deshabilitar todos los errores con esta función:

error_reporting: que define cuáles errores de PHP son reportados.


Usar las funciones die() y header():

Ejemplo,

'<'? mysql_connect("consulta errada") or die(header("Location: error_manager.php?id_err=123")); ?'>'

Esta solución la encuentro interesante ya que podemos personalizar los errores como queramos, y el hecho de utilizar la función die(), nos aseguramos de que el código no continúe generando errores.
El inconveniente es que muestra sólo el primer error que se genera, pero lo bueno es que que tú eliges donde.


Usando excepciones (Try Catch)

php5 incorpora excepciones, para más información vean la documentación.

Monday, August 13, 2007

Leer XML desde Flash

Les dejo este script de ejemplo, para que puedan entender con qué facilidad pueden leer y mostrar resultados dinámicos gracias a xml en Flash con SwishMAX.

Está demás decirles que es un action script y también se puede utilizar con el editor de Adobe, sólo tendrían que implementarlo.

El código:

onLoad () {

barra = new XML();

barra.ignoreWhite = true;

barra.load("mixml.xml");

barra.onLoad = function(success) {

if (success) {

msg.text = "Datos cargados ok!";

barraItem = this.firstChild.childNodes;

for (var i=0; i<barraItem.length; i++) {

n = "iC" add i;

duplicatesprite("itemClip", (n), i);

(n)._x = 20+20*i;

(n)._height = barraItem[i].attributes.num;

}

}

else {

msg.text = "Error!";

}

};

itemClip._visible = false;

}

Descargar Ejemplo

Tuesday, July 24, 2007

Mostrar resultados PHP en un Flash

Dejo un ejemplo muy simple para que se entienda el procedimiento de cómo trabajar con php y flash, y así poder entregar resultados más atractivos en cuanto a diseño.

Anteriormente publiqué otro ejemplo sobre flash con texto dinámico. Este trabaja con javascript y también es muy útil. Pero también queremos trabajar directamente en php para que el archivo flash "llame" las variables generadas por nosotros en php.

Los códigos:

en php (paraswishmax.php)

'<'? //Expongo esto a modo de ejemplo. echo "&var_para_swishmax=cualquier cosa&amp;"; ?'>'


en swishmax

loadVariables("paraswishmax.php");

Lo otro:
  • El texto creado en swishmax debe tener el nombre que que usamos en "paraswishmax.php" que en este caso es 'var_para_swishmax'
  • Fíjense que la línea para el flash (en "paraswishmax.php") debe iniciar y terminar con un ampersand (&)
  • El archivo no corre directamente en tu pc, debes tener instalado apache. Si no lo posees instala appserv
Fíjense que este procedimiento no es muy complicado versus lo que puedes lograr a hacer, sólo tu imaginación te detendría.

Descarga Ejemplo

Monday, July 09, 2007

Función para subir Imágenes

Bueno esta función es antigua. La hice hace bastante tiempo, pero les puede ser de utilidad, porque facilita la subida de una imagen JPEG o JPG, a su sitio.

Que hace:
  1. Sube el archivo
  2. Valida si es jpg o jpeg
  3. Si es indicado en los parametros redimensiona la imagen en 2 tamaños

Al final entregaria 3 imagenes: la original, redimensionada 1, redimensionada 2 y retorna el nombre generado para la imagen.

Para poder utilizarla o llamar la imagen seria:

ej:

Supongamos que el nombre generado es "14521458.jpg"

original: 14521458.jpg
redim 1: res14521458.jpg
redim 2: th14521458.jpg

Espero que haya sido claro...

Códigos:

PHP

'<''?'php
/* Subir Foto imagen */
/* Sube una imagen desde el pc al servidor, le cambia la resolucion para la pagina y crea la thumbnail.
El directorio de subida debe estar dentro del raiz
$inpt : nombre del campo de archivo en el form.
$dir : directoruio a subir (debe existir y debe ir asi: dir/)
$aj 0-1 : Indica si haremos resolucion
$ajx : ancho de resolucion
$th 0-1 : Indica si haremos thumnail
$thx : ancho
$thy : alto */
function subir_foto($inpt,$dir,$aj,$ajx,$th,$thx,$thy){
$uploadDir =$DOCUMENT_ROOT.$dir;
$uploadFile = $uploadDir.$_FILES[$inpt]['name'];
if (move_uploaded_file($_FILES[$inpt]['tmp_name'], $uploadFile)){
$secargo=1;
}else{
$secargo=0;
}
chdir($DOCUMENT_ROOT.$dir);
if((strpos($_FILES[$inpt]['name'],"jpg") strpos($_FILES[$inpt]['name'],"jpeg")) (strpos($_FILES[$inpt]['name'],"JPG") strpos($_FILES[$inpt]['name'],"JPEG"))){
$nnew=date("d"."m"."y"."h"."i"."s").".jpg";
rename($_FILES[$inpt]['name'],$nnew);
$img=imagecreatefromjpeg($nnew);
$alto=imagesy($img);$ancho=imagesx($img);
/* Crear imagen ajustada */
if($aj==1){
$anchores=$ancho/$ajx;
$altores=$alto/$anchores;
$res=imagecreatetruecolor($ajx,$altores);
imagecopyresampled($res,$img,0,0,0,0,$ajx,$altores,$ancho,$alto);
imagejpeg($res,"res".$nnew);
}/* Crear imagen ajustada FIN */
/* Crear imagen chica */
if($th==1){
$thumb=imagecreatetruecolor($thx,$thy);
imagecopyresampled($thumb,$img,0,0,0,0,$thx,$thy,$ancho,$alto);
imagejpeg($thumb,"th".$nnew);
}/* Crear imagen chica FIN */
return $nnew;
}
else{
unlink($_FILES[$inpt]['name']);
}
}
'?>'

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<?
if(strlen($_FILES['flog_f']['name'])){
//agregar foto
$flog_foto=subir_foto("flog_f","uploads/",1,450,1,80,70);
}?
>
<form action="[php]<?= $PHP_SELF?>[/php]" method="post" enctype="multipart/form-data" name="flog_form" id="flog_form">
Foto <strong>SOLO JPEG ó JPG</strong> :<input name="flog_f" type="file" id="flog_f" />
<input name="submit" type="submit" id="submit" value="Enviar" />
</form>
</body>
</html>

Descargar Archivos

Thursday, July 05, 2007

Centrar Página

Anteriormete publique otra manera de centrado con respecto a los cuatro lados de la ventana, pero debes determinar el ancho y el alto de la página.

Esta solución es sólo si quieres centrarla con respecto a la izquierda y derecha, y en este caso sólo debemos determinar el ancho.

Código (Debe ir en el head):

<style type="text/css">
#contenedor { width: 764px; margin-top: 10px; margin-right: auto; margin-bottom: 10px; margin-left: auto; position: relative;}
</style>

Toda la página debe estar dentro de #contenedor (En Body)

Código:

<div id="contenedor">aca tu web</div>

Ejemplo centrar pagina

Impedir que bajen imágenes de tu sitio

En realidad sería dificultar la bajada, ya que hay muchas maneras de conseguir descargar lo que quieras de un sitio. Pero por lo menos esto hará la tarea más dificil.

IMPORTANTE: No olvides poner un index "vacio" en la carpeta donde alojas tu imágenes. En el archivo de ejemplo dejé el index que deberías usar.

Dos maneras:
- Utilizando javascript+un meta para imágenes.
- Usando capas con imagen de fondo.

No hay inconveniente para usar ambas, pero es más fácil utilizar la primera.


- Utilizando javascript+un meta para imágenes.
Debes insertar este código javascript en tu página. Es recomendable llamarlo en vez de insertarlo.

Código: (en el archivo js)


// Desactiva la selección de texto en el body.
document.onselectstart = new Function ("return false");
document.ondragstart = new Function ("return false;");
document.oncontextmenu = new Function ("return false;");


Y entre el head de tu página usas este meta:
Esto es para que no aparezca la barrita de opciones en IE para imágenes.

<meta http-equiv="imagetoolbar" content="no">

Ejemplo utilizando javascript+un meta para imágenes

- Usando capas con imagen de fondo.
Este es más engorroso pero también es utilizado.

Debes usar una capa o div y usar en el "background-image" la imagen que usarás.

Thursday, June 14, 2007

Convertir a texto plano compatible con navegador

1 Solucion:

Simplemente con la función: htmlentities y algunos parámetros.

Si tienen problemas, en windows no funciona pero sí en Linux.

Código:
'<'? echo htmlentities("Texto con carácteres, acentos, eñes, y otros...",ENT_QUOTES,"UTF-8"); ?'>'

2 Solucion:

internacionalizacion-de-caracteres

3 Solucion:

Este problema es recurrente y siempre tenemos que hacer varias "peripecias" para lograr que los textos se vean bien en los diferentes navegadores.

Bueno esta es la función que utilizo para "limpiar" los textos que deseo ingresar a una base de datos o mostrar en un navegador:

Además la publico porque quiero saber si hay otra o mejorarla.

Ejemplo
---------------------------------------------------------------------
include ("atxtsrc.php");
atxt("Texto con carácteres, acentos, eñes, y otros...");
---------------------------------------------------------------------


Descargar Función

Tuesday, June 12, 2007

Leer tags desde un html o xml (parsear)

Esta función la utilizo para extraer información de los tags que necesito de un html, por ejemplo los links, info dentro de una capa, entre otros.

Solo funciona en PHP5, para que no se quiebren la cabeza tratando de hacerlo funcionar.

El uso es simple, debemos tener lo siguiente:


  1. La url que "leeremos"
  2. un array vacío
  3. el tag que tomaremos
  4. y el atributo que deseamos extraer
Ejemplo:

-----------------------------------------
include ('parserhtml.php');

$lista=array();
$url='http://sabisque.com/?feed=rss2';

//llamamos la funcion
parserhtml($url, $lista, 'a', 'href');
//luego muestras los datos con un foreach o como quieras
foreach($lista as $link=>$texto)
echo $link.' '.$texto.'HR'; //el HR es por la etiqueta html
-----------------------------------------

Descargar parserhtml

Wednesday, May 30, 2007

Flash con texto dinámico

Este es un truco que utilizo para no usar similares archivos flash que solo cambian el texto.
La solución es crear uno con un texto dinámico y modificarlo con javascript.

También es una fácil manera de trabajar con fuentes no estandar, así nos aseguramos de que el diseño quede como lo queríamos. Esto usa el mismo criterio que sIFR.

Herramientas que utilizé:

Swishmax
SwfObject

Como creo el archivo flash:
Fijense en las elipses, esos son los parámetros que deben manipular, (Los numeros variarán de acuerdo sus necesidades).
También esto se puede hacer en Adobe Flash, pero como utilizo SwishMax, el ejemplo se referirá a este.

SwfObject:
Este es un script que utilizo para "pasar la prueba" en W3C, y una de las características que tiene este script es que puedes cambiar el texto dinámico del flash que llama.

Ejemplo:

Descarga ejemplo completo

Recuerden utilizar el mismo nombre de la variable en el flash y el script.
Y eso es todo! que facil, no?!

Wednesday, May 23, 2007

Manuales escenciales para trabajar con PHP y Mysql

Estos son los manuales que utilizo amenudo al momento de desarrollar. Son los de PHP y Mysql.


Lo bueno es que están en chm o formato de ayuda. Aclaran varias dudas y aprendes a usar mas ambos lenguajes.




Appserv

Por si no lo conocías o estás recien empezando a desarrollar en web con PHP+MySql, te recomiendo este software que funciona correctamente inmediatamente después de ser instalado.
No tiene muchas complicaciones a la hora de configurar e incorpora herrameinetas útiles como phpMyAdmin, editores de configuración para php y apache, entre otros.

Es cierto que existen otros que cumplen las mismas caracteristicas que appserv pero este trae las herrmientas justas y necesarias para trabajar y no confundirte.


Saturday, May 19, 2007

Centrar tu página con css

Aquí les doy una pequeña solución para centrar su página en relación a los cuatro lados de la ventana con css, sin frames ni scripts complicados.

Funciona en firefox e IE, y pasa la prueba en W3C.


Código:

Estilo:

<style type="text/css">

#contenedor {

width: 600px;

text-align: left;

position: absolute;

left: 50%;

top: 50%;

height: 300px;

margin-left: -300px; /* 50% width */

margin-top: -150px;

background-color: #99CC00;

}

</style>

Capa: (Todo lo que hagas después debe estar dentro de esta capa)

<div id="contenedor">Acá tu página centrada fácilmente</div>

Descarga Ejemplo

Friday, May 18, 2007

Clase para generar gráfico de barras o puntos desde un array

Este es una simple utilidad de fácil uso y comprensión. Genera una imagen con barras o puntos desde un array o matriz.

Descarga

Ejemplos



Mi vitácora de conocimientos

Hola, de ahora en adelante utilizaré este blog (que no sabia para que usarlo) para publicar todas batallas que gane en el desarrollo de soluciones para web u otra plataforma. Mi fuerte es PHP así que creo que empezaré por este lenguaje.

La idea es compartir mis conocimientos de acuerdo a mi experiencia y lo que adquiera académicamente.

Espero les guste.. y cualquier aporte sera bienvenido...