First Monday de SUG.CAT el 5 de noviembre

Desde SUG.CAT, la asociación de usuarios de SharePoint en Catalunya, estamos encantados de invitar a todos los interesados a nuestro encuentro mensual regular (también llamado First Monday) que se celebra los primeros lunes de cada mes a las 18:30h. Este mes el First Monday cae en el lunes día 5 de noviembre.

sugcat 
¿Os gusta el nuevo logo de SUG.CAT?

Esta vez nos veremos en el lounge-bar 7Sins en C/Muntaner 7, muy cerca de la Plaza Universitat de Barcelona. Allí charlaremos de cosas de SUG.CAT y de SharePoint en general, con unas cervezas, unas tapas y un proyector.

¿Interesados? ¡Apuntaos en http://sugcat-1stmon-nov12.eventbrite.com/ y nos vemos en el encuentro!

Guía de viaje para SharePoint Conference 2012 en Las Vegas

image Ya falta menos para la conferencia SharePointera más grande del mundo. Si, estoy hablando de la Microsoft SharePoint Conference 2012 (o SPC12 para los amigos). En Las Vegas, Nevada, Estados Unidos de América, entre los días 12 y 15 de noviembre de este año.

A modo de resumen para mí y para otros viajeros de habla hispana que van a viajar a la SPC12, he creado esta serie de posts con la información más importante (a mi parecer) para alguien que se aventura a la conferencia.

Conociendo Las Vegas

Las Vegas es la capital del estado de Nevada. Todo el mundo ha oído hablar de él y es la meca de la industria del juego y del espectáculo. (Además, el cachondo que le puso el nombre de Nevada a un estado desértico se quedó con todo el mundo).

Ubicándonos en el mapa

Pues bien, Las Vegas realmente consta de dos partes principales: el Downtown y el Strip.

Downtown es el antiguo centro de Las Vegas y en él se ubican los casinos más emblemáticos de los 50, como El Cortez y Golden Nugget. También vale la pena visitar Fremont Street Experience, un espectáculo de pantallas cubriendo la calle Fremont.

The Strip (Las Vegas South Boulevard) es la larga avenida que empieza por Downtown hasta llegar al sur la ciudad, bordeando el aeropuerto. En el Strip están los hoteles más espectaculares, que se empezaron a construir en los años noventa. La SPC12 está en el extremo sur de los hoteles grandes de Strip.

¿Como llegar a/desde el aeropuerto?

Desde el aeropuerto internacional de McCarran de Las Vegas (LAS), hay varias maneras de llegar a la conferencia y a los hoteles. La más cómoda es ir en taxi (con un recargo de 1,80$ adicional al trayeco), la intermedia es tomar el bus lanzadera (shuttle) por unos 6-8$ o, si queremos algo más barato, el bus 109 con transbordo a The Deuce en SSTC (South Strip Transfer Center), lo que nos costará unos 3$ (podéis ver el plano aquí).

Para ir al aeropuerto desde la conferencia, la opción es o bien taxi o bien el bus Deuce con transbordo a 109.

¿Cómo moverse?

Para moverse por Las Vegas, a grandes rasgos tenemos tres opciones (ya que la opción de monorraíl de pago es un timo en toda regla demasiado cara para usarla una vez o dos):

Caminar

Las distancias en Las Vegas son grandes, pero no demasiado grandes para no poder recorrer el Downtown y Strip en unas horas. En noviembre ya estamos fuera de la época del calor desértico y podemos visitar a nuestro ritmo los diferentes hoteles/casinos y sus espectáculos. En algunos cruces hay hasta cintas transportadoras para llevarnos por el paso elevado y no tener que cruzar las calles por el paso cebra. Desde el hotel Mandalay Bay hay un tren monorraíl gratuito hasta el hotel Excalibur, lo que nos puede ahorrar un trozo.

Taxi

Los taxis no son muy caros, pero con el tráfico tan congestionado como en Las Vegas el trayecto puede durar más de lo que nos gustaría. Hay que tener en cuenta que los taxis en Las Vegas no se pueden parar en medio del Strip, sino que hay que ir a las entradas de los hoteles o en una calle transversal a Strip. Recordad que se suele dar una propina de unos 10-15% del precio del trayecto al taxista y 1$ al encargado de los taxis del hotel.

Bus

Las Vegas Bus Photo - Las Vegas, Nevada Tomar el autobús es el medio barato de moverse por Las Vegas.

