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. :)

jeudi 17 novembre 2016

Live avec OBS sur LiveCoding et Twitch

Nouvel article en rapport avec les vidéos.

Après avoir réalisé mes premières vidéos Youtube sur des exercices de la BattleDev, je me suis posé la question de savoir s'il y avait des sites pour des lives de coding comme pour le jeu avec twitch.



Et bien sachez que oui ça existe, LiveEdu.tv  ! Et il est parfaitement adapté à un petit logiciel open source et multiplateforme, disponible sur Linux, Mac et Windows, j'ai nommé : OBS ! :)

Open Broadcaster Software (OBS) est un logiciel extrêmement complet qui permet de créer des scènes et capturer des vidéos avec plusieurs périphériques vidéos, sons et images.
Il est possible de créer des scènes qui combinent plusieurs éléments, comme une webcam, un fond d'écran, de capturer le contenu d'une fenêtre de bureau ou encore une piste audio et de mixer tout ça en temps réel.

OBS permet de diffuser facilement les contenus sur des sites de streaming mais aussi de réaliser des vidéos pour les sauvegarder. Je dois avouer être sous le charme, il est extrêmement bien réalisé et permet même de mettre des filtres, couper des images à la volée ou faire des transitions entre plusieurs scènes que l'on aura créé.

Si vous voulez diffuser du contenu, de n'importe quel type, vous n'avez plus d'excuse. :) Je vais d'ailleurs utiliser LiveEdu un maximum afin que vous puissiez voir l'évolution des différents projets en temps réel!

RDV sur ce lien pour nous suivre!


Note : si vous souhaitez diffuser sur LiveEdu.tv,  le bitrate est limité à 2300, si vous n'indiquez pas la limitation vous serez déconnecté du serveur en plein live. Suivez donc bien le tutoriel présent à https://www.liveedu.tv/obs-guide-linux/


Pour installer OBS sur Linux (Ubuntu en 16.04)

Suivant votre distribution, les procédures peuvent différer, n'hésitez pas à demander conseil pour votre système. Ajout convertisseur vidéo ffmpeg
sudo apt-get install ffmpeg
Installation d'OBS à partir d'un dépôt tiers
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update && sudo apt-get install obs-studio

Plugin obs-qtwebkit (https://github.com/bazukas/obs-qtwebkit)

Ce plugin est utile pour faire des intégrations de page web 
sudo apt-get install build-essential pkg-config qtbase5-dev libqt5webkit5-dev
wget https://github.com/bazukas/obs-qtwebkit/archive/master.zip
unzip master.zip
cd obs-qtwebkit-master
make
make install
rm -r .wget-hsts obs-qtwebkit-master master.zip
Ensuite redémarrage de OBS et dans sources il y a maintenant QtWebkit Browser! ;)




vendredi 11 novembre 2016

BattleDev

Dans ce nouvel article je vais vous parler de la BattleDev du blog du modérateur.



Il y a quelques jours, j'ai découvert un petit test d'évaluation sur l'algorithmie. Ce test est initialement prévu afin d'évaluer des développeurs pour des recrutements mais il est également possible d'y participer pour le fun (ce qui est le cas pour moi).

Je trouve le test intéressant dans le sens où il permet de se remémorer des algorithmes déjà vus pendant les études mais à présent oubliés.
Le test se déroule avec le partenariat de plusieurs entreprises du numérique et de région job où l'on doit résoudre 5 exercices pendant une durée de 2 heures. Il y a généralement deux tests par an, au mois de mars et au mois de novembre.

J'essaierai de faire tous les exercices, un peu comme un fil rouge. Vous aurez la possibilité de poser des questions et d'augmenter vos compétences (ainsi que les miennes) sur la programmation algorithmique.

Afin de vous expliquer le concept et le formatage des tests fournis par IsoGrad, j'ai réalisé une petite vidéo explicative sur le 1er exercice (et les suivants) de la session de mars 2016. Vous trouverez tous les exercices sur le site d'IsoGrad à l'adresse http://www.isograd.com/FR/solutionconcours.php


Les autres exercices sont accessibles sur Youtube
Mes corrections sont sur Github.

Les vidéos ne reflètent pas le temps que l'on doit mettre pour résoudre un exercice car le but est d'expliquer les démarches pour résoudre les problèmes. Mais il peut-être utile pour ceux d'entre vous désirant participer aux concours. N'hésitez pas à me donner vos impressions et à poser vos questions :)

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)

vendredi 7 octobre 2016

L'e-mailing

Une petite mise à jour du site me permet de vous parler de l'e-mailing.
L'e-mailing est un concept marketing (oui je sais les marketeux sont très angloconcept) permettant la diffusion d'informations par e-mails et la récupération d'une base e-mail d'utilisateurs.


La définition c'est bien, mais le plus intéressant c'est de savoir à quoi ça nous sert et comment le mettre en place :
Le but premier, c'est la création de newsletter, des emails à large diffusion pour tenir informé le visiteur d'informations quelconques. C'est aussi pour la publicité avec la mise en visibilité des promotions en cours ou encore pour notifier d'un changement ou d'un message reçu.

Mais l'e-mailing ne s'arrête pas là, il permet de gérer finement la diffusion groupée des e-mail en fonction de critères spécifiques, tranche d'âge, situation professionnelle, etc... afin de cibler au mieux les personnes en fonction de l'information à transmettre.

Voilà pour la théorie, pour la pratique il existent plusieurs solutions clés en main afin de se lancer dans l'e-mailing.


Pour le moment Kunzisot ne possède pas encore de base d'utilisateurs et n'est encore qu'à l'étape d'un site vitrine hébergé sur un site non dynamique. L'hébergement d'un site web dynamique et du programme d'e-mailing est encore prématuré car le projet n'est qu'à ses balbutiements, il faut donc se tourner vers une autre solution.
Après avoir cherché, des solutions open source et gratuites (pour peu d'utilisateurs au mois) permettent de résoudre ces problèmes, je me suis donc pencher vers phpList.

La solution est très simple à mettre en place et ne nécessite que l'intégration HTML et javascript, fonctionne donc sur une page statique simple, ce qui nous convient pour le moment parfaitement (et peut-être vous convient aussi si vous faites votre "landing page" et lisez cet article).

Évidemment, la base utilisateurs créée sur Kunzisoft ne sera utilisée que pour envoyer les mises à jour et l'évolution du projet par e-mail. :)

Pour mettre en place une page de souscription avec phpList :
Config -> Subscribe Pages



Vous pouvez faire en sorte que la souscription se fasse sur une et même page de votre site avec l'Ajax :
Documentation en ligne sur https://www.phplist.com/ajaxdemo
(si vous avez des soucis notamment avec l'implémentation de la bibliothèque javascript vous pouvez me demander)

J'espère que cet article plus technique vous a plus, il est vrai que la transparence est une notion que nous apprécions, vous savez donc à quoi servira vos e-mails mais aussi quelle a été notre réflexion pour la mise en place de cet outil. :)