Nacho9696
Usuario (Argentina)
Las casas más pequeñas del mundo Las casas más pequeñas del mundo ¡Basta de vivir a lo grande! Jay Shafer, fundador de Tumbleweed, posa junto a una de las viviendas construída por su empresa, con una superficie total de 9 metros cuadrados Jay Shafer se canso de vivir a la grande en el país del "Big size". Por ese motivo, creó Tumbleweed Tiny Houses, una compañía localizada en Graton, California, que diseña y vende casas de entre 8 y 9 metros cuadrados. Pese a sus diminutas dimensiones cuentan con cocina, sala, habitación e inclusive dos plantas. El emprendimiento de Shafer, que podría parecer más un intento por entrar al Guinness Records que una actividad rentable, se dirige a aquellas personas cansadas de una vida de derroche "American Style" y que, por el contrario, aspiran a una existencia simple y sustentable. De hecho, las casas de Shafer reinterpretan el término de "sustentabilidad", ofreciendo a sus clientes un tipo de vivienda eficiente, con la mínima cantidad de espacio inutilizado, materiales y energía. "Es la forma de vida más 'verde' que alguien puede tener", dice Shafer, citado por el magazine online CNet. Asimismo, los habitáculos de Tumbleweed se convierten en la respuesta icónica de una época caracterizada por la adquisición compulsiva de viviendas que superaban las necesidades de espacio y las capacidades de pago de sus habitantes. Y que se concluyó con una de las peores crisis financieras de la historia de EE.UU., llamada también "Crisis Inmobiliaria". Por este motivo, Shafer ofrece viviendas a precios que parten desde los 39 mil dólares pero que pueden bajar hasta los 16 mil si el interesado decide aventurarse en la construcción de su propia casa tamaño XS. Además de las del yanqui, tenemos unas cuantas mas denominadas: “Las casas mas pequeñas del mundo” Veamos algunas más. En tan sólo 50m2 se pueden construir estas casas, que además de pequeñas tienen un excelente diseño, hechas para quiénes no buscan cosas ostentosas, únicamente lo básico. Estas casas fueron diseñadas por la Empresa Polaca front architects y su nombre es sencillamente “Single Hauz“: Al igual que un cartel habitable, las casas Single Hauz, pueden ser construidas sobre una variedad de condiciones del suelo, desde la mitad de un prado a un núcleo urbano. La casa más pequeña de Gran Bretaña Situado en una bonita ubicación en el muelle de Conwy, esta propiedad: uno arriba – uno abajo" pintada de rojo tiene el título de la casa más pequeña en el Reino Unido. Mide solamente 3.05metros por 1,8 metros, esta pequeña casa se merece su lugar en el Libro Guinness de los Récords. Twelve Cubed Mini Home Bienvenidos al futuro! Tu vida está a punto de mejorar de una manera enormemente pequeña. Nuestra filosofía es que lo pequeño es hermoso - casas pequeñas, en particular, pueden ofrecer grandes ventajas, un montón de opciones, y un estilo de vida más simple. Creemos que la vivienda de alta tecnología puede ser asequible, sostenible y achicada a un pequeño espacio y seguirá siendo funcional y confortable. Con base en la Isla de Vancouver, Columbia Británica, está Twelve3. Esta empresa espera cambiar su forma de pensar sobre la forma en que vive, y la forma en que todos ver nuestras comunidades. Según los diseñadores de Twelve Cubed, estas casas tienen un pequeño lavavajillas, microondas y horno, un baño, un closet, y mucha luz natural. La misión detrás de estas casas es permitir a más personas a vivir en forma confortable. Fuentes: http://noticias.latam.msn.com/ar/fotogaleria.aspx?cp-documentid=26569112 http://blogultura.com/curioso/fotografs-pequeas-del-mundo/ http://www.lareserva.com/home/trackback/1790
Hola Taringa,Aca les dejo el Tutorial de Como ser Cliente Premium en Megaupload y Mediafire gratis. SOLO sirve en los siguientes servidores: Mediafire (muy bien) Megaupload (ESPECTACULAR). Bueno antes de nada es cuento q con mi conexion de 1 mb, normalmente deberia descargar a una velocidad de 114 (como maximo), pero gracias al acelerador de Firefox: FireDownload, va a una velocidad de 180. Y en megaupload, a una velocidad variando entre 350 y 400!! Desargas: Firefox: http://download.mozilla.org/?product=firefox-3.5.3&os=win&lang=es-ES FireDownload: https://addons.mozilla.org/es-ES/firefox/search?q=firedownload&cat=all Como Utilizarlo: Mediafire: Simplemente cuando descargamos el archivo TILDAMOS la opcion "Accelerate with FireDoanload" Megaupload: Necesitamos generar un link premium, yo utilizo www.mimp3.net (requiere registro) una vez registrados, nos vamos a www.mimp3.net/mu.html pegamos el link COMPLETO y esperamos que cargue. una vez terminado, presionamos el link Tildamos la opcion del firedownload Y disfrutamos de la velocidad =D (todos esos archivos son de megaupload) SI, PUEDES DESCARGAR MUCHOS ARCHIVOS AL MISMO TIEMPO Si tienen Alguna duda, Diganme. Salu2 Nacho9696

