jueves, septiembre 18, 2008

Escribiendo la Sys Layer en Ax 2009

Hoy desarrollando en el trabajo, descubrimos un BUG en Ax 2009. Si, pude escribir en la Sys layer con simples drag and drops.

A continuación pueden ver el video de como reproducirlo.

Si desean bajarlo lo pueden bajar aqui: download Video

martes, septiembre 16, 2008

.Net Model-Driven Development

Encontré dos programas muy interesantes de Model-Driven Development (ambos en beta):

nAML (.NET Application Modeling Language Specification and Tools). Este contiene lógicamente las tools que funcionan con Visio 2003 y también una buena doucumentacion, especificando el modelo, con buenos ejemplos.

URL: http://code.msdn.microsoft.com/naml

Sculpture tiene como interesante que trabaja con varias tecnologias como: DAAB, NHibernate, LINQ, WCF, ASMX, SQL Server, MYSQL..

URL: http://www.codeplex.com/Sculpture

viernes, agosto 15, 2008

12 Tips para escribir Unit Test

Una nota muy piola para conocer rápidamente los principales principios a la hora de escribir test unitarios. Nota: 12 Unit Testing Tips for Software Engineers

Tips:
1. Unit Test to Manage Your Risk
2. Write a Test Case Per Major Component
3. Create Abstract Test Case and Test Utilities
4. Write Smart Tests
5. Set up Clean Environment for Each Test
6. Use Mock Objects To Test Effectively
7. Refactor Tests When You Refactor the Code
8. Write Tests Before Fixing a Bug
9. Use Unit Tests to Ensure Performance
10. Create Tests for Concurrent Code
11. Run Tests Continuously
12. Have Fun Testing!

jueves, julio 31, 2008

Trucos y tutoriales con CSS

Hoy encontré una excelente nota con 50 trucos y tutoriales con CSS. Trucos como por ejemplo, rincones redondeados, menus circulares, Formularios, Footers, PopUp's en CSS, galería de imagenes. Y muchos más el link es: http://www.noupe.com/css/using-css-to-do-anything-50-creative-examples-and-tutorials.html

Y otro truquito para dejar fijos los divs, aunque se mueva el scroll bar.
http://www.dailycoding.com/Posts/creating_always_visible_div_using_css.aspx

lunes, julio 21, 2008

Aprendiendo X++

Hace una semana comencé a trabajar en Microsoft Dynamics AX. La realidad es que es un mundo gigante. Para los desarrolladores que quieren aprender más de negocio es ideal, ese fue mi caso. Igual por el momento, me tengo que capacitar en lo que son herramientas de desarrollo y X++ (el lenguaje de Dynamics AX). Bueno a lo largo de la capitación esta semana me tope con varios blogs y webcast.
A continuación una lista de links para aprender a desarrollar en X++:

Links:
Axapta Source
The Microsoft Dynamics AX Enterprise Portal Blog
Microsoft Dynamics AX - Arijit Basu's Blog
Aprende Dynamics
Steen Andreasen Links
mfp's two cents...on Dynamics AX Development!
Microsoft Dynamics AX UK Blog
Axaptapedia
Trucos AX
Dynamics User Group
Dynamics Mobile

Videos o Webcast:
Arvid Nielsen The Microsoft Dynamics AX Developing Environment
Arvid Nielsen How to Integrate Dynamics AX
Microsoft Dynamics Webcast: Using Development Tools to Personalize Your Microsoft Dynamics AX Solution (Level 100)

Libros encontrados en Google:

CURSO DE PROGRAMACIÓN EN DAMGAARD AXAPTA II
An introduction to Axapta X++

viernes, junio 20, 2008

Navegando el FileSystem desde Desktop a traves de RAPI

A continuación dejo un codigo para poder tomar los directorios y archivos de un dispositivo con WINCE desde una aplicación desktop, por medio de la RAPI.


