Comment passer du mode multidimensionnel au mode tabulaire sous Sql Server 2012

Lors de l’installation d’une instance Analysis Services, on a le choix entre 3 modes :

1. Le Multidimensionnel
2. Tabulaire
3. Powerpivot (pour Sharepoint)

Pour voir lequel de ces trois modes est installé, en se connectant à Analysis Services dans SSMS, on peut voir quelle icone apparaît.

Les differents mode dans SSM

Les differents modes dans SSMS

Malheureusement, nous ne pouvons avoir qu’un seul mode par instance AS.
Pour utiliser plusieurs modes, il faut donc installer des instances différentes.

Il y a tout de même une solution simple qui nous évitera d’installer une autre instance.

Lire la suite

Windows 8.1 Assigned Access ou comment passer en mode borne

Comme nous avons pu le voir dans de précédents articles, la mise en place d’une application Modern-UI en mode borne reste relativement complexe. Elle nécessite l’utilisation de Windows 8 Embedded qui est particulièrement obscure pour les non-habitués des systèmes embarqués.

Windows 8.1, grosse mise à jour du système d’exploitation, va être lancée mi-octobre. Elle inclura une nouvelle fonctionnalité, Assigned Access, véritable mode borne puisque permettant de verrouiller un utilisateur sur une seule application.

Mise en place

L’activation de l’Assigned Access est très simple et réalisable par le seul biais du panneau de configuration en mode Modern-UI.

Etape 1 : création de l’utilisateur

Connecté en tant qu’administrateur local, il convient tout d’abord de créer l’utilisateur qui sera destiné au mode borne.

Assigned Access - Create user

Etape 2 : ouverture de session sur le nouvel utilisateur

Il est ensuite nécessaire d’ouvrir au moins une fois la session de l’utilisateur créé. A cette occasion il est possible d’installer l’application par les moyens habituels (via le Store ou un package).

Etape 3 : activation de l’Assigned Access

De retour sur l’administrateur local, il suffit de se rendre dans la section Assigned Access de la gestion des utilisateurs, puis de sélectionner l’utilisateur et l’application.

Assigned Access - Accounts

Assigned Access

Fonctionnement

L’application est directement lancée lors de l’ouverture de session de l’utilisateur « sécurisé ». Il est impossible d’en sortir, de la réduire, et d’accéder à quoi que ce soit d’autre du système (Start Menu, Bureau, barres de charms, …).

L’application reste en revanche tout à fait utilisable, y compris ses barres supérieure et inférieure.

Le fait que les charms soient inaccessibles est nécessaire pour le verrouillage mais peut contraindre à modifier légèrement l’application (par exemple en y intégrant le champ de recherche, puisque le charm de recherche ne sera pas disponible).

Le seul moyen de sortir de la session et retourner sur le choix de l’utilisateur est d’appuyer cinq fois de suite sur la touche Windows.

Assigned Access - Result

Informations complémentaires

  • Assigned Access sera disponible sur toutes les versions de Windows 8.1 (RT, Pro, Enterprise)
  • La fonctionnalité est intégrée à 8.1 RTM mais pas aux autres versions anticipées
  • Pour une application hors Store, le sideloading est toujours nécessaire
  • En mode Assigned Access, la configuration réseau n’est pas accessible mais la connexion automatique a bien lieu

Assigned Access s’avère donc efficace et simple à mettre en place, pour bénéficier d’une application Modern-UI en mode borne.

[SSIS] Déplacer et renommer un fichier grâce à la tache File System Task

Introduction

Dans ce tutoriel, nous allons voir un exemple d’utilisation du composant File System Task.
Vous pouvez utiliser cette tache pour les cas suivants :

  1. Copier un dossier ou un fichier d’un lieu à un autre
  2. Créer un dossier
  3. Supprimer un dossier ou un fichier
  4. Supprimer le contenu d’un dossier ( tous les fichiers et les dossiers)
  5. Déplacer un dossier ou un fichier
  6. Renommer un fichier

