Erreur 403 sur le sites avec Wamp et Apache 2

Depuis que j’ai mis à jour Wamp pour passer à une version récente d’Apache et surtout de PHP, je n’arrivais plus à faire tourner mes sites. J’avais systématiquement une erreur 403 et les logs ne disaient rien de plus.

403 voulant dire problème de droits d’accès, et vu que sous Windows, les droits d’accès sont inexistants, ça semble plutôt mal barré.

Ca fait quelques mois que j’ai le problème mais l’erreur était juste l’excuse qu’il me fallait pour ne pas bosser… J’ai fini par m’y atteler, la solution est sur le forum de Wamp, et j’aurais dû m’en douter vu que tout cela avait aussi merdé sur mon LAMP quand j’ai mis Apache à jour.

Bref, les directives

Order Deny,Allow
Allow from all

ne sont pas comprises par Apache 2, il faut les remplacer par :

Require local

Et plus précisément, comme décrit sur le forum (en lien en fin d’article) :

<IfDefine APACHE24>
    Require local
    Require ip 192.168.1
  </IfDefine>

  <IfDefine !APACHE24>
    Order Deny,Allow
	  Deny from all
	  Allow from localhost ::1 127.0.0.1
   </IfDefine>

Source : http://forum.wampserver.com/read.php?2,133666

Longue vie à Cordova

La semaine dernière, un sondage express est passé sur twitter pour les développeurs Cordova, pour apprécier leur ressenti sur la techno.

Les questions portent sur la documentation essentiellement, et bien sûr sur le niveau de satisfaction à l’utilisation de Cordova.

Comme à la fin il y avait un champ pour indiquer son email, pour poursuivre la conversation avec l’équipe de dév, j’ai laissé mon adresse.

J’ai reçu dès le lendemain un mail me proposant un RV téléphonique. J’ai apprécié la réactivité de l’équipe, et j’ai encore plus apprécié l’échange.

Le RV s’est passé vendredi à 17h30, avec deux développeurs américains, dont l’un de chez Microsoft. Je suis toujours surprise par l’implication réelle des développeurs de chez MS sur les projets libres. Après tout, cela fait des années que MS parle du logiciel libre comme du grand Satan, et leur récent free/libre-washing ne m’a pas vraiment convaincue. Mais force est de constater que si je continue de me méfier de l’entreprise, j’ai pleinement confiance dans les hommes et les femmes qui la composent (enfin, par au sommet, à la base, bref, les développeurs, quoi 😉 ).

L’échange a duré 45 minutes, en français et en anglais (je pense qu’on est tous sortis épuisés de cette conversation). On est revenu sur les questions sur sondage, notamment la documentation, mais les deux intervenants ont beaucoup insisté pour que j’exprime mes « frustrations » (pour reprendre leur terme) à l’utilisation de Cordova.

Celles-ci ne sont pas nombreuses mais quand j’y repense, ce sont finalement les freins à une adoption plus massive.

L’émulateur

L’émulateur met une plombe à se lancer, et il met 3/4h de plombe à émuler l’appli quand je la relance avec la commande build.

Quand je suis en plein debuggage javascript, à mettre des alert partout, je vois bien que je manque d’outils pour développer, mais en plein dév, on est dans une espèce d’urgence, et on ne prend pas le temps de chercher autre chose, mieux. Donc on soupire, on serre les dents et on patiente.

L’installation

Un point auquel je pense en écrivant cet article, mais que je n’ai pas pensé à mentionné aux développeurs, c’est la difficulté à installer l’environnement de dév. La première fois, cela a pris une journée entière, la 2e fois, une demi-journée (sur un poste différent). J’espère encore gagner un peu de temps la prochaine fois, mais je ne pense pas descendre un jour en-dessous de 3 heures. Il manque toujours un truc : un jdk, un nodejs, un PATH mal configuré… c’est un peu la plaie.

La performance

Même avec une appli très simple, Cordova est *légèrement »* plus lente. Oh, parfois c’est vraiment rien. Mais on *sent* cette différence, et tant qu’on la sentira, les applis natives seront préférées à Cordova.

Somme toute Cordova a encore un peu de boulot, mais manifestement les core-developpers y travaillent. Je ne voudrais pas faire un article qui mentionne uniquement les points négatifs, alors allons-y pour le positif.

La documentation

La doc est bien faite. Vraiment. Complète, avec des exemples. Je lui donne une note de 9/10, pas parce que la perfection n’existe pas mais parce qu’il manque parfois des exemples d’utilisations un peu bâtardes. Ou du moins, des utilisations moins standard. Mais une techno aussi bien documentée, moi je dis que ça vaut le coup de le mentionner.

