Blog con trucos y utilidades para desarrollo de aplicaciones. Desde SQL Server, C#, LINQ, Visual Basic, WPF, VSTO, Office, Silverlight y todo lo que pasa por mis manos en el día a día.
jueves, diciembre 03, 2009
Oferta empleo Programador Junior
-Necesitamos una persona dinámica, con ganas de aprender y en continúo reciclaje y que considere que pueda con las siguientes tareas a desarrollar en el dpto. de programación:
-Asistencia telefónica con el cliente en 2ª línea. (la primera es al que recibe la llamada y si no sabe resolverla la pasa a la 2ª).
-Mantenimiento de aplicaciones VB6, SQL Server 2000/2005, C#, VB9, Visual Studio 2008, Framework 3.5 (normalmente la llamada es por algún error de programación que hay que detectar, debido a las continuas modificaciones en las aplicaciones, ahora se contabilizan unas 8 llamadas diarias por personas e incluso menos)
-Posibilidad de viajar al menos una vez al mes (es raro que se viaje, pero existe la posibilidad de testear nuevas aplicaciones, arreglar errores in situ, etc..)
-Cómo requisito imprescindible es coche propio con carnet de conducir, residencia en la provincia de Alicante, que sea organizada y al menos que tenga el título de DAI, esté cursando o similar.
Si queréis más información podéis mandarme un mail.
Un saludo a todos.
martes, octubre 20, 2009
Combobox y ToString()
...
private string _CodigoIne;
private string _Localidad;
...
e intentando a través de otra clase que me devolviera una lista de poblaciones leyéndola de la base de datos a través del método:
public List
no había forma de que me presentara los nombres de las poblaciones en el combobox aunque se lo marcara en la propiedad DisplayMember del combobox susodicho:
cbLocalidad.DataSource = bsLocalidad;
cbLocalidad.DisplayMember = "Localidad";
cbLocalidad.ValueMember = "CodigoINE";
pero como dirían los gallegos, depende, a veces sí a veces no aparecía el nombre y otras el nombre de la clase:
Entidades.MaestroLocalidad
Entidades.MaestroLocalidad
Entidades.MaestroLocalidad
en vez de por ejemplo:
Alicante
Elche
Santa Pola
así que decidí esta mañana sobreescribir el método ToString() de la clase mencionada en primer lugar:
public override string ToString()
{
return _Localidad;
}
y solucionado el problema.
Un saludo
Oscar Montesinos
lunes, octubre 19, 2009
TTT - Codecamp Tarragona 2009
En resumen de los conceptos planteados puedo resumir los que mayor interés me han suscitado:
-Programación para iPhone.
-Windows Azure, Services y SQL.
-WPF 4
-ASP.NET MVC2
miércoles, septiembre 23, 2009
Menú con lista de ventanas
Ahora al grano, para Framework 2.0 tenemos que añadir un menú del cuadro de herramientas llamado MainMenu (obsoleto) y añadir sus correspondientes MenuItems, en el que uno de ellos sería por ejemplo "Ventanas", y al que tenemos que poner la propiedad MDIList a true.
Para Framework 3.5 la cosa ha cambiado, ya no tenemos el menú MainMenu, y como habréis podido leer en el link que os he puesto en MainMenu, Microsoft nos aconseja que usemos MenuStrip en vez de MainMenu. Y ahora ya nos podríamos volver locos buscando lo de MDIList porque aquí esa propiedad no existe. En este control lo que nos han puesto es una propiedad llamada MdiWindowsListItem que nos permite seleccionar un ToolStripMenuItem que hayamos creado en el Menú ToolStrip.
Y con esto nada más por ahora, y que malo es no saber, porque he perdido un poquillo de tiempo por esta chorrada, casi me creo yo mismo el gestor del menú de ventanas y eso no me sale rentable.
Un saludo
Oscar Montesinos
miércoles, agosto 26, 2009
Windows Server 2008 & MSDE
I'm searching with google for MSDE and Windows Server 2008 bugs. I find a terrible surprise: MSDE doesn't support by Microsoft since 2007, but I tried to install MSDE with Service Pack 4 in 2008 server and, ¡¡¡congratulations!!!, MSDE works fine!!!. I tried to install MSDE SP4 in Vista and 7 and works fine!!!, perfect, no problem, Me and my customers are happies!!!
links finded:
http://blogs.msdn.com/sqlexpress/archive/2006/08/09/693650.aspx
http://blogs.msdn.com/darrylburling/archive/2006/08/16/701729.aspx
lunes, agosto 03, 2009
Lector RSS con Framework 3.5 sin LINQ
Después de leer algunos libros y leer código de otra gente (Marino Posadas por ejemplo), descubrí que existía en Framework 3.5 y en Silverlight también, el espacio de nombres:
junto con el de .Net para WebClient que me sirve para lo que creo: mejorar y optimizar el lector RSS de una forma más "Framework" y sin experimentos raros con LINQ. Así que me puse manos a la obra y saqué el siguiente código que me servía para mis propósitos en las aplicaciones que suelo elaborar:
El ahorro de código con el anterior sistema, es considerable, así como la utilización de clases de framework nos aporta más conocimiento sobre el sitio en el que estamos leyendo las noticias de una forma estructurada, completa y simple de interpretar.
Un saludo
Oscar Montesinos
(Todos los ejemplos son optimizables y discutibles, esta solución no es la mejor (de hecho es la 3ª versión que publico sobre el mismo tema), seguro que existe alguien que la puede hacer mejor, tan sólo es mi aportación con lo que voy aprendiendo día a día, si te sirve me alegro, si no te sirve y puedes mejorarlo, te invito a que lo hagas y lo compartas con todos.)
domingo, julio 26, 2009
C# ProcessStartInfo y Process
y aquí si quieres copiar y pegar:
ProcessStartInfo startInfo = new ProcessStartInfo("c:\\windows\\notepad.exe");
startInfo.Arguments = "c:\\UnFichero.txt";
startInfo.WindowStyle = ProcessWindowStyle.Normal;
Process process=new Process();
process.StartInfo=startInfo;
process.Start();
process.WaitForExit();
process.Close();
Un saludo
Oscar Montesinos
viernes, julio 24, 2009
LINQ a XML con namespace
Al intentar consultar un XML generado por la competencia mediante LINQ por el procedimiento tradicional, me ha pasado que no me encontraba nada cuando en los XML generados por nuestra aplicación si me encuentra los elementos que busco mediante la siguiente instrucción:
Revisando el xml que genera la competencia y comparándolo con el nuestro me he dado cuenta que en la cabezar usa el atributo xmlns, es decir, que usa namespace para el nombre de cada elemento:
Así que la cosa cambia, porque un elemento que dependa del raiz DOCS_NOT ya no se llama tal cual lo vemos, se llama por ejemplo
Pues nada más, saludos a todos y a divertirse...
Un saludo
Oscar Montesinos.
martes, julio 21, 2009
Proyecto e-Dni
http://www.facebook.com/photo.php?pid=30324446&l=2fb71f0f08&id=1592291277
El proyecto está hecho en C#, Framework 3.5 contra una bd en SQL Server compatible con 2000.
Un saludo
Oscar Montesinos.
miércoles, julio 08, 2009
SPT con tablas para IFT
Y aquí el diagrama:
Para calcular el Indice de Fuerza Técnica por periodos corto/medio/largo plazo necesitaremos una tabla de Indices de FT, una tabla de definición de periodos, la relación de Valores con IFT y la relación de Periodos con ValoresIFT.
Seguimos trabajando en la importación automática de datos para su análisis. Ahora ya tenemos 2 algoritmos a desarrollar para después de esta importación:
a) Cálculo de ITF
b) Cálculo de Stop Loss.
Un saludo
Oscar Montesinos
domingo, julio 05, 2009
SPT Primeras tablas
- Indicadores:
Tabla de índices, valores, etc. que se van a analizar desde el SPT_Análisis (SPTA) y desde el SPT_Servicio_de_Integración (SPTSI).
Ruta es la dirección de dónde se extraen los datos., Tipo es el tipo de índice: valor, índice general, de materias primas, etc...
- IndicadoresDiario:
Es la tabla donde se almacenan los datos diarios que se irán recogiendo de cualquier fuente y que se tratarán previamente con SPTSI. De esta tabla se alimentará SPTA para llegar a conclusiones según los algoritmos desarrollados.
Ahora toca desarrollar SPTSI para que automáticamente se lean los datos de las distintas fuentes disponibles.
Un saludo
Oscar Montesinos
lunes, junio 22, 2009
SOLID SUMMIT 2009
Rubén Garrigós también estuvo orquestando muchas de las sesiones, llénándonos de información sobre infraestructuras y su impacto en el rendimiento de nuestros servidors SQL.
Tuvimos la suerte de que Miguel Egea (que grande es!!!), Francisco González, y Daniel Seara pasaran por nuestra sala para amenizarnos con temas como son Log Shipping, SSIS, Entity Framework y LINQ.
Sólo hubo un fallito, pero el fallito no fué de Solid, fué del restaurante que reservé para la cena de confraternidad que se realiza los Jueves dentro del Summit. El problema fué que pactamos un precio de 22 euros y nos salió la broma por 29/30 euros porque nos cobraron la bebida a partir de 60 consumiciones. cosa que no nos dijeron en ningún momento. Por si no queréis caer en la misma trampa en la que caí yo es el restaurante LA PINTARTECA en la Av. Andes esquina Av. Arroyo del Santo. La cena escasa, el precio abusivo, el cumplimiento de lo pactado nulo (nos hicieron 3 facturas y ninguna igual), y el servicio dudoso.
En definitiva, la cena no empañó el buen hacer de la gente de SolidQ que año tras año nos cuentas sus logros con sus clientes y nos descubren sus secretos del triunfo.
Gracias
sábado, junio 20, 2009
Sistema Personal de Trading (SPT) - Análisis
La primera parte que voy a realizar es la de recogida de datos directos desde la web mediante SSIS contra ficheros planos o xls de algunos valores como son los blue chips del IBEX35.
En próximos post iré comentando el proceso realizado, etc...
viernes, mayo 15, 2009
Tests en la página de La Caixa
Pues eso, lanzo un consulta del 1/04/2007 al 30/06/2007 y me dice que el período máximo consultable es de 24 meses.
Juzgar vosotros mismos-
jueves, marzo 19, 2009
WINFORM: Cambiar TAB por INTRO
Para empezar recuerdo que desde tiempos inmemoriables se ha usado SENDKEYS para susodicha tarea, pero también recuerdo que si pones en google SENDKEYS podrás ver que hay infinidad de páginas que indican problemas varios con esta instrucción. Un ejemplo es que en determinados portátiles no funciona y otro problema es que borra el buffer del teclado, etc...
Buscando sustituto me he ido a esta página
http://www.gamarod.com.ar/trucos/enviar_la_tecla_tab_sin_los_problemas_del_sendkeys.asp
(que por cierto, tarda un montón en cargarse), para ver que se puede usar la función "keybd_event" de la api "user32.dll".
He buscado información en MSDN:
http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx
y leyendo atentamente me comenta que no use esta función que ha sido reemplazada por SendInput, la cual podéis encontrar en msdn en este link:
http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx
que además de enviar teclas permite enviar pulsaciones y movimientos del ratón, y además no resetea el estado del teclado.
Como siempre he pensado que la MSDN está un poco complicada para la gente normal y corriente pues he seguido investigando esta función y he encontrado esta maravillosa página hecha expresamente para gente como yo:
http://www.pinvoke.net/default.aspx/user32.SendInput
cuyo site voy a tener entre mis links preferidos.
De todas formas, al final no he usado ninguna de las 3 porque necesito saber en mi programa hacia que control va a saltar el TAB para realizar determinadas opciones y la única forma que he encontrado es guardar un list de los controles del formulario con el orden de tabulación preestablecido,
viernes, marzo 13, 2009
Español de pata negra
Pues nada, pues "Ibérico", pero "pué que haiga otro?", me pregunté con mi español pueblerino de Cuenca. Porque si hay otro igual me cojo español de Guijuelo o español de Pata Negra que también me gusta. Pero no, sólo hay esto:
jueves, marzo 12, 2009
Entrega premios XNA en U.A.
También me gustaría aclarar que algunos medios ha salido que Oscar tiene la 3ª estrella de Microsoft, lo que me hace parecer un capitán ;-), pero bueno, lo dejamos en que soy coordinador del grupo de usuarios de tecnologías Net del sureste español: GUSENET, y cómo pone en mi perfil de este blog, llevo unos años trabajando con tecnologías net para la empresa JPA, que es la que trabajo y la que me permite ese tiempo de incalculable valor para investigar en nuevas tecnologías...
Besos a todos.
he aquí la nota de prensa:
http://ecodiario.eleconomista.es/espana/noticias/1088689/03/09/Un-grupo-de-alumnos-de-la-Universidad-de-Alicante-crea-8-videojuegos-para-su-descarga-gratuita-en-internet.html
o pinchando en el título.
miércoles, febrero 18, 2009
Instalación Windows 7 x64 Beta 1
Día 1: 17/02 - Creo el dvd de instalación e intento ejecutarlo desde vista. No me deja.
Día 2: 18/02 - Lo instalo desde el arranque para que me sustituya Vista. Después de un par de horas se instala pero no me detecta las tarjetas de red (una con el equipo y la externa es una linksys TX100 que no consigo instalar ni con los drivers, aunque curiosamente funcionaba en vista). Me voy a la oficina a buscar una eCom a ver que tal.
Pues sí, la eCom EC1000 me la ha detectado e instalado nada más arrancar. Me ha instalado internet, se ha actualizado y me ha sugerido la instalación de antivirus de una lista. He elegido Karpersky 8.0, que es un preview para windows 7 hasta el 31 de Mayo del 2009.
Día 3: 19/02
Ahora voy a instalar todos los programas que suelo usar:
- Visual Studio 2008 (OK)
- Sql Server 2008 (de momento no me deja, me pide que reinicie (2 veces?) (Ahora me pide el SP1 de Visual Studio).(OK)
- Office 2007 (OK)
- Visual Source Safe 2005 (OK)
- SDK de Silverlight
- Expression Blend 2.0
- Live Mesh, Messenger (OK)
- Aol (No funciona, pero he encontrado "Trillian" que hace la función de AOL )
- CRM de la empresa (eNotas)
Día 4: 20/02
He instalado Visual Studio 2008 en español, pero al instalar el SP1, necesario para Silverlight y SQL Server 2008, me da un error. Posteriormente he instalado el SDK de Windows 7, pero seguimos igual, así que desinstalo todo VS2008 y me bajo la versión en inglés para ver si así no tengo problemas.
Día 5: 21/02
Imposible, no consigo instalar VS2008, así que desisto, las próximas horas las dedicaré a preparar el trabajo y el 23 y 24 intentaré instalar la versión express con el SP1 a ver si funciona o no...
Día 6: 22/02
Ya está, he conseguido instalar VS Studio Express con SP1, C#, Visual Basic y Web developer. Acto seguido he instalado SQL Server 2008 edición developer. Ahora estoy intentado instalar el paquete de Silverlight.
domingo, febrero 08, 2009
Charla de Silverlight 2.0
La charla la enfocaré en 3 puntos.
1.-¿Qué es RIA?, ¿Cómo empezar?
2.-Diferencias con aplicaciones de escritorio.
3.-Técnicas y recursos.
La charla es el día 11 de Marzo sobre las 10:00 de la mañana.
martes, enero 06, 2009
Lector RSS en C# 3.5 y LINQ
Retomando mi actividad normal diaria, me he encontrado con una clase para leer RSS que tenía por ahí guardada y que he retocado para usar LINQ.
Primero he creado una clase con los atributos que necesito y a la que he llamado Articulo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Articulo
{
public DateTime Fecha;
public string Titulo;
public string Contenido;
public string Enlace;
public Articulo()
{
}
public Articulo(DateTime pFecha, string pTitulo, string pContenido, string pEnlace)
{
Fecha = pFecha;
Titulo = pTitulo;
Contenido = pContenido;
Enlace = pEnlace;
}
}
Luego he creado una clase para leer las RSS y que consta de 2 métodos:
- uno público que es el punto de entrada y dónde le pasamos una lista de cadenas que representa cada una de ellas una dirección de subscripción a una RSS
- uno privado que es el que se encarga de ir leyendo cada servidor de noticias.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Xml;
using System.Xml.Linq;
using JPA.XML.Clases.Entidades;
public class LectorRSS
{
public List
{
//Ejemplos de links
//List
//{
// "http://noticiasjpa.blogspot.com/feeds/posts/default",
// "http://dnnotaword.blogspot.com/feeds/posts/default",
//};
List
foreach (String sFeed in feeds)
{
leerRSS(articulos,sFeed);
}
return articulos;
}
private void leerRSS(List
{
try
{
//cargamos el XML a leer.
var feed = XDocument.Load(sFeed);
//la consulta en LINQ:
var result = from c in feed.Root.Elements()
where c.Name.LocalName == "entry" //Selecciono sólo las entradas
select new Articulo //por cada entrada creo un objeto Artículo.
{
Fecha = c.Elements().Where(Fecha => Fecha.Name.LocalName == "published").
Select(Fecha => DateTime.Parse(Fecha.Value)).First(),
Titulo = c.Elements().Where(Titulo => Titulo.Name.LocalName == "title").
Select(Titulo => Titulo.Value).First(),
Contenido = c.Elements().Where(Contenido =>Contenido.Name.LocalName == "content").
Select(Contenido => Contenido.Value).First(),
Enlace = c.Elements().Where(Enlace => Enlace.Name.LocalName=="link").
Select(Contenido => Contenido.Attribute("href").Value).Last()
};
articulos.AddRange(result);
//A continuación tenéis el código sustituído:
//foreach (XElement xElement in ListaArticulos)
//{
// if (xElement.Name.LocalName == "entry")
// {
// Articulo articulo = new Articulo();
// foreach (XElement xElement2 in xElement.Elements())
// {
// switch (xElement2.Name.LocalName)
// {
// case "title":
// articulo.Titulo = xElement2.Value;
// break;
// case "content":
// articulo.Contenido = xElement2.Value;
// break;
// case "published":
// articulo.Fecha = DateTime.Parse(xElement2.Value);
// break;
// case "link":
// foreach (XAttribute xAttribute in xElement2.Attributes())
// {
// if (xAttribute.Name == "href")
// {
// articulo.Enlace = xAttribute.Value;
// }
// }
// break;
// }
// }
// if (articulo.Contenido.Trim() != "")
// {
// articulos.Add(articulo);
// }
// }
//}
}
catch (Exception ex)
{
throw new Excepciones.LectorRSS(ex.Message);
}
}
}