El autobús de dos pisos, The Deuce, recorre el Strip a menudo. El ticket sencillo vale 3$ y el pase diario 8$. Podéis encontrar más información en la página del RTC, el consorcio de transporte de Nevada Sur. En la página hay planos de recorridos y los horarios.

El clima

El clima de Las Vegas es desértico: seco y caluroso durante el día y fresco por la noche. En las fechas de la conferencia la temperatura media es de 19ºC de día y 6ºC de noche. Para la semana de la conferencia, la previsión es de un tiempo soleado entre 17 y 21ºC (via AccuWeather). Es recomendable llevar una chaqueta para la noche y ropa cómoda durante el día.

¿Qué ver?

Básicamente, en Las Vegas se va a jugar y a ver espectáculos. Los espectáculos y actividades más recomendados son:

Casinos

Los casinos son uno de los atractivos más importantes de Las Vegas. Cada hotel tiene uno y los hay desde croupiers femeninos en lencería hasta los casinos de 1$ la jugada. Aquí os dejo unos consejos prácticos para desenvolverse en los casinos:

  • Si es vuestra primera vez en un casino y no entendéis un juego, preguntad al croupier de una de las mesas de apostar poco. Son muy serviciales.
  • Se cambia dinero por fichas en la misma mesa del juego. Las ganancias en fichas se cambian por dinero en las ventanillas de Cashier (la “jaula” de los cajeros). Suele estar en un lado del casino.
  • Si estáis jugando, os irán trayendo bebida y comida gratis. Sin embargo, hay que dar una propina de 1$ a la chica que lo trae.
  • No saquéis dinero de los cajeros automáticos en el mismo casino, la comisión es altísima. Podéis cambiar moneda extranjera en las ventanillas del casino (las que llevan el rótulo de Cashier, sin comisión) o en cajeros automáticos fuera del casino (en el aeropuerto o en los cajeros en la calle).
  • El juego donde la banca tiene la mayor ventaja son las máquinas tragaperras. El juego más equilibrado (menos ventaja de la banca) son el blackjack y el poker.
  • La regla práctica para no gastarse demasiado dinero es ir con el presupuesto del juego previsto en un bolsillo y meter las posibles ganancias en el otro. Cuando se acabe el dinero del bolsillo de juego, se acabó. Así no hay tentación de “ganar más”. Recordad el dicho: “para volver de Las Vegas con una pequeña fortuna, hay que llegar con una gran fortuna”.
  • Si os toca un premio elevado, os deducirán 30% en concepto de impuestos de la Hacienda americana (IRS). Para reclamar la parte que os toca, hay que rellenar el formulario de exención de retenciones para no residentes 1042-S. Os lo darán en el casino, pero vale la pena ir familiarizándose con él, por si acaso.

La conferencia de SharePoint

La conferencia se realiza en el centro de convenciones del hotel Mandalay Bay, en el sur del Strip.

El centro de convenciones

Es enorme, vale la pena tener en cuenta el tiempo de desplazamiento entre las sesiones. Con 11.000 personas cambiando salas a la vez, es fácil que se alargue más de lo previsto. Podéis descargar el mapa orientativo aquí o ver mapas de cada planta.

Las sesiones

Las sesiones de la conferencia serán desde el lunes 12 hasta el jueves 15 de noviembre, y se pueden ver en la página de SPC12 o bien en un fichero Excel (cortesía de René Modery). Pronto habrá una herramienta para poder planificar las sesiones online, en la página de la conferencia (MySPC).

Actividades oficiales

Aparte de las sesiones, hay tres eventos oficiales organizados por la conferencia (o sea Microsoft):

  • Welcome Party (domingo 11, de 18 a 21h): un cóctel de bienvenida y la apertura del área de exposición. Suele estar abarrotado de gente en plena caza de “swag” de los expositores (camisetas, bolis, llaveros, peluches…).
  • Evento nocturno (martes 13, de 19 a 22h): suele ser una fiesta/cena con música en vivo. Hace falta apuntarse en el MySPC. Hay rumores de que será en la “playa” (piscina con arena alrededor) del mismo Mandalay Bay.
  • Ask the Experts (miércoles 13, de 18:15 a 20:15h): en el espacio de exposición se podrán hacer preguntas a los MVPs y equipo de producto de SharePoint.

Actividades extraoficiales

La comunidad SharePoint y algunas empresas expositoras organizan actividades paralelas a la conferencia.

Referencias adicionales

Instalando la RTM de SharePoint 2013

Ayer por la tarde saltó la liebre: la versión RTM de SharePoint 2013 y Office 2013 estaba liberada en MSDN y TechNet. Tardé nada y menos en bajarme la ISO de SharePoint 2013 RTM e instalarla en una máquina virtual.

