Archives

Las cookies son contenedores de información que tienen la misma función que las variables, sólo que estas quedan guardadas en la computadora del usuario por lo que pueden utilizarse en cualquier momento.

Las cookies se componen de una estructura básica que es nombre, valor y tiempo.

Para que entiendas su funcionamiento, vamos a hacer un sencillo ejemplo en donde crearemos una cookie llamada “prueba”:

<setcookie>

En este ejemplo se ha creado una cookie llamada “prueba” con el valor “probando” y que tendrá una duración de 1 hora. Ten en cuenta que el tiempo se pone en segundos.

Para obtener el valor de la cookie se usa una de las 3 formas que se muestran a continuación:

<Para>

De las 3 formas la recomendada es $_COOKIE[prueba], ya que la segunda fue usada en versiones anteriores de PHP como PHP 3, y la última puede ser insegura ya que si alguien conoce el nombre de la cookie la puede poner mediante el navegador de la siguiente forma:

http://nombre.webcindario.com/index.php?prueba=probando

También, esta forma será obsoleta con la llegada de PHP 6 que sólo permitirá el uso de variables seleccionandolas por su tipo ($_GET, $_POST, $_COOKIE, etc).

Se puede eliminar una cookie sólo indicando su nombre:

<setcookie>

Nota: Las cookies sólo pueden ser leídas y eliminadas en la web donde fueron creadas.

Si creas una cookie aquí:

http://nombre.webcindario.com

Podrás leer la cookie en todas las carpetas que se encuentren ahí:

http://nombre.webcindario.com/carpeta1/carpeta2/carpeta3

Pero si has creado una cookie en una carpeta:

http://nombre.webcindario.com/carpeta1

No podrás leerla en esta dirección:

http://nombre.webcindario.com

Para poder crear y eliminar cookies, no deberá haber ningún código de salida antes del código de la cookie, sino te provocará el error Cannot add headers.

El código de salida se refiere a código HTML y códigos en PHP como echo e incluso los espacios en blanco (excepto saltos de línea).

Ejemplo de forma incorrecta:

<html>
<head>
<title>Título</title>
</head>
<body>
Contenido
<echo>
</body>
</html>

Ejemplo de forma correcta:

<setcookie>
<html>
<head>
<title>Título</title>
</head>
<body>
Contenido
</body>
</html>

PHP es uno de los lenguajes del lado del servidor más completos y con mayor número de funciones útiles. En este caso, estudiaremos las funciones que permiten trabajar con archivos, y en algunos casos con directorios.

basename()

Esta función devuelve la ubicación base de algún archivo. Es de utilidad cuando nos interesa eliminar la ruta física de algún archivo y devolver sólo el nombre de dicho archivo y su extensión:

<ruta>

Como ves, la función basename devuelve el archivo resultante de la eliminación de la ruta física. Su utilización es demasiado básica y no necesita de ninguna explicación amplia, aunque su utilidad también es un poco reducida.

chmod()

Increíblemente el PHP permite cambiar los permisos de algún archivo o directorio utilizando esta función. Obviamente está restringida y su aplicación no es más que un intento por cambiar el valor chmod de algún archivo o carpeta, pero para que verdaderamente funcione se requiere de soporte en el servidor.

La única particularidad de esta función es que para otorgar permisos se debe anteponer un 0 al valor del permiso. Por ejemplo, para 755 se debe escribir 0755.

La sintaxis de la función es:

<chmod>

En donde permiso, como ya mencionamos, debe ser el valor chmod que deseamos otorgar, con un 0 anteponiéndolo.

Para dar a archivo.txt permisos 777 debemos utilizar la siguiente sintaxis:

<chmod>

copy()

Como su nombre lo indica, esta función permite copiar archivos dentro del servidor. Muy útil si deseamos hacer un back-up online de modo que tengamos los archivos antiguos dentro del servidor evitando el peso de descargarlos todos. Aún así, las aplicaciones son muchísimas.

<copy>

copy() devuelve true si se ejecutó el proceso correctamente y false si no se logró la copia.
Podemos aprovechar esta capacidad para mostrar mensajes de error según suceda:

<if>

Lo anterior mostraría un mensaje de error si no se logra la copia del archivo archivo.txt a backup1.txt.

dirname()

Devuelve el nombre del directorio de una ruta:

<ruta>

diskfreespace()

Esta extraña función devuelve el número de bytes de espacio libre que hay en algún directorio. Para verificar, por ejemplo, el espacio libre disponible en el directorio raíz de un sitio web se utiliza la sintaxis:

