31
Oct

Los mejores blogs en ingles de Marketing Online

En Search Engine Journal organizaron un concurso de “Search & Social Awards” y aquí tenemos los resultados:

1. Mejor blog de SEO

  1. SEOMOZ
  2. Search Engine Land
  3. Seo Book

2. Mejor blog de noticias de buscadores

5. Mejor blog de Analítica

  1. Occam’s Razor w/ Avinash Kaushik
  2. Google Analytics Blog
  3. Web Analytics Demystified

6. Mejor blog de LinkBuilding

  1. Debra Mastaler’s Link Spiel
  2. Wiep
  3. LinkBuildr

7. Mejor pelo en SEO o Social Media (?)

  1. Chris Brogan
  2. Chris Winfield
  3. Jordan Kasteler

8. Mejor blog de Optimización de Medios Sociales

  1. Chris Brogan
  2. Techipedia
  3. Top Rank Blog

9. Mejor blog de busquedas locales

  1. David Mihm
  2. Blumenthals
  3. Small Business SEM

10. Hombre más sexy en Social Media

(me hace sospechar que fue organizado por mujeres)

  1. Pete Cashmore
  2. Dave Snyder

11. Mejor blog de Marketing de afiliados

  1. AM Navigator
  2. 5 star blog
  3. Revenews

12. Mejor blog de Optimización de Conversiones

  1. Get Elastic
  2. ROI Revolution
  3. GrokDotCom

13. Mejores recursos para Bloggers

  1. ProBlogger
  2. Kikolani
  3. Daily Blog Tips

14. Mejor blog de CopyWriting

  1. CopyBlogger
  2. Marketing Words
  3. Copywriting Blog

15. Mejor interfaz de Herramientas para Webmasters por buscadores

  1. Google Webmaster Tools
  2. Yahoo SiteExplorer
  3. Bing Webmaster Center

16. Mejor blog de Social Media y Red de Noticias

  1. Mashable
  2. Techipedia
  3. Read Write Web

17. Mejor blog con recursos para Facebook

  1. AllFacebook
  2. InsideFacebook
  3. Facebook Fails

18. Mejor blog de Marketing en Twitter

  1. Twitip
  2. Everything Twitter
  3. Oneforty

19. Mejor blog de gestión de reputación online

  1. Outspoken Media
  2. Personal Branding Blog
  3. Online Reputation Edge

20. Mejor infografía de industria 2009-2010

  1. Value Of SEO vs PPC
  2. The Journey Of A Tweet
  3. Visualizing 6 Years of FB

21. **BONUS** Mejor foro/comunidad de marketing en buscadores

  1. SEOmoz
  2. Webmaster World
  3. SEO Book

Ahora solo me queda agregar un montón de nuevos blogs a mi lector de RSS.

¿A ustedes cuales les parecen los blogs mas influyentes relacionados con el Marketing Online?

31
Oct

Cupones para anunciarse en Facebook

Realizar publicidad en facebook puede ser una forma muy efectiva de atraer los visitantes que nos interesan a nuestros sitios. La principal ventaja que le veo a este sistema es que se pueden segmentar los anuncios para que le aparezcan a las personas con un perfil determinado, por ejemplo hombres entre 25 y 35 años que les gusten los deportes. Esto puede traer muy buenos resultados, especialmente si la campaña que vamos a realizar esta orientada a un público joven.

¿Como conseguir los cupones para anunciarse en facebook?

Facebook regala cupones para comenzar a publicar anuncios en su red social. Una forma fácil de conseguir uno de estos cupones de valor 50€ es a través de Qapacity. Qapacity esta regalando cupones de 50€ para contratar publicidad en Facebook a todos sus nuevos miembros. Lo único que tienes que hacer es registrarte y esperar a que te envíen el cupón (en mi caso demoro 2 días).

¿Que es Qapacity?

  • Es un directorio de servicios en el que la confianza se transmite de persona a persona.
  • Es un sistema de promoción.
  • Es una red social centrada en la recomendación, la contratación y la promoción de los servicios.
  • Cualquier profesional puede añadir sus servicios

Más información sobre Qapacity.

Ya tengo mi cupón para Facebook ¿Y ahora?

