Wilfried Woivré & .Net

Administrer, et modifier son site sur Wordpress

JUIN17

On a vu dans un article précédent, comment déployer Wordpress sur Azure en quelques clics, et très peu de temps, si vous ne savez toujours pas comment faire, voici un peu de lecture

 

Commençons déjà par nous rendre sur le nouveau portail Windows Azure, puis dans la partie Web Sites, choisissez votre site fraichement déployé. On peut donc voir ci dessous, le tableau de bord de notre application.

 

image

 

Ce tableau de bord, nous permet donc de rapidement visualiser les ressources utilisées par son site internet au niveau de notre instance. Ici par exemple on voit que mon Wordpress ne prend que 13,20Mb de place sur les 1024 qui me sont attribués.

 

Il est possible de voir aussi les différentes informations de monitoring récupérés sur notre site, comme par exemple le temps CPU, il est possible de configurer les données affichées dans ce graphique dans l’onglet Monitor, il est possible de rajouter des compteurs sur les différents types d’erreurs http, ou les requêtes effectuées avec succès sur notre site.

 

La partie de configuration nous permet de configurer les différents frameworks installés comme la version de .Net disponibles, et si PHP est activé. Il est possible de gérer aussi l’activation des logs, et on peut gérer les différentes clés de configuration associé au site.

 

Maintenant la partie qui me semble le plus intéressant, c’est la partie liée à la montée en charge de votre site :

 

image

 

En effet, c’est via cette interface qu’il est possible de soit utilisé des instances réservés ou des instances partagées, en gros c’est hébergement dédié ou mutualisé ! Il est d’ailleurs possible de mettre jusqu’à 3 instances de votre site en mode partagé.

Le dernier onglet quand à lui nous permet de voir les ressources liées à notre instance, donc ici notre base de données mysql.

 

Maintenant qu’on a vu ce qu’apporte le portail dans le management de notre site internet, il faut savoir qu’il est aussi possible de modifier notre site via WebMatrix, il suffit pour cela de cliquer sur le bouton WebMatrix dans le menu en bas du tableau de bord. Cela aura pour effet de configurer automatiquement votre WebMatrix afin qu’on puisse éditer simplement notre site.  Il installe par ailleurs une copie locale de notre environnement (mysql …) afin d’effectuer des tests sur notre machine.

 

image

Il est possible par la suite de modifier, le contenu du site, par exemple le thème en y ajoutant du code personnel, comme si dessus au dessus de chaque article :

image

Après avoir validé que vos modifications marchent en local, vous pourrez, effectuer une publication de votre site. Et comme on peut le voir ci dessous, il est possible de faire un package différentiel, et de ne pas redéployer l’intégralité du site à chaque fois

image

 

Dernière bonne nouvelle, la publication est aussi rapide que le déploiement du site, à condition que vous aillez une connexion supérieure à 56K !

Remonter

Déployer Wordpress sur Azure en 3 clics et un café !

JUIN11

Suite à toutes les nouveautés de la plateforme Windows Azure sortie en ce début juin, il y en a une que j’apprécie tout particulièrement, c’est la partie Web Sites, que vous pouvez retrouver sur le tout nouveau portail Azure : http://manage.windowsazure.com

On remarquera au passage, que Silverlight a disparu, et que ça y est vous pouvez y accéder sans à avoir à installer Silverlight !

image

 

Bon et sinon, à quoi ça sert, avant le 7 juin, quand je voulais faire un site web, je créais un nouveau rôle Azure, et c’est parti pour de l’ASP.Net, ou tout autre langage supporté par Windows Azure ! Alors certes c’était pratique on avait la main sur tout ce qui se passait, mais si on voulait installer Wordpress, par exemple, on avait en gros cela à faire : http://www.siteduzero.com/tutoriel-3-519694-deployer-wordpress-sur-windows-azure.html (si le tutoriel n’est pas mis à jour)

  • Création du serveur SQL Azure
  • Création de la base de données SQL Azure
  • Création du compte de stockage
  • Téléchargement  & configuration de Windows Azure Companion
  • Déploiement sur Azure
  • Installation de Wordpress
  • Configuration de Wordpress

 

Bon ce n’était pas les 12 travaux d’Astérix, mais en gros le blog n’était pas en ligne avant une petite demi journée, si on n’a rien oublié !

Bref, maintenant c’es fini, il suffit d’aller dans la partie Web Site, faire New > From Gallery et choisir Wordpress, ou autre chose, la galerie contient aussi Drupal, Orchad

image

 

Il vous suffit ensuite de donner un nom à votre blog, définir dans quel datacenter, vous voulez l’héberger, et utiliser une base de données MySQL existante ou en créer une nouvelle.

 

image

 

Ensuite, configuration du MySQL, soit lui donner un joli nom, et dire ou on le déploie

 

image

 

Alors là il vous suffit de prendre un café, je vous conseille un expresso, que vous avez préparer à l’avance, car ça déploie le tout en 1 à 2 minutes, qui a dit que déployer Wordpress sur Azure ça prenait 1/2 journée !

 