<espacio>

readfile()

Lee un archivo completo y devuelve al final el número de bytes leídos. Si no se logra abrir la conexión con el archivo devuelve error.

<archivo>

Esta es una forma muy fácil de leer archivos aunque el problema está en que devuelve el número de bytes leídos, cosa que nadie desearía, para ello se utiliza más frecuentemente la función file() que devuelve un array con todas las líneas del archivo. Más adelante veremos cómo utilizarla.

fopen(), fclose(), fwrite(), fread()

fopen() crea una conexión a algún archivo, especificando el tipo de tratamiento que se le dará al archivo, es decir, si será de lectura, escritura o ambos. Por defecto, se puede leer un archivo pero para lograr escribir en él se requieren permisos chmod 755.

fclose() cierra la conexión para liberar memoria.

La sintaxis de fopen es:

$archivo = fopen(“archivo.txt”,permiso);

permiso equivale a una letra identificadora del tipo de tratamiento que le daremos al archivo. Existen tres básicamente: r (solo lectura), w (escritura) y a (ambos). En el caso de escritura el cursor se ubica al inicio del archivo por lo que la escritura afecta todo el contenido del mismo, mientras que a ubica el cursor al final del archivo para escribir nuevo contenido sin eliminar el existente.
Veremos un ejemplo de escritura en un archivo.

<fp>

Ahora hemos introducido la función fwrite() que permite la escritura en un archivo, según la conexión creada.
La sintaxis es:

fwrite($conexion, textoaescribir);

Otra de las muchas formas de leer archivos es utilizar la función fread aunque ésta está un poco limitada, pues sólo lee un archivo hasta determinado número de bytes, para evitar esto se puede utilizar la función file_size para establecer el número de bytes totales y así leer todo el archivo. Más adelante encontrarás información sobre esta función.

<fp>

file()

Esta función toma el contenido total de cualquier archivo y lo guarda línea por línea en un array. Es la más útil de todas las formas de lectura de archivos pues permite crear scripts complejos que trabajen en líneas… por ejemplo un rotador de banners que tenga en cada línea un banner diferente para rotar. Pero para ello es necesario conocer algunas funciones de cadena, cosa que no se tratará en este artículo.
la sintaxis de file no tiene problemas:

$archivo = file(“archivo.txt”);

Con lo anterior, $archivo ya es un array con todas las líneas de archivo.txt.
Pero para poder recorrer cada línea de archivo.txt es necesario crear un bucle. ¿Pero cómo sabrá el bucle en donde parar? Para ello haremos uso de la función count() que devuelve la cantidad de elementos de un array.

Como $archivo es un array con cada línea de archivo.txt esto quiere decir que cada elemento en el array equivale en una línea, por ello se puede usar count() facilmente.
Pero para aclararlo veamos un ejemplo:

