Livre HTML5 gratuit : un exemple… exemplaire !
Voici un exemple à suivre : tout un livre écrit par la communauté, donc tout un chacun – et ce pourraît même être vous – qui explique de manière très compréhensible, le HTML5.
Voici un exemple à suivre : tout un livre écrit par la communauté, donc tout un chacun – et ce pourraît même être vous – qui explique de manière très compréhensible, le HTML5.
Une des questions qu’on cherche le plus souvent avec Twig, c’est comment vérifier si une variable existe ou pas ?
La réponse se fait en trois étapes :
isset()
.defined
.Twig
:
{% if app.user is defined %} Code html {% endif %}
null
(= elle est définie, mais contient la valeur null
) :!is_null()
.is not null
.Twig
:
{% if app.user is not null%} Code html {% endif %}
null
(= elle est définie, et contient autre chose que la valeur null
) :isset() && (!is_null())
.is defined and is not null
.Twig
:
{% if app.user is defined and app.user is not null%} Code html {% endif %}
En espérant que cela aide du monde !
Mon site de démonstration pour l’utilisation du framework Symfony 2 est sorti.
Ce n’est qu’un site de démonstration, il est loin d’être parfait !
Si vous avez des commentaires ou suggestions à faire, n’hésitez pas !
Ci suit un exemple de jeu en full HTML5 :
Quatre personnes sont emprisonnées dans un immeuble en feu et c’est à vous de les sauver, tout en découvrant un plus grand mystère qui se cache derrière tout ça.
DESIGN- Stuart Madafiglio
ART- Cindy Xu MUSIC- Jesse Valentine
Une personne a développé en JavaScript un émulateur complet de la Super NES : JSNES.
Cliquez ici pour le voir : http://fir.sh/projects/jsnes/
Si vous regardez le code source, c’est impressionnant : il a vraiment retranscrit les registres, et le code assembleur de la SNES.
Voici un extrait que j’ai trouvé assez épatant :
switch(opinf&0xFF){ case 0:{ // ******* // * ADC * // ******* // Add with carry. temp = this.REG_ACC + this.load(addr) + this.F_CARRY; this.F_OVERFLOW = ((!(((this.REG_ACC ^ this.load(addr)) & 0x80)!=0) && (((this.REG_ACC ^ temp) & 0x80))!=0)?1:0); this.F_CARRY = (temp>255?1:0); this.F_SIGN = (temp>>7)&1; this.F_ZERO = temp&0xFF; this.REG_ACC = (temp&255); cycleCount+=cycleAdd; break; }case 1:{ // ******* // * AND * // ******* // AND memory with accumulator. this.REG_ACC = this.REG_ACC & this.load(addr); this.F_SIGN = (this.REG_ACC>>7)&1; this.F_ZERO = this.REG_ACC; //this.REG_ACC = temp; if(addrMode!=11)cycleCount+=cycleAdd; // PostIdxInd = 11 break; }case 2:{ // ******* // * ASL * // *******
Sur la toute dernière version de Smarty (3.1), voici comment créer un plugin personnalisé.
Pour résumer, l’un de mes sites n’était pas assez optimisé.
Le code qui sortait était :
<body class="sbody">
<div>
....
</div>
....
</body>
J’ai donc ajouté le filtre d’optimisation qui supprime les espaces en début :
$this->smarty->loadFilter('output', 'trimwhitespace');
Le code de sortie est devenu :
<body class="sbody"><img src="/title.jpg" /><div>....</div>....</body>
Tout mise en une ligne, super !
Le seul problème, c’est que ça ne fonctionnait pas avec le code JavaScript, il faut en effet les retours à la ligne.
J’ai donc crée mon plugin qui ne fait que supprimer les espaces en début de ligne, et remplacer de « retour + line feed » (deux octets) de fin de ligne par un seul octet « retour ».
Voici le code, je vous laisse comprendre, c’est extrêmement simple :
/* Déclarer un plugin "block". * Block = il faut un début et une fin. * Ici : {triml} {/triml} */ $this->smarty->registerPlugin('block', 'triml', array($this,'smarty_block_trim_l'));
Après avoir déclaré le plugin, il faut faire la fonction adéquate :
/** * Fonction de plugin smarty pour supprimer tous les espaces * en début de ligne entre les blocs {triml}{/triml} * "triml" = trimleft * Voir le constructeur et chercher $this->smarty->registerPlugin() * * @param array $params les paramètres qu'on passe à {strip_nl} * @param variant $content Le contenu qu'il y a dans le bloc * @param variant $template Le nom du template * @param variant &$repeat * * @return int Description retour */ public function smarty_block_trim_l( array $params, $content, $template, &$repeat) { $content = preg_replace('/\n[\s]+/', "\n", $content); return $content; }
Et voilà maintenant, vous pourrez aussi optimiser votre site comme un professionnel.
Bien évidemment le gain le plus gros est dans la compression (voir mod_deflate)
Supposons que vous vouliez montrer quelques exemples de code JavaScript, mais surtout, le partager rapidement.
C’est très simple : avec http://jsfiddle.net/, vous tapez votre exemple de code, et à la fin vous cliquez sur « sauver » et hop, une URL automatique est créée. Il vous suffit de copier colle le lien pour partager votre code exemple (ou votre code qui démontre qu’une librairie a un problème, par exemple).
Voici une astuce : vous avec une page qui s’affiche parfaitement, avec plein de choses, à part un petit détail plutôt gênant : vous avez des lignes de code qui « débordent » et lorsque vous voulez imprimer, comme, justement, ça déborde, vous n’avez pas le code en entier.
Il vous suffit de mettre ce code en dernier dans le css (afin qu’il « écrase » toutes les configurations précedentes des retour-chariot) :
pre, code {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
Et voilà, vous pourrez imprimer votre document tranquillement, tout le code sera affiché.
Cet article fait suite à une question que j’ai posée sur stackoverflow.com. Cette dernière avait déjà été posée, et la réponse était valide : le lien est ici. Et la solution, carrément à la source, est ici.
Vous voulez inclure directement du code dans votre page xhtml 1.0
et pourtant le validateur râle tout le temps et vous dit que votre page n’est pas valide ?
Voici l’astuce : il faut mettre les tags spécifiant qu’il y a des données « qu’il ne faut pas interpréter », c’est à dire que même s’il y a des caractères interdits (signe supérieur, inférieur, point-virgule, etc) ils seront ignorés. Ces fameux tags sont : <![CDATA[
et ]]>
Bien évidemment, comme ils sont dans une section JavaScript
, il faut mettre les commentaires juste avant, commentaires qui sont autorisés :
//
. Ce qui donne au final :
<script type="text/javascript">
// <![CDATA[
...
le script proprement dit
...
// ]]>
</script>