un espace en fin de ligne tu te prenais 0
Alors la norme t'avais interet à la respecter
Mais bon je ne dis pas que toutes les normes sont jolie. Elle était même plutot trop contraignante
un espace en fin de ligne tu te prenais 0
Alors la norme t'avais interet à la respecter
Mais bon je ne dis pas que toutes les normes sont jolie. Elle était même plutot trop contraignanteManoloben (./31) :
un espace en fin de ligne tu te prenais 0
#pastaper#un espace en fin de ligne tu te prenais 0

JackosKing (./33) :
Ouai enfin ca c'est du détail, un indenteur est c'est fini on en parle plus.

Rintintin (./35) :
du bon code n'a pas besoin de commentaires, si ce n'est a quelques endroits cles ...
Nil (./36) :
Au moins le SE, ou une documentation de ce que font les fonctions (Entrées/Sorties). L'idéal étant d'utiliser un standard comme javaDoc, PHPDoc, ou autre pour pouvoir compiler une doc (sinon tu te retrouves à réécrire la fonction que le gars a déjà écrite il y a trois semaines).
Et du "bon code" pour toi ne l'est pas forcément pour un autre (par exemple, pour la lecture, je développe systématiquement mes blocs, même s'ils ne font qu'une ligne et que c'est facultatif ; et je ne supporte pas l'accolade qui commence sur la même ligne que le mot clé).
Rintintin (./37) :Et du "bon code" pour toi ne l'est pas forcément pour un autre (par exemple, pour la lecture, je développe systématiquement mes blocs, même s'ils ne font qu'une ligne et que c'est facultatif ; et je ne supporte pas l'accolade qui commence sur la même ligne que le mot clé).La par contre je trouve ca illisible, developper a tout va et pour rien (mettre toutes les accolades a la ligne) ca oblige a scroller comme un porc des qu'on cherche qqch dans le code ...
ça évite de se retrouver dans des situations où tu ne sais pas au premier coup d'oeil si tu est dans le cas d'un bloc avec une simple ligne, où si tu as loupé une accolade mal placée (je viens d'ailleurs d'avoir le problème à l'instant, où j'ai eu ce type de truc (c'est la dernière fois que je suis volontaire pour reprendre du code, la prochaine fois, je me fais désigner...) : if ($rep <> ""){srand((double) microtime () * 1000000);
$boundary = md5 (uniqid (rand ()));
$titre = nomcongres." informations";
$header = "From: ".nomcongres." <".nomcongres."@********.fr>\n";
$header. = "Reply-To: ".nomcongres."@univ-lyon1.fr \n";
$header. = "MIME-Version: 1.0\n";
$header. = "Content-Type: multipart/alternative;boundary=$boundary\n";
$message = "\nThis is a multi-part message in MIME format.";
[insérer encore plein de choses]
} if ($rep <> "") {
srand((double) microtime () * 1000000);
$boundary = md5 (uniqid (rand ()));
$titre = nomcongres." informations";
$header = "From: ".nomcongres." <".nomcongres."@********.fr>\n";
$header. = "Reply-To: ".nomcongres."@univ-lyon1.fr \n";
$header. = "MIME-Version: 1.0\n";
$header. = "Content-Type: multipart/alternative;boundary=$boundary\n";
$message = "\nThis is a multi-part message in MIME format.";
[insérer encore plein de choses]
}
Kevin Kofler (./41) :
if ($rep "") {
heureusement qu'on revient de cette norme avec l'accolade sur la ligne du mot-clé... Manoloben (./30) :
et a Epita on en parle pasun espace en fin de ligne tu te prenais 0
Alors la norme t'avais interet à la respecter
Nil (./42) :Kevin Kofler (./41) :
if ($rep "") {heureusement qu'on revient de cette norme avec l'accolade sur la ligne du mot-clé...
, sauf pour les fonctions:void foo(void)
{
...
}Nil (./42) :Kevin Kofler (./41) :
if ($rep "") {heureusement qu'on revient de cette norme avec l'accolade sur la ligne du mot-clé...
Surtout que si le code est correctement indenté y a jamais besoin de regarder autre chose que l'indentation pour savoir si y a une accolade ou pas
(alors après, si votre code est suffisamment dégueulasse pour qu'il soit souvent indenté n'importe comment ça peut être une bonne idée de faire sauter aux yeux le fait que c'est mal indenté, mais bon...)Pollux (./44) :Nil (./42) :Kevin Kofler (./41) :
if ($rep "") {heureusement qu'on revient de cette norme avec l'accolade sur la ligne du mot-clé...
C'est quoi le problème ?Surtout que si le code est correctement indenté y a jamais besoin de regarder autre chose que l'indentation pour savoir si y a une accolade ou pas
(alors après, si votre code est suffisamment dégueulasse pour qu'il soit souvent indenté n'importe comment ça peut être une bonne idée de faire sauter aux yeux le fait que c'est mal indenté, mais bon...)
Pen^2 (./45) :
t sinon pour les affectations j'utilise un truc que Thibaut m'avait présenté :
var= value ; Je trouve que le déséquilibre reflète bien l'idée d'affectation.
Pollux (./46) :
(ouais mais c'est très mochevar = value; powa
)

(et les blocs isolés, i.e. qui ne correspondent à aucun if/for/while/else, sont clairement une exception plutôt que la règle -- si tu veux tu peux dire qu'ils correspondent à un mot-clé vide)Nil (./47) :
Ben moi j'aime bien savoir quand commence mon bloc. La première chose qui accroche mon oeil, c'est pas l'indentation (surtout quand il y a plein de blocs imbriqués), c'est l'accolade. Si je ne la vois pas clairement (et surtout, alignée par rapport à la fermante, c'est surtout ça qui heurte le côté cartésien de mon esprit), je me sens mal à l'aise. Puis en xml, par exemple, il ne viendra jamais à l'idée de ne pas aligner au même niveau une balise ouvrante et une fermante. Pour moi, c'est le même problème. Pour moi, ce n'est pas le mot clé (if, while ou autre) qui "ouvre" le bloc. Il est juste une information sur la façon dont le bloc suivant va être traité, c'est tout.
int fast_and_perfect_hash(const char *str, int length) // works only with HASH_TABLE_SIZE = 256 or 512 or 1024
{ // very good Daniel Julius Bernstein's algorithm
// speed optimized by Pollux
// unrolled by Thibaut for more speed
// many other speed optimizations by Pen2
// generates very uniform hash tables even with non prime modulos
register unsigned int hash = 5381; // DJB Hash
register unsigned int hash5 = 0;
register const char *s;
register int i;
s= str;
i= (unsigned)length / 4;
while (i--) {
hash5+= hash; hash+= *s++;
hash5+= hash; hash+= *s++;
hash5+= hash; hash+= *s++;
hash5+= hash; hash+= *s++;
}
i= (unsigned)length % 4;
while (i--) {
hash5+= hash;
hash+= *s++;
}
return (hash + (hash5<<5)) % HASH_TABLE_SIZE;
}
/* ---------------------- */
/* -- DEBUT DU FICHIER -- */
/* ---------------------------------------------------------------- */
/* Scripts de gestion d'authentification LDAP */
/* (c) 2005 Centre de Ressources Informatiques - XXXXXXXXXXXX */
/* (c) 2006 Centre de Ressources Informatiques - XXXXXXXXXXXX */
/* Jxxxxxxx Dxxxx, portions Fxxxxxxx */
/* Certains scripts sont basés sur les scripts Perl d'Idealix.org */
/* la fonction fputcsv est tirée du site www.php.net */
/* ---------------------------------------------------------------- */
require_once 'CHAP.php';
require_once 'ldap_connect.php' ;
require_once 'globals.php' ;
$hash = new Crypt_CHAP_MSv2();
//Variables définies en "dur"
//TODO : les passer à l'état de constantes et les migrer vers constantes.php
$org = "IUFM Lyon";
$dir = "/home/";
$unix_group = 513;
$shell = "/bin/null" ; //"/bin/bash" si on veut autoriser l'authentification Unix;
$time = time();
/* ----------------------------------------------------------
/* Gestion des groupes LDAP
/* ------------------------
/*
/* Les groupes LDAP ne sont pas vraiment des groupes au sens où on pourrait l'entendre.
/* Un utilisateur est affecté à un groupe si son attribut 'description' a pour valeur l'intitulé du groupe.
/* Un groupe ne peut être qu'un alphanumérique. Le caractère souligné est toléré.
/*
/* Liste des fonctions de gestion :
/*
/* group_create($groupe) : crée un groupe (ajoute $groupe à l'attribut 'description' de root)
/* group_syntax($groupe) : vérifie que $groupe est un alphanumérique débutant par un alpha uniquement. Le caractère souligné est toléré.
/* group_exist($groupe) : retourne 1 si le groupe existe, 0 sinon
/* group_purge($groupe) : supprime tous les membres d'un groupe, même s'ils appartiennent aussi à un autre groupe, puis supprime la valeur $groupe des attributs 'description' de l'utilisateur root
/* group_list() : retourne la liste des groupes sous forme d'un tableau à une entrée
/* group_users($group) : retourne la liste des utilisateurs d'un groupe donné sous forme d'un tableau
/* group_delete($group) : supprie l'existence d'un groupe de la liste gérée par root
/*
/* ----------------------------------------------------------*/
/* group_syntax($groupe) : vérifie que $groupe est un alphanumérique débutant par un alpha uniquement. Le caractère souligné est toléré.
/* Requiert : rien
/* Vérifie : la syntaxe de la chaine $groupe (un alpha, suivi d'au moins un aphanumérique ou d'un souligné
/* Retourne : 1 si la variable vérifie l'expression régulière
/* 0 sinon
*/
function group_syntax($groupe)
{
if (!$groupe)
{
return 0 ;
}
$preg_matchGroup = "(^[A-Za-z]+[A-Za-z0-9\-_-]+$)";
if (preg_match($preg_matchGroup, $groupe))
{
return 1;
}
return 0;
}
(pas mal de compilos font un warning pour ça, et puis plus généralement ça fait qu'on a du mal à savoir où se termine le commentaire : si tu mets juste une seule * en début de ligne on voit bcp mieux la différence entre deux commentaires consécutifs et un seul commentaire)
)

Zephyr (./55) :
parceque la taille des tabs dans l'éditeur que tu utilises n'est pas la même que la taille des tabs de ton navigateur, peut-être ?
Thibaut (./56) :
Les tabulations c'est le côté obscur de la force

/*
\name fastAndPerfectHash
very good Daniel Julius Bernstein's algorithm
speed optimized by Pollux
unrolled by Thibaut Barthelemy for more speed
many other speed optimizations by Julien Monville
generates very uniform hash tables even with non prime modulos
\arg pStr_ : Chaine ...
\arg length_ : longueur de chaine (A quoi ca sert?)
\pre HASH_TABLE_SIZE = 256 or 512 or 1024 and length_ <= pStr_'s length
\post nothing
*/
int fastAndPerfectHash(const char *pStr_, unsigned int length_){
REQUIRE( (HASH_TABLE_SIZE == 256 || HASH_TABLE_SIZE == 512 || HASH_TABLE_SIZE == 1024)
&& lenght_ <= strnlen(pStr_, length_));
{
register unsigned int hash = 5381; // DJB Hash
register unsigned int hash5 = 0;
register int i;
i = length_ / 4;
while (i--){
hash5 += hash; hash += *pStr_++;
hash5 += hash; hash += *pStr_++;
hash5 += hash; hash += *pStr_++;
hash5 += hash; hash += *pStr_++;
}
i = length_ & 3;
while (i--){
hash5 += hash; hash += *pStr_++;
}
return (hash + (hash5 << 5) ) & (HASH_TABLE_SIZE - 1);
}
}
/**
* CoreCPU - The Quick6502 Project
* corecpu.c
*
* Created by Manoel Trapier on 24/02/08
* Copyright 2008 986 Corp. All rights reserved.
*
* $LastChangedDate$
* $Author$
* $HeadURL$
* $Revision$
*
*/
/* Depending on the OS, one of these provide the malloc function */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
{snap}
/**
* Initialise the CPU
*
* Inputs:
*
* - CPU Init structure:
* - Memory Read function pointer
* - Memory Write function pointer
* - Fast memory read function pointer (for opcodes read)
* - Fast page 0 function Read/Write
* - Fast page 1 function Read/Write
*
* Output:
*
* (void *): An opaque pointer to the internal structure of the CPU.
* NULL if an error occured !
*/
quick6502_cpu *quick6502_init(quick6502_cpuconfig *config)
{
quick6502_cpu *cpu;
/* Alloc structure */
cpu = (quick6502_cpu *) malloc (sizeof (quick6502_cpu));
if (!cpu)
return NULL;
/* Initialise other variables */
cpu->running = 0; /* CPU is currently NOT running */
cpu->cycle_done = 0;
/* Initialise registers */
cpu->reg_A = 0;
cpu->reg_X = 0;
cpu->reg_Y = 0;
cpu->reg_S = 0xFF;
cpu->reg_P = Q6502_D_FLAG | Q6502_I_FLAG;
if (config->memory_read != NULL)
cpu->memory_read = config->memory_read;
else
goto init_error;
if (config->memory_write != NULL)
cpu->memory_write = config->memory_write;
else
goto init_error;
if (config->memory_opcode_read != NULL)
cpu->memory_opcode_read = config->memory_opcode_read;
else
cpu->memory_opcode_read = config->memory_read;
if (config->memory_page0_read != NULL)
cpu->memory_page0_read = config->memory_page0_read;
else
cpu->memory_page0_read = config->memory_read;
if (config->memory_page0_write != NULL)
cpu->memory_page0_write = config->memory_page0_write;
else
cpu->memory_page0_write = config->memory_write;
if (config->memory_stack_read != NULL)
cpu->memory_stack_read = config->memory_stack_read;
else
cpu->memory_stack_read = config->memory_read;
if (config->memory_stack_write != NULL)
cpu->memory_stack_write = config->memory_stack_write;
else
cpu->memory_stack_write = config->memory_write;
return cpu;
init_error:
if (cpu)
free (cpu);
return NULL;
}
{snap}
/**
* Run cpu for at least X cycles
*
* Output:
*
* int: (Number of cycle really done) - (Number of cycle asked)
*/
int quick6502_run(quick6502_cpu *cpu, int cycles)
{
cpu->running = !0;
while(cpu->cycle_done < cycles)
{
quick6502_exec_one(cpu);
}
cpu->cycle_done -= cycles;
cpu->running = 0;
return cycles + cpu->cycle_done;
}