Social Icons

jueves, 27 de noviembre de 2008

NLB & Sharepoint: Best Practices

Parece simple pero no he encontrado en internet a nadie que se moje en el tema de Balanceo de carga de red y SharePoint.


Bueno, esto hace pensar que es un tema escabroso y que habría que estar loco para meterse. Estar loco o tener muy poco que perder y en mi caso ambas son ciertas.


En 0,2 para no perder tiempo en explicar una cosa que no controlo quiero decir que aún controlo menos esto que las otras cosas que explico.



  • Montaremos NLB en todos los Web Front End

  • El modo de operación del cluster deberá ser Multicast (Para ahorrarnos hardware, básicamente)

  • Configuraremos el NLB con afinidad (obviamente por ser servidor de SharePoint)


    • Si va a servir a una intranet la configuraremos en tipo "Single"

    • Si va a servir a internet la configuraremos en tipo "Class C"

Y eso es todo lo que he sacado en claro.


He colgado el post antes de que se me olviden las configuraciones, pero todavía no está probado. Si veo que todo falla lo corregiré y si veo que todo explota lo borraré y pasaré vergüenza durante una franja temporal comprendida entre los 2 y los 5 minutos.


Sí, lo de las mejores prácticas era un farol, pero no da confianza poner en el título "NLB & Sharepoint: Best Practices (in case they work)"

Publicar un comentario

miércoles, 26 de noviembre de 2008

Los resultados más probables son tu Best Bet

Los best bets o como se tradujeron al castellano “Resultados más probables” son muy útiles, por lo menos a mi me gustan.

¿No os ha pasado, por ejemplo, que en las estadísticas de búsqueda de vuestro sitio veis consultas como “Teléfono”, “Dirección”, “Contacto”?, casi seguro, si vuestro sitio no trata de telefonía, vectores o pegamento que vuestros usuarios se encuentran solos en sus casas y quieren hablar con vosotros.

O por ejemplo, que tengamos una página sobre la etiqueta en una fiesta de bonobos de la cual estamos especialmente orgullosos y no nos gustaría que ningún usuario que buscase temas relacionados con “Monos” en nuestro portal se la perdiese.

Quizás nos convendría poder encaminar a los usuarios a una página determinada cuando se introdujesen ciertos términos en la búsqueda para que no se mareasen entre tantos resultados…

Pues por una vez, y sin que sirva de precedente, es facilísimo.

En la configuración del sitio clickamos en Palabras clave de búsqueda:

Agregar resultado más probable

Una vez allí pulsaremos sobre Agregar palabra clave y rellenaremos el formulario. Debemos pulsar sobre el link Agregar resultado más probable en donde se nos pedirá que introduzcamos los datos del link:

Agregar palabra clave

Después de esto ya puedes pulsar aceptar unas cuantas veces e ir derechito al sitio de búsqueda para ver cómo te ha quedado.

El mío quedó así:

Resultados de búsqueda con Best Bets de erChan

Mira qué bien y que pronto.

Bueno y con esto me despido hasta la próxima, que espero que no se demore tanto, que ya había quien pensó que no iba a seguir con el blog….

Saludos cordiales, Kind Regards, Zaijian.

Publicar un comentario

viernes, 14 de noviembre de 2008

Mapeo de Hex para CAML definitivo

Veo que es un tema recurrente (por las consultas que me llegan del google) el tema del mapeo de caracteres No-US para los nombres de los campos en las consultas CAML.

El mes pasado hice una burda primera aproximación al tema pero se me quedó en el tintero hacer una función que lo solucionase de forma más global. Pues bien, aprovechando que hoy estaba solo en casa como Marta Sánchez o como Macaulay Culkin tenía tiempo pues he decidido dejar zanjado el tema.

/// <summary>
///
Normalizes the string passed replacing the non standard
/// charaters by Sharepoint HEX code
/// </summary>
///
<param name="str">Works great with Field Names and CAML
/// Queries :D
</param>
static string fieldName2Caml(string str)
{
int i = 0;
while (i < color="#0000ff"> if ((str[i] >='0' && str[i] <= '9')
(str[i] >=
'a' && str[i] <= 'z')
(str[i] >=
'A' && str[i] <= 'Z'))
i++;
else
{
str = str.Substring(0, i) +
string.Format("_0x00{0}_", string.Format("{0:X}",
Convert.ToInt32(str[i]))).ToLower() +
str.Substring(i+1);
i += 8;
}
}
return str;
}

