Affichage des articles dont le libellé est Projet. Afficher tous les articles
Affichage des articles dont le libellé est Projet. Afficher tous les articles

samedi 11 février 2017

Créer une Icône Material Design Android avec Inkscape

Bonjour à tous,

Pour ce nouvel article, je vous propose mon premier vrai tuto sur la création d'une icône Android avec le logiciel de dessin vectoriel libre et gratuit Inkscape.

Icône Material Design Android

Logos Kevin Aguilar

Sachez avant toute chose que ce tutoriel est né car il n'est pas aisé de créer une icône de lancement d'application Android qui respecte les conventions du Material Design de Google.

Ces différentes conventions sont définies sur la page officielle que je vous conseille de lire pour plus de détails.


Les résolutions

La création d'un logo Android est meilleure avec un logiciel de dessin vectoriel car le logo aura besoin d'être exporté sous 6 résolutions différentes pour être géré par les différentes tailles d'écrans. Et le dessin vectoriel, comparé au dessin matriciel permet de créer des images avec la résolution voulue sans perte de qualité. Il est donc plus simple de créer le logo sous un logiciel de dessin vectoriel dans un premier temps (ici j'ai choisi Inkscape car libre) quitte à utiliser un logiciel de retouche matriciel dans un second temps.

Voici le récapitulatif des résolutions (qui correspond à une arrête du carré) à adopter pour chaque format du logo android :

ldpi : mdpi * 0.75 = 36dp
mdpi : 48dp
hdpi : mdpi * 1.5 = 72dp
xhdpi : mdpi * 2 = 96dp
xxhdpi : mdpi * 3 = 144dp
xxxhdpi : mdpi * 4 = 192dp


A noter qu'ici je parle de dp pour Density-independent Pixels qui est une unité basée sur la densité physique des pixels sur un écran. Pour plus d'informations sur les unités utilisées pour parler des pixels avec Android, je vous laisse le soin de regarder sur ce billet StackOverflow.

Inkscape

Pour faciliter la création du logo, j'ai créé un pattern qui reprend les différentes guidelines de Google que vous pouvez télécharger ICI.
La résolution indiquée dans Inkscape est de 192px qui est un multiple de 48, ce qui est parfait car nous donne une grille précise. Les 192px ne sont pas vraiment importants car lors de la création, seules les proportions importes mais cette résolution maximale s'adapte à une grille magnétique très utile pour y placer des points et des nœuds.

Grille Android Icône Pattern Inkscape

Style

Le style du logo est extrêmement important. En effet, afin de garder une cohérence entre tous les produits Material Design, il est judicieux de suivre quelques règles simples :
  • Le logo est vu comme une feuille de papier sur lequel d'autres feuilles sont apposées (J'avais tenté de faire de la perspective dans un de mes logos lors d'un live, je peux vous assurer que le résultat n'est pas terrible)
  • Le logo est généralement imbriqué dans un carré de 152dp de côté, un rectangle de 128dp/176dp de côté avec des coins arrondis de 12dp ou un cercle de 176dp de diamètre (Il existe des alternatives mais celles-ci sont les plus connues)
  • Les côtés sont d'1px d'épaisseur, quelque soit la résolution (voir le post de Jahir)
  • Les formes simples suffisent, les ombres donneront la profondeur au dessin, il ne faut pas trop surcharger le logo

Ombres

Les ombres sont normalisées sur des logos Android, il faut avoir en tête que la source de lumière est en haut à gauche de notre logo et que les éléments placés au dessus du fond auront une ombre portée de 45°.
Cependant des ombres portées sont également définis à partir d'une lumière diffuse afin de mettre en visibilité les différentes feuilles.
Il existe des teintes à appliquer sur les côtés de nos éléments.

Voici le récapitulatif des ombres à appliquer :

Ombre diffuse

Opacité: 20%
X Décalage: 0dp
Y Décalage: 4dp
Flou: 4dp
Couleur : Référer au tableau des couleurs

Teintes de côtés

