PSR-3 Security levels explained

The eight severity levels supported by PSR-3 are based on RFC 5424, and are described below:

Emergency – the system is unusable
Alert – immediate action is required
Critical – critical conditions
Error – errors that do not require immediate attention but should be monitored
Warning – unusual or undesirable occurrences that are not errors
Notice – normal but significant events
Info – interesting events
Debug – detailed information for debugging purposes

References:
http://www.sitepoint.com/logging-with-psr-3-to-improve-reusability/
https://tools.ietf.org/html/rfc5424 (page 10)


PHP7 – Build phalcon

Build phalcon for php7, binaries unavailable :s (20160503):

$ sudo su
$ apt-get install build-essential git php-dev libpcre3-dev
$ cd /usr/src
$ git clone https://github.com/phalcon/zephir.git
$ git clone https://github.com/phalcon/cphalcon.git
$ ln -sf /usr/src/zephir/bin/zephir /usr/bin/zephir
$ export ZEPHIRDIR=/usr/src/zephir
$ cd cphalcon
$ git checkout php7-parsers
$ zephir build -backend=ZendEngine3

References:
https://github.com/phalcon/cphalcon/tree/php7-parsers
http://phalcon.io/phalconphp-and-php7


phpbrew on el capitan

Official site: https://phpbrew.github.io/phpbrew/
Disable OSX SIP : http://bit.ly/1OqC4hP

brew link icu4c –force

sudo LDFLAGS=’/usr/local/opt/openssl/lib/libssl.dylib /usr/local/opt/openssl/lib/libcrypto.dylib’ phpbrew install 5.6.15 +openssl +mysql +pdo +apxs2 +mcrypt +ctype +hash +json +curl +mbstring +intl +gettext — –with-openssl=/usr/local/opt/openssl


TN3 Gallery for WordPress – Important installation note

Maybe you get blank images after ajax uploads using the TN3 gallery WordPress plugin.

A table of the TN3 WordPress plugin database schema has a FULLTEXT index and it has not been created if you use InnoDB as default engine. Therefore, to solve the problem:

  • use MyISAM as default engine for new tables OR
  • add “) DEFAULT CHARSET=utf8, ENGINE = MyISAM;” at line 108 of wp-content/plugins/tn3-gallery/tn3-gallery.php + trash previously created tables if necessary + disable and re-enable the plugin OR
  • execute this script on the database to add only the missing table (if you use InnoDB as default engine) :


