Mémo CSS

  • L’outil gratuit « DebugBar » sous IE est très pratique, et permet notamment d´afficher le DOM d´une page.
  • Sous Firefox, un bon outil de debug html/javascript/css : Firebug

Tips

    • Le « Hack CSS » est ce qui permet de contourner les bugs IE. Exemple :
      BODY { COLOR: red !important;
      COLOR: green;
      }
      Alors la page sera rouge QUE sous Firefox (ou autre, en tout cas pas sous IE6 qui ne reconnait pas la commande !important et appliquera donc le vert…). A noter que cette solution est à choisir en dernier recours lorsqu´on a à faire avec une vraie incomptatibilité Firefox / IE.
    • Les Z-INDEX ne marchent que pour les éléments explicitement positionnés (position: absolute) (IE6).
    • Rollover : Au passage de la souris, au lieu de faire deux images distinctes :A { BACKGROUND : url(« mon_image_1.gif »); }
      A:hover { BACKGROUND : url(« mon_image_2.gif »); }
      Il vaut mieux en faire qu´une seule (qui contient les deux images) qu´on fait « coulisser » :
      A { BACKGROUND : url(« mon_image.gif ») 0px 0px; }
      A:hover { BACKGROUND : url(« mon_image.gif »); -50px 0px; }

 

    • La pseudo classe :hover n´est associée qu´au tag A.

 

    • Un nom de classe ne doit pas commencer par un chiffre. Cela plantera sous Firefox.

 

    • Application d´un style avec un attribut particulier : input[type= »text »] {background-color: blue}.

 

    • Attention, pas d´espace entre la quantité et l´unité (« 25px » et non « 25 px »), ça plantera sous Firefox.

 

    • L´épaisseur de border est ajouté au width et height de la boite.

 

    • Font-color n´existe pas ! C´est  « color » qu´il faut utiliser.

 

    • Pour changer une background-color sur un mouseover, le plus simple et de faire une balise A qui n´est liée à aucune URL. Faire un style « A:hover » et le tour est joué.

 

    • Attention à bien utiliser la palette des 256 couleurs WEB pour ne pas avoir de surprises au rendu. Visiter le site Visibone (OBSOLETE)

 

  • Pour « Font-family », il est conseillé d´ajouter en dernier choix une police générique.

Jahia : Réitérer la licence provisoire de démonstration

ATTENTION : Cette manip ne fonctionne qu’avec une licence par défaut fournit lors d’une installation de Jahia.
–    Arrêter le serveur Jahia.
–    Renommer le fichier /<REP_INSTALLATION>/WEB-INF/var/dbdata/system.dat en system_old.dat par exemple.
–    Redémarrer le serveur.
–    Après redémarrage, vérifier qu’un nouveau fichier system.dat a bien été généré dans le répertoire indiqué au-dessus.
–    Pour vérifier que la manip a bien fonctionné, se connecter à l’administration Jahia. En bas de l’écran d’accueil de l’administration, la phrase suivante doit apparaître : Jours d’utilisation restant avant expiration : 59

Aide-mémoire commandes UNIX

Rechercher un fichier : find répertoire -name "nom_du_fichier"
« nom_du_fichier » peut contenir des caractères jokers comme * ou ?
Rechercher les fichier qui contiennent une chaine de caractères : find ./ -name "*.xml" -exec grep "ma_chaine" {} ; -print
Ici on recherche tous les fichiers d’extension .xml contenant le mot ma_chaine
Suivre l’évolution de l’écriture dans un fichier : tail -f nom_du_fichier
Editer un fichier : vi nom_du_fichier

  • « Echap » -> Passage en commandes
  • « i », « a » ou « o » -> Passage en édition
  • Commande « x » -> Suppression caractère
  • Commande « G » -> Fin du fichier
  • Commande « $ » -> Fin de la ligne
  • Commande « 0 » -> Début de la ligne
  • Commande « dd » -> Couper la ligne
  • Commande « :w » -> Sauver
  • Commande « :q » -> Quitter
  • Commande « :wq » -> Sauver et quitter

Supprimer les retours chariot DOS d’un fichier : sed ’s/^M$//’ nom_du_fichier
(Faire ^M avec [CTRL + V puis + M])

Javascript : fonction isNumeric

Inspiré de cette page. J’y ai ajouté la vérification qu’il n’y ait qu’un seul point « . ».

function isNumeric(sText)
{
        var sValidChars = "0123456789.";
	var isNumber = true;
	var iNumDots = 0;
	var c;
	for (i = 0; i < sText.length && isNumber == true; i++)
	{
		c = sText.charAt(i);
		if (c == ".") iNumDots++;
		if (sValidChars.indexOf(c) == -1
				|| iNumDots > 1)
		{
			isNumber = false;
		}
	}
	return isNumber ;
}

JAVA : Trier un HashMap (sur la clé)

Inspiré de cette article en anglais.
Dans le cas d’un tri sur la clé, la meilleure solution consiste à utiliser un TreeMap<k, B>.
1ère étape : créer un comparateur. Ici, la clé de mon HashMap est de type MaClasse. On veut trier sur l’attribut MaClass.monChamp.

