Datos personales

domingo, diciembre 11, 2011

Silverlight 5

Buena noticia para todos los que usamos Silverlight en nuestros desarrollos, desde hoy tenemos Silverlight 5 disponible para descargar en:

http://www.silverlight.net/downloads

para saber más en:
http://www.silverlight.net/learn/overview/what%27s-new-in-silverlight-5

y para conocer las novedades en:
http://msdn.microsoft.com/en-us/library/gg986857%28v=VS.95%29.aspx

viernes, diciembre 02, 2011

Algoritmo extendido de Euclides

Haciendo algunos ejercicios criptográficos tenía que firmar digitalmente con elGamal los mensajes a enviar y para ello necesitaba calculo el inverso de a módulo n, así que:

os dejo un algoritmo para encontrar el inverso de a módulo n cuando mcd(a,n)=1.

     /// <summary>  
/// Algoritmo extendido de Euclides
/// </summary>
/// <returns>devuelve x tal que ax mod n=1, donde "0<a<n" ></returns>
static private int algoritmo(int a, int n)
{
List<int> g=new List<int>();
g.Add(n); g.Add(a);
List<int> u = new List<int>();
List<int> v = new List<int>();
u.Add(1); v.Add(0);
u.Add(0); v.Add(1);
int i = 1;
while (g[i] != 0)
{
//g[i] = u[i] * n + v[i] * a;
int y = g[i - 1] / g[i];
g.Add(g[i - 1] - y * g[i]);
u.Add(u[i - 1] - y * u[i]);
v.Add(v[i - 1] - y * v[i]);
i++;
}
int x = v[i - 1];
if (x > 0)
{ return x; }
else { return x + n; }
}

viernes, noviembre 04, 2011

Silverlight 4 OOB evento Closing

Existe un problema con el evento Closing en Silverlight 4. El problema es que el evento Closing a veces se dispara y a veces no,

Application.Current.MainWindow.Closing -= MainWindow_Closing;

¿y por qué?, parece ser que antes del evento, el objeto Application.Current.MainWindow
se larga a papelera y es destruido por el Garbage Collector.

No me he resistido a subir la solución al blog ya que me he pasado un buen rato esta mañana buscando la causa del problema para solucionarlo, al final la he encontrado y comparto una posible solución con ustedes.

La solución es crear un objeto estático (static object _mainWindow;) que almacene esta ventana y así conseguimos cancelar el cierre de la ventana si por ejemplo, queremos que ésta esté bloqueada al mostrar una ChildWindow, estemos haciendo un upload, un download o reproduciendo una canción:

if (Application.Current.IsRunningOutOfBrowser && Application.Current.HasElevatedPermissions)
{
_mainWindow = Application.Current.MainWindow; // con esto queda solucionado.
Application.Current.MainWindow.Closing += MainWindow_Closing;
}

sábado, mayo 07, 2011

Traductor catalán-castellano con "scraping"

Si tenéis problemas con el catalán por algún motivo y necesitáis un traductor en tiempo real "by the face", aquí os dejo un extracto de un programilla que traduce del catalán al castellano a partir del traductor de google. Si os fijáis bien en la técnica, se puede modificar para traducir cualquier idioma que soporte el traductor de google ("esta técnica la saqué de un lector "by the face" de cotizaciones de bolsa en tiempo real de yahoo").

Llamada al servicio:

private string llamarServicio(string palabra,string sourceLanguage, string targetLanguage)
{
//palabra: abat
//sourceLanguage: ca
//targetLangauge: es
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "hl=" + targetLanguage;
postData += ("&sl=" + sourceLanguage);
postData += ("&tl=" + targetLanguage);
postData += ("&q=" + palabra);

WebRequest request = WebRequest.Create(
"http://translate.google.es/?" + postData);
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
WebResponse response = request.GetResponse();
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("Windows-1252"), true);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Clean up the streams and the response.
reader.Close();
response.Close();
return responseFromServer;
}

y ahora la llamada la búsqueda del resultado con la expresión regular:

internal string scrapeIdioma(string texto, string cadenaABuscar)
{
//texto es el código fuentes de la página web que nos devuelve la
//función anterior
//cadenaABuscar es la expresión regular:
//"(this.style.backgroundColor='#fff'\">(\\w+))"
Regex _regex;
_regex = new Regex(cadenaABuscar, RegexOptions.Compiled | RegexOptions.IgnoreCase);
Match match = _regex.Match(texto);
if (match.Success && match.Groups.Count>1)
{
return match.Groups[2].Value.ToString();
}
return "";
}

Pues eso, cualquier duda os la resolveré sin problemas.

domingo, abril 10, 2011

Windows Phone 7, Android e IOS (I)