Nous ne verrons que les deux derniers cas, soit le cas 5 et le cas 6.

Lire la suite

Gérer le layout d’une WinJS.UI.ListView de facon déclarative

Gérer les états visuels dans les applications Windows 8 en html / javascript est vraiment intuitif grâce aux media-queries. D’applications en applications il reste cependant un aspect pénible lorsqu’on attaque la gestion du snap et les changements d’orientation : la ListView.
Avec Windows 8.1 ce contrôle permet maintenant (enfin) de faire des grilles horizontales ou verticales, ou de gérer l’affichage en listes.
Bien souvent on passe d’un mode de layout à l’autre selon l’orientation et/ou la résolution, et c’est une des rares chose qu’on est amené à faire en code plutôt qu’avec les media-queries. Avec Windows 8.1 et son mode snap vitaminé, on doit parfois contrôler la résolution et plus seulement les états visuels, donc encore plus de code à faire (et pas du genre passionnant).

Il serait tellement plus agréable de pouvoir déclarer des media-queries et leur associer le layout de la ListView…

Mais attendez… pourquoi on ne pourrait pas faire ca ? les media-queries peuvent être manipulées très facilement en javascript :

var mq = window.matchMedia("(orientation : portrait) and (max-width: 400px)");
if (mq.matches){
    //la media-querie est ok
}

Pas mal n’est ce pas ? il y a encore mieux, on peut déclarer une media-querie et souscrire à un abonnement qui va se déclencher lorsque celle-ci sera évaluée !

var mq = window.matchMedia("(orientation : portrait) and (max-width: 400px)");
mq.addListener(function(mq){
    if (mq.matches){
        //la media-querie est ok
    }
});

Vous voyez où je veux en venir ? il suffit de wrapper ça dans un joli contrôle WinJS et de le faire pointer sur la liste. Quelques lignes de code plus tard, on a quelque chose comme ca dans la page html :

<div id="mylistview" data-win-control="WinJS.UI.ListView" data-win-options="{
    itemTemplate: select('#listitemtemplate'),
    itemDataSource: DummyDataSource
}"></div>

<div id="listlayout" data-win-control="MCNEXT.UI.SmartListLayout" data-win-options="{
    listView: select('#mylistview'),
    layouts:{
        default : { query: '(orientation: landscape)'}, layout : WinJS.UI.GridLayout
        vert : { query: '(orientation: portrait) and (min-width: 350px)', layout : WinJS.UI.GridLayout, options: { orientation : 'vertical'}},
        snap : { query: '(orientation: portrait) and (max-width: 350px)', layout : WinJS.UI.ListLayout },
    }
}"></div>

Pour le voir de vos propres yeux, vous pouvez télécharger une appli de démo ici (pour Windows 8.1).
Pensez à renommer le fichier en .zip (WordPress ne permet pas de hoster des zip, allez savoir pourquoi…).

Si vous êtes un grand cynique, vous me direz : « Quel intérêt de mettre le code dans le html plutôt que dans le js ? ». Au dela de la « beauté » de la chose, imaginez la quantité de code javascript pour gérer proprement le cas simple ci-dessus… par ailleurs, cette approche vous permet de rester synchro entre votre code et votre css, en reposant sur les mêmes media-queries. A l’échelle d’une application, croyez moi ça change la vie.

Notez que contrairement à ce qui se passe en CSS, vous n’avez pas d’état par défaut. Il faut donc définir soigneusement ses queries pour que les évènements se déclenchent comme prévu, sans laisser de trou.

Un exemple concret sera plus parlant. Admettons qu’on déclare les queries de la facon suivante :

<div id="listlayout" data-win-control="MCNEXT.UI.SmartListLayout" data-win-options="{
    listView: select('#mylistview'),
    layouts:{
        default : { query: '(orientation: landscape)'}, layout : WinJS.UI.GridLayout
        vert : { query: '(orientation: portrait)', layout : WinJS.UI.GridLayout, options: { orientation : 'vertical'}},
        snap : { query: '(orientation: portrait) and (max-width: 350px)', layout : WinJS.UI.ListLayout },
    }
}"></div>