private Comparator monComparer = new Comparator()
{
	@Override
	public int compare(MaClasse o1, MaClasse o2)
	{
		return o1.monChamp.compareTo(o2.monChamp);
	}
};

2ème étape : créer (pourquoi pas) une fonction qui trie un HashMap non trié…

public HashMap<maClasse, ClasseQuelconque> TrieMoiCeHashMap(HashMap<maClasse, ClasseQuelconque> listeNonTriee)
{
	Map<maClasse, String> listeTriee = new TreeMap<maClasse, String>(monComparer);
	listeTriee.putAll(listeNonTriee);
	return listeTriee;
}

Elémentaire !

Javascript : Restaurer le scroll au rechargement d’un écran

Ca remonte tout le temps ! Comment garder une page dans son état initial lors d’un « postback » ?
Article inspiré de cette page de forum.
Lors d’un postback d’une page, le scroll revient toujours à sa position initiale… Si on était situé en bas de page, il faut donc re-« moletter » jusqu’en bas. C’est très désagréable.
Voici donc un bout de javascript qui fonctionne de la façon suivant :

  • On enregistre (dans un champ caché, hidden) la position de l’écran sur certains « onchange » de contrôles.
  • La page se recharge
  • On récupère la valeur cachée, qu’on applique dès le window.onload

Du coup la page revient à sa position initiale !
Fonction à appeler à chaque fois qu’un contrôle gagne le focus, ou voit sa valeur changer, etc :

function SaveScroll()
{
    oHidden = document.getElementById("hdScrollPosition");
    if (oHidden)
    {
        var sScroll;
        // Test navigateur
        if (document.documentElement && document.documentElement.scrollTop)
            { sScroll = document.documentElement.scrollTop; }
        else if (document.body)
            { sScroll = document.body.scrollTop; }
        else
            { sScroll = 0; }
        oHidden.value = sScroll;
    }
}

Fonction à appeler sur le onload de la page :

function RestoreScroll()
{
    oHidden = document.getElementById("hdScrollPosition");
    if (oHidden)
    {
        var sScroll = oHidden.value;
        if (sScroll > 0)
        {
            if (document.documentElement && document.documentElement.scrollTop)
                { document.documentElement.scrollTop = sScroll;}
            else if (document.body)
            {
                if (window.navigator.appName == ’Netscape’)
                    { window.scroll(0, sScroll); }
                else
                    {
                        // Restauration du scroll
                        document.body.scrollTop = sScroll;
                        // Cas ASP.NET : si la page en question est incluse dans une masterpage :
                        // document.body.parentElement.scrollTop = sScroll;
                    }
            }
            else
            {
                window.scroll(0, sScroll);
            }
        }
        oHidden.value = 0;
    }
}

Maintenant, il suffit d’ajouter dans les pages :

  • Le contrôle caché qui sauve la position : <input id="Hidden1" type="hidden" />
  • La restauration du scroll au chargement de la page :
    <script type="text/javascript" language="javascript">
            window.onload = RestoreScroll();
    </script>

C# : Exécuter un batch et récupérer la sortie.


private int Run_Batch(string sBatchPath, string sBatchName, string sArgs)
{
	// Code retour du batch
    int iExitCode = 0;
    // Chemin complet du batch
    string sBatchFullPath = sBatchPath + "\" + sBatchName;
    // Configuration du batch (chemin, arguments, sorties...)
    ProcessStartInfo processInfo = new ProcessStartInfo(sBatchFullPath);
    processInfo.CreateNoWindow = true;
    processInfo.Arguments = sArgs;
    processInfo.RedirectStandardOutput = true;
    processInfo.RedirectStandardError = true;
    processInfo.UseShellExecute = false;
    // Process en soi
    Process pBatch = new Process();
    // Redirection de la sortie vers une fonction
    pBatch.OutputDataReceived += new DataReceivedEventHandler(pBatch_OutputDataReceived);
    pBatch.StartInfo = processInfo;
    pBatch.EnableRaisingEvents = true;
    // Démarrage du batch + lecture des sorties.
    pBatch.Start();
    pBatch.BeginOutputReadLine();
    pBatch.BeginErrorReadLine();
    // Synchronisation
    pBatch.WaitForExit();
    iExitCode = pBatch.ExitCode;
    // Fermeture
    pBatch.Close();
    return iExitCode;
}
protected void pBatch_OutputDataReceived(Object sender, DataReceivedEventArgs e)
{
    System.Console.Write(e.Data);
}

BATCH DOS: Récupérer le chemin absolu du batch

Pushez madame !
Le chemin du batch exécuté se retrouve de cette façon :
echo %~dp0
A noter que le chemin à partir duquel on appelle ce batch se retrouve ainsi :
echo %CD%
Source : Weblogs
Ainsi, pour éxécuter un batch qui fait appel à des ressources dans son propre répertoire, le mieux est de commencer ainsi :
@echo off
pushd %~dp0