miércoles, noviembre 14, 2007

Por favor no instalés Windows Vista




El titulo de mi post pareciera exagerado, pero si vamos a mi experiencia con windows vista, es un titulo completamente valido.

Visual Studio me da errores de runtime y se cierra.
Firefox llega a ocuparme hasta 300 Mb de memoria RAM.
Tengo 8 Gb. de RAM pero si utilizo mas de 4 el disco duro trabaja incansablemente y el sistema se vuelve lento, es decir no puedo usarlos todos.
Cuando saco un backup de mi información (lo cual genera acceso intensivo a disco) mi vista se congela mientras dura el proceso.
Mi teléfono lo tengo que sincronizar por bluetooth ya que vista no reconoce mi base de sincronización.
No puedo dejar mi máquina encendida ni 3 dias ya que se va degradando aun mas el rendimiento (mi XP lo dejaba semanas).

y para colmo

Me funciona mas rápido el logmein que el Remote Desktop en vista.
Como servidor de paginas los tiempos de renderizado en vista son 10 veces mas lentos (medidos por addon de firefox) que el de un xp montado en una virtual!!!, para servir paginas tengo que montar una virtual con xp, que responde mas rápido que mi flamante vista.
Al encender mi máquina (solo encederla) ya tengo 1.6Gb. de memoria RAM ocupada, se supone que es por el superfetch pero parece no ayudar en nada al rendimiento.

En general vista da problemas de compatibilidad pero eso es comprensible, lo que es insoportable es lo lento (pude utilizar una palabra peor) y devorador de recursos que se vuelve.

pero lo peor

no puedo quitar vista de mi máquina ya que xp solamente soporta 4Gb de RAM como máximo.

jueves, noviembre 08, 2007

Aprendiendo a usar Google Maps (Segunda Entrega)



como el nombre lo dice la segunda parte del articulo de como hacer aplicaciones utilizando google maps. El artículo aquí

miércoles, octubre 10, 2007

Aprendiendo a Utilizar Google Maps (Primera Entrega)




Leyendo algunos posts que llegan a mi cuenta encontré este interesante artículo en otro blog, sobre como realizar aplicaciones que aprovechen las enormes caracteristicas del google maps. Articulo aqui.

jueves, octubre 04, 2007

Crear un virtual directory con .net

Es relativamente fácil implementar una rutina para crear directorios virtuales desde codigo, aqui el post original

Private Sub CreateVirtualDir(ByVal WebSite As String, ByVal AppName As String, ByVal Path As String)
Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated")
Dim CanCreate As Boolean = Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
IISSchema.Dispose()

If CanCreate Then
Dim PathCreated As Boolean
Try
Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/W3SVC/1/Root")

'make sure folder exists
If Not System.IO.Directory.Exists(Path) Then
System.IO.Directory.CreateDirectory(Path)
PathCreated = True
End If

'If the virtual directory already exists then delete it
For Each VD As System.DirectoryServices.DirectoryEntry In IISAdmin.Children
If VD.Name = AppName Then
IISAdmin.Invoke("Delete", New String() {VD.SchemaClassName, AppName})
IISAdmin.CommitChanges()
Exit For
End If
Next VD

'Create and setup new virtual directory
Dim VDir As System.DirectoryServices.DirectoryEntry = IISAdmin.Children.Add(AppName, "IIsWebVirtualDir")
VDir.Properties("Path").Item(0) = Path
VDir.Properties("AppFriendlyName").Item(0) = AppName
VDir.Properties("EnableDirBrowsing").Item(0) = False
VDir.Properties("AccessRead").Item(0) = True
VDir.Properties("AccessExecute").Item(0) = True
VDir.Properties("AccessWrite").Item(0) = False
VDir.Properties("AccessScript").Item(0) = True
VDir.Properties("AuthNTLM").Item(0) = True
VDir.Properties("EnableDefaultDoc").Item(0) = True
VDir.Properties("DefaultDoc").Item(0) = "default.htm,default.aspx,default.asp"
VDir.Properties("AspEnableParentPaths").Item(0) = True
VDir.CommitChanges()

'the following are acceptable params
'INPROC = 0
'OUTPROC = 1
'POOLED = 2
VDir.Invoke("AppCreate", 1)

