Shared posts

15 Feb 15:17

Dates and Time – The OOP Way

by Sahan Lakshitha

The Date/Time PHP extension is a set of classes that allow you to work with almost all of the date and time related tasks. It’s been available since the release of PHP 5.2 and the extension introduced several new classes, all of which are mapped to real life scenarios:

  • A date or a time is represented by a DateTime object.
  • A timezone of the world is represented by a DateTimeZone object.
  • DateInterval objects represent an interval. For example, when we say two days from now on, the “two days” is the interval. The DateInterval object doesn’t rely on a specific date or time.
  • DatePeriod objects represent a period between two dates.

Now don’t let the last two tip you off, we’ll be looking at real world usage of these two in a moment.


From date() to DateTime

Whenever we want to show a date we used date(), it’s simple and it works. You just need to pass the date format you need. But it’s a real pain to manipulate, a good example is formatting dates and times according to a custom timezone.

DateTime does more than just return a formatted date, but before we go any further, you need to initiate a new DateTime object which represents your date and or time. Then we can do all sorts of cool stuff with it. A new instance is created just like any other PHP class.

$date = new DateTime();

The constructor of DateTime accepts a string parameter which defaults to “now”, the current time and date. To create an object for a specific date, you should pass the specific date and time to it. Formatting for the parameter is self explanatory in most cases. Below you can find a few different examples of constructing your DateTime object:

new DateTime('2013, March 24') //DateTime representing 2013, March 24
new DateTime('2013-03-24') //DateTime representing 2013, March 24
new DateTime('+2 days') //DateTime representing 2 days from now on.
new DateTime('tomorrow')

When PHP is having a hard time understanding the format, it will throw an exception. A full list of the available formatting can be found in in the documentation

If there is no formatting that matches your needs, you can specify your own format by using DateTime::createFromFormat

DateTime::createFromFormat('j-M-Y', '24-Mar-2013');

Now that we have a DateTime object in hand we can do whole bunch of stuff, rather easily.

Unix Timestamp

$date->getTimestamp(); //returns a unix timestamp

Modifying Date/Times

$date->setDate(2013, 12, 30); //yyyy, mm, dd will set the the specified date
$date->setTime(12, 3, 20); //hh, mm, ss (optional) will modify the time
$date->modify('tomorrow'); //string based manipulation
$date->setTimestamp(1364798550); //modify using a unix timestamp

Note that when out-of-range values are set, PHP will modify the date accordingly. For example, $date->setDate(2013, 12, 35); will generate 2014-01-04, the same goes for time.


Working With Multiple Dates

Now that you’re obsessed with DateTime, the next thing you know, your apps will be filled with DateTime objects. You’ll start to love dates and times like never before. From now on, you’ll be dealing with DateTime objects, not “strings” that you have to pass to the strtotime function when you need to do a little math.

Say for example that you need to compare two birthdays:

$sheldon = new DateTime('May 20th, 1980');
$neo     = new DateTime('March 11th, 1962');

if ($sheldon > $neo)
    echo 'Sheldon is younger than neo';

Another scenario might be comparing two dates. We can compare dates against one another like so:

$diff = $neo->diff($sheldon);

The diff call returns a DateInterval object. If we dump out the return value:

DateInterval Object
(
    [y] => 18
    [m] => 2
    [d] => 9
    [h] => 0
    [i] => 0
    [s] => 0
    [invert] => 0
    [days] => 6645
)

These are public properties. You can generate some friendly output from a DateInterval object:

$diff->format('Neo is older by %Y years and %m months older'); //Neo is older by 18 years and 2 months

What’s best about the DateInterval object is that you can apply the interval to another DateTime object:

$neo->add($diff); //neo's birthday changed to sheldon's

Note: Modifications to DateTime, such as adding doesn’t return new DateTime objects, it affects the original object. Always keep this in mind when passing around DateTime objects throughout your app. PHP 5.5 introduced a new class that returns new objects upon modification.

diff isn’t the only place where you can generate a DateInterval object. Since it’s a class, new objects can be initiated as usual:

$new_diff = new DateInterval('P2Y');

The amount of years/months/days etc., are passed in as a string to the constructor. More information can be found in the constructor’s documentation.


Working With Timezones

When creating new DateTime objects, the second argument of the constructor defines a timezone. If we skip this, a default timezone will be grabbed from the php.ini‘s date.timezone. You can modify this at runtime by calling date_default_timezone_set:

date_default_timezone_set('America/New_York');
new DateTime('today'); //datetime object is on New York time

You can also change timezones on the fly. As you may have guessed, first we need a Timezone object.

$timezone = new DateTimeZone('America/New_York');
$sheldon->setTimezone($timezone); //sheldon's birthday now on to New York

You can define the timezone while creating your new DateTime object:

$sheldon = new DateTime('May 20th, 1980', $timezone);

However, an important thing to note is that setTimezone modifies the original DateTime object. What we’re basically asking is, “format this date, to this timezone” whenever we call the setTimezone method. Now on the other hand, in the last example where we pass the timezone into the DateTime constructor, we’re saying, “the date I’m creating is in this timezone”.

A list of valid timezones are available in the online documentation.


DatePeriods

I think the official manual provides the best explanation:

A date period allows iteration over a set of dates and times, recurring at regular intervals, over a given period.

DatePeriod allows us to generate a set of DateTimes using two days that we define between an interval. We pass a starting date, an interval and an ending date. On each interval a new DateTime object is created.

Let’s say that we want to get all of Sheldon’s birth dates, since his birth:

//since birthdays occur every year, the interval is one year
$interval = new DateInterval('P1Y');

//third argument is the end date, new DateTime() == right now
$period   = new DatePeriod($sheldon, $interval, new DateTime());

foreach($period as $dt) {
    //DateTime objects
    echo $dt->format('Y-m-d - D'), "\n";    
}

The result would be:

1981-05-20 - Wed
1982-05-20 - Thu
1983-05-20 - Fri
1984-05-20 - Sun
1985-05-20 - Mon
1986-05-20 - Tue
...

Now by default, the DatePeriod includes the starting date that we pass in. However, the fourth argument to the constructor allows us to skip the start date:

$period   = new DatePeriod($sheldon, $interval, new DateTime(), DatePeriod::EXCLUDE_START_DATE);

Let’s see how many birthday parties Neo has had before Sheldon was born:

$bdays   = new DatePeriod($neo, $interval, $sheldon, DatePeriod::EXCLUDE_START_DATE);
echo iterator_count($bdays);

Extending

All of the classes that we’ve covered today can be extended to use with your own methods. One popular usage is extending the DateTime with a __toString method so that you can properly print out a DateTime object without calling format.


A Couple Usage Scenarios

  • One of my personal approaches to using DateTime objects, is when dealing with date/time columns in databases. All of the dates are stored as UTC timezone dates. The app code only works with DateTime objects, but before the end query is generated, all of the dates are formatted to UTC. This approach has allowed me to work with multiple timezone inputs easily.

    I can pass in a New York time object and completely forget about formatting it, before going to the database. I can easily switch between Unix timestamps and regular date-time formatting in my database at anytime, my app code doesn’t care as long as it gets a DateTime object.

  • I’ve also used DateInterval to simplify subscription payment logic. Using DateInterval objects to define the time between the subscription has made things really easy. I just need to apply the interval to last payment date.

Do you have any good date/time usage examples? Share them in the comments.


Wrap Up

The date time extension has so much to offer, if you’re on the bleeding edge, there are new classes and interfaces introduced since PHP 5.5. Be sure to checkout the manual. Thanks for reading.

23 Nov 10:41

Dans le métro, les hommes occupent plus d’espace que les femmes

by Olivier Razemon

Le voilà, le maître du monde. Les jambes nonchalamment écartées, les pieds calés de chaque côté du corps, le journal largement ouvert devant lui, la tablette à portée de main, installé comme s’il lisait paisiblement dans son salon. A côté, une femme, telle une petite souris, a replié les jambes, rangé ses affaires et posé son sac sur ses genoux. Et l’équipée s’en va ainsi, brinquebalante, soumise aux soubresauts de la rame, aux accélérations soudaines et aux freinages intempestifs.

Genre. Dans le métro, les hommes occupent plus d'espace que les femmes. Photos à l’appui, ce Tumblr (un outil comparable à un blog qui permet de poster des textes, photos ou vidéos en ligne) dénonce ce qui semble être une règle tacite entre usagers des transports. Femme, tu te ratatineras sur ton siège, car les transports sont bondés et l’espace contraint. Homme, tu feras à ta guise, car après tout c’est toi qui domines et qui gagnes le plus d’argent. Que les mouvements réactionnaires inquiets d'une hypothétique progression de la "théorie du genre" se rassurent : les comportements sexués ont de l’avenir devant eux.

Anatomie. Constatée dans le "subway" de New York, la domination masculine sur les bancs du métro est également avérée à Paris, voire dans les trains du quotidien, en France. Un article récent parle même de "guerre des territoires" entre les genres. Deux raisons au moins expliquent le phénomène qui, s’il n’a rien de scientifiquement prouvé, s’appuie tout de même sur des observations récurrentes. Tout d’abord, les hommes écartent les jambes pour rechercher un confort anatomique sur lequel il n’est pas nécessaire de s’étendre (en tous cas pas ici, maintenant). Cet article paru sur le blog féministe Jezebel ne peut être plus clair : "there's no way that your dick is so huge that it needs an entire bench to itself".

Ne pas passer pour un gay. Le phénomène, constate l’auteure de l’article, "transcende la classe sociale, la profession, l’âge, classe et la couleur de peau". Le même blog féministe explique d’une autre manière le V bien ouvert que décrivent les jambes viriles : "On ne peut attendre d’un type macho qu’il place les jambes l’une contre l’autre. Ne savez-vous pas que s’asseoir normalement vous fait passer pour un gay ?" Tant qu’à faire de la psychologie de tourniquet, on pourrait ajouter que les garçons ont moins été formés que leurs sœurs à ranger leur chambre. Il faut les voir, sur ces images, déballer toutes leurs petites affaires sur le siège d'à-côté : sacoche, appareil connecté, ordinateur, dossiers, sac de sport…