Para poder utilizar el cupón de Facebook es necesario ser un nuevo anunciante en Facebook o haber abierto la cuenta como anunciante hace menos de 15 días. Debes ingresar a la página de publicidad de Facebook y crear tu primer anuncio. Cuando te pidan tus datos de cobro visita el link código de promoción e ingresa el código que te han enviado. El cupón tiene una validez de 90 días desde el momento que  activas la cuenta para gastar los 50€. Una vez que el crédito se termine puedes seguir anunciando o parar la campaña para que no se te cobre.
31
Oct

Robots.txt

¿Para que sirve el archivo Robots.txt?

El robots.txt es un archivo de texto plano que se sube al directorio raiz del sitio web para indicarle a los robots de los buscadores que páginas o directorios no queremos que indexen. Esto es util para los sitios que tienen una parte de administracion que no queremos que sea vista por los demas en los resultados de los buscadores.

Ejemplos de Robots.txt:

• Para darle permiso a todos los robots acceder a todo el sitio:

User-agent: * 

Disallow:

• Para que ningun robot acceda al contenido del sitio:

User-agent: * 

Disallow: /

• Para que ningun robot acceda a un directorio especifico:

User-agent: * 

Disallow: /Backend/

• Para que el robot de Google no acceda a un directorio:

User-agent: Googlebot 

Disallow: /Backend/

Lista de todos los robots en: http://www.robotstxt.org/db.html

• No permitirle a ningun robot acceder a una página en especial:

User-agent: * 

Disallow: /archivo.html

Más información detallada sobre Robots.txt en: http://www.robotstxt.org/

31
Oct

Transferir dominios .es o .com.es

Manual para transferir dominios .es o .com.es

PARA EL VENDEDOR:

1. Accede a página de transmision dominios de NIC.ES
2. Rellena el Documento Comunicación del antiguo titular (.pdf, 26 KB)
(Importante—>En el documento se Necesita rellenar el Dni o identificacion del nuevotitular especificado al final del documento de lo contrario no tendrávalidez)
3.El vendedor envia el formulario a transmision@nic.es
4.Fin del asunto x la parte que pertoca al vendedor

PARA EL COMPRADOR:

En un plazo inferior a los 10 días desde que el vendedor envia supertinente documento el comprador debe enviar entonces el que lepertoca.

1. Accede a página de transmision dominios de NIC.ES
2. El comprador tiene entonces dos posibilidades
-Si el dominio se va a gestionar directamente con Red.es deberá enviar el documento:
*Aceptación de condiciones del nuevo titular (.pdf, 62 KB)
– Si el dominio se va a gestionar a través de un Agente Registrador debera enviar el documento:
*Aceptación de condiciones del nuevo titular a través de Agente Registrador (.pdf, 58 KB)

Se debe indicar el Nic-Handle que identifique al nuevo usuario del dominio

Para ello
Nic.es
Menu izquierda—>Tus Dominios .es
Icono-Menu derecha—>Gestiona (Haz las modificaciones que precises)
Registrarse en dominios .es y clicar en Crear Contacto para obtenerlo.

Muchas gracias a Alex del foro Demene por este tutorial!

Fuente: Transmisión dominios .ES paso a paso

31
Oct

¿Qué es el PageRank?

En reglas generales PageRank es un valor numérico que representa la importancia de una página en la web para Google, su manera de decidir la trascendencia de una página. Y esto resulta significativo, ya que se trata de uno de los factores que determina la posición de una página en los resultados.

Para este gran buscador, cuando una página enlaza a otra, es como si la página que tiene el enlace votara a la página enlazada. Mientras más votos tenga un sitio, más importancia poseerá. Es así que hay que tener en cuenta lo relevante que es el voto, ya que Google calcula la importancia de una página a partir de la cantidad de votos que obtiene.

Cuanta más importancia posea una página, mejor posicionada estará en su base de datos. Para Google cuantas más páginas enlacen a determinado sitio, más importancia tendrá el mismo. Se trata de un sistema de voto en el cual no es lo mismo que se enlace o vote una página con PR 6 que otra con PR 2. Por lo que se tendrá que conseguir que webs importantes enlacen nuestra página.