Catch Ex As Exception
If PathCreated Then
System.IO.Directory.Delete(Path)
End If
Throw Ex
End Try
End If
End Sub

miércoles, octubre 03, 2007

Util, seleccionar un registro aleatoriamente

A veces, necesitamos obtener información aleatoria de una Base de Datos por diferentes razones, aquí unas rutinas muy útiles para cuando queremos generar información de prueba.

articulo original aqui

-------------------------------------------------------------------------------

Select a random row with MySQL:

SELECT column FROM table
ORDER BY RAND()
LIMIT 1

Select a random row with PostgreSQL:

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

Select a random row with Microsoft SQL Server:

SELECT TOP 1 column FROM table
ORDER BY NEWID()

Select a random row with IBM DB2

SELECT column, RAND() as IDX
FROM table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY

Thanks Tim
Select a random record with Oracle:

SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1

sábado, septiembre 29, 2007

Programadores del Kernel de Linux



Como información curiosa, una fotografia del cuerpo de programadores del kernel de linux, incluyendo por supuesto al pinguino fundador Linus Torvalds.

enlace completo aqui

viernes, agosto 31, 2007

HOWTO: Compress Virtual PC virtual hard disks (.VHDs)



Para los que utilizan Vmware es un poco mas sencillo pero si tenés alguna instalación con Virtual PC, éstas instrucciones te van a ser muy útiles, casi recuperé la mitad de mi disco duro.

el artículo aquí

lunes, agosto 27, 2007

Aventura en España





Debido a compromisos de trabajo tuve la oportunidad de conocer Madrid, por supuesto una ciudad hermosa y grandísima. Tiene atractivos turísticos historicos como el Palacio Real y modernos como el Estadio Santiago Bernabeu. Además de los atractivos turísticos qué me gustó y que no, pues me gusto que da confianza salir de noche, es bastante segura, el metro de Madrid es una maravilla, podés ir de una esquina a otra de la ciudad inmediatamente, lo que no me gustó pues los precios, aunque no es algo exclusivo de Madrid sino de Europa, para nosotros los Latinamericanos que estamos acostumbrados a un nivel de vida mucho mas barato aquí, todo nos parece caro, yo desayunaba un pan tostado con mermelada, cafe y zumo de naranja y eso me costaba €8 son como $10, aquí en Guatemala eso me cuesta unos Q15 que somo como €1.5 casi $2, una coca cola en una tienda de la calle €3 que son como Q30.

martes, agosto 14, 2007

Para que practiqués




Si querés practicar un poco, éste programa tiene algunas funciones muy buenas, un listado de 8000 palabras con su traducción al ingles y su pronunciación respectiva, tiene examenes tanto de traducción textual como de comprensión auditiva, ademas se puede dejar corriendo como un widget mostrando palabras y su traducción, sin darte cuenta te las vas aprendiendo. En resumen es un programita sencillo para enriquecer el vocabulario en ingles y mejorar la comprensión, es feo pero muy útil.

enlace http://wordsgalore.com/

jueves, agosto 02, 2007

Numero a Letras en SQL




Mas de alguna vez hemos tenido la necesidad de pasar de numeros a letras, y hay una gran cantidad de rutinas muy eficientes para hacerlo, tanto para delphi, .NET, etc. Aquí una no tan común en SQL. Cortesía de Hugo.