Foule connectée. Enfin, si les hommes prennent plus de place sur les sièges du métro, c’est peut-être qu’ils sont davantage connectés. Comme le constate Yo Kaminagai, designer à la RATP, dans cet article écrit à la rentrée 2012, "une foule connectée prend plus de place". Pour le designer, qui a observé les habitués du métro, "un passager qui téléphone ou rédige un message occupe une surface plus grande que celui qui reste assis ou debout sans bouger". L'usage du smartphone exige non seulement plus d'espace physique "mais aussi une sphère de confidentialité plus grande", poursuit-il. De fait, on a naturellement tendance à s'écarter d'un quidam qui parle dans son téléphone ou qui tapote son écran à l'aide de son pouce. Surtout si c’est un homme.

NB : un dessin qui fait le,même constat. A voir sur le blog "365 jours".

07 Nov 08:43

The Time Has Come For Smartwatches

by Chris McConnell

There was something odd in the latest issue of Wired magazine: eight full-page ads (totaling nearly 4% of the magazine) were taken out by traditional non-smartwatch companies like Rolex, Tudor, Seiko and Burberry.

It seems bizarre that a magazine dedicated to exploring emerging technologies would dedicate so much space to a technology that has been in existence since 1868 (Patek Philippe invented the first wristwatch in that year, according to Guinness World Records). A lot has changed since then.

In the last couple years, watches have been getting bigger brains and are becoming smarter by the day. I’ve spent a painstaking amount of time researching the most interesting smartwatch offerings available (or almost available, in one case) so you can see the best of what is available in one convenient place.

The features of these smartwatches vary vastly from simple notifications on an otherwise analog and old-school interface to full-blown smartphone extensions with touchscreen displays. In terms of pricing, be prepared to spend anywhere from $100-300. Perhaps you are looking for a device with incredible simplicity. Maybe you would prefer a device with an app ecosystem developers can dig into to provide extra functionality. Maybe you want some unique features that aren’t found anywhere else. Whatever you are looking for in a smartwatch, you’ll find it here (except for the long-anticipated Apple smartwatch… for that, you’ll have to wait and watch just like the rest of us).

Omate TrueSmart

Funded by over 4,000 backers on Kickstarter, The Omate TrueSmart is a touchscreen smartwatch with a few unique features. First, and foremost, it is a standalone gadget that can work with a smartphone, but doesn’t need to. That means you can have access to features like 3G, voice and gesture control independent from any tethered device. Additionally, the TrueSmart seems to be a bit more rugged than most of it’s competition due to it’s water-resistant finish and “scratch-proof” sapphire crystal display. For those consumers with an inner “James Bond” there is a 720p HD video cam onboard. Prices start at $249.

Qualcomm Toq

The Qualcomm Toq features a nicer, more artistic interface design than many of the screen-based smartwatches currently on the market. The Toq’s screen is easy to read, thanks to the Mirasol display technology that makes use of natural light to make the screen brighter. Interestingly, the Toq sports zero buttons. One great feature available right out of the box is wireless charging, a convenience I think many smartphone manufacturers will need to duplicate in the near future. On a side note, users who want to listen to wireless audio can choose to buy optional wireless headsets that look similar to Bluetooth headsets designed for phone calls. Not yet available.

Kreyos Meteor

The Kreyos Meteor syncs with your phone using voice command and gesture control. The gesture control functionality comes thanks to the built-in six-axis accelerometer and gyrometer which interprets input when you move your hand up and down or side to side. Featuring a very basic looking black and white display, the Meteor can make and answer calls, send and receive texts, receive notifications and track a user’s activity. Like the Omate TrueSmart, the Meteor is waterproof. If you want to show off your colorful personality, there are five band colors to choose from including black, white, pink, blue and green. If you are looking for a watch that can provide a bit of tactile feedback, you’ll appreciate the Meteor’s vibrating motor. Buy for $169.95.

HOT Smartwatch

The HOT (Hands On Talk) SmartWatch looks very similar to many other smartwatches seen here, and in many ways it is, but the HOT has one very unique feature you won’t find anywhere else: private calling. If you don’t want your conversation blasted via speakerphone to the world around you, the HOT watch lets you use your hand as a headset by cupping your palm/fingers and holding them near your ear. Additional features include a speakerphone (with caller ID), text and email, social updates (Twitter and Facebook), a built-in pedometer and some basic apps (weather, stocks, calendar, news, music control and a phone finder). If you’re looking for an incredible screen/display, this will probably disappoint. If you want basic info at a glance, this may be for you. Retail price: $169.

Metawatch

The Metawatch, which will be available in BestBuy stores starting November 3, aims to keep things very, very simple. It’s not a wearable computer and doesn’t function like a smartphone wrapped around your wrist. All it is designed to do it keep you up-to-date. The unique four-area interface lets you choose what information you want to see on the screen (for example: a clock, your next calendar event, a stock ticker and the weather). While you can’t answer calls or send texts or emails from the watch itself, you can see who is calling and read messages right on the device as well as wirelessly control your music. Currently the Metawatch comes in two band varieties: the metal “Frame” and the more rugged and plastic “Strata.” Prices range from $179 to $299.

Pebble

Pebble is sort of the granddaddy of all current smartwatches. True, before there was Pebble there was the Microsoft SPOT watches by Fossil, Suunto and Tissot that displayed info like news, weather, stocks, etc. These were about a decade too early to market and not enough people bought them to keep them around. The Pebble, on the other hand, has built up a respectable amount of demand since launching on Kickstarter and has gotten a lot of positive attention from the press as well. This is thanks to a basic, yet functional display, easy access to notifications, waterproofing, a decent selection of apps, great battery life (5-7 days) and, importantly, good daylight readability. You’ll like the price as well: $150.

Cookoo

The Cookoo is a different sort of smartwatch. It lets you know and do a lot, but it doesn’t have a touchscreen (or any screen, really). Instead, it makes use of icons to alert you to specific events: a new email, for instance. While the lack of a screen might seem a bit limiting, it actually doesn’t lose as much functionality as you might assume. Two great features that prove this point: you can check in to places and remotely trigger your smartphone camera right from the watch. When you are at home and you don’t have your phone in your pocket, Cookoo lets you know you have an incoming call or message. Another great feature? Cookoo can let you know if you have left a phone or iPad behind. Probably thanks to the lack of a touchscreen, the Cookoo is reasonably priced compared with other smartwatches at $129.

Martian

Martian watches share some similarities to the Cookoo watch in that there is no touchscreen and the design marries an analog, more traditional feel with some digital functionality. That said, the Martian lineup stands apart in a few distinct ways. First, there is a small OLED display located underneath the actual clock which can provide a bit more information than generic notifications (such as a name). Also present: voice commands (and text-to-speech) and the capability to have texts read to you. Over a Bluetooth connection, you are able to place hand-free calls. Like the Cookoo, Martian’s also allow you to trigger a camera app from a distance. You can become the proud owner of a Martian smartwatch for $299.

I’m Watch

The I’m Watch is yet another smartphone extension that “lets you leave your phone in your pocket” by allowing you to access calls, text and email messages and events on your wrist. The touchscreen can be controlled using gestures including taps, swipes and wrist-shaking. The I’m Watch aims to save battery life by activating itself only when you need it. Like a couple other watches listed here, the I’m Watch can issue a proximity alert if you get too far away from your phone. Built-in apps include Facebook, Twitter, weather, stocks, a compass and more. While the I’m Watch doesn’t have a camera of its own, it does allow you to view images that reside on your phone. You can own the I’m Watch, in a variety of colors, for $299.

Sony SmartWatch 2

This watch is only compatible with Android smartphones. Again, this is a pretty straightforward smartphone-extending device that lets notifications and music control live outside of your pocket. Again, the Sony SmartWatch 2 allows for taking calls over Bluetooth. Purportedly, the Sony device comes with “a wide range of apps available” via Google Play, though what specific apps are not mentioned on the official site. NFC connectivity means easy pairing and Sony claims that the screen is very readable in full sunlight and that the device is water resistant. Price: $199.

WIME NanoSmart

The NanoSmart is actually a small GSM phone that can be worn on your wrist as a watch. The NanoSmart’s interface appears to be designed to have a similar look to iOS (pre-7). You can view calendar events, see Gmail notifications, check your recent call history, access your contacts and view SMS messages. Aside from this, other functions include a built in FM radio tuner and … not much else. You can find the WIME NanoSmart for around $99 at various stores around the web.

Samsung Galaxy Gear

Samsung’s entry into the smartwatch market is the Gear, a touchscreen-touting, picture and video taking, S-Voice-boasting wrist gadget that works with (and only with) Samsung smartphones. The screen can run one app at a time, including a music manager, a calendar, the weather, etc. You can only have 10 apps on your Gear at a time. The camera features a near 2-megapixel capture (and can shoot 720p 10-second video clips). It is very definitely an extension of the smartphone experience and, in my opinion, doesn’t boast much in the way of unique features that really set it apart from other devices in this roundup. Debut price: $299.

Lead image courtesy Shutterstock.

29 Oct 07:36

La guerre des tests, épisode 2

by mageekguy

On me demande très souvent si atoum permet de tester les méthodes privées.

Et ma réponse est toujours négative, même si avec un peu d’astuce, l’utilisateur peut très bien faire en sorte de tester ces méthodes avec atoum.

Et à chaque fois que la question est posée, il y a souvent ensuite un débat plus ou moins important, aussi bien dans la communauté des utilisateurs que dans celle des contributeurs, à propos de la pertinence de cette fonctionnalité, à tel point que j’ai écris un billet intitulé la guerre des tests pour exposer mon point de vue sur le sujet.

Depuis, je suis passé à autre chose, mais il y a quelques jours, le sujet est revenu sur le tapis via twitter.

Les mêmes causes produisant les mêmes effets, malgré la qualité des intervenants, la discussion est rapidement devenue stérile, et le format imposé par twitter n’a certainement pas aidé.

