Quartz composer + automator + interface builder -> Preview de mon nouveau projet

Et bien voilà , l‘idée de base est assez simple : réaliser une sorte de " Super automator " s'inspirant de l'approche graphique de quartz et en y ajoutant un " interface Builder " intégré.
Poisson d'Avril ?
Non, je profite juste de la tranquillité relative du week end pour vous présenter mon dernier né. Baptisé MadeWithBoxes (je cherche encore un nom plus original. Avis aux propositions...
), voici à quoi ressemble le logiciel:

Mais plutôt que des images, un aperçu en vidéo avec un classique " Hello world " sera plus parlant...
Hello world!
L'approche Quartz Composer est ici plutôt graphique, le fonctionnement interne ressemble en effet plus à Automator dans le sens où l'on traite un flux d'informations les unes derrière les autres. Les interconnexions fonctionnent comme des fifos véhiculant les données ou des ordres d'une boà®te à une autre. Le gros avantage par rapport à automator est qu'ici chaque boà®te est multi-thréadé et l'on peut envoyer des données à plusieurs boà®tes en même temps. Lors du traitement d'un lot d'informations, les boà®tes travaillent en parallèle pour peu de disposer des données nécessaires sur leurs entrées. Dès lors on peut imaginer le gain sur un lot d'images par exemple (dès que la première image est lue, elle est envoyée à la boà®te suivante pour traitement et pendant ce temps la première lit l'image suivante, etc.).
L'idée étant de proposer une boà®te à outil clé en main, l'éditeur d'interface m'a semblé s'imposer. A chaque objet de l'interface est associée une boà®te que l'on peut déposer et manipuler dans la partie traitement pour interagir avec les autres boà®tes.
A cela, j'ai souhaité donner plus de clarté que Quartz Composer. J'ai en effet constaté que dès que l'on a beaucoup de boà®tes, cela devient vite brouillon. J'ai donc ajouté la possibilité de grouper des boà®tes et de coller des notes explicatives à droite à gauche...

Voici le fonctionnement des groupes en vidéo...
Les groupes
Et les notes...
Les notes
La circulation des flux d'informations peut aussi être visualisé en temps réel...
Visualisation des états
Je compte y ajouter aussi un mode pas à pas et la possibilité d'interroger les connexions pour scruter leur contenu.
A terme, il sera possible de générer des scripts auto exécutables et de créer ses propres boà®tes via un assistant générant les projets Xcode qui vont bien...

L'idée est donc de proposer un laboratoire visuel genre QuartzComposer conçu pour OSX et capable de traiter tous types de données.
Pour finir, un petit délire avec un traitement matriciel. A l'origine, c'est destiné à moyenner un lot d'images ensemble pour du traitement d'image astro mais dérouté de son rôle premier, on se retrouve à faire des effets assez marrant...
Effet "Chroniques de Riddick" en live.
(Ceux qui ont vu le film se rappelleront sans doute du chef des vilains pas beaux!!! ;D )
Pour le traitement d'image, le logiciel intègre 3 types de base: les images classiques (NSImage), CoreImage (CIImage avec tous les filtres Core Image disponibles) et un troisième type "matrice" permettant une plus large gamme d'encodage (jusqu'à 64 bits) pour du traitement plus orienté scientifique.
Après plusieurs mois de travail acharné de votre serviteur, c'est la toute première preview publique et c'est rien que pour Objective Cocoa!
Voilà , à vos critiques pour me donner un peu vos impressions.
Mala.
PS: Je sais, certaines parties du logiciel sont encore en Anglais mais c'est justement pour pas oublier d'en faire la traduction.
Poisson d'Avril ?



Mais plutôt que des images, un aperçu en vidéo avec un classique " Hello world " sera plus parlant...
Hello world!
L'approche Quartz Composer est ici plutôt graphique, le fonctionnement interne ressemble en effet plus à Automator dans le sens où l'on traite un flux d'informations les unes derrière les autres. Les interconnexions fonctionnent comme des fifos véhiculant les données ou des ordres d'une boà®te à une autre. Le gros avantage par rapport à automator est qu'ici chaque boà®te est multi-thréadé et l'on peut envoyer des données à plusieurs boà®tes en même temps. Lors du traitement d'un lot d'informations, les boà®tes travaillent en parallèle pour peu de disposer des données nécessaires sur leurs entrées. Dès lors on peut imaginer le gain sur un lot d'images par exemple (dès que la première image est lue, elle est envoyée à la boà®te suivante pour traitement et pendant ce temps la première lit l'image suivante, etc.).
L'idée étant de proposer une boà®te à outil clé en main, l'éditeur d'interface m'a semblé s'imposer. A chaque objet de l'interface est associée une boà®te que l'on peut déposer et manipuler dans la partie traitement pour interagir avec les autres boà®tes.
A cela, j'ai souhaité donner plus de clarté que Quartz Composer. J'ai en effet constaté que dès que l'on a beaucoup de boà®tes, cela devient vite brouillon. J'ai donc ajouté la possibilité de grouper des boà®tes et de coller des notes explicatives à droite à gauche...