Les core-plugins

Les core-plugins sont réduits à l’essentiel mais ils suffisent pour développer un projet normalement complexe : manipulation de l’appareil-photo, de la capture de sons et des medias, géolocalisation, file system, accès aux infos du téléphone (du device), gestion de la connectivité, manipulation des contacts, pour ne citer qu’une partie, tout est là.

Bon, sauf les push notifications, qui sont désormais en standard dans à peu près toutes les applis, et qui deviennent donc indispensables.

L’éco-système de plugins

Et justement, des plugins de push notifications, il en existe plein ! ainsi que d’autres, beaucoup beaucoup d’autres, pour faire à peu près tout ce que vous voulez : manipulation du calendrier natif, scan de code-barres, NFC, Bluetooth, … plus de 600 plugins existent à ce jour.

En conclusion

Cordova est un bon environnement pour développer une appli. Facile à prendre en main, multi-plateforme, maintenu à un ryhme appréciable, avec un éco-système encore un peu light mais qui progresse, et bien sûr, libre (licence Apache 2.0). Le fait qu’il soit porté par la fondation Apache et non par un éditeur lui assure un futur chargé de promesses.

8 logiciels libres pour remplacer vos logiciels habituels

Lorsque je parle de logiciels libres autour de moi, que ce soit dans le milieu professionnel ou dans mon cercle amical et familial, j’ai des réactions qui varient entre « connais pas » et « entendu parler, c’est comme Linux là ? ». Au mieux, les gens imaginent une interface noire et des lignes commandes à taper. C’est bizarre comme *nix n’a jamais évolué dans la tête des gens, alors que windows 3.1, même avec son interface graphique, était encore plein de commandes à taper sous MSDos (je me souviens de jeux que je lançais sous MSDos, sans parler de l’ordinateur Amstrad qui dans mon souvenir n’avait aucune interface graphique, j’avais 12 ans et quelques et taper quelques lignes de commandes, ça n’était pas la mer à boire).

Pourtant, aujourd’hui les logiciels libres sont nombreux, riches, et ont envahi à peu près tous les domaines logiciels. Pourquoi ne sont-ils pas plus connus ? L’initiative de Framasoft « dégooglisons internet » va dans le même sens, mais soyons honnêtes, à part les gens déjà sensibilisés, personne n’est au courant.

J’ai eu envie de faire un petit récap des logiciels libres que l’on utilise à titre personnel tous les jours ou presque, que l’on pourrait installer sans bobo sur son ordinateur. Les raisons de changer ne sont pas « parce que c’est un logiciel libre », autrement dit, pas question d’être dogmatique, mais un peu de prosélytisme bien argumenté n’a jamais fait de mal à personne, surtout tant que je ne viens pas toquer à votre porte le dimanche matin 😉

Je vais commencer par enfoncer des portes ouvertes, et parler de :

Firefox

L’un des rares logiciels libres à être connus, probablement parce que les informaticiens sollicités par leurs amis et parents finissent par l’installer sans demander l’avis du propriétaire avec quelques plugins, histoire d’en finir avec les virus, les troyens, les pubs, etc.

Firefox est un bon navigateur, pour plein de raisons autres que sa licence. Si je devais n’en donner qu’une, ce serait ses extensions et si je ne devais donner qu’une extension, ce serait adBlock. Je suis persuadée que MS a perdu la bataille des navigateurs parce qu’il ne proposait pas d’extensions.

Site officiel : https://www.mozilla.org/fr/firefox/new/

Thunderbird

Oups, encore une porte ouverte… Remplacer la version de base d’Outlook (parce que vous n’avez jamais cracké la version payante) par Thunderbird, c’est vous faire une cadeau de Noël. Avouez-le, Outlook c’est vraiment pas terrible…

Site officiel : https://www.mozilla.org/fr/thunderbird/

LibreOffice

Si vous voulez une seule bonne raison d’utiliser LibreOffice plutôt que MS Office, je vous dirai qu’il permet de générer des PDF avec un bouton, sans avoir besoin d’installer des PDF creator bourrés de malwares. Avouez, c’est tentant… A part ça, il fait tout pareil que MS Office, même les bons vieux power-points présentations avec des photos de bébés et de chats. Ooooh, c’est trognon !

Je vais être honnête, la compatibilité vec Ms Office laisse parfois à désirer, pas sur l’essentiel (mise en forme de texte, formules, tout ça, ça passe) mais quand on l’utilise pour autre chose que ce pour quoi il est destiné (par exemple, une image avec des commentaires et des flèches, ou un dessin), ça arrive en vrac, quelque soit le sens (MSO => LO ou LO => MSO). La bonne nouvelle c’est que vous pouvez générer des PDF 😉