En definitiva, el PageRank es una herramienta que usa Google para posicionar una web dentro de su directorio. Google quiere que en las primeras posiciones se encuentren páginas de importancia y que a su vez sean recomendadas por otras de cierta relevancia.

Para determinar el PageRank, Google analiza el número de enlaces que provienen de otras páginas web. Funciona de la siguiente manera, si una página web enlaza con otra, la está recomendando, y si lo hace es porque debe ser importante en la temática que trata esta misma.

El valor de cada uno de esos enlaces depende del número de otros que salgan de esa página web y del PageRank que tenga el sitio web que está recomendando. Lo que cuenta es la densidad de los enlaces y la importancia de la página que recomienda. Si una página tiene PageRank 5 y 60 enlaces, y uno de estos enlaces va a determinada página, el valor de ese enlace es de 5/60. Si una página web tiene PageRank 3 y 10 enlaces, y uno va a otra página, el valor de ese enlace es de 3/10.

El PageRank es un valor numérico que va del 0 al 10 en una escala logarítmica. El mismo no se calcula cada vez que se realiza una búsqueda, si no que Google lo calcula cada cierto tiempo.

Esto significa que cuando se realicen cambios en la propia página web de forma que afecten al PageRank de otras páginas, o viceversa, los efectos no se verán reflejados sobre el propio PageRank hasta que Google no realice su próxima actualización.

31
Oct

Patrones de Diseño

¿Que es un patrón de diseño?

Es una descripción de objetos y clases comunicándose entre sí, que se personalizan para resolver un problema general del diseño de software en un contexto particular.
La descripción de la solución sl problema general se realiza en términos de estructura  (clases, interfaces, relaciones) y comportamiento (interacciones entre objetos).

Singleton

Problema: ¿Comó asegurar que una clase tenga una única instancia accesible globalmente?
Aplicabilidad: Utilice Singleton cuando una clase deba tener una única instancia globalmente accesible para cualquie cliente.
Estructura:
Comportamiento:
Consecuencias:
  • Permite el acceso controlado a una instancia.
  • Fácilmente modificable para permitir un conjunto de instancias.

Composite

Problema: ¿Cómo tratar objetos que pueden ser compuestos de otros objetos como si fueran objetos individuales?
Aplicabilidad:
  • Representar jerarquías de objetos compuestos de otros objetos así como de objetos individuales.
  • Los clientes ignoran las diferencias entre objetos individuales y objetos compuestos dentro de esa jerarquía y los manipulan indistintamente.
Estructura:
Consecuencias:
  • Fácil introducción de nuevos tipos de componentes sin modificar código cliente existente.
  • Los clientes son sencillos: evita lógica condicional en ellos y manipulan de igual forma los componentes.
  • Generalidad VS Control: el hecho de que los componentes sean tratados genéricamente (lo cual es una ventaja para el cliente) también presenta una desventaja en cuanto no poder controlar el tipo de elementos de un compuesto (ej: si se tienen dos tipos de hojas y se necesita que determinado elemento compuesto sólo tenga un tipo de hoja).

Proxy

Problema: ¿Cómo impedir el acceso directo a un objeto?
Aplicabilidad:
  • Remote Proxy: provee un representante local para un objeto que se encuentra en otra ubicación.
  • Virtual Proxy: crea objetos “caros” a demanda.
  • Protection Proxy: controla el acceso al objeto original.
Estructura:
Consecuencias:
  • Introduce un nivel de indirección, cuya utilidad depende de la variante utilizada:
    • Remote Proxy: oculta el hecho que el objeto real se encuentra en una ubicación remota.
    • Virtual Proxy: realiza optimizaciones como crear un objeto a demanda en lugar de tenerlo instanciado siempre.
    • Protection Proxy: permite tareas de control y mantenimiento cada vez que el objeto real es accedido.
  • En los casos donde el Proxy no deba instanciar el objeto real, podría conocerlo a través de una interfaz.

Adapter

Problema: ¿Cómo hacer interactuar una clase ya creada con otra cuya interfaz cambió?
Aplicabilidad:
  • Si la clase A utiliza la clase B y los servicios que brinda B cambian, A se verá afectada y también deberá cambiar, a menos que se introduzca una clase X que se adapte al uso de A pero conociendo la nueva B.
    Es decir que se pasa de A > B a tener A > X > B
  • Resolver incompatibilidad de interfaces.
