Le "CrossDevelopment" est le fait d'utiliser une machine différente pour le dévéloppement, que celle pour qui le produit final est déstiné. Z88DK et SDCC sont des compilateurs C qui permettent de coder, compiler vos binaires sur une machine actuelle (PC sous Windows, PC sous Linux, ou Mac sous Macos). Le binaire produit pourra au final fonctionner sur votre CPC. Voici une petite explication sur ces compilateurs.
Pour commencer je vous donne les adresses respectives des deux compilateurs :
Suivez les instructions (trouvées sur le site) pour l'installation.
Il s'avère que pour le CPC (ces compilateurs sont capables de compiler pour différentes plate-formes), un bug persiste pour le compilateur "zcc" de Z88DK.
J'ai mis ici un patch (retrouvable sur le forum du site du projet), pour corriger ce problème.
Maintenant vous êtes prêt à coder vos applications en langage C ;).
Vous trouverez dans cette archive les sources, lignes de commande et DSK finale pour vous donner une idée des possibilités de ce type de compilateur.
Au final, du C sur CPC c'est possible:
Je vais vous montrer comment parser du Xml de manière intuitive avec Cocoa.
Commençons par expliquer le format Xml.
Le format Xml est un langage issu du SGML ( langage à balise ) comme le HTML.
Par définition si l'on représente le contenu d'un fichier Xml, on le représenterait par un arbre ( avec des feuilles et des nœuds ).
Maintenant, passons à Cocoa ;).
En utilisant l'objet NSDictionary on peut "parser" l'initialisation de cette objet avec la méthode "initWithContentOfUrl".
Cette classe fonctionne par le mécanisme de clef <-> valeur. Donc si vous voulez obtenir la valeur pour une clef, vous n'aurez car faire :
NSString* valeur = [monDictionnaire objetForKey:@"maClef"];
Si vous voulez obtenir un noeud :
NSDictionary *noeud = [monDictionnaire objetForKey:@"maClef"];
Voila, c'est très rapide, mais Cocoa facilite encore une fois pas mal les choses.
Je vous donne un petit exemple de projet sous Xcode que vous pouvez télécharger ici projet Xml Xcode.
Si vous ne voyez pas encore l'interet, je vous donne juste un exemple :
Vous pouvez mettre par exemple un fichier Xml sur un serveur web, contenant les informations pour une application avec numéro de version par exemple.
Le tout sur un serveur, et qui vous permettrez de mettre à jour vos applications sans trop de difficultés.
Voila, bon code.
Si comme moi, vous écrivez du html directement dans un terminal sans vous préoccuper des codes html des accents et autres, la suite vous intéressera ;).
Voila, il m'arrive très souvent d'écrire du html (pour une documentation ou présentation), directement dans un terminal.
En gros comme ce qui suit :
cat >> index.html
< html> < head> < /head> < body> < center>< h1> mon titre < /h1>< /center>etc ..
Puis vous voudriez quand même que ce code respecte les standards du html ;).
Alors télécharger le code C suivant ascii2html.c , compiler le.
Pour l'utiliser, c'est relativement simple :
./ascii2html mon_fichier.html > mon_nouveau_fichier.html
Voila, maintenant votre fichier html respecte les normes html, tous les signes, accents, et autres codes sont remplacés par le codes html correspondant.
Si vous utilisez un codage de type UTF8, lancer le script suivant utf8toHtml , il fera la même chose mais pour un codage UTF8.
Cela fait bien longtemps que je n'ai écris dans ce blog. Il est temps de rattraper le retard en vous proposant ici un exemple d'encapsulation d'un objet C++ dans de l'Objective C. Et ce, grace à un petit exemple tout simple.
Bon bien commencer, télécharger l'exemple qui suit CplusplusTest.zip .
C'est un projet objective "C+ +" ( nous y sommes obligés car l'objective C suit la norme C99, comme le langage C, en gros :), pas de nouvelle déclaration dans le corps d'un fonction comme le ferait le "C+ +" ).
Le mieux c'est de vous laissez jeter un œil sur le code. :p
Les seules choses à retenir sont :- créer une nouvelle structure contenant votre objet C++ déclarée dans l'entête de l'objective C.
- Encapsuler la gestion de la mémoire, et bien y réfléchir ( instruction new du C++ and la fonction init de Objective C, et pareil pour le delete ...).
- si vous n'encapsulez pas vos getters et setters par des fonctions Objective C, elles ne seront pas utilisées ( ce qui semblent normales).
Si vous voulez aller plus loin je vous conseille d'aller sur l'url suivante, la référence, http://www.cocoadev.com/index.pl?CPlusPlus . Vous y trouverez même de plus amples informations, ou comment même utiliser les structures de la STL du C++ avec vos objets Cocoa ;).
Aller bon vent.
Je vous donne quelques ici quelques scripts qui vous permettront d'aller plus vite dans vos développements ainsi que dans le portage de vos programmes.
Si vous codez en C++, ou en C, comment créer vous vos Makefile, ou encore vos ./configure (pour un meilleur portage de vos applications) rapidement ?
Bin oui je sais les man existent, mais très souvent, on ne gagne pas trop de temps car la documentation sur les outils comme automake, autoconf, aclocal etc ... sont plutôt verboses.
Donc, comme je suis un informaticien (synonyme de fainéant), j'ai automatisé tou ça avec l'aide de quelques scripts.
Je vous donne la liste ici, je suis quand même cool, j'aurais pu les garder pour moi ;).
- MyGnuMakefile (permet de créer un makefile à partir de sources C ou C++ rapidement)
- MyAutoToolsC (permet lui de créer un ./configure et tout ce qu'il faut pour générer les autotools, pour un meilleur portage de vos applications en langage C )
- MyAutoToolsC+ + (même chose que plus haut mais pour le C++)
- MyMingW32Makefile (permet de générer un makefile pour des sources en C ou C++, mais pour produire un binaire windows.)
Pour l'utilisation, c'est assez simple, ce sont des scripts en bash, donc il y a juste à changer la première ligne le cas échéant, et donner les droits.
Je vais m'attarder sur le dernier script MyMingW32Makefile.
En fait, comme je suis sous macos et que je cherche quand même à ce que mes applications tournent sous windows, j'ai cherché longtemps un moyen de générer mes binaires windows sous mon mac.
Au hasard de mes recherches, je suis tombé sur ce site : http://crossgcc.rts-software.org/doku.php
Ce cross compilateur (GCC) permet de générer des binaires windows natifs.
Donc plus besoin de windows, à part pour faire des tests, bien sur :).
En espérant que ces scripts vous servirons, et vous permettront d'accélérer vos développements.
:p.
Je tape beaucoup d'html en ligne de commande, sans passer par un Wisiwig. Mais comme je suis un gros fénéant, pour transcrire les accents ascii en html, j'ai codé un petit programme en C qui fait ça pour moi ;).
Ascii2html
Bon comme je viens de le dire dans l'Edito, je suis un gros fénéant, et j'aime bien me facilité la vie.
Donc quand je tape du texte que je veux mettre en html après, j'utilise ascii2html que vous pouvez trouver ici.
En gros, c'est lui qui s'occupe de convertir les accents et autres particularités qui a besoin de son code html spécifique.
Son utilisation est simple :
./ascii2html mon_texte.txt > ma_page.html
Et voilà le tour est joué.
Mais vous aurez remarqué dans le code que c'est valable uniquement pour de l'ascii ISO-8859 par exemple.
Les caractères étandues ne sont pas utilisable par ce programme.
Et bien c'est pas grave, un script est la au cas oû vous seriez en UTF8 par exemple ;).
Vous pour le trouver la.
Ce script et le code fonctionne sur tout unix sans problème c'est à dire Macos X, Linux, et Unix propriétaires.
A la prochaine astuce.