Site officiel : https://www.libreoffice.org/

VLC

C’est bien simple, les lecteurs de musique/films sont tellement pourris sous Windows que je ne comprends pas pourquoi ce ne sont pas les premiers à être remplacés. Windows Media Player est une énorme bouse, lourde, qui rame, qui râle quand on lui passe à peu près n’importe quoi parce qu’il n’a pas les bons codecs… VLC est juste une source d’eau fraîche après une traversée du désert.

Site officiel : http://www.videolan.org/vlc/index.html

Gimp

C’est inimaginable le nombre de personnes qui ont un photoshop cracké. Le logiciel coûte la peau du c^l, évidemment on ne peut pas se permettre de l’acheter, mais je pensais (je suis très naïve) que les gens se tourneraient vers des logiciels moins chers, voire gratuits, sauf que bon, il n’y en a pas tant que ça. Avec Picasa il est devenu possible de faire un peu de retouche, mais bon, rien à voir.

Gimp est vraiment bien, plus léger, oui, il va falloir perdre vos habitudes, j’ai eu du mal au début, les raccourcis ne sont pas les mêmes, les icones ne sont pas à la même place. N’empêche, il vous fait passer du bon côté de la légalité.

Site officiel : http://www.gimp.org/

Les tutos : http://www.gimp.org/tutorials/

7zip

On ne peut pas dire que le zipper par défaut sous Windows soit la panacée. J’ai une énorme préférence pour 7zip, très performant.

Site officiel : http://www.7-zip.org/

Sumatra

Ce lecteur de PDF est ultra léger, très rapide même si les gros fichiers, largement suffisant pour une utilisation personnelle.

Site officiel : http://www.sumatrapdfreader.org/free-pdf-reader-fr.html

D’autres reader PDF : https://pdfreaders.org/index.fr.html

Framadate

Pour remplacer Doodle, Framadate est parfait. Il a les mêmes fonctions de base, et il est respectueux de votre vie privée (en français, il ne revend pas vos données et celles de vos participants).

Site officiel : https://framadate.org/

En conclusion

Voilà, vous n’avez plus d’excuse pour continuer à utiliser vos vieux outils lourds et gourmands.

Pour les plus sensibles, qui nécessitent une migration de données (je pense à Firefox et Thunderbird notament), il existe des tutos assez faciles à suivre.

Si vous voulez en savoir plus, une page Wikipedia recense les équivalences dans pas mal de domaines :

https://fr.wikipedia.org/wiki/Correspondance_entre_logiciels_libres_et_logiciels_propri%C3%A9taires

Have fun !

 

Code Igniter, un framework encore d’actualité

Pour développer mes applications web, j’utilise depuis 2009 Code Igniter. A l’époque, ayant signé un gros projet, bien plus gros que ce à quoi j’étais habituée, genre fois 10, j’ai réalisé que je ne pouvais plus bricoler des petites librairies dans mon coin et qu’il me fallait un framework.

Je me suis donc lancée dans cette douloureuse aventure qu’est le benchmark de frameworks, et j’ai retenu Code Igniter, pour des raisons que j’ai relaté dans cet article.

Au fil des années, Code Igniter a un peu perdu de sa notoriété, supplanté par Symfony qui a pris toute la place (aucun reproche, c’est un excellent framework). A un point qu’il y a deux ans, je me suis demandée si je n’allais pas devoir changer, CI étant à peine connu par les développeurs que je connaissais, ce qui entraînait des difficultés pour demander de l’aide en cas de surcharge de travail.

Cette semaine est sorti un classement de frameworks, réalisé par WebhostFace, un hébergeur, et j’ai eu la surprise d’y retrouver Code Igniter en très bonne place !

Point de vue communauté, il est à la traîne, mais pour le reste, waow ! Rapide et sécurisé, facile à prendre en main, bref, il reste toujours un très bon choix de développement. Bien sûr il a des lacunes, la plus grosse étant à mon avis l’absence de scaffolding, mais une librairie existait pour CI 2.2, on peut espérer qu’elle sera portée sur la version 3.0.

De mon côté, j’ai repris ma librairie préférée de templeting, celle de Colin Williams dont le site n’est plus en ligne, je l’ai mise sur github avec la documentation et j’ai apporté quelques modifications pour qu’elle fonctionne sur CI 3.0. J’encourage les développeurs à faire de même pour les libs qu’ils utilisaient et qui ne sont plus maintenues ou pas encore mises à jour pour CI 3.0

