Sunday, August 27, 2006

IronPython

Bueno, ya he mejorado mucho en lo de conducir así que me sente a buscar información sobre Python y la plataforma .NET. IronPython es el interprete de Python escrito en C#, me he bajado la version 10 y algo, y contiene muchos ejemplos para empezar. Seguro se preguntaran porque usar python, el primer motivo es que es muy interactivo es como una consola de programación, Y UNA CALCULADORA HIPER POTENTE, y si los expertos me lo permiten le encuentro mucha semejanza a .net, por ejemplo:

en .net

Console.WriteLine("{0} * {1} = {2}, valor1,valor2,valor1 * valor2)

en python

print "%d * %d = %d" % (valor1,valor2,valor1 * valor2)

%d significa que se insertara un número entero

Python esta muy bien en mi opinion, y tiene mucha difusión, en http://es.wikipedia.org/wiki/Python veran una lista de los grandes proyectos que usan Python, 

Mañana Escribo Más, ^-) 

PS: Alguien sabe donde Bajarme el Tema de Friends y el Pretty Woman, Gratis

Tuesday, August 22, 2006

Triángulo de Pascal

Hoy he subido un programa que hice el año pasado para calcular el triángulo de pascal, y obtener los coeficientes del binomio a la X (donde x depende de la memoria que tengas), en realidad el programa es de este año, ya que utilizando generics y threads aumente la eficiencia, este es el url, y si necesitan saber de que va el triángulo de pascal, accedan a wikipedia. SALUDOS

Monday, August 21, 2006

Problemas con los codigos

Debido a que tuve que exportar los post a bitacoras, los codigos de este blog estan mal alineados, espero poder corregirlos, de todas formas en mi sitio en bitacoras aquí estan con mejor formato, colores y demas, un saludo...

Probando LiveWriter

La verdad no pienso irme de blogger, pues me he enterado que incluiran muchas novedades, como organización por categorias de los pots y un editor WYSIWYG para las plantillas, el sitio en bitacoras.com lo usare para almacenar imagenes, programas, dll, en fin cosas relacionadas con mi blog.

Sunday, August 20, 2006

Hello World in Blogger, See you around Blogger

A partir de ahora mi blog puede ser visto en Aquí, todavia no he llegado al mes de postear y ya me estoy cambiando, no es que el blogger no sea de mi agrado, lo es, sin lugar a dudas, pero bitacoras.com me deja colgar uno que otro programa, y es una comunidad en español. Me queda la alegria de haber llegado a superar 100 visitas a mi blog de America y Europa, bueno nos vemos en bitacoras, ;-)

Saturday, August 19, 2006

Primer y ultimo Sabado de Julio

Cuando empecer a trabajar con Delphi 7, hace como 2 años, en mi escuela se usaba mucho un programa llamado Trucomania, una bases de datos que incluia entre muchas cosas un algoritmo para saber el dia de la semana mediante una fecha dada, un algoritmo interesante, al que nunca le preste atención, y paso el tiempo y paso, y en la plataforma .net aprendi una forma de hacerlo mas sencillo:

Dim d31 As New DateTime(2006, 7, 1)

msgbox(d31.dayofweek.tostring)

La clase Date, DateTime y TimeSpan, encapsulan una serie de algoritmos como el que mencionaba arriba, que nos permiten un desarrollo muy rapido, ejemplo de esto lo tenemos en el siguiente algoritmo: Que permite obtener la fecha del primer (martes,lunes,etc) y ultimo (etc). Esto esta hecho a la tremenda pero segun mi calendario esta bien.

Dim d31 As New DateTime(2006, 7, 1) 'Ponemos la fecha el primero 'de Julio

Dim diapredeterminado As DayOfWeek = DayOfWeek.Saturday 'Primer ....

Select Case d31.DayOfWeek

Case diapredeterminado

Me.TextBox2.Text = d31.Date.ToString Beep()

Case Else

Dim intervalo As New TimeSpan(1, 0, 0, 0)

While True

d31 += intervalo

If d31.DayOfWeek = diapredeterminado Then

Exit While

End If

End While

Me.TextBox2.Text = d31.Date.ToString

End Select

d31 = New DateTime(2006, 7, 31)'Ponemos la fecha el 31 de Julio Select Case d31.DayOfWeek

Case diapredeterminado

Me.TextBox2.Text &= d31.Date.ToString Beep()

Case Else

Dim intervalo As New TimeSpan(1, 0, 0, 0)

While True d31 -= intervalo

If d31.DayOfWeek = diapredeterminado Then

Exit While

End If

End While 'Ultimo .....

Me.TextBox2.Text &= d31.Date.ToString

End Select

El resultado se muestra en un textbox, gracias a DateTime, no nos tenemos que preocupar si es bisiesto o no, ya que ese tipo de comprobaciones y algoritmos forman parte del tipo. Gracias BCL!!!