[Flags]
enum FAF:int
{
FAF_ATTRIBUTES = 0x01,
FAF_CREATION_TIME = 0x02,
FAF_LASTACCESS_TIME = 0x04,
FAF_LASTWRITE_TIME = 0x08,
FAF_SIZE_HIGH = 0x10,
FAF_SIZE_LOW = 0x20,
FAF_OID = 0x40,
FAF_NAME = 0x80,
//FAF_ATTRIB_CHILDREN = 0x80,
//FAF_ATTRIB_NO_HIDDEN = &H2000,
//FAF_FOLDERS_ONLY = &H4000,
//FAF_NO_HIDDEN_SYS_ROMMODULES = &H8000,
//FAF_GETTARGET = &H10000
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
class CE_FIND_DATA
{
int dwFileAttributes;
int ftCreationTimeLo, ftCreationTimeHi, ftLastAccessTimeLo, ftLastAccessTimeHi;
int ftLastWriteTimeLo, ftLastWriteTimeHi, nFileSizeLo, nFileSizeHi;
int dwOID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
string cFileName;
public override string ToString()
{
return cFileName;
}
}

public bool FindAllFiles(string szPath)
{
IntPtr pData;
int cData;
bool bresult;
Create a NEW ceFindData Structure
CeFindData[] myCeFindDataS = new CeFindData[1];
bresult = CeFindAllFiles(szPath, (int)FAF.FAF_ATTRIBUTES | (int)FAF.FAF_NAME, out cData, out pData);
if (bresult)
{
IntPtr p = pData;
for (int i=0; i< cData ;i++)
{
CE_FIND_DATA fd;
fd = (CE_FIND_DATA) Marshal.PtrToStructure(p, typeof(CE_FIND_DATA));
p = new IntPtr(p.ToInt32() + Marshal.SizeOf(typeof(CE_FIND_DATA)));
}
}
return bresult;
}

lunes, junio 09, 2008

30 días de .Net Compact Framework

Chris Craft en su blog, todos los días durante un mes, ira agregando una aplicacion escrita en .Net Compact Framework. Para demostrar que es facil escribir aplicaciones en NetCF. Hasta el momento ya creo las siguientes aplicaciones:

image image image image
Minutes to Midnight Countdown Bluetooth Manager GPS Compass Mileage Tracker
image image image image
Mobile Capture Pocket PasswordGen Mobile FX What will be next?

miércoles, junio 04, 2008

Generando una dll para Compact Framework con CodeDom

Un integrante de mi equipo de desarrollo ( Javier ), ayer logro descubrir que parametros había que ponerle a CompilerParameters, para que después el CSharpCodeProvider genere una dll de .Net Compact Framework.
A continuación dejo el código:

using System;
using System.Text;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using Microsoft.Win32;
using System.IO;
using System.CodeDom;

public partial class CompactAssembly
{

public static void CreateTestDll()
{
StringBuilder sb = new StringBuilder("");

sb.Append("namespace CSCodeEvaler{ \n");
sb.Append("public class CSCodeEvaler{ \n");
sb.Append("public object EvalCode(){\n");
sb.Append("return 1; \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");
CompactAssembly.CompileCompactAssembly(sb.ToString(), "CodeDomGenerated.dll");
}

public static bool CompileCompactAssembly(string codeToCompile, string outAssemblyName)
{
CodeDomProvider csp = new Microsoft.CSharp.CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.OutputAssembly = outAssemblyName;
cp.GenerateExecutable = false;
cp.GenerateInMemory = false;
cp.CompilerOptions = @"/noconfig /nostdlib";
cp.ReferencedAssemblies.Add(Path.Combine(@"C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE", "mscorlib.dll"));
CompilerResults cr = csp.CompileAssemblyFromSource(cp, codeToCompile);
return cr.Errors.Count == 0;
}
}

martes, junio 03, 2008

Microsoft Project Code Named Velocity - CTP1

Microsoft ha sacado a la luz su proyecto en nombre clave Velocity y en su
versión preliminar CTP1. Velocity es una plataforma que permite trabajar con
datos distribuidos en memoria caché dentro de aplicaciones .NET que requieren un
acceso a datos muy rápido en velocidad, escalado y con alta disponibilidad.
La descarga en inglés apenas ocupa 2.5 Mb y la podréis encontrar en este enlace. Dentro de la página de descarga, recomiendo mirar los comentarios acerca de ASP.NET y Velocity. ;-)
También podréis acceder al blog oficial de Velocity en este otro enlace, aunque aún no hay ni una sola entrada. De forma adicional, hay ya disponible un foro técnico y de discusión sobre Velocity en este enlace, aunque al igual que el anterior, no hay aún publicada ninguna información.
Como pode ver, se trata de un proyecto muy muy nuevo, hecho público apenas hace unas horas.
Espero que os resulte interesante.

