Astuce Installer PEAR pour PHP et WampServer
Transcription
Astuce Installer PEAR pour PHP et WampServer
Astuce Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Installer la librairie SVN pour PHP Pour pouvoir utiliser simplement subversion en PHP, vous pouvez utiliser la librairie VersionControl_SVN. Remarque : Pour git, la librairie VersionControl_Git existe également et s'installe de la même manière. Installation Exécutez juste la commande suivante : pear install VersionControl_SVN En cas d'erreur : Failed to download pear/VersionControl_SVN within preferred state "stable", latest release is v install failed utilisez plutôt la commande suivante pour spécifier le canal d'installation à utiliser : pear install channel://pear.php.net/VersionControl_SVN-0.5.0 Classe à corriger Le fichier Diff.php de la librairie comporte une erreur. Ce fichier se trouve dans le répertoire VersionControl\SVN\Command\ du répertoire PEAR (par exemple : D:\Dev\wamp\bin\php\php5.3.13\pear\VersionControl\SVN\Command\). Tout à la fin du fichier, remplacez 'summerize' par 'summarize'. Tags : Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/tag.png Subversion Subversion Publié le : 13/06/2013 Modifié le : 14/04/2015 Astuce Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Installer PEAR pour PHP et WampServer PEAR est à PHP ce est un gestionnaire de librairies pour PHP, permettant d'étendre les fonctionnalités de PHP par simple ligne de commande. Installation Récupération de l'exécutable Si le fichier go-pear.bat n'est pas présent dans le répertoire de PHP de WampServer : Téléchargez le fichier go-pear.phar ( http://pear.php.net/go-pear.phar). Copiez le fichier dans le répertoire de PHP de WampServer (ex : D:\Dev\wamp\bin\php\php5.3.13\). Exécution de l'installeur Une fois le fichier batch en place, lancer l'invite de commande et exécutez-le : cd D:\Dev\wamp\bin\php\php5.1.13\go-pear Durant l'installation, appuyez toujours sur Entrée ou Y, pour utiliser les paramètres par défaut. Configuration de l'environnement Lancez le fichier PEAR_ENV.reg présent dans le répertoire PHP de WampServer, pour mettre à jour les clés de registre nécessaires. (Double-cliquez sur le fichier pour le lancer.) Mise à jour de PEAR Pour mettre à jour votre installation, et vérifier que PEAR est bien installé, exécutez la commande suivante : pear channel-update pear.php.net Publié le : 13/06/2013 Modifié le : 10/04/2015 Astuce Utiliser Google Analytics pour un Intranet Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Google Analytics fonctionne très bien même en Intranet, tant que les utilisateurs du site ont accès à internet. Cela n'est vrai qu'à une condition : le site intranet doit avoir un nom de domaine finissant par ".qqchose" (.fr, .com, ...). Par exemple, http://mon-intranet.fr, http://mon-intranet.pwet fonctionneront, mais pas http://mon-intranet. Vous pouvez quand même utiliser Google Analytics en ajoutant une ligne au code Javascript fournit par Google : _gaq.push(['_setDomainName', 'none']); Source : http://www.statstory.com/intranet-tracking-with-google-analytics-piwik/ Image not readable or empty Google Analytics Tags : /extension/devnotebook/design/devnotebook/images/icon/tag.png Google Analytics Publié le : 07/06/2013 Modifié le : 14/04/2015 Astuce Le logger dans JCMS : log4j Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Par défaut, JCMS utilise log4j pour gestionnaire de logs. Utilisation générale de log4j Voici comment l'utiliser dans une classe : public class MyClass { /** Logger log4j */ private static final Logger logger = Logger.getLogger(MyClass.class); public MyClass() { logger.info("Je suis dans le constructeur par défaut de ma classe."); } Explications : Déclarez un nouvel attribut de classe statique qui utilise la méthode getLogger() de log4j. Passez votre classe en paramètre à cette méthode. Utilisez le logger en appelant ses méthodes debug(), info(), warn(), error(), fatal(), avec un message en paramètre, plus éventuellement une exception. Configuration de log4j Log4j est configuré via le fichier log4j.xml. Dans JCMS, ce fichier se trouve dans WEB-INF/data. Si dans un nouveau projet JCMS vous créez un package pour y mettre vos classes Java, il est probable que les logs ne fonctionnent pas. En effet, log4j n'est pas configuré pour ce nouveau package. Pour cela, éditer le fichier log4j.xml et ajoutez : <!-- Logger de classes personnalisées --> <logger name="mon.package" additivity="false"> <level value="DEBUG" /> <appender-ref ref="JCMS" /> <appender-ref ref="CONSOLE" /> <appender-ref ref="LOGFILE" /> <appender-ref ref="PLUGIN" /> </logger> Explications : L'attribut name définit pour quels package utiliser log4j. (Les sous-packages seront automatiquement logués.) L'attribut value de l'élément level permet de déterminer quels niveaus de log appliquer. En développement on utilise souvent DEBUG ou INFO alors qu'en production on peut se contenter de INFO ou WARN. Concrètement, avec le niveau WARN, les méthodes logger.debug() et logger.info() n'auront aucun effet (suivant cet ordre : debug < info < warn < error < fatal). Les appender sont les sorties à utiliser : fichier de log, console, ... Vous pouvez déclarer autant de logger que vous le souhaitez dans le fichier log4j.xml. Publié le : 28/05/2013 Modifié le : 09/04/2015 Astuce La taille des fichiers uploadés via PHP Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png La taille des fichiers uploadés via PHP est limitée. Par défaut PHP fixe cette limite à 2Mo, mais cette configuration peut être modifiée. Pour cela, éditez le fichier php.ini et modifiez la propriété upload_max_filesize avec la taille que vous souhaitez (ex: 16M). Deux autres propriétés peuvent brider la taille maximale : post_max_size : Nombre d'octets transmissibles via une requête POST, si vous voulez uploader un fichier via un formulaire. memory_limit : Nombre d'octets que PHP peut stocker en mémoire. Ces deux propriétés doivent être supérieures ou égales à upload_max_filesize. Publié le : 27/05/2013 Modifié le : 10/04/2015 Astuce Les variables disponibles dans le contexte, Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png pour les DataController Lorsque vous créez un DataController et que vous surchargez les méthodes beforeWrite(), checkIntegrity() et afterWrite(), le dernier paramètre de la méthode (la Map), contient tout le contexte disponible. Dans cette variable il y a notamment : request : L'objet HttpServletRequest de tomcat. response : L'objetHttpServletResponse de tomcat. formHandler : Le FormHandler utilisé lors de l'édition du contenu. Et dans le cas d'une modification de donnée, il y également : Data.previous : La dernière version de la Data modifée. Publié le : 23/05/2013 Modifié le : 09/04/2015 Astuce Récupérer la version antérieure d'une Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Data, dans un DataController Si vous avez besoin de comparer l'ancienne et la nouvelle version d'une Data, dans un DataController (par exemple dans afterWrite()), vous aurez besoin d'utiliser le contexte en paramètre de la méthode. Pour obtenir cette version, utilisez quelque chose comme : final Article oldArticle = (Article) context.get("Data.previous"); Publié le : 23/05/2013 Modifié le : 09/04/2015 Astuce Utiliser un logger dans les classes de test Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Dans vos classes de test, vous pouvez utiliser le gestionnaire de log slf4j. Ce gestionnaire est une façade qui peut utiliser plusieurs loggers au choix, comme log4j par exemple. Voici comment utiliser ce gestionnaire : public class MyClassTest extends JcmsTestCase { /** Logger **/ private static Logger logger; /** * Initialise un contexte pour une suite de tests, avec des méthodes d'initialisation et de * * @return une configuration de suite de tests */ public static TestSetup suite() { return new TestSetup(new TestSuite(MyClassTest.class)) { @BeforeClass @Override protected void setUp() throws Exception { logger = LoggerFactory.getLogger(MyClassTest.class); logger.debug("Début des tests unitaires pour la classe " + MyClass. class.getSimpleName() + "."); } @AfterClass @Override protected void tearDown() throws Exception { logger.debug("Fin des tests unitaires."); } }; } Explications : Déclarez le logger dans votre classe de test. Créez la méthode statique suite(), pour pouvoir initialiser des éléments au début des tests. Utilisez la méthode LoggerFactory.getLogger(), pour initialiser le logger. Utilisez le logger comme avec log4j (ex : logger.info(), logger.debug(), ...). Remarque : Pour pouvoir utiliser slf4j avec log4j, vous devez inclure ces deux jars dans votre projet : slf4j-api-1.5.8.jar et slf4j-log4j12-1.5.8.jar. Publié le : 23/05/2013 Modifié le : 09/04/2015 Astuce Vider toutes les tables de la base de Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png données Derby Si vous utilisez Derby dans vos tests unitaires, vous aurez sans doute besoin de réinitialiser votre base entre chaque test. Pour supprimer le contenu de toutes les tables de données, vous pouvez utiliser cette fonction : /** * Vide toutes les tables de la base de données, dont le nom commence par "G_" ou "J_". * * @throws SQLException */ public static void derbyClearAllTables() throws SQLException { ResultSet tables; Statement stat; final String schema = "jdbc:derby:jcmsdbunit"; // Récupération de la liste des tables de la base de données final Connection connection = DriverManager.getConnection(schema); tables = connection.getMetaData().getTables(null, null, null, null); final Set<String> tableNameSet = new HashSet<String>(); // Parcours des tables de la base de données while (tables.next()) { final String tableName = tables.getString("TABLE_NAME"); if (tableName.startsWith("G_") || tableName.startsWith("J_")) { tableNameSet.add(tableName); } } // Parcours des tables à vider for (final String tableName : tableNameSet) { // Nettoyage de la table stat = connection.createStatement(); stat.executeUpdate("DELETE FROM " + tableName); connection.commit(); } if (!tables.isClosed()) { tables.close(); } } Remarque : Les tables ne commençant ni par "G_" ni par "J_" sont probablement des tables utiles au fonctionnement interne de Derby. Elles ne sont pas à vider. Publié le : 21/05/2013 Modifié le : 09/04/2015 Astuce Méthode d'initialisation au début de la Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png classe de test Pour effectuer un traitement une fois au début des tests, on utilise généralement la méthode suivante dans la classe de test : @BeforeClasspublic static void oneTimeSetUp() { logger = LoggerFactory.getLogger(MyClassTest.class); logger.info("Début des tests unitaires."); } Cela permet d'initialiser un logger, configurer l'environnement à utiliser pour tous les tests, ... Cette méthode ne semble pas fonctionner avec JCMS (dans eclipse en tous cas). Vous pouvez faire l'équivalent grâce à la méthode suite() à ajouter dans votre classe de test : /** * Initialise un contexte pour une suite de tests, avec des méthodes d'initialisation et de fin * * @return une configuration de suite de tests */ public static TestSetup suite() { return new TestSetup(new TestSuite(MyClassTest.class)) { @Before @Override protected void setUp() throws Exception { logger = LoggerFactory.getLogger(MyClassTest.class); logger.info("Début des tests unitaires."); } @After @Override protected void tearDown() throws Exception { logger.info("Fin des tests unitaires."); } }; } Remarque : La méthode tearDown() permet d'effectuer un traitement une fois après tous les tests. Publié le : 21/05/2013 Modifié le : 09/04/2015 « PrécédentSuivant » 1... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...26