dimanche 4 septembre 2011

Dernier post

Bonsoir tout le monde,

je tiens à vous annoncer qu'à compter de ce jour je ne posterai plus rien sur ce blog. Désolé.

En fait, je voulais continuer à vous traduire les articles que j'écrivais d'abord sur la version anglaise du blog car je pensais sincèrement que des développeurs français auraient été intéressés... Cependant, ça me prenait trop de temps, et vu l'audience... très faible... et vu que j'ai déjà pris du retard dans mes traductions, je pense qu'arrêter est la meilleure chose à faire.

Ainsi j'espère pouvoir me consacrer un peu plus à la version anglaise du blog. N'hésitez pas à aller sur l'autre blog: http://bsauts-en.blogspot.com

Bonne continuation à vous tous.

dimanche 13 février 2011

Qt, en constante amélioration

Hé les gens,

bonne nouvelle ! Trolltech travaille actuellement à regrouper les deux Qt SDKs, c'est à dire le Qt SDK basé sur Qt 4.7 et le Nokia Qt SDK. Tout deux inclus différentes caractéristiques telles que le déploiement d'application pour Maemo ou encore Symbian^3 pour le Nokia Qt SDK, etc. Quoi qu'il en soit, c'est une bonne nouvelle !

De plus, le Qt Mobility Framework a aussi été inclus ce qui veut dire qu'il est maintenant possible d'utiliser ce qui touche au multimédia avec QML. Il faut vraiment que j'y jette un coup d'oeil. :D

Plus de détails ici.

EDIT:
Votre attention je vous prie, je viens d'installer le Qt SDK en version complète. J'ai importé le premier tutoriel mais ça n'a pas marché. Voici la solution :

Si vous avez créer un projet QML avec une ancienne version du QtCreator, un fichier .qmlproject a été généré incluant
import QmlProject 1.1
Vous devez changer cette valeur pour 1.0. De plus, comme la version change, la propriété mainFile n'est plus disponible maintenant. Commentez-la.

Dans vos fichier .qml, ne vous inquiétez pas si vous voyez:
import QtQuick 1.0
Au moment où j'écris, je dois avouer que cela ne change rien à l'exécution de l'application. Seule les vieilles version de QtCreator ne supporte pas cet import. Vous pouvez utiliser l'import suivant pour remédier au problème :
import Qt 4.7

Qt et Ruby, oui c'est possible

Salut,

vous vous souvenez de cet article sur la Synchronisation de fichiers en ligne par un de mes amis et que j'ai partagé il y a de ça quelques temps ? Eh bien, le même ami semble lui aussi intéressé par Qt. Mais contrairement à moi, il connait le Ruby.

Eh bien, il a écrit un article (une brève introduction à vrai dire) expliquant comment on peut utiliser QtRuby pour développer facilement des applications. Vous pouvez trouver l'article ici.

Bonne lecture. :)

Premier tutoriel QML

Bonjour tout le monde,

voici enfin mon premier petit tuto sur QML. J'ai beaucoup parlé de ce langage... et vous allez enfin pouvoir comprendre pourquoi.

J'ai installé Qt 4.7 et QtCreator (le tout dernier en version beta en somme, mais ce n'est pas très important). J'ai créé un simple projet QML et voici ce que j'obtiens :
import QtQuick 1.0