Sources : http://www.developpez.com/actu/88142/Quels-sont-les-frameworks-PHP-les-plus-populaires-de-2015-Un-specialiste-de-l-hebergement-propose-un-classement-des-cinq-les-plus-sollicites/

http://www.blog.webhostface.com/popular-php-frameworks-2015/

La librairie de template de Colin Williams : https://github.com/lezardrouge/williamsconcepts-template

Nouveautés de CodeIgniter 3

Après la sortie en mars de Code Igniter 3, mon framework préféré depuis 2009, j’avais promis ici de faire un compte-rendu plus en détail des nouveautés. N’ayant pas démarré de projet sous CI depuis, ça a un peu traîné mais ça y est.

L’inventaire ci-dessous n’a pas l’intention d’être exhaustif sur les points présentés, seulement sur les points qui m’ont semblé marquants.

Nommage

Le nommage a changé : désormais les classes doivent commencer par une majuscules, et les noms de fichiers aussi. Ainsi le controleur News s’appelle News.php, le modèle, News_model et son fichier News_model.php.

CI recommande d’écrire les méthodes et les variables en minuscules avec des underscopes comme séparateur, mais voilà une recommandation sur laquelle je vais m’asseoir.

Les sessions

Les sessions ont peu changé. Désormais les sessions sont lockées quand on accède aux données, deux requêtes HTTP ne peuvent plus accéder à la même session en même temps. D’après la doc, cela peut entraîner des problèmes de performance. Pour éviter cela, il suffit d’utiliser une nouvelle méthode : session_write_close()

Le reste n’a pas changé, on accède aux données de la même manière :

$this->session->userdata('item');

plus un getter :

$this->session->item

Pour ajouter ou modifier des données, $this->session->set_userdata($array); et $this->session->set_userdata('some_name', 'some_value'); sont toujours disponibles.

Les informations temporaires (flashdata) sont toujours disponibles et utilisées de la même manière qu’avant. Désormais il est possible de transformer une donnée existante en session en donnée flash avec mark_as_flash :

$this->session->mark_as_flash('item');

Cette méthode permettant également d’ajouter une donnée, fonctionnant comme l’ancienne :

$this->session->set_flashdata('item', 'value');

Une autre nouveauté se situe au niveau des Tempdata : il s’agit de noter une donnée de session avec une date d’expiration. Passé cette date d’expiration l’info est automatiquement supprimée.

$this->session->mark_as_temp('item', 300);
$this->session->set_tempdata('item', 'value', 300);

Et pour retrouver l’info :

$this->session->tempdata('item');

Le stockage des sessions utilise désormais 4 « drivers » : files, database, redis et memcached. Leur utilisation est détaillée dans la doc.

La structure de la table ci_sessions (si le « driver » database est utilisé) a changé : on « perd » le user-agent.

Plus d’infos sur les sessions :

http://www.codeigniter.com/user_guide/libraries/sessions.html

Utilisation de la base de données

Le Query Grouping

Si la syntaxe n’a pas changé, il y a maintenant le Query Grouping, qui permet de faire des sous-requêtes ou de grouper des clauses.

Très utile pour faire des OR WHERE par exemple. Là où avant, on devait utiliser du SQL :

$this->db->where('champ1 = 0 OR (champ2 = 'titi' AND champ3 = 'toto')') ;

On a :

$this->db->where('champ1', '0')
->or_group_start()
->where('champ2', 'titi')
->where('champ3', 'toto')
->group_end() ;

Plus d’infos sur le Query Grouping :

http://www.codeigniter.com/user_guide/database/query_builder.html#query-grouping

Le Query Caching

Je ne me souviens pas si le Query Caching existait sur les versions précédentes, en tout cas je ne l’utilisais pas. Ayant décidé de rendre mon code portable et donc de laisser tomber la précieuse instruction SQL_CALC_FOUND_ROWS, je me suis tournée vers le Query Caching :

$this->db->start_cache();
$this->db->select()
->from('news')
->where('display', '1')
->order_by('orderby asc');
$this->db->stop_cache();
$this->db->get();
$total = $this->db->count_all_results(); // compte l'ensemble des entrées
$this->db->limit($num, $from); // on ajoute le limit pour la pagination
$query = $this->db->get(); // et l'on ne récupère que les entrées que l'on souhaite

Plus d’infos sur le Query Caching :

http://www.codeigniter.com/user_guide/database/query_builder.html?highlight=count_all_results#query-builder-caching

Voilà déjà un début, la suite arrivera dès que j’aurai balayé le reste.