on a enlevé le « min-width » de la 2e querie. En css cela n’aurait pas d’impact, mais ici la 2e query ne sera pas déclenchée systématiquement lorsque vous redimensionnez l’application snappée
(faites le test…). Prenez soin que vos plages se chevauchent correctement lorsque vous prenez une approche « responsive ».

Notre contrôle utilise des évènements sur les media queries. Pour éviter les problèmes désagréables comme les zombies (des éléments du DOM morts mais tenus vivants par ces évènements), et les fuites mémoire, il est préférable de libérer ces évènements lorsqu’on quitte la page.
Sous Windows 8.1, la destruction est gérée automatiquement car WinJS introduit un modèle de libération de mémoire. Les éléments à libérer sont marqués de la classe « win-disposable ». Lors du « unload » de la page, les éléments marqués vont être libérés automatiquement (enfin le code est dans Navigator.js…) en appelant la méthode dispose du contrôle.
Le contrôle est parfaitement utilisable sous Windows 8, la seule petite subtilité est qu’il vous faudra appeler manuellement la méthode « dispose » dans l’évènement unload de votre page.

Happy ListView

[Blend] Opérations sur les Path

Dans un précédent article je vous avais présenté comment convertir un objet en Path. Dans cet article nous allons voir comment combiner plusieurs objets en un seul Path.

Nous partirons d’une page contenant un canvas et 3 rectangles.

Etat initial

Etat initial

Dans l’onglet « Objects and Timeline » nous allons sélectionner chacun des rectangles en utilisant la combinaison Ctrl + Clic gauche. On commence par le vert, puis le rouge et enfin le bleu. L’ordre de sélectionner a en effet un impact sur le résultat de l’opération suivante.

Sélection des rectangles

Sélection des rectangles

Lorsque chacun des rectangles a été sélectionné on va les fusionner. Pour cela il faut naviguer dans le menu « Object » et dans le sous-menu « Combine » on sélectionne « Unite ».

Sélection de l'opération d'union

Sélection de l’opération d’union

Le résultat est un Path qui représente l’union des trois rectangles. On remarque que la couleur et le nom de l’élément choisis par Blend correspond au dernier rectangle sélectionné. Ici c’est donc le bleu qui l’emporte.

Résultat de l'union

Résultat de l’union

Vous avez sans doute remarqué d’autres opérations disponibles dans le menu Combine. Voici donc un description de chaque opération. Le résultat, en sélectionnant toujours le rectangle rouge en dernier, est quant à lui visible dans le diaporama en dessous.

Substract

La soustraction va retirer du dernier rectangle sélectionné l’union des deux autres.

Intersect

L’intersection va conserver la forme correspondant à la zone où tous les rectangles se superposent.

Divide

La division va découper la forme résultant de l’union des rectangles avec les bords de chaque rectangle laissant ainsi l’aspect général intact mais fournissant plus de bords.

Exclude Overlap

Cette opération va conserver à l’écran toutes les zones qui ne se superposent pas dans sélection.

Pour mieux comprendre le résultat vous pouvez d’abord effectuer l’opération sur bleu et vert, puis sur la forme résultant et rouge.

Manipulation des Path

Certaines opérations sur les Path sont disponibles dans le menu « Object » et le sous-menu « Path ». Une opération intéressante est « Release Compound Path ». Cette opération va générer autant de Path que possible en suivant les divisions d’une forme.

Diaporama des résultats


Conclusion

Blend dispose de capacités de manipulations d’objets très puissantes et qui sont malheureusement assez peu connues.
Maintenant c’est à vous de tester tout cela et de créer des interfaces toujours plus riches.

Liens utiles :

http://msdn.microsoft.com/en-us/library/vstudio/jj171064.aspx