CREATE TABLE IF NOT EXISTS `wp_tn3_fields` (
`docid` bigint(20) NOT NULL,
`name` varchar(20) NOT NULL,
`value_type` varchar(10) NOT NULL,
`value_text` text,
`value_date` datetime DEFAULT NULL,
`value_number` decimal(20,8) DEFAULT NULL,
`value_bool` char(1) DEFAULT NULL,
`value_comp` text,
PRIMARY KEY (`docid`,`name`),
KEY `ind_val_text` (`value_text`(100)),
KEY `ind_val_date` (`value_date`),
KEY `ind_val_number` (`value_number`),
KEY `ind_val_bool` (`value_bool`),
FULLTEXT KEY `ind_ft` (`value_text`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Les 5 types de programmeur

Au cours de mes voyages et aventures en programmation j’ai rencontré beaucoup d’ennemies étranges, et même des alliés étrangers. J’ai identifié au moins cinq sortes de guerriers du code différentes, certains font de merveilleux compagnons d’armes, tandis que d’autres semblent déjouer chacun de mes plans.

Néanmoins ils ont tous leur place au panthéon du développement d’applications. Sans un mélange sain de ces différents styles de programmation vous trouverez probablement vos projets soit trop longs à réaliser, soit pas assez stables, soit trop parfaits pour des humains ne les envisagent.

Le programmeur “ruban adhésif”

Duct TapeLe code n’est peut être pas joli, mais merde, il marche !

Ce mec est le fondement de votre entreprise. Lorsque quelque chose va mal, il va le réparer rapidement et de façon à ce que ça ne pète pas à nouveau. Bien sûr, il ne se soucie pas de ce à quoi le code ressemble, de sa facilité d’utilisation, ou d’aucune autre de ces préoccupations triviales, mais il va y arriver, sans un tas de paroles ou de perte de temps sans aucun sens. La meilleure façon d’utiliser cette personne est cibler le problème et s’en éloigner.

Le programmeur perfectionniste et toqué

PerfectionVous voulez faire quoi à mon code ?

Ce mec ne se soucie pas des deadlines et des budgets, ils sont insignifiants au regard de la forme d’art qu’est la programmation. Quand vous recevez enfin le produit fini, vous n’avez pas d’autre choix que vous soumettre à la gloire magnifique et à la radieuse beauté du code parfaitement formaté, non, d’une beauté parfaite, qui est si efficace que tout ce que vous pourriez lui faire ne ferait rien d’autre que diffamer un chef-d’œuvre. Il est le seul qualifié pour travailler sur son code.

Le programmeur anti-programmation

Anti-ProgrammingJe suis programmeur, merde. J’écris pas du code.

Son monde a une vérité toute simple ; écrire du code, c’est mal. Si vous devez écrire quelque chose, c’est que vous le faites mal. Quelqu’un d’autre a déjà fait le boulot alors contentez vous d’utiliser son code. Il vous racontera à quel point sa pratique du développement est plus rapide, même s’il met autant voir plus de temps que les autres programmeurs. Mais quand vous obtiendrez le projet, il ne contiendra que 20 lignes de code réel et sera très facile à lire. Il ne sera pas très rapide, pas très efficace, ou pro-compatible, mais il aura été réalisé avec le minimum d’effort requis.

Le programmeur pas impliqué

Half-assedQu’est-ce que vous voulez de plus ? Ca marche, non ?

Le gars qui ne peut pas se foutre plus de la qualité, c’est pour lui le boulot de quelqu’un d’autre. Il accomplit les taches qu’on lui demande de faire, et rapidement. Vous n’aimerez peut être pas son travail, les programmeurs le détestent, mais la direction et les clients l’adorent. Malgré la douleur qu’il vous causera dans le futur, il maintiendra les deadlines à lui seul de sorte que vous ne pourrez vous moquer de lui (peu importe à quel point vous en ayez envie).

Le programmeur théorique

TheoreticalBien, c’est une possibilité, mais en pratique ceci pourrait être une meilleure alternative.

Ce mec est plus intéressé par les différentes options qui s’offrent à lui que par ce qui devrait être fait. Il va passer 80% de son temps à observer sa machine le regard vide à réfléchir aux moyens d’accomplir une tache, 15% de son temps à se plaindre des deadlines intenables, 4% de son temps à affiner les options, et 1% de son temps à écrire du code. Quand vous obtiendrez le produit final ça sera toujours accompagné de la phrase : “Si j’avais eu plus de temps, j’aurais pu le faire correctement”.

Où vous situez vous ?

Personnellement, je me serais classé dans les perfectionnistes. Et vous, quel type de programmeur êtes vous ? (…)

Source : http://stevenbenner.com/2010/07/the-5-types-of-programmers/


Pense bête : Installation de Tora 2 sous Linux

Le logiciel Tora 2 m’a plu car il a l’avantage de ne pas requérir de machine virtuelle Java, ce qui m’a semblé être souvent le cas des logiciels de requêtage graphiques permettant les connexions aux bases Oracle, MySQL ou autre simultanément sous Linux, et aussi celui de proposer des options telles que l’édition de paquets, la complétion dans l’éditeur, un explorateur d’objets assez intuitif…

Prérequis : installer gcc, g++, automake, libtool, libqt, libqscintilla2, et oracle-xe-client (dépot deb : deb http://oss.oracle.com/debian/ unstable main non-free).

  1. Faire un checkout svn sur ce dépot : https://tora.svn.sourceforge.net/svnroot/tora/trunk
  2. Aller dans le dossier trunk/tora
  3. Exécuter autogen.sh
  4. ./configure
  5. make
  6. L’exécutable tora est dans le dossier src

Deux correctifs LightWindow pour Internet Explorer

Pour changer, cette saleté d’IE chipotte.

  • Un problème de javascript avec IE6 qui gène le redimensionnement des images. Il faut ajouter un witdh: 100%; vers la ligne 1230 de lightwindow.js.

    $(‘lightwindow_image_’+i).setStyle({
    width: ‘100%’,height: ‘100%’
    });

  • Un problème de CSS avec IE6 et IE7 qui empêche le texte de s’afficher complètement en hauteur : les caractères sont coupés en haut. Pour y remédier il faur tout simplement ajouter le style line-height: 12px; aux balises <div> qui contiennent du texte (ou autre taille selon la taille du texte de la <div>).

    <!– XHTML, une seule <div> –>
    <div style=”font-size: 12px; line-height: 12px;”>Texte</div>

    /*CSS, toutes les <div>*/
    div { font-size: 12px; line-height: 12px; }