Du coup, tout comme moi il y a trois ans, Antoine Vernois s’est fendu lui aussi d’un billet sur son blog pour expliquer son point de vue à ce sujet.

Et c’était vraiment une excellente idée, car si nous sommes d’accord sur le fond, je trouve le sien bien meilleur que le mien sur la forme !

29 Oct 07:32

Why saving daylight time is useless

by CommitStrip

28 Oct 07:27

Où en est l’industrie française du logiciel ?

by Olivier Ezratty
Le 15 octobre 2013, j’ai eu l’occasion d’intervenir lors de la remise des Trophées du Top 250 des éditeurs de logiciels français organisé par Syntec Numérique (à Paris, au siège de la CCIP). J’avais une dizaine de minutes pour décrire les forces et faiblesse de l’industrie française du logiciel, un sacré défi. Mais comme c’était […]
26 Oct 15:20

when I use a lib without reading documentation

by kbironneau

/* by domas */

21 Oct 22:46

NetBeans IDE 7.4 Officially Released & Available for Download

NetBeans IDE 7.4 extends the advanced HTML5 development support introduced in NetBeans IDE 7.3 to Java EE and PHP applications, while offering new support for mobile web development on the Android and iOS platforms, including support for the Cordova framework. Additional highlights include support for preview versions of JDK 8, and continued enhancements to JavaFX, PHP, C/C++, Maven and other features. NetBeans IDE is the Smarter and Faster way to code! Download NetBeans IDE 7.4 Release Highlights: HTML5 features available in Java EE and PHP projects Cordova application development Support for Android and iOS devices and emulators Preview support for JDK 8 features Initial editing support for Knockout, AngularJS, and ExtJS frameworks NetBeans IDE 7.4 is available in English, Brazilian Portuguese, Japanese, Russian, and Simplified Chinese. More Information Complete list of features in NetBeans IDE 7.4 Video: What's New in NetBeans IDE 7.4 New screencasts and tutorials Oracle Press Release
16 Oct 06:54

Science : des scientifiques fabriquent de l'essence à partir de la bactérie E. Coli

Si diverses méthodes plus ou moins fructueuses ont déjà été développées pour synthétiser de l’essence et de l’hydrocarbure en général, rien de concret n’est aujourd’hui proposé pour produire cette ressource dont nous dépendons malgré nous à des prix abordables et à grande échelle.

E_coli_at_10000x Pourtant, un scientifique Coréen aurait réussi à produire de l’essence avec le germe E coli et l’ingénierie métabolique. La bactérie en question compose une grande partie de notre flore intestinale et se veut inoffensive pour l’homme dans la majorité des cas. Elle est déjà utilisée dans diverses industries ( synthése des médicaments), mais jamais elle n’avait été envisagée pour la fabrication de carburant.

Les scientifiques ont réussi à fabriquer des dérivés d’acides gras depuis E Coli étant plus courts que la normale, permettant la biosynthèse d’alcanes à courte chaîne. Pour faire plus simple, E Coli a été utilisé pour produire de l’essence pour la première fois.

L’expérience a non seulement permis la fabrication d’essence, mais également la production d’esters gras et d’alcools avec l’ajout de différentes enzymes. Cela permettrait à la bactérie de produire également de l’huile végétale, des détergents ou même des bases de produits cosmétiques.

La conversion actuelle d’E coli en essence est encore trop récente pour être lancée à grande échelle, en outre, la concentration d’essence est encore trop faible pour que l’essence soit utilisable en l’état. Néanmoins les scientifiques vont désormais chercher à optimiser les rendements et envisager les couts de production ainsi que l’éventualité d’une production de masse.

16 Oct 06:52

Windows 8 : les utilisateurs ont deux ans pour passer à Windows 8.1

Cette semaine, Microsoft opère le lancement grand public du système d'exploitation Windows 8.1. Une mise à jour majeure pour Windows 8 qui sera disponible gratuitement pour les utilisateurs de cet OS via le Windows Store.

La disponibilité dans le Windows Store est programmée pour le 17 octobre à 13h en France. C'est toutefois le 18 octobre qui est la date retenue pour le lancement général de Windows 8.1.

Neowin en profite pour rappeler la politique de support de Microsoft et celle qui sera appliquée à Windows 8.1. Cet été, la firme de Redmond avait indiqué :

" Les clients Windows 8 disposeront de deux ans pour passer à Windows 8.1 après la mise à disposition générale de la mise à jour de Windows 8.1 pour continuer à bénéficier du support dans le cadre du cycle de vie de Windows 8. "

Cela signifie que si un utilisateur de Windows 8 n'effectue pas une mise à jour vers Windows 8.1, le support de Microsoft prendra fin le 18 octobre 2015.

Windows-8.1-start-screenLa firme de Redmond poursuivra le support de Windows 8.1 jusqu'au 10 janvier 2023. Plus précisément, la phase principale de support prendra fin le 9 janvier 2018 et la phase d'extension de support le 10 janvier 2023. Cette dernière comprend toujours les mises à jour de sécurité gratuites pour tous.

En somme, en termes de politique de support, c'est comme si Windows 8.1 était un Service Pack pour Windows 8.

Pour Windows 7 sans Service Pack, le support a pris fin le 9 avril pour 2013. Pour Windows 7 SP1, le support standard prendra fin le 13 janvier 2015. Le 14 janvier 2020, ce sera la fin du support étendu.

À titre indicatif, le support étendu pour Windows Vista SP2 se termine le 11 avril 2017. Pour Windows XP SP3, la fin est fixée au 8 avril 2014.

  

16 Oct 06:37

What’s the Difference Between a Web Designer and Web Developer?

Almost everywhere you look someone is talking about or calling themselves either a web designer or web developer. But what does it all really mean?

15 Oct 22:12

TIL that it exist much more console functions then console.log()

15 Oct 20:11

Sphinx 2.1.2 is now available

by adrian
We are happy to announce the release of the stable version of the Sphinx 2.1 series. The 2.1.2  release is not only a maintenance release, but also adds several features. In this post, we’re going to walk you through the highlights.  New features FLUSH RAMCHUNK command This command forces the RT memory chunk to be [...]
15 Oct 20:11

Fingerprints are Usernames, not Passwords

by Dustin Kirkland

As one of the maintainers of eCryptfs, and a long time Thinkpad owner, I have been asked many times to add support to eCryptfs for Thinkpad's fingerprint readers.

I actually captured this as a wishlist bug in Launchpad in August 2008, but upon thinking about it a bit more, I later closed the bug "won't fix" in February 2009, and discussed in a blog post, saying:
Hi, thanks so much for the bug report.I've been thinking about this quite a bit lately. I'm going to have to mark this "won't fix" for now. The prevailing opinion from security professionals is that fingerprints are perhaps a good replacement for usernames. However, they're really not a good replacement for passwords. Consider your laptop... How many fingerprints of yours are there on your laptop right now? As such, it's about as secret as your username. You don't leave your password on your spacebar, or on your beer bottle :-) This wikipedia entry (although it's about Microsoft Fingerprint Readers) is pretty accurate: * http://en.wikipedia.org/wiki/Microsoft_Fingerprint_ReaderSo, I'm sorry, but I don't think we'll be fixing this for now.
I'm bringing this up again to highlight the work released last week by The Chaos Computer Club, which has demonstrated how truly insecure Apple's TouchID is.


There may be civil liberties at issue as well.  While this piece is satire, and Apple says that it is not sharing your fingerprints with the government, we've been kept in the dark about such things before.  I'll leave you to draw your own conclusions on that one.

But let's just say you're okay with Apple sharing your fingerprints with the NSA, as I've already told you, they're not private at all.  You leave them on everything you touch.  And let's say you're insistent on using fingerprint (biometric) technology because you can.  In that case, your fingerprints might identify you, much as a your email address or username identifies you, perhaps from a list.

I could see some value, perhaps, in a tablet that I share with my wife, where each of us have our own accounts, with independent configurations, apps, and settings.  We could each conveniently identify ourselves by our fingerprint.  But biometrics cannot, and absolutely must not, be used to authenticate an identity.  For authentication, you need a password or passphrase.  Something that can be independently chosen, changed, and rotated.  I will continue to advocate this within the Ubuntu development community, as I have since 2009.

Once your fingerprint is compromised (and, yes, it almost certainly already is, if you've crossed an international border or registered for a driver's license in some US states and countries), how do you change it?  Are you starting to see why this is a really bad idea?

There are plenty of inventions that exist, but turned out to be bad ideas.  And I think fingerprint readers are another one of those.

This isn't a knock on Apple, as Thinkpad have embedded fingerprint readers for nearly a decade.  My intention is to help stop and think about the place of biometrics in security.  Biometrics can be use used as a lightweight, convenient mechanism to establish identity, but they cannot authenticate a person or a thing alone.

So please, if you have any  respect for the privacy your data, or your contacts' information, please don't use fingerprints (or biometrics, in general) for authentication.

kthxbye,
:-Dustin
15 Oct 20:06

The History of Firebug

When Joe Hewitt was seven years old his father wanted to become a computer programmer so he bought an IBM PCjr. Joe would often watch his father typing in programs from PC Magazine. He started learning himself and when he got older he just sort of took off on his own.

The first programming project that he remembers working on was when he was in fifth grade (ten – eleven years old). He made an animated ASCII art of a rocket ship blasting off. He also wrote a game show in "Cartridge Basic" (an enhanced version of BASIC for the IBM PCjr).

As far as education goes, he started as a computer science major before deciding that he didn't like the formal computer science stuff and switched to graphic design. He then realized that he was not an artist and moved back to computer science. Whilst he was still at college he received a ton of job offers in the field, dropped out of college and has been professional ever since.

Around 1999 he was working as a web developer and began to gain an interest in Mozilla. He followed the project mostly from the standpoint of a web developer wanting to see what this new browser was going to turn into. Eventually he learned about XUL, became fascinated with it and started looking for ways to get involved.