<?
$archivo = file(“archivo.txt”); //creamos el array con las lineas del archivo
$lineas = count($archivo); //contamos los elementos del array, es decir el total de lineas
for($i=0; $i <lineas>

Como ves es muy sencillo. Primero abrimos el archivo y lo convertimos en vector (array). Posteriormente guardamos su número total de elementos (que equivale al número de líneas) en la variable $lineas.
Luego un bucle se encarga de recorrer cada línea y escribirla en pantalla.

La ventaja de este método es que podemos leer cualquier línea fácilmente, pues $archivo es un array. Si deseamos leer la primera línea podemos utilizar $archivo[0] y así sucesivamente.

file_exists()

Muy útil función que verifica la existencia de un archivo, devolviendo true si verdaderamente existe y false si no.
Veamos un ejemplo:

<archivo>

Hemos hecho uso de una estructura condicional para mostrar un mensaje de acuerdo a la existencia o no del archivo. Como PHP puede crear conexiones a servidores externos, es posible verificar la existencia de una URL con file_exists() antes de dirigir al usuario a dicha dirección.

fileatime()

Devuelve la fecha del último acceso a un archivo, o false en caso de error.

<echo>

Escribiría en pantalla la última fecha de acceso a archivo.txt

filesize()

Devuelve el número total de bytes que ocupa cualquier archivo. Es posible modificar estos valores mediante divisiones para convertirlo a megabytes, kilobytes, etc.

<tam>

El anterior código devolvería el tamaño total en bytes que está ocupando imagen.gif

is…

Las funciones is permiten conocer algunas características de un archivo o directorio. Todas poseen la misma sintaxis por lo que sólo veremos para qué sirve cada una.

La sintaxis base es:

<funcion>

Donde funcion es alguna de las siguientes:

is_dir: Devuelve true si $archivo es un directorio
is_executable: Devuelve true si $archivo es ejecutable
is_file: Devuelve true si $archivo es un archivo y no directorio
is_readable: Devuelve true si se puede leer $archivo
is_writeable: Devuelve true si se puede escribir en $archivo

mkdir()

Trata de crear una carpeta en el servidor:

mkdir(“/ruta/al/nuevo/directorio”,permiso);

El primer parámetro debe ser la ruta al nuevo directorio, es decir, al que se trata de crear y permiso es el permiso chmod en formato octal, es decir, con un 0 antes. El permiso permite establecer el chmod que deseamos al momento de crear el directorio. Funciona igual que chmod().

rename()

Trata de renombrar algún archivo.

<rename>

Con eso terminamos la primera parte de este artículo sobre el tratamiento de directorios y archivos. El tema de próximos artículos será cómo aplicar realmente estas funciones, para lo cual crearemos un script que funcionará como administrador de archivos vía online. Tipo FTP pero más sencillo.

Una nota de importancia es que en casi todos los ejemplos se ha utilizado como archivo el nombre archivo.txt pero en realidad puede ser cualquiera.

La mejor forma de validar un email es usando expresiones regulares, estas nos permitirán indicar de que forma está compuesta una dirección de correo y se intentará buscar un texto que coincida con lo que queremos. Para este ejemplo usaremos preg_match().

<email>

El código a primera vista se ve muy complejo pero ahora lo desglosaremos para poder analizarlo. Cada parte coloreada de la expresión regular será descrita a continuación.

^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,4}$

Nos dice que el correo debe comenzar (^) con uno o más caractéres alfanuméricos (\w+).

^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,4}$

Después del caractér alfanumérico puede o no (*) haber un punto o guión medio seguido de uno o más caractéres alfanuméricos (([.-]\w+)*).

^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,4}$

Después de lo anterior simplemente debe haber una arroba (@).

^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,4}$

En esta parte usaremos las mismas condiciones para el nombre, pero esta vez se usarán para el servidor de correo (hotmail, yahoo, etc). Algunos correos pueden indicar el país antes del servidor de correo (mx.servidor).

^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,4}$

Para terminar, nos dice que debe haber un punto seguido de una cadena de 2 a 4 caractéres alfanuméricos (\.\w{2,4}) sin permitir ningún caractér más ($) lo que nos indica el dominio del servidor de correo.

El uso de expresiones regulares es complicado al principio y es conveniente que tu mismo vayas modificando una expresión que ya está funcionando para que veas como se va comportando. Para más información sobre expresiones regulares puedes consultar la sección de Funciones de Expresiones Regulares (compatibles con PERL) en el manual de http://www.php.net.

En este caso queremos encontrar cualquier URL en un texto y transformarla automáticamente en un enlace, para esto haremos uso de la función preg_replace().

La función trabaja de la siguiente forma:

preg_replace(Busqueda,Reemplazo,Texto) ;

Este es el código:

</a>

Se está buscando dentro del texto una cadena de texto que comience con http://, que puede contener cualquier caractér (letras, números, guiones, etc.) excepto espacios en blanco ([^\s]+), al haber un espacio en blanco nos está indicando que aquí termina la URL.

En la parte de Reemplazo usamos $0 para obtener la URL encontrada y meterla en un enlace usando HTML.

Si tenemos en nuestra página alguna sección donde los visitantes pueden escribir sus comentarios sobre nuestra página o cualquier cosa que utilice un formulario, puede que queramos dejar que el visitante le de formato al texto (negrita, cursiva, darle color, etc.) pero no deseamos dejar que el usuario utilice HTML ya que puede ser un riesgo de seguridad y nuestra página quedaría vulnerable a ataques por personas maliciosas.

Para esto hace tiempo se creo un código comúnmente conocido como BBCode y que permite darle formato a nuestro texto sin los riesgos de utilizar directamente HTML.

Como en el ejemplo anterior volveremos a usar preg_replace() aunque para otros ejemplos con el uso de str_replace() tendremos más que suficiente. Mostraré varios ejemplos que puedes ir uniendo según lo que quieras.

Texto en negrita

Para poner un texto en negrita podemos hacer uso de str_replace():