Respecto a la guía que hice sobre como montar la VM con SharePoint 2013 Preview, no hay ningún cambio apreciable.

La pantalla de la instalación

SharePoint 2013 Preview-2012-10-25-00-17-43

Configurando los servicios

SharePoint 2013-2012-10-25-12-08-38

Y al final, un Team Site con la RTM de SharePoint 2013

SharePoint 2013-2012-10-25-16-01-14

Para comparar, nada mejor que ver la Team Site de SharePoint 2013 Preview:

[SharePoint%25202013%2520Preview-2012-08-02-20-21-25%255B2%255D.png]

A simple vista cambia el logo, los tiles y el feed de noticias está más prominente.

Helpful SharePoint Tool for Solution Deployment Automation

I decided to give a try to a new tool that has been published at CodePlex, called SharePoint Solution Deployer (SPSD). It is built to automate solution deployment in different environments.

SPSD SharePoint Solution Deployer

The tool is built with PowerShell by Mattias Einig (Swedish SharePoint guys) and it’s made of a close-knit scripts that do the deployment in the following fashion:

  • The environment data is set as a XML config file, one per each environment
  • The solution WSP is dropped in a specific folder
  • Deploy script is run. It retracts the solution from all the servers, resets or recycles IIS and/or SharePoint services, uploads and deploys the solution, all with nice progress information.
  • You can also run pre and post deployment PowerShell scripts, if you need to ensure some non-SharePoint settings.

It’s very simple to configure: it’s just the XML environment file and your WSP file(s) and it runs smoothly.

image

Give the tool a try and make your own opinion.

Windows 8 and Synaptics TouchPad Driver

I installed Windows 8 on my Dell Studio laptop two weeks ago, and I found out that the Synaptics TouchPad driver supplied by Dell does not show the touchpad settings screen in Windows 8. I only use that screen to set the touchpad to disable itself when an external USB mouse is plugged in. Well, I could not do it in Windows 8.

Not until now, I mean.

