Administrateur Systèmes d'Information mais aussi Développeur Web.
Passionné de tennis et de plein d’autres choses.
J’ai créé mon premier site internet en 2000, à l’âge de 13 ans, ça ne m'a pas quitté depuis.

Arnaud Bosquet

Administrateur Systèmes d'Information / Dev Web / Tennis
“Le risque est acceptable”

Copier uniquement les ACL

Imaginons que vous migrez un serveur de fichiers avec plusieurs centaines de Go.

Imaginons, ensuite que comme par magie, la moitié des ACL n’a pas été copié sur les dossiers/fichiers.

Vous pouvez grâce à Robocopy, remettre les ACL sur les fichiers déjà transférés avec la commande suivante :

robocopy source destination /secfix /COPYALL /MIR

Problème d’ouverture de session avec un profil temporaire sous Windows 2008 R2

Si vous avez supprimé un profil utilisateur et que lors de sa recréation, la session s’ouvre de manière temporaire, voici la solution.

Session temporaire

• Se rendre dans l’éditeur de registre sur le serveur (regedit)

• Développez le chemin suivant : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

• Plusieurs dossiers dont présents dans « ProfileList »

• Supprimez celui qui a une extension « .bak » à la fin de son nom.

VMware ESXI – Comment réinitialiser le capteur mémoire sur un HP Proliant

Lors de l’installation d’un cluster dans vCenter, j’ai eu un souci particulier. J’avais 2 serveur HP Proliant DL380p identique à tout point de vue.
Sur l’un des deux ESXi j’avais une alerte dans « l’Etat du matériel » concernant la mémoire alors que tout était normal.
En me connectant directement sur l’ESXI, aucun warning ou alerte.

Tout est bon sur l'ESXI

Tout est bon sur l’ESXI

Ca ressemblait plus à un bug d’affichage qu’à un réel souci de mémoire.

Display Bug memory ESXI HP PROLIANT

Display Bug

Après avoir redémarrer les serveurs, j’ai vu que les versions de Bios était différentes. J’ai donc mis à jour le Bios mais le problème persistait. Il s’avère en fait que les log n’étaient pas nettoyés et qu’une ancienne erreur provoquait le bug d’affichage.

Pour résoudre le problème, voici les manipulations :

  1. Go to Hardware Status tab, and select the  System event log view
  2. Click on Reset event log, and allow to  complete
  3. Click on Update, once complete the memory  error should clear
  4. Select the Alerts and warnings view
  5. Click on Reset sensors, and allow to  complete
  6. Click on Update, once complete and the memory  error might clear
  7. If not, SSH to the ESX and restart the management agents, eg for an ESXi server
    • services.sh restart
  8. Click on Update again, and once complete the memory error should clear

Après redémarrage de l’ESXI, plus aucun message d’alerte :)

Tout est bien qui finit bien

Tout est bien qui finit bien

Source : http://communities.vmware.com/thread/329248?start=0&tstart=0

Récupérer la date du premier jour de la semaine

Un petit bout de code PHP, qui fait écho à une question qu’on m’a posée : comment récupérer la date du premier jour de la semaine ?
Très utile pour les scripts de calendrier, par exemple.

MAJ : Si votre serveur utilise une version >= PHP 5.1.0 vous pouvez utiliser la fonction suivante :

<?php
echo date('l d F Y', mktime(0, 0, 0, date('m'), date('d')-date('N')+1, date('Y')));
// Affiche par exemple : monday 26 september 2011
?>

Sinon, vous pouvez utiliser le bout de code ci-dessous mais attention; la fonction date(‘w’) retourne 0 pour le dimanche. Il faudrait améliorer un peu la ligne ci-dessous :

<?php
echo date('l d F Y', mktime(0, 0, 0, date('m'), date('d')-date('w')+1, date('Y')));
// Affiche par exemple : monday 14 february 2011
?>

Comment faire un « infinite scroll » en jQuery

Il parait que c’est la tendance pour l’année 2011 : l’infinite Scroll. Beuh, qu’est-ce qui se cache derrière ce nom bizarre ?

L’infinite Scroll va charger du contenu pendant que la barre de défilement descend. Concrètement, ça permet aux utilisateurs de ne pas cliquer sur les liens « pages suivantes ». On allège aussi le chargement de ses pages en affichant uniquement le début.
On trouve ça sur les albums photos Facebook, les pages Tumblr, et autres…

Dans l’exemple ci-dessous, on va afficher les 5 derniers commentaires et avant d’arriver en fin de scroll, on charge les 5 suivants, etc…

1. Live Demo

2. Explications :

Index.php

<html>
<head>
<title>Infinite Scroll</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
 
