jeudi 27 novembre 2014

PHP : API Envoyer un mail


Comment envoyer un mail en PHP ? En utilisant SwiftMailer.

Comment l'utiliser ? C'est assez simple.

1/ Initialiser cette API

require_once 'Swift/lib/swift_required.php';

2/ Définir variables

// liste des destinataires sous forme d'un tableau
$liste_destinataires= array("adr1@gmail.com", "adr2@gmail.com");

// liste des adresses en copie sous forme d'un tableau -> à noter l'utilisation d'un tableau associatif
$liste_cc = array("c1@gmail.com", "c2@gmail.com" => "Nom c2");

// l'objet du mail
$sujet= utf8_encode("Mon objet à propos de l'actualité");

// l'expéditeur
$email_expediteur='monAdresse@gmail.com';

3/ Instancier classes

// ne pas oublier bien sûr de renseigner correctement les informations propres à votre serveur SMTP.

$transport = Swift_SmtpTransport::newInstance('serveur SMTP',  port)
->setUsername('nom utilisateur')
->setPassword('mot de passe');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance();

4/ Prise en compte de l'objet du mail et des adresses mail

$message->setSubject($sujet);

$message->setFrom(array($email_expediteur => 'DUPOND Henri'));
$message->setTo($liste_destinataires);
$message->setCc($liste_cc);

5/ Définir le corps du mail

$message->setBody("<html>".
"<body>".
// insérer votre code HTML

...

// exemple insertion d'une image
"<img src='" . $message->embed(Swift_Image::fromPath('images/mon_image.jpg')) ."' />" .

...

"</body>".
"</html>", 'text/html');

6/ Joindre les éventuelles pièces jointes

// exemple d'un fichier PDF

$fichier1 = 'C:/mon_fichier.pdf";
$pdf = Swift_Attachment::fromPath($fichier1, 'application/pdf');
$message->attach($pdf);

7/ Envoyer le mail

$result = $mailer->send($message);

if ($result == 0)
echo "impossible d'envoyer le mail !";

mercredi 26 novembre 2014

Ouvrir plusieurs instances d'une application OS X


Par défaut, vous pouvez ouvrir qu'une seule instance d'une application sous OS X.

Comment faire pour en ouvrir plusieurs ?

A ne pas faire : copier votre application et lancer "l'original" et la "copie" de votre application.

Car en fait, vous êtes toujours sur la même instance !

La conséquence : les données manipulées par vos deux applications ("l'original" et la "copie") risquent d'être "inconsistentes". 

La bonne pratique :  ouvrir le Terminal et taper :

open -n -a "votre nom d'application"

Une nouvelle instance est ouverte ! Ceci étant possible car OS X est basé sur un noyau UNIX qui permet cette "opération".

PHP : API pour générer un fichier EXCEL


Comment générer un fichier EXCEL en PHP ?

En utilisant PHPExcel.

A noter que cette API supporte la génération de fichiers XLSX.

Dans un premier temps vous téléchargez cette API (ZIP).

Ensuite vous copiez le répertoire <Classes> dans votre projet PHP.

Comment utiliser cette API ?

Voici un exemple d'utilisation qui va générer un fichier XLXS :

// ne pas oublier d'inclure les classes concernées
include "Classes/PHPExcel.php";
include "Classes/PHPExcel/Writer/Excel2007.php"; 

// création de mon classeur
$objPHPExcel = new PHPExcel();

$objPHPExcel->getProperties()->setCreator("moi");
$objPHPExcel->getProperties()->setLastModifiedBy("moi");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX monfichier");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX monfichier");

// premier onglet activé
$objPHPExcel->setActiveSheetIndex(0);

// titre du document
$i = 1;

$objPHPExcel->getDefaultStyle()->getFont()->setName('Tahoma');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(12);
$objPHPExcel->getDefaultStyle()->getFont()->setBold(true);

