Controles .NET para aplicaciones de escritorio

A través del blog de Phil Wright me entero que ha sido liberado Kripton Toolkit, que es un conjunto gratuito de controles .NET, destinados a mejorar las interfaces gráficas de usuario en aplicaciones de escritorio, estos controles han sido desarrollados para trabajar con los recientemente liberados: Visual Studio 2005 y .NET Framework 2.

A pesar de que muchas veces se tiene que pagar una licencia por la adquisición de controles y/o componentes, generalmente este tipo de cosas ayudan a las empresas a ganar más "horas desarrollador".

Nota: Para todos aquellos que programen con .NET y tengan un blog con entradas relacionadas a esta área, hay una interesante oferta en la que regalan una copia de la última versión de DotNetMagic, creo que a nadie le cae mal estas cosas :-).

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.

Continue reading Sitios MultiIdioma – Smarty

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.

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....

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.

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"

Quiz sobre C#

Para los entendidos en C#, ¿Qué devuelve la siguiente función (y por qué) ?

csharp:
using System;

class Q1: System.NullReferenceException {
  static int Main() {
    try {
      string valor = "Value: " + (Q1)null;
      return valor.Length;
    }
    catch (Q1 q) {
      throw;
    }
  }
  public static string operator +(string msg, Q1 q) {
    return msg + q;
  }
}

Posibles respuestas

  • Retorna la longitud de la variable valor
  • Se produce un NullReferenceException
  • Se produce un StackOverflowException

Es una ligera adaptación del Quiz Sharp 1 de Adrian Florea

Solución

El código mostrado genera un StackOverflowException, porque la sobrecarga del operador "+" se hace sobre un objeto de tipo string en el primer sumando y un objeto de tipoQ1 en el segundo, es por eso que se hace recursivo (return msg+Q1;) como menciona Kiz.

Tablas con CSS

Tomando la idea de css Zen Garden unos chicos se animaron a hacer un sitio parecido, la diferencia es que éste presenta hojas de estilo sólo para tablas de datos:

http://icant.co.uk/csstablegallery/

Cualquier persona puede participar, incluso nosotros ya pusimos nuestro granito de arena.

Archivos relacionados