Teinte haute
Hauteur : 1px
Opacité : 20%
Couleur : Blanc (#ffffff)

Teinte basse
Hauteur : 1px
Opacité : 20%
Couleur : Référer au tableau des couleurs

Couche de finition

Il existe une couche de finition qui permet de faire un léger effet sur notre logo. Les caractéristiques de ce calques sont les suivantes :

Type: Radial
Angle: 45º
Couleur: Blanc (#FFFFFF)
Midpoint Location: 33%

Slider 1
Opacité: 10%
Localité: 0%

Slider 2
Opacité: 0%
Localité: 100%

Tableau des couleurs

Le tableau des couleurs Google est bien réalisé, mais pour moi il manque le code hexa de ces couleurs... 
Pour palier à ce problème il suffit d'installer un sélecteur de couleur pour votre navigateur, par exemple : http://www.colorzilla.com/

Color Picker

Export

Une fois votre logo créé, il suffit de l'exporter dans les différentes résolutions au format .png,
Pour se faire:
  1. Aller dans File > Export PNG image...
  2. Dans la section Export Area, sélectionner Page 
  3. Et dans Image Size modifier la hauteur et la largeur avec Width et Height pour avoir 48
  4. Cliquer ensuite sur Export As... pour sélectionner le fichier de destination qui doit être dans le chemin .../mipmap-mdpi/ic_launcher.png
  5. Cliquer sur le bouton Export pour exporter le fichier.

Réitérer les étapes 3 à 5 en changeant la résolution en s'inspirant des données précédentes et en modifiant le chemin associé.

L'arborescence finale doit être :

/mipmap-ldpi/ic_launcher.png
/mipmap-mdpi/ic_launcher.png
/mipmap-hdpi/ic_launcher.png/mipmap-xhdpi/ic_launcher.png
/mipmap-xxhdpi/ic_launcher.png
/mipmap-xxxhdpi/ic_launcher.png

Si vous trouvez les étapes 3 à 5 fastidieuses, vous pouvez utiliser des scripts qui vont tout exporter pour vous! :)

Retouches (optionnel)

Une fois les différentes images créées, on peut les modifier avec un logiciel de retouche d'images matricielles pour effacer les soucis liés aux algorithmes d'export et notamment les effets de flous. Pour ça je vous conseille surtout de bien regarder les images ldpi et hdpi qui ne sont pas des multiples unitaires de notre résolution de base. Évidemment en tant que bon linuxien, je ne peux que vous conseiller l'utilisation de Gimp! ;)

C'est tout pour ce tuto, si vous avez des questions n'hésitez pas à les poser en commentaires.
Et si vous ne vous sentez pas l'âme d'un artiste, je peux aussi réaliser des logos sur demande!

jeudi 19 janvier 2017

Emission vidéo sur le Développeur Logiciel

Hello tout le monde,

J'avais pour idée depuis un moment de mettre en ligne des vidéos de vulgarisation sur différents sujets liés au numérique, à l'entreprise, au graphisme et tous les sujets qui me tiennent à cœur en lien avec la construction autour du numérique et du virtuel.

C'est chose faite avec cette première "émission Youtube" sur le thème du développeur logiciel.


Je compte en faire d'autres sur :
  • Le Graphiste
  • Les Langages de Programmation
  • Le Génie Logiciel
  • Les Startups
  • Les Statuts Juridiques
  • Les Systèmes d'Exploitation
  • Les Compilateurs
  • Les IDE
  • Les Logiciels
  • Le Logiciel Libre
  • Les Applications Web
  • Les Applications Mobiles
  • Les Applications Embarquées
  • Les Applications Desktop
  • Les Applications Vidéoludiques 
  • Les Méthodes de Gestion de Projets
(Peut être pas dans cet ordre)
Qu'en pensez-vous ?

lundi 12 décembre 2016

Android Date-Time Picker

Pour ce nouvel article, parlons Library!

Déjà qu'est-ce qu'une Library, c'est un ensemble de routines sous forme de modules qui pourront être réutilisées pour créer une application, aussi appelé une bibliothèque de développement.

Android DateTime Picker est une bibliothèque Android permettant la sélection d'un objet Date depuis un même DalogFragment (Un DialogFragment est une boite de dialogue pouvant être affiché au sein de votre application Android.)


Le projet étant libre et sous licence Apache 2, il peut être réutilisé pour tous vos types de projets, même commerciaux.


Si vous voulez y ajouter des fonctionnalités, vous pouvez me laisser un commentaire ou une issue sur Github à l'adresse :

https://github.com/Kunzisoft/Android-SwitchDateTimePicker

Et bien sûr, si le projet vous plaît, une étoile ou un don peut être appréciable! ;)