CREATE FUNCTION [dbo].[Num2Let]
(
@Numero NUMERIC(20,2)
)
RETURNS varchar(2000)
AS
BEGIN
DECLARE @lnEntero INT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT
SELECT @lnEntero = CAST(@Numero AS INT),
@lnFraccion = (@Numero - @lnEntero) * 100,
@lcRetorno = '',
@lnTerna = 1
WHILE @lnEntero > 0
BEGIN
SELECT @lcCadena = ''
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
-- Unidades
SELECT @lcCadena =
CASE
WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'Uno ' + @lcCadena
WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'Un ' + @lcCadena
WHEN @lnUnidades = 2 THEN 'Dos ' + @lcCadena
WHEN @lnUnidades = 3 THEN 'Tres ' + @lcCadena
WHEN @lnUnidades = 4 THEN 'Cuatro ' + @lcCadena
WHEN @lnUnidades = 5 THEN 'Cinco ' + @lcCadena
WHEN @lnUnidades = 6 THEN 'Seis ' + @lcCadena
WHEN @lnUnidades = 7 THEN 'Siete ' + @lcCadena
WHEN @lnUnidades = 8 THEN 'Ocho ' + @lcCadena
WHEN @lnUnidades = 9 THEN 'Nueve ' + @lcCadena
ELSE @lcCadena
END
-- decenas
SELECT @lcCadena =
CASE
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN 'Diez '
WHEN 1 THEN 'Once '
WHEN 2 THEN 'Doce '
WHEN 3 THEN 'Trece '
WHEN 4 THEN 'Catorce '
WHEN 5 THEN 'Quince '
ELSE 'Dieci' + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'Veinte ' + @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'Veinti' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'Treinta ' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'Treinta y ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'Cuarenta ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'Cuarenta y ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'Cincuenta ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'Cincuenta y ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'Sesenta ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'Sesenta y ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'Setenta ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'Setenta Y ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'Ochenta ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'Ochenta y ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'Noventa ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'Noventa y ' + @lcCadena
ELSE @lcCadena
END
-- centenas
SELECT @lcCadena =
CASE
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'Cien ' + @lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'Ciento ' + @lcCadena
WHEN @lnCentenas = 2 THEN 'Doscientos ' + @lcCadena
WHEN @lnCentenas = 3 THEN 'Trescientos ' + @lcCadena
WHEN @lnCentenas = 4 THEN 'Cuatrocientos ' + @lcCadena
WHEN @lnCentenas = 5 THEN 'Quinientos ' + @lcCadena
WHEN @lnCentenas = 6 THEN 'Seiscientos ' + @lcCadena
WHEN @lnCentenas = 7 THEN 'Setecientos ' + @lcCadena
WHEN @lnCentenas = 8 THEN 'Ochocientos ' + @lcCadena
WHEN @lnCentenas = 9 THEN 'Novecientos ' + @lcCadena
ELSE @lcCadena
END
--Terna
SELECT @lcCadena =
CASE
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' Mil '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' Millon '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' Millones '
WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' Mil Millones '
ELSE ''
END
--Armo el retorno terna a terna
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1
END
IF @lnTerna = 1
SELECT @lcRetorno = 'Cero'
RETURN RTRIM(@lcRetorno) + ' Con ' + LTRIM(STR(@lnFraccion,2)) + '/100'
END

viernes, julio 27, 2007

miércoles, julio 18, 2007

configurar squid en 5 minutos




Probablemente como yo, tuvieron alguna vez la necesidad de montar una pequeña red con recursos compartidos, todos sabemos que si se deja la salida a Internet libre, cualquiera llega pone un p2p y nos mata a todos, y obviamente soluciones como un servidor necesitan máquinas decentes si utilizamos Windows, la solución perfecta es squid ya que con una 486 que usábamos de banca podemos instalar un servidor de Internet. Aunque el titulo dice 5 minutos a mi me llevó como 3 horas ya que yo uso kubuntu y el artículo es para Red Hat, pero es cuestión de afinamiento.

Artículo aqui

PD. squid es un proxy, open source.

viernes, julio 13, 2007

En serio tenés que verlo completo

Esto me lo envió Andrés, un amigo, hay que verlo.

jueves, julio 05, 2007

Comparacion Linux




Una pagina donde se pueden comparar entre si muchas las distribuciones de Linux, calificándolas en base a ciertas pruebas tales como facilidad de instalación, consumo de recursos, estabilidad, etc.

enlace aqui

lunes, junio 25, 2007

Cómo enviar correo electrónico por código usando cuentas de GMail

Enviar correos utilizando .NET es muy fácil sin embargo para utilizar la cuenta de Gmail se necesita un par de configuraciones adicionales como lo son el uso de SSL y un puerto diferente para la conexión

articulo original aqui

using System;
using System.Collections;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;

public class EjemploCorreoGMail
{
    public static void Main()
    {
            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
            msg.To.Add("destinatario@dominio.com");
            msg.From = new MailAddress("micuenta@gmail.com", "Tu Nombre", System.Text.Encoding.UTF8);
            msg.Subject = "Prueba de correo a GMail";
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            msg.Body = "Cuerpo del mensaje";
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            msg.IsBodyHtml = false

            //Aquí es donde se hace lo especial
            SmtpClient client = new SmtpClient();
            client.Credentials = new System.Net.NetworkCredential("micuenta@gmail.com", "miclave");
            client.Port = 587;
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true; //Esto es para que vaya a través de SSL que es obligatorio con GMail
            try
            {
                        client.Send(msg);
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                        Console.WriteLine(ex.Message);
                        Console.ReadLine();
            }
    }
}