Estructura:
Consecuencias:
  • Un adaptador puede cambiar su clase de destino dinámicamente.
  • Un adaptador puede simplemente adaptar el nombre de una operación hasta adaptar toda una interfaz completa, incluyendo los parametros.
  • Generalmente el objeto adaptado ya no puede ser utilizado mediante su vieja interfaz (a menos que el adapter tambien lo permita).

Template Method

Problema: Definir el esqueleto de un algoritmo en una operación, relegando algunos pasos a subclases. Las subclases redifinirian ciertos pasos del algoritmo sin cambiar su estructura.
Aplicabilidad:
  • Implementar las partes invariantes de un algoritmo una única vez y delegar los pasos variables a subclases.
  • Para factorizar comportamiento común de subclases en una nueva clase abstracta.
Estructura:
Consecuencias:
  • Es importante diferenciar aquellas operaciones utilizados por los templates method que deban ser reddefinidas (que serán abstractas en la super clase) de las que puedan ser redefinidas (que serán concretas en la super clase).
  • El template method no debera ser redefinido.
  • Cuantas más operaciones abstractas se definan en la clase abstracta, más trabajo deberán realizar las clases concretas.

Observer

Problema: Definir una dependencia “uno a muchos” entre objetos de tal forma que cuando el “uno” cambie, los “muchos” sean notificados.
Aplicabilidad:
  • Cuando un elemento tenga dos aspectos, uno dependiente del otro, y encapsularlos en objetos diferentes permite modificarlos y reutilizarlos independientemente.
  • Cuando cambios en un objeto requieran cambios en otros objetos, y no se sabe cuántos de éstos últimos serán.
  • Cuando un objeto deba notificar a otros sin acoplarse a éstos.
Estructura:
Consecuencias:
  • El Subject puede separarse en dos: una clase abstracta Subject con operaciones de attach, detach y notifyAll (ya predefinidas) y una subclase ConcreteSubject que representa el tipo de objeto que será observado.
  • En la estructura se mostró que el Subject posee un método ( operación() ) el cual desencadena el cambio de estado, por lo que deberá invocar a notifyAll() el cual fue declarado como privado. Sin embargo, no tienen porqué ser dos métodos diferentes.
  • La operación notify() puede enviar parámetros que contengan información sobre el cambio ocurrido en el Subject.
  • Generalmente son los propios observadores los que cambian el estado del Subject (en este caso invocando operacion() ).
  • Para que un objeto sea notificado:
    1. Su clase debe implementar la interfaz Observer
    2. El objeto debe registrarse ante el Subject

State

Problema: Permitir a un objeto alterar su comportamiento cuando su estado interno cambie. El objeto parecerá haber cambiado de clase.
Aplicabilidad:
  • Cuando el comportamiento de un objeto dependa de su estado y debe cambiar su comportamiento en tiempo de ejecución dependiendo de ese estado.
  • Cuando las operaciones contengan sentencias condicionales que dependan del estado del objeto.
Estructura:
Consecuencias:
  • El patrón State representa el estado como un objeto por sí mismo, con una subclase por cada estado posible del objeto.
  • Los cambios de estado pueden ser manejados ya sea por los propios estados o bien por el Context.
  • Si los cambios los manejan los propios estados, entonces el Diagrama de Clases debe modificarse colocándose las dependencias entre estados que correspondan.
  • El Context puede enviar información mediante parametros de oper() o bien enviarselos a si mismo para que los estados puedan consultar información.
  • El patrón State puede combinarse con Singleton para hacer que los estados concretos tengan una unica instancia.
  • Agregar nuevos tipos de estados concretos tiene un bajo impacto, pues únicamente implica que alguien debe devolver ese nuevo estado concreto.
  • Se puede utilizar un Diagrama de Estados para representar como es la lógica de cambio de estado del objeto.
  • En caso de no ser apropiado que oper() retorne el nuevo estado entonces el Context puede proveer una operación pública de cambio de estado.

Strategy

