- Ataox a été créé en harmonie avec la possibilité d'effectuer un référencement Internet efficace, ce qui implique la maîtrise à la construction du site de toutes les balises xHtml concernées et un intérêt général pour l'indexation de sites, particulièrement pour le référencement naturel durable qui implique une évolution technique harmonieuse sur ce sujet.
- Une gestion facultative des données par balises [ ] imbricables, ce qui facilite le compartimentage du système : la programmation est plus simple et standard (seul un micro-environnement est appréhendé et comme la grande majorité des effets à l'écran proviennent d'une balise il est très facile de retrouver la fonction qui a pour nom celui de la balise préfixé par tg_) et à l'utilisation aussi, car cela rappel des réflexes acquis sur certains forums.
- La possibilité d'utiliser du xHtml dans les pages, soit directement, soit à l'aide du wysiwyg (programme intuitif de génération de code x/Html) inclu opu encore à l'aide d'un wysiwyg externe.
- Un mode de présentation grand écran qui permet de visualiser le contenu du site standard et les codes correspondants.
- Possibilité de générer un site complet, multi-pages et multi-langues à l'aide d'un seul fichier décodé par le parseur de [], ceci permet à la fois de vérifier le parseur dans des situations extrêmes et de fournir un moyen de construction de site original notamment pour construire différents modèles de sites faciles à implémenter.
- Un cryptage automatique des mots de passe, même sur des connections non sécurisées http:// comparé à httpS://.
A partir de la version 1.2.0 deux niveaux de sécurité sont à disposition :
- Le plus élevé est installé par défaut (voir la variable useBrwsrBackButton de la table genVar, catégorie loginCurrent : ( >>> ) ) et génère une nouvelle chaîne cryptée aléatoire (hash) utilisée pour faire transiter de manière cryptée un jeton identifiant le webmaster connecté. A noter que le bouton retour en arrière des navigateurs rétrograde aussi les hash, qui ne sont plus valables vu que par définition de la sécurité qu'ils apportent ils ne sont utilisable qu'une seule fois! A noter qu'Opera 11.00 Linux a été le seul navigateur testé sur Ataox dont le bouton "back" ne changeait pas les valeurs stockées dans les variables Javascript localStorage, mais les versions plus modernes d'Opera ont visiblement perdus cette caractèristique! Tous les autres navigateurs essayés rétrogradent aussi toutes leurs variables quand ont clique le bouton retour en arrière! Et il n'y a à notre connaissance pas de moyen simple pour obtenir une valeur javascript actuelle dans une page rétrogradée (l'obtenir du serveur paraît délicat étant donné que le retour en arrière ne recharge pas la page et que le hash n'est sensé être transmis qu'une seule fois. A noter que bouton de retour en arrière à une réputation silfureuse dans le milieu de la programmation : ). Il s'ensuit que pour le niveau de sécurité maximum utiliser le bouton de retour en arrière déconnecte le webmaster s'il n'inverse pas tous les retour en arrière effectués. ceci même s'il s'agit de cliquer sur un onglet qui n'a pas été touché par le retour en arrière! Il fallait donc trouver une solution pour rendre la navigation plus ouverte à ceux qui le désirent et cela est détaillé dans le point suivant.
- Pour une navigation plus souple on peut initialiser à "ok" la variable useBrwsrBackButton de la table genVar ( >>> ), ce qui baisse légèrement le niveau de sécurité vu que le mot de passe est crypté avec un hash qui est conservé pour toute la durée de la connection! Un attaquant pourrait donc théoriquement obtenir une connection en copiant la valeur mot de passe auto-crypté plus hash transitant par les lignes, mais cela reste beaucoup plus difficile à faire que si le mot de passe n'était pas crypté du tout, de plus le temps pour effectuer cette opération n'est à disposition que pendant la durée de la connection à moins que le webmaster oublie de se déconnecter! Et point supplémentaire, si la connection se fait en https la sécurité de cette option est aussi bonne que la précédente en supposant qu'elle soit aussi faite en https.
- Les mots de passe comme les pages du site peuvent contenir n'importe quel caractère UTF-8, c'est à dire entre autre tous les caractères chinois, ce qui constitue une excellente protection sachant que les algorithmes automatiques de recherche de mots de passe ne mélangent en principe pas les caractères de différentes langues, et s'ils le faisaient ils seraient dans le meilleur des cas (répartition complètement aléatoire des bits, en pratique il faut un facteur 2 comme marge de sécurité sur le nombre de caractères) face à un un nombre de combinaisons quasiment ingérable à partir de 3 caractères choisis prudemment parmi ceux tenant sur 4 byte! En effet, les caractères les plus complexes tenant sur 4 bytes, nous avons donc 256 possibilités par byte pour 12 bytes, ce qui donne 256^12 = 7.92e+28 possibilités! En pratique quand même moins vu le nombre restreint e caractères tenant sur 4 bytes, d'où un facteur de sécurité augmentant le nombre de caractères minimum.
- Le système est naturellement multi-langue et permet de passer d'une langue à l'autre sur le même sujet très facilement et sans obligation de traduction immédiate à la création puisque les pages nouvellement créées n'apparaissent que si on le désire, ceci implique qu'une demande de traduction sur une page qui n'est pas traduite aboutit soit à la racine du site soit sur une page spécifiquement choisie.
- Un système de gestion de fichiers très performants avec de nombreuses fonctions, dont : la compression et la décompression de données avec décompression automatique de tous les zip inclus, un système de marque-pages, différents modes de visualisation, un gestionnaires des droits sur les fichiers avec application récursive, etc.
- La version standard est basée sur Apache, Php et MySql, programmée sur Linux, elle est donc totalement adaptée à la majorité des services d'hébergement (LAMP : Linux)
- Possibilité d'utiliser un mode de fonctionnement où le SQL est simulé avec des fichiers Php! Ceci permet de faire tourner un petit site comme celui-ci sans s'occuper de configurer une base de donnée et assure en même temps la vérification de l'abstraction des appels de fonctions MySQL ce qui facilite un passage future à une troisième catégorie de base de donnée.
- Sauvegardes totales (code php, base de donnée et fichiers) en un seul clic, et la possibilité d'obtenir des fichiers zip plus compressés.
- Une calculatrice scientifique avec le célèbre jeu du "Compte est Bon" (intégré) tirage et toutes les solutions non triviales sous forme algébrique de la plus simple à la plus compliquée) + exercices de calcul oral. Note : la partie jeu n'est pas encore publique pour des raisons publicitaires.
- Des Collections d'images sont disponibles par simple clic en édition. Une collection standard est fournie par défaut (voire crédits), et cette collection peut être complétée ou remplacée par des images personnalisées, il suffit de les mettre dans les répertoires concernés pour qu'elles soient automatiquement accessibles.
- Un undo / redo (défaire / refaire) est disponible dans l'éditeur principal, ce qui permet de corriger facilement l'effet d'une fausse manipulation.
- Un éditeur de base de donnée intégré permettant d'accéder tous les éléments et surtout les variables de configuration qui sont classées par groupes de fonctionnalités accessibles pour les plus courants par images interposées, ils permettent de changer rapidement des variables globales de configuration, de rajouter des utilisateurs, de leur attribuer un mot de passe etc.
- Des captchas basés sur de petites énigmes à résoudre présentées avec un texte tout à fait lisible :-). Un des avantages des énigmes vient du fait que tout un chacun peut en adapter à son site Internet.
- Open source selon la licence GNU GPL 3. Ce qui assure une grande liberté pour ce que vous pouvez faire avec ce CMS tout en ayant un effet global allant du style de programmation aux résultats obtenus, car chaque programmeur sait que les effets comme les codes peuvent être examinés en détail.
Points Forts spécifiques pour programmeurs :
- Un générateur de plugins intégré permettant de commencer à développer un nouveau plugin en partant d'un modèle fonctionnel.
- Environnement didactique permettant de se familiariser avec la création de code Php et la création de plugins.
- Codes Php / Javascript / Html / MySql épurés de manière à faciliter la programmation.
- Php : tous les fichiers ayant été développés pour le Cms sont des classes instanciées en Php objet, sauf l'index principal et les fichiers de constantes (const.php et starter.php). La philosophie de développement objet est développée au maximum, et affin de garantir un code souple et lisible Php est utilisé comme un langage structuré de haut niveau et non comme un langage de script, autrement dit le xHtml est généré à l'aide de chaînes de caractères passant par des fonctions Php. A noter que le délai supposé par rapport à un script direct est largement compensé par la simplicité du code final. Quelques avantages spécifiques de la philosophie de programmation utilisée :
- Principalement des appels de balises : le noyau central dispose d'un parseur de balises Xpetal multi-imbricables les unes dans les autres à la manière du XML. L'avantage est double : les appels sont faciles à faire depuis n'importe quel endroit vu que le parsing est presque total, sauf une partie du noyau central concernant l'éditeur et nécessaire au départ pour développer le parseur. Symétriquement la grande majorité des fonctions sont basées sur des balises Xpetal qu'il suffit de retrouver dans le code (tout en minuscules avec tg_ en préfixe : tg_balise) pour avoir accès au détails de la programmation.
- Le noyau central étant stable, les fonctionnalités supplémentaires sont ajoutées uniquement à l'aide de plugins, ce qui offre une efficacité et une structure optimum :
- Un programmeur n'a besoin que de connaître le micro environnement de son plugin pour mener sa programmation à bien.
- Le CMS ne charge que le code dont il a besoin, d'où vitesse et économie de mémoire.
- Jvascript : le Javascript utilisé est uniquement du Javascript Objet, ce qui comme pour le Php offre un surplus de clarté et des économies en temps de programmation.
- HTML : En ce qui concerne l'éditeur, le Html est strictement généré par des fonctions Php (en d'autre termes les accès au Html bénéficient d'une couche d'abstraction Php) et pour le contenu standard on peu soit utiliser directement du Html avec un WysiWyg standard ou passer par l'intermédiaire des tags Xpetal qui ont un avantage pour les fonctions complexes comme la gestion d'un menu, l'appel d'images avec fonction de zoom etc.
- MySQL : les appels SQL directs sont TOTALEMENT ÉVITÉ grâce à la classe aMySql.php ----, on peut donc faire des appels SQL sans connaître le SQL, mais juste en appelant les fonctions Php correspondantes. A noter que aMySql.php est une couche d'abstraction par rapport aux appels SQL directs qui permet de changer facilement le modèle de base de donnée utilisé, par exemple la classe simulSql.php ---- a été développée pour simuler le fonctionnement d'une base de donnée SQL grâce à une correspondance tables <-> fichiers et permet d'installer plus rapidement de petits sites sans avoir à se préoccuper d'une base de donnée dépendante d'autres droits d'accès que ceux du Php. A noter que cette technique est mal adaptée aux forums car des accès quasi simultanés aux tables effacent les modifications de l'utilisateur précédent. Le premier but d'un fonctionnement 100% Php était de pouvoir installer rapidement un mini CMS afin d'avoir une indépendance de manoeuvre sur le site concerné.
- Php : tous les fichiers ayant été développés pour le Cms sont des classes instanciées en Php objet, sauf l'index principal et les fichiers de constantes (const.php et starter.php). La philosophie de développement objet est développée au maximum, et affin de garantir un code souple et lisible Php est utilisé comme un langage structuré de haut niveau et non comme un langage de script, autrement dit le xHtml est généré à l'aide de chaînes de caractères passant par des fonctions Php. A noter que le délai supposé par rapport à un script direct est largement compensé par la simplicité du code final. Quelques avantages spécifiques de la philosophie de programmation utilisée :