2007-10-17
Zero mail inbox
2007-10-10
Conferencia sobre UBL
UBL: Universal Business Language; estándar OASIS
· Diccionario de datos normalizado
· Definiciones estándar de las palabras clave
· Extensible de varias formas
Caso práctico de integración de procesos de negocio usando UBL 2.0; gobierno danés
· ¿Qué cubre UBL?
o “Sourcing” (catálogo, precios, etc…)
o “Pedidos” (pedido, respuesta a pedido, cambio de pedido, etc…)
o “Fulfillment” (albarán, certificado de origen, recibo de entrega, …)
o “Facturación”
· Novedad en UBL 2.0: “Profiles”. Especifican el acuerdo acerca de qué se va a intercambiar; la diferencia con EDI es que no hay que firmar acuerdos en papel
o El perfil se escoge de entre los posibles ofrecidos por el receptor de la transacción, en un registro común
Proyecto CODICE: Dirección General del Patrimonio. COmponents y DOcumentos Interoperables para la Contratación Electrónica
· Objetivo: mercado europeo de e-Procurement sin problemas de interoperabilidad
o Directiva europea 2004/18/EC y futura ley de contratación pública “ley de contratos del sector público”
o Inspirado por el proyecto de EU IDABC (documento de requisitos), además de los estándares
§ ISO 15000 ebXML Core Components Technical Specifications
§ UBL
· Librería de documentos definidos a partir de sus componentes, que se buscan y encuentran en UBL, y a partir de los procesos que forman parte de la contratación pública.
· Librería de componentes que son una extensión de la librería UBL
· Todo disponible en www.meh.esd
DocOnTime: Implementación de factura electronica en las empresas
· Problema: formato de las facturas
o Propietarios
o Nacionales (el de la AEAT no tiene aspiración de trascender fronteras)
o Internacionales: UBL, ojo que tiene problemas de semántica e interpretación
Future of UBL (Port Community Systems, Australia – miembro OASIS)
· No hay previsión de ninguna nueva versión, únicamente revisiones menores
· XML (CBL) + EDI (Edifact, X12) = ebXML
· ebXML + XCBL = UBL
· UN/CEFACT apoya UBL 2.0, pero producirá su propio conjunto de esquemas xml en los próximos años, que podrán derivar del actual UBL
· La librería UBL y la UN/CEFACT Core Component Library se alinearán en 2008, es decir, se definirá y mantendrá la relación entre ambas bibliotecas de componentes “core”
Integración entre UBL y CCI-AEAT (Fundetec)
· 2010: Toda la administración debería estar preparada para recibir factura electrónica
· CCI-XML es el único formato aceptado legalmente por la admon.
· La factura electrónica tiene que estar firmada digitalmente; existe disparidad en formatos y autoridades certificadoras
· Soluciones:
o Se desarrollará la correspondencia CCI-UBL
o Se desarrollará un directorio de empresas que aceptan factura electrónica y en qué formato, mantenido por el ministerio de industria y accesible vía WS o web
o El DNI electrónico se implantará en 2 años
o Desarrollo de librerías open-source para facilitar la integración en software existente de estos formatos
El papel de las entidades financieras en la adopción de e-factura (Eurobits)
· Eurobits
o Eurobits fue creada por Caja Madrid y Bankinter
o Suministra servicios de factura electrónica, agregación de cuentas, … via web-services
· El papel de los bancos
o Pueden abstraer a sus clientes de las complejidades tecnológicas
o Pueden absorber el coste porque pueden obtener beneficios por otro lado
o La relación entre el banco y sus clientes (proveedores y consumidores) no es trivial, está próxima al negocio
o Los bancos están acostumbrados a integrarse con los sistemas de pago de diversas empresas
· Retos
o Interoperabilidad
o Promoción de estándares abiertos
2007-05-12
Acerca de SOA
Este ser humano es, por cierto, el autor de "Enterprise Integration Patterns" y tiene un artículo muy simpático llamado "Your Coffee Shop Does Not Use Two-Phase Commit" que salío publicado el año pasado en la revista Software de IEEE en el que explica que un sistema que tiene que tener gran capacidad tiene que abandonar cosas como el 2pc por el camino.
Resumo los puntos que me parecieron interesantes de su presentación:
1. ¿Qué es SOA?
- Es un estilo de arquitectura, en el que las interacciones entre sistemas están orientadas a documentos es decir, están autocontenidas en un alto grado
- Bajo nivel de acoplamiento, se puede cambiar un servicio internamente sin que los consumidores del servicio se enteren
- Las interfaces están claramente especificadas
Principalmente en los sistemas distribuidos el objetivo hasta ahora, en arquitecturas previas, era ocultar la complejidad al desarrollador; es decir: el código remoto es exactamente igual que el código local. Este enfoque ignora:
- latencia de la red
- redes desconectadas intermitentemente
- inexistencia de referencias (punteros)
- alto acoplamiento entre sistemas
Así surgió la "orientación a servicios"; no existen interacciones complejas (polimorfismo, referencias, etc...) sino interacciones simples, autocontenidas, basadas en un documento que normalmente es XML y, más apropiadas para ser asíncronas.
3. ¿Cómo está la situación ahora?
El hecho es que este es un nuevo modelo de programación; y las herramientas actuales son bastante primitivas todavía. Está por ver si llegan a ser como las que tenemos para los lenguajes tradicionales. Es cierto que aparentemente se puede programar gráficamente un proceso de negocio y demás pero... ¿cómo se buscan las diferencias entre este proceso y su versión anterior? ¿hay algo similar a diff o merge para los diagramas? y si, quizás no haya que programar mucho hasta que hay que hacer algo "avanzado", en ese momento ya hay que programar y, de todas maneras, programar gráficamente puede ser algo bastante complicado.
Es interesante también el artículo "Developing in a SOA World", que contiene la mayor parte de las ideas de la presentación.
2007-02-25
2006-11-30
WS-AT en .Net framework v3
La documentación sobre “Windows Communication Foundation” está en http://msdn2.microsoft.com/en-us/library/aa388579.aspx y, en concreto, la parte en la que hablan de ws-at es http://msdn2.microsoft.com/en-us/library/ms729784.aspx
Al parecer, crear un “servicio” con este nuevo modelo de programación es algo tan sencillo como esto:
El código:
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
[ServiceContract]
public interface IEcho
{
[OperationContract]
string Echo(string s);
}
public class MyService : IEcho
{
public string Echo(string s)
{
return s;
}
}
class Program
{
static void Main(string[] args)
{
string baseAddress = "http://localhost:8080/wcfselfhost/";
ServiceHost host = new ServiceHost(typeof(MyService), new Uri(baseAddress));
// Create a BasicHttpBinding instance
BasicHttpBinding binding = new BasicHttpBinding();
// Add a service endpoint using the created binding
host.AddServiceEndpoint(typeof(IEcho), binding, "echo1");
host.Open();
Console.WriteLine("Service listening on {0} . . .", baseAddress);
Console.ReadLine();
host.Close();
}
}
La configuración (web.config o app.config)
<configuration>
<system.serviceModel>
<services>
<service name="MyService" behaviorConfiguration="HttpGetMetadata">
<endpoint address="echo2" contract="IEcho" binding="basicHttpBinding" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="HttpGetMetadata">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Por cierto, MS ha tenido la amabilidad de desarrollar unas “Visual Studio 2005 extensions for .Net framework 3.0” que supongo que facilitarán el desarrollo de estos “servicios”
2006-09-28
Miranda IM para Jabber
Para instalarlo no hay más que bajarlo de www.miranda-im.org, desactivar todos los plugins que no usemos (AIM, ICQ...) y configurar la cuenta jabber.
Lo único que eché de menos después es la posibilidad de que me avisase sin incordiar de que hay mensajes nuevos (el típico aviso no-obtrusivo). Para ello hay que instalar dos plugins:
- Message Notify es el plugin que "genera los eventos"
- Popup Plus es el plugin que, cuando se produce un evento, muestra unos bonitos mensajitos emergentes
2006-08-07
Features Provided by System.Transactions
¿no deberíamos echarle un ojo a esto? ¿incluye a los Enterprise Services?
2006-06-19
la burrocracia
2006-06-17
Visita a microsoft
El jueves hicimos una visita a los chicos de microsoft en su sede de madrid. La visita fue bastante provechosa.
2006-06-13
Un wiki para llevar puesto
- Para tomar notas en clase (student edition)
- Con un extraño sistema de tags (tagglytagging)
De cualquier manera en las webs anteriores explican cómo usarlo. Teniendo esto... ¿para qué quieres el Word? Si lo piensas, esto equivale a tener ¡¡el propio word incluido en el documento!!!
2006-05-22
The LINQ Project
Sobre el O/R Mapping, nada nuevo: igual que Java 5 EE, la "solución" pasa por decorar los atributos y métodos con la información necesaria para hacer la correspondencia (véase DLinq Overview.doc)
2006-04-05
O/R Mapping: recapitulemos
Desde la wikipedia (buen artículo, con decenas de enlaces) he llegado a un artículo que realmente explica en detalle el tema: Mapping Objects to Relational Databases: O/R Mapping In Detail .
Ahora es un poco tarde, pero el fin de semana me lo voy a leer para ver si en el ECC faltan cosas importantes. Además la wikipedia ofrece un montón de enlaces por los que aún no he podido navegar...
2006-03-24
Java Expo
Tino y yo estamos recién llegados de la Java Expo en Madrid. A continuación resumo mis notas de estos tres días:
NetBeans
Con diferencia el producto más publicitado; se nota que el evento estaba dirigido a programadores y que se la herramienta se la han currado bastante.
- Ajax: presente en varios componentes de interfaz de usuario web del netbeans. Recomiendan además usar algún toolkit como Dojo aunque no uses netbeans
- BPEL: El estándar actual es WS-BPEL 2.0 (Oasis). Permite diseñar los procesos de negocio gráficamente y por detrás la herramienta mantiene el BPEL
- Web: Soporta Struts y WSF en la versión 5.0, que son los frameworks más usados para desarrollo de páginas JSP. Pensados para que se siga el patrón Model-View-Controller. El más reciente es JSF (Java Server Faces) por cierto
- Plugins: Es totalmente extensible y modular. Se pueden encontrar plugins de todo tipo en netbeans.org, nbextras.org y en blogs.sun.com/scblog o este otro blog.
- Otras virguerías: (algunas son packs que hay que instalar) Profiling, UML sincronizado con el código, editor de aplicaciones Swing (Matisse) muy mejorado, muchos refactorings, utilidades de colaboración y trabajo en grupo, prueba unitaria con JUnit, los proyectos son archivos ANT para permitir fácilmente la integración continua....
Java 5
Se enfoca sobre todo en la facilidad de desarrollo, ya que J2EE 1.4 obliga a conocer muchas APIs y ficheros de configuración y deployment.
- Es más facil desarrollar: APIs más sencillas, anotaciones y uso de POJO (Plain Old Java Objects)
- O/R Mapping: gracias al uso de anotaciones es posible especificar en el código la información suficinente para que un EJB sea persistente en una b.d. relacional
- Web-Services: también simplificados gracias a las anotaciones
Glassfish
Es el servidor de aplicaciones gratuito que implementa Java EE 5.0. Consúltese The Aquarium
Preguntas
- El nuevo servidor de aplicaciones GlassFish de Sun, es gratis, pero... ¿es posible usarlo en producción o daría algún problema?
- ¿cómo gana dinero Sun, si todos sus productos son gratuitos y open source?
Fotos
2006-03-11
2006-02-23
abrir un fichero con process start
Primero lo intentamos abrir con "Process.Start", y luego usamos el handle que devuelve para poner la ventana delante. El problema es que si la aplicación ya estaba abierta, no devuelve nada así que lo que hacemos es buscar una ventana en cuyo título aparezca el fichero que queremos abrir...
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace cancelarConexiondeRed
{
/// <summary>
/// Descripción breve de Class1.
/// </summary>
class Class1
{
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern bool SetWindowPos(
IntPtr hWnd, // window handle
IntPtr hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
uint uFlags); // window positioning flags
public const int HWND_TOP = 0x0;
public const int HWND_TOPMOST = -1;
public const int HWND_BOTTOM = 0x1;
public const uint SWP_NOSIZE = 0x1;
public const uint SWP_NOMOVE = 0x2;
public const uint SWP_SHOWWINDOW = 0x40;
[DllImport("user32.dll")]
static extern IntPtr SetActiveWindow(IntPtr hWnd);
[DllImport("user32.dll", SetLastError=true)]
static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab);
[STAThread]
static void Main(string[] args)
{
Process ventana = Process.Start(@"u:\teclas.txt");
Console.ReadLine();
if (ventana!=null)
SwitchToThisWindow(ventana.MainWindowHandle, true);
else
{
Process[] myProcesses = Process.GetProcesses();
foreach(Process myProcess in myProcesses)
{
if (myProcess.MainWindowTitle.IndexOf(@"u:\teclas.txt") != -1)
{
SwitchToThisWindow(myProcess.MainWindowHandle, true);
break;
}
}
}
}
}
2006-02-22
Mejoras de seguridad en Service Pack 2
2006-02-15
copiar ficheros en plan guay...
Me he hecho una aplicacioncita de consola que va copiando un fichero e imprimiendo el progreso y la verdad es que mola; sería algo así:
class Class1
{
[STAThread]
static void Main(string[] args)
{
FileRoutines.CopyFile(new FileInfo(@"U:\Correo\P5567backup.pst"),
new FileInfo(@"\\vclsfls1\rpos\RPOS103\prueba\P5567.pst"),
CopyFileOptions.Restartable,
new CopyFileCallback(ActualizarProgresoDeCopia)); //este nosotros no lo usaremos, aunque mola!
}
public static CopyFileCallbackAction ActualizarProgresoDeCopia(FileInfo source, FileInfo destination, object state, long totalFileSize, long totalBytesTransferred)
{
Console.WriteLine("Bytes copiados: " + totalBytesTransferred.ToString());
return CopyFileCallbackAction.Continue;
}
}
He comprobado que, efectivamente, si lo cortas a la mitad (paras el programa) y luego simplemente vuelves a intentar la copia, el proceso continúa desde donde lo dejó.
Ahí va la clase "FileRoutines", muy elegantemente implementada...
public sealed class FileRoutines
{
public static void CopyFile(FileInfo source, FileInfo destination)
{
CopyFile(source, destination, CopyFileOptions.None);
}
public static void CopyFile(FileInfo source, FileInfo destination, CopyFileOptions options)
{
CopyFile(source, destination, options, null);
}
public static void CopyFile(FileInfo source, FileInfo destination, CopyFileOptions options, CopyFileCallback callback)
{
CopyFile(source, destination, options, callback, null);
}
public static void CopyFile(FileInfo source, FileInfo destination, CopyFileOptions options, CopyFileCallback callback, object state)
{
if (source == null) throw new ArgumentNullException("source");
if (destination == null)
throw new ArgumentNullException("destination");
if ((options & ~CopyFileOptions.All) != 0)
throw new ArgumentOutOfRangeException("options");
new FileIOPermission(FileIOPermissionAccess.Read, source.FullName).Demand();
new FileIOPermission(FileIOPermissionAccess.Write, destination.FullName).Demand();
CopyProgressRoutine cpr = callback == null ? null : new CopyProgressRoutine(new CopyProgressData(source, destination, callback, state).CallbackHandler);
bool cancel = false;
if (!CopyFileEx(source.FullName, destination.FullName, cpr, IntPtr.Zero, ref cancel, (int)options))
{
throw new IOException(new Win32Exception().Message);
}
}
private class CopyProgressData
{
private FileInfo _source = null;
private FileInfo _destination = null;
private CopyFileCallback _callback = null;
private object _state = null;
public CopyProgressData(FileInfo source, FileInfo destination, CopyFileCallback callback, object state)
{
_source = source;
_destination = destination;
_callback = callback;
_state = state;
}
public int CallbackHandler(
long totalFileSize, long totalBytesTransferred,
long streamSize, long streamBytesTransferred,
int streamNumber, int callbackReason,
IntPtr sourceFile, IntPtr destinationFile, IntPtr data)
{
return (int)_callback(_source, _destination, _state, totalFileSize, totalBytesTransferred);
}
}
private delegate int CopyProgressRoutine(
long totalFileSize, long TotalBytesTransferred, long streamSize,
long streamBytesTransferred, int streamNumber, int callbackReason,
IntPtr sourceFile, IntPtr destinationFile, IntPtr data);
[SuppressUnmanagedCodeSecurity]
[DllImport("Kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
private static extern bool CopyFileEx(
string lpExistingFileName, string lpNewFileName,
CopyProgressRoutine lpProgressRoutine,
IntPtr lpData, ref bool pbCancel, int dwCopyFlags);
}
public delegate CopyFileCallbackAction CopyFileCallback(FileInfo source, FileInfo destination, object state, long totalFileSize, long totalBytesTransferred);
public enum CopyFileCallbackAction
{
Continue = 0,
Cancel = 1,
Stop = 2,
Quiet = 3
}
[Flags]
public enum CopyFileOptions
{
None = 0x0,
FailIfDestinationExists = 0x1,
Restartable = 0x2,
AllowDecryptedDestination = 0x8,
All = FailIfDestinationExists Restartable AllowDecryptedDestination
}
}
2006-02-09
Para leer: Novedades de .net
2006-01-19
FREE PDF Reader for Everyday Use
2006-01-18
MSDN .NET Framework Developer Center: The LINQ Project
2005-12-15
Me gusta mi teclado...
Ya hace tiempo que vengo usando slickrun como sustituto de "Inicio - ejecutar..." porque me permite definir mis propios comandos rápidos (por ejemplo, tengo un comando proy que abre directamente el proyecto CGDN+ que se le pase como parámetro).
Hoy he descubierto qliner hotkeys, que es la forma más fácil que he visto nunca de tener combinaciones de teclas asignadas a programas o acciones. Te pinta un teclado en la pantalla al darle durante más de 3 segundos a la tecla "win", y permite asignar accesos directos (outlook, explorer, mis documentos) a combinaciones de la tecla "win". Super guay.
2005-12-12
Tendencias en desarrollo de software
Plataformas y lenguajes:
- Windows y Linux siguen dominando como plataformas
- Unix (open o mainframe) cede terreno ante Linux
- Los lenguajes que crecen en popularidad (Java, C#, VB.net, Python y Ruby) tienen en común que están orientados a objetos y que corren en entornos "gestionados" (máquinas virtuales), con características que los hacen más sencillos (garbage-collection, ausencia de punteros...)
- C y C++ se ven constantementes desplazados por Java y, más recientemente, C#
Métodos y técnicas de desarrollo
- El modelado (de datos y procesos) está encontrando uso en la práctica, más allá del entorno académico al que se restringía hasta hace poco
- Las herramientas y técnicas de prueba también están empezandose a adoptar de forma generalizada, aunque aún queda un largo camino
Tendencias
- Open source está ganando una gran importancia (Eclipse), aunque Microsoft dada su posición dominante no está en absoluto amenazada
- De las tecnologías más recientes, únicamente los web-services han satisfecho las expectativas de adopción por parte de la comunidad de desarrollo
Ajax - ¿qué hay de nuevo?
¿Qué es AJAX? en la wikipedia viene una serie de definiciones y ejemplos; básicamente se trata de cargar partes de una página dinámicamente usando ciertas funciones javascript disponibles desde IE5.5 (XMLHttpRequest). Eso permite a un programador ingenioso hacer aplicaciones web más amigables, ya que simulan funcionar como una aplicación pc clásica (véase gmail, flickr, etc...)
¿Qué tenemos hoy en día para programar con AJAX sin necesitar a un super-experto en programación? pues, aunque aún es software beta; microsoft tiene preparado "Atlas", un conjunto de librerías y utilidades (pensadas, como no, para ASP.NET 2.0) que permiten (en teoría) diseñar una interfaz de usuario a base de drag and drop con toda la potencia del AJAX.
Para el que quiera profundizar...
2005-10-19
SlickUpload: Subir ficheros indicando el progreso
pero realmente no muestra el progreso de subida, sino el progreso del almacenamiento en disco... parece que SlickUpload sí muestra el verdadero progreso.
Seguiremos investigando.
2005-09-26
El misterio de los add-ins de Office, resuelto
Para que Visio sepa qué add-ins hay y demás hay una rama del registro concreta en la que se almacenan simplemente sus nombres, y la forma de carga. Ahí va un ejemplo:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Visio\Addins\VisioAddIn.Connect]
"Description"="Cliente para Visio RPOS"
"FriendlyName"="Cliente Visio RPOS"
"LoadBehavior"=dword:00000003
La clave es el "LoadBehavior", que indica si deshabilitar o no el add-in. En nuestro caso necesitamos un 3.
2005-07-17
Artículo en MSDN: Aislar IU de la capa de negocio
Este UIP App Block me ha recordado enormemente al multicanal. ¿lo sustituye? ¿lo complementa?
2005-07-05
probando flickr
2005-06-15
Métricas interesantes de General Electric
- First Time Right: es el porcentaje de componentes (documentos, módulos, lo que se defina) que se entregan bien a la primera.
- On Time Delivery: porcentaje de componentes entregados en el plazo previsto
- Coste de la calidad: tiempo dedicado a peer reviews y a arreglar errores encontrados en UAT o en Peer Reviews
- SPAN: desviaciones en tiempo
- Tenemos que empezar a pensar en gestionar nuestros proyectos en base a entregables
- La relación con nuestros proveedores debe ser un poco más "seria"
2005-06-02
Ajax.NET - Llamadas a servidor desde cliente ¿bien hechas?
Ajax.NET - The free library for .NET (C#)
Parece ser el truco de obtener cachos de la página con XML pero bien hecho, integradito con el resto de la página asp.net. Si es así, ¡mooola!
2005-05-30
El diseño es el código: Un ensayo de Jack W. Reeves
Vale, ¿y esa idea para qué nos sirve? quizá debamos reflexionar sobre la forma en la que las empresas de software entienden su proceso productivo: unos señores diseñan todo lo que pueden y luego otros programan cuasi-mecánicamente. Si entendemos que programar es, en realidad, parte del diseño, quizá (sólo quizá) esta manera de organizar el trabajo no sea la más lógica ¿no?
2005-05-04
del.icio.us
Lo que mas mola es que es super-super-friki, con páginas que no tienen imágenes y con urls que realmente sirven para usar el sistema.
2005-04-15
Datagrid de Windows Forms
http://www.codeproject.com/cs/miscctrl/DataGridZen.asp
2005-03-28
ClickOnce y Dlls COM sin necesidad de registro
Escape DLL Hell: Simplify App Deployment with ClickOnce and Registration-Free COM -- MSDN Magazine, April 2005
¡Impresionante!
2005-03-02
El tiempo en coruña... ¡ahora!
Herramienta para contar líneas de código: CodeCount
Actualización 03-03-2005 13:48
está claro que no sólo nos hacen falta herramientas que cuenten líneas de código, más bien nos interesan herramientas que muestren las diferencias entre dos ficheros (para saber cuántas líneas hay nuevas...) he encontrado al menos dos gratuitas:
Por cierto, me he encontrado con que lo mejor es usar "diff": hay un buen manual disponible.
Nuevo blog - SmartClients
2005-02-24
Cosas sobre Visio
Otro tema interesante es el blog de Visio, mantenido por la lead program manager de Visio. Contiene referencias muy útiles:
- Grupo de noticias sobre desarrollo en Visio
- Visio SDK (un poco cutre, pero trae alguna utilidad y algún ejemplo)
- Buenas prácticas a la hora de capturar eventos de Visio (¿qué es la "Persist Event tool" y para qué sirve?)
2005-02-11
Desarrollo de soluciones .net para Visio
- Developing .NET Smart Clients for Microsoft Office XP; aquí se ve desde cómo generar un add-in en .net, hasta cómo llamar a web-services: http://msdn.microsoft.com/library/en-us/dnoxpta/html/odc_dnscof.asp?frame=true
- Para llamar a Office desde .NET hace falta usar los primary interops. Estos son los problemas que dan: http://msdn.microsoft.com/library/en-us/dnoxpta/html/odc_piaissues.asp?frame=true
2005-02-06
2005-01-31
Eliminar el -Browse With Paint Shop Pro 8- del menú de windows
Estaba harto de esto....
2004-12-03
Breve introducción a NAnt
2004-11-22
Arquitectura Empresarial - Resumen de la presentación de Meta
- Agilidad; tiempos de entrega cada vez más cortos
- Equilibrio entre coste y calidad
- Falta de coordinación entre informática y necesidades del negocio
- Falta de visión a largo plazo
- Sistemas complejos, duplicados
- Mecanismo que integra Sistemas y Negocio
- Principal objetivo: Facilitar el cambio
- Institucionaliza el proceso de análisis y toma de decisiones
- Enfoque en la comunicación a todas las partes involucradas
- Información continua del estado actual y resultados
- Mejora continua de la arquitectura
2004-11-18
Updater Application Block
2004-11-04
PleaseWaitButton ASP.NET Server Control
The Code Project - PleaseWaitButton ASP.NET Server Control - ASP.NET
SQL Server DO's and DONT's
The Code Project - SQL Server DO's and DONT's - C# Database
2004-11-02
HTTP Modules y Handlers para reutilizar componentes en ASP.NET
2004-09-28
Más potencia para las páginas ASP.NET usando herencia
- El evento page_refresh de forma que es posible detectar que un usuario presione F5 (más o menos)
- Control sobre el foco, para poder indicar dónde poner el foco al cargar la página
- Soporte para operaciones lentas, y así indicarle al usuario "un momento, por favor..." mientras se realiza algo largo
todas son cosas que tarde o temprano necesitaremos, y casi mejor incorporalo a una página de las nuestras de forma que eso ya lo tengan todas...
2004-09-16
Enviar datos binarios a un webservice
2004-08-13
Eventos y delegados
Búsqueda en Google adaptada a tus intereses
¡a buscar!
2004-08-09
Mock objects (objetos de mentira)
Este es el link: NMock
2004-08-06
Paginación con listas largas de resultados
2004-07-19
Gestión personalizada de errores en ASP.NET
http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/customerrors.asp
Se me ocurren las siguientes preguntas:
- ¿Guardamos los errores en una base de datos? Esto puede ser un poco peligroso, porque si falla la base de datos cascará el propio error
- ¿nos limitamos a enviar el error por e-mail y a almacenarlo en el log de eventos? Esto me gusta un poco más, porque seguramente para nuestra aplicación sea suficiente
Microsoft Data Access Application Block
2004-07-16
Pruebas unitarias en .NET
Además del NUnit, es necesario investigar algunas herramientillas adicionales que hay por ahí; a saber:
- MBUnit (http://mbunit.tigris.org/), que tiene más tipos de pruebas y hasta permite hacer rollback
- NUnitASP (http://nunitasp.sourceforge.net/) que tiene funciones para probar los elementos de formulario de asp.net (siempre elementos de servidor, claro)
NDoc: Documentación en .NET
NDoc
Permite generar documentación a partir del código .net, y no es tan cutre como el documentador que trae el Visual Studio integrado.
2004-06-29
DotNetNuke (DNN) 2.x Module Architecture, Part II
DotNetNuke (DNN) 2.x Module Architecture, Part II
2004-06-10
ASP.NET Home: ASP.NET: Web Applications: Understanding ASP.NET View State (ASP.NET Technical Articles)
2004-06-07
2004-06-03
Web Services v2
Resulta que los web services van por la versión 2.0. (http://msdn.microsoft.com/webservices/building/wse/default.aspx?pull=/library/en-us/dnwse/html/programwse2.asp). Se incluye seguridad y otros temas interesantes que empiezan a ser realmente necesarios. Hay que informarse.
El uso del DataGrid (asp.net) en profundidad
En este artículo (http://aspnet.4guysfromrolla.com/articles/051904-1.aspx) se muestran técnicas interesantísimas de uso del control DataGrid. Forma parte de toda una serie de artículos sobre el uso del DataGrid y en este último muestra cómo generar un grid cuyas filas sean editables a voluntad del usuario. ¡super interesante!
2004-05-11
Integrating Web Services and COM Components (Web Services Technical Articles)
Web Services Developer Center Home: Integrating Web Services and COM Components (Web Services Technical Articles)
2004-05-03
Instalar Windows o Linux...
En este enlace un tipo convence a su mujer (que no es friki de los ordenadores) de que pruebe a instalar Windows 2000 y Mandrake para ver cuál es más fácil de instalar. Resulta, cuando menos, divertido.
SpyMac
Si estáis buscando un proveedor de correo gratuito que os de 1 Gigabyte de espacio, acceso mediante POP3 y 200 Mb para poner web, servicio de blogs y alguna otra cosa más, podéis pasaros por www.spymac.com. Yo ya tengo mi cuenta...
2004-04-27
BlogCity
Estoy experimentando con un nuevo servidor de blogs, porque la verdad es que http://sanchon.blogspot.com no me está funcionando demasiado bien. A ver si este funciona mejor...
2004-04-25
ONDotnet.com: Mejorar páginas ASP.NET con JavaScript
explican cómo entremezclar ASP.NET con Javascript, sobre todo para no tener que hacer submit de cualquier cosa en el servidor.
Nosotros pensábamos que no era posible, pero el truco está en que desde javascript se puede obtener el control con el que interactuar de la siguiente forma:
document.getElementById("txtCajaWeb").value = "hola caracola"
y no hay ningún problema.
2004-04-06
Pruebas de cobertura de código con .net
Testing: Perform Code Coverage Analysis with .NET to Ensure Thorough Application Testing -- MSDN Magazine, April 2004
Ya que estamos con el tema de las pruebas, al menos leer algo sobre cómo hacerlas en .net...
2004-04-05
Ejecución dinámica de código en c#
Este articulo es interesante, porque explica las diversas opciones que hay en c# para ejecutar código dinámicamente. También incluye un grafiquito con los rendimientos de cada uno de los métodos. No es que sea muy detallado, por cierto...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp02172004.asp
Extreme Programming en .Net
Este es un interesante artículo (bastante superficial) sobre Extreme Programming en .Net, usando NUnit. Sirve como introducción, pero demuestra que Microsoft tiene bien abiertos los ojitos ante lo que está ocurriendo en el mundillo de la programación.
2004-03-23
Reescritura de URLs
Interesantísimo artículo sobre reescritura de urls en .NET.
La gracia es que puedes decirle al usuario que se conecte a http://servidor/HugoSanchon.asp y luego tú conviertes eso en el servidor en http://servidor/datos_cliente.asp?id=1004 , por ejemplo. Añade seguridad a la web además de usabilidad!!!
Hasta ahora esto había que hacerlo mediante filtros ISAPI. Gracias a .NET lo podemos hacer en c# cómodamente. La mala noticia es que es un poco laborioso.
2004-03-16
CodeSmith - FREEWARE template-based code generator with ASP.NET style syntax
2004-03-11
Este es el enlace a la página de Technet que tiene la información sobre Project
Microsoft Office Project 2003
En este artículo se explica cómo montar una/s web/s para poder entrar en la misma aplicación tanto desde fuera, como desde dentro, usando asp.net.
ASP.NET Home: Security: Single Sign-On Enterprise Security for Web Applications (ASP.NET Technical Articles)
2004-03-10
ASP.NET.4GuysFromRolla.com: Syndicating Your Web Site's Content with RSS and ASP.NET
No sé si tendré que usarlo alguna vez, pero está bien saber que existe algo como esto...
Application Architecture: Smart Client Offline Application Block (PAG Documentation)