En este tutorial crearemos un foro desde cero aprendiendo a separar la programación del diseño, y modularizando nuestra aplicación para que sea simple de configurar y de adaptar. La Estructura Primero y antes que nada, debemos preparar la tabla en la base de datos que contendrá todos los temas de nuestro foro. Lo que esta tabla tendrá, es la información de nuestros mensajes, el autor del mismo, y otros datos que servirán para identificar a que Tema pertenece un mensaje. Pero mejor, veamos la estructura propuesta: CREATE TABLE `foro` ( `id` int(7) NOT NULL auto_increment, `autor` varchar(200) NOT NULL default '', `titulo` varchar(200) NOT NULL default '', `mensaje` text NOT NULL, `fecha` datetime NOT NULL default '0000-00-00 00:00:00', `respuestas` int(11) NOT NULL default '0', `identificador` int(7) NOT NULL default '0', `ult_respuesta` datetime default NULL, KEY `id` (`id`) ) TYPE=MyISAM; Veamos en detalle que campos tendrá nuestra tabla de Foros: id: Será el identificador principal de la tabla. Sirve para diferenciar cada uno de los mensajes. autor: El autor del mensaje. titulo: El titulo que tendrá el mensaje. Si este mensaje es el iniciador de un tema, será el que mostrará en el home del Foro. mensaje: El mensaje en si mismo. fecha: Un campo DATETIME que indicará en que fecha se ha publicado este mensaje. respuestas: Si este mensaje es el iniciador de un tema, aquí se acumularán la cantidad de respuestas que reciba. identificador: Este campo guarda el valor del id del mensaje que se está respondiendo. Si el mensaje es iniciador de un tema, entonces este campo valdrá cero. ult_respuesta: Si el mensaje es iniciador de tema, aqui se actualizará valor de acuerdo con la fecha de la última respuesta que haya recibido. Sirve para poder mantener un orden en los foros. La sentencia SQL anterior, pueden guardarla en un archivo.sql y correrla en su base de datos desde el href="http://phpmyadmin.sourceforge.net/">phpMyAdmin, o si lo prefieren, pueden ingresarla línea por línea en un cliente de texto de mySQL ( como el mySQL monitor). Una vez que hayan creado la tabla en su base de datos, entonces podemos avanzar al siguiente paso. Antes de ponernos a programar cualquier parte del foro, vamos a encargarnos de hacer un pequeño script que realice una tarea que vamos a repetir mucho, y que es conectarnos a la base de datos. Este script lo incluiremos en cada página en la que tengamos que acceder a la base de datos: Ejemplo de la pagina de configuracion.php <?php $bd_host = "localhost"; $bd_usuario = "user"; $bd_password = "password"; $bd_base = "nuestra_bd"; $con = mysql_connect($bd_host, $bd_usuario, $bd_password); mysql_select_db($bd_base, $con); ?> Cómo vemos, no hay gran ciencia en este script, tan solo unas variables conteniendo la configuración de nuestra base de datos, y el código mínimo y necesario para conectarnos y guardar el recurso de conexión en una variable $con que luego utilizaremos cuando hagamos nuestras consultas. Los Templates Antes de dar un paso más en la explicación, quiero hacerles unos comentarios respecto al "simple" sistemita de templates que utilizaremos en el foro. Primero, para aquellos que no sepan que es un Template, les recomiendo que lean los artículos de href="http://www.zonaphp.com/index.php?modulo=articulo&accion=leer&id=9">Nok y de href="http://www.zonaphp.com/index.php?modulo=articulo&accion=leer&id=16">Luigi en nuestra sección de Templates de href="http://www.zonaphp.com/">Zonaphp.com, por lo menos para que tomen una idea de que son y para que sirven. Ahora, mi idea al utilizar templates, fue la de que los usuarios, pudieran modificar a su gusto el aspecto del foro, sin por ello tener que tocar el código de la aplicación. Esto es algo que el tutorial anterior no tenía en cuenta e incluía todo el código HTML de salida dentro del código mismo del foro, lo cual no es siempre recomendable. Lo que haremos en este caso es utilizar archivos .html que dentro contendrán solo diseño ( o sea, código HTML ) y en los lugares en los que deseemos colocar contenido "dinámico", utilizaremos el formato simple para mostrar el contenido de variables, esto es : <?=$variable?>. Para "interpretar" un template, primero lo leemos en memoria utilizando la función file() y luego utilizaremos una simple función a la que le pasaremos como parámetro el template y las variables que hay que reemplazar. Para muestra, basta un botón: Ejemplo de la pagina de ejemplo.html Nombre: <b><?=$nombre?></b><br> Edad : <b><?=$edad?></b><br> Domicilio : <?=$domicilio?> <hr> Ejemplo de la pagina de ejemplo.php <?php function mostrarTemplate($tema, $variables) { //var_dump($variables); extract($variables); eval("?>".$tema."<?"; } $agenda = array( "0" => array("nombre"=>"Marcelo", "edad"=>"25", "domicilio"=>"VeraCRuz 342", "1" => array("nombre"=>"Alejandra", "edad"=>"18", "domicilio"=>"Los Olmos 67", "2" => array("nombre"=>"Micaela", "edad"=>"23", "domicilio"=>"Prof. Mariño 8" ); $tpl = implode("", file("ejemplo.html"); foreach($agenda as $registro) { mostrarTemplate($tpl, $registro); } ?> Aquí vemos como, partiendo de los datos que tenemos en un array, los mostramos basándonos en un simple template. La función mostrarTemplate toma como parámetros el contenido del template y un array asociativo con los valores a reemplazar. La función de PHP extract() se encarga de pasar estos valores al ámbito en el que se llama la función, en este caso, el ámbito de la función. Por lo que si tenemos un arreglo del tipo $a = array("clave" => "valor", al ejecutar extract($a), entonces pasaremos a tener una variable disponible, de nombre $variable y con "valor" como contenido. Luego, la función eval() se encarga del resto, o sea, de ejecutar todo el código (el del Template) que se le pasa como parámetro. Algunos se preguntarán, porqué no hacemos simplemente un "include" ? La respuesta es muy siemple. Eficiencia. La función include implica un acceso a disco, lo cual la hace bastante "costosa" en términos de eficiencia. Así que leyendo el template 1 sola vez en memoria, y luego utilizándolo varias veces, hacemos un mejor uso de los recursos. Teniendo estos temas en cuenta, es que podemos seguir ahora con el desarrollo el Foro. Un Tema por vez Ya teniendo las bases de nuestro foro, el diseño de la tabla en la base de datos y conociendo como funciona nuestro sistema de templates, podemos comenzar a crear la primera página, en la que mostraremos todos los temas del foro: Ejemplo de la pagina de index.php <?php require('configuracion.php'); require('funciones.php'); include('header.html'); /* Pedimos todos los temas iniciales (identificador==0) * y los ordenamos por ult_respuesta */ $sql = "SELECT id, autor, titulo, fecha, respuestas, ult_respuesta "; $sql.= "FROM foro WHERE identificador=0 ORDER BY ult_respuesta DESC"; $rs = mysql_query($sql, $con); if(mysql_num_rows($rs)>0) { // Leemos el contenido de la plantilla de temas $template = implode("", file("temas.html"); include('titulos.html'); while($row = mysql_fetch_assoc($rs)) { $color=($color==""?"#5b69a6":""; $row["color"] = $color; mostrarTemplate($template, $row); } } include('footer.html'); ?> ¿Eso es todo? Si, eso es todo. Ahora revisemos paso a paso lo que hace el script. Primero tenemos una serie de requires e includes. El primero incluye el primer Script que hicimos, que realiza la conexión a la base de datos. El segundo, incluye un archivo.php que contiene funciones importantes del foro, como por ejemplo, mostrarTemplate. El tercero, incluye un header genérico que utilizaremos para darle a todas nuestras páginas, un diseño similar. Allí podremos colocar un logo del sitio, links importantes, banners, etc. $sql = "SELECT id, autor, titulo, fecha, respuestas, ult_respuesta "; $sql.= "FROM foro WHERE identificador=0 ORDER BY ult_respuesta DESC"; $rs = mysql_query($sql, $con); if(mysql_num_rows($rs)>0) { Aquí lo que hacemos es ejecutar un query en la base de datos, que nos traerá todos los mensajes que son iniciadores de un tema, o sea, cuyo identificador esté en cero. El resto de los mensajes, que sean respuestas a un tema en particular, tendrán en el campo identificador el valor del mensaje al que responden. A estos temas, le pedimos a la base que los ordene por la fecha de última respuesta, de manera descendente, así en nuestro foro, tendremos los mensajes más recientes primero. También realizamos una decisión, solo mostraremos los temas de nuestro Foro si la cantidad de filas recuperadas desde la base, son mayores a 0. Luego, dentro del While principal del programa, hacemos toda la "magia" : // Leemos el contenido de la plantilla de temas $template = implode("", file("temas.html"); include('titulos.html'); while($row = mysql_fetch_assoc($rs)) { $color=($color==""?"#5b69a6":""; $row["color"] = $color; mostrarTemplate($template, $row); } Aquí comenzamos a trabajar por primera vez con los templates. Primero leemos el contenido del template en memoria y lo guardamos dentro de la variable $template. También incluimos un archivo, que contiene una fila de la tabla de Temas, con los títulos de las celdas. EL resto ya lo vimos anteriormente, llamando a la función mostrarTemplate mostramos los datos de cada tema. Finalmente, solo agregamos otro archivo HTML, con el código para cerrar la página y mostrar algún que otro mensaje de Copyright (o lo que queramos poner). Con esto ya tenemos nuestra página inicial del Foro, mostrando los temas que haya. Ahora, vamos a crear el formulario necesario para ingresar nuevos temas o para responder algún tema existente. Participar es la Base El ahorro es la base de la fortuna, suelen decir, y esto se aplica a casi todo. Así que, haciendo caso al dicho, podemos utilizar el MISMO formulario para crear un nuevo tema y para contestar un tema en particular. Esto lo vamos a lograr, pasando una variable por el URL, indicando que estamos citando un mensaje anterior, sacando de la base de datos el mensaje que citaremos, y completando el formulario con esos datos. Si la variable no está presente, entonces no hacemos nada y mostramos el formulario. Ejemplo de la pagina de respuesta.php <?php require('funciones.php'); $id = $_GET["id"]; $citar = $_GET["citar"]; $row = array("id" => $id); if($citar==1) { require('configuracion.php'); $sql = "SELECT titulo, mensaje, identificador AS id "; $sql.= "FROM foro WHERE id='$id'"; $rs = mysql_query($sql, $con); if(mysql_num_rows($rs)==1) $row = mysql_fetch_assoc($rs); $row["titulo"] = "Re: ".$row["titulo"]; $row["mensaje"] = "[citar]".$row["mensaje"]."[/citar]"; if($row["id"]==0) $row["id"]=$id; } $template = implode("", file('formulario.html')); include('header.html'); mostrarTemplate($template, $row); include('footer.html'); ?> En el script vemos como primero capturamos de la URL, las variables $id y $citar, y si ésta última es igual a 1, entonces consultamos en la base de datos toda la información del tema que estamos citando, para agregarlo en el arreglo $row, que luego será pasado al template. Noten como al titulo del mensaje, le anteponemos la cadena "Re:", indicando que es una respuesta, y como al cuerpo del mensaje, si estamos citando, lo rodeamos por un tag [citar] y [/citar]. Esto lo veremos más adelante. Ejemplo de la pagina de formulario.html <table width="90%" border="0" cellspacing="2" cellpadding="2"> <form name="f" action="agregar.php" method="post"> <input type="hidden" name="identificador" value="<?=$id?>"> <tr> <td width="30%" align="right">Autor </td> <td><input type="text" name="autor"></td> </tr> <tr> <td width="30%" align="right">Titulo</td> <td><input type="text" name="titulo" value="<?=$titulo?>"></td> </tr> <tr> <td width="30%" align="right">Mensaje</td> <td><textarea name="mensaje" cols="50" rows="5"><?=$mensaje?></textarea></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="Submit" value="Enviar Mensaje"></td> </tr> </form> </table> Aquí vemos como colocamos las variables dentro de los atributos "value" de los inputs y el textarea. También podemos ver como tenemos un campo escondido, llamado "identificador", que solo tendrá un valor asignado, cuando estemos respondiendo a un mensaje, pero que no existirá cuando sea un mensaje nuevo. Solo queda ver el script que se encarga de grabar el mensaje en la base de datos, agregar.php. Ejemplo de la pagina de agregar.php <?php require('configuracion.php'); $autor = $_POST["autor"]; $titulo = $_POST["titulo"]; $mensaje = $_POST["mensaje"]; $ident = $_POST["identificador"]; //Hacemos algunas validaciones if(empty($autor)) $autor = "Anónimo"; if(empty($titulo)) $titulo = "Sin título"; //Evitamos que el usuario ingrese HTML $mensaje = htmlentities($mensaje); // Grabamos el mensaje en la base. $sql = "INSERT INTO foro (autor, titulo, mensaje, identificador, fecha, ult_respuesta) "; $sql.= "VALUES ('$autor','$titulo','$mensaje','$ident',NOW(),NOW())"; $rs = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error); $ult_id = mysql_insert_id($con); /* si es un mensaje en respuesta a otro actualizamos los datos */ if(!empty($ident)) { $sql = "UPDATE foro SET respuestas=respuestas+1, ult_respuesta=NOW()"; $sql.= " WHERE id = '$ident'"; $rs = mysql_query($sql, $con); Header("Location: foro.php?id=$ident#$ult_id"; exit(); } Header("Location: index.php"; ?> En este script, luego de tomar las variables desde el formulario (con el método POST), primero verificamos que exista un nombre de autor y el título del mensaje, caso contrario le asignamos un valor por defecto. También utilizamos la función de PHP htmlentities() para convertir todos los caracteres especiales ( >, <, ", &, etc ) en sus respectivas entidades HTML ( >, <, "e;, &. Con esto evitamos que un usuario ingrese código HTML en nuestro Foro (con la respectiva vulnerabilidad que este implica). A continuación, grabamos el mensaje en la base, y obtenemos, mediante la función mysql_insert_id(), el último id autoincremental que le corresponde a este registro. ¿Para qué? Simple. Si este mensaje que acabamos de grabar es el primero del tema, no necesitamos hacer nada, pero si es un mensaje en respuesta a otro ( esto lo averiguamos preguntando por el valor de $identificador), entonces tenemos que actualizar ese primer mensaje, indicando que tiene una respuesta más, y cambiando la fecha y hora del último mensaje. De esa manera, nos aseguramos que tenemos bien ordenado el foro, con los temas con nuevos mensajes primero. Finalmente, dependiendo del caso, redirigimos al usuario al home del foro, o a la respuesta que acaba de ingresar. Miles de posibilidades Ya solo nos queda un último paso, y es el de crear la página que mostrara un tema y todas las respuestas que haya en él. Para ello, vemos como en el home del foro, llamamos a un script foro.php y le pasamos el id del tema que queremos ver. Luego, solo tenemos que obtener de la base el o los temas, en los que el id sea igual al que pasamos, o que el identificador (el campo que indica que ese mensaje es en respuesta a cierto tema) sea igual al identificador, los ordenamos por fecha y listo, foro al dente. En este caso, el template que utilizaremos para mostrar cada uno de los mensajes, será una tabla con todos los datos necesarios: el autor del mensaje, el título, la fecha del mensaje, el mensaje en si mismo. Pero también agregaremos dos detalles. Primero, un link hacia el formulario que creamos antes, de modo que un usuario pueda citar un mensaje en particular, y segundo, un Anchor (o Ancla) para que al responder a un mensaje, se pueda acceder directamente al mismo por su id en la base de datos. Ejemplo de la pagina de post.html <table width="90%" border="0" align="center" cellpadding="2" cellspacing="2"> <tr bgcolor="<?=$color?>"> <td width="25%" valign="top"> <b><a name="<?=$id?>"><?=$autor?></a></b><br> <font size="-2">Enviado el : <?=$enviado?></font> </td> <td> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><strong><font size="-1"> <?=$titulo?> </font></strong> </td> <td width="10%" align="right"> [ <a href="respuesta.php?id=<?=$id?>&citar=1">CITAR</a> ]</td> </tr> </table> <hr align="center" width="100%" size="2" noshade> <?=$mensaje?></td> </tr> <tr> <td colspan="2" height="5"></td> </tr> </table> Ahora, veamos el código PHP que utilizaremos para "parsear" este template: Ejemplo de la pagina de foro.php <?php require('configuracion.php'); require('funciones.php'); $id = $_GET["id"]; if(empty($id)) Header("Location: index.php"; $sql = "SELECT id, autor, titulo, mensaje, "; $sql.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro "; $sql.= "WHERE id='$id' OR identificador='$id' ORDER BY fecha ASC"; $rs = mysql_query($sql, $con); include('header.html'); if(mysql_num_rows($rs)>0) { include('titulos_post.html'); $template = implode("", file('post.html')); while($row = mysql_fetch_assoc($rs)) { $color=($color==""?"#5b69a6":""; $row["color"] = $color; //manipulamos el mensaje $row["mensaje"] = nl2br($row["mensaje"]); $row["mensaje"] = parsearTags($row["mensaje"]); mostrarTemplate($template, $row); } } include('footer.html'); ?> Como siempre, incluimos la conexión a la base de datos, el archivo de funciones y validamos de que exista la variable $id, ya que de lo contrario, nada podríamos hacer y nuestro foro fallaría en el Query. Hablando del Query, podemos ver como utilizamos la función de mySQL DATE_FORMAT() para convertir el formato por defecto del tipo datetime (’AAAA-MM-DD hh:mm:ss’) en algo que sea más común para nuestro idioma (’DD/MM/AAAA hh:mm:ss’). Si quieren más información sobre esta función, pueden visitar y consultar el manual de mySQL. Lo más destacado en este script que podemos ver, son dos transformaciones que le hacemos al mensaje, antes de enviarlo al template. Como vemos, primero utilizamos la función de PHP nl2br(), que convierte todos los saltos de linea, en tags <br />, de esa manera, los saltos que un usuario ingrese en el textarea, serán agregados correctamente al mostrar el mensaje. Luego, vemos como llamamos a la función parsearTags(). ¿Qué hace esta función? Veamos: Ejemplo de la pagina de funciones.php <?php function parsearTags($mensaje) { $mensaje = str_replace("[citar]", "<blockquote><hr width='100%' size='2'>", $mensaje); $mensaje = str_replace("[/citar]", "<hr width='100%' size='2'></blockquote>", $mensaje); return $mensaje; } ?> Dentro de esta función, podemos agregar todas las modificaciones que queremos realizarle al mensaje, antes de mostrarlo en el Foro. En el ejemplo, vemos como hemos implementado el uso de un tag propio, [citar]. El mismo, dentro de la función, será reemplazado por el código HTML necesario para destacar el citado de un mensaje, todo esto gracias a la función str_replace() de PHP (más info en el manual). Este es el tag [citar] que se agrega automáticamente, y que notamos cuando respondíamos un mensaje. Esta función, pueden personalizarla de la manera que deseen, agregando todos los tags que quieran, para ofrecerles a sus usuarios la libertad de darle formato a sus mensajes. Podrían, por ejemplo, agregar un nuevo tag, para poner palabras en negritas, o quizás alguna expresión regular que convierta automáticamente cualquier URL presente en el mensaje, en un link. Los límites son los de su imaginación. Misión Cumplida Cómo intenté demostrarles en este pequeño artículo, realizar nuestro primer foro es algo completamente sencillo, si sabemos utilizar mínimamente mySQL y PHP (más bien, algunas funciones más que útil del PHP). En estas pocas líneas aprendimos: Crear una tabla en MySQL para que contenga los datos de nuestro foro. A conectarnos a MySQL desde nuestro script PHP. A utilizar un sistema de templates casero y simple. La utilización de funciones de PHP como: extract(); eval(); implode(); file(); nl2br(); mysql_insert_id(); str_replace(); La utilización de la función DATE_FORMAT() de MySQL. Cómo trabajar de manera segura con la directiva Register_Globals en OFF, tomando uno a uno los contenidos de las variables, desde sus respectivos arrays $_POST y $_GET. Y varios conceptos más a la hora de programar nuestros scripts. Ahora, este sistema es muy básico, como simple. Así que de ahora en más, es campo fértil para que Uds. mismos puedan agregarle todas las características y funcionalidades que deseen, personalizando el foro a su gusto. Como ideas, puedo mencionarles algunas: Agregar más tags para que sus usuarios puedan dar formato a sus mensajes. Incorporarle un sistema de usuarios. Contadores de visualizaciones de un tema, para hacer un Ranking de temas más vistos. La posibilidad de que los usuarios puedan utilizar firmas. Y seguro que a uds. mismos se les deben estar ocurriendo otras muchas buenas ideas para mejorar el Foro. Para aquellos usuarios que sean vagos y no quieran estar un rato con el Copy&Paste, les dejo el código completo del foro href="http://www.maestrosdelweb.com/editorial/util/foro.zip">para que lo descarguen. Por lo pronto, espero que hayan disfrutado este tutorial, y sigan programando simple, seguro, pero ante todo, bonito Saludoss s Nacho
Hostings Gratis Sin Publicidad ByetHost: -5500 MB en disco -Vista panel -Web mail -200 GB de transferencia mensual -PHP Flags manager -POP email -50 bases MySQL -29 scripts -Directorios protegidos -Acceso FTP -Php MyAdmin -50 Sub dominios -File manager http://www.byethost.com VoidZoneHosting: -250 MB en disco -Vista Panel -Web mail -6 GB Transferencia -PHP Flags manager -POP email -3 bases MySQL -29 scripts -Directorios protegidos -Hostea hasta 5 sitios -Acceso FTP -Php MyAdmin -5 Sub dominios -File manager http://host.vz4.net/ Idomyweb: -300 MB de espacio -10 GB transferencia -PHP Flags configurables -Web mail -Cuentas de correo POP -3 DB MySQL -Instalador de aplicaciones web. -Carpetas protegidas -5 dominios añadidos -5 Subdominios -FTP -Php MyAdmin -Explorador de archivos web http://www.idomyweb.es/ Páginas Web Con Utilidades http://miniajax.com/ Unasencilla Web, en la cual hay muchos scripts de AJAX que le dan poder atu web, por ejemplo, con el AJAX I(nstant)M(eesenger), podrás poseer tupropio MSN online. No hay que registrarse http://www.freelayouts.com/ Enesta web encontrarás miles y miles de plantillas para web, pero no soloHTML, sino también para MySpace y para Blogs. Hay muchísimos diseñosbuenos y son TF (Totally Free o Totalmente Gratuitos). No hay queregistrarse. http://www.clantemplates.com/ ¿Estáspensando en crear un clan de algún juego, tienes un hosting pero eresmalo con Photo$hop? Pues, amigo, ésta es tu solución. Registrándotetotalmente gratis en el foro, tendrás acceso a miles de diseñosprofesionales para webs en HTML. http://hotscripts.com Enesta Web hay millones y millones de scripts en varios lenguajes deprogramación web, que puedes utilizar gratuitamente y sin registroalguno. Varios son gratuitos, pero para otros hay que pagar xD. http://www.elwebmaster.com/ Aquípuedes encontrar noticias sobre el mundo de la web. Es muy recomendablesuscribirse a su RSS, el cual te dará todas las noticias que postee enese fantástico blog. También está lleno de tutoriales de rss y html. http://developer.mozilla.org/es/Gu%C3%ADa_JavaScript_1.5 Guíade Javascript para comenzar a programar en este lenguaje. Recomendadopara los novatos que recien empiezan y no tienen idea de cómo hacerlo. http://www.javascripttoolbox.com/ Recursos de todo tipo para javascript. http://www.sidar.org/recur/desdi/mcss/manual/indice.php Un manual de CSS muy completo para los que les gusta aprender. http://www.dafont.com/ Una muy buena y completa página con fuentes de todo tipo para que hagas el diseño de tu web. http://www.wikilearning.com/curso_gratis/introduccion_al_diseno_web/4463 Un muy completo curso de introducción al diseño para los webmasters que desean aprender a diseñar sus webs. http://www.unmatchedstyle.com/ Muy buena web para inspirarse a hacer un diseño web parecido. http://www.iconshock.com/index.php Muy buena página muy completa con íconos para sus webs. Scripts Gratuitos Wordpress WordPresses una avanzada plataforma semántica de publicación personal orientadaa la estética, los estándares web y la usabilidad. WordPress es librey, al mismo tiempo, gratuito. Dicho de forma más sencilla, WordPresses el sistema que utilizas cuando deseas trabajar con tu herramienta depublicación en lugar de pelearte con ella. http://es.wordpress.org/ SimpleMachines Forum ¿Tienesganas de empezar un foro? ¿Quieres hacerlo rápido y fácil? Pues SimpleMachines es tu solución. Un práctico y versatil sistema con el quepuedes hacer un foro fácil y rápidamente sin necesidad de editar ningúnarchivo. Recomendado. http://simplemachines.org/ http://download.simplemachines.org/?languages(Traducciones) Saludos!
Sea para darle un poco de condimento a tu blog personal o vender publicidad y ayudar a monetizar tu sitio, los banners animados son siempre una buena opción. Los hay super-sofisticados, en flash, con transiciones que llegan a niveles de obras de arte. Para los que no somos expertos una opción accesible es crear banners en formato gif animado(http://www.alegsa.com.ar/Dic/gif%20animado.php) Si eres usuario de Mac, te recomiendo un programa freeware GIFfun (http://www.versiontracker.com/dyn/moreinfo/macosx/7387) que resuelve el problema en un instante y no requiere de ningún conocimiento técnico. Aquí te van las instrucciones para crear tu primer banner: 1- descargar el programa GIFfun(http://www.versiontracker.com/dyn/moreinfo/macosx/7387) para MacOS. 2- copiarlo en la carpeta de aplicaciones. 3- crear una carpeta con las imágenes (mínimo 2) que queremos que se roten en el gif animado (obs: las imágenes tienen que tener exactamente el mismo tamaño, en mi caso 468 X 60 px, que es el tamaño del banner) 4- arrastrar las imágenes a la ventana de edicion del programa. 5- escoger la velocidad de reposición de cada imágen (delay) según tu propio gusto. 6- seleccionar la rotación (loop) En mi caso seleccione “forever” porque quiero que las imágenes permanezcan rotando permanentemente cuando la página esté abierta. 7- en el número 3 seleccionar “Make gif”. 8- listo! Para los más crativos, hay otras opciones en el programa para experimentar, como el color, transparencia, etc. El efecto de transición de puede crear aumentando el número de imágenes intermedias y disminuyendo la velocidad de reposición de cada imágen (como si fuera una película de animación). Para la imágen de abajo usé 5 gifs. (No queda igual que los hechos en flash pero en compensación son mil veces más sencillos de crear, hasta para los que no somos nerds)
2 kilos de papas rojas nuevas, cortadas en pedazos grandes 1/2 cucharadita de pimienta negra 1 cebolla morada grande, cortada en pedazos grandes 1/4 taza de perejil fresco picado 2 rebanadas de tocino cocido crujiente y desmenuzado 1 taza de queso cheddar fuerte desmenuzado Preparacion : precalienta el horno a 450°F. Mezcla las papas y la pimienta en una fuente para hornear engrasada de 15x10x1 pulgadas. Espárcelas para que no queden amontonadas. hornea las papas 20 minutos. Agrega la cebolla y revuelve. Continúa horneando 20 minutos más o hasta que los vegetales estén tiernos. espolvorea las papas con el perejil y el tocino; revuelve. Ponles el queso. Hornea las papas otros 2 minutos o hasta que el queso se haya derretido