Hace poco más de un mes y ante la posibilidad de disponer de algún recurso más en la oficina, me he tirado al ruedo y he puesto en marcha un proyecto para "Mobile", que ofrezca un valor añadido a nuestros clientes de "algo" que ya disponemos. Este proyecto tan sólo se hace por curiosidad y para unirme al tren de las aplicaciones para los llamados "smartphones".

Análisis
Antes de nada y ante la variedad de los distintos dispositivos con sus distintos SO tuve que tomar una decisión de por donde empujar y como afrontar un proyecto tan variopinto y con tantas diferencias de implementación.

Lo primero es informarme del "cómo" y para eso busqué en la red para encontrar estos links que me han parecido los más interesantes para empezar:

Windows Phone 7
http://channel9.msdn.com/Blogs/channel9spain/Windows-Phone-7-herramientas-de-desarrollo-y-vender-en-MarketPlace
http://create.msdn.com/es-ES/
http://msdn.microsoft.com/en-us/WP7TrainingCourse
IOS
http://developer.apple.com/devcenter/ios/index.action
http://www.maclatino.com/tutoriales-iphone-sdk-y-%C2%A1en-espanol/
http://www.migueldiazrubio.com/2010/11/08/desarrollo-ios-10-sencillos-pasos-para-desarrollar-un-proyecto-para-iphone/
http://www.codeproject.com/KB/iPhone/iOSGetStarted00.aspx

Una vez que conozco las distintas tecnologías y terminado el análisis empezamos con el diseño de la aplicación, pero antes de nada hay que investigar con las distintas herramientas y la facilidad de desarrollo que me ofrecen.
Windows Phone 7
Personalmente y siendo un SO de Microsoft, me supone la herramienta más fácil para desarrollar ya que conozco como funciona porque la uso en el día a día en mi trabajo. Para desarrollar una aplicación para WP7 necesitaremos Visual Studio 2010 y el SDK de Windows Phone que podemos descargar desde la plataforma de desarrollo MSDN, tenemos un sin fin de recursos para empezar con él. También recomiento el tutorial de Oskar Alvarez, que es muy completo y lo va publicando en su blog de geeks.
Mencionar que WP7 nos permite 2 formas de desarrollo para su plataforma: Silverlight para WP7 y XNA para desarrollo de videojuegos. El lenguaje con el que trabajo es C# por lo que Silverlight me viene de perlas porque además conozco algo del framework, pero ojo aquí hay que conocer también algo de XAML que no supondrá muchos problemas porque en el sdk también nos incorpora la aplicación Expression Blend 4 para el diseño grafico.
Por estas facilidades, el diseño de la aplicación y los algoritmos de cálculo (capa lógica) se han realizado con UML den MagicDraw y se han pasado a C# en VS2010 con su correspodiente proyecto de test.
Android
Con Android he empezado a tener problemas, trabajo normalmente con tecnologías Microsoft y claro, plataforma nueva, lenguaje nuevo, problemas nuevos... Tengo la suerte (y el dinero que me sangran) de estudiar en la UOC y en la UOC casi el 100% de la práctica se desarrolla con Java y Eclipse, por lo que conozco esta plataforma de antemano.
Para Android hay que bajarse Eclipse y las SDK de desarrollo para Android. Un consejo, la versión 2.2 es la más estable (la 3.0 es una locura y de la 2.3 no he visto mucho smartphone). Empezamos el desarrollo con la 3.0 y nos encontramos con muchos problemas, cuelgues, lentitud, errores raros, etc... Cuando queríamos intentamos buscar un smartphone razonable y estándar para hacer pruebas nos encontramos con que la versión más extendida era la 2.2, por lo que bajamos hasta la 2.2 con muy pocas adaptaciones para seguir con el proyecto.
Android ha sido el seleccionado para la primera implementación.
IOS
Poco, muy poco puedo contar de IOS y su desarrollo, la implementación la he dejado para el final, sobre todo cuando he visto que el SDK para Windows está por detrás del de Apple, así que he empezado por lo primordial, conseguir un portátil MAC e informarme un poco sobre la plataforma de desarrollo, que según tengo entendido se llama XCode y pose un framework para IOS llamado Cocoa Touch y que el lenguaje de desarrollo es con Objective-C aunque permite otros lenguajes pero ahora mismo ni idea
Esta semana es la elegida para empezar con la implementación, así que en los próximas días tendré más información.

miércoles, marzo 02, 2011

MAP 2011

Bueno, me ha llegado el mail nombrándome MAP, doy gracias a los que lo han hecho posible. LLevo muchos años con tecnologías Microsoft y apoyando el grupo de usuarios, colaborando con el que me solicita ayuda y divulgando lo que sé mediante este blog, y ahora me ha llegado este renocimiento, así que muchas gracias.












http://image.email.microsoftemail.com/lib/fec4157370600275/m/3/ESP11076_03_Webversion.html

Etiquetas

