Categories
Artí­culos PHP

Sitios MultiIdioma – Smarty

Primero que nada, esta parte está lejos de ser un tutorial de Smarty, ya que sólo utilizaremos algunas cosas, adaptándolo a nuestro ejemplo (un pequeño sistema de noticias), los que quieran conocer más a fondo esta herramienta, en mi opinión, no hay nada mejor que el manual de la página oficial.

Smarty, como ya había mencionado en la introducción, es un motor de plantillas para PHP, esta herramienta facilita la manera de separar la lógica aplicación, de la presentación de la misma.

Categories
Artí­culos PHP

Sitios MultiIdioma – Introducción

Esta es la primera, de una serie de artículos que estarán relacionados a la creación de un sitio en varios idiomas (sitio multidioma o sitio multilenguaje), el ejemplo se basará en un pequeño sistema de noticias (2 ó 3 tablas), para lo cual usaremos los siguientes elementos:

Se aceptan sugerencias y/o críticas.

Categories
Artí­culos

Seguridad de nuestro servidor comprometida…

Ayer por la tarde, fue vulnerada la seguridad del servidor donde se aloja este sitio, hasta donde sé todas las cuentas han sido afectadas, lo que estos hdp hicieron fue crear un conjunto de archivos (que tenían uid y gid 0!) con el mensaje "A1TS Ownz this Server by S0l4r1s":

  • default.htm
  • default.html
  • home.htm
  • index.cgi
  • index.htm
  • index.html
  • index.jp
  • index.js
  • index.jsp
  • index.php
  • index.php3
  • index.php4
  • index.phtml
  • index.shtml
  • index.wml

Felizmente no hemos registrado ningún tipo de pérdida en nuestros datos, pero este incidente me deja un mal sabor en la boca....

Categories
.NET ASP.NET

Hagamos bien las cosas…

Hace poco acabo de leer una entrada titulada Monologue ya soporta ATOM, me llamó la atención porque hace algunas semanas que vengo jugando con Monologue (que es un agregador de feeds al estilo Planet Planet!), el hecho es que la versión original soporta sólo feeds que están en formato RSS. Por curiosidad me animé a navegar en el repositorio del proyecto OpenBBS en busca del código modificado de Monologue; merecen especial atención las siguientes líneas del archivo monologue-worker.cs:

csharp:

bool bAtom = false;
if ( url.LastIndexOf("atom.xml") > 0 ) //es un ATOM
{
bAtom = true; Console.WriteLine("Es un ATOM");
}

Como pueden observar la comprobación para determinar si el feed está en formato ATOM sólo se basa en la terminación del URL, esto, en mi opinión, es muy ineficiente, por ejemplo en este blog, los feeds son de la forma http://www.buayacorp.com/?feed=atom o http://www.buayacorp.com/feed/atom, en muchos otros casos ni siquiera estará presente la palabra ATOM.

Si bien es cierto que todavía soy muy novato y me queda mucho por aprender, además del hecho de que hasta ahora no haya participado en algún proyecto de Software Libre; creo que debemos tener más cuidado cuando publiquemos este tipo de cosas, porque habrán decenas/cientos/miles/millones de personas que observarán cada idea que expresemos o cada recurso que colguemos en la red, claro está, que eso depende de la cantidad de visitas del sitio, por eso hasta ahora no he recibido muchas críticas :-P.

Categories
Quiz

Quiz sobre Java

Para todos los fans de Java ¿Qué es lo que pasa con las siguientes porciones código? ¿por qué?

java:

public class A
{
        public static void main(String args[])
        {
                int y;
                try
                {
                        y = 0 / 0;
                }
                catch (Exception ex)
                {
                        y = 0 / 0;
                }
                finally
                {
                        System.out.println("Finally");
                }       
        }
}
java:

public class A
{
        public static void main(String args[])
        {
                double y;
                try
                {
                        y = 0 / 0;
                }
                catch (Exception ex)
                {
                        y = 0 / (float) 0;

                }
                finally
                {
                        System.out.println("Finally");
                }       
        }
}

Posibles respuestas

  • Lanza una excepción del tipo ArithmeticException.
  • Lanza una excepción del tipo ArithmeticException y escribe "Finally"
  • Escribe "Finally" y lanza una excepción del tipo ArithmeticException.
  • Sólo escribe "Finally"