$(document).ready(function(){ // Quand le document est complètement chargé
 
	var load = false; // aucun chargement de commentaire n'est en cours
 
	/* la fonction offset permet de récupérer la valeur X et Y d'un élément
	dans une page. Ici on récupère la position du dernier div qui 
	a pour classe : ".commentaire" */
	var offset = $('.commentaire:last').offset(); 
 
	$(window).scroll(function(){ // On surveille l'évènement scroll
 
		/* Si l'élément offset est en bas de scroll, si aucun chargement 
		n'est en cours, si le nombre de commentaire affiché est supérieur 
		à 5 et si tout les commentaires ne sont pas affichés, alors on 
		lance la fonction. */
		if((offset.top-$(window).height() <= $(window).scrollTop()) 
		&& load==false && ($('.commentaire').size()>=5) && 
		($('.commentaire').size()!=$('.nb_com').text())){
 
			// la valeur passe à vrai, on va charger
			load = true;
 
			//On récupère l'id du dernier commentaire affiché
			var last_id = $('.commentaire:last').attr('id');
 
			//On affiche un loader
			$('.loadmore').show();
 
			//On lance la fonction ajax
			$.ajax({
				url: './ajax_comment.php',
				type: 'get',
				data: 'last='+last_id,
 
				//Succès de la requête
				success: function(data) {
 
					//On masque le loader
					$('.loadmore').fadeOut(500);
					/* On affiche le résultat après
					le dernier commentaire */
					$('.commentaire:last').after(data);
					/* On actualise la valeur offset
					du dernier commentaire */
					offset = $('.commentaire:last').offset();
					//On remet la valeur à faux car c'est fini
					load = false;
				}
			});
		}
 
 
	});
 
});
 
</script>
<style>
body{
background:#ffffff;
}
/* Juste pour l'affichage, aucun intérêt ici ;) */
</style>
</head>
 
<body>
<div class="article">
	<div class="nb_com">
		25
	</div> commentaires
	<br /><br />
	Un article par exemple...
</div>
<div class="cont_com">
	Les commentaires sur l'article : 
 
	<?php
	$sql=mysql_query("SELECT * FROM commentaires
	ORDER BY id DESC LIMIT 5");
	while($data=mysql_fetch_assoc($sql))
	{
		// On affiche les commentaires avec l'ID comme attribut du div
	?>
		<div class="commentaire" id="<?php echo $data['id']?>">
			<?php echo $data['text_com']; ?>
		</div>
	<?php
	}
	?>
 
	<div class="loadmore">
		Chargement en cours...
	</div>
</div>
</body>
 
</html>

ajax_comment.php

<?php
$sql=mysql_query("SELECT * FROM commentaires WHERE 
id < ".mysql_real_escape_string($_GET['last'])." ORDER BY id DESC LIMIT 5");
while($data=mysql_fetch_assoc($sql))
{
?>
	<div class="commentaire" id="<?php echo $data['id']?>">
		<?php echo $data['text_com']; ?>
	</div>
<?php
}
?>

Note : jfefe est parti de ce code pour développer un plugin Spip. Vous pouvez le retrouver ici : http://www.spip-contrib.net/defilement-infini-sur-les-articles

Intégrer ses tweets à WordPress

Vous êtes plusieurs à me demander comment j’ai fait pour intégrer Twitter et plus particulièrement mes Tweets entres les articles du blog.

Les explications :

1 – Installation du Plugin

Il faut d’abord installer le plugin Twitter Tools pour son blog WordPress. Vous pouvez le trouver ici : http://wordpress.org/extend/plugins/twitter-tools/

Ensuite, il faut suivre la procédure d’installation classique d’un plugin. Depuis peu, il faut autoriser votre application (blog WordPress) à interagir avec Twitter. Bien que ça soit en Anglais, c’est assez simple.

J’ai créé une nouvelle rubrique qui se nomme « Tweets ». Les tweets importés sont classés automatiquement dedans.

Dans le menu « Réglages » de WordPress, un lien Twitter Tools doit apparaitre :

2 – Personnalisation du thème

Maintenant, chaque tweet importé sera considéré comme un article. Il va donc falloir personnaliser le thème sinon vous allez avoir des articles avec un titre de 140 caractères, un texte identique, la possibilité d’ajouter des commentaires, et plein de choses dont on ne veut pas.

Il faut éditer la page index.php de votre thème, pour rajouter une condition :
Dans la boucle suivante :

<?php while (have_posts()) : the_post(); ?>

Vous rajoutez la condition pour tester la catégorie :

<?php if ( in_category('tweets')) { ?>
	<div class="post-twitter">
		<div class="post-twitter-logo">
			<a href="http://twitter.com/@USER" target="_blank"><img src="./logo_twitter.gif" width="23" height="28" border="0" /></a>
		</div>
		<div class="post-twitter-post">
			<?php echo the_content(); ?>
		</div>
		<div class="post-twitter-rt">
			<a href="http://twitter.com/home?status=RT @USER <?php echo the_content_rss(); ?>" target="_blank">rt</a>
		</div>
	</div>
<?php } else{ ?>
	<!-- Votre code actuel pour afficher les articles -->
<?php } ?>

3 – Exclusion du flux RSS

Pour ne pas spammer votre flux RSS avec les tweets importés, il faut exclure la catégorie du flux.
Editons le fichier fonctions de votre thème (functions.php) pour y ajouter :

function exclude_category($query) {
	if ( $query->is_feed ) {
		$query->set('cat', '-11');
	}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

Attention, le -11 signifie qu’on exclut la catégorie qui porte l’ID 11, dans mon cas, c’est la catégorie Tweets. A vous d’adapter ce nombre en fonction de votre configuration.