lundi 5 décembre 2016

Technologies de développement pour la création d'application mobile

Ce nouvel article fait le lien avec la vidéo que j'ai réalisé sur les technologies de développement que l'on peut utiliser pour réaliser son application mobile.


Pour les développements natifs :

Android avec le Java (ou le C++)
https://developer.android.com/studio/index.html

IOS avec l'Objective-C et le Swift
https://developer.apple.com/xcode/

Windows avec plusieurs technologies dont le C#
https://developer.microsoft.com/ 

Avantages
  • Les programmes sont optimisés pour chaque plateforme
  • Les documentations sont très complètes
  • Il y a une grande communauté
Inconvénients
  • Les applications ne sont pas mutli-plateformes
  • Il faut apprendre plusieurs langages de programmation

 

Pour les développements multi-plateformes sur une base web : 

Web avec HTML, CSS, Javascript  
http://ionicframework.com/
https://jquerymobile.com/

Package des technologies web
http://phonegap.com/
https://cordova.apache.org/

Avantages
  • Les applications sont mutli-plateformes
  • Les programmes sont rapides à développer et à déployer
  • Utilise les langages de programmation utilisés en web
Inconvénients
  • Les programmes ne sont pas optimisés
  • L'ergonomie n'est pas liée à l'appareil

Pour les développements semi-natifs et multi-plateformes procurant du code optimisé:

C#
https://www.xamarin.com/

Javascript, XML
https://facebook.github.io/react-native/

Avantages
  • Le meilleur du natif pour l'optimisation et multi-plateformes
  • Un seul langage de programmation à connaître
Inconvénients
  • Les technologies sont encore jeunes
  • Xamarin n'est utilisable que sur Windows
  • La communauté se développe mais résoudre un problème très spécifique est plus compliqué

Voilà pour ce petit récapitulatif, sachez qu'il existe aussi des outils pour créer gratuitement une application, certains sites vous proposent des générateurs automatiques ou créateurs qui vous promettent de réaliser l'application de vos rêves sans programmation. Mais je ne suis pas du tout favorable à ce genres de choses car ces sites fournissent des outils souvent très peu modulables, non réellement gratuits ou très peu performants. Ils ne permettent souvent que l'accès à un compte facebook ou twitter, un flux RSS, ce que l'on fait déjà avec d'autres outils.

Le chemin viable pour réaliser gratuitement son application, surtout si elle est complexe, est de la réaliser soit même ou/et de la rendre communautaire. En effet, si l'idée est bonne, la communauté contribuera à l'élaboration du programme et son déploiement, l'application sera en plus maintenue et possédera un réseau de distribution.

Si vous désirez réaliser votre application, vous pouvez contacter Kunzisoft, nous aurons plaisir à vous répondre et vous proposer des solutions en accord avec vos contraintes. :)

mercredi 19 octobre 2016

La traduction normalisée avec Gettext


Pour cet article, je vais vous parler de l'internationalisation de contenu et plus précisément de la traduction liée au domaine du numérique et plus précisément d'un standard qui existe depuis 1995 : Gettext

Le principe est de fournir des fichiers de traduction pour chaque langue que l'on veut distribuer dans son programme et par extension son site web.


Dans le schéma ci-dessus, le foo.c correspond au fichier source de notre programme chargé des traductions (ici en C). Évidemment, dans un autre langage, le fichier sera différent : en php par exemple on peut assigner une classe Translation contenue dans Translation.php chargée de faire un appel aux traductions.

Le fichier .POT est un template contenant le texte avec la langue d'origine à traduire et permet de créer les différents fichiers .PO, le nom du fichier .POT n'a pas vraiment d'importance.
Les fichiers .PO contiennent la traduction de chaque texte dans la langue voulue, chaque fichier est par convention nommé avec le diminutif de la langue après traduction ou avec le diminutif de la langue et du pays concerné. (fr.po, fr_FR.po)
Dans l'exemple ci-dessus, il est fort probable que la langue originelle soit l'anglais et que les traductions découlent de celle-ci. Mais il est tout à fait possible de partir d'une autre langue d'origine.