Voici le fonctionnement des groupes en vidéo...
Les groupes
Et les notes...
Les notes
La circulation des flux d'informations peut aussi être visualisé en temps réel...
Visualisation des états
Je compte y ajouter aussi un mode pas à pas et la possibilité d'interroger les connexions pour scruter leur contenu.
A terme, il sera possible de générer des scripts auto exécutables et de créer ses propres boà®tes via un assistant générant les projets Xcode qui vont bien...

L'idée est donc de proposer un laboratoire visuel genre QuartzComposer conçu pour OSX et capable de traiter tous types de données.
Pour finir, un petit délire avec un traitement matriciel. A l'origine, c'est destiné à moyenner un lot d'images ensemble pour du traitement d'image astro mais dérouté de son rôle premier, on se retrouve à faire des effets assez marrant...
Effet "Chroniques de Riddick" en live.
(Ceux qui ont vu le film se rappelleront sans doute du chef des vilains pas beaux!!! ;D )
Pour le traitement d'image, le logiciel intègre 3 types de base: les images classiques (NSImage), CoreImage (CIImage avec tous les filtres Core Image disponibles) et un troisième type "matrice" permettant une plus large gamme d'encodage (jusqu'à 64 bits) pour du traitement plus orienté scientifique.
Après plusieurs mois de travail acharné de votre serviteur, c'est la toute première preview publique et c'est rien que pour Objective Cocoa!





Voilà , à vos critiques pour me donner un peu vos impressions.

Mala.
PS: Je sais, certaines parties du logiciel sont encore en Anglais mais c'est justement pour pas oublier d'en faire la traduction.

Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Beau travail !
Pour info, à quoi cela est-il destiné?
Pour répondre à ta question, le but est tout comme Automator de pouvoir traiter des flux d'informations en créant des applications rapidement. Le logiciel pourra aussi interagir avec les iApps (envoyer des données par mail, lancer des recherches spotlight, etc). Concrêtement, on a souvent besoin de réaliser des tâches plus ou moins répétitives et c'est là que ce genre d'application prend tout son sens.
L'idée est donc de pouvoir créer des logiciels rapidement de manière graphique et plus ou moins évoluée en fonction des besoins et du niveau de compétence en informatique (les programmeurs peuvent créer leurs propres boites).
Il manque encore pas mal de boites à la bibliothèque de base pour bien se rendre compte de toutes les possibilités du logiciel. J'ai encore du pain sur la planche!
j'ai regardé les videos, ca a l'air gargantuesque comme projet.
tu fais ca tout seul, a plein temps?
Bravo en tout cas, ca a l'air très propre au niveau de l'inteface. pour le reste je peux pas vraiment dire.
Chapeau !
Du grand art!
C'est impressionnant, c'est vraiment pas un poisson d'avril ?
En tout cas bravo, à quand une version beta qu'on puisse tester ?! :brule:
Même chose odjau.
Sauf que : A quand une version alpha?
Pour le nom : IQuarkomator, ça te dit? I(b)Quar(z composer)(Aut)omator.
Si j'ai bien noté, à la dernière keynote de Steve, sur Mac nous on doit dire :"Boum!"
Pour le moment, le projet doit faire dans les 50000 lignes de code. C'est encore facilement gérable d'autant que toutes les boites sont autant de projets bien dissociés.
J'ai commencé le projet seul. Ma femme commence à me donner un coup de pouce pour les boites de traitement mais venant de Delphi sur PC elle n'est pas encore très habituée à l'Objective-C.
Approximativement 3 mois et demi ramené sur un plein temps.
Bonjour le boulot pour un simple fake!
Redimensionnement d'un lot d'images...
Oui bon mon truc y fait juste un redimensionnement d'images Ok. Oui mais regardez mieux. Je charge un paquet d'images... le traitement se met en route... je recharge de nouvelles images dans la foulée... le traitement continue en arrière plan... les nouvelles images sont ajoutées à la file de traitement... et tout se fait comme si de rien n'était.
Assez atypique non? :fouf): Et cela est fait de manière transparente du fait du multi-threadage (pas très français mais bon
A je note. Bien qu'un peu compliqué à mon goût. :P
Pour le moment, je n'ai pas encore prévu de date officielle pour une première alpha ou beta. Cela va dépendre de ma dispo mais pour le moment j'y suis à plein temps donc ça avance bien.
C'est très impressionnant,
mais peux tu en faire des applications de tes traitements?
As tu prévu un système de plug in pour rajouter facilement des "box"?
Sinon j'ai aussi BoxesAppBuilder comme nom.
j'ai encore plus hâte de l'essayer.
Sais-tu quel va être la licence de ce logiciel?
Oui, c'est prévu.
Oui. Un vrai truc de fainéant qui te fait un projet Xcode comme un grand... 8--)
Voir ici le createur de plugins pour les boites de traitement en action...
L'assistant va même jusqu'à créer les variables d'entrées/sorties et leur accesseurs dans le code. Globalement, la mise en place d'une boite se limite à coder deux méthodes:
- Est-ce que les données en entrées sont ok pour le traitement?
- Le traitement lui même.
Il y aurra aussi l'équivalent pour les boites d'interfaces graphiques qui fonctionnent un peu différement.
J'ai prévu de le commercialiser sur une base de 3 packages :
- Limitée -> Possibilité de créer des exé mais nécessite le logiciel sur la machine.
- Sponsorisée -> Création d'éxé indépendants mais avec un logo de pub pour le soft au démarrage.
- No limit -> Aucune contrainte.
La tarification devrait commencer à 45$ HT (a peu près équivalent en Euro TTC en France avec le change actuel) pour la version limitée.
Il n'y a aucune contrainte quand à la création et à la distribution (commerciale ou non) de boites annexes par des développeurs tierces. C'est même vivement encourragé et documenté.
Le prix pour la version limité me semble correcte et j'espère que ton appli aurra un bon succès commercial.
Petite question subsidiaire: as-tu accès au futur Leopard, si oui es-tu certain que les évolutions du système ne te soit pas "défavorable" --> ce serait domage pour toi, mais déjà vu pour d'autre produit...
Je n'ai pas encore eu l'occasion de jouer avec Léopard mais cela ne m'inquiète pas outre mesure pour le moment. Il ne faut oublier qu'Apple applique toujours la règle des 80/20 dans le développement de ses logiciels grand public. Cela induit d'avoir des produits plus limités au niveau fonctionnalités. Les développeurs indépendants ont donc à mon sens toute place pour citer car ils apportent souvent des produits plus poussés et sont beaucoup plus réactifs face à leurs utilisateurs.
C'est un risque à prendre. Néanmoins, après l'effet de surprise, le soufflet retombe bien souvent et les gens s'apperçoivent qu'il leur manque plein de petites choses. Un très bon exemple est iWeb que beaucoup annonçaient comme le tueur de RapideWeaver. Depuis, tu as eu Sandvox et bien d'autres qui ont emboà®té le pas en apportant leur lot d'originalité et de fonctionnalités par rapport à iWeb. Mais bon, il y a toujours un risque potentiel c'est la vie. :fouf):
Maintenant, je vois surtout des choses très intéressantes pour venir renforcer progressivement mon logiciel. J'espère aussi que le support du multi-theading au niveau des API du système sera à la hauteur car au niveau de Tiger c'est pas encore ça et il faut faire des pieds et des mains pour jongler entre les API thread safe et les non thread safe. :crackboom:-
PS: j'ai aussi quelques surprises sympa en réserve pour les versions suivantes.
Mode Chacha : droit de cité ?
Bah, je profite de l'occasion pour dire à quel point je suis impressionné par ton logiciel.
Chachapeau bas !
+
Stop !!! on se croirait à une keynote de steeve --> One more thing
Déjà avoir l'idée de le faire c'est énorme, ensuite le modéliser en concevant une architecture évolutive, ouverte à des plugins etc, et finalement se palucher tout ce code !!!.... Bravo !
Je trouve que le prix est plus qu'abordable quand on compare à certains sharewares qui ne sont que de vagues améliorations des exemples fournis avec Xcode, saupoudrées de code copié-collé ici et là . Je ne parle même pas de certaines applis filemaker qui sont vendues à un prix fou.
Je le vendrais plus que ça moi ce produit là , d'autant que tu n'as (à ma connaissance) pas de concurrence et que tu n'es pas près d'en avoir...
Juste pour info et pour rassurer le débutant que je suis, je suppose que tu es développeur de profession ?
Merci. Le défis est passionnant. Quoi de mieux que ce genre de projet pour apprendre tout ce qu'on ne sait pas encore? :P
Oui je comprends ton point de vue. Je souhaite encourager l'achat coup de coeur sur la version de base. Un prix trop élevé deviendrait vite un frein.
Oui, j'ai une formation en informatique industrielle à la base. J'ai fais pas mal de C/C++ avant l'Obj-C notamment sur systèmes VXWorks (une architecture multi-tâches temps réel très robuste) et dans la simulation aéronautique.
Je dis : Bravo, [shadow=red,left]Monsieur[/shadow] Mala!
Quels autres documentations/livres as tu utilisé pour réaliser ce projet?
Ralala, je ne peux m'empêcher de baver devant ton application...
Je viens juste de me mettre à l'objective-c et cocoa, et la ca me met un coup !
Et dire que je galère à développer une bête appli...
C'est vraiment magnifique le travail que tu as effectué, je ne peux que me
J'espère sincèrement que tu arriveras à vendre ton application, je pense même qu'Apple devrait d'embaucher pour l'intégrer à mac os x !!
Encore une fois, bravo et toutes mes félicitations !!
Surtout pas! Passer dans le giron d'Apple imposera inévitablement une perte de liberté (en ne priviligiant que les solutions Apple), ce qui ne peut être que "dommageable" pour le client.
Arf, j'avais pas pensé à ça...!!!!
ps: petite question sans rapport...
Quel logiciel utilises tu pour capturer ton écran ?? Je trouve ça génial pour les présentation !!
Comme beaucoup ici, j'ai lu un peu tout ce qui me passait sous la main depuis Cocoa par la pratique à Learning Cocoa with Objective-C quand j'ai démarré l'Obj-C. Pour le web, ce ne sont pas les sites qui manquent (ici même, CocoaDev, le forum prog de MacBidouille, CocoaBuidler, la site d'Apple, etc) quand on coince sur une question.
Si cela peut te rassurer, j'ai pas mal galéré aussi en débarquant sur l'Obj-C. Très habitué à Visual Studio ou mieux à C++ Builder sur PC, au début le passage à XCode (ProjectBuilder à l'époque) + Interface Builder a été une horreur. Et c'est sans parler qu'il fallait apprendre un nouveau language avec de nouveaux concepts (délégation, catégories, gestion mémoire, plus d'héritage multiple comme en C++, etc). Mais avec le recul, je peux te dire que je ne regrette pas. L'Objective-C est vraiment très élégant et offre bien plus d'avantages que de containtes au final. :P
Snapz Pro X. Ca marche vraiment bien.
Tiens, j'en profite au passage pour faire aussi un peu de pub à l'excellent DEVONThink. Ce logiciel est assez génial pour archiver et indexer tout ce qui bouge sur la toile. Avant je galérais toujours pour retrouver le sujet de Pierre, Paul ou Jacques qui parlait de faire telle ou telle chose. Maintenant dès que j'aperçois un truc intéressant : hop, dans la base d'infos. :kicking:
Joujou avec la fonction de zoom pendant un scan disque
Par contre, j'ai été assez déçu par la gestion des polices vectorielles de Mac OS X. Je m'attendais à conserver des textes propres même en dézoomant mais c'était immonde sur de petites tailles. J'ai fini par presque tout précalculer en bitmap à l'échelle 1 et faire un resize avec antialiasing lors d'une réduction d'échelle (Bru si tu lis ces lignes : merci pour ta solution apportée à Unix sur un autre post pour la réduction d'image avec antialiasing, cela m'a fait gagner en perfs par rapport à ma méthode plus alambiquée qui consistait à passer par une capture d'une NSImageView). Au final, les perfs en précalculé bitmap sont d'ailleurs bien meilleurs qu'en pur vectoriel dynamique. Je ne pensais pas que la différence serait aussi importante.
Dans la foulée, j'ai aussi presque terminé la gestion des boites à nombre d'entrées et/ou sorties variable. Encore un ptit bug d'affichage à hélucider lors des déconnexions automatiques et ça devrait être bon. Globalement, il ne me reste que des bricoles sur l'éditeur de traitement. Ensuite, je passe à la finalisation de l'éditeur d'interface. La j'ai encore un peu de boulot pour avoir un truc nickel chrome. ::)
Tu devrais participer a des concours et présenter ton logiciel, je ne serais pas étonné que tu gagnes un prix.
Le code source doit être jolie a voir
Pour la police vectoriel, je crois que leopard apporte les compléments a ce niveau y sont ils me semblent.
Pour le nom, et après avoir travaillé longtemps avec LabView, Je te conseillerais de prendre un nom du même genre: DataView, FluxView, AppliView .....
Sous LabView, j'ai eu à ajouter dans un projet, des routines en C. Est-ce prévu dans ton produit?