Luckily, before he even really started contributing, a job opened up with Netscape and he was hired to work on the Netscape user interface (CSS, JavaScript and XUL).

After a few years at Netscape Joe, Dave Hyatt, Chanial and Blake Ross started working on a streamlined version of the Mozilla browser that was called Phoenix, Firebird and eventually Firefox.

Because of the structure of Mozilla the developers were free to work on the things that were of interest to them. During his time there he created the DOM Inspector and worked for a few years on the browser side of things.

After his time with Mozilla he started work as a web developer again and soon found that the state of the art tools that he had used as a web developer in the late 90s had not changed. The standard way to debug a web application was using alert dialogs but this was very inefficient and limiting. Joe thought that maybe allowing people to log information to a simple panel could be useful. This is when the birth of modern web developer tools truly began.

Joe says that features that you see in Firebug today were inspired by the Venkman JavaScript Debugger, View Rendered Source Chart, Console2, Aardvark, and MochiKit JavaScript Interpreter. Let's take a look at these tools and see how the functionality were absorbed into Firebug.

Venkman JavaScript Debugger

A lot of developers are surprised to hear that Firebug is not the first JavaScript debugger for Firefox. Venkman JavaScript Debugger was, until mid 2011, commonly used to debug JavaScript in web pages and extensions.

Venkman Debugger
Venkman JavaScript Debugger in Action

Venkman contained a very powerful feature set that made for an excellent debugger. These included:

  • Stop
  • Continue
  • Step over
  • Step into
  • Step out
  • JavaScript profiler
  • Save profile data
  • Pretty print
  • Save and restore breakpoints and watches
  • Break on errors
  • Ignore errors
  • Break on exceptions
  • Ignore exceptions
  • Function name guessing
  • Locals
  • Watches
  • Breakpoints
  • Call stack

As this is just a quick tour of the extensions that have inspired Web Developer Tools we will not go into any more detail about Venkman here. If you would like to learn more about it then take a look at the Venkman page on MDC.

Venkman was the inspiration for the JavaScript Debugger used in Firebug.

View Source Chart

This extension shows the browsers interpretation of a web page. It shows the source in a hierarchical view, grouping elements at the same level and graphically displaying HTML tag boundaries.

View Source Chart
View Source Chart

This was the inspiration for Firebug's HTML panel … the comparison is clear when both tools are compared, especially in early Firebug versions. The formatting is fairly similar except that Firebug has a number of improvements such as expandable and collapsible HTML nodes, improved indentation and live editing. In its time, view rendered source was a very useful way to view the structure of an HTML page and is still preferred by some developers.

Firebug HTML Tree
Firebug HTML Tree

Console2

Console2
Console2

Console², pronounced Console Squared or Console Two, replaced the JavaScript Console with what was a revolutionary Error Console.

This extension made it much simpler to find the cause of JavaScript errors by showing the line number and, eventually, allowing you to link to this line in the source. This method is all that is required to find syntax errors but is not so useful when it comes to finding logic errors. Still, this extension saved developers many, many hours when debugging JavaScript.

This extension was the inspiration for the error reporting in Firebug's Console Panel.

Aardvark

Aardvark was another excellent extension and also the inspiration for Firebug's Inspector. By moving the mouse over elements on the screen you could view simple DOM properties like tag name, class and id.

Aardvark
Aardvark

Sometimes the simplest ideas are the best and the concept of the inspector (highlighter) quickly became one of the core features of Firebug as it made it possible for people to select HTML elements as targets for each of Firebug's panels.

MochiKit JavaScript Interpreter

MochiKit is a lightweight JavaScript library written and maintained by Bob Ippolito. It is Inspired by the Python networking framework and Twisted. It uses the concept of deferred execution to allow asynchronous behavior. This has made it very useful in the development of AJAX applications.

Of particular note is its ability to load and manipulate JSON-encoded data sets, and MochiKit.DOM, a set of functions to easily create dynamic page components.

MochiKit forms the foundation of the client-side functionality of the TurboGears Python web-application stack. Perhaps as a result of the author's involvement in the Python community, MochiKit exhibits many idioms familiar to Python programmers, and is commonly used in Python-based web applications.

The JavaScript Interpreter allows you to run JavaScript commands a line at a time and view the results in a div. Using this command line it is possible to quickly view the values of DOM properties, change the value of variables or call a pages functions. This was Joe Hewitt's inspiration for Firebug's JavaScript Interpreter (part of the JavaScript Console).

MochiKit JavaScript Interpreter
MochiKit JavaScript Interpreter

Firebug Through the Ages

Although all of the applications we have discussed so far in this chapter were inspiration for some of Firebug's features, this does not mean that they were simply merged together and Firebug was complete. Firebug, like most applications was very simple and has gradually evolved into the fantastic tool that it is now.

Version 0.2

The first publicly available release of Firebug was version 0.2. Although this was the first released version of Firebug it contained some very useful features even though there was only a single panel. In this version of Firebug there is only one panel, which is roughly equivalent to the console panel. AJAX logging was present even in this version.

The printfire function was the standard way to output messages. Inspected elements were logged to the panel with four tabs on the right hand side. Clicking these tabs expanded the panel's representation of the element, which consisted of:

  • The XML tab shows the element in HTML view
  • The CSS tab shows the elements CSS styles
  • The Box tab shows the selected elements classic box model property values
  • The JS tab shows the JavaScript properties of the selected element

Whenever there were JavaScript errors the status bar indicator would display the number of errors. Clicking on this status bar indicator would open Firebug.

Firebug 0.2 status bar indicator
Firebug 0.2 Status Bar Indicator

Version 0.3

Version 0.3 introduced major changes to the way that Firebug worked, particularly the way that the inspector worked. Firebug now had two main tabs, a console tab to display messages and an inspector tab that allowed you to view the element. There was also a new search box that allowed you to search for tabs in the HTML Tree. The Inspector tab had five other tabs:.

  • Source: The HTML tree. This panel has been largely unchanged from this version onwards.
  • Style: A few computed styles.
  • Layout: Basic layout information.
  • Events: Any events raised triggered on the currently selected element.
  • DOM: JavaScript object view of the currently selected node.

Version 0.4

Version 0.4 was the first version to feature the Debugger tab (figure 2.7.7.1).

  • Stack traces were now displayed along with error messages.
  • console.log('message'), console.warn('message'), console.info('message') etc. replaced printfire and were made available to all web pages.
  • In the DOM tab arrays were now expandable and functions could be expanded to show their source.

Obviously, the inclusion of the JavaScript debugger was a major step forwards in Firebug's evolutionary trail. The whole idea of debugging JavaScript in the browser itself was something we had been waiting a long time for. Great job Joe!

Version 1.0

After version 0.4.1 Joe realized that people were depending on Firebug for their jobs and decided to have one person work on it full time. Version 1.0 represented a complete redesign of the Firebug user interface from the ground up. A bunch of new features were also released with this version, Joe lists them as:

  • CSS editing
  • Network load timing
  • Box model visualization
  • JavaScript profiling
  • Command line autocomplete
  • HTML change highlighting
  • Debugger watchlists
  • DOM editing
  • Separate window support
  • Per-site blacklists

At this point Joe was spending a lot of time on Firebug and was considering making it a paid product ($15 - $25) so that he could employ a couple of full-time engineers. Needless to say, this was a final option and never happened.

Although there has been lots of work done on Firebug since version 1.0 most of it has been bugfixes and minor features. Some major changes have crept in though, including:

  • Console tab: Break on all errors.
  • HTML tab: Break on HTML mutation.
  • DOM tab: Break on property change.
  • Net tab: Break on XHR.
  • Persist button on all tabs.
  • Switch color types.
  • Restartless install
  • Tabs on the top
  • Navigation history
  • Break on next
  • Cookie tab
  • Command line popup
  • Command line history
  • New side panels (e.g. selectors)
  • List of tabs in the toolbar
  • Tab options
Joe Hewitt talks about these things in his blog post Firebug: A Love Story.
15 Oct 20:04

Hébergeur: quelle est la responsabilité de l’hébergeur dans la diffusion de contenus illicites ?

by com@smile.fr (Alain Arditi)
Au regard de la loi française N°2004-575 du 21 juin 2004, un hébergeur (Smile Hosting) est une personne physique ou morale qui a pour vocation de mettre à la disposition des Internautes des sites Internet conçus et gérés par des tiers.
10 Oct 07:08

Ce mois-ci sur internals@php - Septembre 2013

by Pascal MARTIN

Après août, second mois des vacances d’été, raisonablement calme avec 451 mails, voici mon dépilage d’internals@ pour le mois de septembre 2013, qui a vu plusieurs discussions animées, et a re-passé pour la première fois en six mois la barre des 500 mails, arrivant à un total de 625 mails.

Sous forme d’un graphique représentant le nombre de mails par mois sur les trois dernières années, on obtient (l’historique depuis 1998 est disponible ici) :

Nombres de mails sur internals@ ces trois dernières années


Johannes Schlüter a rédigé un mail où il a listé les différentes évolutions et versions que PHP a connu depuis PHP 5.2 en 2006 : cela commence à en faire une bonne petite liste, qui font de PHP un langage qui évolue vite depuis quelques années — surtout si on compare son évolution à celles de C, C++, ou JAVA.

Ces évolutions sont une très bonne chose pour la plupart d’entre nous, mais deux problèmes se posent, en termes de maintenance :

  • D’une part, les nouvelles versions de PHP ne sont adoptées que lentement,
  • Et là où pas mal d’attention est concentrée sur les évolutions, en face, les bugs s’empilent (aujourd’hui, il y a environ 4000 tickets ouverts).

En conséquence, il serait probablement profitable de ralentir un peu le rythme des évolutions pendant quelques mois, pour consacrer un peu plus d’énergie à la maintenance de l’existant — maintenance nécessaire pour assurer la viabilité de notre langage de prédilection !


Stas Malyshev a annoncé avoir mis à jour la RFC: Skipping optional parameters for functions, qui permettrait d’invoquer une fonction sans avoir à spécifier de valeur pour ses paramètres optionnels non situés en fin de liste d’arguments :