La modification des fichiers .POT et .PO peuvent se faire aussi bien avec un éditeur de texte standard qu'avec un logiciel en ligne de commande ou graphique. Tout dépend de vos besoins, si vous souhaiter modifier ces fichiers manuellement vous pouvez regarder une des documentations qui en décrit l'architecture :
https://fr.opensuse.org/Equipe_de_traduction/Les_fichiers_PO_et_POT
Si vous préférez utiliser un logiciel avec interface graphique quelques logiciels gratuits existent :
https://userbase.kde.org/Lokalize
http://www.omegat.org/fr/omegat.html
https://poedit.net/
https://poeditor.com/ (gratuit pour utilisation avec moins de 1000 strings ou pour projets OpenSource)

Les fichiers .MO sont les fichiers binaires qui correspondent aux traductions, ils sont utilisés par le programme pour récupérer les chaînes à remplacer, ils n'ont pas forcément le nom de la langue car définissent plutôt un contexte.

Voilà pour la description générale du concept de Gettext mais ça ne nous indique pas vraiment comment récupérer les traductions pour les inclure dans notre programme. Pour ça, il faut passer par une bibliothèque qui sera liée à votre projet. Il en existe énormément pour chaque langage de programmation, je vous laisse le soin de chercher mais si vous ne trouvez pas, vous pouvez toujours en faire la demande en commentaire.

Tuto Gettext PHP avec Composer

Je vais vous expliquer comment utiliser une de ce bibliothèques très facile à implémenter en PHP.

Prérequis :

  1. Un serveur PHP (tuto XAMPP bientôt disponible)
  2. Composer

(Tuto vidéo bientôt disponible)

De base, je travaille avec Composer qui permet de récupérer des librairies très facilement, j'admets donc qu'il est déjà lié à votre projet.
Pour récupérer la librairie Gettext la plus connue, il suffit de faire dans le terminal :
$ composer require gettext/gettext 
La librairie permet de générer les fichiers .MO dont on aura besoin par la suite mais propose une alternative plutôt intéressante, la création d'un fichier .PHP qui contiendra les traductions sous forme d'objets. Cette seconde solution peut-être utilisée pour se passer de la bibliothèque si par exemple nous ne voulons pas l'inclure sur un environnement de production.

Page à traduire


Le fichier .PHP contenant le code HTML devra contenir les chaînes de caractères à traduire sous un format spécifique. Par exemple, pour une chaîne de caractères à traduire, j'utilise la notation :

<h1><?= __("Texte à traduire"); ?></h1>

à la place de :

<h1>Texte à traduire</h1>

La méthode __() est un raccourci pour la méthode gettext()

 

Génération des .POT et .PO

La génération des .POT et .PO se fait par l'utilisation d'un logiciel tiers ou de l'éditeur de texte. Vous pouvez partir de votre page à traduire en faisant un import. Cela permet de récupérer automatiquement les textes à traduire, il ne reste plus qu'à faire la traduction de chaque chaîne de caractères.

Génération des .MO

Les MO peuvent être générés avec les logiciels tiers mais je conseille de le faire avec la librairie en passant par la méthode :
use Gettext\Translations;
//import from a .po file:
$translations = Translations::fromPoFile('locales/fr.po');
//and export to a .mo file
$translations->toMoFile('Locale/fr/LC_MESSAGES/messages.mo');
Ceci permet de garder l'arborescence obligatoire pour les fichiers .MO.
En effet ils doivent être placés dans Locale/{langue}/LC_MESSAGES/

Remplacement du texte

Le remplacement du texte dans la page à traduire se fait avec le contexte et le domaine de la langue. En début de fichier :
<?php
use Gettext\GettextTranslator;
//Create the translator instance
$->setLanguage('gl');
$t->loadDomain('messages', 'Locale');
?>  
 Nous pouvons imaginer une liste déroulante qui change la valeur du langage de la page à la volée ou un détecteur de langue liée au navigateur.
Vous trouverez les sources (bientôt) d'un petit projet de traduction.

Liens utiles :

http://tassedecafe.org/fr/internationaliser-site-web-php-gettext-2878
https://github.com/oscarotero/Gettext

jeudi 13 octobre 2016

Centralisation des projets!

Bonjour à tous,