Et voilà, vous avez dorénavant un joli site Wordpress sur Azure, avec une interface d’administration, et un blog par la suite !

image

 

Bref, pour ma part j’avais un Wordpress chez Ikoula avant la refonte de mon blog en .Net, et vous mettez autant de temps à créer votre blog, sauf que derrière vous avez la puissance du Cloud !

Nous verrons dans un autre article, comment le nouveau portail nous permet de gérer nos instances déployés en tant que Web Sites.

Remonter

C# 4.0 : Le mot clef dynamic et la Reflexion

NOVE4

Comme vous avez du en entendre parler une des grandes nouveautés de la version 4 du framework est le mot clef dynamic. Celui-ci permet de simplifier l’utilisation de la réflexion dans les applis .Net.

On va voir dans cet article les différentes façon d’utiliser la réflexion entre la 2.0 et la 4.0. Pour l’exécution de ces diverses méthodes, nous allons utiliser la réflexion sur une DLL, réalisé en F#, dont le contenu fortement complexe est le suivant :

 

module Module1

type Multiplication(val1, val2) =
    let result = val1 * val2
    member obj.Result = result

 

Commençons donc par le tout début, c’est à dire avec un bon vieux InvokeMember, comme on peut le voir ci-dessous :

Type Module = Assembly.LoadFrom("CalcLibrary.dll").GetType("Module1");
Type Multiplication = Module.GetNestedType("Multiplication");
object multiplication = Activator.CreateInstance(Multiplication, new object[2] { val1, val2 });
PropertyInfo propertyResult = multiplication.GetType().GetProperty("Result");
txbResult.Text = propertyResult.GetValue(multiplication, null).ToString();

On obtient donc dans notre jolie interface le bon résultat comme on peut le voir aussi, et heureusement j’ai envie de dire :

 image

Bon malgré le fait que cette réflexion ne soit pas trop poussé, on se rappelle tout de suite que c’est toujours très verbeux. Heureusement, le mot clef dynamic arrive.

 

On voit donc qu’on charge toujours notre DLL, que l’on crée une instance, non pas cette fois dans une variable de type object, mais de type dynamic, grâce à laquelle on a directement accès à la propriété Result.

 

Type Module = Assembly.LoadFrom("CalcLibrary.dll").GetType("Module1");
Type Multiplication = Module.GetNestedType("Multiplication");
dynamic multiplication = Activator.CreateInstance(Multiplication, new object[2] { val1, val2 });
txbResult.Text = multiplication.Result.ToString();

Et notre fenêtre donne toujours le bon résultat :

image

Bien entendu, le mot clef dynamic est à utiliser à bon escient, mais je suppose que je n’ai pas besoin de vous le rappeler ! Donc surtout dans les phases de réflexion, et l’interopérabilité avec le monde COM

Donc pas de solution cette fois-ci encore, tout le code est là ! Je tâcherais de vous faire une petite présentation de F# bientôt (si j’ai un peu de temps …)

Remonter

Silverlight : Communication avec le DOM

JUIN21

Alors un peu de ma vie, récemment au travail on m’a demandé les possibilités d’interaction entre Silverlight et une page ASPX. Donc bon après une réponse brêve et j’espère explicite de ma part, que ce qu’il envisageait de faire est totalement possible, et plus puissant via le code DOM ! Bon après coup, je me suis dis qu’il serait tout de même bien de faire une petite démonstration des possibilités qu’offre Silverlight pour la communication avec le DOM :) Alors on va partir d’une application toute simple qui ne comporte qu’un bouton en XAML. Pour mon projet, j’ai ajouté sur chacune des pages hébergeant mon application Silverlight, une div ayant un ID=”MyDiv”. Nous avons donc ceci lorsque nous lançons l’application : image On voit bien mon bouton, et ma div dans le code DOM. Maintenant, lorsque l’on clique sur le bouton Silverlight on obtient ceci : image On voit bien que sans modifier la page HTML/ASPX dans laquelle est hébergée mon application, le code DOM a bien été modifié. Maintenant voyons l’action engendrée par le click sur le bouton “Create HTML Page”
private void Button_Click(object sender, RoutedEventArgs e)
{
    HtmlElement host = HtmlPage.Document.GetElementById("MyDiv");

    HtmlElement table = HtmlPage.Document.CreateElement("table");
    HtmlElement tr = HtmlPage.Document.CreateElement("tr");

    HtmlElement tdName = HtmlPage.Document.CreateElement("td");
    HtmlElement labelName = HtmlPage.Document.CreateElement("label");
    labelName.SetAttribute("innerText", "Valeur : ");
    tdName.AppendChild(labelName);
    tr.AppendChild(tdName);

    HtmlElement tdValue = HtmlPage.Document.CreateElement("td");
    HtmlElement inputValue = HtmlPage.Document.CreateElement("input");
    inputValue.SetAttribute("type", "text");
    inputValue.SetAttribute("id", "inputValue");
    tdValue.AppendChild(inputValue);
    tr.AppendChild(tdValue);

    HtmlElement tdSubmit = HtmlPage.Document.CreateElement("td");
    HtmlElement inputSubmit = HtmlPage.Document.CreateElement("input");
    inputSubmit.SetAttribute("type", "button");
    inputSubmit.SetAttribute("id", "inputSubmit");
    inputSubmit.SetAttribute("value", "Valider");

    inputSubmit.AttachEvent("onclick", (object s, EventArgs ea) =>
        {
            HtmlElement value = HtmlPage.Document.GetElementById("inputValue");
            String v = value.GetAttribute("value");
            HtmlPage.Window.Alert(String.Concat("Value is : ", v));
        });

    tdSubmit.AppendChild(inputSubmit);
    tr.AppendChild(tdSubmit);

    table.AppendChild(tr);
    host.AppendChild(table);
}
Alors dans ce code, on se sert essentiellement des classes HTMLPage et HTMLElement comme vous pouvez le voir ! Donc dans ce petit bout de méthode, l’on va créer un tableau qui contiendra notre libellé , notre valeur à saisir, et notre bouton valider. On ajoute de plus un évènement au click de son bouton, qui va tout simplement nous afficher une Alerte javascript contenant la valeur de notre textbox. Donc bien, entendu, en Silverlight, on ne peut pas uniquement lire et écrire dans le DOM, on peut aussi appeler des fonctions JavaScript depuis Silverlight et vice-versa, mais cela je vous l’ai montré dans le post précédent. Donc avec tout cela, vous pourrez faire tout ce que voulez pour intégrer correctement des projets Silverlight dans vos applications Web. Je ne vous fournis pas la démo cette fois-ci, puisque tout le code est là :)
Remonter