// Déclaration de fonction 
function create_query($where, $order_by, $join_type='INNER', 
    $execute = false, $report_errors = true) {
    // ...
}

// Appel sans passer les 3ème et 4ème paramètres,
// qui prendraient leur valeur par défaut, spécifiée
// lors de la déclaration de la fonction
create_query("deleted=0", "name", default, default, /*report_errors*/ true);

Une proposition serait de ne pas du tout spécifier de valeur, plutôt que de réutiliser le mot-clef default, mais cela pourrait nuire à la lisibilité.

Bien sûr, comme l’a fait remarquer Florin Patan (qui n’est pas le seul de cet avis), implémenter une fonctionnalité de paramètres nommés résoudrait aussi ce problème ;-)

Au bout de quelques jours, la discussion s’est essouflée, et n’a pas avancée depuis plus de trois semaines.


Dans la foulée, Nikita Popov a annoncé avoir commencé à travailler sur la RFC: Named Parameters.

Cette idée de paramètres nommés est assez fréquemment évoquée depuis pas mal de temps (c’est une syntaxe qui existe notamment en Python, si j’ai bonne mémoire), et les premiers retours ont clairement indiqués que l’idée semblait intéressante pour beaucoup d’entre nous.

Au niveau des réserves, certains ont noté que cela signifie que les noms de paramètres ne devraient plus être modifiés une fois une bibliothèque publiée, et qu’il ne faudrait pas que cela encourage les développeurs à mettre en place des fonctions prenant trop d’arguments.

Bien sûr, il faudrait s’assurer que cette nouvelle possibilité syntaxique n’a pas d’impact négatif au niveau des performances (à première vue, ça semble correct),

Les discussions ne sont pas terminées, la syntaxe elle-même n’étant pas encore définie, de même que les erreurs pouvant être levées ou même le périmètre fonctionnel précis souhaité — plusieurs éléments de réponse ont été apportés par Nikita Popov dans ce mail. En tout cas, je suis curieux de voir l’évolution de cette propositions sur les prochains semaines !


Joe Watkins a annoncé avoir rédigé la RFC: Anonymous Classes, qui introduit le même type de fonctionnalité que les fonctions anonymes arrivées en PHP 5.3, mais pour des classes.

En copiant-collant un exemple d’idée postée par Michael Wallner, la syntaxe pourrait ressembler à quelque chose de ce type :