Friday, August 18, 2006

Los planetas luchando por sus derechos!!!


Pues eso, Un grupo de astrónomos han presentado la propuesta de cambiar las categorias de varios asteroides y demas elementos, con lo que tendriamos 12 en vez de nueve planetas en el Sistema Solar, esto aun es una propuesta. De aceptarse se tendrian que actualizar numerosos libros relacionados con el tema:

¿Qué es un Planeta?
Noticia Original

Optimizador Condor

Muchas programadores subestiman al lenguaje Visual Basic .NET (solo por ser VB) y no tienen idea de los grandes programas que se han hecho en este lenguaje, entre ellos esta Optimizador Condor, un programa para Optimizar el SO, con una interfaz muy intuitiva y considero que esta a la altura de cualquier software de pago (ya que es freeware) el autor mantiene dos blogs:

Proyecto Condor
Blog Informatico de Cibernetiko

Con la llegada del .NET 2.0 se esta gestando Optimizador Condor 2.0 con soporte multilenguaje, y muchas cosas mas.

Muchas Felicitaciones a Cibernetiko

MSDN Operadores Logicos

Esto es una informacion muy basica, pero que estoy seguro que muchas personas desconocen o pasan por alto, debido al poco uso que le damos (me refiero a los ultimos puntos del articulo): Aqui

Wednesday, August 16, 2006

Noticias y Chop Suey

Antes que nada, o antes que me olvide mejor, en el blog de Jorge Serrano he visto una noticia que me ha dejado impactado: !Ya podemos programar para XBOX con C#¡
Gracias a XNA la suite de desarrollo de juegos, que se integra con la version Express de Visual C#, Hay que admitir que .NET esta cambiando el mundo, y esto de las consolas Whoaaaaaa!!! super que genial (para los que tengan una jajaja). En cuanto le diga a mi hermano que puede hacer juegos para xbox me va a pedir el C# Express para hacer su propio Call of Duty, :-)

Como hacer un ToolTip a nuestro Antojo

Bien, en este post, mostrare como hacer un tooltip con un tamaño deterinado y que muestre el texto centrado, o mejor dicho justo como este en un textbox: Debes tener IsBallon=False y OwnerDraw=True con el evento Draw:

e.DrawBackground()

e.DrawBorder()

Using tpen As New Pen(Me.ToolTip1.ForeColor)

e.Graphics.DrawString(Me.TextBox1.Text, Me.TextBox1.Font, _

tpen.Brush, New RectangleF_(e.Bounds.X, e.Bounds.Y, _

Me.TextBox1.Bounds.Width, Me.TextBox1.Bounds.Height))

 End Using

Explico e es uno objeto del tipo System.Windows.Forms.DrawToolTipEventArgs y tiene los metodos DrawBackground(),DrawBorder(),DrawText() que dibujan al estilo predeterminado, como lo que nos interesa es el texto con un formato, saltos de linea y demas, solo implementamos lo que tiene que ver con el texto, e tambien nos brinda un objeto rectangulo que nos dara la posicion (point) del X,Y y el ancho y el alto lo tomamos del textbox. El segundo metodo que usaremos es el Popup del Tooltip:

e.ToolTipSize = Me.TextBox1.Size

e es del tipo System.Windows.Forms.PopupEventArgs y nos permite modificar el tamaño o area que mostrara el tooltip de lo contrario dibujaremos teniendo el cuenta el ancho del textbox pero solo se mostrara lo que utiliza el tooltip. Espero que lo encuentren util!!!

Sunday, August 13, 2006

Obtener la Resolucion de nuestro monitor

La clase screen, nos permite obtener el nombre del dispositivo asociado a cada pantalla (screen), obtener el area de trabajo de esta, la lista de pantallas(screens) , etc, el codigo es este:

MsgBox(String.Format("{0} - {1}", Screen.PrimaryScreen.Bounds.Height, _ Screen.PrimaryScreen.Bounds.Width))

y para obtener el tamaño de nuestro form en el escritorio:

MsgBox(String.Format("{0} - {1}", DesktopBounds.Height, DesktopBounds.Width))

DesktopBounds devuelve un objeto Rectangle por lo que podemos obtener la posición

Operador Ternario en VB.NET