<?
$texto = ‘Quiero este texto en negrita.’ ;
$texto = str_replace(array(‘‘,’‘),array(‘‘,’‘),$texto) ;
echo $texto ;

El ejemplo anterior nos daría como resultado esto:

Quiero este texto en negrita.

También podemos usar preg_replace():

Nota: Los mismo creadores de PHP recomiendan str_replace() por encima de preg_replace() en cuestión de rendimiento, ya que el primero hace una sustitución simple y directa, y el segundo usa el motor de expresiones regulares lo cuál ocasiona una carga ligeramente mayor, así que en la medida de lo posible es recomendable primero buscar una solución mediante str_replace() y posteriormente con preg_replace().

Texto a color

Para un texto a color podemos hacer una combinación de preg_replace() con str_replace():

<?
$texto = ‘Quiero este texto en color naranja.’ ;
$texto = preg_replace(‘/\[color=(#?[a-z0-9]+)\]/i’,'<span>’,$texto) ;
$texto = str_replace(‘[/color]’,'</span>’,$texto) ;
echo $texto ;

Este es el resultado:

Quiero este texto en color naranja.

Podemos usar sólo preg_replace() aunque debemos hacer uso del modificador “U” si indicamos dos o más colores diferentes:

</span>

El resultado sería este:

Quiero este texto en color naranja y este en color verde.

Si no usas “U” en la expresión, la función no se detendría en el primer [ /color] y se iría hasta el último encontrado en el texto, dando como resultado esto:

Quiero este texto en color naranja [ /color] y [ color=#00c000]este en color verde.

Aquí veremos como se utilizan las funciones básicas de la base de datos MySQL que son CREATE, INSERT, UPDATE y DELETE (crear, insertar, actualizar y borrar) y otras funciones como TRUNCATE (truncar) y DROP (suprimir).

Estas son las funciones básicas que nos permiten usar la base de datos para almacenar información, manipular la guardada y eliminarla, en realidad no es nada complicado, sólo con un poco de práctica podrás dominar el uso de estas funciones.

Para los ejemplos usaremos la herramienta phpMyAdmin que ofrecen la mayoría de los servidores gratuitos, es un administrador vía web de bases de datos, para ejecutar los códigos abre el phpMyAdmin, haz click del lado izquierdo en el nombre de la base de datos, luego del lado derecho haz click en SQL, aparecerá una casilla que es donde se insertarán todas las sentencias.

CREATE

Esta función sirve para crear ya sea bases de datos o tablas dentro de MySQL, estos son algunos usos básicos:

create database pruebas

Con este ejemplo empezaremos creando la base de datos que almacenerá las tablas, que es en donde se guardará la información.

Nota: Para poder crear bases de datos debes ser el administrador o tener todos los privilegios, en servidores gratuitos esta función no está permitida.

La otra forma es para poder crear tablas dentro de nuestra base de datos:

create table usuarios (
nombre varchar(100) not null,
email varchar(100) not null,
pais varchar(100) not null
)

Este código creará una tabla en la base de datos que en este caso contendrá 3 campos que son nombre, email y país. Para poder crear una tabla se debe indicar por lo menos un campo.

INSERT

Esta es la función más utilizada y es la más importante ya que esta es la que introducirá la información dentro de las tablas.

insert into usuarios (nombre,email,pais) values (‘Pepe’,’pepe@hotmail.com’,’México’)

En este caso introducimos una fila o registro con los valores que fueron indicados.

También existe otra forma más corta:

insert into usuarios values (‘Pepe’,’pepe@hotmail.com’,’México’)

Debes tener cuidado al hacerlo de esta forma, ya que si te fijas no hemos indicado en que campo queremos insertar cada valor, entonces los datos se guardarán en el mismo orden en el que se encuentran los campos de la tabla usuarios (nombre,email,pais).

UPDATE

Esta función sirve para actualizar una fila o registro ya previamente guardado, la forma de uso es la siguiente:

update usuarios set email=’pepe2@hotmail.com’ where nombre=’Pepe’

Con este ejemplo cambiamos el email del usuario Pepe, para modificar más campos se hace de esta forma:

update usuarios set nombre=’Pepe2′,email=’pepe2@hotmail.com’ where nombre=’Pepe’

Si te fijas los campos a modificar deben ir separados por comas “,”.

Un detalle importante es que en la parte de where (que significa en donde modificar) debes tratar siempre de usar un campo que sea único y no repetido. Por ejemplo si tienes 2 usuarios de México, y usas “where pais=’México'” los cambios afectarían a todos los campos “donde pais sea igual a México”. También ten cuidado de especificar siempre un where y nunca te olvides de indicarlo, ya que si tienes una sentencia así:

update usuarios set nombre=’Pepe2′,email=’pepe2@hotmail.com’

Te afectaría todos los campos de toda la tabla, por lo que automáticamente borrarías los datos de los demás usuarios y en todos verías la misma información.

DELETE

Esta función sirve para eliminar filas de la tabla, la forma de uso es muy sencilla:

delete from usuarios where nombre=’Pepe2′,email=’pepe2@hotmai.com,pais=’México’

Se recomienda indicar el mayor número de campos posible para asegurar que no se vayan a borrar otras filas, lo mismo que sucede con UPDATE.

Si indicas el delete sin especificar where de esta forma:

delete from usuarios

Eliminarías todo el contenido de la tabla usuarios, pero algunos valores como auto_increment seguirán contando a partir del último registro, por lo que se recomienda usar otra función que limpiaría completamente la tabla de cualquier registro anterior.

Nota: La función DELETE sólo elimina información en una tabla, más no elimina tablas o bases de datos, para poder borrar tablas o bases de datos están otras funciones que veremos más adelante.

TRUNCATE

Esto elimina todo el contenido de una tabla y limpia la tabla de todo registro anterior como si fuera nueva, se usa de la siguiente forma:

truncate table usuarios

Sólo se eliminan las filas, pero si deseas borrar la tabla por completo se hace con la siguiente función.

DROP

Esta función sirve para eliminar tablas y bases de datos, se usa así:

drop table usuarios

Esto borraría la tabla usuarios con todo y su contenido

drop database pruebas

Crear tabla de noticias :
*************************
CREATE TABLE IF NOT EXISTS `noticias` (
`idnot` int(10) unsigned zerofill NOT NULL auto_increment,
`tema` varchar(100) collate latin1_general_ci default NULL,
`autor` varchar(100) collate latin1_general_ci default NULL,
`cont` text collate latin1_general_ci,
`imagen` varchar(150) collate latin1_general_ci default NULL,
`fpub` datetime default NULL,
PRIMARY KEY (`idnot`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;

Crear los estilos : (colocar entre <head> </head>)
*******************
.link a, .link{color:#FFF; font-weight:bold}
.link a:visited{color:#FFF;}
.link a:hover{color:#FFF;}

#pages {
clear: both;
text-align: center;
font-size:9px;
}
#pages li {
display: inline;
padding: 3px 6px 4px;
}
#pages li.page {
border: 1px solid #F05BF2;
margin-right:1px;
}
#pages li.current {
background:#F05BF2;
color:#FFF;
}

Crear archivo Php :
*******************

<?
$rowCount = 6; // Número de registros por página.
$pagesToShow = 2; // Número de páginas a mostrar adelante o atrás de la actual en la paginación.

$SQL = mysql_query(“SELECT COUNT(*) FROM noticias”,$conexion);
$ROW = mysql_fetch_array($SQL);

// Obtenemos el número de registros en la tabla.
$notCount = $ROW[0];

// El número de páginas que podemos mostrar.
$pagesCount = (int)ceil($notCount / $rowCount);

// Obtenemos el índice de la página que nos piden mostrar y nos aseguramos que esté entre 0 y $pagesCount.
$pageIndex = isset($_REQUEST[‘pageIndex’]) ? (int)$_REQUEST[‘pageIndex’] : 0;
if ($pageIndex >= $pagesCount)
$pageIndex = $pagesCount – 1;

// Obtenemos unicamente los registros de la página actual.
$offset = $pageIndex * $rowCount;
?>

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>paginacion en php</title>
</head>

<body>
<?
$SQL = mysql_query(“SELECT * FROM noticias ORDER BY fpub DESC LIMIT $offset, $rowCount”,$conexion);
while($ROW = mysql_fetch_array($SQL)){
echo “<div style=’width:250px;border:#FFF 1px solid;float:left;’>

<b>$ROW[1]</b><br /><br />
$ROW[3]<br /><br />
<center><img src=’images/$ROW[4]’/></center><br /><br />
<b style=’font-size:10px;’>$ROW[2] <br /> $ROW[5]</b>
</div>”;
}
?>
<div style=”clear:both;”></div>

<ul id=”pages” style=”margin-top:10px;”>
<?php
// Página anterior.
if ($pageIndex > 0) {
?>
<li><a href=”?pageIndex=<?php echo $pageIndex – 1 ?>”>&laquo; Anterior</a></li>
<?php } ?>

<?php
$start = $pageIndex – $pagesToShow;
if ($start < 0)
$start = 0;

$end = $pageIndex + $pagesToShow;
if ($end >= $pagesCount)
$end = $pagesCount – 1;

if ($start > 0) {
for ($i = 0; $i < 2 && $i < $start; ++$i) {
?>
<li><a href=”?pageIndex=<?php echo $i ?>”><?php echo $i + 1 ?></a></li>
<?php
}
}

if ($start > 2) {
?>
<li>…</li>
<?php
}

for ($i = $start; $i <= $end; ++$i) {
if ($pageIndex == $i) {
?>
<li><?php echo $i + 1 ?></li>
<?php
} else {
?>
<li><a href=”?pageIndex=<?php echo $i ?>”><?php echo $i + 1 ?></a></li>
<?php
}
}

if ($end < $pagesCount – 3) {
?>
<li>…</li>
<?php
}

if ($end < $pagesCount – 1) {
for ($i = max($pagesCount – 2, $end + 1); $i < $pagesCount; ++$i) {
?>
<li><a href=”?pageIndex=<?php echo $i ?>”><?php echo $i + 1 ?></a></li>
<?php
}
}

?>

<?php
// Siguiente página
if ($pageIndex < $pagesCount) {
?>
<li><a href=”?pageIndex=<?php echo $pageIndex + 1 ?>”>Siguiente &raquo;</a></li>
<?php } ?>
</ul>
<br />

</body>
</html>

Base de datos de Paises/cuidades según IP

IP Location Tools es unaherramienta web gratuita que te ayuda a detectar el país/cuidad de una dirección IP.

Puede ser usado de dos formas:

Con una API (no requiere instalación).
Descargando la base de datos de la geolocalización.

Hay que decir que descargando la base de datos SQL y ejecutándola en tu propio servidor la aplicación es más fácil de manejar, puesto que tiene cerca de 1.4 millones de registros.

Por otro lado, la base de datos de geolocalización se actualiza cn regularidad (una vez al mes) lo que evita que se quede obsoleta con el tiempo.

IP Location Tools ofrece otros servicios como la detección de fraudes. De nuevo con la API, el código postal que introduzcas, el sistema compara la localización de la IP y el área a la que pertenece dicho código postal. Esto puede ser de ayuda especialmente en los comercios electrónicos para evitar compras erróneas.

20 Tips para ser un mejor Programador

Ya llevo varios años programando, a nivel web el lenguaje que mas me gusta o al menos el que mas domino es PHP, voy a intentar dar algunos tips que realmente me han servido mucho durante mi aprendizaje.

1. Estudia, estudia y estudia
El estudiar nos permite perfeccionarnos, cuanto mas estudiemos mas oportunidades de programar mejor tendremos, no solamente estoy hablando de universidades, ni tampoco de cursos, hoy por hoy gracias a internet existen infinidad de tutoriales y manuales, sin ir mas lejos el sitio oficial de PHP es realmente muy bueno.

2. Busca antes de preguntar
Esto es un mal común del que quiere aprender a programar, es mas fácil preguntarle a alguien que sepa, pero realmente no tiene que ser así por varias razones, primero por que es algo de muy de vago, luego que cuando alguien nos da la respuesta fácil no aprendemos nada, lo interesante cuando se nos presenta un problema es buscar la solución nosotros mismos, sino damos con la respuesta recién ahí preguntar, este ejercicio realmente es muy beneficio, nos permite preparar nuestra cabeza para solucionar futuros problemas.

3. Busca scripts ya desarrollados
Por lo general podemos encontrar muchas funciones, scripts listos para utilizar, pero lo interesante es estudiarlos, ver como funcionan, de ahí aprendemos si copiamos y pegamos vamos mal.

4. Lee el código fuente libre
Yo muchas veces descargo algunas aplicaciones para ver como están programadas, de verdad que se aprende mucho, a medida que realicemos esta practica cada vez iremos aprendiendo mas, en especial si estas aplicaciones son de uso popular en donde miles de programadores del mundo “meten” mano para mejorarla. Un buen ejemplo de esto es WordPress.

5. No copies y pegues
Es fácil, entramos a google buscamos una función que sirva para lo estamos necesitando y listo. Pero la realidad es que no siempre lo que descargamos es correcto, y si luego tenemos que solucionar un problema lo mas probable es que no tengamos ni idea por donde empezar. Ni hablar del factor aprendizaje cero que esta practica implica.

6. Buscar el momento para programar
Estas sentado delante de tu ordenador, llaman por teléfono, tu compañero de trabajo o familiar te pregunta algo, realmente es lo mas molesto e incomodo que hay, es difícil concentrarse, es preferible hacer algo mas “Light” antes de programar algo mal y después tener que arreglarlo.

7. Ten tu propia Wiki
Esto lo recomiendo muchísimo, es muy sencillo instalar una Wiki en nuestra pc, simplemente podemos descargar el Easyphp y tener en nuestro ordenar un servidor funcional, y mejor aun si quieres hacer la instalación “a mano”. La wiki es interesante para poder almacenar rutinas que usamos frecuentemente, en mi caso suelo guardar validaciones, etc. Una vez que aprendimos a hacer algo y lo tenemos lo mejor posible es interesante tenerlo a mano para no perder tiempo escribiendo lo mismo una y otra vez.

8. Comenta todo lo que sea necesario
Escribir comentarios en el código suele ser bastante molesto y parecer innecesario, pero comentar las cosas importantes nos puede ahorrar mucho tiempo cuando tengamos que retocar el código meses después.

9. Participa en foros/comunidades
Es interesante para interactuar con otras personas que estén en nuestra misma sintonía, muchas veces ayudaremos nosotros y otra vez nos podrán ayudar. En línea general estas comunidades tienen muy buena onda, y la ayuda mutua es lo que abunda, unas líneas de código pueden ser útiles para muchas personas, de ahí que entre todos se puede perfeccionar. Recuerden respetar el punto 2.

10. Habla con otros programadores
Mensajería instantánea, en un café, por teléfono, etc. Es interesante tener amigos que están en lo mismo, no solamente por el tema de la ayuda mutua, estos grupos suelen ser también de ayuda “emocional” del programador, unos chistes, algún comentario puede ser una inyección de energía para continuar con un problema que no podemos resolver.

11. Tiempo libre para otras cosas
Me encanta programar, pero entendi que no es lo unico en la vida, a veces es bueno una salida, una película, realmente es necesario desenchufarnos.

12. Arma tu bunker
Tener un espacio de trabajo acorde con tus gustos es indispensable para programar, un buen sillón que no dañe nuestra columna, un lindo escritorio que nos permita desparramar CDS, libros, etc. También hay que ser organizado, pero siempre a nuestro gusto, es bueno que sea TU espacio y que nadie meta mano, uno a la larga lo termina sintiendo como un refugio.

13. Tu equipo en condiciones
Otro punto importante, una buena computadora, que no tenga problemas, si es necesario un poco mas de RAM, no hace falta tener una supermáquina para programar con PHP pero si algo que no se este colgando cada 2 seg.

14. Usa herramientas gratuitas
Si no podes pagar ciertas herramientas realmente ni te gastes en bajar las versiones piratas, en PHP no se necesita mucho y realmente no vale la pena estar trucando programas.

15. Organiza tu propia biblioteca de scripts
Relacionado con el punto 7. La wiki es muy buena, pero hay que tenerla organizada, sino encontrar algo puede llevarnos mas tiempo que volverlo a escribir. Yo soy bastante desorganizado, pero con los años aprendí a manejar mi problemita .

16. Se agradecido con los que te ayudan
Si alguien te ayuda, por favor al menos di gracias. Recuerda que las personas que te rodean no son tu soporte técnico (Al menos que les pagues). Si alguien se molesta en responder a tus consultas agradécele, para la próxima esa persona seguirá teniendo buena predisposición.

17. Se humilde
Esencial. Siempre hay alguien que sabe más que uno y mas en este “rubro” en donde hay verdaderos cráneos, Yo hace varios años que programo en PHP y sin embargo siempre aprendo algo nuevo, y en parte eso es lo que me gusta de programar, siempre se puede mejorar.

18. Siempre busca perfeccionarte
Relacionado con el punto anterior. Las tecnologías evolucionan y nosotros debemos hacer lo mismo. Una linda practica cuando tenemos un poco de tiempo libre es tratar de optimizar un código nuestro de unos meses anteriores, si aprendimos cosas nuevas de seguro que podemos hacerlo mejor que antes.

19. Intenta ser eficiente y luego inténtalo de nuevo
Que funcione no quiere decir que este bien. También una de las cosas más lindas de programar: Siempre se puede hacer una función mas eficiente, que consuma menos recursos, no hay que conformarse que arroje los resultados que queremos, probablemente lo podemos hacer mejor.

20. Programa primero lo que menos te gusta
Esto es bastante personal, pero por lo general me da buenos resultados. Cuando me siento a programar algo los primeros minutos son de “ambientación” luego tengo un periodo de concentracion digamos maxima, en ese momento las cosas que parecen o son mas complicadas son cuando mas rápido y mejor salen, luego cuando uno esta mas cansado puede dedicarse a las cosas mas sencillas y rutinarias.


Antes que nada avisar que se requieren las librerías GD para poder realizar los thumbnails. Y en función de la versión de GD, podremos usar una u otra función

Primero pegaré el código de una función con la que generaremos directamente un thumbnail de alta calidad.

Código PHP:
function thumbjpeg($imagen,$altura) {
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen “grande”.
$dir_thumb = “thumbs/”;
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera “imagen1.jpg”,
// el thumbnail se llamaría “tn_imagen1.jpg”
$prefijo_thumb = “tn_”;

// Aquí tendremos el nombre de la imagen.
$nombre=basename($imagen);
// Aquí la ruta especificada para buscar la imagen.
$camino=dirname($imagen).”/”;

// Intentamos crear el directorio de thumbnails, si no existiera previamente.
if (!file_exists($camino.$dir_thumb))
@mkdir ($camino.$dir_thumb, 0777) or die(“No se ha podido crear el directorio “.$camino.$dir_thumb);

// Aquí comprovamos que la imagen que queremos crear no exista previamente
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {
echo $camino.$dir_thumb.$prefijo_thumb.$nombre.” NO existía
\\n”;
$img = @imagecreatefromjpeg($camino.$nombre) or die(“No se encuentra la imagen $camino$nombre
\\n”);

// miramos el tamaño de la imagen original…
$datos = getimagesize($camino.$nombre) or die(“Problemas con $camino$nombre
\\n”);

// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[1] / $altura);
$anchura = round($datos[0] / $ratio);

// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);

// con esta función la reescalamos
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);

// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
}
}
Para llamar a la función sencillamente hacer:

Código PHP:
thumbjpeg($imagen, 125);
En este caso, ‘$imagen’, es la imagen que queremos reducir, y ‘125’, es la altura en píxeles que queremos que tenga la imagen reducida, de modo que el ancho quede proporcionado respecto a la imagen original.

Con la instrucción “or die()” se mostrará en pantalla el mensaje entrecomillado solo en el caso de que fallara la primera sentencia de la línea.

NOTAS:

Si en lugar de GD2 disponemos de GD1, no podremos utilizar la función imagecopyresampled() y deberíamos conformarnos con la función imagecopyresized() , que utiliza los mismos parámetros, lo malo es que ésta última da como resultado una imagen de calidad más pobre. A cambio, es mucho más rápida que la anterior.

Así si tenemos GD2, podemos usar la que más nos interese, si queremos CALIDAD y no nos importa el número de ciclos consumidos en el servidor,

imagecopyresampled();

en caso contrario:

imagecopyresized();

Si lo que queremos es crear imágenes “al vuelo”, sin guardarlas en ningún archivo (cosa poco recomendable si usamos la función de más calidad), el segundo parámetro de la función imagejpeg() no se debe de poner, quedando la llamada en el scritp que hay más arriba:

Código PHP:
imagejpeg($thumb);
Bueno, démonos cuenta que este script solo sirve para reducir imágenes de tipo JPEG, no de otro, para otros formatos, tan solo habría que cambiar un par de funciones por las correspondientes en los formatos que nos interesen.

Ejemplo:

imagecreatefromjpeg() por imagecreatefrompng() o imagecreatefromwbmp() o etc.

Hosting Perú

En Net Hosting Perú el servicio nunca se cae, contamos con sistemas de múltiples servidores automatizados totalmente redundantes que respaldan cualquier interrupción del servicio al instante.

Soporte Técnico Profesional Avanzado, estamos listos para resolver sus problemas rápida y profesionalmente las 24x7x365.

Somos mayoristas de Hosting ofrecemos más espacio y mayor transferencia a menores precios que la competencia.

Por qué hacemos esta garantía, porque usamos la tecnología de servidores más confiables disponible hoy en día.

NUESTRA DATA CENTER DE CLASE MUNDIAL

Nuestro proveedor Complex Drive está conectada a Seis (6) de los más grandes proveedores de banda ancha (de AT&T, Level3, Cox, Cogent, MCI / Verizon, Telepacific),