$objPHPExcel->getActiveSheet()->SetCellValue('A' . $i, "mon titre");
$objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getFont()->getColor() ->setARGB(PHPExcel_Style_Color::COLOR_BLUE);

// entête
$i = 3;

$objPHPExcel->getDefaultStyle()->getFont()->setName('Tahoma');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
$objPHPExcel->getDefaultStyle()->getFont()->setBold(true);

$objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(25);

$objPHPExcel->getActiveSheet()->SetCellValue('A' . $i, utf8_encode('colonne 1 : actualité'));
$objPHPExcel->getActiveSheet()->SetCellValue('B' . $i, 'colonne 2');
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, 'colonne 3');
etc ...

// contenu
$i++;

$objPHPExcel->getDefaultStyle()->getFont()->setName('Tahoma');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
$objPHPExcel->getDefaultStyle()->getFont()->setBold(false);

$objPHPExcel->getActiveSheet()->SetCellValue('A' . $i, "contenu 1");
$objPHPExcel->getActiveSheet()->SetCellValue('B' . $i, "contenu 2");
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, "contenu 3");
etc...

// nom de l'onglet
$objPHPExcel->getActiveSheet()->setTitle('onglet 1');

// sauver fichier
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

$file = "monfichier.xlsx";
$objWriter->save($file);

Pour plus d'informations sur toutes les options (et elles sont nombreuses), veuillez consulter la documentation.

mardi 25 novembre 2014

Conseils sur l'intégration de iCloud dans votre application OS X


Quand vous intégrez iCloud dans votre application, il est nécessaire d'être très attentif.

Ce type d'intégration n'est pas si "simple" qu'elle n'y paraît.

Les précautions à prendre sont différentes entre une application OS X et une application IOS.



Voici les étapes qui doivent donc être respectées :

1/ Activer les capacités de iCloud pour votre application sous XCode - pas très compliqué jusque là !


2/ Soyez bien sûr que vos certificats et profils sont corrects et sont à jour (tant au niveau développement qu'au niveau soumission sur l'Apple Store - production) - je vous conseille de vérifier tout cela sur votre compte <apple.developer>.

Si cela n'est pas le cas, vous allez vous trouver devant de grosses difficultés pour tester et soumettre votre application.

XCode est capable d'initialiser correctement cette phase du processus à condition que le nécessaire soit fait sur votre compte <apple.developer>.

A noter que XCode peut se "synchroniser" avec votre compte <apple.developer>.

Ne pas oublier enfin que la durée de validité des certificats & profils est limitée dans le temps et qu'il faut donc les mettre à jour.

Il n'est pas très agréable de gérer ce type de problème lors de la soumission de votre application.


3/ Lisez attentivement le guide d'Apple <iCloudDesignGuide >.

Cela est indispensable pour avoir une vue globale de ce que peut représenter une implémentation de iCloud.

Vous y trouverez de bons conseils et des bonnes pratiques à suivre.

Ce document a pour objectif de vous faire aussi réfléchir sur les fonctionnalités de iCloud qui seront (ou devront être) réellement implémentées dans votre application.

Prenez donc le temps de lire ce document.


4/ Réfléchissez sur la "stratégie" à suivre lors d'un partage (et la modification) d'un même document iCloud par plusieurs utilisateurs connectés sur le même compte iCloud.

Je peux vous dire par expérience que cette étape est cruciale : le travail de développement va dépendre de la "stratégie" que vous allez choisir !

Vous pouvez vous poser ces quelques questions :

Dois-je systématiquement "fusionner" les modifications appliquées par les utilisateurs ?

Quelle est la nature ou le type de document qui est utilisé par mon application ?

Dois-je envisager de faire une "copie" par utilisateur du document modifié ?

Comment intégrer les modifications si je souhaite les gérer ?

Comment notifier aux utilisateurs les actions qui vont être menées ?


5/ Définissez les cas d'utilisation où il sera nécessaire de gérer les modifications d'un document iCloud


6/ Définissez les cas d'utilisation qui vont nécessiter un travail de développement.