Cette section est destinée à tous les nouveaux projets de création logiciels, d'applications et de bibliothèques.
Comme Kunzisoft est en développement et que la section de création n'est pas encore accessible au public, vous pouvez décrire vos besoins ici et évidemment c'est gratuit.



Si vous avez des idées, des fonctionnalités que vous souhaitez implémenter, des besoins client ou que vous souhaitez simplement aider alors n'hésitez pas à écrire un commentaire.

Merci de décrire les fonctionnalités voulues de votre application ou de votre logiciel, nos développeurs professionnels seront ravis de vous aider dans votre construction. :)

Projet en cours :

Note : 
  • vous pouvez demander la création d'un billet pour centraliser les informations d'un projet, il suffit d'en faire la demande (cette fonctionnalité sera implémentée dans Kunzisoft)

dimanche 2 octobre 2016

Fonctionnalités de Kunzisoft

La création du site n'est encore qu'à ces débuts et nécessite de l'investissement pour être à la hauteur des fonctionnalités voulues :
  • Définition d'un projet communautaire avec :
    • idée de base et fonctionnalités associées
    • ressources nécessaires
    • nom du projet
    • liens vers les outils collaboratifs (Github etc)
    • une section de demandes lié au projet (demande de création logo, problème particulier ...)
    • gestion de projet gantz
    • section de dons
  • Gestion des utilisateurs avec :
    • domaines de compétences
    • domaines d'apprentissage
    • liens vers comptes personnels (outils communautaires)
    • statistiques de contribution
    • montant des donations
  •  Notes des projets par la communauté avec critères :
    • d'intérêt fonctionnel
    • montant des donations
    • nombre d'acteurs 
  • Plusieurs langues :
    • Anglais
    • Français

Le code serveur est destiné à être développé en PHP avec le framework Synfony Laravel et le javascript avec AngularJS
Pour le moment, aucun serveur dynamique n'est déployé, son achat se fera lorsque le site sera financé.
Vous pouvez soumettre vos idées en commentaires, contribuer au code sur github ou faire des dons sur le site officiel.

Bienvenue sur le blog de Kunzisoft.


Que vous soyez graphiste, développeur, commercial, chef de projet, entrepreneur, chef d'entreprise, simplement curieux ou avec une idée saugrenue en tête, vous êtes le/la bienvenu(e) !

Voici le premier article de ce blog qui raconte l'histoire de Kunzisoft, un projet de création de programmes et d'applications communautaires.

Vous allez vous demander "mais qu'est-ce donc ça" ?

Ce projet vient de l'idée que beaucoup de personnes veulent déployer des concepts ou des fonctionnalités liés à la création de logiciels et d'applications mais pas forcément les compétences ou les ressources pour les réaliser.
A contrario, beaucoup de personnes possèdent les compétences et / ou les ressources pour développer des logiciels ou sont en cours d'apprentissage mais ne possèdent pas les idées ou des exemples pour parfaire leur enseignement ou leur potentiel créatif.

Afin de mettre en relation ces différents acteurs, Kunzisoft déploie sa solution et propose une plateforme de gestion des projets communautaires.


Sachez que nous ne réinventons pas la roue, de nombreux outils existent pour le développement, pour la communication, la gestion et la diffusion d'un projet logiciel, et nous vous incitons à utiliser ces outils. Pour nous il ne manque que la structuration communautaires autour de ceux-ci.

Nous militons pour le logiciel libre et encourageons les partenaires à adhérer à cette philosophie de partage qui augmente la qualité, la sécurité et le potentiel de diffusion des projets.
Évidemment, tout travail mérite salaire et comme la liberté d'expression et la gratuité est au cœur du logiciel libre, nous faisons appel au cœur des clients et des créateurs satisfaits des idées ou du travail accompli pour financer les projets par un système de donation complètement sécurisé.

La passion doit retourner au centre de l'esprit de création, c'est pourquoi nous encourageons les personnes à diffuser leurs idées, leurs compétences, leurs projets et à aider la communauté afin de devenir des Kunzites (magnifiques pierres précieuses scintillantes à la lumière nocturne).


Note importante :

Kunzisoft est actuellement en développement et reprend ses propres concepts, vous pouvez donc participez à son développement, soumettre vos idées, vos expertises et même le financer, rdv sur le site officiel : http://www.kunzisoft.com/