Rectangle {
    width: 360
    height: 360
    Text {
        anchors.centerIn: parent
        text: "Hello World"
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}
C'est très important pour vous de comprendre exactement ce que signifie ce petit morceau de code même si, en jetant un simple coup d'oeil, tout est très clair. Je sais que vous n'êtes pas bête mais je vais quand même expliquer tout ça.

Comme vous pouvez le litre, l’élément racine est un Rectangle. Et il est nécessaire que ce soit un Rectangle pour être sûr que l'on puisse voir quelque chose car l'élément de base de toute application QML est un Rectangle. Ce rectangle a bien entendu des propriétés intrinsèques telles que width, height, color, etc. J'en parlerai plus en détail plus tard.

Dans notre Rectangle, nous rajoutons un élément Text qui possède lui aussi des propriétés telles que text (le text à afficher), width, height, etc. Bien entendu, toutes les propriétés en rapport avec la taille du texte, sa couleur ou encore la police du texte peuvent être changées. Les propriétés de type anchors permettent d'attacher un élément à un autre. QML suit le patron parent/enfant. On peut donc lier un enfant à son parent ou aux autres enfants de l'élément parent. Du coup, je pense que vous comprenez que anchors.centerIn: parent permet de centrer l'élément courant dans son parent. Cela sera toujours vrai même si vous modifier la taille de l'élément parent.

Le second élément est une MouseArea. Cet élément permet de gérer tout évènement induit par la souris (simple clique, double clique, clique long, etc.) et en capturant cet évènement, vous pouvez faire quelque chose. Dans cet exemple, l'application sera fermée. Cette MouseArea est ancrée de façon à remplir l'espace (en gros, la zone de capture de la souris recouvre tout l'espace). Comme je vous l'avais dit: c'est assez facile à comprendre.

De mon point de vue, je trouver que ce code aussi simple soit-il manque de quelque chose. En effet, bien que ce soit petit et simple, je pense que ce bout de code serait mieux comme ceci :
import QtQuick 1.0

Rectangle {
    id: hello_root
    width: 360
    height: 360
    Text {
        id: hello_text
        anchors.centerIn: parent
        text: "Hello World"
    }
    MouseArea {
        id: hello_msa
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}
La différence est très légère mais très importante. Comme je vous l'ai dit, tout fonctionne de façon parent/enfant. Un enfant peut se référer à son parent en utilisant le mot clé parent. Cependant, pour ancrer ensemble deux enfants, la seule façon de faire est en utilisant l'id de l'élément. C'est pourquoi, en tant que première bonne pratique, je vous prie de toujours rajouter l'id. Et par pitié, garder le nom simple et clair ! C'est TRÈS important. Quand on a un fichier dont tous les éléments sont appelés text1, text2, text3, etc. c'est tout simplement dégoûtant à lire !

Jusque là, tout va bien. Voyons voir ce qu'on obtient :
Mouais, bon, c'est pas très excitant vous allez me dire. Mais comme je vous l'ai dit, on peut s'amuser un peu avec les propriétés et voici une petite version un peu plus marrante :
Voici le code :
import QtQuick 1.0

Rectangle {
    id: happy_root
    width: 360
    height: 360
    color: "darkgrey"

    Rectangle{
        id: happy_circle_red
        x: 31
        y: 97
        width: 41
        height: 41
        radius: width/2
        color: "red"
    }

    Rectangle{
        id: happy_circle_blue
        x: 68
        y: 248
        width: 20
        height: 20
        radius: width/2
        color: "blue"
    }

    Rectangle{
        id: happy_circle_yellow
        x: 142
        y: 121
        width: 28
        height: 28
        radius: width/2
        color: "yellow"
    }

    Rectangle{
        id: happy_circle_pink
        x: 221
        y: 233
        width: 54
        height: 54
        radius: width/2
        color: "pink"
    }

    Rectangle{
        id: happy_circle_green
        x: 271
        y: 72
        width: 63
        height: 63
        radius: width/2
        color: "lightgreen"
    }

    Text {
        id: happy_text
        anchors.centerIn: parent
        color: "blue"
        font.pointSize: 16
        font.bold: true
        text: "Happy New Year"
    }

    MouseArea {
        id: happy_msa
        anchors.centerIn: parent
        onClicked: {
            Qt.quit();
        }
    }
}
Bon, vous devez penser: "Ouais, c'est... nul" mais vous vous trompez. Et vous comprendrez mieux pourquoi dans le prochain tuto que je ferai dans lequel je vous apprendrai à faire vos propres éléments QML pour que le code ne soit pas aussi imposant pour rien. A bientôt :D

EDIT: Ok, bon, il semblerait que je n'ai pas été très clair sur un point, je suis désolé, voici l'explication:

La prorpiété radius qui est rajoutée au Rectangle permet d'avoir des angles arrondis. Si vous regardez de plus près, vous pouvez voir :
radius: width/2
Cela signifie tout simplement que je réutilise la largeur du rectangle et en la divisant par 2, ça me permet de créer un cercle. C'est une petite astuce maison, navré de ne pas l'avoir expliquée plus tôt.

Avec QML, vous pouvez réutiliser presque toutes les propriétés de l'objet courant ou de tout autre objet du moment que vous donnez la bonne référence. C'est pour ça que je vous prie de bien vouloir donner des noms à tous les éléments.

dimanche 2 janvier 2011

Synchronisation de fichiers en ligne

Salut tout le monde,

aujourd'hui j'ai lu un article sur la Synchronisation de Fichier en ligne écrit par un de mes amis.
Voici le lien à suivre pour lire l'article qui vous donnera une petite idée de la chose.

Je voudrai aussi ajouter qu'étant moi-même un utilisateur de Dropbox, j'ai moi aussi été sauvé plusieurs fois. C'est vraiment très utile de mon point de vue !

Et puis, c'est intéressant de savoir qu'en plus de synchroniser vos fichiers sur le net, vous pouvez aussi partager des fichiers avec qui vous voulez, une ou plusieurs personnes. Pour info, je partage un dossier avec l'ami qui a écrit l'article.

Du coup, c'est possible d'avoir quelque chose comme un système CVS, inclus directement dans votre système de fichier et ne nécessitant aucune mise à jour manuelle contrairement à Subversion.

À savoir pour Dropbox: si vous invitez quelqu'un ou partagez un fichier, ou je ne sais plus quelles autres actions à accomplir, on s'en fiche, vous gagnerez un peu plus d'espace disque. Pour le moment, je suis au maximum avec 2.5Go, ce qui est déjà bien confortable.

La dernière chose à savoir est que vous pouvez installer Dropbox sur tous vos PCs. Ainsi, vous pouvez accéder vos données n'importe où ! Et ça marche même sur votre téléphone... Sympa hein? Et puis c'est tellement facile à utiliser que même mes parents pourrez s'en servir puisqu'après tout, c'est comme un dossier normal. :D

Si vous avez pas encore de compte, je vous conseille fortement d'aller vous en faire. Inscrivez-vous ! ;)

samedi 1 janvier 2011

JSR 179 - API de localisation Java

Bonjour tout le monde,
voici pour vous une petite introduction à l'API JSR 179 aussi connue sous le nom Java Location API (API de localisation Java).

Introduction à l'API

La spécification Java JSR 179 concerne l'API de localisation (comme dit plus haut) éditée par Sun pour la Java Micro Edition (JavaME). Cette API vise les téléphones portables ou plutôt n'importe quels appareils mobiles tels que les PDAs qui intègrent la plateforme Java.

lundi 1 novembre 2010

Java, j'aime ca

Salut tout le monde,

avant de commencer ce message, je voudrai tout d'abord dire que j'ai fait une erreur en disant au début que je ne parlerai que de développement d'application orienté mobile, puisqu'aujourd'hui je vais tout simplement troller.

C'est mon petit plaisir de la journée, je me sens d'une humeur à troller, peu-être tout simplement parce que j'ai programmer un peu aujourd'hui (bien entendu, en Java).