Techniques et coding
Articles techniques sur le web design et la programmation CSS, PHP, XHTML mais également Visual Basic.Net !
Articles techniques sur le web design et la programmation CSS, PHP, XHTML mais également Visual Basic.Net !
Il n’existe pas de fonction native en VB.Net pour nettoyer un texte des balises HTML qu’il contient, à la manière de la fonction StripTags de PHP. Voici un petit hack pour ce faire, en une ligne de code (ou presque !) Lire la suite…
Lorsque l’on est développeur de logiciels, il arrive souvent que notre vision se cantonne à notre propre expérience. Il en va de même pour les fonctions que l’on va intégrer à nos développements, et plus particulièrement lorsque ces derniers concernent des outils que l’on utilise soi-même pour ses propres besoins !
Dans le cadre de la mise en oeuvre de la version 2.0 d’effiSpin, mon logiciel de content spinning, j’ai établi un listing de fonctionnalités que je désirais intégrer Lire la suite…
Employée par un nombre grandissant de personnes, la méthode du content spinning est de plus en plus utilisée afin d’augmenter la productivité dans les processus de rédaction web et plus particulièrement dans la phase de link building lors du référencement des sites Internet.
Pourtant, il n’est pas donné à tout le monde de pouvoir construire un « beau » masterspin (texte à partir duquel nous allons pouvoir générer une grande quantité de variantes plus ou moins différentes) et plus particulièrement lorsqu’il s’agit d’utiliser la résultante de ce masterspin dans une démarche « clean » (terme que je préfère personnellement à « white hat »
) sans obtenir une imbuvable soupe de mots, telle que celle que l’on retrouve parfois sur les splogs.
Voici une méthode relativement simple que j’utilise personnellement depuis quelques mois, basée sur ce que l’on apprend lors de son premier cycle d’étude (primaire / collège !) Lire la suite…
Voici une petite application développée sur le pouce, permettant de « mesurer », à partir d’un sitemap.xml passé en paramètre (ou via son URL directe), le nombre d’indices sociaux (mesure de présence sur les réseaux sociaux) des pages du site sur Facebook, Twitter, Linkedin, Google+, Delicious et quelques autres.
Comme on me l’a demandé expressément, voici le snippet VB.Net (adaptable facilement à n’importe quel langage) permettant de spinner un texte construit pour cela. C’est cet algorithme simple de content spinning, basé sur la récursivité et sur l’utilisation des expressions régulières, que j’utilise dans effiSpin pour générer les variantes de mes contenus spinnés.
'Objet Random global
'On doit le "sortir" de la fonction pour générer à chaque appel un nombre aléatoire
'Sinon chaque spin généré sera... identique !
Private _Rand As New Random()
''' <summary>
''' Génération d'un spin aléatoire à partir d'un masterspin
''' </summary>
''' <param name="sSource">Texte source du masterspin à spinner (optionnel)</param>
''' <returns>Version spinnée aléatoirement du texte source</returns>
''' <remarks></remarks>
Public Function Spin(ByVal sSource As String = "") As String
'Si le texte ne contient pas d'accolades, on le retourne sans autre traitement
If Not sSource.Contains("{") Then
Return sSource
Exit Function
End If
'Recherche de tous les groupes de mots entre accolades ne contenant pas d'accolades
Dim oReg As New Regex("{([^{}]*)}")
'Pour chaque groupe correspondant à notre recherche...
For Each oMatch As Match In oReg.Matches(sSource)
'On découpe le contenu en tableau de chaînes (le séparateur est un pipe)
Dim sMots() As String = oMatch.Groups(1).Value.Split("|"(0))
'On remplace le groupe par l'un des mots pris au hasard
sSource = sSource.Replace(oMatch.Groups(0).Value, sMots(_Rand.Next(0, sMots.Length)))
Next
Return Spin(sSource) 'Récursivité sur le reste non spinné
End Function
Il faut impérativement « sortir » le générateur de nombres aléatoires de la fonction récursive, au risque d’obtenir à chaque appel des spins identiques (j’ai été confronté à cet étrange problème !) ; en matière de performances, l’utilisation des expressions régulières procure un gain appréciable par rapport aux simples manipulations de chaînes de caractères.
On peut avec cette fonction, traiter de gros textes (+5000 mots) sans problème particuliers, et ainsi bâtir ses propres outils de content spinning.
Chose incroyable dans le .Net Framework 4.0 (et inférieurs), il n’existe aucune fonction native pour copier un répertoire en VB.Net ! On peut déplacer des répertoires, en créer (avec arborescence complète !) ou en supprimer et renommer, mais pas en copier avec leur contenu.
Voici un bout de code palliant à ce manque surprenant :
Imports System.IO
...
''' <summary>
''' Copie un répertoire (et tout son contenu) vers un nouvel emplacement
''' </summary>
''' <param name="sSourcePath">Chemin du répertoire source à copier</param>
''' <param name="sDestinationPath">Chemin du répertoire de destination</param>
''' <returns>VRAI si la copie se déroule bien, FAUX sinon</returns>
''' <remarks></remarks>
Public Function CopyDir(ByVal sSourcePath As String, ByVal sDestinationPath As String) As Boolean
'Appelle la version utilisant les objets DirectoryInfo
Return CopyDir(New DirectoryInfo(sSourcePath), New DirectoryInfo(sDestinationPath))
End Function
''' <summary>
''' Copie un répertoire (et tout son contenu) vers un nouvel emplacement
''' </summary>
''' <param name="oSource">Objet DirectoryInfo représentant le répertoire source à copier</param>
''' <param name="oDestination">Objet DirectoryInfo représentant le répertoire de destination</param>
''' <returns>VRAI si la copie se déroule bien, FAUX sinon</returns>
''' <remarks></remarks>
Private Function CopyDir(ByVal oSource As DirectoryInfo, ByVal oDestination As DirectoryInfo) As Boolean
Dim bResult As Boolean = True 'Retour de la copie (VRAI = succès)
Try
oDestination.Create() 'Création du répertoire de destination (le cas échéant)
'Copie de tous ses fichiers
For Each oFichier As FileInfo In oSource.GetFiles()
oFichier.CopyTo(Path.Combine(oDestination.FullName, oFichier.Name))
Next
'Copie (par récursivité) de tous ses sous-répertoires
For Each oSousRepertoire As DirectoryInfo In oSource.GetDirectories()
CopyDir(oSousRepertoire, oDestination.CreateSubdirectory(oSousRepertoire.Name))
Next
Catch ex As Exception
'Si une erreur se produit, on indique l'erreur - à adapter selon vos besoins, notamment pour tracer les sources d'erreur !
bResult = False
End Try
Return bResult
End Function
En espérant que cela puisse servir à quelques uns d’entre vous.
Le logiciel effiSpin est un logiciel de content spinning français, en français et gratuit permettant de gérer facilement vos projets de spinning, avec contrôle de similarité intégré paramétrable, possibilité de créer des spins paramétrés (liés à une mini base de données sous forme de tableau) et avec aide à la saisie.
Le référencement est une spécialité encore mal connue dans le monde de l’Internet, en ce sens qu’elle fait intervenir de nombreuses connaissances techniques et rédactionnelles, et qu’encore très récemment, il n’existait aucune formation en la matière permettant de se spécialiser dans le cadre d’un cursus scolaire.
Si les deux premiers axes de travail pour obtenir l’indexation d’un site et faire évoluer et progresser son positionnement dans les moteurs de recherche sont eux connus et mis en pratique par la plupart des webmasters (à savoir l’optimisation technique des pages et le netlinking, ou création de liens référents), le troisième axe de travail est beaucoup moins usité : le rédactionnel.
Pourtant, ces trois axes sont indissociables pour un référencement de qualité, et plus encore, la qualité du rédactionnel va influencer de manière considérable le positionnement final des pages web ! Lire la suite…
Commentaires récents