Hala y gracias a esto podremos transformar cualquier nombre de columna en castellano con sus acentos y con sus eñes y con sus espacios al formáto válido en las consultas CAML de Sharepoint.

Los comentarios del principio se los dedico al Yeyo, para que vea que pese a haber leído el manual de estilo no lo aplico porque para eso este blog esss Miiio.


No se porqué me he acordado de Batman y del Señor de los anillos.


Publicar un comentario

lunes, 10 de noviembre de 2008

Y desde ahora todo por CAML

Las consultas a SPList por CAML ofrecen muchas ventajas, con lo que he sido yo, que iteraba todo siempre... la primera de ellas es la velocidad a la que se ejecutan, la segunda y, en según qué casos, más importante que la primera es la potencia que nos ofrecen.

Lo último que he tenido que hacer es un buscador en el que dados un parámetro y una lista:

  • Si el parámetro es vacío: Muestra los elementos vigentes de la lista.
  • Si el parámetro es "lst": Muestra un listado de todos los elementos.
  • Si el parámetro es otra cosa: Muestra los elementos que contienen la cadena parámetro en su título o en su descripción.

Todos los resultados se muestran ordenados por fecha de forma ascendente.

Es sorprendente lo simple que se hace una cosa así con las CAML Queries.

protected void buscaCAML(SPList lista, string parametro, HtmlTextWriter writer)
{
SPQuery query = new SPQuery();
string ordenado = "";

string consultaParametro = "" +
"{0}
" +
"{0}
" +
"
{1}";
consultaParametro = string.Format(consultaParametro, parametro, ordenado);

string consultaFechas = "" +
"
" +
"
{0}";
consultaFechas = string.Format(consultaFechas, ordenado);

if (string.IsNullOrEmpty(parametro))
query.Query = consultaFechas;
else if (parametro == "lst")
query.Query = ordenado;
else
query.Query = consultaParametro;

foreach (SPListItem anuncio in lista.GetItems(query))
writer.Write(anuncio["Título"].ToString());
}

Obviamente ésto es más rápido que cualquier método iterativo de búsqueda+ordenación, lo que queda por demostrar es que es más rápido que una consulta SQL al motor de búsqueda cuando la lista es grande...
Se admiten apuestas.


(Por cierto, el Highlighter es rápido y cómodo pero mi método anterior es más bonito cuando se trata de C#)

Publicar un comentario

lunes, 3 de noviembre de 2008

Controlar el consumo de memoria del SQL Server

Como habréis notado, en los servidores de pre-producción el SQL Server 2005 agota en un ratito toda la memoria que tengamos. Si apagamos la máquina y le ponemos más RAM el SQL vuelve a comérsela otra vez provocando en nosotros esa desagradable sensación de bucle infinito. Y lo peor es que da igual que la base de datos de contenido ocupe 100MB, el SQL ocupará 1GB antes de que nos demos cuenta.

En estos casos a mi me gusta bajarle un poco los humos y limitarle la cantidad de memoria que puede utilizar, así:

1.- Nos vamos al SQL Server Management Studio y abrimos las propiedades de la instancia en la que estamos trabajando:

Propiedades de la instancia de SQL

2.- Una vez allí vamos a la configuración de Memoria y retocamos los valores de Memoria mínima del server y Memoria máxima del server como mejor corresponda a nuestro server. A mi me gusta poner algo como 128/512, así:

Server Memory Options Minimum-Maximum

Y ya está, con esto hemos terminado con la vampirización de la memoria de nuestro server por parte del conde SQLServer.

Por supuesto también es posible que en los servidores de producción os convenga que el SQL Server tenga bastante memoria para él, en ese caso podréis poner la combinación que os apetezca, 2048/15360 por ejemplo en un server de 16GB.

Ah otra cosa, los Windows 2003 Server Enterprise con más de 3GB funcionan mejor si editamos el fichero c:\boot.ini y añadimos después de donde pone /fastdetect un /3G quedando el final de la línea

/noexecute=optout /fastdetect /3g

Publicar un comentario