Problema: Definir una familia de algoritmos, encapsular cada uno de ellos en una clase y hacerlos intercambiables. Strategy permite variar el algoritmo independientemente de los clientes que lo utilicen.
Aplicabilidad:
  • Cuando muchas clases relacionadas difieran sólo en su comportamiento.
  • Cuando necesite diferentes diferentes variantes de un algoritmo.
  • Cuando una clase contenga diferentes comportamientos mediante sentencias condicionales.
Estructura:
Consecuencias:
  • El Context puede enviar información mediante parámetros o bien eviarse a sí mismo para que las estrategias concretas puedan consultar información.
  • El Cliente tiene a su disposición una familia de algoritmos de la cual elegir una para crear el Context, luego de lo cual el Cliente sólo interectuará con éste.
  • La estrategia concreta puede cambiarse dinamicamente.
  • El Cliente conoce las estrategias concretas y selecciona una para su utilización. Esto significa que Strategy debe utilizarse cuando este acoplamiento sea aceptable.
  • Las estrategias concretas pueden ser Singleton y ser compartidas por todos los Context.
  • Opcionalmente, el Context puede contener una implementación por defecto del algoritmo, con lo que permitiría su uso aún sin haber creado ninguna estrategia concreta.
31
Oct

Envio de Mails con Asp.Net

El envio de Mails con Asp.Net es muy sencillo. Primero necesitamos una cuenta de mail con todos los datos para poder acceder desde nuestro codigo.

Para poder realizar el envio hay que agregar los siguientes espacios de nombres:

using System.Net;
using System.Net.Mail;

El codigo a utilizar es el siguiente:

MailMessage mail = new MailMessage();
mail.To.Add(“destinatario@mail.com”);
mail.From = new MailAddress(“prueba@adinet.com.uy”);
mail.Subject = “Mail de prueba”;
mail.Body = “Probando el envio de Mails con Asp.Net”;
mail.IsBodyHtml = false;
mail.Priority = MailPriority.Normal;

SmtpClient smtp = new SmtpClient();
smtp.Host = “adinet.com.uy”;
smtp.Credentials = new NetworkCredential(“prueba”, “password”);
smtp.Send(mail);

Primero creamos el objeto Mail:
MailMessage mail = new MailMessage();

Le agregamos las direcciones de mails de los destinatario , al ser una colección se pueden agregar vairas direcciones en el mismo envio:
mail.To.Add(“destinatario@mail.com”);

La dirección desde donde va a ser enviado el Mail:
mail.From = new MailAddress(“prueba@adinet.com.uy”);

El asunto del Mail:
mail.Subject = “Mail de prueba”;

El contenido del Mail:
mail.Body = “Probando el envio de Mails con Asp.Net”;

Especificamos si el Mail esta en formato Html:
mail.IsBodyHtml = false;

La prioridad del Mail:
mail.Priority = MailPriority.Normal;

Hasta aca eran los datos del Mail, ahora veremos los datos del servidor.

Creamos el objeto SmtpClient:
SmtpClient smtp = new SmtpClient();

Le asignamos el SMTP del servidor (en este caso lo hice con Adinet):
smtp.Host = “adinet.com.uy”;

Los datos del mail desde donde se va a enviar (usuario y contraseña):
smtp.Credentials = new NetworkCredential(“prueba”, “password”);

Y finalmente enviamos el Mail:
smtp.Send(mail);

*Los datos utilizados en el ejemplo no son reales, solo utilizados a modo de ejemplo.
31
Oct

QueryString – Parametros en la URL

Una de las posibles formas de pasar parametros entre páginas es a traves de la url.

Para empezar a agregar parametros lo unico que tenemos que hacer es agregarle a la dirección el signo ? colocar el nombre del parametro y el valor.

Response.Redirect(“Prueba.aspx?id=15”);

En la páginaPrueba.aspx para recuperar el valor sería de la siguiente manera:

string valor = Request.QueryString[“id”];

Para agregar varios parametros en la url podemos juntarlos con el signo &

Response.Redirect(“~/Prueba.aspx?id=15&titulo=Titulo”);

Los recuperamos de la misma manera:

string valor = Request.QueryString[“id”];
string titulo = Request.QueryString[“titulo”];

Ventajas:

Es muy fácil de implementar.

Desventajas:

Tienen un tamaño máximo.
Los parametros quedan visibles, hay que tener cuidado con la información que se maneja.
Los parametros quedan accesibles a ser modificados por el usuario facilmente.
Tiene limitaciones con respecto a algunos caracteres.
31
Oct