jueves, junio 21, 2007

Aventura en Cuba







Bueno se que muchos al igual que yo se preguntan como es Cuba en realidad, quien miente? y luego de una semana en La Habana puedo contar lo que vi y lo que escuche, no quiero opinar ni decir si pienso que algo es bueno o malo simplemente traslado lo que viví.

1) La moneda para los turistas se llama peso cubano convertible, que esta al 1x1 con el Dolar pero te multan con un impuesto del 10% y otro recargo que no recuerdo, total por USD$100 te dan 80CUC, solo con esto ya todo sale un 20% mas caro, hay que ir con Euros, sale mejor.

2) La moneda para el pueblo cubano y con el cual pagan los sueldos se llama peso (solamente)

3) Todo se debe pagar en CUC en ningún lugar aceptan Dolares, Tarjetas o Euros.

4) Los cubanos no pueden subir a los hoteles, ni entrar a los sitios turísticos como Baradero, tienen prohibido "molestar" a los turistas

5) Se puede caminar a media noche por cualquier lugar, sin pena alguna, es increíblemente seguro

6) La educación y la salud son gratis y obligatorias.

7) también el servicio militar es obligatorio y es por 5 años

8) Es cierto hay médicos, ingenieros etc, como taxistas y meseros. Ya que la educación es accesible a todos, pero no hay suficiente oferta de trabajo.

9) El Sueldo mensual de un Medico es de USD$35

10) El estado brinda servicios básicos, como la comida, la educación y la salud, pero con su sueldo deben comprar el resto

11) El producto nacional es muy barato, digamos una pizza mediana en un restaurante cuesta 3CUC, sin embargo una gaseosa importada cuesta 2CUC, es decir La Habana esta llena de restaurantes pero un cubano con un sueldo de USD$35 no puede sentarse y comerse una pizza que cuesta como USD$5, son para los turistas

12) No hay trafico, casi no hay carros, y la mitad de los pocos carros que hay son modelo tipo '40, '50 por allí, pero muy bien cuidados.

13) Existen lugares turísticos como la Fortaleza de El Morro, El Malecón, etc. que vale la pena visitar

14) El agua potable es purificada

15) No hay Internet, en Cuba es muy caro cuesta USD$600 mensuales una linea dedicada de 64Kb, si 64Kb.

16) Que dicen los cubanos? pues algunos estan contentos con esa forma de vida, pero la mayoría quieren mas libertades

1000) bueno no me aguanté, que creo que es lo mejor de cuba? el nivel de educación, salud y seguridad, comparado con el nuestro está por las nubes. Que es lo peor? la falta de libertades.

martes, junio 19, 2007

Buscador de codigo fuente



Existe un buscador de codigo llamado Krugle, permite buscar codigo fuente en una gran cantidad de lenguajes y temas de programacion y tiene incluso plug-ins.

fuente original aqui

jueves, junio 07, 2007

Como funciona google internamente?




En 1997 los creadores de Google los estudiantes Larry Page y Sergey Brin realizaron su tesis doctoral donde planteaban las bases para lo que mas tarde se convertiría en Google.

Una traducción al español de la tesis aqui

El articulo completo del traductor aqui

(por cierto Google es ya la marca mas valiosa del mundo con un valor en Abril del 2007 de 66.000 millones de dólares, por encima de Microsoft, Coca Cola y otros)

La nueva version de Qt jambi




Trolltech ha sacado una nueva versión de su herramienta de desarrollo multiplataforma basada en java QT jambi, y los demos que muestras son increibles.

(Recordemos que KDE esta desarrollado en las herramientas de Trolltech)

lunes, junio 04, 2007

Google ya reconoce rostros

Que significa esto? en pocas palabras el resultado final dentro de poco tiempo sera que si buscas "Ronaldo", google va a reconoces todas las imagenes donde apareza su rostro.... !!!!

la noticia completa aqui

una busqueda de prueba aqui
(esta busqueda dice muestreme todas las imagenes que tengan un rostro cualquiera)