$subject->attach(new class implements SplObserver {
    function update(SplSubject $s) {
        printf("Got update from: %s\n" $subject);
    }
);

Bien sûr, cette proposition a levé la question de l’utilité d’une telle possibilité, et des cas d’utilisation correspondant (cette possibilitée est fréquemment utilisée en JAVA, par exemple, où des objet anonymes implémentant une interface peuvent être utilisés comme callbacks). S’est aussi posée la question de la sérialisation/désérialisation d’un objet instance d’une classe non-nommée.

La RFC a été enrichie suite aux discussions, et des ajouts complémentaires comme l’imbrication de classes sont déjà évoqués (mais probablement sous forme d’autres RFC). Je suis curieux de voir l’évolution de ce sujet sur les prochains mois.

D’ailleurs, alors que le mois touchait à sa fin, Joe Watkins a annoncé avoir rédigé un premier brouillon pour la RFC: Nested Classes. Faute de temps, celle-ci n’a pas encore été réellement discutée ; mais là encore, nous verrons dans les prochaines semaines les réactions que le sujet ne va pas manquer de lever !


La RFC: Syntax for variadic functions dont je parlais le mois dernier a été soumise aux votes. Avec 36 votes pour et 1 vote contre, elle est passée !

PHP 5.6 devrait donc supporter la syntaxe suivante (exemple repris de la RFC) :

class MySQL implements DB {
    public function query($query, ...$params) {
        $stmt = $this->pdo->prepare($query);
        $stmt->execute($params);
        return $stmt;
    }
    // ...
}

Ici, la syntaxe ...$params indique que query() est une fonction variadique, et que tous les arguments suivant $query doivent être placés dans le tableau $params.


Bob Weinand a annoncé avoir développé un patch qui permettrait d’utiliser des mot-clefs comme identifiants1(noms de fonctions / classes, étiquettes, …) ; cela réduirait l’impact de la liste de mot-clefs réservés.

Les retours ont été plutôt positifs dans l’ensemble, nombreux développeurs souhaitant parfois utiliser une partie de ces mots-clefs (comme list, par exemple) ; et les tests effectués n’ont pas mis en évidence d’impact significatif sur les performances. Cela dit, comme l’a souligné Johannes Schlüter, PHP se retrouverait alors avec deux listes de mots-clefs, certains pouvant être utilisés à certains endroits et pas d’autres — ce qui risque de complexifier les choses pour les utilisateurs, par rapport à une unique liste de mots-clefs ne pouvant être employés nulle part.

La modification n’étant pas réellement mineure, et la discussion identifiant plusieurs points sur lesquels plus de réflexion semblait nécessaire, Pierre Joye a finalement proposé qu’une RFC soit rédigée à ce sujet — et donc, Bob Weinand a rédigé la RFC: Extended keyword support.


Gordon Oheim a rédigé la RFC: Automatic Property Initialization, où il proposait qu’une écriture du type suivante :

class Point 
{
    private $x, $y;

    public function __construct($x, $y)
    {
        $this->x = $x;
        $this->y = $y;
    }
}

Puisse être remplacée par une syntaxe alternative, plus courte :

class Point
{
    private $x, $y;

    public function __construct($this->x, $this->y);
}  

Il n’y a pour l’instant eu que peu de retours sur cette proposition, qui a semblé être appréciée, même si la syntaxe peut sembler surprenante — et qu’une autre solution serait d’implémenter la fonctionnalité d’accesseurs qui avait été discutée il y a quelques mois.


Plus ou moins suite au départ d’Anthony Ferrara au tout début du mois, Florin Patan a posté un mail intitulé “Wake up”, où il soulignait le fait que le développement de PHP n’est pas aussi ouvert d’esprit qu’il le pourrait.

Une des premières suggestions qui est remontée évoquait l’idée de passer de la mailing-list internals@ à un forum, qui, possiblement, faciliterait les échanges. Sans surprise, cette idée n’a initialement pas été fort bien accueillie par tout le monde (avec un logiciel de messagerie correct, une mailing-list est utilisable ; à condition que ses membres suivent l’étiquette qui va bien). D’un autre côté, un forum pourrait permettre, par un système de votes, de mettre en évidence les discussions intéressantes, tout en poussant vers le bas les échanges moins constructifs et en permettant d’ignorer plus facilement les posts hors-sujet.

Cela dit, Terence Copestake a peut-être cerné une partie du problème, lorsqu’il a souligné qu’il y avait un conflit entre ceux qui voulaient que PHP reste un langage simple et accessible, et ceux qui voulaient en faire un outil/environnement professionnel complet — les deux visions s’opposant, sans personne pour réellement trancher.

Peut-être faudrait-il aussi que, comme le disait Jordi Boggiano, chacun respire un grand coup avant de répondre à un point qui les a énervé…

En rebondissant sur ce qui s’était dit sur le sujet précédent, Andrea Faulds a lancé un autre sujet de discussion, à propos de cette idée de forum ; une solution mélant hiérarchie et système de votes pourrait d’après lui compléter internals@. Pour éviter de couper les conversations entre ceux utilisant un système et ceux restant sur l’autre, il faudrait une synchronisation entre les deux mécanismes, ou même que la solution de forum agisse comme une surcouche à internals@.


C’était en toute fin de mois dernier, donc je n’en n’ai pas parlé à ce moment là : Johannes Schlüter a fait remarquer que, en l’état, windows.php.net n’était pas des plus utiles (pas à jour, downloads ne passant pas par les mirroirs, …). Après avoir répondu à pas mal des questions posées, Pierre Joye a aussi annoncé que du travail était en cours sur la construction automatique pour Windows des extensions PECL. Un peu dans la même veine, PHP 5.2, qui a atteint son EOL il y a plusieurs années, a été retirée de la page de téléchargements de windows.php.net.

Nikita Popov a annoncé avoir terminé la rédaction de la RFC: Argument Unpacking, reprenant une idée qui existe, par exemple, en Python, Ruby, ou Javascript — et faisant assez logiquement le lien avec la RFC: Syntax for variadic functions, passée un peu plus tôt. Cette RFC est arrivée en fin de mois, et n’a vu que peu de discussions (ce qui est souvent bon signe) ; à suivre dans les prochaines semaines, donc.

Comme sur les mois précédents, Lior Kaplan a continué à poster régulièrement des mails résumant l’activité autour des Pull Requests faites sur PHP.

Suite aux discussions du mois dernier à propos de l’implémentation d’un nouveau serializer, Jakub Zelenka a mis à jour la RFC: Internal Serialize API.

La RFC: Change crypt() behavior w/o salt a été ouverte aux votes. La période de votes n’est pas terminée, mais il semblerait que les choses s’orientent vers la levée d’une notice dans le cas d’un appel à crypt() en omettant le paramètre $salt.



internals@lists.php.net est la mailing-list des développeurs de PHP ; elle est utilisée pour discuter des prochaines évolutions du langage, ainsi que pour échanger autour de suggestions d’améliorations ou de rapports de bugs.
Elle est publique, et tout le monde peut s’y inscrire depuis la page Mailing Lists, ou consulter ses archives en HTTP depuis php.internals ou depuis le serveur de news news://news.php.net/php.internals.



  1. Il semblerait que l’idée avait déjà été évoquée par Ralph Schindler en 2006. 

09 Oct 23:11

Google’s Plan for Autonomous Cars Doesn’t Go Far Enough

by Terry Bennett
Google’s Plan for Autonomous Cars Doesn’t Go Far Enough
There’s a danger to the one-dimensional discussions around autonomous cars: We can't rely on the technology inside the car alone. We need to think about what’s outside, too -- a smart, interconnect infrastructure for our roadways. Especially because the smartest ...
09 Oct 18:24

3D secure : sa suppression a fait gagner 40% de CA (Nicolas Hoizey)

by Nicolas Hoizey
08 Oct 17:49

Noms de personnes à travers le monde (Nicolas Hoizey)

by Nicolas Hoizey
08 Oct 07:06

Il y a 75 ans, le Nobel de physique récompensait… une incroyable erreur

by Pierre Barthélémy

Lundi 7 octobre s'ouvre la grande parade annuelle des prix Nobel, avec la catégorie "physiologie ou médecine". Suivront la physique (le 8 octobre), la chimie (le 9), la littérature (le 10), la paix (le 11) et les sciences économiques (le 14). 2013 est l'occasion d'un curieux anniversaire puisqu'on fête cette année les 75 ans de ce qu'on peut appeler le prix Nobel de l'erreur et ce dans le domaine qui est censé être le plus précis de tous ceux que cette récompense recouvre, à savoir la physique.

En 1938, c'est l'immense chercheur italien Enrico Fermi qui reçoit la distinction suprême pour, je cite, "sa découverte de nouveaux éléments radioactifs, développés par l’irradiation des neutrons, et sa découverte à ce propos des réactions de noyaux, effectuées au moyen des neutrons lents". Le communiqué explicite cette découverte ainsi : “Fermi a en effet réussi à produire deux nouveaux éléments, dont les numéros d’ordre sont 93 et 94, éléments auxquels il a donné le nom d’ausénium et d’hespérium.” Seulement voilà, d'ausénium et d'hespérium il n'y avait en réalité point dans l'expérience du savant transalpin. Fermi s'était trompé dans son interprétation et il avait néanmoins eu le prix Nobel pour la découverte de deux éléments imaginaires...

Pour comprendre cette erreur, il faut replonger dans les années 1930, ère des pionniers du noyau atomique. L'histoire illustre à merveille la manière dont la science se trompe, se corrige et, ce faisant, s'améliore. Que fait Enrico Fermi dans l'expérience qui lui vaut ce Nobel, relatée en 1934 dans Nature ? A l'époque, on ne connaît pas d'élément chimique dont le noyau contienne davantage de protons que l'uranium (92) et le chercheur italien se demande s'il est possible de synthétiser des éléments plus lourds. Son idée est de profiter de la radioactivité bêta qu'il vient de modéliser et grâce à laquelle un neutron peut se transformer en proton (ou le contraire). Pour son expérience, Fermi part de l'idée qu'en bombardant de neutrons des noyaux d'uranium, ceux-ci vont finir par absorber un neutron qui, sous l'effet la radioactivité bêta, se transformera en proton. Le noyau aura finalement gagné un proton, ce qui aura "transmuté" l'uranium à 92 protons en élément nouveau à 93 protons (que Fermi appellera ausénium). Après une nouvelle étape, celui-ci se métamorphosera en élément à 94 protons (nommé hespérium). La difficulté de l'expérience consiste à détecter la présence de ces nouveaux éléments. Fermi ne les identifie pas chimiquement : il se contente de constater que l'expérience produit deux "choses" radioactives dont les caractéristiques sont inconnues. Pour lui, c'est la preuve, certes indirecte, mais la preuve quand même, qu'il a synthétisé deux nouveaux éléments.

Comme l'explique Martin Quack, chercheur à l'Ecole polytechnique fédérale de Zurich, dans l'article qu'il a récemment consacré à cette histoire (publié par Angewandte Chemie International Edition), Enrico Fermi est au départ plutôt prudent dans sa formulation. Mais les années passant et rien ne venant contredire cette interprétation, cette prudence s'estompe et l'on considère le résultat comme acquis, d'autant que la stature scientifique de l'Italien est immense. La chimiste allemande Ida Noddack tente bien d'avancer que le niveau de preuve n'est pas suffisant, mais personne ne tient vraiment compte de ses objections. Un magnifique cas d'école de l'aveuglement des experts.

Tout se précipite à la fin 1938, comme dans un thriller scientifique où le temps se condense et s'accélère. Le 12 décembre, Enrico Fermi reçoit à Stockholm son prix Nobel des mains du roi de Suède. Il en profite pour fuir aux Etats-Unis, la situation de son épouse, qui est juive, étant de plus en plus précaire dans l'Italie mussolinienne. Une semaine plus tard, le 19, le chimiste allemand Otto Hahn, qui a, avec Fritz Strassmann, reproduit l'expérience de Fermi, envoie ses résultats à sa consœur Lise Meitner : les produits de l'expérience ne sont pas des éléments superlourds. Au contraire, cela ressemble à des isotopes inconnus d'éléments plus légers, notamment du baryum (56 protons). Mais comment diable de l'uranium peut-il donner du baryum ? Pendant les vacances de Noël, Lise Meitner discute avec son neveu, Otto Frisch de la possibilité théorique qu'un noyau d'uranium se brise pour donner des noyaux plus légers. Ils écrivent un article en ce sens qui sera publié en février 1939. Ce qu'avait réalisé Enrico Fermi sans le comprendre, c'était la première expérience de fission nucléaire !

Le coupable était dans l'uranium. Le minerai naturel d'uranium contient deux isotopes de cet élément. Le premier, l'uranium 238 (92 protons + 146 neutrons) est de très loin le plus courant puisqu'il représente plus de 99 % du minerai. Le second, l'uranium 235 (92 protons + 143 neutrons) est beaucoup plus rare (0,7 %) au point qu'on peut le considérer comme une impureté. C'est lui qui est fissile et que l'on emploie dans de nombreux réacteurs nucléaires. Et c'est aussi lui qui se trouvait dans la bombe atomique d'Hiroshima. Dans l'expérience de Fermi, le bombardement de neutrons n'a, contrairement à ce qu'espérait le savant italien, rien fait aux atomes d'uranium 238. En revanche, il a provoqué la fission des noyaux d'uranium 235. Les produits nouveaux qu'a détectés l'Italien étaient des produits de fission, des éléments plus légers, inconnus sous cette forme radioactive, comme le baryum 140.

Enrico Fermi méritait sans doute un Nobel et il est dommage qu'il l'ait reçu pour une expérience mal interprétée et pas assez approfondie. Dès qu'il apprit la découverte de Hahn et Strassmann, début 1939, il modifia son discours de réception du prix pour intégrer ce nouveau résultat, preuve d'une grande honnêteté intellectuelle. Les deux chercheurs allemands reçurent le Nobel de chimie 1944 pour la fission nucléaire (Lise Meitner étant scandaleusement oubliée dans l'histoire) et, d'une certaine manière, pour avoir corrigé l'erreur de Fermi. Ce dernier réalisa, en collaboration avec Leo Szilard, la première pile atomique en 1942, c'est-à-dire la première réaction nucléaire en chaîne contrôlée de l'histoire. Et, bien sûr, Fermi travailla pour le projet Manhattan qui mena à la bombe atomique. Quant aux éléments 93 et 94, le neptunium et le plutonium, ils furent bel et bien produits selon le processus qu'avait prévu Fermi. En 1951, on donna donc de nouveau un prix Nobel (de chimie) à ceux qui les avaient mis en évidence, mais cette fois-ci pour de vrai : Glenn Seaborg et Edwin McMillan.

Trois-quarts de siècle après le Nobel de l'erreur, l'histoire vient rappeler que la science a deux versants inséparables, le côté créatif et le côté critique. Comme le souligne Martin Quack dans son article, "la composante créative s'engage dans de nouvelles idées et dans des avenues inexplorées (...). Elle se vend bien grâce au terme chic de "nouveau". Cependant, la composante critique est tout aussi importante que la composante créative. Elle interroge le résultat "nouveau", soumettant ses faiblesses à une critique sévère, répétant et testant les résultats dans de longues enquêtes impliquant un dur labeur. Souvent elle rejette ou corrige le résultat original et mène parfois à une découverte encore plus frappante." Vérifier les résultats des autres a des airs austères et tristes de police scientifique mais conduit parfois à la révolution.

Pierre Barthélémy (suivez-moi ici sur Twitter ou bien là sur Facebook)

08 Oct 07:05

First things first

by CommitStrip

05 Oct 07:53

Kinetic Sand is the Toy That Would Have Blown Your GAK Out of the Water

Submitted by: Unknown

02 Oct 21:27

MySQL 5.7 multi-source replication

by Miguel Angel Nieto

Recently Oracle announced several new features for the latest available development version of MySQL that is 5.7.2 at the time of writing this article. Most of them are performance and replication related that show us how incredible the new release will be.

In this post I’m going to try to explain in some easy steps how the new multi-source replication works and how we can configure it for our own tests. It is important to mention that this is a development release, so it is not production ready. Therefore this post is intend to people that want to test the new feature and see how it works with their application, always in a staging environment.

What is multi-source replication?

First, we need to have clear that multi-master and multi-source replication are not the same. Multi-Master replication is the usual circular replication where you can write on any server and data gets replicated to all others.

Multi master replicationMulti-source is different. MySQL replication had a limitation, fixed with this new release, that said that one slave could have only one master. That is a limiting factor when we are designing our replication environment. There were some “hacks” to make it work, but now there is an official way. So, in a nutshell, Multi-Source means that a slave can have more than one master. Now, replication environments like these one are possible:

Multi source replicationThis will help us create some replication hierarchies that were impossible in the past. For example, you can have a slave in your office replicating the data from all servers that you have in the offices spread around the world.

How does it work?

Now we have the concept of communication channels. Each communication channel is a connection from slave to master to get the binary log events. That means we will have one IO_THREAD for each communication channel. We will need to run different “CHANGE MASTER” commands, one for each master, with the “FOR CHANNEL” argument that we will use to give a name to that channel.

CHANGE MASTER MASTER_HOST='something', MASTER_USER=... FOR CHANNEL="name_of_channel";

Pretty easy. There is one single pre-requisite. The slave should have been configured first with the crash-safe feature of MySQL 5.6. That means that info usually included in master.info or relay-log.info should be on a table. Let’s start with the configuration.

Show me an example!

First you need to download the lab version of mysql from this link.

We have a sandbox environment with 2 masters and 1 slave servers. I won’t go over the details of how to configure the server_id, binary logs or replication users. I assume they are well configured. If you need a howto, you can follow this one.

First, we have to enable the crash safe feature on the slave:

master_info_repository=TABLE;
relay_log_info_repository=TABLE;

After a restart of the slave we can start creating the channels with the names “master1″ and “master2″:

slave > change master to master_host="127.0.0.1", master_port=12047, master_user="msandbox",master_password="msandbox" for channel="master1";
slave > change master to master_host="127.0.0.1", master_port=12048, master_user="msandbox",master_password="msandbox" for channel="master2";

To start the slave processes you need to specify what channel are you referring to:

slave > start slave for channel="master1";
slave > start slave for channel="master2";

Now, we want to check the status of the slave:

slave > show slave status\G
Empty set (0.00 sec)

Oh, it is empty. We have to specify again which channel we want to check:

slave > SHOW SLAVE STATUS FOR CHANNEL="master1"\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 127.0.0.1
                  Master_User: msandbox
                  Master_Port: 12047
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 232
               Relay_Log_File: squeeze-relay-bin-master1.000003
                Relay_Log_Pos: 395
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
[...]

and we can also check that the IO_THREAD and SQL_THREADS are running:

slave > SHOW PROCESSLIST;
+----+-------------+-----------------------------------------------------------------------------+
| Id | User        | State                                                                       |
+----+-------------+-----------------------------------------------------------------------------+
|  2 | system user | Waiting for master to send event                                            |
|  3 | system user | Slave has read all relay log; waiting for the slave I/O thread to update it |
|  4 | system user | Waiting for master to send event                                            |
|  5 | system user | Slave has read all relay log; waiting for the slave I/O thread to update it |
+----+-------------+-----------------------------------------------------------------------------+

Let’s test it:

master1 > create database master1;
master2 > create database master2;
slave > show databases like 'master%';
+--------------------+
| Database (master%) |
+--------------------+
| master1            |
| master2            |
+--------------------+

It works, that easy!

Conclusion

The new multi-source feature allow us to create new replication environments that were impossible in the past without some complex “hacks”. Of course, your application should be designed and developed with this new architecture in mind. Like with multi-master, multi-source needs special care to not end up with your data messed up.

MySQL replication is getting better on every release giving us more configuration, performance and design possibilities. And all those new features can be combined. Your replication environment can be even better if you mix some of the new (and old) features added recently to the replication. For example, you can configure GTID or enable multi-threaded slave per schema or intra-database.

The post MySQL 5.7 multi-source replication appeared first on MySQL Performance Blog.

02 Oct 20:32

More On Gmail’s Delivery Delays

by The Gmail Team
Posted by Sabrina Farmer, Senior Site Reliability Engineering Manager for Gmail

On September 23rd, many Gmail users received an unwelcome surprise: some of their messages were arriving slowly, and some of their attachments were unavailable. We’d like to start by apologizing—we realize that our users rely on Gmail to be always available and always fast, and for several hours we didn’t deliver. We have analyzed what happened, and we’ll tell you about it below. In addition, we’re taking several steps to prevent a recurrence.

The message delivery delays were triggered by a dual network failure. This is a very rare event in which two separate, redundant network paths both stop working at the same time. The two network failures were unrelated, but in combination they reduced Gmail’s capacity to deliver messages to users, and beginning at 5:54 a.m. PST messages started piling up. Google’s automated monitoring alerted the Gmail engineering team within minutes, and they began investigating immediately. Together with the networking team, the Gmail team restored some of the network capacity that was lost and worked to repurpose additional capacity, clearing much of accumulated message backlog by 1:00 p.m. PST and the remainder by shortly before 4:00 p.m. PST.

The impact on users’ Gmail experience varied widely. Most messages were unaffected—71% of messages had no delay, and of the remaining 29%, the average delivery delay was just 2.6 seconds. However, about 1.5% of messages were delayed more than two hours. Users who attempted to download large attachments on affected messages encountered errors. Throughout the event, Gmail remained otherwise available — users could log in, read messages which had been delivered, send mail, and access other features.

What’s next? Our top priority is ensuring that Gmail users get the experience they expect: fast, highly-available email, anytime they want it. We're taking steps to ensure that there is sufficient network capacity, including backup capacity for Gmail, even in the event of a rare dual network failure. We also plan to make changes to make Gmail message delivery more resilient to a network capacity shortfall in the unlikely event that one occurs in the future. Finally, we’re updating our internal practices so that we can more quickly and effectively respond to network issues. We’ll be working on all of these improvements and more over the next few weeks—even including this event, Gmail remains well above 99.9% available, and we intend to keep it that way!
01 Oct 07:12

Android 2018

by Oliver Widder
android-2018.jpg
01 Oct 06:50

Peut-on censurer au nom de la science ?

by Pierre Barthélémy

C'est une information qui donne à réfléchir. Dans un article publié en ligne mardi 24 septembre, Suzanne LaBarre, rédactrice en chef du site Internet de Popular Science, un des plus anciens journaux de vulgarisation scientifique du monde, a annoncé sa décision d'appuyer sur le bouton "off". De désactiver la fonction "commentaire" de son site Web. D'empêcher les lecteurs de dire ce qu'ils pensent au sujet des articles publiés.

Suzanne LaBarre explique que "cette décision n'a pas été prise à la légère" et qu'il est une conséquence directe de ce que j'appellerai l'"effet crado" ("the nasty effect" en anglais). Cet arrêt des commentaires est une réaction directe à la pollution des sites d'information par les trolls, qu'ils soient humains ou robotisés, organisés par des lobbies ou pas. Trolls qui déversent dans les commentaires des textes à l'argumentation parfois préfabriqués et copiés-collés, destinés, dans le cas de l'information scientifique, à instiller le doute dans l'esprit des internautes, qui sur la réalité du réchauffement climatique, qui sur la validité de la théorie de l'évolution, qui sur l'innocuité des vaccins, etc. Bref à utiliser l'outil du commentaire pour manipuler l'opinion.

Comme le souligne Suzanne LaBarre, ces commentaires ont vraiment le pouvoir de modifier la perception que le public se fait d'une nouvelle dans le domaine des sciences. L'"effet crado" a été mis en évidence il y a quelques mois dans une étude publiée par le Journal of Computer-Mediated CommunicationPour résumer, les auteurs ont soumis plus d'un millier de personnes, échantillon représentatif de la population américaine, à un article fictif sur Internet rendant compte d'une découverte dans le domaine des nanotechnologies. Une partie des "cobayes" voyait l'article accompagné de commentaires lançant certes un débat contradictoire mais sur le mode cordial et ouvert. L'autre partie avait accès à une discussion tout aussi contradictoire, qui prenait cependant la tournure musclée, péremptoire et parfois méprisante qui est la marque de fabrique des trolls. Cette dialectique avait un effet significatif, qui polarisait davantage le lectorat et, surtout, modifiait la perception de l'information en altérant la capacité d'adhésion à la technologie présentée. L'effet "crado" est la version Internet du "calomniez, calomniez, il en restera toujours quelque chose".

Pour Suzanne LaBarre, les conséquences des agissements des trolls sont évidentes : "Les commentateurs façonnent l'opinion publique ; l'opinion publique façonne les politiques publiques ; les politiques publiques décident si la recherche est financée, comment elle l'est et quel type de recherche l'est – vous commencez à voir pourquoi nous nous sentons contraints d'appuyer sur le bouton "off"." A cela il faut ajouter le contexte américain de "guerre" contre la science que j'ai plusieurs fois évoqué dans ce blog (lire ici, ici ou encore là). Les Etats-Unis sont certes les champions du monde au palmarès des prix Nobel scientifiques mais il s'agit aussi d'un pays dont un des deux principaux mouvements politiques, le parti Républicain, est ouvertement en croisade contre la science soit parce que celle-ci s'attaque aux puissances industrielles qui financent ce parti (cf. le climato-scepticisme), soit parce qu'elle offre une vision du monde qui remet en cause les représentations traditionnelles des électeurs américains les plus conservateurs. A ce titre, entendre Sarah Palin dire en 2008 que les hommes avaient côtoyé les dinosaures il y a 6 000 ans (date supposée de la création de l'Univers par Dieu), n'était au fond guère étonnant...

Si l'on interprète correctement ce que dit Suzanne LaBarre, publier sur le site Internet d'un journal de vulgarisation scientifique des commentaires disséminant volontairement des contre-vérités ou se faisant les relais des marchands de doute dénoncés par Naomi Oreskes et Erik Conway, revient à se tirer une balle dans le pied, à desservir la cause de la science. D'où la conséquence "logique", la fermeture desdits commentaires. Qu'on aime ou pas Popular Science, pareil choix venant d'un monument de la vulgarisation scientifique, qui fêtera dans quelques années son siècle et demi d'existence, pose bien des questions. La première consiste à se demander si ce renoncement, cet aveu d'impuissance, ne signe pas par contraste la victoire suprême des trolls. Certes ils disparaîtront du paysage, ils ne se serviront plus du média comme d'un porte-voix pour leur propagande... mais les autres internautes n'auront plus d'espace d'expression, ceux qui veulent sincèrement et honnêtement participer au débat sur tel ou tel aspect de l'actualité de la recherche.

La deuxième question est celle qui donne son titre à ce billet : peut-on censurer au nom de la science ? La science est un perpétuel processus d'erreurs et de corrections. Elle est réfutable par essence et toute théorie, même la plus éprouvée par l'expérience, peut être remise en cause à tout moment si une expérience la prend en défaut. La science est aussi une agora dans laquelle chacun soumet ses arguments aux critiques des autres avec l'espoir qu'en débattant, on percevra mieux le visage de la vérité. Si l'on s'en tient à ce résumé, la censure est donc à l'opposé du fonctionnement de la recherche. Mais, sur le plan pratique, cela n'est valable que si tous les participants acceptent les règles du jeu.

C'est là le point le plus important du débat. Les trolls ne jouent pas le jeu. On les reconnaît soit parce qu'il font intervenir de faux experts, soit parce qu'ils pratiquent la sélection de données pour ne retenir que celles qui les arrangent, soit parce qu'ils mettent sans cesse sur le tapis des arguments et des travaux qui ont été maintes fois réfutés pour des erreurs factuelles, des biais méthodologiques ou des conflits d'intérêts. Et, bien sûr, il leur arrive de faire tout cela en même temps. C'est ce que j'ai coutume d'appeler le négationnisme scientifique, même si j'ai parfaitement conscience que la connotation historique très forte du mot "négationnisme" rend l'expression exagérée. Certains préfèrent celle de "déni de la science". La question "peut-on censurer au nom de la science ?" revient donc à se demander ce qu'on doit faire avec ceux qui ne jouent pas le jeu selon les règles. En général, la réponse est l'exclusion de la partie. Le problème avec l'option radicale qu'a choisie Popular Science, c'est qu'elle revient à donner un carton rouge à tous les joueurs de l'équipe quand un seul a fauté.

Pour terminer sur une touche plus personnelle, la décision de "Pop Sci" invite le blogueur scientifique que je suis à s'interroger sur ses propres pratiques de "modération". Il m'est en effet arrivé de voir Passeur de sciences pris dans la déferlante des trolls à l'occasion de tel ou tel billet, qu'il soit sur le créationnisme en Turquie ou aux Etats-Unis, sur le réchauffement climatique ou encore sur les théories du complot. Très souvent, ces internautes ne s'embarrassent guère de fioritures, se contentant de changer de pseudonyme pour faire croire à un "effet masse", à une réaction collective, mais oubliant de modifier l'adresse IP à partir de laquelle on peut identifier les commentateurs... Les premières fois, on tente d'être ouvert à la critique, de répondre posément aux remarques, de rectifier ce qu'on prend pour des erreurs alors qu'il s'agit de mensonges manifestes. On apprend vite l'adage "Don't feed the troll", ne pas nourrir le troll, lequel n'est jamais aussi heureux que quand il vous a attrapé dans ses filets. Sur ce point, je suis d'accord avec Suzanne LaBarre : tout le temps perdu à répondre aux trolls de manière raisonnable est du temps volé à l'information, à la réflexion, à l'écriture et aux autres lecteurs, ceux qui sont de bonne foi.

La charte des blogs du site Internet du Monde n'est pas toujours d'un grand secours car elle reste assez générale. Elle précise néanmoins plusieurs choses, notamment que sont proscrits "la violence ou l'incitation à la violence, politique, raciste ou xénophobe, la pornographie, la pédophilie, le révisionnisme et le négationnisme (...) ; le détournement du service de blogs pour faire de la propagande ou du prosélytisme, à des fins professionnelles ou commerciales (prospection, racolage ou prostitution) et à des fins politiques, religieuses ou sectaires". Elle dit aussi qu'il appartient à chaque blogueur "de surveiller et de censurer son contenu, notamment les commentaires que les internautes seront susceptibles d'y publier. Le Monde interactif lui donne la possibilité de supprimer tout commentaire ajouté par un internaute sur son blog."

Face aux trolls qui sont d'une insolente mauvaise foi, j'ai souvent été gagné par le découragement ou la colère et tenté d'adopter la solution de Popular Science. De fermer les commentaires et d'avoir la paix dans mon espace. Et puis, à chaque fois, je me suis dit que ceux que j'appelle par ironie les courageux anonymes seraient trop contents d'une telle réaction. Je n'ai pas voulu oublier que, pour un journaliste, l'atout d'Internet par rapport au journal papier est ce contact quotidien avec ceux qui le lisent, cette possibilité de se parler, d'échanger des idées et des informations car il arrive souvent qu'un commentaire enrichisse le billet que j'ai écrit. J'ai donc tenu bon en choisissant simplement, impitoyablement, de clouer le bec aux menteurs patentés, à ceux qui font profession de semer le doute. Ils ont beau jeu, ensuite, de crier ensuite à la censure sur les forums où ces groupuscules aiment à cracher sur les médias, mais peu m'importe. Ce qui compte à mes yeux, c'est que leur propagande et leurs mensonges ne soient pas passés par chez moi. Cela implique de relire tous les commentaires avant leur publication. Avec plus de 24 000 commentaires laissés sur ce blog depuis sa création en décembre 2011, je laisse le lecteur imaginer le temps que j'ai passé à la modération. C'est pour ne pas perdre tout ce temps que Popular Science a opté pour une solution radicale que je regrette tout en la comprenant.

Pierre Barthélémy (suivez-moi ici sur Twitter ou bien là sur Facebook)

01 Oct 06:37

Un avion de chasse F-16 transformé en drone

by YPz0ps
Le concept de drone semble prendre une place de plus en plus importante dans le monde des nouvelles technologies. Boeing, le célèbre constructeur d’avions, vient notamment de transformer l’un de ses modèles d’avion de chasse en drone, qu’il a aussitôt … Continuer la lecture →






28 Sep 16:59

Ploum : Le coût de la conviction

by Ploum
stubborn

Également disponible en anglais.

Lorsque nous débattons, nous avons tendance à considérer que les opinions sont le fruit de l’exposition à des arguments logiques. Et de la compréhension de ces derniers. Si un argument est logique et compris, une personne saine devrait changer d’avis.

Mais toute personne qui a fréquenté un peu les forums de discussion sur Internet sait qu’il n’en est rien. Tout le monde campe sur ses positions. Mais pourquoi donc ?

La raison est simple : changer d’avis à un coût. Un coût que nous avons tendance à oublier voire à ignorer complètement. Pourtant, un bon exercice est d’évaluer ce coût avant un débat. Autant pour vous-même que pour la partie adverse.

Prenons l’exemple du passionné de musique qui est convaincu que le piratage nuit aux artistes. Le convaincre que ce n’est pas le cas et que le piratage n’est pas immoral reviens, selon son propre point de vue, à admettre qu’il était assez bête pour avoir le cerveau lavé par l’industrie du disque et que tout l’argent qu’il a dépensé en CDs est un gaspillage total.

Chaque fois que vous lui dîtes : « Le piratage n’est pas immoral et ne porte pas atteinte aux artistes », il entend « Tu es stupide et tu as gaspillé ton argent pendant des années ». Vos arguments devront non seulement le convaincre logiquement mais également surmonter ce coût lié au sentiment d’être stupide et d’avoir gaspillé de l’argent. Un coût élevé mais pas insurmontable.

Mais il y a pire : lors d’un débat, nous avons intuitivement tendance à considérer les coûts des différents intervenants comme symétriques.

Prenons l’exemple du bon vieux débat sur l’existence de dieu.

Pour un athée, le coût d’être convaincu de l’existence de dieu est généralement celui d’admettre avoir été dans l’erreur. C’est un coût non négligeable mais surmontable. Dans la plupart des cas, les athées n’ont pas une histoire fortement liée à l’athéisme et sont donc prêt à être convaincus de l’existence de dieu avec des arguments rationnels. Ils entrent dans un débat en s’attendant à ce que la partie adverse face preuve du même état d’esprit.

Malheureusement, l’opposé n’est pas vrai. Pour la plupart des personnes religieuses, croire en dieu est une partie très importante de leur vie. C’est souvent une culture héritée de leurs parents. Ces personnes ont parfois fait des choix de vie très importants à cause de leur croyance religieuse. Dans certains cas, la religion est même le fondement de leurs relations sociales.

Quand vous dîtes « Dieu n’existe pas », quels que soient les arguments logiques, la personne religieuse entend « Tu es stupide, tes parents et tous tes ancêtres étaient des menteurs, votre vie entière est basée sur un mensonge et tu devrais rompre avec tous tes amis. »

Dit comme ça, cela ressemble plus à une blague ou à une exagération. Mais, inconsciemment, c’est pourtant exactement ce que peuvent ressentir des personnes religieuses. Étant donné le coût de certaines convictions, il n’est pas étonnant que les débats religieux puissent devenir si émotionnels.

Pourquoi croyez-vous que certaines communautés religieuses tentent par tous les moyens de discréditer ou de combattre l’athéisme ou la libre pensée ? Pourquoi pensez-vous que la plupart des religions cherchent à obtenir de l’argent ou un investissement personnel de votre part ? Tout simplement parce qu’elles augmentent de cette manière le coût nécessaire à ne plus croire en elles. Les scams sur Internet ou les voyants-marabouts comprennent cela très bien : ils demandent un petit peu d’argent puis de plus en plus. Soit vous continuez à payer, soit vous admettez que vous vous êtes fait rouler de tout l’argent investi jusqu’à présent.

Avant chaque discussion, chaque débat, vous devriez demander aux participants de répondre sincèrement à la question suivante : « Que se passerait-il si j’étais convaincu par la partie adverse ? Que ferais-je ? Quelle serait l’influence de ce changement sur ma vie ? ».

Dans une grande majorité des cas, vous découvrirez que changer d’opinion n’est pas une option. Ce qui clôt le débat avant même qu’il ait commencé.

Et vous, amis lecteurs, quels sont vos opinions qui sont trop chères à changer ? Et que pouvez-vous faire pour améliorer cette situation ?

 

Également disponible en anglais. Photo par r.nial.bradshaw.

Merci d'avoir pris le temps de lire ce texte. Ce blog est payant mais vous êtes libre de choisir le prix. Vous pouvez soutenir l'écriture de ces billets via Flattr, Patreon, virements IBAN, Paypal ou en bitcoins. Mais le plus beau moyen de me remercier est de simplement partager ce texte autour de vous.

flattr this!

Gravatar de Ploum
Original post of Ploum.Votez pour ce billet sur Planet Libre.

Articles similaires

28 Sep 09:20

Using heartbeats as passwords to secure medical devices

by Lisa Vaas
It is time to start thinking of our hearts as random number generators that can serve as passwords to secure medical devices that are vulnerable to hacking, US researchers at Rice University have proposed.