Haciendo el articulo de sobrecarga de operadores he tenido que consultar cierta bibliografia en C# y de momento comienzo a tener conciencia de una cantidad de operadores que no conocia, en fin algo mas que aprender: Hay tres tipos de operadores (que yo sepa, de seguro hay más)

  1.  unarios (trabajan sobre un solo operando, ejemplo: N=-N aqui estamos marcando N que es un entero como negativo)
  2. binarios [no tiene nada que ver con 0 y 1] trabajan sobre dos operandos, ejemplo: l=2+2
  3. ternarios (trabajan sobre 3 operandos, ejemplo: Operador Condicional ?: en C# seria algo asi                                  double comision= ([condicion])? 0.10 : 0.20;                      ¿Qué significa?, pues bien si la condicion se cumple comision tomara el valor del segundo operando y de no serlo tomara el valor del tercero.

Una delicia esto del ternario, ahora bien como seria en visual basic.net aunque no es un operador lo que usaremos.Es una función:

dim comision as double= iif([condicion],0.10,0.20)

Y hace unos momentos, me topo con el blog de Cameron Beccario y veo un post que reza: Util Iff para Visual Basic 2005, y bien el url es este

 De todas formas lo explicare: Un costumbre de sabios es tener habilitado Option Strict, nos ahorramos el boxeo, digo el boxing, y como IIf devuelve object, no le podemos asignar eso a un double ya que recibiriamos una excepcion ya que las conversiones implicitas estan deshabilitadas, asi que nos queda hacer un cast:

CDouble(IIf([condicion],0.10,0.20))

y se complicaria con Ctypes y demas, aqui es cuando entra la función IIf util para VS2005: Haciendo Uso de Generics (en mi blog unos post mas abajo hay un articulo sobre esto) y Utilizando Type Inference eliminamos el cast, ya que el codigo es adaptado por el JIT en tiempo de ejecucion:

Function IIf(Of T)(ByVal Condicion As Boolean, ByVal ParteVerdadera _

As T, ByVal _ ParteFalsa As T) As T

 If Condicion Then

 Return ParteVerdadera

Else

Return ParteFalsa

End If

End Function Muchas Gracias a Beccario, y Felicidades a Paul Vick que sera padre, ;-)

Wednesday, August 09, 2006

Reproducir MP3, vídeo y otros tipos de archivos con .NET

Aqui pongo el enlace de un post de Jose Manuel Alarcon Aguin que muy amablemente ha contestado una consulta que le hice sobre el tema:

Reproducir MP3, vídeo y otros tipos de archivos con .NET

Me han dejado de "tarea" investigar sobre MCI y me he propuesto crear un componente que envuelva esta funcionalidad, veamos cuando lo termino, :-)

Tuesday, August 08, 2006

Buscar Palabra Especifica en un String

Aqui pongo un codigo que devuelve una palabra segun el número que le pasemos a la función, teniendo en cuenta los espacios:

Private Function Search(ByVal x As Integer) As String ´

'Busca palabras entre los espacios'

Dim con As Integer = 0

Dim texto As String = ""

Dim pos1, pos2 As Integer

Dim i As Integer = 0

While i <= c.Length

If Not i = c.Length Then

If c.Chars(i) = " " Then con += 1

If con = x - 1 Then

pos1 = i

End If

If con = x Then

pos2 = i

Exit While

End If

End If

Else pos2 = c.Length - 1

Exit While

End If

i += 1

End While

For i = pos1 To pos2 Step 1

texto = texto & c.Chars(i)

Next

Return texto

End Function

Este algoritmo toma la cadena de una variable declarada previamente, pero facilmente "c" puede ser un string pasado a la funcion

Con " el _ es caracter

Algunas veces cuando el codigo es muy largo o simplemente por que lo queremos asi, colocamos _ para decirle al compilador que la instruccion sigue en la proxima linea, pero si estabas en el medio de la declaracion de un string, sera interpretado como un string. Hay que echar mano al & y luego _, ;-)

Problemas con el Index

Los otros dias estaba trabajando en un visor de imagenes, y me tope con algo desconcertante. Usaba un listview en el que solo podia seleccionar un elemento, y logicamente controlaba el evento SelectedIndexChaged, y resulta que antes de seleccionar otro elemento hay un momento que la propiedad SelectedItems esta vacia. Resultado una molesta excepcion, se puede evitar poniendo este codigo dentro del cuerpo del metodo:

if me.Listview1.SelectedItems(0) isnot Nothing then
'...
end if

Monday, August 07, 2006

Primer articulo publicado

Super Genial!!!, mi articulo de Implementacion de Generics en Visual Basic se ha publicado, los invito a ver este articulo en el sitio del Guille:

Implementando Generics en VB.NET

Ahora a preparar el proximo sobre Sobrecarga de Operadores

Sunday, August 06, 2006

Felicidades Abuela

Este segundo post es para mi abuela querida, una de las mujeres que mas admiro. Si pudieran conocerla seguro opinarian lo mismo que yo, Abuela si lees esto, quiero que sepas que te quiero mucho y que estoy estudiando como tu me enseñaste, sobre todo ese dichoso PUNTO NET que tanto te menciono, jajajaj.

Hola mundo en Blogger

Estos son mis primeros pasos en este nuevo lenguaje de programacion, o mejor de comunicacion, gracias a este lenguaje doy inicio a este mi blog sobre programacion .NET. Listo el mensaje damos a F5, compilando y el hola mundo ya esta hecho...