.net (1) ALGORITMO (4) algoritmos (1) Android (1) angular (2) aplicaciones WEB (1) ARGENTINA (1) ASP (4) asp .NET (1) ASP .NET Identity (1) attach (1) Azure (1) base de datos (1) BINDING (1) BioInformática (2) bootstrap (1) C (2) C# (27) castellano (1) catalán (1) Charla (1) CheckedListBox (1) Clase (1) clausura transitiva (2) CLIENTES (1) Closing (1) Combobox (1) Comisiones (1) CONCURSO (1) condones (1) consultas (1) corrupta (1) CORS OWIN (1) CORS WEB API 2 (1) Criptografía (1) CUENTA NARANJA (1) Custom Control (1) Daniel Seara (1) DATAGRIDVIEW (1) David Salgado (2) dendrograma (6) depurar (1) desarrollo (1) Deserializar (1) DEVCAMP (2) durex (1) e-DNI (1) el Guille (2) Eladio Rincón (1) elGamal (1) encriptación (1) encuesta (1) Entidad (1) ERROR (2) error 3624 (1) España (1) España es nido de víboras. (1) Euclides (1) Euclides extendido (1) evento (1) eventos. (1) factorización (1) factorizar (1) física (1) Framework 2.0 (1) Framework 3.5 (5) Framework 4 (2) Francisco González (1) Francisco Ruiz (1) GO (1) google (1) gossip (1) Grupos de usuarios (1) Guadalajara (1) Guille Comunity Tour (2) Gusenet (9) GUSENET. (1) Huelga informáticos (1) IBEX 35 (1) Idioma (1) IFT (1) IISExpress (1) Indice de Fuerza Tecnica (1) informática (1) Informix (1) ING DIRECT (1) INGDIRECT (1) Ingeniería Informática (2) Inteligencia artificial (5) Intro (1) IOS (1) IPad (1) IPhone (1) IV Aniversario (1) JavaScript (2) JPA (2) keybd_event (1) LA CAIXA (1) La Pineda (1) ladroentidad (1) Lector RSS (2) LINQ (5) LINQ2XML (1) ListBox (1) Live Distributed Objects (1) llenar (1) LOG (1) Madrid .NET (1) MainMenu (1) MAP (1) MAP 2011 (1) MAR DEL PLATA (1) matemáticas (1) Matriculación (1) MDIList (1) MdiWindowsListItem (1) MenuItem (1) MenuStrip (1) Microsoft (18) Microsoft Active Professional (1) Miguel Egea (2) MSDE 2 (1) MSDE 2000 (1) MVVM Light (2) mysql (1) NAMESPACE (1) Needleman (2) NET (1) NS (1) Oferta empleo (1) Office 14 (1) Office 2007 (1) Office 2009 (1) ON ERROR (1) OOB (1) Oscar Montesinos (1) OWIN (1) OWIN Security middleware (1) Paginación (1) PDC (1) Pedro Hurtado (1) PINTARTECA (1) PrinterSettings (1) Process (1) ProcessStartInfo (1) Programador (1) Relacional (1) robo (1) RSS (1) Rubén Garrigós (1) Salvador Ramos (1) Santa Pola (1) scrape (1) scraping (1) ScrollBar (1) Secretaría (1) SendInput (1) SENDKEYS (1) Sergio Vázquez (1) Serializar (1) Silverlight 2.0 (2) Silverlight 4 (1) Silverlight 5 (3) Silverlight. (1) Sindicado (1) Sistema Personal de Trading (3) Sistemas Distribuidos (1) SOLID SUMMIT 2009 (1) SPT (2) SQL Server (3) SQL Server 2000 (2) SQL Server 2005 (2) SQL Server 2008 (3) SQL Server Denali (1) SQL Server Information Services. (1) SQLU (1) SSIS (1) SUMMIT SQL (1) Suspect (1) Syndication (1) TAB (1) Tablas (1) Tarragona (1) Token bearer (1) ToolStripMenuItem (1) ToString() (1) Traductor (1) transacciones (1) treeview (1) truco (1) TRY CATCH (1) UCI (1) Unience (2) Universad (1) Universidad Oberta Catalunya (2) UOC (8) Usuarios. (1) VB (1) VB6 (1) VB9 (1) VIAJAR (1) Vila-seca (1) VISUAL BASIC (3) Visual Basic. (1) visual studio (1) Visual Studio 2005 (1) Visual Studio 2008 (16) Visual Studio 2010 (2) Visual Studio 2013 (1) VS2010 (1) VSTA (1) VSTO (1) WCF (1) WEB API (1) web.config (1) WebClient (1) WF (1) windows (1) Windows 7 (3) Windows 8 (2) Windows Azure (1) Windows pone (1) Windows Server 2008 (1) Windows Vista (1) woff (1) WP7 (1) WPF (1) Wunsch (2) XAML (4) XDocument (1) XElement (1) XML (3) XNA (1) Yield (2)