Crear Login en WinForms

Lo primero que debemos hacer es crear en nuestra base de datos (en este caso vamos a utilizar la base de datos Northwind) las tablas necesarias para la creacion de usuarios y roles.
Para esto vamos a abrir la consola: Inicio/Ejecutar… cmd
Debemos llegar hasta donde tenemos instalado el FrameWork:

cd \windows\Microsoft.net\framework\v2.0.50727

Luego debemos ejecutar el siguiente comando:

aspnet_regsql.exe -E -S localhost -d Northwind -A all -sqlexportonly c:\membership.sql

De esta forma creamos un script de sql llamado membership en C:
Debemos abrirlo y ejecutarlo en el SQL Server Management Studio para crear las tablas necesarias en nuestra base de datos.

En nustra aplicación Windows debemos crear el archivo App.config, para esto simplemente agregamos un nuevo Archivo de configuración de aplicación a nuestro proyecto.
Este debe quedar de la siguiente forma:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
<system.web>
<membership defaultProvider=”SqlProvider”>
<providers>
<clear />
<add name=”SqlProvider” type=”System.Web.Security.SqlMembershipProvider”
connectionStringName=”MiConnectionString” applicationName=”NombreAplicacion”
enablePasswordRetrieval=”false” enablePasswordReset=”false”
requiresQuestionAndAnswer=”false”
requiresUniqueEmail=”true” passwordFormat=”Hashed” />
</providers>
</membership>
</system.web>
<connectionStrings>
<add name=”MiConnectionString”
connectionString=”Mi string de conección a la base de datos”
providerName=”System.Data.SqlClient” />
</connectionStrings>
</configuration>

Al proyecto debemos agregarle una nueva referencia a System.Web

Login Winform

En el codigo de nuestra ventana de autenticación agregamos el espacio de nombres System.Web.Security

Para crear nuevos usuarios utilizaremos el siquiente codigo:

try
{
Membership.CreateUser(“Usuario”, “Contra$ena1”, “mail@mail.com”);
}
catch(Exception es)
{
MessageBox.Show(es.ToString());
}

Para validar a nuestros usuarios el codigo seria el siguiente:

if (Membership.ValidateUser(txtUsuario.Text, txtContrasena.Text))
{
MessageBox.Show(“Usuario válido”);
}
else
{
MessageBox.Show(“Usuario no válido”);
}

Con esto ya tendriamos nuestro Login pronto.

27
Oct

Tareas Programadas en Sql Server 2005

Las tareas programadas son llevadas a cabo por el SQL Server Agent por lo tanto hay que asegurarse que esta inicializado.

Primer paso vamos a dar de alta un Trabajo (Job). Para eso expandimos el SQL Server Agent –> Job –> New Job

Debemos completar el nombre de nuestro Trabajo (Job) y una descripción sería bueno antes de pasar a la siguiente pestaña (Steps).

En esta pestaña vamos a elegir la tarea (o tareas) a realizar por el trabajo. Vamos al botón “Nuevo” o “New” y nos va a abrir una nueva ventana.

Elegimos un nombre para nuestra Tarea (Job) y escribimos el comando que vamos a ejecutar.

En nuestro caso vamos a hacer un respaldo completo de la Base de Datos Adventure Works.

BACKUP DATABASE [AdventureWorks] TO  DISK = N’C:\AdWorks’ WITH NOFORMAT, NOINIT,
NAME = N’AwProdUy’, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Una vez completados los datos le damos OK y volvemos a la ventana anterior a la que podemos seguir agregando Tareas o pasar a la siguiente pestaña donde vamos a agendar el Trabajo (Job).

Nuevamente vamos al boton “Nuevo” o “New” y se nos abre una nueva ventana con los datos para agendar nuestro Trabajo (Job).

En nuestro caso seleccionamos para que se ejecute todos los días a las 2 de la mañana a partir del 16 de noviembre del 2008. Presionamos el botón de OK para guardar y volver a la ventana anterior.

Hasta aquí tenemos todos los pasos para realizar una tarea programada. Podemos agregar más opciónes como enviar notificaciones pero eso lo voy a dejar para más adelante.