Ce qui n'est pas forcément le cas : iCloud dans certains cas gére très bien la situation sans aucun développement de votre part.


7/ Définissez votre "stratégie" de test en mode iCloud


8/ Comment gérer vos problèmes techniques ? 

Ne pas oublier que dans votre contrat développeur vous disposez de tickets <support technique> (support assuré par les équipes d'Apple).

Pour les avoir utiliser plus d'une fois, je vous confirme que le support est de bonne qualité et sérieux.

C'est une aide à ne pas négliger.

Un petit conseil : soyez très précis quand vous utilisez un ticket.

D'abord le nombre de tickets est limité mais surtout pour obtenir une aide précise, il faut être précis.


Comment récupérer l'identifiant "BUILD" de votre application OS X ?


Lorsque vous "buildez" votre application sous OS X, vous générez un identifiant de type UUID.

Cet identifiant peut être utile pour comparer par exemple deux "build".

Il faut toujours s'assurer que nous travaillons sur la bonne "version" de notre application.

Comment alors récupérer cet identifiant ?

Ouvrez le Terminal, puis tapez :

$ dwarfdump —uuid MonApplication.app/Contents/MacOS/MonApplication


Vous devez récupérer une chaine de caractères de type UUID.

Ex2E7DA2D7-D494-31E6-BDE9-6DC701BB8D28

lundi 24 novembre 2014

Un peu de XPath pour la route...

XPath  est un moyen très utile et efficace d'accéder aux informations d'un fichier XML.

voici un petit tutoriel sympathique :

Tutoriel

Un guide pour le XSLT !

Le fameux XSLT capable de transformer un document XML à un autre format !

Les feuilles de style XSL sont bien sûr très utiles dans cette belle "mécanique".

Vous trouverez ci-joint ce guide XSLT assez conventionnel mais pratique :

Référence

Même si le XSLT (et les autres technologies) nécessite un certain apprentissage, il peut rendre de nombreux services.

Par exemple si vous souhaitez générer un document HTML à partir de données XML, le XSLT est un outil tout à fait adapté.

Vous pouvez aussi mettre un oeuvre un "mécanisme" de type <Template> : plusieurs feuilles de style XSL peuvent être "proposées" à votre moteur XSLT, le tout pour les mêmes données.

Autre avantage du trio XML / XSL / XSLT est le "découplage" fonctionnel (et même technique) entre votre application et la manière de "rendre" vos données.

Bien désinstaller une application !


Il peut arriver que pour diverses raisons votre application Windows ne se désinstalle pas complétement voire n'arrive pas à se désinstaller.

Il est important d'avoir quelques astuces afin de gérer au mieux une désinstallation.

Si cela n'est pas le cas, nous serons dans l'impossibilité d'installer cette même application.

Par exemple lorsque nous travaillons sur le paramétrage d'une installation via des fichiers WXS (pour un installer MSI), nous pouvons nous retrouver à devoir désinstaller une application qui a été incorrectement installée !

En effet la mise au point de ces fichiers de configuration / scripting peuvent (en phase de développement) être la source de quelques "problèmes" d'installation.

Procédure pour désinstallation

Evidemment la "prudence" s'impose lorsque nous manipulons un outil comme RegEdit.

Comment générer des GUID ?

Un GUID est un identifiant unique qui sert en général à identifier un composant logiciel.

Par exemple si vous souhaitez installer une application sous Windows via un installer MSI et ses fichiers de configuration, vous avez besoin de générer ces fameux GUID.

Comment générer des GUID ?

Génération de GUID

Bienvenue sur IBACKBlog !

Bienvenue à toutes et à tous !

Ce blog a pour vocation de poster et de partager des trucs et astuces dans le domaine du développement informatique.

Ces trucs et astuces sont classés par catégories.

Ils sont offerts gracieusement par la société IBACK, votre partenaire dans le développement de solutions applicatives.

Bonne découverte !