Fuente: Jorge Serrano - MVP Visual Developer - Visual Basic

viernes, mayo 02, 2008

martes, abril 15, 2008

GET SQL Compact Version

En este post dejo un codigo que encontre para sacar la version del SQL Compact:

internal enum SSCEVersion
{
Unknown,
v3_1,
v3_5
}

internal static SSCEVersion GetDatabaseVersion(string path)
{
uint signature = 0;

using (FileStream stream = new FileStream(path, FileMode.Open))
{
using (BinaryReader reader = new BinaryReader(stream))
{
stream.Seek(16, SeekOrigin.Begin);

signature = reader.ReadUInt32();
}
}

switch (signature)
{
case 0x00357b9d: // 3.5
return SSCEVersion.v3_5;
case 0x002dd714: // 3.1
return SSCEVersion.v3_1;
default:
return SSCEVersion.Unknown;
}
}


Fuente: http://blog.opennetcf.org/ctacke/PermaLink,guid,d839eeb7-2cb6-4842-a504-93d1bab0b0af.aspx

miércoles, marzo 12, 2008

Mobile Blogs

En estos días me ecnotre con blogs muy buenos de desarrollo en dispositivos moviles en CF.

Estos son:

Windows CE Base Team Blog

Christian Helle's Blog

Mobile Development de Raffaele Limosani.

Este último hace escribe una muy buena nota sobre el espacio de memoria en las PPC y por lo tanto consideraciones a la hora de desarrollar en CF: NETCF: Memory leak... now what??

Manetner una Session en Web Services con Compact Framework

Un integrante de mi Team (Diego) encontró en un foro como mantener una sesión cuando se consume un Web Service.

A continuación les dejo links del código:


http://www.alexfeinman.com/download.asp?doc=SessionAwareWebSvc.zip

Mirror: http://www.box.net/shared/static/bjur3eskkg.zip

Lecturas relacionadas sobre web services en CF:

SmartPhone 2003 and .NETcf Primer
SmartPhone (SP) and WebService Enhancements (WSE) with .NETcf

lunes, febrero 25, 2008

Algunas Notas interesantes

Dejo unas notas interesantes que estuve leyendo:

Top-10 Application-Design Mistakes: una muy linda nota que explica los 10 errores típicos a la hora de diseñar una aplicación. Esta pone en claro que un usuario nunca te va a especificar bien y completo un requerimiento.

Digitally Signing an XML Document and Verifying the Signature: como firmar un XML con certificados X509Certificate.

Unity: es el nuevo aplicaction block, de codeplex, este es un inyector de Dependencias, desarrollado por la gente de P&P de Microsoft.

Coolite Ext Js en ASP.Net


Hoy encontre este wrapper de ExtJS para Asp.net,  aparenta muy lindo su nombre es CooLite.

viernes, febrero 08, 2008

Mejorando la performance de ASP.NET

A continuación dejo el link de una muy buena nota que da 7 tips de como mejorar la performance de tu portal en ASP.Net 3.5:

TIPS:
Performance Improvement #1: Make it AJAX
Performance Improvement #2: Remove burden from client side
Performance Improvement #3: Initialize Workflow Runtime Engine Once and then Reuse It
Performance Improvement #4: Server-side Multithreading.
Performance Improvement #5: Cache the result
Performance Improvement #6: Client side validation
Performance Improvement #7: Cache on the client side

NOTA: 7 ways to do Performance Optimization of an ASP.NET 3.5 Web 2.0 portal

Haciendo tu propio Lenguaje

Esta nota que cuenta de herramientas, un ejemplito y demas para poder hacer tus propios lenguajes de programación:

The .Net DLR makes building a new language implementation ridiculously easy