Silverlight : Utilisation du Json pour une application “Cross-Site”

JUIN17

Dans ma quête de toujours vouloir accéder aux données en Silverlight, je vous ramène une petite astuce tout en JavaScript  !!

Bon alors histoire de vous résumer un peu le précédent article pour ceux qui ne voudrait pas le relire….

J’avais montré qu’en Silverlight on pouvait accéder à des données situées en base par l’intermédiaire d’une page en PHP qui génère un XML avec ces données, ou alors un Web Service sur une page ASPX, et bien entendu toutes les combinaisons possibles de ces deux exemples.

Cependant il y avait un souci avec ce genre d’accès aux données, il fallait que le site distant ait à la racine de son serveur IIS ou Apache un fichier XML autorisant justement l’accès de Silverlight à leurs données. Ce qui il faut l’avouer ne facilite pas toujours les choses ….

Il existe cependant une méthode qui existe en Javascript pour créer une application dîtes “Cross-Site”. Cette méthode est dans plusieurs de mes projets pour apprendre Silverlight, mais j’ai néanmoins retrouvé un très bon site ou tous le code est montré en détail.

http://dimebrain.com/2008/12/how-to-make-cross-site-service-calls-in-silverlight-using-json.html (Site en anglais)

Moi je vais vous présenter donc très succinctement comment cela marche.

Donc en fait comme le nom l’indique, cette opération est possible grâce à la communication du plug-in Silverlight avec le code DOM de la page qui l’héberge. C’est donc pour cela que l’on peut voir que le code exécuter en C# pour appeler ce type de service est assez maigre.

public static void SendJson(this string url)
{
    if (!_scriptables.ContainsKey("Json"))
    {
        HtmlPage.RegisterScriptableObject("Json", new JsonEvent());
    }

    var id = HtmlPage.Plugin.Id;
    HtmlPage.Window.Invoke("jsonLoad", url, id);
}

En effet dans cette méthode d’extension de la classe String, on peut appeler de façon simple et néanmoins efficace notre méthode JavaScript ci-dessous

function jsonLoad(url, id) {
    $id = id;
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    script.src += hasParameters(url) ? '&' : '?';
    script.src += 'callback=jsonCallback';

    var head = document.getElementsByTagName('head')[0];
    head.appendChild(script);
};

C’est donc cette fonction qui va appeler notre site distant afin qu’il effectue le traitement et nous renvoie les données via le callback en Javascript.

function jsonCallback(jsonData) {
    var id = $id;
    var silverlight = document.getElementById(id);

    if (silverlight) {
        var response = JSON.stringify(jsonData);
        silverlight.Content.Json.Received(response);
    }
};

Et voilà comme “par magie”, on récupère nos données dans notre application Silverlight., on peut donc les traiter et les afficher par la suite.

 

Bon alors je voulais vous faire une petite démonstration en récupérant quelques articles de mon blog (oui je sais c’est follement original) mais j’ai appris à mes dépends que WordPress ne contient ni le fichier XML qu’il faut pour le premier mode d’accès aux données que j’ai cité. Et qu’en plus, il ne supporte pas nativement les fonctions de CallBack en Javascript, certains plug-in le font mais on ne peut en installer sur les sites hébergés chez WordPress.

Donc voilà, comme quoi il faut faire très attention à la façon d’accéder à des données distantes.

Remonter