Looking in the forums (specially http://www.sevenforums.com/hardware-devices/149723-synaptics-touchpad-auto-disable-usb-mouse.html and http://forum.notebookreview.com/sager-clevo/449196-np8662-auto-deactivate-touchpad.html) I saw that the solution is very easy indeed: change a single key in the registry.

Literally:

For those of you who want the "Disable internal pointing device when external USB pointing device is attached" option in the synaptics control panel, open regedit and go to HKEY_LOCAL_MACHINESOFTWARESynapticsSynTPEnh, right click and select New > DWORD (32-bit) Value and name it "DisableIntPDFeature". Modify it’s value to 33 in hexadecimal, or 51 in decimal to enable it to be default on.

Works like a charm

image

Las Apps de SharePoint 2013 (III): La primera app

Despúes de ver la introducción al modelo de las aplicaciones de SharePoint 2013 y de repasar los conceptos básicos de la infraestructura, vamos a profundizar en nuestro viaje creando una aplicación sencilla alojada en SharePoint.

La aplicación de ejemplo mostrará la ocupación en MB de un sitio de SharePoint y se actualizará mediante un botón “Refrescar”. El cálculo del espacio se hará sumando los tamaños de los ficheros alojados en las bibliotecas de ese sitio.

Crear la aplicación en Visual Studio 2012

Para empezar, abriremos Visual Studio 2012 y crearemos una nueva app de SharePoint 2013 con el nombre SpaceCounter.

New SharePoint 2013 app project

Acto seguido, completaremos los detalles del nombre (SpaceCounter) y la URL de prueba de la aplicación (http://sp2013). Es muy importante que elijamos la opción “SharePoint-hosted” en el último cuadro desplegable. Clicamos “Finish” y esperamos que Visual Studio cree la aplicación.

image

Echemos un vistazo a lo que ha generado VS2012. Veremos que hay un fichero llamado AppManifest.xml y una estructura de carpetas dentro del proyecto. El AppManifest.xml es el descriptor de la app para SharePoint: aquí está su ID (Guid), su nombre, el logo y la enumeración de recursos que necesita (permisos, tokens etc).

SharePoint app project open in VS2012

Para poder acceder al sitio host (el sitio desde el cual accedemos a la app), hay que editar el manifiesto en la parte de “Permission requests” y dar permisos de lectura al objeto Web, editando el grid que hay en ese apartado.

image

La solución está empaquetada junto con una feature (característica) de SharePoint, (auto)llamada SpaceCounter Feature1. En ella están definidas los módulos auxiliares y los ficheros que estos modulos contienen:

image

La carpeta Scripts contiene el fichero JS de la lógica de nuestra aplicación (App.js) junto con jQuery y otros ficheros JS auxiliares. Cabe recordar que no podemos usar código de servidor de SharePoint en nuestra app, aunque esté alojada en SharePoint.

La carpeta Content tiene el fichero CSS de la app y la carpeta Images las imágenes.

La carpeta Pages contienen las vistas (páginas HTML o ASPX de SharePoint, sin código de servidor). En nuestro caso tenemos la página Default.aspx que contiene un ejemplo de app que muestra el nombre del usuario.

image

Nuestro trabajo consistirá en modificar el fichero JS y el ASPX para introducir nuestra lógica y la vista HTML adecuada.

Crear la vista

Primero eliminaremos los restos de la app de ejemplo, concretamente el elemento p con el id ”message”. En su lugar pondremos el código siguiente:

La vista también tiene un pequeño script que invoca la función sharePointReady() al acabar de cargar. Allí cambiaremos el tag script para cargar el contexto del sitio host (en vez del contexto del sitio de la aplicación) y para volver a invocar la función mediante el botón Refresh. Aquí añadimos una función auxiliar llamada getParameterByName que nos sacará los parámetros de la URL de la aplicación. (Si a estas alturas tenemos dudas sobre que es el sitio host y que es el sitio de la aplicación, repasemos el post anterior donde explico estos conceptos).

<script type=”text/javascript”>
var hostweburl;
var appweburl;

$(document).ready(function () {
hostweburl = getParameterByName(“SPHostUrl”);
appweburl = getParameterByName(“SPAppWebUrl”);
var scriptbase = hostweburl + “/_layouts/15/”;
$.getScript(scriptbase + “SP.Runtime.js”,
function () {
$.getScript(scriptbase + “SP.js”,
function () { $.getScript(scriptbase + “SP.RequestExecutor.js”, sharePointReady); }
);
}
);
$(“#btnRefresh”).click(function () { sharePointReady(); });
});

function getParameterByName(name) {
name = name.replace(/[[]/, “\[“).replace(/[]]/, “\]”);
var regexS = “[\?&]” + name + “=([^&#]*)”;
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search);
if (results === null)
return “”;
else
return decodeURIComponent(results[1].replace(/+/g, ” “));
}
</script>

Crear la lógica

Reemplazaremos el contenido del fichero App.js con este código en JS:

var context;
var lists;

// This function is executed after the DOM is ready and SharePoint scripts are loaded
// Place any code you want to run when Default.aspx is loaded in this function
// The code creates a context object which is needed to use the SharePoint object model
function sharePointReady() {
context = new SP.ClientContext(appweburl);
var factory = new SP.ProxyWebRequestExecutorFactory(appweburl);
context.set_webRequestExecutorFactory(factory);
var appContextSite = new SP.AppContextSite(context, hostweburl);
var web = appContextSite.get_web();
lists = web.get_lists();
context.load(lists);
context.executeQueryAsync(onGetListsSuccess, onGetListsFail);
}

function onGetListsSuccess(sender, args) {
var listsEnumerator = lists.getEnumerator();
var listItemsArray = [];
var i = 0;
var size = 0;
// — Agrupamos todas las query en un solo objeto cliente
var query = SP.CamlQuery.createAllItemsQuery();
while (listsEnumerator.moveNext()) {
var list = listsEnumerator.get_current();
// — Miramos si la lista es una biblioteca
if (list.get_baseType() === 1) {
listItemsArray[i] = list.getItems(query);
context.load(listItemsArray[i], ‘Include(File, FileSystemObjectType, File.Length)’);
i++;
}
}
// — Ejecutamos la query con todas las listas de golpe
context.executeQueryAsync(function (sender, args) {
// — Recogemos el resultado para cada una de las listas
for (j = 0; j < i; j++) {
items = listItemsArray[j];
var itemEnumerator = items.getEnumerator();
while (itemEnumerator.moveNext()) {
var item = itemEnumerator.get_current();
// — Solo nos interesan ficheros (fsoType = 0)
if (item.get_file() !== null) {
if (item.get_fileSystemObjectType() === 0) {
size = size + item.get_file().get_length();
}
}
}
}
var totalSizeInKB = size / 1024;
totalSizeInKB = totalSizeInKB.toFixed(2);
$(“#spaceInKB”).text(totalSizeInKB + ” KB”);
}, onGetListsFail);
}

function onGetListsFail(sender, args) {
alert(‘Failed to get list data. Error:’ + args.get_message());
}

La función sharePointReady() será el punto de entrada. Aquí listaremos las todas las listas de nuestro sitio de host (pasado como parámetro appWebUrl desde Default.aspx) mediante el método get_lists(). En el callback de la ejecución de esta consulta, llamaremos a la función onGetListsSucccess().

En esta función ya tenemos las listas del sitio host y haremos una consulta recursiva por cada lista. Para no hacer N llamadas a SharePoint, agruparemos todas las consultas en un array y haremos la consulta CAML de todos los elementos a SharePoint con todas las listas a la vez. Al volver de la consulta, sumaremos los tamaños en bytes de cada elemento de tipo documento.

Para evitar los errores, sólo haremos la consulta de aquellas listas que tengan como tipo base la biblioteca de documentos (list.get_baseType() === 1).

Nota: para poder acceder a la propiedad File de un elemento, donde tenemos el tamaño en bytes, hay que cargar previamente estas propiedades mediante esta linea: context.load(listItemsArray[i], ‘Include(File, FileSystemObjectType, File.Length)’);

Al final, escribiremos el tamaño de la suma (redondeado a 2 decimales) en el espacio previsto en la vista.

Desplegar y probar

Para desplegar la app, haremos una ejecución apretando F5. Visual Studio empaquetará la solución y la subirá a SharePoint, quitando antes la versión anterior, si la hubiera.

image

Al proyecto le he añadido una imagen como logo de la aplicación, de tamaño 96×96 pixeles.

Una vez desplegada la app, se nos mostrará la pantalla de confirmación de permisos para la aplicación. Aquí se nos pide acceder en modo lectura a las listas y bibliotecas del sitio host. Confirmamos la elección clicando el botón “Trust”.

image

Ahora, nuestra app sale en la lista de contenidos del sitio.

image

Clicando en nuestra app, se abre una nueva ventana con la app en ejecución.

image

Nota: si os pica la curiosidad, podéis examinar la URL que se lanza al abrir la aplicación.

http://app-6855013c35bdd3.app.sharepoint.local/SpaceCounter/Pages/Default.aspx?SPHostUrl=http%3A%2F%2Fsp2013&SPLanguage=en%2DUS&SPAppWebUrl=http%3A%2F%2Fapp%2D6855013c35bdd3%2Eapp%2Esharepoint%2Elocal%2FSpaceCounter

Aquí podemos ver la URL del sitio de la app, la URL de inicio de la app y los tres parámetros que se pasan por defecto: la URL del sitio host (SPHostWebUrl), la URL del sitio web de la app (SPAppWebUrl) y el idioma (SPLanguage).

Podéis descargar el código fuente de esta aplicación en mi cuenta de SkyDrive.

En el próximo post vamos a ver como mejorar la app y como incrustarla en el sitio host.

Activate Windows 8 Enterprise License without Volume Activation

I was trying to activate my company’s Windows 8 Enterprise license but I was met repeatedly with the “No DNS Servers Configured: Code 0x8007267C” error during activation. It is caused by the missing Volume Activation Management Tool deployed in the company Active Directory. However, we still haven’t deployed this setup but I wanted to activate my license.

In the previous version of Windows, you could change the key into a MAK (Multiple Activation Key) and then activate it without hassle. In Windows 8 this possibility is still available, but it is somewhat hidden.

You should run the following tool to change the key and activate Windows online:

  • slui.exe 3 (for online activation)
  • slui.exe 4 (for phone activation)

I hope that it helps.

Materiales del evento de AndorraDotNet sobre JavaScript

El viernes pasado, 5 de octubre de 2012, tuve el placer de asistir como ponente en el encuentro del grupo de usuarios de .NET en Andorra, AndorraDotNet. Lluís Franco, el organizador del grupo, me invitó a dar una charla sobre las técnicas modernas de programación en JavaScript orientadas para los desarrolladores de C#.

cropped-logo01_240[1]

Desde aquí quiero agradecer a los miembros de AndorraDotNet, con Lluís Franco en cabeza, por la hospitalidad y buena compañía que me brindaron en todo momento. Tengo muchas ganas de volver a realizar una visita y compartir un poco más entre todos el conocimiento y las anécdotas.

Mi sesión sobre JavaScript estuvo orientada en tres grandes bloques: las diferencias no obvias de JS y C# (llamadas “JS != C#”, una extensa explicación de las funciones y el encapsulamiento, y al final un breve resumen de las librerías más importantes de JavaScript de hoy en día.

Adjunto la presentación en SlideShare.