Resumen del CodeCamp
ctg | 21 Octubre, 2009 23:37
Personalmente, no puedo quejarme absolutamente de nada. He conocido a mucha gente y a la vez poder hablar con los ponentes "cara a cara" en vez de e-mail.
- Azure: ¿Quieres estar en las nubes?
- Buenas prácticas, la mejor defensa contra los ataques web
- Depuración y Optimizacion de Aplicaciones .NET con WinDbg
SQL Server 2008 R2 para desarrolladores
- Principios de diseño SOLID
- VB ¿Que hay de nuevo viejo?
- MS Build. Automatización de compilaciones y empaquetados
- "La belleza (también) está en el interior": interfaces Web robustas por fuera y por dentro
- Desarrollar para dispositivos móviles: un millar de posibilidades
¿Para cuando el próximo?
Publicado en General . Comentario: (0). Retroenlaces:(0). Enlace
CodeCamp Tarragona 2009
ctg | 02 Octubre, 2009 14:33
Dentro de un par de semanas se celebrará el CodeCamp 2009. Será un evento gratuito dónde se podrá conocer a los profesionales,usuarios y aficionados a la tecnologia .NET y Mono.
Publicado en General . Comentario: (1). Retroenlaces:(0). Enlace
Acerca de la calidad del código
ctg | 08 Junio, 2009 16:33
La mayoría de los programadores estarán de acuerdo con las siguientes afirmaciones:
- Un código horrible es aquel, que además de malo, no tiene comentarios.
- Un mal código es aquel que además de malo tiene comentarios.
- Un código regular: tiene código regular con comentarios.
- Un buen código: un buen código con comentarios,
- pero el mejor código es aquel que no necesita ningún comentario.
Publicado en General . Comentario: (0). Retroenlaces:(0). Enlace
Programando en PHP (y con CVS) en Visual Studio 2008
ctg | 06 Abril, 2009 18:27
Después de pasar más de 3 años utilizando Zend Studio y antes de realizar el cambio a Eclipse que tarde o temprano tendré que realizar, decidí a finales del 2008 perder un poco de tiempo en intentar que Visual Studio 2008 fuera mi principal editor tanto para código C# y también de PHP, Javascript y HTML/CSS.
Además de Zend Studio para mis desarrollos en PHP, utilizaba diferentes add-on según el navegador para depurar código Javascript. Y para editar HTML, hojas de estilo usaba Dreamweaver. A todo esto, se suma nuestro controlador de versiones, que todavía sigue siendo CVS (si funciona bien porque tocarlo), pues tenemos código del siglo pasado :P y utilizamos TortoiseCVS para trabajar más cómodamente.
En resumen, muchas de herramientas para realizar el trabajo diario.
La versión 2005 de Visual Studio ya me permitía realizar la mayoría de las tareas mencionadas anteriormente pero fue en la versión 2008 en donde por fin el editor de HTML/CSS funcionaba decentemente (el mismo que incluía Expression Blend), se añadió un depurador para Javascript, snippets, split view ...
Para poder editar PHP, con coloración de código, Intellisense, depuración y otras características, he utilizado PHP IDE - VS.Php for Visual Studio. Se integra perfectamente con Visual Studio y creo que tiene algo que ver con el proyecto descontinuado Php for Visual Studio (Php4VS) de Codeplex porque ellos mismos lo recomiendan.
Y para poder utilizar CVS desde Visual Studio, he utilizado TamTam CVS SCC, que permite realizar las tareas más habituales, es decir, check-in/check-out, diferencias, histórico...Desde principios de año utilizo PHP como editor de código con CVS y la experiencia ha sido muy positiva y productiva, al tener en un solo producto las herramientas que necesito para mi trabajo diario.
Publicado en General, Javascript, PHP, .NET . Comentario: (0). Retroenlaces:(0). Enlace
10 consejos a la hora de diseñar tú página web
ctg | 23 Julio, 2008 00:42
- El usuario de una página web mira por primera vez la parte superior izquierda. Y poco a poco van bajando y van centrado su mirada y acaban observando muy brevemente el lado derecho.
- Por ello, un buen lugar para colocar la publicidad es la parte superior izquierda.
- Los títulos deben ser claros y cortos.
- Evitar artículos largos o bloques de texto muy largos.
- Utilizar listas o puntos para enumerar algo.
- Cuando necesites poner una cantidad, utiliza números, nunca texto.
- Los menus, deben estar situados en la parte superior o en la izquierda, como se dijo en el punto 1.
- El texto con la fuente tipo "Comic Sans" no son leídas por el usuario excepto en el caso que la página este pensada para el público infantil.
- La mayoría de banners gráfico son ignorados por el usuario.
- Las imágenes relacionadas con la página en cuestión siempre son útiles y a ser posible, grandes.
Publicado en General . Comentario: (0). Retroenlaces:(0). Enlace
Programar seguro
ctg | 07 Junio, 2008 14:16
Aprovechando que Microsoft ha lanzado Microsoft Source Analysis for
C#, he creado este post para anotar algunas conductas que siempre
recomiendo a la hora de escribir código. El principal objetivo es crear
un código seguro, escalable, de fácil lectura y mantenimiento.
Como siempre, cualquier crítica es bienvenida y espero ir añadiendo más puntos en un futuro.
1) Comentarios y variables
En
cada variable/método/función que se declara, utilizar nombres
razonables y en las variables miembro de una clase, no esta de más
poner un pequeño comentario (pero recordar, lo bueno si breve dos veces
bueno) para saber su objetivo.
En Visual Studio.net se pueden utilizar las etiquetas <summary>, <param> ... que facilitan mucho la lectura de código. Además Intellisense
hará uso de esas etiquetas y facilitaran la escritura de código.
Incluso, las etiquetas se pueden utilizar para la creación de
documentación.
2) Divide y vencerás
Evitar crear un ficheros de utilidades enormes. Por ejemplo, usar partial en C# que apareció en la versión 2.0 de .NET Framework. De esta forma es posible separar código en diferentes archivos para hacerlos más flexibles.
3) Utilizar excepciones en vez de retornar 0=OK, 1=ERROR ó HRESULT
Desde la aparición de las excepciones, la comprobación de los valores de retorno al llamar una función ha quedado obsoleta.
4) Utilizar ASSERT, TRACE
Cuando
se está desarrollando utiliza todas las herramientas que el propio
entorno y el mismo lenguaje proporcionan. En C#, el espacio de nombres System.Diagnostics se encuentra la clase Debug y Trace. En el artículo How to Trace and Debug in Visual C# aparecen ejemplos de su uso.
5) Cuidado con el código "no seguro"
Al
escribir código no seguro, debemos encargarnos nosotros mismos de
realizar de liberar los recursos previamente utilizados. Utiliza código
"no seguro" únicamente cuando seaestrictamente necesario.
6) Automatizar
Visual Studio incluye muchas formas
de automatizar código. Desde la utilización de un asistente para
generar el código de acceso a la base de datos, servicios web,etc...
Macros, snippets y programas que ayudan a la escritura y la automatización de código: MZ-Tools, Visual Assist, etc...
7) Utilizar todas las herramientas disponibles
Antes de Microsoft Source Analysis for C#, ya existían otros programas que ayudan a crear código mas seguro, FXCop es el más conocido, aunque realmente FXCop se centra más en los ensamblados. También existen otros analizadores como Code.It.Right
8) Atención a la entrada de datos
La entrada de datos es fuente de numerosos problemas. Algunos muy importantes, como los ataques de inyección SQL o problemas con la codificación de caracteres. Las expresiones regulares pueden ser una solución a este problema.
9) Realizar pruebas
Probar nuestro código en todos los sentidos. Introducir datos incorrectos, acciones que no estén
soportadas para observar nuestros mensajes de error. Puede ser muy útil
pedir a otra persona que comprueba nuestro programa y que realice una
batería de pruebas para asegurar la calidad de nuestro código.
10) Ser modesto, todos nos equivocamos
Todos nos equivocamos y quizá no hay mejor forma de aprender que equivocarse. Resolver problemas y asumir nuestra responsabilidad nos ayudará a concentrarnos para escribir código más seguro.
Publicado en General . Comentario: (0). Retroenlaces:(0). Enlace
Nuevo Amazon S3 (2008-05-02)
ctg | 06 Mayo, 2008 13:31
Amazon Simple Storage Service (Amazon S3), conocido como S3, es un servicio que proporciona amazon.com que permite almacenar y recuperar tus datos como un disco duro virtual se tratase, a un precio muy bajo. En nuestro trabajo llevamos un año aproximádamente utilizándolo para hacer copias de seguridad.
Además utiliza los standards SOAP y REST y por ello, se puede acceder desde cualquier lenguaje actual (C#, PHP, Java y alguno más). También hay un plug-in para Firefox que te permite acceder, S3 Organizer.
Pongo un pequeño ejemplo, en C# para crear un bucket y subir un fichero.
Primero crear un fichero, llamado S3Helper.cs. Esta pequeña clase es una utilidad para trabajar más cómodamente con S3.
using System;
using System.Text;
using System.Security.Cryptography;
/// <summary>
/// Summary description for S3Helper
/// </summary>
public class S3Helper
{
public S3Helper()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
/// Formats the provided time as a string limited to millisecond precision
/// </summary>
/// <param name="myTime"></param>
/// <returns></returns>
public static string FormatTimeStamp(DateTime myTime)
{
DateTime myUniversalTime = myTime.ToUniversalTime();
return myUniversalTime.ToString("yyyy-MM-dd\\THH:mm:ss.fff\\Z", System.Globalization.CultureInfo.InvariantCulture);
}
/// <summary>
/// Returns a new DateTime object set to the provided time
/// but with precision limited to milliseconds.
/// </summary>
/// <param name="myTime"></param>
/// <returns></returns>
public static DateTime GetTimeStamp(DateTime myTime)
{
DateTime myUniversalTime = myTime.ToUniversalTime();
DateTime myNewTime = new DateTime(myUniversalTime.Year, myUniversalTime.Month, myUniversalTime.Day,
myUniversalTime.Hour, myUniversalTime.Minute, myUniversalTime.Second,
myUniversalTime.Millisecond);
return myNewTime;
}
public static string GetSignature(string mySecretAccessKeyId, string strOperation, DateTime myTime)
{
Encoding myEncoding = new UTF8Encoding();
// Create the source string which is used to create the digest
string mySource = "AmazonS3" + strOperation + FormatTimeStamp(myTime);
// Create a new Cryptography class using the
// Secret Access Key as the key
HMACSHA1 myCrypto = new HMACSHA1(myEncoding.GetBytes(mySecretAccessKeyId));
// Convert the source string to an array of bytes
char[] mySourceArray = mySource.ToCharArray();
// Convert the source to a UTF8 encoded array of bytes
byte[] myUTF8Bytes = myEncoding.GetBytes(mySourceArray);
// Calculate the digest
byte[] strDigest = myCrypto.ComputeHash(myUTF8Bytes);
return Convert.ToBase64String(strDigest);
}
}
Y a continuación, el código para crear un bucketname y subir un fichero:
// Add web reference http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl
using <yourappnamespace>.com.amazonaws.s3.doc;
try
{
using (var s3 = new AmazonS3())
{
var s3 = new AmazonS3();
var currentTime = DateTime.Now;
const string myAWSAccessKeyId = <my S3 access key>;
const string mySecretAccessKeyId = <my S3 secrect access key>;
// Create a bucket
CreateBucketResult myCreateResult = s3.CreateBucket(
<bucket name>,
null,
myAWSAccessKeyId,
S3Helper.GetTimeStamp(currentTime),
true,
S3Helper.GetSignature(mySecretAccessKeyId, "CreateBucket", currentTime)
);
// Get data to upload
const string fileName = "fileName.ext";
byte [] bytesToWrite = File.ReadAllBytes(fileName);
// Finally upload the object
PutObjectResult putObjectResult = s3.PutObjectInline(
<bucket name>,
fileName,
null,
bytesToWrite,
bytesToWrite.Length,
null,
StorageClass.STANDARD,
true,
myAWSAccessKeyId,
S3Helper.GetTimeStamp(currentTime),
true,
S3Helper.GetSignature(mySecretAccessKeyId, "PutObjectInline", currentTime),
null
);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Publicado en General . Comentario: (0). Retroenlaces:(0). Enlace
Microsoft Developer Day 2007 Material
ctg | 22 Abril, 2008 23:48
Este año, no he podido asistir a ningun evento de Microsoft Developer Day. Pero afortunadamente, las presentaciones ya estan disponibles en su web.
Estoy bastante intersado en conocer las novedades de Visual Studio 2008, ASP.NET 2.0 y SQL Server 2008 ...
Publicado en General . Comentario: (0). Retroenlaces:(0). Enlace
Remove “My shared documents” folder
ctg | 11 Enero, 2007 00:07
I hate stupid folders. I never use this folder but till now, I don’t know how remove it. Today, I found the solution in a post
For remove this folder, launch regedit and go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders. Inside DelegateFolders you can find another folder with name {59031a47-3f72-44a7-89c5-5595fe6b30ee}. Destroy it and reboot.
Publicado en General . Comentario: (0). Retroenlaces:(0). Enlace