Francois Aichelbaum
2023-05-11T08:58:36+02:00
https://francois.aichelbaum.com/
Francois Aichelbaum
francois@aichelbaum.com
Social benefits and risks from AI
2023-01-23T08:01:01+01:00
https://francois.aichelbaum.com/2023/01/23/social-benefits-and-risks-from-ai
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> Social benefits and risks from AI</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#will-it-help-or-will-it-hurt" id="markdown-toc-will-it-help-or-will-it-hurt">Will it help or will it hurt?</a></li>
<li><a href="#the-social-benefit" id="markdown-toc-the-social-benefit">The social benefit</a></li>
<li><a href="#the-social-risk" id="markdown-toc-the-social-risk">The social risk</a></li>
<li><a href="#some-examples" id="markdown-toc-some-examples">Some examples</a></li>
<li><a href="#conclusion" id="markdown-toc-conclusion">Conclusion</a></li>
</ul>
</nav>
</aside>
<p>There’s a lot of talk about the benefits and risks of artificial intelligence (AI). Some people believe that AI will make our lives better, while others fear that it could do harm. We’re not going to settle that debate here–but we will look at what some experts say about how AI might affect society in general.</p>
<h2 id="will-it-help-or-will-it-hurt">Will it help or will it hurt?</h2>
<p>It’s unclear whether AI will help or hurt society, but there are both risks and benefits associated with the technology.</p>
<p>AI is a tool, like any other technology: it has the potential to be used for good or bad. It depends on how it is applied. There are many examples of AI being used for good: for example, Facebook’s Messenger bot that helps identify suicidal posts; or Microsoft’s Tay chatbot that was trained on twitter data and quickly became racist after interacting with real people online (in response to this failure, Microsoft decided not to release its new teen girl chatbot Zo).</p>
<p>It’s not all about the technology though—it’s also about how people use it.</p>
<p>When a company becomes a monopoly, it can charge higher prices than would be possible with competition. This makes consumers worse off because they have to pay more for products or services that would cost less if there were multiple companies in the market. In addition, monopolies reduce the incentive for firms to innovate new products because there is no reason to improve on their existing product if they don’t have any competitors that can offer something different. This is why we need AI more than ever before. The world is changing faster than ever before, and it’s only going to get faster. We can either embrace those changes or fight them - but if we want the best possible future for ourselves and our children, then we have no choice but to embrace them. The same technology can be used for both good and bad. For example, the internet has been used to create jobs that didn’t exist before (like being an Uber driver) but also allowed terrorists to recruit and plan attacks…</p>
<p>AI is no different. It will be used for both good and bad purposes, but the good uses far outweigh the bad ones. That’s why it’s so important that we continue to develop AI technology so that it can help humanity solve some of its biggest problems</p>
<h2 id="the-social-benefit">The social benefit</h2>
<p>The social benefit of AI is that it will make life better for everyone.</p>
<p>AI will help us find jobs, learn new skills, and make better decisions. It will help us solve problems in new ways and enjoy life more than ever before. And it will also connect people together in ways that were never possible before - bringing families closer together and making the world a better place for all of us to live in.</p>
<p>AI is already making a huge difference in the lives of many people. AI can help us find jobs, learn new skills and make better decisions. AI will help us solve problems in new ways and enjoy life more than ever before.</p>
<p>AI will connect people together in ways that were never possible before. AI will bring families closer together and make the world a better place for all of us to live in.
AI is already making a huge difference in the lives of many people.</p>
<p>AI can help us find jobs, learn new skills and make better decisions. AI will help us solve problems in new ways and enjoy life more than ever before. AI will connect people together in ways that were never possible before - bringing families closer together and making the world a better place for all of us to live in. AI is already making a huge difference in the lives of many people.</p>
<h2 id="the-social-risk">The social risk</h2>
<p>The social risk of AI is that the technology companies will turn into monopolies.</p>
<p>Monopolies are companies that dominate an industry and have no or few competitors. Examples of monopolies include Starbucks, Walmart, and Google. When a firm becomes a monopoly, it can charge higher prices than would be possible with competition. This makes consumers worse off because they have to pay more for products or services that would cost less if there were multiple companies in the market. In addition, monopolies reduce the incentive for firms to innovate new products because there is no reason to improve on their existing product if they don’t have any competitors that can offer something different.</p>
<p>As AI technology continues to progress, the risk that technology companies will become monopolies increases. With the power of AI, companies will be able to create products and services that are so advanced that no other company can compete. This could lead to a situation where a single company controls the entire market, leaving consumers with no other choice.</p>
<p>This could result in a decrease in consumer welfare and an increase in social inequality.</p>
<h2 id="some-examples">Some examples</h2>
<h3 id="chatgpt-and-copyai">Chatgpt and Copy.ai</h3>
<p>They are both two examples of how AI can be used for good.</p>
<p>Chatgpt is an example of how AI can be used to help people with autism. Chatgpt is a chatbot that helps people learn social skills, including what it means to be autistic and ways they can interact with others. It’s designed as a resource for children who have been diagnosed with autism and their parents, but anyone can use it too!</p>
<p>Copy.ai is another example of how AI can be used for good: It’s an intelligent personal assistant that learns from your behavior and helps you make decisions based on what you’ve done before. For example, if you want to make sure you never forget about a dentist appointment again (and who doesn’t?), Copy will remind you every day at noon—unless it notices that Dr. Snickerdoodle has become your dentist after all, in which case he’ll let himself into your office space at 6 pm every evening until he sees the light go off in his office next door when everyone leaves after 7 pm.”</p>
<p>As a society, we need to be careful about how we approach AI. I believe there is an ethical dimension to AI that needs more attention. This means thinking about the implications of AI and how it could impact our lives before it becomes mainstream. It’s important for us to have conversations now—about who will control this technology and how it will be used in society—rather than reacting once it’s already out there.</p>
<p>Another area I’m interested in is how AI can help us with our emotions. For example, we could use a system like this to help people who are suffering from depression or anxiety.</p>
<h3 id="midjourney-can-draw-it-for-you">Midjourney can draw it for you</h3>
<p>Midjourney is a platform designed to connect people with similar values and interests.</p>
<p>Midjourney is a social network designed to help you connect with like-minded people. Whether you’re looking to make friends, find a partner or a business connection, Midjourney makes it easy for you to find them. Midjourney isn’t just another place where people can share their ideas—it’s also a place where people can come together and support each other in their shared values.</p>
<p>It’s a revolutionary social network that has been designed to make it easier than ever to meet like-minded people. Whether you’re looking to make friends, find a romantic partner, or establish a business connection, Midjourney makes it simple to find the right person.</p>
<p>It is the place where you can connect with other people who are interested in self-development, personal growth and spiritual awareness. We know that there are many ways to achieve these goals, so we don’t want to limit what you share.</p>
<p><img alt="Mijourney top list" src="/images/2023/01/midjourney-top.png" title="Midjourney top list" srcset="/assets/resized/480/midjourney-top.png 480w,/assets/resized/800/midjourney-top.png 800w, /images/2023/01/midjourney-top.png 1077w" />
<br /><em class="img-legend">Midjourney top list</em></p>
<p>Midjourney is revolutionizing the way people connect with each other. It’s a social network designed to help you find like-minded people and build meaningful relationships. Whether you’re looking for a friend, a partner, or a business connection, Midjourney makes it easy to find them.</p>
<h2 id="conclusion">Conclusion</h2>
<p>As you can see, there are a lot of benefits and risks associated with AI. The technology is still in its early stages, so it’s difficult to predict exactly how it will affect our lives. We do know that AI will have a big impact on our society and economy as it continues to develop over time.</p>
Only the bias is biased
2023-01-06T08:01:01+01:00
https://francois.aichelbaum.com/2023/01/06/only-the-bias-is-biased
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> Only the bias is biased</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#types-of-bias" id="markdown-toc-types-of-bias">Types of bias</a></li>
<li><a href="#impact-of-bias" id="markdown-toc-impact-of-bias">Impact of bias</a></li>
<li><a href="#what-next" id="markdown-toc-what-next">What next?</a></li>
<li><a href="#conclusion" id="markdown-toc-conclusion">Conclusion</a></li>
</ul>
</nav>
</aside>
<p>Cognitive bias is a phenomenon that occurs when our brain processes information in a way that is systematically different from the way a rational, unbiased mind would. These biases can affect our decision-making, our perceptions and our memory, and they can have a significant impact on our lives.</p>
<h2 id="types-of-bias">Types of bias</h2>
<p>There are many different types of cognitive biases, and they can be grouped into several categories. Some common types of cognitive biases include:</p>
<ul>
<li>
<p>Confirmation bias: This is the tendency to seek out and give more weight to information that confirms our preexisting beliefs and assumptions. This bias can lead us to ignore or downplay evidence that contradicts our beliefs, and it can make it difficult for us to change our minds even when presented with new or conflicting information.</p>
</li>
<li>
<p>Anchoring bias: This is the tendency to give too much weight to the first piece of information we receive, even if it is not necessarily relevant or accurate. For example, if we are asked to estimate the number of jelly beans in a jar and are first told that there are 50, we may anchor our subsequent estimates to that initial number, even if it is not a reasonable estimate.</p>
</li>
<li>
<p>Framing effect: This is the way in which the way a problem or situation is presented can influence our decision-making. For example, if we are asked whether we would rather have a 60% chance of winning $100 or a 40% chance of winning $150, we may choose the first option because it is framed in terms of probability, even though the second option is clearly a better deal.</p>
</li>
<li>
<p>Representativeness bias: This is the tendency to judge the likelihood of an event based on how closely it resembles our mental concept of that event, rather than on statistical analysis. For example, if we are asked to estimate the likelihood that a person is a doctor based on the fact that they are wearing a white coat and carrying a stethoscope, we may judge that the probability is high, even though there are many other professions that also involve wearing a white coat and using a stethoscope.</p>
</li>
</ul>
<p><img alt="Perceval and Karadoc - Kaamelott" src="/images/2023/01/perceval-karadoc.jpg" title="Perceval and Karadoc - Kaamelott" srcset="/assets/resized/480/perceval-karadoc.jpg 480w,/assets/resized/800/perceval-karadoc.jpg 800w, /images/2023/01/perceval-karadoc.jpg 1280w" />
<br /><em class="img-legend">Perceval and Karadoc - Kaamelott</em></p>
<p>These are just a few examples of the many cognitive biases that can influence our thinking and decision-making. Other common biases include the availability heuristic (the tendency to judge the likelihood of an event based on how easily we can recall similar events), the sunk cost fallacy (the tendency to continue investing in a project or course of action because of the resources we have already invested), and the halo effect (the tendency to judge a person or thing more favorably based on one positive characteristic).</p>
<h2 id="impact-of-bias">Impact of bias</h2>
<p>Cognitive biases can have a significant impact on our lives and decision-making, and they can lead us to make judgments that are not based on accurate or objective information. For example, confirmation bias can make it difficult for us to accept new or conflicting information, even when it is supported by evidence, and the sunk cost fallacy can lead us to continue investing in a project even when it is not likely to be successful.</p>
<p>It is important to be aware of these biases and to try to correct for them as much as possible in order to make more informed and rational decisions. There are several strategies that can help us to mitigate the effects of cognitive bias, including seeking out diverse sources of information, questioning our assumptions and beliefs, and using tools like decision trees and cost-benefit analysis to help us make more objective decisions.</p>
<p><img alt="Double Impact" src="/images/2023/01/double-impact.png" title="Double Impact" srcset="/assets/resized/480/double-impact.png 480w,/assets/resized/800/double-impact.png 800w,/assets/resized/1400/double-impact.png 1400w, /images/2023/01/double-impact.png 2400w" />
<br /><em class="img-legend">Double Impact</em></p>
<p>By understanding the ways in which our brains can distort or simplify information, we can work to overcome cognitive bias and make more informed and rational decisions. This is important not only for our personal lives, but also for the many complex problems and challenges we face as a society.</p>
<p>Cognitive biases can have a significant impact on how we evaluate and make decisions about risks. The availability heuristic, for example, can lead us to overestimate the likelihood of rare or highly publicized events, such as plane crashes or terrorist attacks. This can lead us to make decisions that are not based on a realistic assessment of the risks we face, and it can also affect public policy and resource allocation.</p>
<p>Cognitive biases can also have an impact on how we perceive and remember events and experiences. For example, the misinformation effect is the tendency for new information to overwrite or distort our memories of events. This can have serious consequences in legal settings, where eyewitness testimony is often an important piece of evidence.</p>
<h2 id="what-next">What next?</h2>
<p>There is a growing body of research on cognitive biases and how to mitigate their effects, and there are several strategies that can help us to make more informed and rational decisions. These include:</p>
<ul>
<li>
<p>Seeking out diverse sources of information: By exposing ourselves to a wide range of perspectives and viewpoints, we can help to mitigate the effects of confirmation bias and other biases that can distort our perceptions.</p>
</li>
<li>
<p>Questioning our assumptions and beliefs: By actively questioning our own assumptions and beliefs, we can help to identify and correct for biases that might otherwise distort our thinking.</p>
</li>
<li>
<p>Using tools like decision trees and cost-benefit analysis: These tools can help us to make more objective and unbiased decisions by forcing us to consider multiple factors and to weigh the pros and cons of different options.</p>
</li>
</ul>
<p>Overall, it is important to be aware of the ways in which our brains can distort or simplify information, and to take steps to correct for these biases in order to make more informed and rational decisions. By understanding and addressing cognitive biases, we can improve our decision-making and increase our chances of success in both our personal and professional lives.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Inspired by one of my extra-professional presentations during a monthly event at <a href="https://www.enyx.com">Enyx</a>, I decided to try the <a href="https://openai.com/blog/chatgpt/">ChatGPT</a> experiment on the theme of cognitive bias. The question? “Rédige un article de 20000 caractères sur le biais cognitif en anglais” in French, as-is. What do you think of the result?</p>
JSON, MongoDB and rsyslog are on a boat
2020-12-23T11:01:01+01:00
https://francois.aichelbaum.com/2020/12/23/json-mongodb-rsyslog-are-on-a-boat
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> JSON, MongoDB and rsyslog are on a boat</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#json-is-standard" id="markdown-toc-json-is-standard">JSON is standard</a></li>
<li><a href="#nginx-knows-about-cee" id="markdown-toc-nginx-knows-about-cee">Nginx knows about @cee</a></li>
<li><a href="#rsyslog-is-great-its-documentation-is-not" id="markdown-toc-rsyslog-is-great-its-documentation-is-not">Rsyslog is great. Its documentation is not.</a></li>
<li><a href="#thats-not-all-folks" id="markdown-toc-thats-not-all-folks">That’s not all folks!</a></li>
<li><a href="#at-the-end" id="markdown-toc-at-the-end">At the end</a></li>
</ul>
</nav>
</aside>
<p>When dealing with log management, obvious solutions emerge earlier, often before you even discussed the purpose of the log management. We can discuss about <a href="https://www.elastic.co/fr/what-is/elk-stack">ELK</a>, <a href="https://www.graylog.org/">Graylog</a>, <a href="https://www.splunk.com/">Splunk</a>, … Those are great tools but they may not fit will all your needs. Lately, I had to work for one of my customer on enforcing log management for billing purposed. Rsyslog was already set to collect and centralize all the logs (and manage their backups). MongoDB seemed as a perfect tips for storing JSON extract of the logs to generate the proper stats.</p>
<p><img alt="Invoice Management - DronaHQ" src="/images/2020/12/invoice-management.jpg" title="Invoice Management - DronaHQ" srcset="/assets/resized/480/invoice-management.jpg 480w,/assets/resized/800/invoice-management.jpg 800w, /images/2020/12/invoice-management.jpg 1280w" />
<br /><em class="img-legend">Invoice Management - DronaHQ</em></p>
<h2 id="json-is-standard">JSON is standard</h2>
<p>From <a href="https://www.json.org/json-en.html">json.org</a>:</p>
<blockquote>
<p>JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.</p>
</blockquote>
<p>On top of that format, we can used a more structured syntax, adapted to log management: <a href="https://cee.mitre.org/language/0.6/CEE_Common_Log_Syntax-JSON-v0.6.html">CEE Log Syntax</a>. This defined format is well used by various tools you might use, in the present case: nginx, rsyslog, and mongodb. Up to a certain level…</p>
<p><img alt="Structured JSON" src="/images/2020/12/json.gif" title="" srcset="/assets/resized/480/json.gif 480w, /images/2020/12/json.gif 628w" /></p>
<h2 id="nginx-knows-about-cee">Nginx knows about @cee</h2>
<p>Sort of. Nginx has a <a href="https://nginx.org/en/docs/syslog.html">native syslog export</a> for both error_log and access_log. Out of the box, it will simply push all logs from the default log formats to syslog. This won’t be very convenient for proper management afterwards. But nginx is easy to use, and you can define your own custom format. You’ll find plenty of blogposts, tutorials, and others as <a href="https://ahelpme.com/software/rsyslog/send-access-logs-in-json-to-elasticsearch-using-rsyslog/">Any IT here? Help me!</a> describing the <em>proper</em> @cee JSON log format you need:</p>
<figure class="highlight"><pre><code class="language-nginx" data-lang="nginx"><span class="k">log_format</span> <span class="s">mainJSON</span> <span class="s">escape=json</span> <span class="s">'@cee:</span> <span class="p">{</span><span class="kn">'</span>
<span class="s">'"vhost":"</span><span class="nv">$server_name</span><span class="s">",'</span>
<span class="s">'"remote_addr":"</span><span class="nv">$remote_addr</span><span class="s">",'</span>
<span class="s">'"time_iso8601":"</span><span class="nv">$time_iso8601</span><span class="s">",'</span>
<span class="s">'"request_uri":"</span><span class="nv">$request_uri</span><span class="s">",'</span>
<span class="s">'"request_length":"</span><span class="nv">$request_length</span><span class="s">",'</span>
<span class="s">'"request_method":"</span><span class="nv">$request_method</span><span class="s">",'</span>
<span class="s">'"request_time":"</span><span class="nv">$request_time</span><span class="s">",'</span>
<span class="s">'"server_port":"</span><span class="nv">$server_port</span><span class="s">",'</span>
<span class="s">'"server_protocol":"</span><span class="nv">$server_protocol</span><span class="s">",'</span>
<span class="s">'"ssl_protocol":"</span><span class="nv">$ssl_protocol</span><span class="s">",'</span>
<span class="s">'"status":"</span><span class="nv">$status</span><span class="s">",'</span>
<span class="s">'"bytes_sent":"</span><span class="nv">$bytes_sent</span><span class="s">",'</span>
<span class="s">'"http_referer":"</span><span class="nv">$http_referer</span><span class="s">",'</span>
<span class="s">'"http_user_agent":"</span><span class="nv">$http_user_agent</span><span class="s">",'</span>
<span class="s">'"upstream_response_time":"</span><span class="nv">$upstream_response_time</span><span class="s">",'</span>
<span class="s">'"upstream_addr":"</span><span class="nv">$upstream_addr</span><span class="s">",'</span>
<span class="s">'"upstream_connect_time":"</span><span class="nv">$upstream_connect_time</span><span class="s">",'</span>
<span class="s">'"upstream_cache_status":"</span><span class="nv">$upstream_cache_status</span><span class="s">",'</span>
<span class="s">'"tcpinfo_rtt":"</span><span class="nv">$tcpinfo_rtt</span><span class="s">",'</span>
<span class="s">'"tcpinfo_rttvar":"</span><span class="nv">$tcpinfo_rttvar</span><span class="s">"'</span>
<span class="s">'</span><span class="err">}</span><span class="s">'</span><span class="p">;</span></code></pre></figure>
<p>They all give you the very same structure. Not sure who started it, but that’s not the point: they’re all wrong about it!</p>
<p><img alt="I am this close - Terminator 2" src="/images/2020/12/close.gif" title="I am this close - Terminator 2" srcset="/assets/resized/480/close.gif 480w, /images/2020/12/close.gif 720w" />
<br /><em class="img-legend">I am this close - Terminator 2</em></p>
<p>They are close, indeed, but some details have to be fixed first. Why are they wrong? Because JSON, and especially the @cee version of it, has datatypes. Numbers (integers and floats) should not be encapsulated between quotes: quotes are for string only.</p>
<figure class="highlight"><pre><code class="language-nginx" data-lang="nginx"><span class="k">log_format</span> <span class="s">mainJSON</span> <span class="s">escape=json</span> <span class="s">'@cee:</span> <span class="p">{</span><span class="kn">'</span>
<span class="s">'"vhost":"</span><span class="nv">$server_name</span><span class="s">",'</span>
<span class="s">'"remote_addr":"</span><span class="nv">$remote_addr</span><span class="s">",'</span>
<span class="s">'"time_iso8601":"</span><span class="nv">$time_iso8601</span><span class="s">",'</span>
<span class="s">'"request_uri":"</span><span class="nv">$request_uri</span><span class="s">",'</span>
<span class="s">'"request_length":</span><span class="nv">$request_length</span><span class="s">,'</span>
<span class="s">'"request_method":"</span><span class="nv">$request_method</span><span class="s">",'</span>
<span class="s">'"request_time":</span><span class="nv">$request_time</span><span class="s">,'</span>
<span class="s">'"server_port":</span><span class="nv">$server_port</span><span class="s">,'</span>
<span class="s">'"server_protocol":"</span><span class="nv">$server_protocol</span><span class="s">",'</span>
<span class="s">'"ssl_protocol":"</span><span class="nv">$ssl_protocol</span><span class="s">",'</span>
<span class="s">'"status":</span><span class="nv">$status</span><span class="s">,'</span>
<span class="s">'"bytes_sent":</span><span class="nv">$bytes_sent</span><span class="s">,'</span>
<span class="s">'"http_referer":"</span><span class="nv">$http_referer</span><span class="s">",'</span>
<span class="s">'"http_user_agent":"</span><span class="nv">$http_user_agent</span><span class="s">",'</span>
<span class="s">'"upstream_response_time":</span><span class="nv">$upstream_response_time</span><span class="s">,'</span>
<span class="s">'"upstream_addr":"</span><span class="nv">$upstream_addr</span><span class="s">",'</span>
<span class="s">'"upstream_connect_time":</span><span class="nv">$upstream_connect_time</span><span class="s">,'</span>
<span class="s">'"upstream_cache_status":"</span><span class="nv">$upstream_cache_status</span><span class="s">",'</span>
<span class="s">'"tcpinfo_rtt":</span><span class="nv">$tcpinfo_rtt</span><span class="s">,'</span>
<span class="s">'"tcpinfo_rttvar":</span><span class="nv">$tcpinfo_rttvar</span><span class="s">'</span>
<span class="s">'</span><span class="err">}</span><span class="s">'</span><span class="p">;</span></code></pre></figure>
<p>Now we are good to go. Then, as all documentations state it, we can use this log format to push logs to syslog:</p>
<figure class="highlight"><pre><code class="language-nginx" data-lang="nginx"><span class="k">access_log</span> <span class="s">syslog:server=10.10.10.2:514,facility=local7,tag=nginx,severity=info</span> <span class="s">mainJSON</span><span class="p">;</span></code></pre></figure>
<p>For sure, you can adapt the faciliy, the tag and the severity of it, along with the log format name.</p>
<h2 id="rsyslog-is-great-its-documentation-is-not">Rsyslog is great. Its documentation is not.</h2>
<p>That’s a fact, technical documentation, made by technical individuals, for technical persons, are not the best. Rsyslog might be one of the best example about this statement. Rainer Gerhards did a great work with his tool, one of the best syslog manager in my humble opinion. Thought, the documentation is a hell to read. Add to this fact, that it not as accurate as it should be.</p>
<p>In the use case I was working on, the infrastructure is benefiting from <a href="https://www.rsyslog.com/doc/v8-stable/">rsyslog v8-sable</a>. And as stated, we want to use the mongodb exporter, aka <a href="https://www.rsyslog.com/doc/v8-stable/configuration/modules/ommongodb.html">ommongodb</a>. Seems easy and straight forward? Almost. But remember this IT mantra:</p>
<blockquote>
<p>If all goes well, we forget something.</p>
</blockquote>
<p>For reasons out of my mind while writing down this post, I can tell you that it just do not work. Several aspects are to be considering before dealing with those logs.</p>
<ol>
<li>You need to ensure about the encoding: BSON (the JSON variant mongodb uses internally) only supports valid UTF-8 character. For that, you need to properly fix the encoding before sending them. There is a <a href="https://www.rsyslog.com/doc/v8-stable/configuration/modules/mmutf8fix.html">module</a> for that.</li>
<li>The structured @cee sent using the default configuration to mongodb will just push data “as-is”: first issue and main issue you’ll hit is about the date which will be pushed as a regular string.</li>
</ol>
<p><img alt="But why? - Ryan Reynolds" src="/images/2020/12/why.gif" title="But why? - Ryan Reynolds" srcset=" /images/2020/12/why.gif 480w" />
<br /><em class="img-legend">But why? - Ryan Reynolds</em></p>
<p>Why? Simply because rsyslog only understand numbers and strings as <a href="https://www.rsyslog.com/doc/v8-stable/configuration/templates.html">datatypes</a> on one end, and mongodb doesn’t auto detect date and timestamps on the other end. Is it an issue at the end? If you want to benefit from mongodb filtering features on dates, yes it is. For that purpose, you need to use the ISODate() functions that mongodb only knows about.</p>
<p>After a tremendous number of attempts, trying to deal with the documentation to find the proper format, I decided to read the <a href="https://github.com/rsyslog/rsyslog/blob/master/plugins/ommongodb/ommongodb.c#L392-L393">ommongodb module source code</a>. Pretty easy as it’s a well written C code:</p>
<figure class="highlight"><pre><code class="language-c" data-lang="c"> <span class="cm">/* Convert text to ISODATE when needed */</span>
<span class="k">if</span> <span class="p">(</span><span class="n">strncmp</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s">"date"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">strncmp</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s">"time"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">)</span> <span class="p">{</span></code></pre></figure>
<p>You’ve just read it well: the code does not expect the fieldname to start with a <code class="language-plaintext highlighter-rouge">date</code> or <code class="language-plaintext highlighter-rouge">time</code>, but it expect the fieldname to be <code class="language-plaintext highlighter-rouge">date</code> or <code class="language-plaintext highlighter-rouge">time</code>.</p>
<p>Two solutions there:</p>
<ol>
<li>either update the log format, in nginx configuration, from <code class="language-plaintext highlighter-rouge">time_iso8601:</code> to <code class="language-plaintext highlighter-rouge">date:</code></li>
<li>update your rsyslog configuration</li>
</ol>
<p>I’m not found of the string exporter used in the default documentation of rsyslog for mongodb: we’re using JSON as an input, we expect JSON at the output, why should we use strings in between?</p>
<p>For that reason, I moved to a JSON manipulation, thanks to the JSON parse module, and list type for the template:</p>
<figure class="highlight"><pre><code class="language-rsyslog" data-lang="rsyslog">module(load="mmutf8fix")
module(load="mmjsonparse")
module(load="ommongodb")
template(name="json-syslog" type="list" option.jsonf="on") {
property(outname="vhost" name="$!vhost" format="jsonf" datatype="string" onEmpty="null")
property(outname="remote_addr" name="$!remote_addr" format="jsonf" datatype="string" onEmpty="null")
property(outname="time_iso8601" name="$!time_iso8601" format="jsonf")
property(outname="date" name="$!time_iso8601")
property(outname="request_uri" name="$!request_uri" format="jsonf" datatype="string" onEmpty="null")
property(outname="request_length" name="$!request_length" format="jsonf" datatype="number")
property(outname="request_method" name="$!request_method" format="jsonf" datatype="string" onEmpty="null")
property(outname="request_time" name="$!request_time" format="jsonf" datatype="number")
property(outname="server_port" name="$!server_port" format="jsonf" datatype="number")
property(outname="server_protocol" name="$!server_protocol" format="jsonf" datatype="string" onEmpty="null")
property(outname="ssl_protocol" name="$!ssl_protocol" format="jsonf" datatype="string" onEmpty="null")
property(outname="status" name="$!status" format="jsonf" datatype="number")
property(outname="bytes_sent" name="$!bytes_sent" format="jsonf" datatype="number")
property(outname="http_referer" name="$!http_referer" format="jsonf" datatype="string" onEmpty="null")
property(outname="http_user_agent" name="$!http_user_agent" format="jsonf" datatype="string" onEmpty="null")
property(outname="upstream_response_time" name="$!upstream_response_time" format="jsonf" datatype="string" onEmpty="null")
property(outname="upstream_addr" name="$!upstream_addr" format="jsonf" datatype="string" onEmpty="null")
property(outname="upstream_connect_time" name="$!upstream_connect_time" format="jsonf" datatype="string" onEmpty="null")
property(outname="upstream_cache_status" name="$!upstream_cache_status" format="jsonf" datatype="string" onEmpty="null")
property(outname="tcpinfo_rtt" name="$!tcpinfo_rtt" format="jsonf" datatype="number")
property(outname="tcpinfo_rttvar" name="$!tcpinfo_rttvar" format="jsonf" datatype="number")
}</code></pre></figure>
<p><img alt="Now we can talk. - Kyle Maclachlan - Twin Peaks" src="/images/2020/12/talk.gif" title="Now we can talk. - Kyle Maclachlan - Twin Peaks" srcset="/assets/resized/480/talk.gif 480w, /images/2020/12/talk.gif 498w" />
<br /><em class="img-legend">Now we can talk. - Kyle Maclachlan - Twin Peaks</em></p>
<h2 id="thats-not-all-folks">That’s not all folks!</h2>
<p>Following that changes, nginx logs are pushed to mongodb, allowing easy statistics aggregation for billing purpose. As we just want to push these lines to mongodb, best is to proceed with something like:</p>
<figure class="highlight"><pre><code class="language-rsyslog" data-lang="rsyslog">if ($syslogfacility-text == 'local7' and $syslogseverity-text == 'info') then {
action(type="mmutf8fix")
action(type="mmjsonparse")
action(type="ommongodb" uristr="mongodb://--REDACTED--:--REDACTED--@--REDATED--:27017/?authSource=logs&authMechanism=SCRAM-SHA-1" db="logs" collection="nginx" template="json-syslog")
& stop
}</code></pre></figure>
<p>The <code class="language-plaintext highlighter-rouge">uristr</code> is a bit different from the the documentation because, once again, the document is not really explicit enough about it. For most real-life scenarios, even if you use a mongodb cluster, you want to rely on dedicated database and dedicated user, with the proper set of permissions. To benefit from it, you need to add some details within the <code class="language-plaintext highlighter-rouge">uristr</code> as the <code class="language-plaintext highlighter-rouge">user:password</code> but also some query parameters:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">authSource</code>: the db to rely on for authentication, as you user has only permissons on it</li>
<li><code class="language-plaintext highlighter-rouge">authMechanism</code>: you’re pushing a password via the dsn</li>
</ul>
<h2 id="at-the-end">At the end</h2>
<p>We went through. We’ve set up nginx to push JSON @cee-compliant logs to syslog, then we prepare the logs to be properly pushed to mongodb, and we publish them.</p>
<p>Now our folks can run their micro-batching to generate live billing and usage statistics for the customers.</p>
<p>How would you have tackled this kind of need? Did you suffer from technical documentations not adequate or not uptodate?</p>
Too big to fall, not to fail!
2020-11-09T11:03:06+01:00
https://francois.aichelbaum.com/2020/11/09/too-big-to-fall-no-to-fail
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> Too big to fall, not to fail</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#internet-is-dead-nope-just-facebook" id="markdown-toc-internet-is-dead-nope-just-facebook">Internet is dead! Nope, just Facebook</a></li>
<li><a href="#no-one-has-ever-been-fired-for-opting-for-ibm" id="markdown-toc-no-one-has-ever-been-fired-for-opting-for-ibm">No one has ever been fired for opting for IBM</a></li>
<li><a href="#you-said-to-say-hardy" id="markdown-toc-you-said-to-say-hardy">You said to say Hardy!</a></li>
<li><a href="#me-myself-and-the-apocalypse" id="markdown-toc-me-myself-and-the-apocalypse">Me, myself, and the Apocalypse</a></li>
</ul>
</nav>
</aside>
<p>The late US election inspired me, mixed with several of my customers suffering from their providers’ failure, and led me to write this post to remind about <em>the</em> reality, and not someone’s reality.
When dealing with a provider, or selecting a one, you may thing about the consequences and his failure on your business: often, you’ll prefer a big player, as he might be too big to fall. Even if falling and failing are just a character away, they are far more different.</p>
<blockquote>
<p>lem.mings (‘lem-ingz): adorable yet incredible stupid furry creatures. Without your help, they have no chance of survival.</p>
</blockquote>
<p><img alt="Lemmings Puzzle" src="/images/2020/11/lemmings.jpg" title="" srcset="/assets/resized/480/lemmings.jpg 480w,/assets/resized/800/lemmings.jpg 800w, /images/2020/11/lemmings.jpg 1100w" /></p>
<h2 id="internet-is-dead-nope-just-facebook">Internet is dead! Nope, just Facebook</h2>
<p>No need to go back to the beginning of Zuck’s company history: an ultra-fast search on your favorite search engine will lead you to a major crash <a href="https://www.express.co.uk/life-style/science-technology/1233407/Facebook-DOWN-MAJOR-outage-leaves-social-media-users-unable-to-login">beginning of 2020</a>.</p>
<p>We often confuse failing our company’s box with failing our customers. That’s why I prefer the term “falling” in the first case. With this little vocabulary point, we can dig a little more into what we call the “To big to <del>fail</del>fall”. This has been a recurring topic since the subprime crisis of 2008. The fact that banks can fall, disappear, what about the major players in each field.</p>
<p><img alt="Too-big-to-fail banks not only threaten our financial system – they also distort competition © Frédéric Hache / Finance Watch" src="/images/2020/11/too_big_to_fail.png" title="Too-big-to-fail banks not only threaten our financial system – they also distort competition © Frédéric Hache / Finance Watch" srcset="/assets/resized/480/too_big_to_fail.png 480w,/assets/resized/800/too_big_to_fail.png 800w, /images/2020/11/too_big_to_fail.png 814w" />
<br /><em class="img-legend">Too-big-to-fail banks not only threaten our financial system – they also distort competition © Frédéric Hache / Finance Watch</em></p>
<p>The fall of “too big” would theoretically cause the whole system to fall. Although this is not without disastrous consequences, no system disappeared with the fall of the American banks. No system disappeared with the massive fall of the car manufacturers. Massive bankruptcies, unemployment, people on the street yes. But the system did not. So those “too big” can fall.</p>
<p>Well, that’s not really the subject of this post, but you’ve understood: we suppose that a big actor can’t disappear because we’ll do everything we can to hold him, because after all, if he were to disappear, we suppose the consequences would be far too disastrous. So let’s move on.</p>
<h2 id="no-one-has-ever-been-fired-for-opting-for-ibm">No one has ever been fired for opting for IBM</h2>
<p>Choosing “too big” is reassuring. It is known, it has thousands of employees, it weighs hundreds of millions of dollars, … It cannot <del>fail</del>fall. Nope, but it can fail.</p>
<p>The first source of error is and has always been human. This is the primary reason for relying on a principle such as HAZOP (HAZard and OPerability studies). The principle of HAZOP is the decomposition of the system to be analyzed into several subsets, called “nodes” so that the risk analysis can be shared between individuals or multidisciplinary teams. Assume that something will fail, and then you can prevent the risk. In fact, in IT, we often use the expression:</p>
<blockquote>
<p>If everything went well, then you’ve forgotten something.</p>
</blockquote>
<p>Not for nothing.</p>
<p>In 2017, AWS suffered a huge incident on its massive storage (AWS S3). <a href="https://aws.amazon.com/message/41926/">This incident</a> was the direct consequence of human error, to debug another situation. As a result, all companies relying on AWS’ S3 service in this region have been impacted by the service outage, but worse, some have lost data, with no hope of ever finding it again. How many customers have gone out of business due to a failure at AWS?</p>
<p><img alt="Bigger is not better" src="/images/2020/11/bigger_better.jpg" title="" srcset="/assets/resized/480/bigger_better.jpg 480w,/assets/resized/800/bigger_better.jpg 800w, /images/2020/11/bigger_better.jpg 1024w" /></p>
<p>Very often, the first reaction of a customer of these “too big”, on this type of incident, is that given the massive failure, and the number of companies impacted, your own users, the end-users, will have other things to deal with.</p>
<p>This is true, but within a certain limit. On the other hand, it also shows that you have not calculated the risks, and assume that this risk would be borne unilaterally by this “too big”.</p>
<h2 id="you-said-to-say-hardy">You said to say Hardy!</h2>
<p>Very often, in order to respond to these human errors, we decide that the best way is the constraint, the limitation, the process. Do what you are told and strictly what you are told. This is how your “too big”, under cover of a Quality certification for example, will set up various levels of support, each with its own forms, processes, …</p>
<p>Here, we can echo one of my customers, who ordered from the largest French hosting provider (Hello there, OVH), servers, proudly announced available in 120s, without specifying the quantity. Well yes, marketing doesn’t have the same concern for quality process and transparency as technology: after all, it’s not a service ;)</p>
<p>Anyway, servers ordered, but only partially delivered two weeks later. Impossible to have a status because the delivery process is jammed. But the fun doesn’t stop there. In order not to be caught off guard, this customer decides to start installing the servers already delivered, using the tools of this provider. Except, that these tools are bug’d. A support ticket is opened, without reaction. The customer’s teams continue to work on it all the weekend, hoping to get the whole thing up and running, and at times, receive charming mails from the provider, as:</p>
<ul>
<li>you have set such a value to 0: except that the provider’s installation tool forbids such a value … which is only the result of a bug</li>
<li>stop loop crashing: except that it crashes in a loop, because installing it crashes in a loop.</li>
</ul>
<p>Solution proposed by the founder of OVH? Replace the famous servers with its Object Storage service. The same service, which has been in error for a week, with no solution, and where some customers are complaining about a loss of revenue of several thousand euros over the same period.</p>
<p><img alt="The company feels that if we ease up just because someone dies, it will encourage other people to die" src="/images/2020/11/failure.gif" title="Better off Ted" srcset=" /images/2020/11/failure.gif 434w" />
<br /><em class="img-legend">Better off Ted</em></p>
<p>And meanwhile, the mail open to the support, with all the details, is not read by the speakers. Why is this? It’s out of process! The emails are processed by the level 1 support, which doesn’t work on weekends, while the technicians on site only intervene on alarms. The link between the two in normal times? Level 2 support which can only be triggered by level 1. The famous level 1 unavailable. The process is therefore, once again, at fault.</p>
<p>Here it is possible to distinguish several failures:</p>
<ul>
<li>managerial, where the founder ignores the state of his department (voluntarily or not) and gives you inadequate recommendations</li>
<li>supply chain, where a server is missing, with no possible information, and no possible billing for the supplier.</li>
<li>support, where segmentation of teams prevents information from circulating correctly, preventing a technical solution from being implemented</li>
</ul>
<h2 id="me-myself-and-the-apocalypse">Me, myself, and the Apocalypse</h2>
<p>Such failures often go unnoticed by the mass of customers of these providers. However, if you take the time to search, you will always find customers. This becomes all the more true when these customers reach critical size.</p>
<p>So yes, one provider can be better than another (in fact, any truly professional provider is better than a low-cost provider). However, no one is infallible, and no one is too big in the face of fails.</p>
<p>If the service to be delivered to you is critical, then the skill levels of that provider are critical. But it is also your responsibility to have a plan-B outside of your provider. Processes (and certifications) will only serve you in court to ascertain whether the obligations of means and results have been met. Period.</p>
<p>How about you? Do you prefer “too big”?</p>
Let's walk in a minefield
2020-08-27T11:24:06+02:00
https://francois.aichelbaum.com/2020/08/27/lets-walk-in-a-minefield
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> Let's walk in a minefield</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#avant-propos" id="markdown-toc-avant-propos">Avant-Propos</a></li>
<li><a href="#suit-up-" id="markdown-toc-suit-up-">Suit up !</a></li>
<li><a href="#i-want-to-blacklist" id="markdown-toc-i-want-to-blacklist">I want to blacklist</a></li>
<li><a href="#thats-all-folks" id="markdown-toc-thats-all-folks">That’s all folks</a></li>
</ul>
</nav>
</aside>
<p>If you manage an infrastructure, you probably always know the same problem: how to properly manage the blacklisting of malicious IPs. If you are on hybrid infrastructures, without adequate equipment for firewalling, this question often arises all the more. And if you want to be proactive, by securing the whole platform, as soon as a machine detects abnormal behavior, it becomes critical.
Fortunately, an opensource tool, MineMeld, allows you to manage this situation, with a minimum of work.</p>
<p><img alt="Star Trek - Mind meld - Paramount Pictures" src="/images/2020/08/mind_meld.jpg" title="Star Trek - Mind meld - Paramount Pictures" srcset="/assets/resized/480/mind_meld.jpg 480w,/assets/resized/800/mind_meld.jpg 800w,/assets/resized/1400/mind_meld.jpg 1400w, /images/2020/08/mind_meld.jpg 1436w" />
<br /><em class="img-legend">Star Trek - Mind meld - Paramount Pictures</em></p>
<h2 id="avant-propos">Avant-Propos</h2>
<p>(Image inspired by the iTWire article on <a href="https://www.itwire.com/security/mine-meld,-mind-meld-%E2%80%93-the-principles-are-the-same.html">MineMeld</a>)
Not all of us can have next-gen firewalls. On the other hand, we manage servers and can deploy more and more of them. We will therefore focus on this case.</p>
<p>Quick presentation of MineMeld from the <a href="https://github.com/PaloAltoNetworks/minemeld/wiki">official Wiki</a>:</p>
<blockquote>
<p>MineMeld is a community supported tool to manipulate list of indicators and transform/aggregate them for consumption by third party enforcement infrastructure. MineMeld has many use-cases and can easily be extended to fulfill many more.
Check <a href="https://github.com/PaloAltoNetworks/minemeld/wiki/List-of-Supported-Nodes">this page</a> for a brief list of currently supported nodes/feeds.</p>
</blockquote>
<p>With non-hype words, it’s a mean to centralize all your blacklist and scorifications in order to manage your threat prevention: it imports multiple feeds, analyze/dedup them, in order to output clean feed you’d be able to use.</p>
<p><img alt="MineMeld diagram" src="/images/2020/08/minemeld_diagram.png" title="MineMeld diagram" srcset="/assets/resized/480/minemeld_diagram.png 480w,/assets/resized/800/minemeld_diagram.png 800w,/assets/resized/1400/minemeld_diagram.png 1400w, /images/2020/08/minemeld_diagram.png 3000w" />
<br /><em class="img-legend">MineMeld diagram</em></p>
<p>The project is opensource and can be installed on a bunch of <strong>old</strong> Linux distros: the word “old” is quite important but we can deal with it. For the rest of it, I’ll provide some scripts via GitHub.</p>
<h2 id="suit-up-">Suit up !</h2>
<p>So we start with the installation of MineMeld. As said above, they officially support old distributions. Go figure! However, their doc explains a little bit the process for the installation on Ubuntu 18.04 for example. A little less old, I decide to start on it.</p>
<p>I won’t detail their installation which is done via an Ansible playbook. Rather readable, if you want to do something else, it should not be complicated.</p>
<p><img alt="The Hurt Locker - Kingsgate Films" src="/images/2020/08/minemeld_demineurs.jpg" title="The Hurt Locker - Kingsgate Films" srcset=" /images/2020/08/minemeld_demineurs.jpg 450w" />
<br /><em class="img-legend">The Hurt Locker - Kingsgate Films</em></p>
<p>Post installation, the service seems to start, but generates many errors in the logs, mainly concerning a ‘ujson’ python library. Nothing in the MineMeld documentation. However, my best friend, Google, quickly finds the answer: you have to replace the library provided by the package, by the library available in Ubuntu repositories.</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">sudo </span>apt <span class="nb">install </span>python-ujson
<span class="nb">sudo mv</span> /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so.bak
<span class="nb">sudo ln</span> <span class="nt">-s</span> /usr/lib/python2.7/dist-packages/ujson.x86_64-linux-gnu.so /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so</code></pre></figure>
<p>After a restart of the MineMeld service, everything is running smoothly and you can finally authenticate. If you are looking for the default credentials: admin / minemeld .</p>
<p>Getting to know MineMeld can take a little time. I’ll give you the first few configuration items from our use case, then let you get familiar with it. Of course, I am always available if you need my assistance.</p>
<h2 id="i-want-to-blacklist">I want to blacklist</h2>
<p>Now that the service is in place, it’s time to configure it, before you can take advantage of it on your different servers, but also to keep it up to date with your own IPs to blacklist.</p>
<p><img alt="Queen - I want to break free" src="/images/2020/08/minemeld_iwanttobreakfree.jpg" title="Queen - I want to break free" srcset="/assets/resized/480/minemeld_iwanttobreakfree.jpg 480w,/assets/resized/800/minemeld_iwanttobreakfree.jpg 800w,/assets/resized/1400/minemeld_iwanttobreakfree.jpg 1400w, /images/2020/08/minemeld_iwanttobreakfree.jpg 1920w" />
<br /><em class="img-legend">Queen - I want to break free</em></p>
<p>All scripts I provide here are available on my <a href="">GitHub account</a>.</p>
<h3 id="prepare-minemeld">Prepare MineMeld</h3>
<p>When you are logged in to MineMeld, you will see different menus:</p>
<ul>
<li>Dashboard: the home page with a reminder of your statistics</li>
<li>Nodes: to configure your different nodes (miners, feeds, aggregators, …)</li>
<li>Config: to load your various (proto)types of nodes you would like to use</li>
<li>Logs</li>
<li>Admin: to configure your users</li>
<li>System: to see how things are going from a system point of view</li>
</ul>
<p><img alt="Dashboard MineMeld" src="/images/2020/08/minemeld_dashboard.png" title="Dashboard MineMeld" srcset="/assets/resized/480/minemeld_dashboard.png 480w,/assets/resized/800/minemeld_dashboard.png 800w, /images/2020/08/minemeld_dashboard.png 1196w" />
<br /><em class="img-legend">Dashboard MineMeld</em></p>
<p>So the first step is to go to the Admin, and to manage your users for a minimum:</p>
<ul>
<li>change the admin password</li>
<li>add a user whose login and password you will use for the scripts detailed later in this article</li>
</ul>
<p>Then, let’s go to the Config, to manage the prototypes we want to have. In my case, I usually use at least the following ones:</p>
<ul>
<li>blacklist_of</li>
<li>spamhaus DROP & EDROP</li>
<li>dshield</li>
<li>wlWhilteListIPv4 (the ‘wl’ prefix is important)</li>
<li>an inboundaggregator to which I assign all the miners</li>
<li>an inboundfeedhc (for High Confidence) of feedHCGreen type</li>
</ul>
<p>To which I add my own ‘localDB’ blacklist. You can simply view/add new nodes by clicking on the list button at the bottom of the table:</p>
<p><img alt="Config list" src="/images/2020/08/minemeld_config.png" title="Config list" srcset="/assets/resized/480/minemeld_config.png 480w,/assets/resized/800/minemeld_config.png 800w, /images/2020/08/minemeld_config.png 1192w" />
<br /><em class="img-legend">Config list</em></p>
<p>The default configuration of the various nodes should be suitable for the use we detail here. However, you have to add the IPs that you don’t want to see blacklisted. To do this, simply edit the wlWhiteListIPv4 Node.</p>
<p>Be careful, the name of this node is a fake friend: it does not generate a whitelist, but just makes sure that the IPs listed there do not appear in the aggregate that you will generate at the end.</p>
<p>Finally, the last point to consult is the URL of the output stream. It is a matter of looking at the URL announced in the configuration of the inboundfeedhc Node. For practical reasons, it will be necessary to add the query ‘?tr=1’ to have a CIDR writing of the IPs. For ex:</p>
<blockquote>
<p>http://<fqdn>/feeds/inboundfeedhc?tr=1</fqdn></p>
</blockquote>
<h3 id="benefit-from-minemeld-on-linux-servers">Benefit from MineMeld on Linux servers</h3>
<p>Now that the service is setup, let’s benefit from it. Easy way, is to rely on kernel’s ipset. So don’t forget to install <code class="language-plaintext highlighter-rouge">ipset</code>.</p>
<p>I found a <a href="https://github.com/dannysheehan/iptables-ipset-blacklists/blob/master/blacklists.sh">bash script</a> that can use blacklist feed and source them to ipset (and maintain the local list based on the feed age). As the script was doing part of MineMeld job, in a very long time, I had to amend it a bit. You’ll find my version <a href="https://github.com/faichelbaum/minemeld-additions/blob/master/linux/blacklists.sh">here</a>.</p>
<p>Don’t forget to edit it with two information:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">BL_URL</code>: with the URL from your inboundfeedhc</li>
<li><code class="language-plaintext highlighter-rouge">MAIL_ADMIN</code>: with your email address</li>
</ul>
<p>You can also provision a (real) whitelist by adding IPs to /var/lib/blacklists/whitelist.txt . If you have specific IPs you want to blacklist only on that hosts, you can edit the blacklist.txt file at the same location.</p>
<p>On my end, I prefer to run this script at least once an hour, while keeping the possibility to run it on-demand.</p>
<p>On all my servers, I use <a href="https://en.wikipedia.org/wiki/Fail2ban">fail2ban</a> to parse my various logs and generate ban actions. Let’s update it with a new action: simply import the file <a href="https://github.com/faichelbaum/minemeld-additions/blob/master/linux/fail2ban-minemeld.conf">fail2ban-minemeld.conf</a> to <code class="language-plaintext highlighter-rouge">/etc/fail2ban/action.d/minemeld.conf</code> and then update your <code class="language-plaintext highlighter-rouge">/etc/fail2ban/jail.local</code>with a new value for <code class="language-plaintext highlighter-rouge">banaction</code>: ‘minemeld’. Also, import the new <a href="https://github.com/faichelbaum/minemeld-additions/tree/master/linux">ban/unban scripts</a> and you’re done after a restart of fail2ban.</p>
<p>The later scripts are to be updated with the proper fqdn and credentials to access your MineMeld API.</p>
<h2 id="thats-all-folks">That’s all folks</h2>
<p>Now, you’re set with MineMeld as a centralized blacklist management for your non-next-gen firewallis. This can also be used as a feed for the NG-FW plugin from pfSense, for instance. Yet, it can still be improved, based on your needs, as via created a real output feed for your whitelists, or with different management of the blacklists.</p>
<p>Do you consider this useful ? How would you tackle such use case ? Feel free to ping me and share your thoughts.</p>
Are you a Person of Interest ?
2020-05-26T11:35:46+02:00
https://francois.aichelbaum.com/2020/05/26/are-you-a-person-of-interest
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> Are you a Person of Interest?</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#in-the-last-episode-of" id="markdown-toc-in-the-last-episode-of">In the last episode of…</a></li>
<li><a href="#ok-that-ive-turned-paranoid" id="markdown-toc-ok-that-ive-turned-paranoid">Ok, that I’ve turned paranoid…</a></li>
<li><a href="#you-shall-not-pass" id="markdown-toc-you-shall-not-pass">You shall not pass</a></li>
<li><a href="#its-time-now" id="markdown-toc-its-time-now">It’s time now</a></li>
<li><a href="#am-i-safe" id="markdown-toc-am-i-safe">Am I safe?</a></li>
</ul>
</nav>
</aside>
<p>Of course, as an individual, you’re an interesting person. But are you a Person of Interest? By that I mean, are you a person that it is individually interesting to hack, or are you just a person who is immersed in the mass of data that the hacker has targeted? With the confinement and the video binge, the opportunity is too strong to make discover some TV series to neophytes, and to debate with them on all the questions they open. After having made discover series like <a href="https://www.imdb.com/title/tt1839578/">Person of Interest</a> (for mass surveillance and hacking), but also <a href="https://www.imdb.com/title/tt4158110/">Mr. Robot</a> (for hacking), we have a lot to do, and especially to question ourselves. So, are you a Person of Interest?</p>
<p><img alt="Mass surveillance in China" src="/images/2020/05/mass_surveillance.jpg" title="Mass surveillance in China" srcset="/assets/resized/480/mass_surveillance.jpg 480w, /images/2020/05/mass_surveillance.jpg 512w" />
<br /><em class="img-legend">Mass surveillance in China</em></p>
<h2 id="in-the-last-episode-of">In the last episode of…</h2>
<p>A short summary of these series that launched the debate, and thus this article, may be useful (thanks to Wikipedia).</p>
<p><a href="https://www.imdb.com/title/tt1839578/">Person of Interest</a> centers on a mysterious reclusive billionaire computer programmer named Harold Finch, who develops a computer program for the federal government known as “The Machine” that is capable of collating all sources of information to predict terrorist acts and identify people planning them. The Machine also identifies perpetrators and victims of other premeditated deadly crimes, but, because the government considers these “irrelevant”, he programs the Machine to delete this information each night. Anticipating abuse of his creation, Finch created a backdoor into the Machine. Tormented by the “irrelevant” deaths that might have been prevented, he eventually decides to use his backdoor to act covertly. To escape detection, he directs the Machine to provide only a tiny fragment of data: the social security number of a “person of interest”. The person may be a victim, a perpetrator, or an innocent bystander caught up in lethal events. The first episode shows how Finch recruited John Reese, a former Green Beret and CIA agent now presumed dead, to investigate the number provided by the Machine and act accordingly. As time passes, others join the team. From the beginning, the program raises an array of moral issues, from questions of privacy and “the greater good” to the idea of justifiable homicide to problems caused by working with limited information.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p><a href="https://www.imdb.com/title/tt4158110/">Mr. Robot</a> follows Elliot Alderson, a young man living in New York City, who works at the cyber security company Allsafe as a cybersecurity engineer. Constantly struggling with social anxiety, dissociative identity disorder and clinical depression, Elliot’s thought process seems heavily influenced by paranoia and delusion. He connects to people by hacking them, which often leads him to act as a cyber-vigilante. He is recruited by a mysterious insurrectionary anarchist known as Mr. Robot and joins his team of hacktivists known as <em>fsociety</em> (namely “F*ck Society”). One of their missions is to cancel all consumer debt by destroying the data of one of the largest corporations in the world, E Corp (which Elliot perceives as Evil Corp), which also happens to be Allsafe’s biggest client.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Let’s not forget <a href="https://www.imdb.com/title/tt4063800/">The Bureau</a>, and in particular its latest season, which puts a little more emphasis on hacking.</p>
<h2 id="ok-that-ive-turned-paranoid">Ok, that I’ve turned paranoid…</h2>
<p>Personally, I’ve grown very fond of these shows. Not so much for the technical aspect (far too romanticized on Person if Interest, and a few too many mistakes on Mr. Robot), but for the questions they always raise. A good way to awaken the paranoid or conspiratorial in you.</p>
<p>The first question to be generally stated is:</p>
<blockquote>
<p>But is there such a thing as mass surveillance?</p>
</blockquote>
<p>There, you just have to call back quickly, for example:</p>
<ul>
<li>China, and its <a href="https://en.wikipedia.org/wiki/Mass_surveillance_in_China">mass surveillance system</a>, as well as its capitalist drift with a <a href="https://en.wikipedia.org/wiki/Social_Credit_System">point system</a>…</li>
<li>the various revelations of <a href="https://en.wikipedia.org/wiki/Edward_Snowden">Edward Snowden</a></li>
<li><a href="https://en.wikipedia.org/wiki/Mass_surveillance_in_Russia">mass surveillance in Russia</a></li>
</ul>
<p><img alt="You're being watched" src="/images/2020/05/youre_being_watched.jpg" title="You're being watched" srcset="/assets/resized/480/youre_being_watched.jpg 480w,/assets/resized/800/youre_being_watched.jpg 800w, /images/2020/05/youre_being_watched.jpg 1200w" />
<br /><em class="img-legend">You’re being watched</em></p>
<p>We are talking about everything that is state-owned, but we should not forget private interests:</p>
<ul>
<li>the massive <a href="https://cliqz.com/en/magazine/cookies-fingerprinting-co-tracking-methods-clearly-explained">use of cookies</a> to track users through their internet browsing</li>
<li><a href="https://en.wikipedia.org/wiki/Social_login">social authentications</a></li>
<li>coverage of major groups: Google (with Android, Nest, GCP, …), Amazon (with AWS, Amazon Prime Video, Amazon Prime Photo, Amazon Prime Music, Alexa, …), Apple (with iPhone, iMac, iCloud, Siri, …), Facebook (with WhatsApp, Oculus VR, Giphy, Atlas - an advertising agency -, …)</li>
</ul>
<p>And scandals related to the (mis)use of your personal data by all these organisations regularly make the headlines.</p>
<h2 id="you-shall-not-pass">You shall not pass</h2>
<p>The second question is in general:</p>
<blockquote>
<p>But how easy is it to hack me, whether it’s my phone, my computer, or even my online banking account?</p>
</blockquote>
<p><img alt="You shall not pass!" src="/images/2020/05/you_shall_not_pass.jpg" title="You shall not pass!" srcset="/assets/resized/480/you_shall_not_pass.jpg 480w, /images/2020/05/you_shall_not_pass.jpg 537w" />
<br /><em class="img-legend">You shall not pass!</em></p>
<p>I like to answer this question in such a way as to make sure you are totally paranoid: excessively easy. Well, I admit, that kind of answer often makes me lose a part of the audience that is already between throwing the phone and the computer into the fire. But, for those who remain open, we can dig up the why.</p>
<p>If you have finished building your Faraday cage at the foot of the Green Bank Telescope, we can continue with my explanation.</p>
<p>The first answer to be given concerns the means. For those that do (see the second answer), companies spend astronomical budgets to guarantee the security of information systems. However, the result is not “is the door locked properly”, but “how long will the lock hold”. As with your armoured door. The real goal is not to prevent access, but to slow down the attacker enough so that you are warned and can take action. And very often these companies fail: just read the various daily announcements about massive data theft. So if, with their means, these companies fail, how can you be perfectly impervious?</p>
<p>The second answer concerns responsibility. So we know that your means are limited: you don’t necessarily have the knowledge or the support to do it. All too often, security measures are so restrictive for normal use that users end up competing with each other in ingenuity to circumvent them, and thus make them useless. Under these conditions, it is therefore incumbent on those who provide you with these services to guarantee their security, but also their confidentiality. This is the purpose of, for example, the <a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">GDPR</a> in Europe, or the <a href="https://en.wikipedia.org/wiki/California_Consumer_Privacy_Act">CCPA</a> in California. In the same way, they must provide you with simple (and motivating) ways to make use of any security that you may be entrusted with.</p>
<h2 id="its-time-now">It’s time now</h2>
<p>But are they all effective? What can you do? The answer varies greatly from one solution to the next, but when I hear some people take pride in having “secured” their iPhone with FaceID, I can only recall an old episode of Columbo, where the assassin’s accomplice was driving around in a car, carrying a picture of the assassin to fool the cameras. Of course, not everyone is Columbo, but what about that young boy who manages to unlock his mother’s phone with his own face?</p>
<p><img alt="Columbo's mask" src="/images/2020/05/columbo_mask.jpg" title="Columbo's mask" srcset="/assets/resized/480/columbo_mask.jpg 480w,/assets/resized/800/columbo_mask.jpg 800w, /images/2020/05/columbo_mask.jpg 1116w" />
<br /><em class="img-legend">Columbo’s mask</em></p>
<p>The first rule is to review your PIN codes and passwords:</p>
<ul>
<li>finish your son’s date of birth</li>
<li>no more 4-digit code</li>
<li>no more using your children’s names as passwords</li>
<li>no more using the same code or password everywhere</li>
</ul>
<p>So yes, it can quickly become very complicated to have an ultra-complex password (a number, a special character, a lowercase, an uppercase, a hieroglyph, an emoticon, and especially in the right order in relation to what you ask the site or application.</p>
<p>But it doesn’t matter: you still have your post-its and your notebook… … … Did you hear me yelling there?</p>
<p>If you have an excellent memory and like mental gymnastics, you still can:</p>
<ul>
<li>remember a page from your favorite religious book, and use it as a password with all the punctuation that goes with it *</li>
<li>or define a “dynamic” password: a fixed password base, that you specifically and logically complete/modify for each site.</li>
<li>put all the important dates in your life in a row</li>
</ul>
<p>Except that you will always have sites or applications for which this will not fit, and you will have to find an exception… and how to memorize it.</p>
<p>Some users are more perverse: they lie about anything at every use and as soon as the system asks them for a password again, they follow the lost password procedure. It’s almost effective, but it’s tiring.</p>
<p>Others will rely on password portfolio solutions (<a href="https://www.dashlane.com/">Dashlane</a>, <a href="https://1password.com/">1Password</a>, …). Why not! But we come back to the above mentioned aspects on responsibilities and their obligations. On your side, this can clearly simplify your life: there is only one password to memorize, and you can make it as complex as you want! But there is one important point to remember: they can sometimes send you a temporary code to your main e-mail address to make sure that it is you who is trying to access the wallet, so remember the password as well. That’s only two, but still.</p>
<p>But a password, it’s crackable. So it may take time, but since there is no such thing as zero risk, … It has to be reduced. That’s what the different techniques of [MFA] (https://en.wikipedia.org/wiki/Multi-factor_authentication) are all about:</p>
<blockquote>
<p>The use of multiple authentication factors to prove one’s identity is based on the premise that an unauthorized actor is unlikely to be able to supply the factors required for access. If, in an authentication attempt, at least one of the components is missing or supplied incorrectly, the user’s identity is not established with sufficient certainty and access to the asset (e.g., a building, or data) being protected by multi-factor authentication then remains blocked. The authentication factors of a multi-factor authentication scheme may include:</p>
<ul>
<li>Something you have - some physical object in the possession of the user, such as a USB stick with a secret token, a bank card, a key, etc.</li>
<li>Something you know - certain knowledge only known to the user, such as a password, PIN, TAN, etc.</li>
<li>Something you are - some physical characteristic of the user (biometrics), such as a fingerprint, eye iris, voice, typing speed, pattern in key press intervals, etc.</li>
<li>Somewhere you are - some connection to a specific computing network or utilizing a GPS signal to identify the location.</li>
</ul>
</blockquote>
<p>The applications listed above can help you with this, for example.</p>
<p>Okay, great, so you can “secure” access to your tools within certain limits. But what about your devices (computers, phone, …)? They are just as vunerable. Coming back to our friends Harold and Elliot, you too often leave open access to your phones: Wifi, Bluetooth, NFC, … So start by disabling them whenever possible. In the case of Bluetooth, some software versions allow to have it active (so that it connects elsewhere) but without “publishing” it. Same for the Wifi in your home.</p>
<p>Then, a good antivirus is always useful. A paying one is better. It’s stupid to say but, the advanced functions above are very useful but paying. You could always multiply the free applications that each brings a part of these functions … But this can become counterproductive in terms of security, but also in terms of performance. We then come back to the constraints that you would try to bypass.</p>
<blockquote>
<p>Yes, but <em>me</em> I’m under Mac OS, and there’s no virus or anything like that!</p>
</blockquote>
<p><img alt="Objection!" src="/images/2020/05/objection.png" title="Objection!" srcset="/assets/resized/480/objection.png 480w, /images/2020/05/objection.png 550w" />
<br /><em class="img-legend">Objection!</em></p>
<p>Just last week, I was able to demonstrate just by installing an antivirus on a friend’s Mac that it was a nice marketing illusion that had served its time.</p>
<blockquote>
<p>Yes, but when I’m on the net, I surf via a VPN</p>
</blockquote>
<p>Well, beyond the question of trust in this VPN service, a VPN is still a tunnel. Have you ever seen a road tunnel preventing a pedestrian from entering it in the opposite direction of the cars? It’s bullshit without a no, but it’s possible. So your VPN, apart from getting you to the other side of the mountain, has little use in that. And when I see the TV commercials of some people promising you privacy on the internet, I can’t help but giggle…</p>
<h2 id="am-i-safe">Am I safe?</h2>
<p>It depends. We can finally get back to the original subject: are you a Person of Interest?</p>
<p>You have now done a lot for your security: you have cut useless accesses, you don’t use Social Logins anymore, you have made your passwords more complex, you abuse MFAs, … It’s not bad. So you still have the sites and applications you use. Remember, you got out of your Faraday cage to come back on the internet to read the rest of this article. You are therefore connected to third parties.</p>
<p>I remember last year, a friend of mine was worried because he had received an email “sent by himself” (remind me to tell you about Sender Forgery and Spoofing), threatening him to “divulge he knows exactly what was found on his hard drive” unless he paid a Bitcoin ransom. So for one, this famous friend is a bit paranoid and only uses LiveUSB. And two, he doesn’t store anything because he’s unable to find anything (which can be funny in private life). Anyway, the question was: why was he targeted?</p>
<p>Well, he wasn’t actually targeted. His email was simply found in a database that was hacked, and the vile offenders decided to send emails to all known addresses found in it. After all, they would find at least one person “who knows very well what was lying around on his hard drive” and who would pay his ransom without flinching.</p>
<p>However, there is no stolen confidential data here, nor any real ransom. This is just an attempt at a mass con.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>But the point is interesting. This reminds me of the episode <a href="https://en.wikipedia.org/wiki/Shut_Up_and_Dance_%28Black_Mirror%29">Shut Up and Dance</a> of <em>Black Mirror</em>. That pretty much sums it up. If we hack you specifically, knowing you for real, there’s an interest. But this is still extremely exceptional, and no, your personal savings do not interest us. Either you’re doing something illegal, and that interests the authorities or the avengers. Either you actually have money (we are talking in billions). Or finally, you have access to interesting information (business, strategy, … always for values in billions).</p>
<p>But, again, this is an exception. The general rule is that you are just drowning in the mass of information hacked from vulnerable sites/tools. There are various ways to see if this is possible: the portfolios mentioned above, but also a well provisioned website: <a href="https://haveibeenpwned.com/">Have I been pwned?</a>.</p>
<p>My soul of great paranoid romantic prefers to stay on the idea that I am a Person of Interest, and that the Machine is watching me. And you, are you a person of interest?</p>
<p>PS: remember: You’re being watched.</p>
My neighbor is noisy
2020-04-17T10:11:46+02:00
https://francois.aichelbaum.com/2020/04/17/my-neighbor-is-noisy
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> My neighbor is noisy</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#some-quick-reminder" id="markdown-toc-some-quick-reminder">Some quick reminder</a></li>
<li><a href="#my-noisy-neighbor-is-named" id="markdown-toc-my-noisy-neighbor-is-named">My noisy neighbor is named…</a></li>
<li><a href="#my-neighbor-moves-me" id="markdown-toc-my-neighbor-moves-me">My neighbor moves me</a></li>
<li><a href="#let-me-be" id="markdown-toc-let-me-be">Let me be!</a></li>
<li><a href="#do-you-agree" id="markdown-toc-do-you-agree">Do you agree?</a></li>
</ul>
</nav>
</aside>
<p>Don’t worry, I won’t discuss about my personal neighbors during the Covid-19 confinement. Lately, several of my customers had random and difficult-to-diagnose issues with their Cloud instances. As this is not related to a specific provider (some of them are using <a href="https://aws.amazon.com/">AWS</a> while the others are using <a href="https://www.ovhcloud.com/fr/public-cloud/compute/">OVH Public Cloud</a>), the root cause remains the same. Before going into more detail, I’ll give you a quick answer: their neighbors are noisy.</p>
<p><img alt="Protesters demonstrate against Donald Trump's presidency during the campaign trail in 2016 (by AP)" src="/images/2020/04/donald-trump-protest-assault.jpg" title="Protesters demonstrate against Donald Trump's presidency during the campaign trail in 2016 (by AP)" srcset="/assets/resized/480/donald-trump-protest-assault.jpg 480w,/assets/resized/800/donald-trump-protest-assault.jpg 800w,/assets/resized/1400/donald-trump-protest-assault.jpg 1400w, /images/2020/04/donald-trump-protest-assault.jpg 1440w" />
<br /><em class="img-legend">Protesters demonstrate against Donald Trump’s presidency during the campaign trail in 2016 (by AP)</em></p>
<h2 id="some-quick-reminder">Some quick reminder</h2>
<p>Of course, you all know what the Cloud is, don’t you? So no, it’s not just your online storage, it’s not just your photo sharing. According to <a href="https://en.wikipedia.org/wiki/Cloud_computing">Wikipedia</a>, as we’re discussing especially about Cloud Computing:</p>
<blockquote>
<p>Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. The term is generally used to describe data centers available to many users over the Internet. Large clouds, predominant today, often have functions distributed over multiple locations from central servers. If the connection to the user is relatively close, it may be designated an edge server.</p>
</blockquote>
<p>Technically, those are virtual resources, easily manageable. By virtual resources, I mean a segmentation of the physical machine into different instances, dedicated to different customers. All of this at the scale of entire data centers.</p>
<p>The virtualization provided is based on usual market solutions (VMware, kvm, …) with potentially management overlay, or home-made solutions. So we talk about hypervisor for the host machine, and instance for the virtual machine.</p>
<p><img alt="Virtual Architecture" src="/images/2020/04/virtual-architecture.png" title="Virtual Architecture" srcset="/assets/resized/480/virtual-architecture.png 480w,/assets/resized/800/virtual-architecture.png 800w, /images/2020/04/virtual-architecture.png 941w" />
<br /><em class="img-legend">Virtual Architecture</em></p>
<p>The subject that interests us here is in itself neither new nor unknown to Cloud providers: they are all gradually releasing offers with “guaranteed performance” or “dedicated resources”. But why this?</p>
<p>Let’s go back to our virtual architecture: we see it as a segmentation of the host machine. Let’s replace our server by a cake and the instances by slices. So you can cut your cake into as many slices as you want, as long as there is cake. Therefore, to have more slices, you have to make them smaller. The same is theoretically true for virtualization.</p>
<p>Theoretically is the important word here: indeed, your providers bet that not all their customers were using all the resources allocated to their instances at the same time. They then decided to keep larger sizes for the instances than the host machine can handle. This is called overbooking.</p>
<p>Most of the time they are right. But the moments that make them wrong, are detrimental to you. This overbooking is predictable for you, customers, depending on the tariff of your provider: the cheaper it is, the higher the probability and the coefficient of overbooking. In addition to dedicated resources, some providers promise you an adequate infrastructure where storage would be the absolute key, through fully SSD-based storage. That’s good. But that’s not all.</p>
<div class="alert alert-success" role="alert"><i class="fa fa-check-square-o"></i> <b>Tip:</b> I can’t repeat it enough to my various contacts: no the ‘Cloud’ is not cheap and not very quickly you cost an arm and a leg.</div>
<h2 id="my-noisy-neighbor-is-named">My noisy neighbor is named…</h2>
<p>Because of this overbooking, whether it’s naturally related to the mass of instances, or specifically due to a single instance (our Noisy Neighbor), the effect is the same: you have at a given time, less resources available than expected.</p>
<p>The first question I hear most often then is:</p>
<blockquote>
<p>But how do you detect it?</p>
</blockquote>
<p>This is the most difficult part for you because, in the middle of a run, this can manifest itself in various ways, with obvious signals only in some rare cases. The other signals will simply be the direct consequences on your own service.</p>
<p>On Linux, <code class="language-plaintext highlighter-rouge">top</code> can provide one of the obvious signal. Have you ever wonder what is the <code class="language-plaintext highlighter-rouge">st</code> value at the end of the second line ? To be conciese, <code class="language-plaintext highlighter-rouge">st</code>, for “steal time”, is only relevant in virtualized environments (your Cloud setup here). It represents time when the CPU, from the host, was not available to the current instance: it was <em>stolen</em>. If you want more details about this steal time, you can refer to this <a href="https://public.dhe.ibm.com/software/dw/linux390/perf/CPU_time_accounting.pdf">tech paper</a> from IBM.</p>
<p>A recommendation to all my customers, when we work on their monitoring platforms, is to include behavior change and comparison tests. Do latency levels suddenly increase? Does the system have hangs without being loaded, and without I/O?</p>
<p><img alt="Monitoring room in China" src="/images/2020/04/monitoring.jpg" title="Monitoring room in China" srcset="/assets/resized/480/monitoring.jpg 480w,/assets/resized/800/monitoring.jpg 800w, /images/2020/04/monitoring.jpg 1200w" />
<br /><em class="img-legend">Monitoring room in China</em></p>
<p>On latency, for example, I remember one client where we worked on their content distribution services using nginx and doing some pretty advanced fine-tuning. From there, we launched tests and set up monitoring for each of the instances concerned. Very low latencies and high bandwidths, at all times, whatever the instance and the Cloud provider. Then one morning, this customer called me with a catastrophic call: all his European customers were complaining about abnormally long latencies when opening the hosted videos. The analysis tests went quite far:</p>
<ul>
<li>check the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API">navigation timing</a> values to determine what could generate these latencies: the <a href="https://fr.wikipedia.org/wiki/Time_to_first_byte">TTFB</a> increases abnormally while everything else is stable.</li>
<li>only the platform hosted in France on one provider is impacted: no abnormal latency on other providers or regions</li>
<li>no machine load (nor steal time - see above)</li>
<li>no I/O</li>
<li>low throughput of the concerned instances: 10 Mbps on average against several hundred for those with no worries</li>
</ul>
<p>While we’re testing in all directions, with no configuration changes other than juggling the nginx debugging options, the service returns to normal. The next day, around the same time, the same client contacts me again in a panic over the same subject. Same analysis, same result, same return to normal.</p>
<p>After (too) long exchanges with the support of this provider, we finally got the information: another instance was behaving abnormally and was consuming a good part of the machine resources, in particular the network part (speed and number of connections). You said peer-to-peer for last summer’s family videos?</p>
<h2 id="my-neighbor-moves-me">My neighbor moves me</h2>
<p>On the subject of the “hang system”, it’s a little more vicious and specific. A client in the video industry, does massive transcoding using ffmpeg. Part of the work is done via CPUs (the smaller resolutions) while the higher resolutions (HD / 4K in mind) are done via GPUs. The setup works well except that regularly some live streams are disturbed in an incomprehensible way, exclusively from the CPU instances. After a long analysis, the only common point of all its interruptions, both in terms of chronology of events, behaviour and logs, is the “bridle” of ffmpeg to a single CPU thread actually used.</p>
<p><img alt="Delivery guy collecting a package" src="/images/2020/04/livraison.jpg" title="Delivery guy collecting a package" srcset="/assets/resized/480/livraison.jpg 480w,/assets/resized/800/livraison.jpg 800w,/assets/resized/1400/livraison.jpg 1400w, /images/2020/04/livraison.jpg 1920w" />
<br /><em class="img-legend">Delivery guy collecting a package</em></p>
<p>We therefore focused our analytical work on understanding what could cause this behavioural change on the part of ffmpeg. After different stress-tests of the instances, only one allowed to reproduce the behavior: the I/O stress-tests at the kernel level, causing system hangs.</p>
<p>At that time, my client remembered having vaguely seen some automated storage migration emails passing by the concerned provider, at the same time as the famous interruptions.</p>
<p>So yes, another important reminder:</p>
<div class="alert alert-success" role="alert"><i class="fa fa-check-square-o"></i> <b>Tip:</b> Theoretically transparent host or storage moves are rarely transparent in practice.</div>
<h2 id="let-me-be">Let me be!</h2>
<p>The next question, they usually ask, is:</p>
<blockquote>
<p>But how do you prevent it?</p>
</blockquote>
<p>It all depends on your budget!</p>
<p>Large instance consumers allow themselves to test an instance when spawning it to make sure there are no noisy neighbors from the start. Tests are typically stress-tests specific to each instance template used, the results of which are compared to the average values of the instances considered “valid”. Automation of your entire infrastructure is key here.</p>
<p>This pre-use stage of the instance can quickly become expensive: some people have been surprised to see dozens of attempts before having a viable instance. Time being money in the Cloud world, …</p>
<p><img alt="A dog hunting" src="/images/2020/04/pistage.jpg" title="A dog hunting" srcset="/assets/resized/480/pistage.jpg 480w,/assets/resized/800/pistage.jpg 800w,/assets/resized/1400/pistage.jpg 1400w, /images/2020/04/pistage.jpg 1920w" />
<br /><em class="img-legend">A dog hunting</em></p>
<p>Most people implement corrective solutions. The monitoring (see above) is then interfaced with the automation tools and will restart a new instance to replace the one detected as disturbed.</p>
<p>This is the least expensive but can have two impacts depending on your service/infrastructure:</p>
<ul>
<li>a small delay before detection and/or relaunch</li>
<li>a service interruption if your instance is not redundant or if your load-balancer is slow to detect its unavailability</li>
</ul>
<p>Another solution would be to host your services on dedicated infrastructure when it makes sense, and consider Cloud services as overflow solutions.</p>
<h2 id="do-you-agree">Do you agree?</h2>
<p>I remember an article explaining that it was the fault of your application and not of cloud hosting. We could go back to the eternal war between Dev and Ops, but these articles usually completely overlook the monitoring aspects and therefore the observability of what is going on. Their point of view is therefore valid, but not gospel.</p>
<p>On your side, have you ever been through these setbacks? How did you react?</p>
My life with a geo-replicated GlusterFS setup
2020-03-26T17:15:16+01:00
https://francois.aichelbaum.com/2020/03/26/my-life-with-glusterfs-georep
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> Feedback on a geo-rep GlustserFS 7.3 setup</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#but-why-" id="markdown-toc-but-why-">But why ?</a></li>
<li><a href="#the-setup" id="markdown-toc-the-setup">The setup</a></li>
<li><a href="#and-then-theres-the-drama" id="markdown-toc-and-then-theres-the-drama">And then there’s the drama</a></li>
<li><a href="#did-you-think-it-was-over" id="markdown-toc-did-you-think-it-was-over">Did you think it was over?</a></li>
<li><a href="#one-more-thing" id="markdown-toc-one-more-thing">One more thing…</a></li>
</ul>
</nav>
</aside>
<p>Recently, I had to build a geo-replicated GlusterFS setup and encountered a bunch of issues due to the not-so-up-to-date documentation and the <em>unlucky thing</em>. So much time spent reviewing things and discussing with the dev team over IRC. Here’s my (recent) life with a geo-replicated GlusterFS setup.</p>
<p><img alt="My life with a geo-replicated GlusterFS setup" src="/images/ants.jpg" title="My life with a geo-replicated GlusterFS setup" srcset="/assets/resized/480/ants.jpg 480w,/assets/resized/800/ants.jpg 800w,/assets/resized/1400/ants.jpg 1400w, /images/ants.jpg 1920w" />
<br /><em class="img-legend">My life with a geo-replicated GlusterFS setup</em></p>
<h2 id="but-why-">But why ?</h2>
<p>Before we get started, it would be good if I gave you a little context. So, this is an assignment for a software company.</p>
<p>They provide their customers with large amounts of data (about 11 TB). The publisher being French, and for reasons of ease and sysadmin skills - at the time of implementation - has created all its infrastructures in France.</p>
<p>Due to the fact that they have little control over their network (provided by another service provider from which they cannot leave for the moment) and a worldwide audience (with a strong increase on the North American continent), they were forced to deploy <a href="https://www.cloudflare.com/learning/cdn/glossary/edge-server/">edge servers</a> (HTTP services allowing the local distribution of its famous 11 TB).</p>
<p>This then irremediably leads to high latencies and low throughput for these North American users. Not a very pleasant user experience, you’ll tell me about it. If we talk about numbers:</p>
<ul>
<li>Latency: <strong>2 seconds</strong> compared to <strong>0.3 seconds</strong> from France.</li>
<li>Throughput: <strong>500 kB/s</strong> compared to <strong>15 MB/s</strong> from France (and even 150 MB/s locally at storage)</li>
</ul>
<p>So they decided to call me to see how we could improve things with the following constraints:</p>
<ul>
<li>rely on the existing provider (which has infrastructure in Europe and North America)</li>
<li>with the smoothest possible future migration to make it a quick-win</li>
</ul>
<p>After an audit, we come to a decision for the following setup:</p>
<ul>
<li>local cluster in France, based on a distributed GlusterFS setup</li>
<li>Local cluster in North America, also based on a distributed GlusterFS setup, geo-replicated on the first one in real time.</li>
</ul>
<p>The interesting thing here will also be to recycle technological bricks that the editor’s team already knows about, and to stay on something quite high level: GlusterFS is an overlay to the underlying filesystem (XFS was our choice here). The GlusterFS documentation (since <a href="https://staged-gluster-docs.readthedocs.io/en/release3.7.0beta1/Administrator%20Guide/Distributed%20Geo%20Replication/">version 3.5</a>) also promises the correct operation of geo-replication over a distributed setup.</p>
<p>Please, note also that I’ll resume the operations here, not describing the minutes of each action.</p>
<h2 id="the-setup">The setup</h2>
<p>I enjoy working with Ansible to deploy my small clusters, like many DevOps. So I’m starting on it, writing <a href="https://github.com/faichelbaum/ansible-gluster">my own playbooks</a>. Be careful, the project presented on the previous link is the result of the work described here, after a little obvious cleaning, and potentially before a sequel …</p>
<p>The idea of this setup is to have the following elements:</p>
<ul>
<li>Each country has its own cluster GlusterFS (the master being in France)</li>
<li>Each cluster has two servers in <a href="https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/#creating-distributed-volumes">distributed mode</a></li>
<li>Each server has 10 disks of 4 TB available for this storage, built in software Raid type 10, formatted in <a href="https://access.redhat.com/articles/3129891#the-xfs-file-system-3">XFS</a></li>
<li>Each node mounts the cluster locally with these parameters: <code class="language-plaintext highlighter-rouge">127.0.0.1:/storage-fr /opt/self glusterfs defaults,_netdev,noatime,log-level=ERROR,log-file=/var/log/gluster.log,direct-io-mode=no,fopen-keep-cache,negative-timeout=10,attribute-timeout=30,fetch-attempts=5,use-readdirp=no,backupvolfile-server=fs-fr-02 0 0</code></li>
</ul>
<p><img alt="GlusterFS Distributed Volume" src="/images/glusterfs/distributed.png" title="GlusterFS Distributed Volume" srcset="/assets/resized/480/distributed.png 480w, /images/glusterfs/distributed.png 660w" />
<br /><em class="img-legend">GlusterFS Distributed Volume</em></p>
<p>That’s the setup at the very beginning. Now let’s live it.</p>
<h2 id="and-then-theres-the-drama">And then there’s the drama</h2>
<p>Thanks to the Ansible playbook, the entire deployment goes smoothly and without errors. So I import my 11 TB and then I admit… but not for long. It’s perfect, but a SysOps rule scares me:</p>
<blockquote>
<p>If everything goes well on the first try, you’ve forgotten something.</p>
</blockquote>
<p><em>Fortunately</em> for me, not everything is so beautiful: geo-replication doesn’t start. A glance at the geo-replication status does indeed bring me back to reality:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">gluster volume geo-replication storage-fr fs-ca-01::storage-ca status
MASTER NODE MASTER VOL MASTER BRICK SLAVE USER SLAVE SLAVE NODE STATUS CRAWL STATUS LAST_SYNCED
<span class="nt">------------------------------------------------------------------------------------------------------------------------------------------------------------------</span>
fs-fr-01 storage-fr /opt/brick root fs-ca-01::storage-ca N/A Faulty N/A N/A
fs-fr-02 storage-fr /opt/brick root fs-ca-02::storage-ca N/A Faulty N/A N/A</code></pre></figure>
<p>In fact, the startup passes the replication to <code class="language-plaintext highlighter-rouge">Active</code> and then immediately to <code class="language-plaintext highlighter-rouge">Faulty</code>. For a successful setup, I would come back. So obviously, we always start by consulting the logs first:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">less <span class="sb">`</span>gluster volume geo-replication storage-fr fs-ca-01::storage-ca config log-file<span class="sb">`</span></code></pre></figure>
<p>And here we see a beautiful log entry, extremely explicit:</p>
<figure class="highlight"><pre><code class="language-log" data-lang="log">E [syncdutils(worker
/gfs1-data/brick):338:log_raise_exception] <top>: FAIL:
Traceback (most recent call last):
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py",
line 322, in main
func(args)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/subcmds.py",
line 82, in subcmd_worker
local.service_loop(remote)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/resource.py",
line 1277, in service_loop
g3.crawlwrap(oneshot=True)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 599, in crawlwrap
self.crawl()
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1555, in crawl
self.changelogs_batch_process(changes)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1455, in changelogs_batch_process
self.process(batch)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1290, in process
self.process_change(change, done, retry)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1229, in process_change
st = lstat(go[0])
File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py", line
564, in lstat
return errno_wrap(os.lstat, [e], [ENOENT], [ESTALE, EBUSY])
File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py", line
546, in errno_wrap
return call(*arg)
OSError: [Errno 22] Invalid argument:
'.gfid/1ab24e67-1234-abcd-5f6g-1ab24e67'</code></pre></figure>
<p>First though is about a specific issue at some files. Checking the file matching the gfid, it occurs to seem valid. As an attempt to save the day, I get rid of it and restart the geo-replication. With no success at it fails the same way. Discussing with the Gluster dev team over IRC, they wonder if the amount of initial data might not be the issue. Fair enough, I get read of the data 1 TB per 1 TB, testing the geo-replication at each stage. Still no luck. As I end with a totally wiped folder, with no more data, I wondered if the changelog did not get corrupted or filled up during those test. I decide to wipe the complete cluster and attempt once again the deployment with Ansible, but without importing any data. To wipe the setup on the servers, I used the following commands:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">sudo </span>ansible fs-fr-01 <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"gluster volume geo-replication storage-fr fs-ca-01::storage-ca stop force"</span>
<span class="nb">sudo </span>ansible fs-fr-01 <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"gluster volume geo-replication storage-fr fs-ca-01::storage-ca delete reset-sync-time"</span>
<span class="nb">sudo </span>ansible fs_fr <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"echo y | gluster volume stop storage-fr"</span>
<span class="nb">sudo </span>ansible fs_ca <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"echo y | gluster volume stop storage-ca"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"dpkg -l | grep gluster | awk '{ print </span><span class="se">\$</span><span class="s2">2 }' | xargs sudo apt -y remove"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"service glusterd stop"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"umount /opt/self"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"setfattr -x trusted.glusterfs.volume-id /opt/brick"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"setfattr -x trusted.gfid /opt/brick"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"rm -fR /opt/brick/.glusterfs"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"find /usr -name '*gluster*' -exec rm -fR {} </span><span class="se">\;</span><span class="s2">"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"find /var -name '*gluster*' -exec rm -fR {} </span><span class="se">\;</span><span class="s2">"</span>
<span class="nb">sudo </span>ansible fs <span class="nt">-m</span> shell <span class="nt">-a</span> <span class="s2">"find /etc -name '*gluster*' -exec rm -fR {} </span><span class="se">\;</span><span class="s2">"</span></code></pre></figure>
<p>And as you might have expected: it failed over once again!</p>
<figure class="highlight"><pre><code class="language-log" data-lang="log">E [syncdutils(worker
/gfs1-data/brick):338:log_raise_exception] <top>: FAIL:
Traceback (most recent call last):
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py",
line 322, in main
func(args)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/subcmds.py",
line 82, in subcmd_worker
local.service_loop(remote)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/resource.py",
line 1277, in service_loop
g3.crawlwrap(oneshot=True)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 599, in crawlwrap
self.crawl()
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1555, in crawl
self.changelogs_batch_process(changes)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1455, in changelogs_batch_process
self.process(batch)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1290, in process
self.process_change(change, done, retry)
File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
line 1229, in process_change
st = lstat(go[0])
File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py", line
564, in lstat
return errno_wrap(os.lstat, [e], [ENOENT], [ESTALE, EBUSY])
File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py", line
546, in errno_wrap
return call(*arg)
OSError: [Errno 22] Invalid argument:
'.gfid/00000000-0000-0000-0000-000000000001'</code></pre></figure>
<p>This time, the gfid matches the Gluster root: <code class="language-plaintext highlighter-rouge">/opt/self</code>. How may it fails over the empty root? I review the complete setup with the dev guys and we could not find any issues with it: it correspond to the simpliest version of the documentation, without any potential permission issue as I built the setup as a root to begin with. One of them proposed to use a <a href="https://github.com/aravindavk/gluster-georep-tools">python script</a> that can do it all “<em>by magic</em>”. The tool installation and usage is pretty straight forward … but yet: no luck.</p>
<p>After several days of digging, building and wiping things, using different hardware and VMs, I asked a simple question: is the distribued setup meant to be the source of the geo-replication? Colleagial positive answer as it’s available since version 3.5, as we are at version 7.3 and none of them touch this part of the code, it <em>should</em> work. Right. <em>Should</em> is the key to it all. None of them tested this setup since the branch 4.x of GlusterFS. Or fair enough, I can build a new setup quite quickly: let’s move to a replicated setup as a source to the geo-replication… And <em>voilà</em>! Now it works perfectly fine. There was some regression at least since the branch 5.x and no once noticed.</p>
<p><img alt="" src="/images/facepalm.jpg" title="" srcset="/assets/resized/480/facepalm.jpg 480w,/assets/resized/800/facepalm.jpg 800w, /images/facepalm.jpg 1100w" /></p>
<p>Not the most perfect solution but I can still achieve the same results my customer expect. Let’s move to a new setup:</p>
<ul>
<li>Each country has its own cluster GlusterFS (the master being in France)</li>
<li>Each cluster has two servers in <a href="https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/#creating-replicated-volumes">replicated mode</a></li>
<li>Each server has 10 disks of 4 TB available for this storage, built in software Raid type 0, formatted in <a href="https://access.redhat.com/articles/3129891#the-xfs-file-system-3">XFS</a></li>
<li>Each node mounts the cluster locally with these parameters: `127.0.0.1:/storage-fr /opt/self glusterfs defaults,_netdev,noatime,log-level=ERROR,log-file=/var/log/gluster.log,direct-io-mode=no,fopen-keep-cache,negative-timeout=10,attribute-timeout=30,fetch-attempts=5,use-readdirp=no,backupvolfile-server=fs-fr-02 0 0</li>
</ul>
<p><img alt="GlusterFS Replicated Volume" src="/images/glusterfs/replicated.png" title="GlusterFS Replicated Volume" srcset="/assets/resized/480/replicated.png 480w, /images/glusterfs/replicated.png 660w" />
<br /><em class="img-legend">GlusterFS Replicated Volume</em></p>
<p>Ok we have a working setup, we can import the 11 TB. It will take quite some time. I run a simple rsync command in a <code class="language-plaintext highlighter-rouge">screen</code> without supervising it, and I’ll repeat the command over and over until the migration to be as up-to-date as possible prior to the M-Day:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">rsync <span class="nt">-PWavu</span> /mnt/old/ /mnt/new/ <span class="nt">--delete-during</span> <span class="nt">--ignore-errors</span></code></pre></figure>
<p>So far so good, the M-Day is here and we decide to proceed with the migration. We update the mount points and benefit from the same options as previously. The customer is happy as the promised performance are reach in term of latency and throughput. Meaning, I’m happy and relieved.</p>
<h2 id="did-you-think-it-was-over">Did you think it was over?</h2>
<p>A couple hours later, his biggest customer in the US reach him out as they can’t access any files. Checking the logs, I can see a bunch of HTTP codes <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200">200</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304">304</a>, so I wonder if the issue is a <a href="https://en.wiktionary.org/wiki/PEBCAK">pebcak</a> or an intermediate cache issue somewhere else: I request a couple of problematic URL to test.</p>
<p>Checking the provided URL on both FR and CA platforms, I succeed to reproduce the issue. Checking first the edge servers, they show that the files do not exists. As the platform data was up-to-date, it is pretty unclear. Comparing the same folder on both platforms, the CA instance appear … empty. But <code class="language-plaintext highlighter-rouge">df</code> reports the same volume usage. I decide to just add a simple <code class="language-plaintext highlighter-rouge">-a</code> param to my ls … and there they all are: the files exist, with the proper size, in the proper folder but instead of <code class="language-plaintext highlighter-rouge">player.json</code> (for instance), it’s named <code class="language-plaintext highlighter-rouge">.player.json.AbvgGY</code>. Weird ? Not so much as this is the format of the temp files from an rsync. But why do GlusterFS do not fix them on the CA platform as the data and naming are valid on the FR side ? Simply because it relies on a simple checksum of the content, ignoring the name of the files (it expects to track the <code class="language-plaintext highlighter-rouge">rename()</code> operation on the fly).</p>
<p><img alt="What's your name? Fuck you, that's my name." src="/images/thats-my-name.jpg" title="What's your name? Fuck you, that's my name." srcset=" /images/thats-my-name.jpg 267w" />
<br /><em class="img-legend">What’s your name? Fuck you, that’s my name.</em></p>
<p>At this stage, my guess is that something happened during the data importation leading to the wrong file being copied. Checking each cluster logs, status and details (including the <code class="language-plaintext highlighter-rouge">heal info</code>), it appears that a split-brain occured on the FR platform. Pretty logicial with only two nodes in it. Digging a bit more on the timestamps, logs, states, … At the end, a pretty race condition of multiple things:</p>
<ul>
<li>a pebcak (from me): I ran the rsync command with no specific param, leading to the creation of temp files ; I should have added <code class="language-plaintext highlighter-rouge">--inplace</code> argument to ensure using the proper name at once</li>
<li>network issues at the provider stage: kinda expected but it occured multiple times, and part during the <code class="language-plaintext highlighter-rouge">rename()</code> operations</li>
<li>GlusterFS georep being too simple: why the heck don’t they include the name in the validation of the content?</li>
</ul>
<p>So, as long as it’s simple to heal the FR cluster (both split-brain and invalid data on one node), fixing the names on the CA cluster is not obvious. There is no GlusterFS mechanism to do so, and I can’t afford waiting for a week for the data to sync again if I decide to wipe the data. From here, I come with a new idea that is just an abuse of what GlusterFS is and how to fix a split-brain situation.</p>
<p>I know that I have no more customer connections to the CA cluster as I moved them all to the FR cluster while solving the issue. To summarize the idea:</p>
<ul>
<li>GlusterFS considers that writing to a local brick (outside of GlusterFS) is an issue as it will lead to a split-brain</li>
<li>A split-brain can be resolve by reading locally the file via GlusterFS (mountpoint over 127.0.0.1) if there is no concurrent access to it</li>
<li>a <code class="language-plaintext highlighter-rouge">rename()</code> operation does not change the <em>gfid</em>, it just update the underlying link GlusterFS use</li>
<li>We know the data is valid, just the name is an issue</li>
</ul>
<p>Thanks to this, I write a quick script and run it over my folders:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="c">#!/bin/bash</span>
find /opt/brick/ <span class="nt">-name</span> <span class="s2">".*"</span> <span class="nt">-type</span> f | <span class="k">while </span><span class="nb">read </span>f<span class="p">;</span> <span class="k">do
</span>rename <span class="nt">-f</span> <span class="nt">-d</span> <span class="nt">-v</span> <span class="s1">'s/\.([^.]*)\.([^.]*)\..*/$1.$2/'</span> <span class="nv">$f</span>
<span class="nv">brick</span><span class="o">=</span><span class="sb">`</span><span class="nb">dirname</span> <span class="nv">$f</span><span class="sb">`</span>
<span class="nv">self</span><span class="o">=</span><span class="sb">`</span><span class="nb">echo</span> <span class="nv">$brick</span> | <span class="nb">sed</span> <span class="s1">'s/brick/self/g'</span><span class="sb">`</span>
<span class="nv">filename</span><span class="o">=</span><span class="sb">`</span><span class="nb">basename</span> <span class="nv">$f</span><span class="sb">`</span>
<span class="nb">echo</span> <span class="nv">$self</span> | xargs <span class="nb">ls</span> <span class="nt">-la</span> &> /dev/null
<span class="nv">dest</span><span class="o">=</span><span class="sb">`</span><span class="nb">dirname</span> <span class="nv">$brick</span><span class="sb">`</span>
<span class="nb">sudo </span>rsync <span class="nt">-a</span> <span class="nt">--inplace</span> <span class="nv">$brick</span> root@fs-ca-02:<span class="nv">$dest</span> <span class="nt">--delete-after</span> <span class="o">></span> /dev/null
<span class="k">done
</span><span class="nb">exit </span>0</code></pre></figure>
<p>Not the proper thing but efficient at least. It rename the file and ensure to solve the split-brain, before removing any invalid remaining dot file on the other node of the cluster. Neat.</p>
<h2 id="one-more-thing">One more thing…</h2>
<p>We should be fine. “<em>Should</em>”. But we are not. New issue occurs on the edge servers as a full heal is running on the FR platform. Some of them expose corrupted files that are being healed, then cache those invalid files. As they are ok on both nodes of the cluster, the issue is clearly on the edge servers. To solve it, we just need to umount/mount the Gluster endpoint. Quick, efficient. We should re-do it once the full heal is achieved.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Besides all those issues with GlusterFS 7.3, I used to run a bunch of setup based on it … until the branch 4.x included. It used to be a bit more stable/reliable. I love the solution as it’s just a new layer, allowing you to build lots of things under it or around it. When it works, it just works. But when you have issues, the logs are not your best friend. I thing this is the main issue for a larger adoption of GlusterFS at this stage: the log entries and the documentation.</p>
<p>Do you use GlusterFS to build your reliable storage or geo-replication services ? Do you struggle with it ? Feel free to ping me to discuss more about it.</p>
Is the Coronovirus your opportunity ?
2020-03-03T17:14:06+01:00
https://francois.aichelbaum.com/2020/03/03/coronavirus-your-opportunity
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> A virus ? An opportunity?</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#dependency-on-asia" id="markdown-toc-dependency-on-asia">Dependency on Asia…</a></li>
<li><a href="#dependency-on-non-education-of-the-lower-classes" id="markdown-toc-dependency-on-non-education-of-the-lower-classes">Dependency on non-education of the lower classes</a></li>
<li><a href="#what-about" id="markdown-toc-what-about">What about…</a></li>
<li><a href="#and-so" id="markdown-toc-and-so">And so?</a></li>
<li><a href="#your-opportunity-" id="markdown-toc-your-opportunity-">Your opportunity ?</a></li>
</ul>
</nav>
</aside>
<p>While the world is watching as much news about the spread of Coronavirus as it is taking its temperature, business discussions are revolving around the global economic slowdown, forcing the various Central Banks and other financial organizations to meet to agree on “solutions”. What if the situation is actually your opportunity?</p>
<p><em>Inspired by some questions from my contacts as a Freelancer</em></p>
<h2 id="dependency-on-asia">Dependency on Asia…</h2>
<p>I don’t think there is any need to linger on the news channels to know/understand how much we are now dependent on Asia (China, Taiwan, Japan, …). Indeed, between processors and micro-controllers foundry, manufacturers of electronic equipment, the various low-cost supplies (who is talking about the FFP2 mask components from China?)… we have such a dependency that our economy is directly affected.</p>
<p>As recently as yesterday, one of my former colleagues, who was retrained in the supply of fibre-optic networks, seemed to be somewhat concerned about the situation and the risk to his business if he could no longer supply himself with network hardware. This point is collegially taken up by various service providers whose equipment comes from Asia. If the virus continues to spread as it does, many other industries will come to a standstill, also in Europe or the Americas.</p>
<p>Many economists are therefore pointing the finger at the notorious globalisation that would have pushed us to produce ever cheaper, and therefore ever further. To this, they oppose as a solution to relocate, closer to the places of consumption: the also famous, near-shoring. However, hadn’t we avoided it precisely for reasons of cost, (un)skills, and also for reasons of calculating risks and other opportunities by saying to ourselves “if things go wrong, we’ll find another cheap solution”. To that, I would reply that they do not learn from their own mistakes.</p>
<h2 id="dependency-on-non-education-of-the-lower-classes">Dependency on non-education of the lower classes</h2>
<p>Today, if we look at our countries, the sectors most at risk because of potential containment are the industrial sectors, with a large workforce at very low cost. The same sector that we were looking to replace with offshoring in Asia, and that we now want to upgrade (conceptually) with near-shoring.</p>
<p><img alt="Cutting your costs in half!" src="/images/2020/03/outsourcing-is-bad.jpg" title="Cutting your costs in half!" srcset=" /images/2020/03/outsourcing-is-bad.jpg 460w" />
<br /><em class="img-legend">Cutting your costs in half!</em></p>
<p>However, it is this same workforce, unskilled, often poorly educated, that is at the origin of the various populist movements that we have seen emerge in recent years. This is the same class that we continue to feed with fears and no real solutions, other than to tell them that we are protecting them and that the risk is low, or that we should not panic.</p>
<p>My professional deformation makes me ask myself a question: how is this answer a solution? It is relatively simple: it is not. Indeed, as with our dependency on Asia, we do not look at the original concern that motivated this or that action: we focus exclusively on factors of consequence. For us technically, this is our famous RCA.</p>
<p>Why is this situation with the lower classes a concern and is related to their non-education? The answer can be broken down, mainly, as follows:</p>
<ul>
<li>Non-education (for reasons of means, gentrification, …) reduces their ability to rise outside the pre-established framework.</li>
<li>non-education will push them towards jobs with little added value and where they themselves have little added value: a robot would do just as well…</li>
<li>this work forbids them any possibility of remote work.</li>
<li>the low remuneration they earn prevents them from having access to better information (we will come back to this later), but also to quality solutions in the field of health care, e.g., the use of the Internet.</li>
</ul>
<p><img alt="The sewing room of A.T. Stewart's in 1875" src="/images/2020/03/lower-classes.jpg" title="The sewing room of A.T. Stewart's in 1875" srcset="/assets/resized/480/lower-classes.jpg 480w,/assets/resized/800/lower-classes.jpg 800w,/assets/resized/1400/lower-classes.jpg 1400w, /images/2020/03/lower-classes.jpg 3238w" />
<br /><em class="img-legend">The sewing room of A.T. Stewart’s in 1875</em></p>
<h2 id="what-about">What about…</h2>
<p>I’ll grant you, it’s not all bad. Many companies already offer their employees remote working as a preventive measure. However, far too few are taking the plunge, for a variety of reasons:</p>
<ul>
<li>it’s too complicated (we’ll come back to this later).</li>
<li>you lose the human side (really?)</li>
<li>it’s because of insurance (do you think?)</li>
<li><em>or it could simply be because of a lack of trust</em></li>
</ul>
<p><img alt="Are you really working from home?" src="/images/2020/03/remote-working-pool.jpg" title="Are you really working from home?" srcset="/assets/resized/480/remote-working-pool.jpg 480w,/assets/resized/800/remote-working-pool.jpg 800w, /images/2020/03/remote-working-pool.jpg 931w" />
<br /><em class="img-legend">Are you really working from home?</em></p>
<p>Of course, conditions and means have to be put in place, but as long as the job is suitable, nothing is unfeasible. This becomes all the more ironic when the companies refusing this teleworking are hosting companies or network operators.</p>
<p>For the record, this reminds me of a situation at a major French telecom operator a few years ago. I was <em>normally</em> working from the Paris HQ, to work on datacenter equipment, located in the suburbs. When, for practical as well as human reasons, I preferred to work from the said datacenter, I almost received a reprimand for not coming to the office and performing unofficial remote working. The datacenter belonged to the company and we had complete control over the video surveillance, so it was easy to check whether I was working on site or not.</p>
<p>Here, we went from one extreme, with the factory, to the other, with a specific case of DevOps. But what about all the small convenience stores, for example? Of course, it’s clearly not that obvious. Still, for administrative matters, the means exist. More and more are getting available over internet: lately I registered myself for the next elections within minutes and received my voter card in the next couple of days.</p>
<p>And what about our software? See the <a href="https://www.cnet.com/news/huawei-ban-full-timeline-us-government-china-trump-ban-security-threat-google-p40/">Android case with Chinese Huawei</a>? Opensource might be your solution in most of the situation. In France, you can rely on the <a href="https://www.april.org/">April</a> association (I’m also a member there) to assist you on those matters.</p>
<h2 id="and-so">And so?</h2>
<p>Careful, now. Here I only give possible angles for reflection. These are not absolute truths and I would not claim to be a perfect economist. It is only part of my strategic vision to respond to many concerns. These concerns, I will address them afterwards in the form of small questions. To do so, I would try some parallels with subjects that I master better, because they are related to my daily professional life.</p>
<h3 id="how-can-you-not-be-dependent-on-asia">How can you not be dependent on Asia?</h3>
<p>The real question here would be rather: how to stop being dependent? So, I’m cutting down on any preconceived notion that you have to be self-sufficient:</p>
<ul>
<li>It’s a heresy of our nature: mankind has always done great things because of its communities…</li>
<li>the self-sufficient seeks to reduce the definition of our essential needs in order to remedy them; this leads irremediably to a problem: each of us cannot have access to the whole range of resources essential to our own sufficiency and ends up depending on a third party… <a href="https://www.youtube.com/channel/UC4E1gPBh0_eJ5oftWVsewZA">or not</a>…</li>
</ul>
<p>So yes, the real question is how to avoid (harmful) dependency. The point is precisely in one of the reasons that invalidates self-sufficiency: everyone needs his neighbour because we still don’t have access to the same resources. The solution is therefore to multiply the sources of supply for each type of resource. In our daily work, this is the basis for redundancy:</p>
<ol>
<li>We had a single server with a single disk…</li>
<li>we have multiplied the disks and power supplies of the PC to guarantee its operation</li>
<li>we have multiplied the servers to ensure the loss of a</li>
<li>we have multiplied the connectivity with the internet to ensure the loss of a link</li>
<li>we have multiplied the points of presence (datacenter) to guarantee the loss of a physical site</li>
</ol>
<p>In other areas, this redundancy is omnipresent: be it organizational, procedural, procurement related, … So why is it that in our economy and our business strategy, we persist in having only one supplier? This is the primary reason why offshoring and near-shoring alone is not the answer.</p>
<p>So yes, you could tell me that multiplying supply contracts reduces the mass agreement with a single supplier, and therefore costs a little more in the end. But how much is your addiction costing you? Today, because of containment and non-supply, you’re in danger of going out of business. Tomorrow, your dependency will give your supplier the power to change the situation and put the knife to your throat. Of course, you will still be able to leave, but at what price. What guarantee do you have that other <del>vultures</del> won’t try to kill you?</p>
<h3 id="is-near-shoring-a-good-thing-">Is near-shoring a good thing ?</h3>
<p>When we talk about near-shoring, we are talking mainly about local industrial production, not about small local shops. So yes, clearly, it does not solve everything, but it does bring some benefits:</p>
<ul>
<li>it provides work locally</li>
<li>it reduces the product transportation chain, and the pollution associated with it</li>
<li>in the case of foodstuffs, this could avoid certain phenomena where “local” products for exporters have reached astronomical prices for local populations (i.e. <a href="https://www.theguardian.com/lifeandstyle/2017/aug/06/mexico-considers-importing-avocados-as-global-demand-drives-up-prices">avocados</a>)</li>
</ul>
<p>However, since we are talking about industry, we are generally talking about cheap, unskilled/educated labour. Reversing or intensifying near-shoring, therefore means intensifying the use of this labour force and thus favouring its deep rooting in this “cheap and unskilled” situation, generating a nice vicious circle. Are we talking about recent popular movements all over the world, including in France?</p>
<p>I wonder, then, about one of the main promises of the industrial revolution, which we are continuing today, no matter what anyone says: automate what can be automated. I’m not referring to automating to increase production capacity. I am referring to automating to reduce repetitive human actions.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Whether it’s about home automation, robotic chains, Internet of Things, … so many ways and approaches precisely to rely on automation. For all that, it is not the disappearance of the human on these roles, but rather an obligation of evolution: even if we consider that <a href="https://www.microsoft.com/en-us/research/publication/deepcoder-learning-write-programs/">an AI would be able to generate code</a>, it remains essential that a human remains the master of the code, i.e. the definition of the action, the design of the robot, … That there be assistance, yes, but not replacement. If you want one entrepreneur who talks about it…</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>In the same way, for corrective maintenance, improvements, problem analysis, … All this must require a <em>human factor</em> intervener for the analysis. The answer to the previous problem of the situation of the lower classes is therefore to promote their education and access to information.</p>
<h3 id="remote-working-versus-daily-obligations-">Remote working versus daily obligations ?</h3>
<p>When working remotely or, even worse, in forced confinement, the population is exposed to isolation and supply complications. Moreover, recent fears in certain regions of France have motivated local populations to obtain mass supplies of non-perishable foodstuffs, thus producing a small shortage effect that could be managed quite differently.</p>
<p>Massive remote-working at the level of a community (i.e. far beyond a company) has the effect of amplifying any sense of isolation, but also the fear that the media can convey.</p>
<p>Here again, access to clear and accurate information helps to compensate for the latter. On the other hand, with regard to isolation, it is necessary to distinguish between different cases.</p>
<p>In the case of isolation from local shops, online shops can set an example. Of course, this may be easier for the big players (supermarket chains, major e-commerce sites such as Amazon, …) but the small business can have so many possibilities:</p>
<ul>
<li>take advantage of marketplaces: after all, a good part of Amazon’s revenue on its site comes from its intermediary model; other sites also exist, more or less specialized (i.e. <a href="https://www.etsy.com/">Etsy</a> for handicrafts)</li>
<li>use turnkey SaaS solutions: <a href="https://shopify.com/">Shopify</a>, <a href="https://www.wix.com/">Wix</a>, …</li>
<li>rely on local delivery services with food as a good example: UberEats, JustEat, Frichti, …</li>
</ul>
<p>And here I’m only mentioning a few 2.0 solutions. What about all the old-fashioned solutions that continue to exist as:</p>
<ul>
<li>mobile libraries</li>
<li>delivery of bread</li>
<li>pizza trucks</li>
</ul>
<p>And for your supermarket habits, solutions already exist:</p>
<ul>
<li>online supermarket with drive-in</li>
<li>online supermarket with delivery</li>
</ul>
<p>Then, what about the doctor and any medical care? Online consultations are already a reality in France, officially supported by <a href="https://www.ameli.fr/assure/remboursements/rembourse/telemedecine/teleconsultation">social security</a>. Of course, this only allows an initial filtering for benign concerns, but it can make medical practices and emergencies so much lighter, while at the same time compensating for some medical deserts. Likewise with meds e-commerce websites.</p>
<p>Yet another case would be about the upbringing of our dear little blonde heads in all this? The subject is indeed a little more peculiar. Where MOOCs and other online course solutions may be suitable for the vast majority, it’s not so easy for young children.</p>
<p>Mainly because some learning techniques, such as Montessori, show that it is through the effect of community mixed with mimicry and the desire to learn, that our children learn best. The other important point of these teachings is that this group of children must be restricted, contrary to the unwanted trend of “normal” education which wants to have 35 children per class.</p>
<p>The application of these methods, in small groups, thus makes it possible to return to a very local aspect, even in villages with low density. This point is also related to the previous topic on the middle classes. It is one of the possible ways of providing access to better education. Before going on to specializations that can be done, among others, through the MOOCs.</p>
<p>Finally, what about the human side, then? I’d say you have free will to choose the best way to maintain your relationships. I would cite for example a solution to keep in touch with your elderly relatives: <a href="https://www.sunday.love/">Sunday</a>.</p>
<h2 id="your-opportunity-">Your opportunity ?</h2>
<p>How is this an opportunity for you? Quite simply because it is up to everyone to step in and do what they can to make it happen. There is a range of solutions for every question you may have. This can potentially improve your living environment and even the famous work-life balance.</p>
<p>Also, containment in China, for example, certainly has an impact on their economy, and by rebound, on ours, but also and above all on pollution and therefore ecology.</p>
<p><img alt="Satellite imagery shows a drop in air pollution over central and eastern China following a government imposed coronavirus quarantine. (NASA Earth Observatory/Joshua Stevens)" src="/images/2020/03/coronavirus-china-pollution.jpg" title="Satellite imagery shows a drop in air pollution over central and eastern China following a government imposed coronavirus quarantine. (NASA Earth Observatory/Joshua Stevens)" srcset="/assets/resized/480/coronavirus-china-pollution.jpg 480w,/assets/resized/800/coronavirus-china-pollution.jpg 800w,/assets/resized/1400/coronavirus-china-pollution.jpg 1400w, /images/2020/03/coronavirus-china-pollution.jpg 1600w" />
<br /><em class="img-legend">Satellite imagery shows a drop in air pollution over central and eastern China following a government imposed coronavirus quarantine. (NASA Earth Observatory/Joshua Stevens)</em></p>
<p>Fighting against containment through old and new means; promoting teleworking, while trusting in the professionalism of employees; improving education through new methods; … are all answers for a brighter future.</p>
<p>What more do you think you could do today to turn this situation into an opportunity? Feel free to contact me to discuss it. I surely have some solutions to submit to you for your connected issues.</p>
Agile and Infrastructure
2020-02-24T09:11:25+01:00
https://francois.aichelbaum.com/2020/02/24/agile-and-infrastructure
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> What?</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#agile-" id="markdown-toc-agile-">Agile ?</a></li>
<li><a href="#infrastructure-" id="markdown-toc-infrastructure-">Infrastructure ?</a></li>
<li><a href="#and-so-" id="markdown-toc-and-so-">And so ?</a></li>
<li><a href="#making-the-infrastructure-agile" id="markdown-toc-making-the-infrastructure-agile">Making the infrastructure agile</a></li>
</ul>
</nav>
</aside>
<p>Recently, I had a rather interesting discussion with some of my clients over Slack: Agile processes applied to Infrastructure. At the beginning, we did not reach a common ground, but we quickly realized that the problem was not our approaches, but our vocabulary. Agile? Infrastructure? Once we agreed on these terms, the discussion took on a completely different form. Here is a short summary.</p>
<h2 id="agile-">Agile ?</h2>
<p>Often, when we talk about Agile, we talk about agility. It is assumed that it is about being flexible in our actions and reactions. It is mainly a mix between a mindset, a culture, an approach and above all a paradigm.</p>
<p>Defined in the <a href="https://agilemanifesto.org/">Agile Manifesto</a>, this approach to project management is the opposite of traditional approaches such as the V Cycle or cascades. The short version is that these traditional methods lead irremediably to a tunnel effect, which can have disastrous effects on both the project and the client relationship. Conversely, the Agile approach proposes to reduce this tunnel effect as much as possible in order to allow better transparency, through an iterative and incremental process.</p>
<p>So the key elements are there: <strong>transparency</strong> and <strong>iteration</strong>. From this, many other concepts will derive, related to the different methods but also to the contexts of applications. Many sites and books will describe them much better than a few lines on this blog.</p>
<h2 id="infrastructure-">Infrastructure ?</h2>
<p>An infrastructure is a set of interconnected elements that provide a framework to support the entire structure. As such, it is not just the network or system, but a collection of these elements and many more, to be considered in context. In the case of a team, we will have to talk about, for example, NetOps, DevOps, SRE, Architects, Infrastructure Engineers, … All working on the same subject, with different angles, and therefore different needs and means: their daily tasks, depending on their position and the context, will range from pure Run, to R&D applied to infrastructure.</p>
<h2 id="and-so-">And so ?</h2>
<p>Okay, so let’s go back to our original discussion. Why talk about Agile and Infrastructure? We had different points of view together (I arrived during the discussion) and the central point was about the ability of “Infrastructure” teams to work in an Agile way.</p>
<p>One of the participants, who manages an operational team, therefore pure Run, did not see how Agile could be applied to the Run. The other, an R&D manager, was suffering from blockages from an Infrastructure Engineer who had joined his team after years of working on Run. The last one was managing a team that did both R&D and Run, and especially managing a rather junior DevOps that he was happy to model as he went along.</p>
<p>Depending on the interlocutor, it was more or less possible to apply the Agile approach to Infrastructure and that if someone couldn’t do it, it was simply their fault. Rather abrupt.</p>
<p>In fact, we must remember that in the professional world, it is our experience that models us. So you have to look at the current tasks to be performed but also at the past tasks of the people who will be working there. A person who has never worked in project mode will potentially find it more difficult to integrate into a project mode than someone who has been in it since the beginning of his or her career. And in Infrastructure, there are a lot of opportunities to work in project mode, but also a lot not to.</p>
<h2 id="making-the-infrastructure-agile">Making the infrastructure agile</h2>
<p>So the real point is there: apply the Agile approach only when necessary, on the project, with people who have an approach to the subjects compatible with the two key elements.</p>
<p>Indeed, we could try to apply Agile methods to the Run, but this will not concern the core business rather than more related topics (documentation, debug tests, …). In the same way, a person whose experience has taught him how to look directly for the right final solution, even though he will spend a long and unmeasured amount of time on it, will not easily be able to work in incremental iterations, more time-limited.</p>
<p>This is the point that I sometimes have fun stygmatizing with my clients to trigger reflection. I then caricature by talking about the American approach of a startup, ready to do anything and question itself the next day with a complete turnaround; versus the French approach, much more posed, and which will only deliver once perfection is reached.</p>
<p>So it comes down to the fact that we can work in project mode, according to the Agile approach, with teams that are used to working iteratively and incrementally. The basics. In reality, therefore, we can come up against other problems:</p>
<ul>
<li>a non-compatible mindset</li>
<li>a lack of method or disagreement on method</li>
<li>an inability to sequence work to make it iterative and incremental</li>
</ul>
<p>On the first two points, an Agile coach is the best way to find an answer. Indeed, the Agile coach will make sure that both the mindset of the team, but also the coaching structure allows this work in Agile. In the same way, he will often overflow on the means made available. He will then continue the work on the method, because in the Agile approach, each implementation comes with its own method and its own framework that will serve as a basis for its integration. The Agile coach will accompany you on the choice of the right approach and the right method, which will help to remove barriers.</p>
<p>On the difficulty of sequencing the work on the part of one of your collaborators, the work will be more on your side as a mentor of your team to accompany him or her. Although this long work requires an enormous capacity for hindsight on the part of the collaborator, who must change his way of doing things, it is your responsibility to place yourself as a benevolent coach and to find the right words to get your collaborator to put himself in the best possible frame of mind. There is always a risk of complete blockage, because it is still human, but it is up to you to persist and remain … agile. Act, Fail/Success, Iterate.</p>
<p>Why is it interesting to work with the Agile approach on Infrastructure?</p>
<ul>
<li>Deploy faster more often, which requires standardizing your work (this is one of the bases of the DevOps mentality)</li>
<li>Gain in flexibility: whereas in the past, the infrastructure was relatively fixed in the long term, here the actions are only valid for a short period (before being called into question).</li>
<li>Continuous feedback: the basis of the Agile approach, feedback from users/customers/employees comes in all the time, during the course of the project.</li>
<li>Continuous improvement: because of the above points, you have gained the opportunity to improve continuously, with each new iteration.</li>
</ul>
<p>In the end, you will reduce the risk of having to call into question the entire infrastructure put in place, and by extension, the major and very costly revamps that we are familiar with.</p>
<p>And you, do you think it is possible to work on Infrastructure topics using an Agile approach? Feel free to contact me to discuss it.</p>
Only 3 types of CTO?
2020-01-15T16:17:17+01:00
https://francois.aichelbaum.com/2020/01/15/only-3-types-of-cto
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> What?</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#the-hacker" id="markdown-toc-the-hacker">The Hacker</a></li>
<li><a href="#the-stabilizer" id="markdown-toc-the-stabilizer">The Stabilizer</a></li>
<li><a href="#the-industrializer" id="markdown-toc-the-industrializer">The Industrializer</a></li>
<li><a href="#so" id="markdown-toc-so">So?</a></li>
<li><a href="#vp-engineering" id="markdown-toc-vp-engineering">VP Engineering</a></li>
<li><a href="#cio" id="markdown-toc-cio">CIO</a></li>
<li><a href="#cto" id="markdown-toc-cto">CTO</a></li>
</ul>
</nav>
</aside>
<p>For a few months now, there have been a lot of articles explaining that there are 3 types of CTO: the hacker, the stabilizer, and the industrializer. Although accurate in substance, these articles are incomplete when we go into practice. But why is that?</p>
<p>Let’s start by going over these three types again.</p>
<h2 id="the-hacker">The Hacker</h2>
<p>You have just created your startup and you are looking to deliver your product as soon as possible with your famous MVP that will allow you to make yourself known and really launch your business. To do so, your company relies on a very limited number of people, whose role boundaries are relatively fluid. This allows you to gain flexibility and to do as much as possible with as little as possible. This schema also applies to your technical referent: once architect, one “hands-on”, he will go through phases to tackle technical related matters. Your referent finds himself having to touch everything, but never 100%, since you can’t know everything, or do everything alone. Doesn’t the saying go “to go fast, go alone; to go far, go together”?
This profile is therefore all-rounder, passionate more than experienced: it will allow you to go fast, even to take shortcuts, but it will work … for the MVP.
The risk for this type of profile is to persist too long in this type of role. Indeed, he will certainly gain experience, but his expertise will be to always want to do everything, alone, and quickly. It will then become difficult for him to delegate or even manage.
To the extreme, he will develop an aura of saviour/messiah within your company, and will monopolise speaking time (and reflection time) with your tacit and silent agreement.</p>
<h2 id="the-stabilizer">The Stabilizer</h2>
<p>Your MVP was launched a few months ago now, your business model is being refined, after a few turnarounds, and your situation is motivating the company and the product to grow. So it’s time to hire and to assess the situation. This step is often perceived as painful or risky, because it involves questioning everything that has been done so far. Why painful? Because no one is “wired” in the same way and, because of the personal commitment required to create an MVP, some will take these questions as a challenge to themselves. However, in order to stabilize the product, and to prepare its scalability, i.e. your ability to accelerate your business development and attack new markets, it is essential to know your strong points, on which you will rely, and your weak points, which you will correct. It is therefore necessary to treat everything in the same way and manage to motivate and structure your teams accordingly.
On technical subjects, this will naturally be the role of the CTO. Structuring the team, from a human and managerial point of view, implementing adapted processes and methodologies, he will gradually nose up to become the orchestrator of the technique. Where the hacker was managing alone, the stabilizer will have to orchestrate to make sure to find the right balance between new features, patches, and stabilizations, these last two subjects having strong impacts on the morale of the teams, and thus the quality of their rendering.
The risk of this type of profile is linked to the ambivalence between the technical aspect, since the team remains relatively small, and the time needed to structure the whole. In case of imbalance, he would then fall into one of the other two profiles, which would not be in adequacy with your company, and thus your need.</p>
<h2 id="the-industrializer">The Industrializer</h2>
<p>Now that your company has made a place for itself on the market and is well known, your work continues: it is time to become the absolute reference and to project yourself to several versions/iterations of your product in advance, the famous long term vision. This is the moment when your company sets up its ComEx, when the teams are counted in several dozen and you want/need to add a 0 to the number of employees to realize your plan. Your CTO must then let go, officially at least, of the technique to focus on the strategy and how to get there. You are entering an era where the long-term technical orientation will merge with the vision of future technological developments mixed with the evolution of your market. Everything has to be formalized; the roadmap is then done over several years, where it was defined over a few months; the teams become specialized, needing to improve exchanges between teams and individuals, through human management, processes, … any useful tool for these purposes. Your CTO is therefore at work on strategy, competitive analysis, an in-depth work of your company to find the levers necessary for your commercial success.
The risk of this profile is to be too disconnected from technology, to lose touch with technological advances and to be drowned in hypes. The direct consequence would be that the technical teams would no longer have faith in him, with all that this can have as an impact on their productivity but also on the pure realization of his strategy.</p>
<h2 id="so">So?</h2>
<p>Since these definitions are relatively fair, clear and, on paper, non-exclusive, where is the lack? These various articles have been written for “pure players”, i.e. editors of solutions that will be exclusively usable on the web, and where the role of CTO is relatively unique, and that it will be the same person who will manage your internal and external issues. This is a simple echo of a growing trend where some companies are no longer able to distinguish the roles and missions of each, with the direct consequence of having several CTOs in the same structure. I have had the opportunity to note this point several times recently with, for example, an agency that recruits a CTO for one of its clients, and who will have to work in pairs with the CTO in place, each sharing specific but related subjects. But then, what are these missions that require different titles?</p>
<p>The list is long but we could mention the management of your IS, especially if your company starts to develop on several different locations, the management of your R&D, especially with the diversification of technologies, the operational with the support of the customer, the product and its roadmap definition, … Of course, the boundaries are not watertight between these topics, especially depending on the size of your company, but for all that, titles exist to clearly mark the distinction: CTO, CIO, VP Engineering, VP Operations, VP Products, … At some point, your CTO will assume all these roles (the Hacker in this case), but the more you move towards a stabilizer, even an ndustrializer profile, the more he will need support. Depending on his profile, he will refer you to one or the other of these roles as a complement. So who has to do what in this story? Let’s focus on the 3 most technical roles: CTO, CIO and VP Engineering. As much as the difference may seem obvious between the last two, their proximity to the first one adds a significant blur. So let’s dig into their missions</p>
<h2 id="vp-engineering">VP Engineering</h2>
<p>Simply put, he’s your R&D boss. As a former engineer who rose through the ranks, passing through lead developer and architect roles, he has also developed an ability to manage people. As an internal technical referent in your R&D, he is the person your company relies on to transform the defined strategy into a real product.</p>
<h2 id="cio">CIO</h2>
<p>Do you have an internal IT or infrastructure to manage? The IOC is your boss on these matters. He is the face that everyone in your company knows when it comes to IT and related topics: security, cloud, automation, … At the crossroads of all the other professions in your company, even the non-technical ones, he will make sure that your IT teams guarantee the quality of service necessary for the proper functioning of your product and your company itself. Because of its positioning, it will often have a strong impact on your processes and methodology.</p>
<h2 id="cto">CTO</h2>
<p>This is the technical face of your company. As a technical referent for the whole company, with priority given to business issues, it must stay up to date technically, so that it can respond to your customers and your board, while guiding product development.
How is he not your VP Engineering? Because he has to be able to keep his hacker and hacking side to test and therefore stay up to date, where your VP Engineering has to move forward in accordance with your roadmap and little opportunity to play.
How is he not your CIO? I will repeat the discussion I had with the CEO of a large transport group: what is your job and therefore on which technique will your CTO intervene?</p>
Are you struggling with Nginx rewrite rules and $ ?
2018-05-18T15:37:57+02:00
https://francois.aichelbaum.com/2018/05/18/struggling-with
<figure class="highlight"><pre><code class="language-nginx" data-lang="nginx"><span class="k">rewrite</span> <span class="s">^/that-s-my-original-uri/(with-my-folder)/(.*)</span>$ <span class="n">/that-s-my-destination</span>$<span class="nv">$1</span><span class="n">/</span><span class="nv">$2</span> <span class="s">last</span><span class="p">;</span></code></pre></figure>
<p>See the <code class="language-plaintext highlighter-rouge">$$1</code> ?</p>
<p>Are you trying to use a <code class="language-plaintext highlighter-rouge">$</code> in the destination of your rewrite rule ? Then you may have try escaping it, and found out you can only do it via some LUA scripting you might not want or a third party plugin that you can’t use for X or Y reason. The constant result of this situation ?</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">nginx: [emerg] invalid variable name in /etc/nginx/sites-enabled/XXXXXXXX:YYY</span></code></pre></figure>
<p>Ok so what’s next ? The idea would be to host the <code class="language-plaintext highlighter-rouge">$</code> inside a variable. Sadly, the <code class="language-plaintext highlighter-rouge">set</code> argument does not allow this and will reject you with the same error. The solution would be to use <code class="language-plaintext highlighter-rouge">geo</code> in your nginx.conf and replace use the key:</p>
<figure class="highlight"><pre><code class="language-nginx" data-lang="nginx"><span class="k">geo</span> <span class="nv">$dollar</span> <span class="p">{</span>
<span class="kn">default</span> <span class="s">"</span>$<span class="s">"</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p>and then</p>
<figure class="highlight"><pre><code class="language-nginx" data-lang="nginx"><span class="k">rewrite</span> <span class="s">^/that-s-my-original-uri/(with-my-folder)/(.*)</span>$ <span class="n">/that-s-my-destination</span><span class="nv">$dollar$1</span><span class="n">/</span><span class="nv">$2</span> <span class="s">last</span><span class="p">;</span></code></pre></figure>
<p>And, <em>voila</em> !</p>
Chrome, Aw Snap and HTTP2
2016-06-15T09:47:57+02:00
https://francois.aichelbaum.com/2016/06/15/chrome-snap-and-http2
<p>On a global purpose of optimisation of my website, I lately added some features and enhanced the HTTP2 delivery of the website. The performance restults are instantaneous. But, as there is always a but, it generated some random issues … with Google Chrome (and it’s opensource pendant, Chromium).</p>
<p><img alt="" src="/assets/screenshot-aw-snap-error-chrome.jpg" title="" srcset="/assets/resized/480/screenshot-aw-snap-error-chrome.jpg 480w, /assets/screenshot-aw-snap-error-chrome.jpg 729w" /></p>
<p>The consequence of the bug was a almost random “Aw, Snap !” page : every time I clicked on an internal link or upon one load out of two. And only with Chrome and Chromium. First asumption as it only occurs with a specific browser, it was a code issue : either HTML or, more probably, JS. I started debugging the code with no luck about this one. I decided to create two very simple HTML page with just a basic HTML link towards each other. Again, no luck.</p>
<p>Then, I guessed : when I get the “Aw, Snap” page, the DevTools in Chrome report just nothing besides the SSL details. No URI called. No JS console. Nothing else. So, I decided to debug the SSL part. A review thanks to <a href="https://www.ssllabs.com/ssltest/analyze.html">Qualys</a> reported no issue and even granted an A score to the website (via the CDN and via the origin also). As the late changes were about HTTP2, I decided to test the HTTP2. First, I disabled it from the CDN side. But as the page was in cache, no change resulted from this. Then I debugged the HTTP2 using several tools as <a href="https://github.com/bradfitz/http2/tree/master/h2i">h2i</a> or <a href="https://github.com/fstab/h2c">h2c</a>. Again, every thing when fine.</p>
<p>So, I decided to go through the web (GI<em>M</em>F). I found pages about the NPN not being supported any more <a href="https://ma.ttias.be/chrome-drops-npn-support-for-http2-alpn-only/">by Google</a>, so I decided to update my nginx, by recompiling it against openssl 1.0.2 instead of the basic openssl 1.0.0 branch as it is from the various defaut packages ; this enabled the ALPN but did not solve my case.
Then, I review my whole nginx config, to check about all the HTTP2 settings. Testing one by one. And … I found it :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">Link</span>: </<span class="n">images</span>/<span class="n">banner</span>-<span class="m">1024</span><span class="n">x240</span>.<span class="n">jpg</span>>; <span class="n">rel</span>=<span class="n">preload</span>; <span class="n">as</span>=<span class="n">image</span> </code></pre></figure>
<p>And there we are : removing this HTTP header from the delivery of HTML pages solved it all. Now this header might not seems harmful. This is one of the new Headers from HTTP2 : it enables the Server Push, meaning, once the HTTP2 connection is opened, the server will push this connect, to preload the image at the same time it push the HTML code. Great for performance optimisations. But, it has a but …</p>
<p>Even if HTTP2 is a new standard, it still relies on a bunch of draft for the different features and headers. The one for the preload of content thanks to Server Push, is still <a href="https://www.w3.org/TR/preload/">in an early stage</a>. Also, in nginx, this requires to be <a href="https://www.nginx.com/blog/http2-r7/">set by the upstream</a>, meaning your application server behing nginx. And this was my error: as I publish HTML only (thanks to <a href="http://jekyllrb.com/">Jekyll</a>), I don’t have any upstream to nginx. So when I was working on the HTTP2 optimisations, I set the Server Push header directly in the nginx configuration, thanks to add_header. For sure, the header was present and reported no error on the debug tools and most of the browsers. But this leveraged a race condition in Chrome.</p>
The Tower of Joy [scene] - Game of Thrones - Ennio Morricone cover
2016-05-20T08:47:57+02:00
https://francois.aichelbaum.com/2016/05/20/tower-of-joy
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>(Just splendid …)</p>
The lie we live
2016-05-06T12:37:57+02:00
https://francois.aichelbaum.com/2016/05/06/the-lie-we-live
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Liquid error - was not properly terminated with regexp
2016-04-28T22:37:57+02:00
https://francois.aichelbaum.com/2016/04/28/liquid-error-was-not-properly-terminated-with-regexp
<p>A few weeks ago, I decided to move from Wordpress to a more flat blog engine. After some test, I chose to use Jekyll. I may write a blogpost about this and the related motivation but this is not the actual topic.</p>
<p>During the setup, I needed to implement a search engine. As Jekyll is a flat blog engine, I can’t really implement any dynamic solution. My solution was to implement a lunr.js on the website. For it to operate, it requires a big json file with all the text to search.</p>
<p>The json file is generated during the build stage. Due to this, it will parse the other md files to generate the content. This means that the template file of the json will remplace the Liquid variables with some other Markdown but more especially Liquid variables and statements.</p>
<p>This lead to a classic error :</p>
<p>{% highlight console %}
was not properly terminated with regexp: /}}/ in search_data.json
{% endhighlight %}</p>
<p>I skip the first part of the error as it’s not relevant. I longly googled on this. But, most of the page foscused on a variable containing Liquid statement that would have be published as this. This is not valid in my case as I want to parse the embedded content and use some other Liquid filters as I would do with :</p>
<p>{% endhighlight %}
{{ content | replace: ‘{foo}’, ‘bar’ }}
{% endhighlight %}</p>
<p>So, it returned the error. Logic as Liquid will parse this statement, replace ‘content’ with it’s value, another Liquid statement, also finishing with }}. I tried several solutions to escape this with no luck.</p>
<p>I ended with a magical and even more obvious solution : ‘markdownify’</p>
<p>{% endhighlight %}
{{ content | markdownify | replace: ‘{foo}’, ‘bar’ }}
{% endhighlight %}</p>
<p>This solved the case at once !</p>
Lenovo T450 Wireless AC 7265 not working on Linux
2016-03-16T10:37:57+01:00
https://francois.aichelbaum.com/2016/03/16/lenovo-t450-wireless-ac-7265-not-working-linux
<p>Lately I discovered an issue with my WiFi adapter on my professional laptop (a Lenovo T450) : it was not working. Pretty inconvenient. After some digging, I tested and had to adapt part of things I found on Google.
So, to begging with, the symptoms :</p>
<ul>
<li>no more wireless adapter in my NetworkManager or any other tools, including ifconfig</li>
<li>dmesg reports issues loading the iwlwifi firmware<</li>
</ul>
<p>The dmesg output looks like :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">[ 4.237444] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-12.ucode failed with error -2
[ 4.237466] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-11.ucode failed with error -2
[ 4.237479] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-10.ucode failed with error -2
[ 4.237482] iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-7265D-10.ucode' failed.
[ 4.237493] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-9.ucode failed with error -2
[ 4.237495] iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-7265D-9.ucode' failed.
[ 4.237497] iwlwifi 0000:03:00.0: no suitable firmware found!</span></code></pre></figure>
<p>I tried to download the official firmware from Intel, namely iwlwifi-7265-ucode-25.30.14.0, with no luck. Though, I decided to keep the ucode files from this archive in my /lib/firmware/.
Note that, depending on your distro, this previous step might be enough. To check :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">update-initramfs -u
reboot</span></code></pre></figure>
<p>Then, further dig pointed some issues with the iwlwifi package not handling properly this version of the AC 7265. From lspci :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="m">03</span>:<span class="m">00</span>.<span class="m">0</span> <span class="n">Network</span> <span class="n">controller</span> [<span class="m">0280</span>]: <span class="n">Intel</span> <span class="n">Corporation</span> <span class="n">Wireless</span> <span class="m">7265</span> [<span class="m">8086</span>:<span class="m">095</span><span class="n">b</span>] (<span class="n">rev</span> <span class="m">59</span>)
<span class="n">Subsystem</span>: <span class="n">Intel</span> <span class="n">Corporation</span> <span class="n">Dual</span> <span class="n">Band</span> <span class="n">Wireless</span>-<span class="n">AC</span> <span class="m">7265</span> [<span class="m">8086</span>:<span class="m">5210</span>]</code></pre></figure>
<p>Here, the main points are the main ID 095b and the Subsystem ID 5210.
To solve this, let’s recompile the backport package of iwlwifi with a tiny difference (the <em>sed</em> line is to adapt with your IDs) :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="gp">sudo apt-get install build-essential linux-headers-$</span><span class="o">(</span><span class="nb">uname</span> <span class="nt">-r</span><span class="o">)</span>
<span class="go">wget https://www.dropbox.com/s/gyuvdlhzx5ho277/backports-20150731.tar.gz
tar -zxvf backports-20150731.tar.gz
cd backports-20150731/
sed -i 's/IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)/IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)/' drivers/net/wireless/iwlwifi/pcie/drv.c
make defconfig-iwlwifi
make
sudo make install
update-initramfs -u
reboot</span></code></pre></figure>
<p>Now, if you check your dmesg, you’ll see :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">[ 3.950804] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-15.ucode failed with error -2
[ 3.952513] audit: type=1400 audit(1458119598.627:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=657 comm="apparmor_parser"
[ 3.952521] audit: type=1400 audit(1458119598.627:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=657 comm="apparmor_parser"
[ 3.952525] audit: type=1400 audit(1458119598.627:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.953091] audit: type=1400 audit(1458119598.627:8): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=657 comm="apparmor_parser"
[ 3.953100] audit: type=1400 audit(1458119598.627:9): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.953362] audit: type=1400 audit(1458119598.627:10): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.955605] iwlwifi 0000:03:00.0: loaded firmware version 25.30.14.0 op_mode iwlmvm
[ 3.975336] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input7
[ 4.001495] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x210
[ 4.001843] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 4.002290] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled</span></code></pre></figure>
<p>And, <em>voilà</em>, your wireless adapter is back online !
<strong>**NB**</strong>: you’ll have to redo these steps after every kernel update, except if the iwlwifi module got fixed.</p>
Share a multifunctional printer (with your Synology)
2016-03-10T10:00:50+01:00
https://francois.aichelbaum.com/2016/03/10/share-multifunctional-printer-synology
<p>So, lately, we decided to truly use several different computers at home. The fun part is that we want to share the same peripherals (as the multi-functional printer (here, as an HP PhotoSmart B109a), with different OS (for now, Linux and Windows). Let’s see how our Synology saved the day.</p>
<p>The Synology NAS embed a Linux system so basically, we should be able to run most of the applications, as far as we can deploy/compile it. But, because the Synology guys wants to ease our life, they did a great thing : they offer <a href="https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Printer/How_to_set_up_and_use_a_multifunctional_printer_shared_by_Synology_NAS">the possibility</a> to add a multi-functional printer and manage it. As far as they did great, the system only embed some drivers (and software - i.e. only cups) and for me, even if the printer is fully discovered, only the print services will be shared over network.
So I had to complete the setup. First, I need to be able to extend the system with new package. As we have a pretty recent DS1515+, we don’t have any <a href="https://fr.wikipedia.org/wiki/IPKG">ipkg</a> system out of the box. But now, this is pretty well documented over internet (in <a href="https://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#How_to_install_ipkg">english</a> or in <a href="http://www.cachem.fr/synology-installer-ipkg/">french</a>, for instance).
Now that we can install third party software easily on the CLI, let’s setup <a href="https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy">SANE</a>. So, as a root on the Synology :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">ipkg install hplip libusb libieee1284 sane-backends xinetd
</span><span class="gp">echo "hpaio" ></span><span class="o">></span> /opt/etc/sane.d/dll.conf
<span class="gp">echo "hpaio" ></span><span class="w"> </span>/opt/etc/sane.d/dll.d/hplip</code></pre></figure>
<p>Let’s see if the Synology see the scanner :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">sane-find-scanner</span></code></pre></figure>
<p>Which should reply something like :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003</span></code></pre></figure>
<p>Since the NAS sees the scan, let’s test it with SANE via :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">scanimage -L
found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003</span></code></pre></figure>
<p>It will reply something as :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">device `hpaio:/usb/Photosmart_B109a-m?serial=CN999750CB05C7' is a Hewlett-Packard Photosmart_B109a-m all-in-one
found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003</span></code></pre></figure>
<p>Now, let’s ensure that the service is visible from the rest of the network. To do so, we need to edit /opt/etc/xinetd.conf where we check the line “only_from” : it should match the IP range of the local network. Then we edit /opt/etc/sane.d/saned.conf with the same purpose. We can now edit xinetd to start the sane service properly with the right port, editing /opt/etc/xinetd.d/sane-port :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">service</span> <span class="n">sane</span>-<span class="n">port</span>
{
<span class="n">port</span> = <span class="m">6566</span>
<span class="n">socket_type</span> = <span class="n">stream</span>
<span class="n">wait</span> = <span class="n">no</span>
<span class="n">user</span> = <span class="n">root</span>
<span class="n">group</span> = <span class="n">root</span>
<span class="n">server</span> = /<span class="n">opt</span>/<span class="n">sbin</span>/<span class="n">saned</span>
}
<span class="n">found</span> <span class="n">USB</span> <span class="n">scanner</span> (<span class="n">vendor</span>=<span class="m">0</span><span class="n">x03f0</span> [<span class="n">HP</span>], <span class="n">product</span>=<span class="m">0</span><span class="n">x7a11</span> [<span class="n">Photosmart</span> <span class="n">B109a</span>-<span class="n">m</span>]) <span class="n">at</span> <span class="n">libusb</span>:<span class="m">002</span>:<span class="m">003</span></code></pre></figure>
<p>Let’s start it (it will be automatically started on the next reboot :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">/opt/etc/init.d/S10xinetd
found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003</span></code></pre></figure>
<p>As we’re good on the server side, let’s focus on the client side. We’ll start with the Linux client as it’s the simpliest. I assume you already installed <a href="http://www.xsane.org">xsane</a>. Now, we just need to tell Xsane where it can find the scan. So, we edit /etc/sane.d/net.conf to replace “# localhost” with the IP of the Synology. The printer is just a few click away when you go through the regular GUI to add a network printer. We’re good to go.
On the Windows side (Windows 10 here), it’s a bit more tricky. First, we’ll focus on the printer service. For this, we’ll have to follow the <a href="https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Printer/How_to_set_up_and_use_a_multifunctional_printer_shared_by_Synology_NAS">directives</a> from Synology. This will enable a printer. Windows might complain about missing drivers for some mass storage USB device and an unknown device but you can just ignore as those are the scan and the multi card reader.
For the scan service, we’ll have to install some other tools. Indeed, Windows use a specific protocol which is not compatible with sane (it can be TWAIN, ISIS or WIA). But , as we exposed the scan via sane, we need … sane … Absolute logical logic. Thanks to our opensource community friends, port exists. Not so much up2date or maintained, but it’s enough ok to be used. The solution here will be <a href="https://sourceforge.net/projects/sanewinds/">SaneWinDS</a>. Just download the installer, follow the instruction of the GUI and here you go. Reboot your Windows (after all, it remains as a Windows), and now you have a Sane application on your Windows that you can use. The UI is pretty archaic but it should do the trick.</p>
Home
2016-03-09T10:35:59+01:00
https://francois.aichelbaum.com/2016/03/09/home
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
La Nature Parle: Sophie Marceau est Mère Nature
2016-03-08T10:31:38+01:00
https://francois.aichelbaum.com/2016/03/08/la-nature-parle-sophie-marceau-est-mere-nature
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
She's Alive... Beautiful... Finite... Hurting... Worth Dying for
2016-03-07T10:29:57+01:00
https://francois.aichelbaum.com/2016/03/07/shes-alive-beautiful-finite-hurting-worth-dying
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Super Bowl 2016 - Trailers & TV Spots
2016-03-05T11:42:23+01:00
https://francois.aichelbaum.com/2016/03/05/super-bowl-2016-trailers-tv-spots
<p>It’s Saturday morning. Some might just have a hangover. Others running all around. And a few, just do nothing (as me …. nah just kidding). So the Super Bowl was a month ago so let’s enjoy a compilation of all the Trailers and TV Spots to boost this weekend. Cheers up !</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
My desktop replacement setup
2016-03-04T19:00:45+01:00
https://francois.aichelbaum.com/2016/03/04/desktop-replacement-setup
<p><a href="https://francois.aichelbaum.com/wp-content/uploads/2016/03/bd1.jpg" rel="attachment wp-att-9123"><img class="alignleft wp-image-9123 size-thumbnail" src="/assets/bd1-150x150.jpg" alt="You're next desktop ?" width="150" height="150" /></a>Recently, I decided to move from a decent desktop setup to a desktop replacement setup. Here’s the why and the how of this move.</p></p>
<p style="text-align: justify;"></p>
<p style="text-align: justify;">For years, I had a barebone on my desktop with a huge screen :</p>
<ul style="text-align: justify;">
<li style="text-align: justify;">Xeon CPU with 4 core, but low voltage</li>
<li style="text-align: justify;">8 GB Ram</li>
<li style="text-align: justify;">Nvidia Geforce .....</li>
<li style="text-align: justify;">128 GB SSD</li>
<li style="text-align: justify;">Dell 30"</li>
</ul>
<p style="text-align: justify;">As I stopped playing on my computer for at least the last 4 years, I noted several disadvantages of such setup :</p>
<ul style="text-align: justify;">
<li>It consumes a lot of power (the power supply of the barebone and the screen consume a tremendous amount of power)</li>
<li>It takes a lot of space just to surf</li>
<li>If I want to go to another place with my "desktop" to continue my work it was not so easy (ok I could use some remote desktop thing on a tablet but yet, more devices to use ...)</li>
<li>30" display on a desktop, if you're not doing graphics is just so useless ...</li>
<li>Having a powerful computer just to surf over the web, or admin my servers, is just as driving a McLaren during rush hours, in the streets of Paris</li>
</ul>
<p style="text-align: justify;">So, at the end of last year, I decided to review all my equipment and optimize my usage, my habits, but also my power consumption. From this, my desk was one of the key elements to work on.</p>
<h2 style="text-align: justify;">Which desktop ?</h2>
<p style="text-align: justify;">At about the same time, I received, graciously, a dead <a href="https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwis3qPk6KbLAhUMCpoKHQ5GAAMQFggcMAA&url=http%3A%2F%2Fsupport.lenovo.com%2Fus%2Fen%2Fdocuments%2Fpd015812&usg=AFQjCNEbod5fFkqxh9Xw6EUPBcFCKZA33A&bvm=bv.115339255,d.bGs&cad=rja">Lenovo X220</a>. It didn't boot any more (Fan error at starting time, forbidding any access to the Bios setup), case had severe knocks all over, the battery was out, ... I love challenges and seeing this dead laptop, I saw the answer to my desk revamp : I'll revive it ! Ok I may loose some MIPS and MFLOPS, but frankly, who cares when surfing and ssh-ing ?</p>
<p style="text-align: justify;">Ok, I'll skip the disassemble time where I got it partly back. Partly because it survived to 10 days during my Chinese trip. Then, the fatal Fan error message came back. Luckily, I was in China. I brought the <em>corpse</em> to a local computer mall and go the welded fan totally replaced ... for 5€ (the guys spent almost his day on it ... !).</p>
<p style="text-align: justify;">Back in France, I was able to go through the next steps :</p>
<ol style="text-align: justify;">
<li style="text-align: justify;">upgrade the memory from the 6 GB (2+4) it had : Lenovo specs announces that we can go up to 8 GB on this little guy but as it's a Sandy Bridge powered laptop, I decided to give a try up to 16 GB (2x8 GB PC10600 CL9 from G.Skill)</li>
<li style="text-align: justify;">upgrade the harddrive from the 300 GB classical drive to an SSD : first, I assumed I would recycle the SSD from my barebone ; but it was to thick so I decided to get a Scandisk SSD Plus 240 GB which is only 7mm, and therefore can fit perfectly</li>
<li style="text-align: justify;">avoid to damage the bunch of connectors on the laptop : as I would use the laptop as desktop replacement but still as a laptop, having to plug all the USB cable, power, display, ... quite often, would damage them ; getting a dock was the solution and I found one (<a href="http://www.thinkwiki.org/wiki/ThinkPad_UltraBase_Series_3">UltraBase 3 station</a>) on E-bay for just a few bucks ...</li>
<li style="text-align: justify;">Replace my huge 30" Dell screen with something that fit more to my usage but will also consume a hell less : I moved to a <a href="http://www.samsung.com/us/business/displays/monitors/LS24E65KPLH/GO">Samsung SE650PL</a>, as it has a DisplayPort (as the x220), incorporated speakers (even if not very powerful - but don't care, it's not my multimedia center), low blue light, and is not high energy.</li>
</ol>
<p style="text-align: justify;">Now, I have all my components, next step was to move forward to setup the box. I'm getting old (I swear it, I have two grey hairs now !), and therefore, I'm getting Lazy. In my old days, I would have install a very light Linux and compile everything from scratch, fine tuning every component. Now I just want to use my computer. Based on that, I decided to use <a href="http://www.linuxmint.com">Linux Mint</a> as my distro. The following is not totally exhaustive as I'll skip the secure part that you should apply to any system.</p>
<h2 style="text-align: justify;">Graphics</h2>
<p style="text-align: justify;">The default setup is almost perfect. Almost, because I still had to fix some little glitches. First, Configure the display properly. This starts with the login screen. The MDM, which handle the login screen, does not care about your Cinnamon config. It will still try to push the display toward the internal display and duplicate it, as it, on the DisplayPort. As my lid is closed, seeing the login screen just on a quarter if my screen is not fun ... I had to edit my /etc/mdm/Init/Default file to add the following lines by the end (just before the "exit 0") :</p>
<pre id="crayon-56d96a1376b50583050831-3" class="crayon-line"><span class="crayon-v">mode</span><span class="crayon-o">=</span><span class="crayon-s">"$(xrandr -q|grep -A1 "DP2</span> <span class="crayon-i">connected</span><span class="crayon-s">"| tail -1 |awk '{ print $1 }')"
</span><span class="crayon-st">if</span> <span class="crayon-sy">[</span> <span class="crayon-o">-</span><span class="crayon-i">n</span> <span class="crayon-s">"$mode"</span> <span class="crayon-sy">]</span><span class="crayon-sy">;</span> <span class="crayon-st">then
</span><span class="crayon-h"> </span><span class="crayon-v">xrandr</span> <span class="crayon-o">--</span><span class="crayon-e">output </span><span class="crayon-v">LVDS1</span> <span class="crayon-o">--</span><span class="crayon-e">off
</span><span class="crayon-e"> </span><span class="crayon-v">xrandr</span> <span class="crayon-o">--</span><span class="crayon-e">output </span><span class="crayon-v">DP2</span> <span class="crayon-o">--</span><span class="crayon-v">primary</span> <span class="crayon-o">--</span><span class="crayon-i">mode</span> <span class="crayon-cn">1920x1080
</span><span class="crayon-st">fi</span></pre>
<p style="text-align: justify;">Then, I would focus on the video card and how it's used. It's an internal HD Graphic card from the Sandy Bridge. This would require the proper drive and proper configuration from the kernel.</p>
<pre style="text-align: justify;" class="">sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libva-intel-vaapi-driver
sudo add-apt-repository ppa:tigerite/mint-xorg-update
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xorg-update</pre>
<p style="text-align: justify;">Next to this, we'll have to edit our boot parameters for the kernel. Edit /etc/default/grub and update GRUB_CMDLINE_LINUX_DEFAULT, for instance :</p>
<pre style="text-align: justify;" class="">GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=1 i915.semaphores=1 i915.i915_enable_fbc=1 pcie_aspm=force"</pre>
<p style="text-align: justify;">Then, reload the grub configuration :</p>
<pre style="text-align: justify;" class="">sudo update-grub</pre>
<p style="text-align: justify;">Now, thanks to this, the display will work as intended. Let's enhance the rest. For this, let's remove the Visual Effects. As usual, it's fancy but not very useful and also quite performance killer. This is quite simply as you can do it via the System Settings : "Appearance" > "Visual Effects" > "None". Easy, isn't it ?</p>
<h2 style="text-align: justify;">System</h2>
<p style="text-align: justify;">Lots of small stuff in the system will enhance the usage. First, lets focus on the /etc/sysctl.conf file :</p>
<pre style="text-align: justify;"><span style="line-height: 1.5;">net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
vm.swappiness=1
vm.vfs_cache_pressure=50
vm.dirty_background_bytes = 536870912
vm.dirty_bytes = 1073741824
vm.dirty_expire_centisecs = 250
vm.dirty_writeback_centisecs = 500</span></pre>
<p style="text-align: justify;"><span style="line-height: 1.5;">Why all these ? First to secure, second to enhance. Indeed, we're not a router nor we'll inspect everything on the network from this computer : I'll do it from the router if needed. The second part is how we'll use the swap (with 16 GB Ram, as few as possible) and the different network shares we'll connect to (at least in CIFS for now).</span></p>
<p style="text-align: justify;">We can also improve part of the SSD usage by updating the options in /etc/fstab :</p>
<pre style="text-align: justify;"><span style="line-height: 1.5;">UUID=04f97099-2f75-4599-92fa-9e455ba38925 / ext4 errors=remount-ro,noatime,discard 0 1</span></pre>
<p style="text-align: justify;"><span style="line-height: 1.5;">Then we'll change the relative scheduler by providing the info in the /etc/rc.local :</span></p>
<pre style="text-align: justify;" class="">echo noop > /sys/block/sda/queue/scheduler</pre>
<p style="text-align: justify;">We'll replicate this choice for the global kernel options, in /etc/default/grub, by updating GRUB_CMDLINE_LINUX_DEFAULT :</p>
<pre class="" style="text-align: justify;">GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=1 i915.semaphores=1 i915.i915_enable_fbc=1 pcie_aspm=force elevator=noop profile"</pre>
<p style="text-align: justify;">You'll need to update grub, next to this. As you noticed, I added also the word "profile". This will slow down the very next reboot but will progressively speed up all your boot time : it will tell the kernel to profile your system to adapt its own boot. Very useful.</p>
<p style="text-align: justify;">You should also mind about updating the BIOS : it might be a very stock version, and several updates went out through the years.</p>
<p style="text-align: justify;">Next, you'll need to ensure about the CPU usage, temperature, ... Anything related to the fact you rely on a laptop. Tools can do this for you :</p>
<pre style="text-align: justify;" class="">aptitude install thermald laptop-mode-tools</pre>
<p style="text-align: justify;">You may have this kind of errors during setup :</p>
<pre style="text-align: justify;" class="">SETTING OF KERNEL PARAMETER FAILED: echo ondemand <pre wp-pre-tag-9=""></pre>gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</pre>
<p style="text-align: justify;">This is normal as the "ondemand" governor does not exists for your x220 : only "performance" and "powersave". To fix this, just edit /etc/laptop-mode/conf.d/cpufreq.conf and replace all the "ondemand" by "powersave". It should do the trick.</p>
<h2 style="text-align: justify;">Conclusion</h2>
<p style="text-align: justify;">Thanks to all these, you're now ready to use your x220 as your desktop replacement. Feel free to amend this text based on your specific needs, especially regarding the budget and therefore, the components, or any software you'd like to use.</p>
How to update an ATT / Samsung Galaxy S6 Active ?
2016-02-21T17:53:02+01:00
https://francois.aichelbaum.com/2016/02/21/how-to-update-an-att-samsung-galaxy-s6-active
<p>If, as me, you own a Galaxy S6 Active (SM-G890A) from AT&T, and you can’t update to Android 5.1.1, here is your solution.</p>
<p>Over the last year, I busted two mobiles :</p>
<ul>
<li>I missed my pocked when trying to fit my phone in : the floor didn’t missed it, especally the screen</li>
<li>The other one tried to swim without protection, whereas I put it into an airtight bag, in an airtight box, to prevent any issue … long but funny story</li>
</ul>
<p>Whatever … Next to these issues, I decided to get a rugged phone to ensure that I won’t bust another one or at least, not that fast. I googled for some time, avoiding the regular Chinese models you can find all over the place. Two models came out this digging : the one from CAT <a href="http://www.catphones.com/fr-fr/phones/s30-smartphone">S30</a> (the <a href="http://www.catphones.com/fr-fr/phones/s40-smartphone">S40</a> was not yet available) and one from Samsung (the S6 Active). I decided not to go with the CAT one, based on several reviews I got from both.
Unfortunately, the <a href="http://www.samsung.com/us/mobile/cell-phones/SM-G890AZAAATT">Samsung Galaxy S6 Active</a> was only release in some countries (as in the US) and only through some carrier contracts (as <a href="https://www.att.com/cellphones/samsung/galaxy-s6-active.html">AT&T</a> in the US). Luckily, I had to do a quick work trip in the US. Thanks to some colleagues, I was able to buy a brand new S6 Active.
I won’t got through a full review of the phone, as you can find a ton of them online. I bought the phone on early July 2015. On August, AT&T released a branded update based on Android 5.0.2. The update was available to all the owner, even not in the US nor on AT&T. The update was fine for lots of thing but there were some glitches as some slowness or some random micro-freezes. One solution, due to Android 5.0, was to move to Android 5.1 as it solved most of the issues. But, as there is no way to root the phone yet, and as it’s not a stock version of Android, there was no way to update it as-is. Waiting was my new friend. On the root side, there is even a bounty on the <a href="http://forum.xda-developers.com/galaxy-s6/galaxy-s6-active/bounty-att-s6-active-root-t3301145">XDA forum</a>, if you want to take care of it.
On November, AT&T released an update based on the 5.1.1. But, and here is our common issue, this update is available only if you’re in the US and if you’re using AT&T : it’s an OTA update (Over The Air). I can’t go to the US as I go to my local bakery nor I can’t ask my employer to pay for a new trip in the US just to get my update. I was struggling for months with this.
But, some days ago, I found out about some Samsung tools that could be useful : <a href="http://www.samsung.com/us/smart-switch/">Samsung Smart-Switch</a>. Here, I won’t focus on the mobile version of the tool as it’s not useful for us. But the computer version (available on Windows and Mac OS X) is our Grail. So, install it on your computer.
If, as me, you’re on Linux and can’t find someone with a Windows close to you, visualization is your savior. Install Virtualbox, install a VM with Windows and then, Samsung Smart Switch. Note that you better have at least 2 cores and 2 GB Ram enabled on your VM. Another trick regards the USB :</p>
<ul>
<li>add your current user to vboxusers</li>
</ul>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">usermod -a -G vboxusers francois</span></code></pre></figure>
<ul>
<li>logout/login your session</li>
<li>edit the VM settings to ad a permanent USB filter for your phone (it has to be plugged in prior to this)</li>
</ul>
<p>Now that you can use Smart Switch, plug your phone, go to the upper right corner on “Plus”, then “Emergency recovery and re-initialization”. Wait for a couple of second, the phone will get detected and recognized. If it’s legit (not declared as stolen), the system will detect the version and propose an update from Android 5.0.2 to Android 5.1.1.
You can also for the update via the re-initialization process, thanks to your serial number (on your phone, Settings / About the phone / State), but this will wipe out all the data so do not forget to backup your phone first.
If you’re using a virtualized Windows, when the phone reboots the first time, Smart Switch will continue to ask you to connect the phone so it can detect it : just right click on the USB settings of the VM, and change the USB filter from Remote “No” to Remote “Any”. At the end, you may have to do it the other way but this is optional.
Now, you have a fully functional Galaxy S6 Active from AT&T, working on an up-to-date and official branded Android 5.1.1 without bothering with AT&T.</p>
Petit scarabée : troisième !
2016-01-19T13:40:53+01:00
https://francois.aichelbaum.com/2016/01/19/petit-scarabee-troisieme
<p style="text-align: justify;">Une quinzaine de jours est passée depuis mon dernier billet. Pas tant parce qu'il n'y avait rien a raconté, mais plutôt qu'il faut du temps et de l’énergie pour le faire. On continue donc la découverte du Kung-Fu traditionnel, mixé à la découverte de Chengdu.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Comme introduit dans le premier billet, le kung-fu n'est pas juste un art martial mais est un art de vivre. Celui-ci s'accompagne donc de règles. Elles se scindent en deux familles : les règles de moralités et les règles de comportement. Pendant que nous les revoyons continuellement, tout est prétexte à l'entrainement et aux démonstrations.</p>
<p>[gallery show_title="0" ids="9054,9053,9047"]</p>
<p style="text-align: justify;">Les premières règles sont donc définies ainsi :</p>
<ol style="text-align: justify;">
<li style="text-align: justify;">Restez humble</li>
<li style="text-align: justify;">Faites bénéficier les autres</li>
<li style="text-align: justify;">Restez stable dans votre cœur et vos actes</li>
<li style="text-align: justify;">Faites face aux difficultés avec grandes volonté et fierté</li>
<li style="text-align: justify;">Votre relation avec les autres est plus importante que l'argent</li>
<li style="text-align: justify;">Soyez gentleman</li>
<li style="text-align: justify;">Apprenez à pardonner</li>
<li style="text-align: justify;">Finissez ce que vous avez commencé</li>
</ol>
<p style="text-align: justify;">Concernant les règles de comportement, elles se résument ainsi :</p>
<ol style="text-align: justify;">
<li>N'abandonnez jamais</li>
<li>Ne vous vantez pas</li>
<li>Ne vous fermez pas face à la critique</li>
<li>Ne jouez pas les prétentieux</li>
<li>Ne faites pas étalage de votre kung-fu</li>
<li>Ne colportez pas</li>
<li>N'enseignez pas si vous n'avez pas la compétence</li>
<li>N'arnaquez personne</li>
<li>Ne soyez pas fermer à autrui</li>
<li>Ne désobéissez pas aux règles</li>
</ol>
<p style="text-align: justify;">On se rend vite compte que tout ceci s'applique à la vie de tous les jours. Ainsi, outre les 6h de sport quotidiennes, nous passons beaucoup de temps à parfaire notre connaissance de l'ancienne culture chinoise, mais aussi observer ce qui se passe autour de nous.</p>
<p>[gallery show_title="0" ids="9052,9051,9050"]</p>
<p style="text-align: justify;">Forts de cette instruction, nous partons à la découverte du parc Wang Jiang, parc de bamboo en l'honneur d'une poète célèbre de Chengdu. Le parc se présente donc en deux parties. La plus grande, publique, recouvre deux tiers de la zone. Il s'agit principalement d'une réserve de diverses espèces de bamboo. La seconde, plus petite, est dédiée à la poète avec différents pavillons et une imposante statue en marbre.</p>
<p>[gallery show_title="0" ids="9072,9071,9070,9069,9068,9067,9066,9065,9063,9062,9061,9060,9059,9058,9057,9056"]</p>
<p style="text-align: justify;">Époustouflés par cet écrin de verdure, conservé au beau milieu de la modernité des buildings, nous avons bien profité de l'ambiance terriblement apaisante du lieu. A ce moment, nous sommes choqués par la contradiction perpétuelle de la Chine. Tout est dans l'opposition. L'ancien au modernisme. La richesse à la pauvreté. Le complique au simple. Le respect de la connaissance à l'ignorance totale du passé.</p>
<p style="text-align: justify;">Pour autant, certaines choses perdurent ou reviennent. Les pandas sont donc partout. Les anciennes font du sport de rue : gym toniques pour mesdames à la tombée de la nuit ou encore danse de salon sur les places publiques en journée, ... A noter également que leur style en anglais fait fureur parfois.</p>
<p>[gallery show_title="0" ids="9080,9049,9073,9074,9066,9064"]</p>
<p style="text-align: justify;">Ceci m’amène à mon 6e projet de tatouage. Ce nouveau projet est une portion en fait un fragment d'un plus gros tatouage que j'ai décidé de segmenter afin de le réaliser au cours de mes divers voyages. La précédente pièce avait donc été faite a New York. Le tatoueur a été trouvé et j'ai pu lui transmettre les matériaux de base pour son travail. Par contre, je garde secret le résultat jusqu'au retour de Chine.</p>
<p>[gallery show_title="0" ids="9085,9084,9083,9082,9081"]</p>
<p style="text-align: justify;">Au cours des diverses explorations de Chengdu, nous sommes également tombes sur le quartier des bars. Celui-ci est caractéristique du style de restauration à la chinoise : l'emballage fait le produit. On se retrouve donc avec des bus Victoriens, un bar de dinosaures, ...</p>
<p>[gallery show_title="0" ids="9079,9078,9077,9076,9075"]</p>
<p style="text-align: justify;">Nous finirons la semaine dernière avec le départ de l'un de nos Kung-Fu brothers. Celui-ci repart donc dans sa province natale, au nord-est de la Chine. Soirée hotpot autant épicée qu'arrosée, suivie d'une séance de cinéma privée, dans la salle d'entrainement avec la projection de <a href="https://www.youtube.com/watch?v=VSfJZ6B4P6Y">Crazy Kungfu</a>, en chinois, bien entendu !</p>
<p>[gallery show_title="0" ids="9048"]</p>
Petit scarabée : deuxième !
2016-01-05T14:34:14+01:00
https://francois.aichelbaum.com/2016/01/05/petit-scarabee-deuxieme
<p style="text-align: justify;">Les jours s'enchainent sans vraiment se ressembler. Nous continuons de consommer notre lot quotidien de sport, culture kungfu-iste, de piments, le tout enrobé de zénitude et de plaisirs.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Peu de jours se sont écoulés depuis mon billet du nouvel an. Pourtant, tellement de choses ont été vécues. Ainsi, la fin de semaine a continué de s'écouler avec du sport avant de nous offrir une fin de samedi reposante. Mais avant toute chose, le vendredi sera marqué par un "afterwork" digne de ce nom, entre occidentaux. Nous finissons donc non loin de l'école, dans un bar, aux allures de Central Perk. Je note au passage qu'il a fallu que je vienne en Chine pour qu'on me serve par défaut une bière du Laos. D'ailleurs, la serveuse s'excusera en ramenant une bouteille ... car elle est froide (les chinois boivent leurs bières tièdes).</p>
<p>[gallery show_title="0" ids="9005,9004,9003,9002"]</p>
<p style="text-align: justify;">Bien courbatures, nous partons samedi après-midi à l'attaque de l'équivalent des boulevards maréchaux de Chengdu, facilement et rapidement accessible en tuk-tuk depuis l'école. Là, nous déambulons dans les magasins pour y découvrir les marques à la mode, les produits, ou même les petites variantes agréables dans les grandes surfaces.</p>
<p>[gallery show_title="0" ids="9006"]</p>
<p style="text-align: justify;">Fatigués, nous avançons vers un petite boutique de massage qui nous a été recommandée. Une heure de massage à 5 euros, ca ne se refuse pas. On n’était loin d'imaginer le supplice que nous allions vivre. Pourtant habitué à l'aiguille du tatoueur, mon endorphine n'a bien voulu se libérer qu'après que la vieille masseuse ait fini son boulot : il faut croire qu'elle arrive sans problème à faire ses pompes sur les bouts des doigts. Bref, massage fini, plus aucune courbature, douleur ou autre ... le pied total !</p>
<p>[gallery show_title="0" ids="9007"]</p>
<p style="text-align: justify;">Revigorés, nos estomacs nous signale que l'heure du diner approche à grands pas. On n'avait repéré une grande place avec plein de restaurants plus bas et décidons d'y aller. A part un bar dédié aux bières étrangères, tous les restos font dans le "hot pot" : une fondue, épicée ou non, dont le contenu change d'un restaurant à l'autre. Sur le conseil de notre Maître, nous allons dans le restaurant le moins rempli. Bizarrement, ce sera le plus propre de la place et celui offrant les tables les plus garnies. Nous sortons le guide, montrons la phrase magique du "Faites nous plaisir" et là, la farandole de mets à cuire débarque à table. Un régal pour les yeux. Un régal pour le nez. Un régal pour les papilles.</p>
<p>[gallery show_title="0" ids="9009,9010,9008"]</p>
<p style="text-align: justify;">Repus, nous rentrons enfin à l'école. Alors que nous pensions pouvoir aller voir les pandas, tot le dimanche, on nous informe que nous partirons en montagne, chez un ami de notre Maître, qui vit parmi les moines. Appareil photo chargé, les vêtements chauds préparés, nous partons donc pour une excursion en voiture. Le trajet se fait long, on sent que le Maître sort peu et surtout, conduit peu. Pour autant, avec la meme dextérité que pour ses formes, il manœuvre la voiture dans les passages étroits à flan de montagne.</p>
<p style="text-align: justify;">Nous arrivons alors, à 1300 m d'altitude, sur le versant est du Qingcheng Mount. Ce nom signifie "la cité verte" du fait de l'abondance de plantes et arbres. Cette montagne est extrêmement connue en Chine et à l'extérieur pour sa luxuriance et la presence de nombreux sites religieux Bouddhistes et Taoïstes : temples, monastères, mausolées, ...</p>
<p style="text-align: justify;">Nous sommes donc sur un plateau à 1300 m d'altitude avec un imposant bâtiment, surmonté par deux temples. Le Maître des lieux vient d'y ouvrir une école de méditation dans le bâtiment qu'il a restauré et reverse une partie des revenus aux moines. Ainsi, ces derniers peuvent vivre mais surtout régler les impôts importants qu'exige l'état chinois.</p>
<p>[gallery show_title="0" ids="9012,9013,9014,9019,9020,9018"]</p>
<p style="text-align: justify;">Nous apprenons que nous allons y rester deux jours/une nuit afin de participer légèrement à la vie du temple mais surtout apprendre différentes bases de la méditation. Nous visitons donc le site et partageons les repas avec les moines.</p>
<p>[gallery show_title="0" ids="9015"]</p>
<p style="text-align: justify;">Coté culture, nous échangeons avec le Maître des lieux pendant plusieurs heures, réparties sur les deux jours, autour d'une très longue cérémonie du thé. L'après-diner sera aussi l'occasion de me demander, à moi, français, expert ès-vin, de goûter un vin chinois. Celui-ci avait tout d'un Beaujolais nouveau (et comme je ne suis pas fan...). Ainsi, nous explorons les origines du site, les bases de la méditation, la présence de cette nouvelle école, et surtout, nous revenons sur le Bagua (le Yin-Yang). Ce dernier s'avère plus complexe que nous ne le pensions. Celui étudié précédemment est dit "naturel". Un autre Bagua important est celui "du peuple". Celui-ci définit ses orientations par rapport a la géographie et l'histoire de la Chine. Plus complexe, il permet cependant de mieux appréhender le naturel.</p>
<p>[gallery show_title="0" ids="9023,9016,9011"]</p>
<p style="text-align: justify;">Nous découvrons alors divers usages du Bagua. Par exemple, l'art de la divination, grace à 3 pieces de monnaie. Nous découvrons également le Kung-fu Bagua, sorte de mélange de Taichi, Kung-fu mais également méditation. Ce sera d'ailleurs l'important cours du lendemain matin.</p>
<p>https://www.youtube.com/watch?v=3NHEOU88TaY</p>
<p style="text-align: justify;">Nous avons encore bien des choses à apprendre et à parfaire. Ce sera la conclusion du jour mais surtout de ce mardi où nous revoyons toutes nos bases encore et encore. "Aie" crient nos muscles.</p>
<p>[gallery show_title="0" ids="9021"]</p>
Petit scarabée: première !
2016-01-01T10:18:23+01:00
https://francois.aichelbaum.com/2016/01/01/petit-scarabee-premiere
<p style="text-align: justify;">Pour beaucoup, ce n'est pas une surprise : je suis en Chine pour quelques semaines. La précision importante ici est qu'il s'agit d'une immersion dans la campagne chinoise avec un entrainement intensif au Wu Shu.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Cela fait donc quelques jours que je suis arrivé. Etonnamment, un énorme brouillard recouvrait la ville de Chengdu, dans le Sichuan. Bon, je dis étonnamment car ce n'est quasiment pas du à la pollution chinoise mais plus au climat local. Le Sichuan est une province entourée de montagne. Une cuvette quoi... Le résultat est qu'il y pleut très peu mais l'humidité ambiante est permanente, ce qui donne ce brouillard si épais et humide. Ce matin, surprise pour le nouvel an, le brouillard se lève enfin et le soleil parvient à illuminer la cour de l'école. Ca ne réchauffe pas encore le corps, mais au moins ca sèche un peu les affaires.</p>
<p style="text-align: justify;">Revenons-en à cette immersion. C'est donc la Kung Fu Family de Maître Li Quan (Shifu pour les intimes) qui accueille les quatres apprentis que nous sommes, issus de différents pays. Shifu est un Maître (re)connu qui accueille régulièrement des gens de tous horizons et des différentes provinces chinoises, pour leur transmettre ses connaissances et son amour pour le Kung Fu traditionnel, le Wu Shu. Dans la hiérarchie des Maîtres, seul un rang lui demande respect, celui des (rares) Grands Maîtres qui viennent parfois entrainer ses apprentis.</p>
<p style="text-align: justify;">Petits scarabées que nous sommes, les premiers pas sont importants :</p>
<ul style="list-style-type: circle; text-align: justify;">
<li>savoir quelle est notre place dans la hiérarchie pour ne pas marquer de faux pas par manque de respect</li>
<li>avoir une excellente moralité</li>
<li>comprendre pourquoi nous sommes là</li>
<li>apprendre que tout est lié et que tout vit en harmonie, c'est-à-dire en mouvement et relation permanente avec son opposé</li>
</ul>
<p style="text-align: justify;">Ce qui caractérise le mieux ces règles de base est entre autres, le Yin-Yang que nous connaissons deja.</p>
<p>[gallery show_title="0" ids="8989"]</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Ce symbole, surtout une fois complété des éléments, est très important et sa connaissance assure une bonne base pour commencer notre entrainement. Il s'agit donc d'une philosophie qui englobe toute chose : chaque objet, chaque pensée, chaque action, ... Son chiffre clé est le 8 : huit symboles, 8 cercles, un 8 dessinée dedans, ... Le Yin représente la force, le masculin, l'attaque. Le Yang représente la douceur, le féminin, la défense. Ils ne peuvent fonctionner l'un sans l'autre. Il y a d'ailleurs du Yin dans le Yang et inversement. De meme, quand le Yin est au maximum, le Yang qui est au minimum va pourvoir se développer et prendre du terrain, lancant la dynamique. Ce sont des opposés qui se complètent.</p>
<p style="text-align: justify;">Après avoir compris ce point, on avance sur les huit règles de base du Kung Fu, toutes se développant sur les thèmes de respect et de bonne moralité. Oublions les conflits, la compétition. Ici, on se focalise sur l'entraide, sur le complément, sur l'adaptation. On va donc apprendre, tranquillement un mélange d'art de vivre issu de l'ancien temps, très posé, à celui de la Chine moderne, très festif. Tout cela, en soutenant le respect envers les Ainés. On verra tour à tour divers membres anciens de la fraternité de la Kung Fu Family défiler à table pour partager des repas copieux et de la boisson forte.</p>
<p>[gallery show_title="0" ids="8986"]</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Et là, cela peut devenir complètement folklorique pour nos petits yeux d'occidentaux. Ces hommes, pourtant éduqués dans la science et la culture Shaolin, sont devenus totalement bling-bling, parfois aussi customisés que leurs voitures tres Jacky. On verra les gens trinquer, surtout, un par un, en gardant le verre à une hauteur précise pour signifier leur position dans la hiérarchie, puis porter le verre aux lèvres pour à peine les tremper dans le liquide : il ne faudrait pas perdre la face. Il faut que l'autre soit saoul bien avant, pour montrer qu'il est un bon ami. Le pire dans ce cirque de courbettes, à mon sens, est l'alcool. Ici, la belle bouteille fait le bon alcool dans les esprtis. Il en résulte que la premiere soirée se fera sur une bouteille magnifique, mais au contenu écoeurant : un alcool fort (52%) avec un arrière gout de bonbon à la cerise proche de celui des cerises des forêts noires. Erk ... !</p>
<p style="text-align: justify;">Reste que certains Maîtres ont voyagés ou ont rencontrés d'autres cultures. Ceux-là nous ferons profiter d'un vin espagnol de très bon goût pour accompagner les plats pimentés du diner.</p>
<p style="text-align: justify;">La nourriture, c'est bien bon, mais ce n'est pas le but premier de ce séjour. Ici, on pratique et on vit le Kung Fu ! On vit à la dure (pas de chauffage, eau chaude limitée, ...) mais pas trop (petit déj vers 9/10h en gros). Par contre, 6h de cours tous les jours. Apres une première petite semaine, les courbatures sont là et on (re)découvre des muscles depuis longtemps oubliés. Pour autant, le plaisir est total car Shifu aime partage son art et sa culture et tout ce que vous ferez pour montrer que vous etes là pour apprendre sera récompensé.</p>
<p>[gallery show_title="0" ids="8987"]</p>
<p style="text-align: justify;">Le sacre de ces premiers jours : être jugé par les autres membres de la Kung Fu Family, tous au rang de Maître, qui acquiescent fièrement un "Fast learner" sur votre démonstration de la première forme apprise en deux jours seulement.</p>
</p></p>
The Ultimate Christmas Movie - Supercut
2015-12-22T07:27:15+01:00
https://francois.aichelbaum.com/2015/12/22/the-ultimate-christmas-movie-supercut
<p>https://youtu.be/mKrlkMnAVJE</p>
Best of Web 8 - HD - Zapatou
2015-12-17T10:54:00+01:00
https://francois.aichelbaum.com/2015/12/17/best-of-web-8-hd-zapatou
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/yHVrGUeTFbo" frameborder="0" allowfullscreen=""></iframe></div>
Parce que TGIF, et qu'ils commencent à être mérités ces vendredis !
2015-10-30T15:48:02+01:00
https://francois.aichelbaum.com/2015/10/30/parce-que-tgif-et-quils-commencent-a-etre-merites-ces-vendredis
<p>https://youtu.be/EmnSm_d2ll4</p>
Movie phone super call
2015-09-17T07:58:41+02:00
https://francois.aichelbaum.com/2015/09/17/movie-phone-super-call
<p>https://youtu.be/zXnC2DlEOdE</p>
Diagnostic
2015-09-16T18:36:36+02:00
https://francois.aichelbaum.com/2015/09/16/diagnostic
<p>https://youtu.be/AM4c9ckSy9M</p>
Hell's Club
2015-09-08T09:57:09+02:00
https://francois.aichelbaum.com/2015/09/08/hells-club
<p>https://youtu.be/QajyNRnyPMs</p>
Marrakech
2015-06-19T16:55:02+02:00
https://francois.aichelbaum.com/2015/06/19/marrakech
<p>[gallery ids="9491,9490,9489,9487,9486,9485,9484,9483,9482,9481,9480,9479,9478,9477,9476,9475,9474,9473,9472,9471,9470,9469,9468,9467,9466,9465,9464,9463,9462,9461,9459,9460,9458,9457,9456,9455,9454,9453,9452,9451,9450,9449,9448,9447,9446,9445,9444,9443,9442,9441,9440,9439,9438,9437,9436,9435,9434,9433,9432,9421,9420,9419,9418,9417,9416,9415,9414,9413,9412,9411,9410,9409,9408,9407,9406,9405,9404,9403,9402,9401,9400,9399,9398,9397,9396,9395,9394,9393,9392,9391,9390,9389,9388,9387,9386,9385,9384,9383,9382,9381,9380,9379,9378,9377,9376,9375,9374,9373,9372,9371,9370,9369,9368,9367,9366,9365,9364,9363,9362,9361,9360,9359,9358,9357,9356,9355,9354,9353,9352,9351,9350,9349,9348,9347,9346,9345,9344,9343,9342,9341,9340,9339,9338,9337,9336,9335,9334,9333,9332,9331,9330,9329,9328,9327,9326,9325,9324,9323,9322,9321,9320,9319,9318,9317,9316,9315,9314,9313,9312,9311,9310,9309,9308,9307,9306,9305,9304,9303,9302,9301,9300,9299,9298,9297,9293,9291,9290,9289,9288,9287,9286,9285,9284,9283,9282,9281,9280,9279,9278,9277,9276,9275,9274,9273,9272,9271,9270,9269,9268,9267,9266,9265,9264,9263,9262,9261,9260,9259,9258,9257,9256,9255,9254,9253,9252,9251,9250,9249,9248,9247,9246,9245,9244,9243,9242,9241,9240,9239,9238,9237,9236,9235,9234,9233,9232,9231,9230,9229,9228,9227,9226,9225,9224,9223,9222,9221,9220,9219,9218,9217,9216,9215,9214,9213,9212,9211,9210,9209,9208,9207,9206,9205,9204,9203,9202,9201,9196,9195,9194,9193,9192,9191,9190,9189,9188,9187,9180,9176,9175,9174,9169,9168,9167,9166,9165,9164,9163,9162,9161,9160,9159,9156,9542,9541,9540,9539,9538,9537,9536,9535,9534,9533,9532,9531,9530,9529,9528,9527,9526,9525,9524,9523,9522,9521,9520,9519,9518,9517,9516,9515,9514,9513,9512,9511,9510,9488,9296,9292"]</p>
An XMAS Movie Mashup
2014-12-24T08:35:34+01:00
https://francois.aichelbaum.com/2014/12/24/xmas-movie-mashup
<p>https://www.youtube.com/watch?v=fKjoJKW2C34</p>
Final Cut 2014 - Movie Mashup
2014-12-23T12:59:30+01:00
https://francois.aichelbaum.com/2014/12/23/final-cut-2014-movie-mashup
<p>https://www.youtube.com/watch?v=MV9MCLS1Ji8</p>
Best of Web 7 - HD - Zapatou
2014-12-22T08:23:43+01:00
https://francois.aichelbaum.com/2014/12/22/best-web-7-hd-zapatou
<p>https://www.youtube.com/watch?v=axgDgH6f7Pw</p>
The Dark Game of Hobbit Knight Thrones Musical Mashup
2014-05-26T19:11:00+02:00
https://francois.aichelbaum.com/2014/05/26/dark-game-hobbit-knight-thrones-musical-mashup
<p>http://www.youtube.com/watch?v=wUKjN5hi7UM</p>
Job le plus dur du monde
2014-05-25T10:40:10+02:00
https://francois.aichelbaum.com/2014/05/25/job-le-plus-dur-du-monde
<p>https://www.youtube.com/watch?v=beCYTVk-AYU</p>
Mashup La communauté de l'anneau / Kaamelott
2014-05-16T12:14:44+02:00
https://francois.aichelbaum.com/2014/05/16/mashup-la-communaute-de-lanneau-kaamelott
<p>http://www.youtube.com/watch?v=krrZoYm7FvA</p>
Mashup Titanic / Les Bronzés
2014-04-18T11:00:19+02:00
https://francois.aichelbaum.com/2014/04/18/mashup-titanic-les-bronzes
<p>https://www.youtube.com/watch?v=hLEEHWFn308</p>
Monitoring des services de streaming live audio/video
2014-03-06T11:00:35+01:00
https://francois.aichelbaum.com/2014/03/06/monitoring-des-services-de-streaming-live-audiovideo
<p style="text-align: justify;">Dans le cadre d'une de mes vies précédentes, chez Yacast Media (depuis racheté par <a title="SmartJog" href="http://www.smartjog.com/" target="_blank">SmartJog</a> et devenu <a title="Arkena" href="http://www.arkena.com/" target="_blank">Arkena</a>) en l'occurrence, se posait la problématique de comment s'assurer de la qualité de service envoyée au client pour tout ce qui était flux live. A chaque problème, sa solution, et ici, elle se prénomme <a title="Bobonne @github" href="https://github.com/faichelbaum/bobonne" target="_blank">Bobone</a>.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Certains d'entre vous connaissent les CDN : les Content Delivery Networks, des diffuseurs de contenu. La majorité suppose qu'ils ne font que de la mise en cache du contenu. C'est en effet une bonne part de leur métier mais pas l'unique. Parmi les autres, il y a aussi, dans ce qui nous intéresse ici, des fonctions de captation (récupérer un signal hertzien, satellite, câble, ou autre), de transcodage (transformer ce flux capté en flux informatique) et de diffusion (le coeur du métier du CDN donc). Ceci représente le streaming. Pour vous, en tant qu'utilisateur, il s'agit de ce que vous pouvez consulter sur votre boîter TV fourni par votre FAI, ou via votre tablette ou smartphone.</p>
<p style="text-align: justify;">Pour se faire, les infrastructures sont toujours plus importantes, toujours plus complexes. Dans le cas de la mise en cache de contenu, il est relativement aisé de détecter automatiquement une défaillance ou un dysfonctionnement. Pour autant bien trop peu de CDN mettent ces routines en place ... Dans le cas de la diffusion de contenu en direct, le streaming, il n'y avait pas à l'époque d'outil disponible pour faire ce contrôle automatique. Il incombait donc à des humains de tester les flux.</p>
<p style="text-align: justify;">Ceci représente un coût non négligeable pour la société et le temps qu'un humain teste tous les flux sur tous les serveurs, l'ensemble de la plateforme pouvait s'écrouler ou diffuser le contenu avec une qualité déplorable. Parti de ce constat, c'est posé la question de comment le résoudre. M'est alors venue l'idée d'utiliser <a title="VLC" href="http://www.videolan.org/" target="_blank">VLC</a> pour se faire.</p>
<p style="text-align: justify;">VLC est un outil permettant de regarder des vidéos mais aussi des flux audio/vidéo directement sur internet. Il fonctionne sur de nombreux systèmes dont Linux, ce qui m'arrange pour pouvoir faire ma programmation. Au moins dans sa version Linux, il propose de fonctionner entièrement en ligne de commande, publiant un nombre mirobolant d'informations à chaque instant, mais également l'image transformée en ASCII, grâce à la <a title="libcaca" href="http://caca.zoy.org/wiki/libcaca" target="_blank">libcaca</a> (ne rier pas trop, faut qu'on continue à bosser).</p>
<p style="text-align: justify;">Il me restait donc à définir du code permettant de recueillir la liste des points de diffusions de chaque plateforme, la liste des serveurs et tester l'ensemble. C'est le but du code alors rédigé en PHP qui fonctionnera en ligne de commande. Ce programme multi-process consultera plus d'une centaine à chaque instant et analysera une centaine de points sur les flux pour en déterminer la qualité de service. Le résultat sont stockés pour l'heure dans une base <a title="SQLite" href="http://www.sqlite.org/" target="_blank">SQLite</a> embarquée. L'application est donc mobile. A l'époque, cette base était consultée par l'intranet qui permettait de lister les problèmes et relancer les flux sur les différents équipements via un simple clic.</p>
<p style="text-align: justify;">Les opérateurs y gagnaient en charge de travail, la société en €€ et le client en assurance sur la qualité du service fourni. Des évolutions étaient préves mais n'ont pas vu le jour. Je le ressors aujourd'hui car je vais en avoir besoin et donc vais le faire revivre. Je viens donc d'importer la dernière version du code (qui date de début 2010) sur <a title="Bobonne @github" href="https://github.com/faichelbaum/bobonne" target="_blank">Github</a>.</p>
<p style="text-align: justify;">Tiens une question du fond, la personne qui se pouffe de rire toute seule : pourquoi Bobonne ? Tout simplement, le programme devait "regarder des chaînes de TV et écouter la radio" en continue. La parfaite ménagère de moins de 50 ans (copyright de nos chères chaînes de TV). En argo, Bobonne.</p>
SupInfoCom - A la francaise
2014-02-27T10:46:57+01:00
https://francois.aichelbaum.com/2014/02/27/supinfocom-la-francaise
<p>http://vimeo.com/86295452</p>
2CELLOS - Thunderstruck
2014-02-25T07:31:35+01:00
https://francois.aichelbaum.com/2014/02/25/2cellos-thunderstruck
<p>http://www.youtube.com/watch?v=uT3SBzmDxGk</p>
1984 Movies supercut - golem13
2014-02-17T11:01:15+01:00
https://francois.aichelbaum.com/2014/02/17/1984-movies-supercut-golem13
<p>http://vimeo.com/86617721</p>
Love Means Never Having to Say You're Sorry
2014-02-14T11:01:24+01:00
https://francois.aichelbaum.com/2014/02/14/love-means-never-say-youre-sorry
<p>http://vimeo.com/groups/montagecreators/videos/86725484</p>
Make love. Not War - Axe ads without Axe
2014-01-27T07:50:06+01:00
https://francois.aichelbaum.com/2014/01/27/make-love-war-axe-ads-without-axe
<p>http://youtu.be/Gz07w2XaxBc</p>
Dis 33 ! (Pub Peugeot 806 pour les incultes)
2014-01-21T06:48:56+01:00
https://francois.aichelbaum.com/2014/01/21/dis-33-pub-peugeot-806-pour-les-incultes
<p>http://www.youtube.com/watch?v=16AHysRb3B0</p>
Sophie Maurin & Jamie Cullum - Far Away
2014-01-20T08:04:53+01:00
https://francois.aichelbaum.com/2014/01/20/sophie-maurin-jamie-cullum-far-away
<p>http://www.dailymotion.com/video/x1a0i3o_jamie-cullum-et-sophie-maurin-le-duo-de-charme_music</p>
Les Frenchies vus par le cinéma US - Hervé De Wilde
2014-01-08T20:14:14+01:00
https://francois.aichelbaum.com/2014/01/08/les-frenchies-vus-par-le-cinema-us-herve-de-wilde
<p><iframe src="//player.vimeo.com/video/82750579" width="500" height="281" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe></p>
Oslo - Fireworks - Happy new year 2014 - ABBA medley
2014-01-02T15:55:15+01:00
https://francois.aichelbaum.com/2014/01/02/oslo-happy-new-year-2014
<p><a href="http://francois.aichelbaum.com/files/o/oslo_2013.mp4"><video width="320" height="240" src="http://francois.aichelbaum.com/files/o/oslo_2013.mp4" preload="none" controls="controls"><object width="320" height="240" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="https://francois.aichelbaum.com/wp-includes/js/tinymce/plugins/media/moxieplayer.swf" /><param name="flashvars" value="url=/files/o/oslo_2013.mp4&poster=/wp-admin/" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="true" /><embed width="320" height="240" type="application/x-shockwave-flash" src="https://francois.aichelbaum.com/wp-includes/js/tinymce/plugins/media/moxieplayer.swf" flashvars="url=/files/o/oslo_2013.mp4&poster=/wp-admin/" allowfullscreen="true" allowscriptaccess="true" /></object></video><br />
</a></p>
New Year's Eve Countdown - Movie Mashup
2014-01-01T01:04:46+01:00
https://francois.aichelbaum.com/2014/01/01/new-years-eve-countdown-movie-mashup
<p>http://www.youtube.com/watch?v=et73p86--ls</p>
Darlene Love - All Alone on Christmas (A Very Merry Movie Mash-up)
2013-12-25T10:51:58+01:00
https://francois.aichelbaum.com/2013/12/25/darlene-love-alone-christmas-merry-movie-mash
<p>http://www.youtube.com/watch?v=wemjvUbBgz0</p>
Best of web #6 - 2014
2013-12-24T12:08:04+01:00
https://francois.aichelbaum.com/2013/12/24/best-web-6-2014
<p>http://www.youtube.com/watch?v=1-8isxa5B_Y</p>
Best of web #5 - mid 2013
2013-12-24T12:06:58+01:00
https://francois.aichelbaum.com/2013/12/24/best-web-5-mid-2013
<p>http://www.youtube.com/watch?v=iDkrSD8fOBo</p>
James Bond est un alcoolique notoire
2013-12-13T16:11:53+01:00
https://francois.aichelbaum.com/2013/12/13/james-bond-est-un-alcoolique-notoire
<p>Ca se passe sur un des blogs du Monde :</p>
<p><a title="James Bond aime encore plus la bouteille que les femmes" href="http://bigbrowser.blog.lemonde.fr/2013/12/13/alcoolique-anonyme-james-bond-aime-encore-plus-la-bouteille-que-les-femmes/">http://bigbrowser.blog.lemonde.fr/2013/12/13/alcoolique-anonyme-james-bond-aime-encore-plus-la-bouteille-que-les-femmes/</a></p>
Skip the use - Nameless world
2013-12-13T15:24:23+01:00
https://francois.aichelbaum.com/2013/12/13/skip-use-nameless-world
<p><iframe width="425" height="350" src="https://www.youtube.com/embed/m-h-tK1yspQ" frameborder="0"></iframe></p>
2013 - Movie trailer mashup
2013-12-03T15:33:43+01:00
https://francois.aichelbaum.com/2013/12/03/2013-movie-trailer-mashup
<p><iframe width="425" height="350" src="https://www.youtube.com/embed/YU8CvjIwAlY" frameborder="0"></iframe></p>
Côte : manger français à Londres
2013-11-14T01:10:13+01:00
https://francois.aichelbaum.com/2013/11/14/cote-manger-francais-londres
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/cote-brasserie-1.png"><img class="alignleft size-thumbnail wp-image-8275" alt="cote-brasserie (1)" src="/assets/cote-brasserie-1-150x150.png" width="150" height="150" /></a>En déplacement professionnel chez nos voisins d'outre-Manche, j'ai passé ma journée à manger/boire français : viennoiseries, bières (Stella & Météor), ... et le dîner. Bah oui, pourquoi s'embêter à trouver quelque chose d'anglais chez les Rosbifs ? Mes souvenirs de voyages linguistiques ? De la semelle, de trucs sans goûts, ... Alors quand en cherchant une table pour le dîner, on a vu un restaurant se présenter comme "Brasserie <a href="http://www.cote-restaurants.co.uk/">Côte</a>, la brasserie de laquelle les parisiennes devrait prendre des leçons", on s'est dit : challenge accepted ! C'est <a href="https://maps.google.fr/maps?ie=UTF8&fb=1&gl=fr&hq=c%C3%B4te+%2B+brasserie+%2B&hnear=Londres,+Royaume-Uni&ll=51.489507,-0.168915&spn=0.319375,0.727158&t=m&z=11&vpsrc=0&iwloc=A&cid=13765580569693963349">ici</a> que ca se passe.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Pour l'ambiance Brasserie, je dirais qu'il y a un petit loupé : on est à mi chemin entre un restaurant à l'Américaine (type le Walt pour ceux qui connaissent), le pub et la brasserie. Pas très cliché mais bon, c'est propre.</p>
<p style="text-align: justify;">La carte, assez pauvre en noms à consonance française est assez bien pourvue, tant sur les entrées que sur les plats. Mon dévolu se jette sur le tartare de boeuf en entrée (??), un demi poulet (breton - ils insistent), accompagné d'une Météor.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/cote-banner-image3-300.jpg"><img class="aligncenter size-medium wp-image-8278" alt="cote-banner-image3-300" src="/assets/cote-banner-image3-300-300x96.jpg" width="300" height="96" /></a></p>
<p style="text-align: justify;">Que dire de l'entrée. J'étais assez dubitatif de proposer un tartare en entrée (préparé avec les câpres, le cognac, l'oeuf, ...). Je rajoute mes sauces (Worcester & Tabasco), je porte la fourchette en bouche et là, c'est le drame : c'est l'un de meilleur tartare que j'ai jamais mangé ! Je n'en connais qu'un seul autre (à Paris d'ailleurs) qui fut meilleur ! Je crois rêver ... Je me dit qu'il y a erreur, que j'ai du reprendre le train dans l'autre sens ou que je me suis assoupi à une de mes conférences. Je m'agite, j'en gobe le reste du tartare et non, tout est bien réel.</p>
<p style="text-align: justify;">Très bonne introduction pour me préparer au demi poulet, plat "par défaut" que je prend souvent dans les brasseries parisiennes. Le poulet est cuit sur le grill. Goûtu, il reste néanmoins un peu trop rosé à mon goût (je l'aime bien blanc). mais la cuisson est homogène et propre, l'assaisonnement fin. La sauce au champignons qui l'agrémente est fine et n'étouffe pas le palais. Les frites présente en accompagnement son juste bonne. Le plat est donc bon, mais à mon goût mériterait une cuisson plus longue. Mais rien de choquant et également bien habituelle, même dans les bonnes brasseries parisiennes.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/getlstd-property-photo.jpg"><img class="size-thumbnail wp-image-8281 alignnone" alt="getlstd-property-photo" src="/assets/getlstd-property-photo-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/caramel.jpg"><img class="size-thumbnail wp-image-8284 alignnone" alt="caramel" src="/assets/caramel-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Bien mis en bouche, ayant toujours le régal de l'entrée en bouche, je me jette sur ce qu'on m'annonce la spécialité de la maison, pour mon dessert : la crème caramel. Et bien je dois dire qu'ils peuvent s'en vanter. Généreuse, onctueuse, légère, elle fond délicatement en bouche. La parfaite définition de la crème caramel.</p>
<p style="text-align: justify;">Même si je suis chiant sur la cuisson de mon poulet, le dîner fut parfait du début à la fin avec un service plus qu'agréable. Avec deux bières, le repas m'aura coûté 35,10 livres (soit environ 42€) : honnête. Le pire, c'est que c'est une chaîne ...</p>
Quai d'Orsay : satyre de la politique française
2013-11-13T10:57:55+01:00
https://francois.aichelbaum.com/2013/11/13/quai-dorsay-satyre-de-la-politique-francaise
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/visuel-de-la-bande-dessinee-quai-d-orsay-10769693bkdgf_1713.jpg"><img class="alignleft size-thumbnail wp-image-8248" alt="visuel-de-la-bande-dessinee-quai-d-orsay-10769693bkdgf_1713" src="/assets/visuel-de-la-bande-dessinee-quai-d-orsay-10769693bkdgf_1713-150x150.jpg" width="150" height="150" /></a>A croire que c'est la période des adaptations ciné de bandes dessinées françaises, aussi bien dans le Nouveau Monde que sur ce bon Vieux Continent. Cette fois-ci, on adapte une satyre des méandres de la politique française. Le cadre choisi est le ministère des Affaires Etrangères sous le Président Chirac. La méthode choisie pour découvrir ce monde est d'accompagner les premiers pas d'un jeune diplomate dans l'ombre du ministre. Action.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">A croire que le cinéma n'a plus d'idée ... adaptations de bouquins, adaptations de BD, bientôt adaptations de prospectus publicitaires, ... Que dire à part qu'on en mange à toutes les sauces. Pour autant, du franco-français, en comédie, c'est alléchant, surtout avec <em>Popaye</em> comme beau gosse (âgé) de service.</p>
<p style="text-align: justify;">[video]http://www.youtube.com/watch?v=jmwE8aSojrs[/video]</p>
<p style="text-align: justify;">Arthur est un jeune bobo de gauche qui rêve d'un poste prestigieux dans le monde politique française. Heureusement, il est recommandé par bon nombre de ses connaissances auprès du ministre des Affaires Etrangères, Alexandre. Premier hic ? le gouvernement est de droite. Passé ce premier frein, il faut faire ses preuves et trouver ses marques. C'est ainsi que la hiérarchie fort simple (ahem...) de l'administration française s'ouvre à lui et lui permet de découvrir un nouveau monde où les coups bas sont des signes d'amour et les félicitations, des coups en traitres.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/quai-d-orsay.jpg"><img class="alignnone size-thumbnail wp-image-8263" alt="quai-d-orsay" src="/assets/quai-d-orsay-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/b00889f2-5a50-11e2-922f-0c1a40f503f3-493x328.jpg"><img alt="b00889f2-5a50-11e2-922f-0c1a40f503f3-493x328" src="/assets/b00889f2-5a50-11e2-922f-0c1a40f503f3-493x328-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/Quai-d-Orsay-4_reference.jpg"><img alt="Quai-d-Orsay-4_reference" src="/assets/Quai-d-Orsay-4_reference-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/quai-d-orsay-13-11-2013-3-g.jpg"><img alt="quai-d-orsay-13-11-2013-3-g" src="/assets/quai-d-orsay-13-11-2013-3-g-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/quai-d-orsay-13-11-2013-4-g.jpg"><img alt="quai-d-orsay-13-11-2013-4-g" src="/assets/quai-d-orsay-13-11-2013-4-g-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Place à une succession de grandes phrases et citations qui n'ont ni queue ni tête mais où tout à chacun trouvera un sens unique : des qui pro quo en chaîne, des interprétations comiques, ... Le film ne s'arrête jamais et garde un rythme soutenu mais non étouffant. On suit et on se délecte de l'ambiance bonne enfant du film. On trouve toujours une allusion à une expérience passée ou présente qui nous permet de nous identifier à Arthur.</p>
<p style="text-align: justify;">Cependant, trois points font perdre au film sa perfection :</p>
<ul>
<li>la compagne d'Arthur est totalement effacée</li>
<li>parler des expulsions de famille et écoliers est trop dans l'actualité pour en rire dans un film et du coup, la petite anecdote portée à l'écran est mal placée</li>
<li>la fin est catapultée : on est dans le rythme, on s'attend à ce que le film se poursuivre et au final, le générique apparaît à l'écran</li>
</ul>
<p style="text-align: justify;">Pour autant, le film est un régal qu'on savourera à n'importe quelle heure.</p>
Snowpiercer ne fend pas un cheveux en quatre
2013-11-13T09:35:34+01:00
https://francois.aichelbaum.com/2013/11/13/snowpiercer-ne-fend-pas-un-cheveux-en-quatre
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer-le-transperceneige-10988678kixgd_1713.jpg"><img class="alignleft size-thumbnail wp-image-8215" alt="snowpiercer-le-transperceneige-10988678kixgd_1713" src="/assets/snowpiercer-le-transperceneige-10988678kixgd_1713-150x150.jpg" width="150" height="150" /></a>Snowpiercer est basé sur une bande dessinée française du début des années 80. L'idée original est de nous plonger avec les rares survivants de l'espèce humaine dans un train en perpétuel mouvement. Le monde a gelé lors de l'apocalypse déclenchée pour contrer le réchauffement climatique. Très hiérarchisé, ce train segmente son monde en wagons, chacun ayant leur niveau social (les riches en tête, les pauvres en queue) ou leur utilité (école, aquarium, serre, ...). Mais comment vivent ces classes ? Telle est la base de l'oeuvre française et le but annoncé de la transposition ciné.<!--more--></p>
<p style="text-align: justify;">Avant d'aller voir ce film je me suis refusé à lire les critiques, me cantonnant à la bande annonce et les infos que j'ai pu glaner sur la BD (à défaut de la lire pour le moment). Assez motivé ma peur d'un nanard d'action se mélengeait à l'envie de découvrir une psychanalyse sur l'enfermement humain.</p>
<p style="text-align: justify;">[video]http://www.youtube.com/watch?v=DgLCvNbtcFE[/video]</p>
<p style="text-align: justify;">Le film commence en nous décrivant la bétise humaine (une nouveauté tiens) : il y a le <a href="http://francois.aichelbaum.com/le-jour-dapres-hier/">réchauffement climatique</a>, on ne fait que de la pseudo-science de bas étage et on se prend pour des cadors capables de changer le monde. Du coup, tout le monde meurt, sauf une poignée de chanceux, sauver de l'apocalypse par le visionnaire Wilford qui a penser à se préparer une porte de sortie (construction d'un immense réseau ferroviaire parcourant le monde sans fin et d'un train pour s'y promener à grande vitesse).</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer-trailer-2.jpg"><img class="alignnone size-thumbnail wp-image-8230" alt="snowpiercer-trailer-2" src="/assets/snowpiercer-trailer-2-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer_pill.jpg"><img alt="snowpiercer_pill" src="/assets/snowpiercer_pill-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer.jpg"><img alt="snowpiercer" src="/assets/snowpiercer-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer.jpg"></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/Ewen-Bremner-in-Snowpiercer-2013-Movie-Image.jpg"><img alt="Ewen-Bremner-in-Snowpiercer-2013-Movie-Image" src="/assets/Ewen-Bremner-in-Snowpiercer-2013-Movie-Image-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/Critique-Snowpiercer-Le-Transperceneige-illu4.jpg"><img alt="Critique-Snowpiercer-Le-Transperceneige-illu4" src="/assets/Critique-Snowpiercer-Le-Transperceneige-illu4-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Jusque là, tout va bien. Là où la bande dessinée se focalisait sur le vécu et le questionnement des gens de queue, le film lui se focalise sur leur volonté de rebellion. Cette différence notable va faire virer le film pourtant bien parti vers l'action volontaire. Et là est le drame. De l'action, on va en avoir. Bien trop. Le point d'orgue de cette action est l'ouverture du wagon des bouchers : longs impers, haches aiguisées, on sait à l'avance que cela va être un bain de sain. Mais quelle est l'utilité de nous montrer ce bain de sang, de le rallonger pendant de longues minutes au point de le faire devenir écoeurant ?</p>
<p style="text-align: justify;">Tout dans ce film devient dès lors "trop". Trop de violence. Trop de n'importe quoi. Trop d'action. Trop de discours dans le vent. Trop de jeux d'acteur à la petite semelle (Chris Evans est aussi perdu que son personnage). Seule Tida arrive à sortir son épingle du jeu avec un rôle à sa mesure. Mais ce n'est point suffisant pour remonter le niveau du film. Le train se prend pour Titanic et s'enfonce dans les goufres sans fin du nanard d'action que l'on veut vite oublier.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer-affiche.jpg"><img class="aligncenter size-medium wp-image-8236" alt="snowpiercer-affiche" src="/assets/snowpiercer-affiche-221x300.jpg" width="221" height="300" /></a></p>
Le China : le temps d'une soirée à Macao
2013-11-07T09:37:28+01:00
https://francois.aichelbaum.com/2013/11/07/le-china-le-temps-dune-soiree-macao
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/68348691le-china.jpg"><img class="alignleft size-thumbnail wp-image-8191" alt="68348691le-china" src="/assets/68348691le-china-150x150.jpg" width="150" height="150" /></a>Mon petit plaisir est de découvrir des lieux plus ou moins insolites. A force de parler de partenaires et clients chinois au bureau, le nom du China est sortie. Qu'est-ce ? Simplement un immense bar-lounge/restaurant, ambiance Macao, <a href="https://maps.google.fr/maps?ie=UTF-8&gl=fr&daddr=50+Rue+de+Charenton,+75012+Paris&panel=1&f=d&fb=1&dirflg=d&geocode=0,48.849917,2.373834&cid=0,0,4114491717528617127&hq=le+china&hnear=0x47e66e1f06e2b70f:0x40b82c3688c9460,Paris">caché</a> entre Bastille et Ledru-Rollin. Petit retour sur un lieu à partager.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Quand on me parle de Macao et de ses bars, je me souviens de l'ambiance des vieux films dans les restaurants occidentaux de Macao, esprit feutré, luxe, calme ; toujours un crooner ou une chanteuse pour mettre l'ambiance et motiver la clientèle à consommer ; un nuage de fumée dégagé par les cigares de ces messieurs et les cigarettes de ces dames. Ici, loi française oblige, on oublie la fumée, mais on conserve tout le reste.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/20070120_le-china-club-paris-lili_015.jpg"><img class="alignnone size-thumbnail wp-image-8194" alt="20070120_le-china-club-paris-lili_015" src="/assets/20070120_le-china-club-paris-lili_015-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/dsc_0333.jpg"><img class="alignnone size-thumbnail wp-image-8197" alt="dsc_0333" src="/assets/dsc_0333-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/Restaurant-Le-China.jpg"><img class="alignnone size-thumbnail wp-image-8200" alt="Restaurant-Le-China" src="/assets/Restaurant-Le-China-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">De l'extérieur, cela ne paie pas de mine et on s'attend à un restaurant Chinois un peu luxe mais quelconque. Pénétrez et vous découvrirez trois salles immenses et magnifiques, celle du bas étant dédié aux concerts privés. De la pop, du jazz, des musiques diverses, le plaisir auditif sera là (juste pu entendre les répétitions question de temps).</p>
<p style="text-align: justify;">Cela reste un bar et un restaurant. Le lieu est dédié aux cocktails, alcoolisés ou non. Vautré dans les canapés en cuir, on appréciera les mélanges généreux en tout servis par les charmantes hôtesses. La nourriture est bonne, sans être exceptionnelle et conviendra parfaitement à l'accompagnement des boissons. Installés pour dîner, la carte des vins prendra la place de celles des cocktails pour le plaisir de vos papilles.</p>
<p style="text-align: justify;">Une courte soirée m'a permis de découvrir ce mieux totalement dépaysant. Un plaisir à tous les niveaux qui se renouvellera sûrement, mais avec modération, les tarifs étant un peu élevés.</p>
Malavita : tu ne toucheras pas à la Famille
2013-10-23T16:08:03+02:00
https://francois.aichelbaum.com/2013/10/23/malavita-tu-ne-toucheras-pas-la-famille
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita_600C.jpg"><img class="alignleft size-thumbnail wp-image-8110" alt="malavita_600C" src="/assets/malavita_600C-150x150.jpg" width="150" height="150" /></a>Qui ne se souvient pas d'une des règles sacrés imposées par tout Parrain, <a href="http://www.youtube.com/watch?v=FaUq4h818E8">Don Corleone</a> en tête : on ne doit pas toucher à la Famille. Bien qu'ayant endossé le rôle du Parrain en devenir, joue aujourd'hui avec le feu en violant cette règle. Malavita signifie <em>pègre</em> en italien. C'est aussi le nom du fichier des <em>Blakes</em> dans ce film. C'est surtout le nom donné à ceux qui pourchassent De Niro et sa famille.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Produit par Scorsese, réalisé par Besson, ce film ne fait pas dans la demi-mesure sans pour autant jouer d'un spectale "trop" en tout.</p>
<p style="text-align: justify;">[video]http://www.youtube.com/watch?v=jeXQjWnSWEk[/video]</p>
<p style="text-align: justify;">Il faut dire qu'on fait dans l'évidence des rôles :</p>
<ul>
<li>Robert De Niro en mafieux</li>
<li>Tommy Lee Jones en agent gouvernemental</li>
<li>Michelle Pfeiffer en femme pas très net mais présentant très bien</li>
</ul>
<p style="text-align: justify;">Alors que nous raconte Malavita ? Déjà que le chien Malavita est trop absent de l'écran. Dommage. On nous présente une famille qui est parfaitement en harmonie au niveau des dérapages, pour autant, le chien ... ne nous apporte rien. Dommage, vu son nom. Par contre le film Malavita nous raconte beaucoup de chose sur le repenti De Niro et sa famille qui ont du mal à perdre leurs (mauvaises) habitudes. Après tout, il ne faut jamais manquer de rester à la Famille.</p>
<p style="text-align: justify;">En près de deux heures de séance, le film n'a que peu de réels temps d'arrêt. A la rigueur, il s'agit plus de moment pour nous laisser reprendre notre souffle, tel le torturé que l'on plonge dans la baignoire pour faire avouer ses crimes. Pour le coup, j'ai envie d'avouer mon crime du jour : avoir aimé ce film.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/undefined_66c786bee3c46f7aacde1b41f9961762.jpg"><img class="alignnone size-thumbnail wp-image-8113" alt="undefined_66c786bee3c46f7aacde1b41f9961762" src="/assets/undefined_66c786bee3c46f7aacde1b41f9961762-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita-cinema-deniro-besson-mafia-2059335-jpg_1816226.jpg"><img alt="malavita-cinema-deniro-besson-mafia-2059335-jpg_1816226" src="/assets/malavita-cinema-deniro-besson-mafia-2059335-jpg_1816226-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita-photo-51aee86c0bba9.jpg"><img alt="malavita-photo-51aee86c0bba9" src="/assets/malavita-photo-51aee86c0bba9-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/Malavita-Photo-Dianna-Agron-John-D-Leo-Michelle-Pfeiffer-01.jpg"><img alt="Malavita-Photo-Dianna-Agron-John-D-Leo-Michelle-Pfeiffer-01" src="/assets/Malavita-Photo-Dianna-Agron-John-D-Leo-Michelle-Pfeiffer-01-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita-luc-besson-critique-film-robert-de-niro-tommy-lee-jones-europacorp.jpg"><img alt="Film Title: The Family" src="/assets/malavita-luc-besson-critique-film-robert-de-niro-tommy-lee-jones-europacorp-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Loin du gros spectacle Hollywoodien, ce film, planté dans un décors de Normandie, respire la vie à la campagne, loin de la folie de la ville, mais surtout de la folie mafieuse. Puis l'on se rappelle qu'une famille, c'est avant tout une réunion de membres, et que dire sur ceux de la famille Blakes !</p>
<p style="text-align: justify;">Certes, le film ne rentrera jamais au panthéon du 7e art comme son aïeul Le Parrain. Pour autant, il est rafraichissant, plus encore que le fût Mafia Blues que l'on sentait poussif et forcé. Là tout semble si naturel pour cette famille. Allez voir cette famille et surtout, souvenez-vous : respectez la Famille !</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/Malavita-movie-Poster-malaysia-large.jpg"><img class="size-medium wp-image-8107 aligncenter" alt="Malavita movie Poster malaysia large" src="/assets/Malavita-movie-Poster-malaysia-large-207x300.jpg" width="207" height="300" /></a></p>
Neuf mois ferme : allez tout droit en prison ... ou pas
2013-10-18T16:48:37+02:00
https://francois.aichelbaum.com/2013/10/18/neuf-mois-ferme-allez-tout-droit-en-prison-ou-pas
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/neuf-mois-ferme.jpg"><img class="alignleft size-thumbnail wp-image-8137" alt="neuf-mois-ferme" src="/assets/neuf-mois-ferme-150x150.jpg" width="150" height="150" /></a>Quand on pense à Dupontel, on pense à un personnage déjanté. Quand on pense à Dupontel en tant que réalisateur, on pense à la première grosse claque reçue : Bernie. Prenez Bernie, rendez-le presque intelligent, dans un univers plus propret et vous obtenez neuf mois ferme. En tout cas, c'est ainsi que j'ai pressenti ce film avant de pénétrer dans une salle obscure.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Ariane, juge bobo, coincée, persuadée que les hommes ne servent à rien, ne vit que pour et par son boulot. Elle en fait trop. Ses collègues le savent et la retrouve logiquement à son bureau alors que tout le monde fête la St Sylvestre dans le Grand Hall. Traînée sur les lieux de la débauche, elle est contrainte de rentrer dans le moule et de boire plus que raison. Voilà son crime : avoir céder et voulu faire comme les autres.</p>
<p style="text-align: justify;">[video]http://www.youtube.com/watch?v=YFJ1XAZh2OI[/video]</p>
<p style="text-align: justify;">Six mois plus tard, malade, elle se rend compte qu'elle est enceinte. Et voici que notre juge décide de détourner les moyens légaux mis à sa disposition pour son propre bénéfice : mener une petite enquête pour trouver le père de sa progéniture. Malheureusement pour elle, le père est <del>Bernie</del>, pardon, Bob Nolan. Ce tôlard multi-récidiviste, soucieux de prouver son innocence dans une autre histoire abracadabrantesque, propose un échange de bon procéder à notre juge.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/9+MOIS+FERME+PHOTO5.jpg"><img class="alignnone size-thumbnail wp-image-8143" alt="9+MOIS+FERME+PHOTO5" src="/assets/9+MOIS+FERME+PHOTO5-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/hqdefault.jpg"><img class="alignnone size-thumbnail wp-image-8146" alt="hqdefault" src="/assets/hqdefault-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/160x120-nIw.jpg"><img class="alignnone size-thumbnail wp-image-8149" alt="160x120-nIw" src="/assets/160x120-nIw-150x120.jpg" width="150" height="120" /></a></p>
<p style="text-align: justify;">Et c'est alors parti pour 1h20 de délire à la Dupontel. Impossible de garder son sérieux plus de 30 secondes. Les rares fois où l'on croit pouvoir, c'est simplement pour rire de plus belle. Je ne saurais dire que ceci : "Merci Albert pour la séance d'abdos, ca fait du bien avec le popcorn". Un film rafraichissant où même la plus fervente supporter du "pas besoin des hommes" ne restera pas indifférente à notre cher Albert.</p>
<p style="text-align: justify;">Par contre, petite question, Albert : vous en avez déjà parler à un psy de votre soucis avec votre mère ? Parce qu'entre le vide-ordure et le four, les mères que vous dépeigner ont de gros soucis avec leur progéniture.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/9-mois-ferme-affiche.jpg"><img class="aligncenter size-medium wp-image-8152" alt="9-mois-ferme-affiche" src="/assets/9-mois-ferme-affiche-211x300.jpg" width="211" height="300" /></a></p>
River Café : un repas à la mer !
2013-10-18T11:15:11+02:00
https://francois.aichelbaum.com/2013/10/18/river-cafe-un-repas-la-mer
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/logorouge2012.jpg"><img class="alignleft size-thumbnail wp-image-8071" alt="River CAfé" src="/assets/logorouge2012-150x150.jpg" width="150" height="150" /></a>Enfin pas à la mer, mais sur la Seine en tout cas. Pour ceux qui ne connaissent pas, le River Café est un restaurant installé sur une péniche sur les quais d'Issy-les-Moulineaux. Cadre luxe, service élégant, une partie de la péniche beigne dans une musique jazzy live. Tout les ingrédients semblent réunis pour passer une excellente soirée. Retour sur un repas d'affaire au <a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=146,+quai+de+la+Bataille+Stalingrad+92130+Issy-les-Moulineaux&aq=&sll=49.369262,0.934342&sspn=3.01207,5.817261&vpsrc=0&ie=UTF8&hq=146,+quai+de+la+Bataille+Stalingrad+92130+Issy-les-Moulineaux&hnear=&radius=15000&t=m&z=13&iwloc=A&cid=13642224695209874177">River Café</a>.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">On débute avec une mauvaise surprise à l'arrivée alors que nous avions réservé via le site de La Fourchette pour un dîner le vendredi soir. On nous annonce que les réservations via La Fourchette donnent droit à une promotion (traduire : une salle sans concert) et qu'il faut les appeler pour réserver une table avec concert. J'ai beau lire et relire <a href="http://www.lafourchette.com/restaurant/river-cafe/4376#restaurant_reservation">la page sur le site de réservation</a>, il est bien possible de réserver directement en ligne pour une table avec concert. Peu honnête et le "on va vous prévenir dès qu'une table se libèrera" alors que la salle n'est pas remplie passe moyennement (et cet engagement ne sera jamais respecté). Bref, on démarre sur une note malhonnête de la part du maître d'hôtel.</p>
<p style="text-align: justify;">On est donc quatre pour un repas d'affaire mais je vais me focaliser sur ma part du diner. En entrée, des ravioles au foie gras accompagné de cèpes poêlés. Pour avoir pu manger cette entrée dans bons nombres de restaurant, la critique et la comparaison est aisée. De même, il est clairement définit que les champignons ont un goût prononcé qui noie facilement celui du foie gras. Malheureusement, ici on nous rappellent très vite cette règle : les ravioles n'ont que des miettes de foie gras (donc aucun goût à sentir) et le tout baigne dans une soupe aux champignons (je croyais que c'était l'accompagnement). On est loin de la qualité énoncé. Petite aparté, un collègue a pris une terrine des champignons ... et a eu une bonne indigestion pour tout le WE. De là à dire que certains produits sont peu frais et qu'il faut s'en débarrasser au plus vite en augmentant les quantités par rapport au reste, il n'y a qu'un pas.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/01843809_PVI_0001_HOME.jpg"><img class="alignleft size-thumbnail wp-image-8074" alt="01843809_PVI_0001_HOME" src="/assets/01843809_PVI_0001_HOME-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/image.jpg"><img class="alignleft size-thumbnail wp-image-8077" alt="image" src="/assets/image-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/photo-restaurant-River-Cafe-199-163-2.jpg"><img class="alignleft size-thumbnail wp-image-8080" alt="photo-restaurant-River-Cafe-199-163-2" src="/assets/photo-restaurant-River-Cafe-199-163-2-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">Le plat, est plus simple ne se rappelle à mon bon souvenir que par les frites maison qui l'accompagnait. La tartare choisi était déjà préparé, peu épicé, sans oeuf. Certes la viande était fraiche (encore heureux sur un tartare) mais le goût était relativement absent.</p>
<p style="text-align: justify;">La fin du repas a été marquée par le choix quasi unanime d'un Paris-Brest au Nutella. Ce dessert riche sait rester léger. On l'apprécie d'autant plus en tout fin de soirée avant de devoir reprendre la route. Un vrai régal qui relève le niveau global de cette péniche.</p>
<p style="text-align: justify;">Quand je lis les commentaires sur les différentes sites pour ce restaurant, je me dis que beaucoup se laisse éblouir par les artifices mis en oeuvres à travers la décoration (luxe), le service (pro) et les plats (bien présentés). Sûrement que la musique Jazz réhausse également le cadre. Cependant, la qualité n'est vraiment pas au rendez-vous, la vue est absente, et bien des brasserie parisienne font bien mieux à tous les niveaux et à un prix bien moindre. Ce n'est pas une péniche que je recommanderais.</p>
</p></p></p></p></p>
T.S. Spivet : un oisillon prend son envol
2013-10-16T11:39:33+02:00
https://francois.aichelbaum.com/2013/10/16/t-s-spivet-un-oisillon-prend-son-envol
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/t.s-pivet-jeunet-bonham-carter.gif"><img class="alignleft size-thumbnail wp-image-8095" alt="t.s-pivet-jeunet-bonham-carter" src="/assets/t.s-pivet-jeunet-bonham-carter-150x150.gif" width="150" height="150" /></a>Avec son titre français à rallonge (bien que l'original ne soit pas si court), <em>L'extravagant voyage du jeune et prodigieux T.S. Spivet</em> annonce un voyage initiatique intéressant. On hésite à avoir un voyage fantastique mais la bande annonce nous rappelle que le voyage est extravagant et que la force du film est dans son jeune acteur.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Le jeune T.S. Spivet, petit garçon de 12 ans perdu dans sa famille, entre des parents trop pris par leurs activités à la ferme, et une soeur superficielle qui le dénigre en permanence, décide de fuguer à l'occasion d'un quiproquo qui le mènera à Washington, D.C. pour une remise de prix scientifique.</p>
<p style="text-align: justify;">[video]http://www.youtube.com/watch?v=aZe7i1Ty5f4[/video]</p>
<p style="text-align: justify;">Quand je lis Jean-Pierre Jeunet, je pense à du très bon (<a href="http://www.youtube.com/watch?v=H5GxLFdUC6g">La cité des enfants perdus</a>) et à du très mauvais (<a href="http://www.youtube.com/watch?v=aip3836VtZ0">Le fabuleux destin d'Amélie Poulin</a> - bah oui). Du coup, je ne sais trop à quoi m'attendre. Mais bon, le synopsis m'intrigue tout autant que la bande annonce alors j'y vais.</p>
<p style="text-align: justify;">Démarre alors le voyage initiatique et poétique du jeune T.S.. Et c'est avec plaisir qu'on l'accompagne dans son périple à travers l'Amérique, tel le vagabond caché dans son train de marchandise. T.S., c'est ce genre de petit garçon qui ne se sent pas à sa place dans son Montana natal et qui passe son temps à analyser son monde, le comprendre, et l'imaginer pour pouvoir fuir son quotidien.</p>
<p style="text-align: justify;">Touchant dans le jeu du petit, l'histoire l'est tout autant et on vibre pour lui quand il nous raconte son quotidien et le passé de son frère jumeau, très différent de lui. On s'imagine l'accompagnant durant son périple, asseyant de l'aider dans l'adversité. Des personnages hauts en couleurs parsèment également la route du jeune T.S..</p>
<p style="text-align: justify;">Malheureusement, le film se veut léger et finit de manière trop catapultée. L'envie de Jeunet d'en finir pour ne pas avoir un film trop long se fait sentir. Les derniers évènements se précipitent à une vitesse où le film en devient presque indigeste alors que jusque là on se délectait du récit. La poésie jusque lors enivrante laisse sa place à un mélange entre plaisir et stupeur. Un travail bâclé sur une histoire et une mise en scène magnifique.</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/carte-postale-spivet-1.jpg"><img class="size-large wp-image-8092 aligncenter" alt="carte postale spivet-1" src="/assets/carte-postale-spivet-1-1024x687.jpg" width="584" height="391" /></a></p>
Judgement Day - Ash of Sound
2013-09-30T17:10:25+02:00
https://francois.aichelbaum.com/2013/09/30/judgement-day-ash-sound
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/11/a27c573829ec10ac82497cfbb9c8c872.jpeg"><img class="alignleft size-thumbnail wp-image-8161" alt="a27c573829ec10ac82497cfbb9c8c872" src="/assets/a27c573829ec10ac82497cfbb9c8c872-150x150.jpeg" width="150" height="150" /></a>Pour ceux qui connaissent ce blog depuis assez longtemps, vous savez que je suis quelques artistes autant que je le peux. Les <a href="http://www.ashofsound.fr/">Ash of Sound</a> font parti de ces groupes que je prend plaisir à écouter régulièrement. Ils sont également à l'origine de la <a href="http://francois.aichelbaum.com/artistes-de-la-webradio-2/rock/ash-of-sound/">webradio</a> que j'avais mis en place ici (désactivée pour le moment). A l'occasion de l'ouverture de leur site, ils avaient profité pour mettre en ligne leur nouveau single : Judgement Day.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Jour du jugement donc à travers ce billet de la nouvelle affiche que tiennent les Ash. Ok j'ai un peu traîné (comme pour mes autres billets dont je rattrape le retard aujourd'hui), mais toute bonne chose sait se faire attendre, comme ce clip sur fond d'Hitman :</p>
<p style="text-align: justify;">[video]http://www.youtube.com/watch?feature=player_embedded&v=5Gi3NNZuSpc[/video]</p>
<p style="text-align: justify;">Quand j'ai découvert le nouveau clip, j'ai écouté... plus d'une fois... et mes réactions furent assez claires et directes (dans l'ordre) :</p>
<ul>
<li>tiens un peu d'électro ?</li>
<li>tiens le clip a des airs de Money for Nothing ?</li>
<li>hmmm en fait non, c'est plus dans le style (sonorité/voix) d'un U2 de la fin des années 90</li>
</ul>
<p style="text-align: justify;">Puis je me suis laissé porter par le son, sans les images ... puis par le son avec les images... J'accroche vraiment au nouveau style que l'électro leur apporte, grâce à l'intégration de Lionel dans le groupe. Vraiment un plaisir d'écouter ce groupe en boucle.</p>
<p style="text-align: justify;">Bon, par contre les gars, le logo à la Avenger, ca le fait moyen. J'ai beau être fan, là non. Mais bon, je suis un râleur-né !</p>
L'Oga : voyage gustatif dans le 11e
2013-09-07T09:33:20+02:00
https://francois.aichelbaum.com/2013/09/07/loga-voyage-gustatif-dans-le-11e
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/09/restaurant-paris-l-oga-235_1.jpg"><img class="alignleft size-thumbnail wp-image-8026" alt="restaurant-paris-l-oga-235_1" src="/assets/restaurant-paris-l-oga-235_1-150x150.jpg" width="150" height="150" /></a>Ce vendredi, plusieurs choses à fêter. Du coup, on cherche un restaurant totalement atypique pour le cadre et pour la nourriture. Nous jettons notre dévolu sur <a href="https://maps.google.fr/maps?ie=UTF-8&gl=fr&daddr=82+Rue+Jean-Pierre+Timbaud,+75011+Paris&panel=1&f=d&fb=1&dirflg=d&geocode=0,48.867437,2.376660&cid=0,0,11808670744540967106&hq=L'oga">L'Oga</a>, un restaurant dans le 11<sup>e</sup>. Le restaurant semble spécialisé dans les brunch (assez honéreux pour le quartier) mais propose également une carte pour le soir assez surprenante. En effet, on y parle de viande de crocodile, de zèbre, ...</p>
<p><!--more--></p>
<p style="text-align: justify;">Réservation faite, il s'avère, en arrivant bien plus tôt qu'il y avait de la place. On demande pour pouvoir déjeuner plus tôt, grand sourire du serveur qui nous place directement. Et là, nous découvrons le cadre. Un mélange entre du Rainforest et du baroque. On ne sait pas trop où on est. L'éclairage faible est propice aux diners aux chandelles ... déjà allumées sur les tables. Pile ce qu'il nous fallait comme cadre.</p>
<p style="text-align: justify;">On peut alors s'attaquer à la carte. Là, un rouleau façon vieille carte au trésor nous est apporté. On le déroule pour découvrir une carte pas très longue sur le choix, mais qui en dit long sur le type de nourriture. Ici, on cherche réellement le dépaysement dans la nourriture. Cependant, il faut contenter toute le monde et les moins téméraires trouveront aussi de quoi manger. Les plats sont choisis :</p>
<ul>
<li>Entrées
<ul>
<li>Poisson tropical : un carpaccio de poisson exotique (rupture pour l'occasion donc remplacé par du thon) avec du lait de coco, des épices, ...</li>
<li>Des gambas : le secret réside dans la préparation donc ... à découvrir</li>
</ul>
</li>
<li>Plats
<ul>
<li>Un mi-cru de thon</li>
<li>De la viande de crocodile à la vanille accompangée de frittes de patates douces</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Les plats se dégustent sans fin et les portions sont vraiment généreuses. Mais, tout bon repas qui se respecte s'accompagne d'un bon vin. La carte des vins du monde est longue et on décide de choisir un rouge d'Afrique du Sud : Le Fort Simon. La carte annonce beaucoup de choses le concernant ... toutes sont validées : vanillé, fumé, fort en bouche. Au final, il accomode parfaitement le repas jusqu'à l'arrivée des desserts.</p>
<p style="text-align: justify;">Une nouvelle carte, assez simple, nous est présentée. Notre choix se porte sur un trio de glaces (miel/lavande, gingembre, ...) et un cheesecake au chocolat blanc. On se disait avant le dessert que la cuisine était bonne mais là ... Tout se termine parfaitement. Un petit café de mon côté. De l'autre, une tisaine d'herbes fraîches (il est possible de les mélanger).</p>
<p style="text-align: justify;">Une véritable découverte. Un véritable dépaysement. Si vous cherchez de l'atypique pour un dîner romantique c'est l'adresse idéale. Cependant, il ne fait que frôler la perfection. Alors que le repas et le cadre sont complétés par un service irréprochable, le réveil se révélera brutale avec l'arrivée de la douloureuse. 126 € pour deux. Le souvenir reste cependant plus que positif.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/09/15787.jpg"><img alt="15787" src="/assets/15787-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/09/images-loga6.jpg"><img alt="images-loga6" src="/assets/images-loga6-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/09/41400061.jpg"><img alt="41400061" src="/assets/41400061-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/09/15787.jpg"> </a></p>
Pacific Rim : quand Godzilla rencontre Evangelion
2013-07-12T10:45:29+02:00
https://francois.aichelbaum.com/2013/07/12/pacific-rim-quand-godzilla-rencontre-evangelion
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/Pacific-Rim-02.jpg"><img class="alignleft wp-image-7972" alt="Pacific Rim" src="/assets/Pacific-Rim-02-300x300.jpg" width="180" height="180" /></a>Il y a de ces blockbusters que l'on attend car la bande-annonce fait résonner plein de souvenirs dans notre petite tête et du coup, titille notre curiosité et notre impatience. C'est le cas de Pacific Rim. Pour autant certains points de la promotion me choquent. Par exemple, pourquoi diable avoir deux pilotes ? Jeudi soir, Julien de <a href="http://www.golem13.fr" target="_blank">Golem13</a> m'a refilé des invit' pour l'avant-première au Normandie. Retour sur plus de 2h de transpiration dans la salle obscure.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=dY9wTJYLLcs[/video]</p>
<p style="text-align: justify;">Pour commencer, merci Julien, j'ai pris de l'avance pour une fois sur mon programme ciné ! De plus, merci UGC de ne pas avoir allumé la climatisation de la salle vu la température extérieure : on aurait pu s'enrhumer bêtement.</p>
<p style="text-align: justify;">Quand j'ai vu les premières images de promotion, je me suis dit : tiens, ils font une version <em>Live Action</em> d'<a href="http://www.youtube.com/watch?v=0kFhPVAhV_o">Evangelion</a>. Puis j'ai vu les monstres : tiens, ils font un nouveau <a href="http://www.youtube.com/watch?v=j0ortFzKzyo">Godzilla</a>. Puis la date est annoncé : été 2013. Après <a href="http://francois.aichelbaum.com/la-croisiere-samuse/">Battleship</a> en 2012 qui fut mémorable (ou pas), ce sera donc Pacific Rim le blockbuster pour griller les neurones cet été. Il faut aussi rajouter qu'avec la promotion en parallèle du nanard de chez The Asylum, <a href="http://www.youtube.com/watch?v=TVpQmZmKNmo">Atlantic Rim</a>, il faut bien voir l'original pour pouvoir d'autant plus rire sur l'autre.</p>
<p style="text-align: justify;">Pour avoir pu apprécier le travail de Guillermo del Toro sur les <a href="http://www.youtube.com/watch?v=zphI_LLGWdM">Hellboy</a> ou encore le <a href="http://www.youtube.com/watch?v=GqHW3CyI7co">Labyrinthe de Pan</a>, j'espère encore un travail dans le détail et la qualité avant d'y aller. Et pour cela, on est servi. Un véritable feu d'artifice d'animations et de couleurs. C'est propre. C'est fluide. C'est beau. Les yeux pétillent. Par contre, la 3D est à bannir car elle <em>floute</em> l'action (en retirant les lunettes, plus de flou). D'ailleurs, sur ce dernier point, il ne faut pas que Guillermo del Toro ne voulait pas de la 3D avant qu'un gros chèque ne lui soit présenté.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific-rim-jaegers.jpg"><img class="alignnone size-thumbnail wp-image-7984" alt="pacific-rim-jaegers" src="/assets/pacific-rim-jaegers-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacificrim_movie_trailer2_cap8.jpg"><img class="alignnone size-thumbnail wp-image-7990" alt="pacificrim_movie_trailer2_cap8" src="/assets/pacificrim_movie_trailer2_cap8-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/Pacific_Rim_Main_Trailer_32.jpg"><img class="alignnone size-thumbnail wp-image-7987" alt="Pacific_Rim_Main_Trailer_32" src="/assets/Pacific_Rim_Main_Trailer_32-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific-rim-infographic.jpg"><img class="alignnone size-thumbnail wp-image-7981" alt="pacific-rim-infographic" src="/assets/pacific-rim-infographic-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/Pacific-Rim-final-trailer-bande-annonce-finale-image-Guillermo-Del-Toro-Warner.jpg"><img class="alignnone size-thumbnail wp-image-7978" alt="Pacific-Rim-final-trailer-bande-annonce-finale-image-Guillermo-Del-Toro-Warner" src="/assets/Pacific-Rim-final-trailer-bande-annonce-finale-image-Guillermo-Del-Toro-Warner-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/1229446_pacific-rim.jpg"><img class="alignnone size-thumbnail wp-image-7963" alt="1229446_pacific-rim" src="/assets/1229446_pacific-rim-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/Jaeger_sketches_pacific_rim.jpeg"><img class="alignnone size-thumbnail wp-image-7966" alt="Jaeger_sketches_pacific_rim" src="/assets/Jaeger_sketches_pacific_rim-150x150.jpeg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific-rim-17-07-2013-10-g.jpg"><img class="alignnone size-thumbnail wp-image-7969" alt="pacific-rim-17-07-2013-10-g" src="/assets/pacific-rim-17-07-2013-10-g-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Le scénario est à la limite d'un film de série Z mais Guillermo a su le rendre suffisamment sexy pour nous garder accroché. Pour autant, tout reste excessivement téléscopé. Un peu dommage. Le point le plus intrigant et qui reste le plus comique est le pilotage des Jaeger (les robots). Pourquoi diable avoir mis deux pilotes qui doivent se connecter (on dit "dériver") mentalement pour pouvoir piloter ? La seule raison valable que je vois, c'est le clin d'oeil aux bons vieux <a href="http://www.youtube.com/watch?v=JoMuo-Om0sQ">Sentai</a>. Quelques autres scènes risibles font que le film fleurte dangereusement avec les nanards. Attention, M. del Toro !</p>
<p style="text-align: justify;">Des moments d'anthologie remonte un peu le niveau et font appel à l'inconscient Geek du public. C'est le cas de l'arrivée d'Hannibal Chow (joué par Ron Perlman) qui t'explique que tout en lui est faux : du nom au costume. Pour autant, il ne faut pas se moquer de lui car il tient à son image ... et à ses chaussures !</p>
<p style="text-align: justify;">Le film tient au final son engagement : nous en mettre plein la vue, narguer les nanards sans en être un, et nous griller les quelques neurones qui auraient survécus à la chaleur. Pour autant, toujours pas le film de SF de la décennie.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific_rim_affiche_03.jpg"><img class="aligncenter size-medium wp-image-7996" alt="Pacific Rim" src="/assets/pacific_rim_affiche_03-202x300.jpg" width="202" height="300" /></a></p>
Copenhague
2013-05-12T10:00:36+02:00
https://francois.aichelbaum.com/2013/05/12/copenhague
<p>[gallery ids="10362,10361,10360,10359,10358,10357,10356,10355,10354,10353,10352,10351,10350,10349,10348,10347,10346,10345,10344,10343,10342,10341,10340,10339,10338,10337,10336,10335,10334"]</p>
Fjords norvégiens
2013-05-04T10:54:30+02:00
https://francois.aichelbaum.com/2013/05/04/fjords-norvegiens
<p>[gallery ids="9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,9597,9598,9599,9600,9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9631,9632,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,9644,9645,9646,9647,9648,9649,9650,9651,9652,9653,9654,9655,9656,9657,9658,9659,9660,9661,9662,9663,9664,9665,9666,9667,9668,9669,9670,9671,9672,9673,9674,9675,9676,9677,9678,9679,9680,9681,9682,9683,9684,9685,9688,9691,9694,9696,9698,9702,9705,9708,9711,9715,9718,9721,9725,9729,9733,9736,9739,9742,9745,9749,9753,9755,9759,9762,9765,9769,9773,9776,9779,9781,9784,9788,9791,9793,9796,9798,9800,9802,9804,9806,9808,9810,9811,9813,9815,9817,9819,9820,9822,9824,9827,9829,9831,9833,9835,9837,9840,9842,9845,9847,9849,9851,9853,9855,9857,9859,9861,9864,9866,9868,9870,9872,9874,9876,9877,9879,9881,9883,9885,9887,9889,9891,9893,9895,9896,9898,9900,9901,9903,9904,9906,9907,9909,9910,9912,9913,9915,9917,9918,9919,9921,9922,9924,9926,9927,9929,9930,9932,9933,9935,9937,9938,9940,9942,9944,9946,9948,9950,9951,9954,9955,9957,9958,9960,9961,9963,9964,9966,9968,9969,9971,9972,9974,9976,9978,9981,9982,9984,9985,9987,9989,9990,9993,9995,9997,9999,10001,10003,10005,10007,10009,10011,10013,10015,10017,10019,10020,10022,10024,10026,10028,10030,10033,10035,10037,10039,10042,10044,10047,10049,10052,10054,10056,10058,10061,10063,10065,10067,10069,10071,10073,10075,10077,10080,10082,10085,10087,10089,10091,10093,10095,10097,10099,10101,10103,10105,10107,10109,10111,10114,10115,10118,10120,10122,10125,10127,10129,10131,10134,10137,10140,10142,10145,10147,10149,10151,10153,10156,10159,10162,10164,10167,10169,10171,10173,10176,10179,10182,10183,10186,10189,10191,10193,10195,10196,10198,10201,10203,10205,10207,10209,10210,10212,10215,10217,10219,10221,10223,10226,10228,10231,10233,10235"]</p>
Warm bodies : Roméo et Juliette dans Zombieland
2013-03-28T10:00:27+01:00
https://francois.aichelbaum.com/2013/03/28/warm-bodies-romeo-et-juliette-dans-zombieland
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/Warm-Bodies_portrait_w858.jpg"><img class="alignleft size-thumbnail wp-image-7894" alt="Warm Bodies" src="/assets/Warm-Bodies_portrait_w858-150x150.jpg" width="150" height="150" /></a>Alors que la mode hollywoodienne est au mauvais remake, certains films donnent dans la création ou l'adaptation de livres. C'est le cas de Warm Bodies qui reprend la nouvelle d'Isaac Marion. On reprend donc l'éternel fin du monde qui déclenche le réveil des morts et on le vit autrement. Entamée du point de vue des zombies, l'histoire se transforme vite en Roméo et Juliette version horreur comique. Dressez-vous. Soyez raides. Jouer-la ... zombie !<!--more--></p>
<h1 style="text-align: justify;">Un zombie peut en cacher un autre</h1>
<p style="text-align: justify;">Quand on parle zombie, on pense d'abord aux oeuvres du Maître (<a href="http://www.allocine.fr/personne/fichepersonne_gen_cpersonne=5409.html">Georges A. Romero</a>) puis aux petites perles (<a href="http://www.youtube.com/watch?v=NPbsp_nFj7M">Zombieland</a> ou <a href="http://www.youtube.com/watch?v=5I6M_C9XUE0">Shawn of the Dead</a>). Bien que ces derniers soient volontairement comiques, pour se démarquer de la forte vague de films zombifiés, le point de vue est toujours le même. Le zombie est mort. Le zombie est con. Le zombie est inutile. Le zombie a faim. Mais si ce n'était pas le cas ?</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=CUDdGX78_6E[/video]</p>
<p style="text-align: justify;">Alors pour toute justification sur la présence des zombies, vous n'aurez le droit qu'à un simple zapping express avec des séquences non sans rappeler d'autres film. R(omeo) est donc un zombie. Il est conscient mais n'a plus de souvenir. Il cherche à survivre dans ce que la vie lui a imposé : être un mangeur de chair. Il nous présente alors ses habitudes, ses balades entre potes zombifiés, ... leur quête à la nourriture. On notera rapidement le titre Québécois du film : <em>Zombie malgré lui</em>. Mais que se passerait-il si le destin mettait sur sa route une jeune petite blonde charmante ?</p>
<p style="text-align: justify;">Julie(tte) est une humaine tout ce qu'il y a de plus vivante. Elle vit dans la dernière colonie humaine, protégée par une immense enceinte entourant un centre ville américain. Elle fait partie d'une équipe expéditionnaire, chargée de trouver des ravitaillements (nourriture, médicaments, ...). Perdue dans sa relation avec son petit ami, que se passerait-il si le destin la mettait sur la route d'un jeune zombie en mal de vie ?</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/130203-warm-bodies-600-1359923802.jpg"><img class="size-thumbnail wp-image-7903 alignnone" alt="Warm Bodies" src="/assets/130203-warm-bodies-600-1359923802-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/20476531.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx.jpg"><img class="alignnone" alt="Warm Bodies" src="/assets/20476531.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/nicholas-hoult-warm-bodies.jpg"><img class="alignnone" alt="Warm Bodies" src="/assets/nicholas-hoult-warm-bodies-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/WarmBodies201312_zpsfdf9206e.jpg"><img class="alignnone" alt="Warm Bodies" src="/assets/WarmBodies201312_zpsfdf9206e-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/Warm-Bodies-121213-02.jpg"><img class="alignnone" alt="Warm Bodies" src="/assets/Warm-Bodies-121213-02-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/Warm-Bodies-image-3.jpg"><img class="alignnone" alt="Warm Bodies" src="/assets/Warm-Bodies-image-3-150x150.jpg" width="150" height="150" /></a> <a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/warm-bodies-poster.jpg"><img class="size-thumbnail wp-image-7921 alignnone" alt="Warm Bodies" src="/assets/warm-bodies-poster-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Le destin fait son travail. Les chemins se croisent. Les regards se croisent. R mange le petit copain de Julie et apprécie particulièrement son cerveau. C'est un met tellement délicat qui en plus, permet de s'approprier les souvenirs de la victime. Tout est fait pour que les deux puissent tomber amoureux. Là, le cadavre peut alors se réchauffer. Malheureusement, la famille de Julie est vivante et celle de R n'est que zombie. Nos Roméo & Juliette vont donc apprendre à se connaître, à s'aimer ... et à se sauver.</p>
<p style="text-align: justify;">Le film est très léger et alterne petites erreurs du scénario et travail fin sur les détails. Par exemple, on appréciera le travail des nuances de couleur de peau de R qui évoluent tout au long du film. Ce n'est pas sans rappeler le travail de nuance des tenues de Rose Da Silva dans le <a href="http://www.youtube.com/watch?v=8xw434qnAyg">Silent Hill</a> de Christophe Gans.</p>
<p style="text-align: justify;">Véritable hymne à la vie et à l'amour, on ressort de ce film <em>exhumé</em>. On cherche alors à communiquer, à échanger, à exprimer nos sentiments (référence à la bande annonce). J'hésite à le classer à côté de <a href="http://www.youtube.com/watch?v=GrMHK-bo9qM">Romeo+Juliette </a>ou avec les chefs d'oeuvre zombifiés. En tout cas, à ranger loin des nanards.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/zombie_parade_Warm-Bodies.jpg"><img class="aligncenter size-medium wp-image-7933" alt="Warm Bodies" src="/assets/zombie_parade_Warm-Bodies-300x224.jpg" width="300" height="224" /></a></p>
Création d'un cluster MySQL haute disponibilité
2013-03-13T19:54:26+01:00
https://francois.aichelbaum.com/2013/03/13/creation-dun-cluster-mysql-haute-disponibilite
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/mysql1.png"><img class="alignleft" alt="MySQL" src="/assets/mysql1-150x150.png" width="150" height="150" /></a>L'un des problèmes récurrents des architectures mutualisés (ou non) utilisant du MySQL est la disponibilité mais aussi la performance de ce dernier. Quelques habitudes existent, chacun avec leurs lots d'avantages et inconvénients. Je vais tenter de vous proposer une mise en oeuvre qui me semble être un bon compromis entre les différents points à prendre en compte : haute disponibilité, performance, type de table MySQL géré, compétences en interne, coût, facilité de déploiement.<a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/mysql1.png"><br />
</a></p>
<p style="text-align: justify;"><!--more--></p>
<h1 style="text-align: justify;">MySQL en haute disponibilité</h1>
<p style="text-align: justify;">MySQL, beaucoup le critique à tord ou à raison. Le premier à le faire ? Michael Widenius, fondateur de MySQL qui s'affirme avec <a href="http://fr.wikipedia.org/wiki/MariaDB">MariaDB</a>. De manière générale, on notera certaines fonctionnalités (voire performances) en retrait par rapport à d'autres moteurs, que cela soit PostgreSQL, Oracle ou MSSQL. Reste que ces derniers sont cher à mettre en oeuvre et que PostgreSQL nécessite une compétence qui est bien trop rare dans nos contrées. De fait, MySQL reste quelque part une valeur sûre si l'on prend le temps de travailler correctement avec : définir une bonne architecture, le superviser et l'optimiser au fil du temps.</p>
<p style="text-align: justify;">Quand on parle de haute disponibilité, je balaie d'office le fonctionnement basique maître-esclave disponible nativement. En effet, il n'apporte aucune haute disponibilité et le bricolage nécessaire pour inverser les rôles n'est tout bonnement pas industrialisable et encore moins réaliste. Que reste-t-il alors comme solution ?</p>
<ul>
<li><span style="line-height: 15px;">MySQL Cluster</span>
<ul>
<li><span style="line-height: 15px;">solution opensource mais un support de la part d'Oracle est conseillé</span></li>
<li>avantage(s) : supporté par l'éditeur (Oracle) ; performance</li>
<li style="text-align: justify;">inconvénient(s) : un seul type de moteur de table (<a href="http://dev.mysql.com/doc/mysql-cluster-excerpt/5.5/en/mysql-cluster-ndb-innodb-engines.html">NDB</a>)</li>
</ul>
</li>
<li style="text-align: justify;">Percona XtraDB
<ul>
<li style="text-align: justify;">solution opensource qui dispose d'un support mais où l'on peut se débrouiller ; il s'agit d'une version lourdement mise à jour de MySQL (utilise la librairie Galera)</li>
<li style="text-align: justify;">avantage(s) : support de l'éditeur (Percona) ; extension du moteur InnoDB (renommé XtraDB) ; synchro temps réel</li>
<li style="text-align: justify;">inconvénients : principalement au niveau des LOCK (mais il y a une solution embarquée pour cela) ; que InnoDB pour le moment ; les statements DDL sont encore problématiques (mais en cours de correction)</li>
</ul>
</li>
<li>Multi Master Replication
<ul>
<li>solution opensource qui repose sur un abus d'utilisation d'une fonction de mysql (une instance peut être à la fois maître et esclave)</li>
<li>avantage(s) : natif à MySQL ; tous les formats de table de MySQL (MyISAM, InnoDB, ...)</li>
<li style="text-align: justify;">inconvénients : peu stable sur le long terme - lié au fonctionnement en boucle, nécessite du bricolage et l'implémentation d'outils tiers (par ex, <a href="http://mysql-mmm.org">MMM</a>)</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">InnoDB étant plutôt conseillé et apprécié par rapport à MyISAM, j'ai choisi la solution de Perconna. En effet, elle me semble sur le papier très industrialisable avec des inconvénients que l'on peut facilement contourner ou qui vont venir à disparaître.</p>
<h1 style="text-align: justify;">Percona XtraDB Cluster en pratique</h1>
<p style="text-align: justify;">L'environnement utilisé est un environnement de type Prod + PRA. Le principe s'applique facilement dans les autres environnements (Prod + PCA, Prod seule, ...). Il faut juste noter un impératif de PXC : il faut minimum trois noeuds.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/Cluster-MySQL.png"><img class="size-medium wp-image-7852 aligncenter" alt="Cluster MySQL" src="/assets/Cluster-MySQL-300x206.png" width="300" height="206" /></a></p>
<p style="text-align: justify;">L'intérêt dans l'architecture est multiple :</p>
<ul>
<li><span style="line-height: 15px;">tous les noeuds communiquent ensemble</span></li>
<li>on voudra séparer les flux "lecture/écriture" des flux "lecture seule"</li>
</ul>
<p>Dans ce mode, on va dispatcher des VIP par site :</p>
<ul>
<li>PRDVIPRO - lecture seule PRD : 192.168.2.5</li>
<li>PRDVIPRW - lecture/écriture PRD : 192.168.2.6</li>
<li>PRAVIPRO - lecture seule PRA : 192.168.12.5</li>
<li>PRAVIPRW - lecture/écriture PRA : 192.168.12.6</li>
</ul>
<p style="text-align: justify;">Ainsi, on va isoler les utilisateurs sur les différentes VIP. On pourra définir des super-alias qui pointent sur un site ou l'autre en fonction des besoins et disponibilités. Pour répondre à ces VIP, on supposera les machines suivantes :</p>
<ul>
<li>PRDMYSQL01 : 192.168.1.1/24 (management) + 192.168.2.1/24 (métier)</li>
<li>PRDMYSQL02 : 192.168.1.2/24 (management) + 192.168.2.1/24 (métier)</li>
<li>PRAMYSQL01 : 192.168.11.1/24 (management) + 192.168.12.1/24 (métier)</li>
<li>PRAMYSQL02 : 192.168.11.2/24 (management) + 192.168.12.2/24 (métier)</li>
</ul>
<p style="text-align: justify;">La séparation des droits (RO/RW) ne se fera pas au niveau des rôles des noeuds (côté MySQL) mais au niveau de l'assignation des VIP et définitions des comptes utilisateurs. Il faut donc être attentif de ce côté.</p>
<h1>Installation de Percona XtraDB Cluster</h1>
<p>On commence par déployer tous les packages nécessaires</p>
<pre>gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
gpg -a --export CD2EFD2A | sudo apt-key add -
echo << EOF >> /etc/apt/sources.list
deb http://repo.percona.com/apt squeeze main
deb-src http://repo.percona.com/apt squeeze main
EOF
apt-get update
apt-get install libnet-daemon-perl libplrpc-perl libdbi-perl libaio1 libmysqlclient18 percona-xtradb-cluster-server-5.5 percona-xtradb-cluster-client-5.5 percona-xtradb-cluster-common-5.5 percona-xtrabackup xtrabackup netcat-openbsd rsync</pre>
<p style="text-align: justify;">On continue par la configuration du mysql. La configuration est une base pour un serveur avec 8 Go Ram et 4 coeurs. A faire évoluer donc.</p>
<pre>echo << EOF > /etc/mysql/my.cnf
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
<strong>server_id=1</strong>
<strong>wsrep_node_name=prdmysql01</strong>
auto_increment_offset = 4
auto_increment_increment = 4
wsrep_provider=/usr/lib64/libgalera_smm.so
<strong>wsrep_cluster_address=gcomm://192.168.2.2,192.168.12.1,192.168.12.2</strong>
#wsrep_cluster_address=gcomm://
wsrep_slave_threads=16
wsrep_sst_method=xtrabackup
wsrep_cluster_name=pxc
<strong>wsrep_sst_auth=root:secret</strong>
<strong>wsrep_sst_receive_address=192.168.2.1:4444</strong>
<strong>wsrep_provider_options ="gmcast.listen_addr=tcp://192.168.2.1:4567; ist.recv_addr=192.168.2.1:4568;"</strong>
binlog_format=ROW
log_bin=mysql-bin
log_slave_updates
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
innodb_buffer_pool_size=400M
innodb_log_file_size=64M
innodb_data_file_path = ibdata1:10M:autoextend:max:128M
performance_schema
key_buffer = 1M
max_allowed_packet = 4M
table_cache = 64K
query_cache_limit = 64M
sort_buffer_size = 2M
net_buffer_length = 64K
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
low_priority_updates = 1
old_passwords = 0
max_connections = 200
max_user_connections = 100
join_buffer_size = 256K
long_query_time = 2
slow-query_log_file = /var/log/mysql/mysql.slow.log
thread_cache_size = 5
query_cache_size = 0
query_cache_type = 1
tmp_table_size = 128M
max_heap_table_size = 128M
concurrent_insert = 2
delay_key_write = all
wait_timeout = 30
interactive_timeout = 30
key_buffer_size = 2G
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 0.0.0.0
myisam-recover = BACKUP
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
EOF
chmod 600 /etc/mysql/my.cnf</pre>
<p>Les lignes en gras sont à adapter pour chaque serveur :</p>
<ul>
<li>un server-id unique à chaque fois</li>
<li>l'IP métier du serveur abstente du cluster-adress</li>
<li>le mot de passe root mysql</li>
</ul>
<p><span style="text-decoration: underline;"><strong>ATTENTION</strong></span> : ne pas utiliser le même mot de passe root en mysql et sur le système</p>
<p style="text-align: justify;">Une fois le premier serveur mis en place, on arrête le mysql (via service ou init) sur TOUS les serveurs. Ensuite, on duplique le fichier /etc/mysql/debian.cnf et tout le contenu de /var/lib/mysql du premier vers les trois autres.</p>
<p style="text-align: justify;">Une petite subtilité existe sur la version Debian/Ubuntu du package Percona. Au démarrage du premier node d'un cluster (au sens que tout le cluster est arrêté), il faut éditer le fichier my.cnf pour commenter la ligne</p>
<pre>wsrep_cluster_address=gcomm://IP,IP,IP</pre>
<p style="text-align: justify;">et décommenter la ligne</p>
<pre>wsrep_cluster_address=gcomm://</pre>
<p style="text-align: justify;">Ensuite, on peut démarrer simplement le service sur la machine puis remodifier le fichier my.cnf. C'est rébarbatif, mais il faut le savoir. Après, on n'aura à le refaire qu'en cas de relance complète depuis zéro du cluster.</p>
<p style="text-align: justify;">Ensuite, on va déployer quelques modifications sur les droits MySQL :</p>
<pre style="text-align: justify;">mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.2.%' IDENTIFIED BY 'secret';
mysql> CREATE USER 'perconha'@'localhost' IDENTIFIED BY 'secret';
mysql> FLUSH PRIVILEGES;</pre>
<p style="text-align: justify;">Ceci permettra aux différents nodes de communiquer pour la synchro et de disposer d'un user perconha qui n'a accès qu'en consultation aux variables applicatives de MySQL.</p>
<p style="text-align: justify;">Nous n'avons plus qu'à démarrer les différents noeuds MySQL. Sur les versions Debian/Ubuntu, le premier démarrage pourra se faire en erreur. En effet, le script d'init considère que le serveur ne démarre pas car le binaire lui renvoie une erreur. En fait d'erreur, il s'agit juste d'un retour qui signale que le serveur est désynchro. On lui laisse le temps de bien démarrer (on peut consulter syslog pour cela) puis, à volonté, redémarrer le service une dernière fois.</p>
<p style="text-align: justify;">Le cluster est maintenant installé.</p>
<h1 style="text-align: justify;">VIP & Monitoring</h1>
<p style="text-align: justify;">Pour répondre au besoin de la gestion d'une VIP sans outil tiers ou de load balancer, ainsi qu'au monitoring complémentaire de PXC, j'ai mis à disposition des scripts sur mon <a href="https://github.com/faichelbaum/percona-xtradb-cluster">github</a>.</p>
<p style="text-align: justify;">Le script pour Nagios est relativement simple à utiliser :</p>
<pre>usage: ./check_percona -H $HOSTADDRESS$ -p $PORT$ -w $ARG1$ -c $ARG2$ -t $ARG3$ \(-U $ARG4$ \(-P $ARG5$\)\)
-H hostname or IP
-p service port
-w warning in seconds for replication delay
-c critical in seconds for replication delay
-t timeout for command input
-U user if needed
-P password if needed</pre>
<p style="text-align: justify;">Il ne nécessite que la création d'un compte (comme le compte perconha) pour permettre à Nagios de s'y connecter. Attention, il vient en complément du check_mysql disponible de base.</p>
<p style="text-align: justify;">Concernant la VIP, le script va vérifier l'état d'un noeud dans le cluster (mysql disponible, intégré au cluster, synchro avec le cluster) pour assigner les VIP à la machine. Les VIP sont séparés niveau logique entre une pour l'écriture et l'autre pour la lecture. Pour définir le "rôle" d'un noeud, il suffit de créer des fichiers vide "RO" (lecture seule) ou "RW" (lecture/écriture) dans le dossier /etc/perconHa/. une fois placé en cron, le script fera le reste.</p>
<p style="text-align: justify;">Il vérifie bien évidemment qu'une IP n'est pas déjà utilisée avant de l'assigner. Notez qu'il faut éditer le fichier pour y définir les informations relatives à la connexion à MySQL, les VIP ainsi que l'interface métier.</p>
<h1 style="text-align: justify;">Conclusion</h1>
<p style="text-align: justify;">On a donc pu créer rapidement un cluster MySQL autonome, avec une haute disponibilité, une performance certaine mais liée au <em>fine tuning</em> du MySQL (qui se fait tout au long de la vie du cluster) et souple. La base présentée est simple, viable mais reste une base. La partie VIP par exemple serait mieux gérer via un load balancer qui serait plus réactif que la cron. Mais on peut réutiliser le script pour se faire. De la même manière, on pourrait superviser de manière plus fine la consommation en ressource du cluster.</p>
11.6 : j'aurais dit 2 de tension
2013-03-12T15:38:58+01:00
https://francois.aichelbaum.com/2013/03/12/11-6-jaurais-dit-2-de-tension
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/article_000_Par2879110.jpg"><img class="size-thumbnail wp-image-7807 alignleft" alt="Toni Musulin" src="/assets/article_000_Par2879110-150x150.jpg" width="150" height="150" /></a>Il y a de ces faits divers qui nous interpellent quand on les lit. C'est le cas du vol de Toni Musulin. Pour rappel, il a délesté son employer (un convoyeur de fonds) de près de 11,6 millions d'euros le 5 novembre 2009. Après une chasse à l'homme, il s'est naturellement rendu à la police et a été inculpé ... pour tentative d'escroquerie à l'assurance dans une autre affaire. Récit cinématographique du plus grand hold-up de l'histoire, n'ayant nécessité ni arme, ni blessé, ni otage. D'office, ne vous attendez pas à une tension insupportablement forte, ce n'est pas le nouvel Olivier Marchal.<!--more--></p>
<h1 style="text-align: justify;">Toni a trop de tensions</h1>
<p style="text-align: justify;">A l'occasion d'un Label du spectateur UGC, j'ai pu découvrir avec un peu d'avance le film <em>11.6</em> adaptant sur grand écran les aventures de Toni.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=8Pwqv7jHv8E[/video]</p>
<p style="text-align: justify;">Le fait divers était intéressant. Bien préparé, c'est comme à l'habitude le côté humain qui a failli. Toni avait préparé le fait de ne pas pouvoir récupérer tout l'argent stocké dans le garage et en a planqué une partie (2,5 millions) ailleurs. Pour le moment, ce reste d'argent reste introuvé. L'affaire avait eu pas mal d'écho du fait de la méthode mais aussi des conséquences, principalement pour son ex-employeur. Un vrai pieds de nez à une direction qui se croyait protégée. Cependant, à tord, beaucoup lui ont donné une pseudo renommée de <a href="http://www.youtube.com/watch?v=344nPl_RlIc">Robin des Bois</a>. Vraiment mal venu.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/20484319.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx.jpg"><img class="alignnone size-thumbnail wp-image-7822" alt="20484319.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx" src="/assets/20484319.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/11-6-frana-ois-cluzet-2611.jpg"><img class="alignnone size-thumbnail wp-image-7819" alt="11-6-frana-ois-cluzet-2611" src="/assets/11-6-frana-ois-cluzet-2611-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/11-6.jpg"><img class="alignnone size-thumbnail wp-image-7816" alt="11-6" src="/assets/11-6-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Du coup, quand la com' a commencé pour ce film, je me suis dit qu'ils allaient s'appuyer sur ce point humain, limite comique, pour présenter l'affaire sous un angle différent. Après tout, pas de feu d'artifice, pas de sang, pas de sexe ... Il faut bien trouver un moyen pour faire le spectacle.</p>
<p style="text-align: justify;">Et là est le drame : on nous présente le film comme n'importe quel film policier français, nettoyé de tout spectacle. Le film en devient d'une platitude qui n'a d'égale que la mer baltique un matin d'été un peu frais. On enchaîne l'histoire telle que nous la raconterait Toni. Simple. Ennuyante. Plate. Dur de se lier à lui et de générer un lien affectif. Dur d'accepter la justification pour ses actes. Au final, le calme des montages dont il rêve ... On finit par nous l'imposer avec le peu de tension que le film apporte. Le seul point qui permet de sauver le film du naufrage ? Le jeu d'acteur, François Cluzet en tête, toujours aussi parfait.</p>
<p style="text-align: justify;">Ce film aurait eu plus sa place un soir de semaine, en seconde partie de soirée, sur ARTE qu'au cinéma. Inutile de financer Toni Musulin via le billet de cinéma.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/116.jpg"><img class="aligncenter size-medium wp-image-7813" alt="11,6" src="/assets/116-220x300.jpg" width="220" height="300" /></a></p>
Restaurant Zagros : du méditerrannéen au Père Lachaise
2013-03-04T23:46:02+01:00
https://francois.aichelbaum.com/2013/03/04/restaurant-zagros-du-mediterranneen-au-pere-lachaise
<p style="text-align: justify;">Après une petite marche au Père Lachaise, le ventre de l'orgre réclame son dû. Je descend Ménilmontant en misant sur une salade. Le restaurant visé est fermé. Un autre attire le regard : un gréco-kurde. Sûrement par méconnaissance, lorsqu'on me parle de cuisines grec et kurde, je suis très basique. Le <em>vrai</em> grec, des salades, de la fraîcheur. Le kurde, des grillades. <a href="https://plus.google.com/102191029956768509417/about?gl=fr&hl=fr">Zagros</a>, ton heure est venue ! Et comme on est deux pour le coup, on va d'autant pouvoir <em>t'essayer.</em><br />
<!--more--></p>
<h1 style="text-align: justify;">Pas Zagros sur la patate</h1>
<p style="text-align: justify;">La terrasse est alléchante avec le soleil de ce dimanche. Mais la fraîcheur de l'hiver se rappelle rapidement à notre bon souvenir et nous pousse à l'intérieur. Là, un première salle de restaurant s'offre à nouveau. C'est clair. C'est propre. Des tapis a priori ancien tapissent les murs. Les tables chaleureuses. L'accueil tout autant. On s'installe, on prend la carte en main. On veut rester sage, donc une seule entrée qu'on se partagera suivi d'un plat par tête. Bon pas si sage, on commande un vin grec rosé pour accompagner.</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/zagros.jpg"><img class="aligncenter" alt="Restaurant Zagros" src="/assets/zagros-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;">Et là, un ballet de saveurs s'engage. Entre un vin jeune mais non pétillant, à la couleur cuivrée et au goût vert et fruité, l'assortiment de salades diverses et fraîches (et la féta, ...), ou encore les plats ... Le régal n'a d'égal que le coup de fourchette qui se fait presque délicat pour profiter de la dégustation de chaque bouchée. Les viandes grillées sont fondantes. Pas un assaisonnement de trop. Les légumes en papillottes enchantent les papilles. Mon seul bémol ? Je me forcerais à dire que la pomme de terre au four aurait pu être un poil plus cuite/grillée. Mais cette remarque est vraiment là pour chipotter. Les quantités sont parfaites, équilibrés. Ce n'est pas trop. Ce n'est pas trop peu. C'est juste ce qu'il fallait, même pour un orgre comme moi.</p>
<p style="text-align: justify;">Repus et heureux du repas proposé, on ne peut refuser l'appel gourmand d'un dessert. Là, on se dit qu'on a vraiment été gourmand en voyant la générosité du dessert. Ca change des restaurants où l'on se mort les doigts au dessert. L'addition arrive alors, c'est dans la moyenne parisienne. Mais vu le repars, cela le vaut amplement. Rien que d'écrire ces quelques lignes et me souvenir de ce repas, je salive comme un chien devant un os tout frais. Et la qualité du service renforce l'envie de se rassoir à l'un de leurs tables.<a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/zagros.jpg"><br />
</a></p>
<p style="text-align: justify;">Le 20e, que cela soit côté Belleville ou Père Lachaise, dispose vraiment de nombreuses perles culinaires à des tarifs abordables et c'est toujours un plaisir de pousser la porte de nouvelles tables à découvrir.</p>
Die Hard 5 : yippie kay yay pauv' con
2013-03-04T21:00:45+01:00
https://francois.aichelbaum.com/2013/03/04/die-hard-5-yippie-kay-yay-pauv-con
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/die-hard-5.jpg"><img class="size-thumbnail wp-image-7753 alignleft" alt="Die Hard 5" src="/assets/die-hard-5-150x150.jpg" width="150" height="150" /></a>Il y a de ces sagas, qui ont fait l'Histoire du cinéma. C'est le cas des aventures de John MacClane dans les différents Die Hard. Enfin ... Les trois premiers opus ont en tout cas marqués monumentalement le cinéma d'action avant de nous accablé d'un pittoyable quatrième Opus qui a blessé bien des amateurs mais surtout des geeks. Qui d'un cinquième opus ? Episode de trop ? Renouveau de la Saga ? John nous dit tout ...</p>
<p style="text-align: justify;"><!--more--></p>
<h1 style="text-align: justify;">Die Hard 5 : déception ou illusion</h1>
<p style="text-align: justify;">Avant d'aller voir ce film la semaine dernière, j'avais lu pas mal de critique, tellement la bande annonce me faisait peur. A chaque fois, même retour : très gros/bon spectacle la première moitié du film, dans le pure style Die Hard puis une seconde partie baclée. Je me dis alors que ca sera toujours mieux qu'aucune minute dans le pure style Die Hard.</p>
<p style="text-align: justify;">[video]http://www.youtube.com/watch?v=gZR-DqSSGG0[/video]</p>
<p style="text-align: justify;">Je pars, je m'arme du nécessaire pour ce genre film (dont des provisions), je m'installe, le film commence et là, c'est le drame. Mais où vous avez vu le pure style Die Hard ? Oui on prend les quatre précédents films (et malheureusement, le quatrième est trop présent), on mixe le tout au shaker, pas à la cuillère, et on obtient un film tout entier aberrant et qui ne respecte en rien la saga Die Hard.</p>
<p style="text-align: justify;">Juste pour rappel, notre ami John est le genre de flic qui se retrouve au mauvais endroit au mauvais moment. Plus il fuit les emmerdes, plus il les trouve. Souvenez-vous les conduits de ventilations du Nakatomi Plaza ! Puis une fois dans la merde jusqu'au coup, il ne pouvait plus faire marche arrière. Même le quatrième film respectait au moins cette règle. Mais là, non ! Dès le début, John se montre volontaire : d'un pas bien assuré, il fonce tête bessée dans les emmerdes, quite à en générer sans réfléchir. Un vrai cowboy. On dit que la vieillesse rend sage ... Pour John, c'est le contraire.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/23057-die-hard-5.jpg"><img alt="23057-die-hard-5" src="/assets/23057-die-hard-5-150x150.jpg" width="150" height="150" /></a><img alt="1058064-bande-annonce-officielle-de-die-hard-5-620x0-1" src="/assets/1058064-bande-annonce-officielle-de-die-hard-5-620x0-1-150x150.jpg" width="150" height="150" /><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/dh5-trailer.jpg"><img alt="dh5-trailer" src="/assets/dh5-trailer-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/die-hard-5-extrait-2-600x280.jpg"><img alt="die-hard-5-extrait-2-600x280" src="/assets/die-hard-5-extrait-2-600x280-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/Die-Hard-5.jpg"><img alt="Die Hard 5" src="/assets/Die-Hard-5-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/Julia-Snigir-Die-Hard-5.jpg"><img alt="Julia-Snigir-Die-Hard-5" src="/assets/Julia-Snigir-Die-Hard-5-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/Julia-Snigir-Die-Hard-5.jpg"><br />
</a></p>
<p style="text-align: justify;">Alors où, on bouffe pendant de la première moitié de film de l'action dont le scénario tient sur le fil du rasoir. Par contre, la réalisation, les faux raccords ... on est en pleine série Z. Rien que la course poursuite en voiture qui occupe une bonne partie de cette partie est hallucinante. On roule à contre sens sur les quais de la Moskva. On dégomme des voitures. Puis la seconde d'après, on est dans une artère qui déboule sur le même quai, en sens opposé du précédent passage, mais pour autant toujours à contre sens avec les mêmes voitures accidentées sur le bas côté. On remarque la même chose pour un semi qu'on croise une première fois au début, puis deux fois entre temps, pour finir la course encrée dedans. On a peu tourné selon la vidéo, mais le trafic automobile lui s'est téléporté d'un sens de la route à l'autre comme par magie. Voire à changer d'orientation sur la même voie. Bref ... Et le reste de la première moitié est du même accabit.</p>
<p style="text-align: justify;">Puis, passé le coup de théatre à mi parcours, même le scénario devient baclé. Vu qu'on a déjà ruiné la moitié de Moscou (le palais de justice, les quais, les artères principales, un hôtel de luxe, et j'en passe, sans compter le tank, un superbe MI-24 et tout le feu d'artifice qui va avec ... Bah il fallait bien trouvé mieux à faire. Quoi de mieux de faire un second grand n'importe quoi directement à Tchernobyl ! En fait, je viens de tilter, mais le scénariste a du y aller pendant ses dernières vacances. Cela explique l'état de ses neurones.</p>
<p style="text-align: justify;">J'ai honte pour John. Et même le passage de flambeau à Junior se fait dans notre douleur. Un supplice. Une honte à payer. Deux heures de ma vie irrémédiablement gâcher. Je crois que, mis à part <a href="http://www.youtube.com/watch?v=nLEUrhWBYoY">Immortel</a> où je m'étais endormi, je n'avais jamais ressenti ce tel sentiment de gâchi et de tristesse en sortant du cinéma. John (Moore) m'a <em>tuer</em>. John a <em>pulvériser</em> tous mes neurones. J'irais me réconforter seul devant les trois premiers. <a href="http://www.youtube.com/watch?v=BplBW1qNM4w">Yippie Kay Yay, pauv' con</a>.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/03/affiche-die-hard-5-908x1210.jpg"><img class="aligncenter size-large wp-image-7756" alt="Die Hard 5" src="/assets/affiche-die-hard-5-908x1210-768x1024.jpg" width="584" height="778" /></a></p>
Les Misérables se font épiques
2013-02-08T12:05:37+01:00
https://francois.aichelbaum.com/2013/02/08/les-miserables-se-font-epiques
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/les-miserables.jpeg"><img class="size-thumbnail wp-image-7705 alignleft" alt="Les Misérables" src="/assets/les-miserables-150x150.jpeg" width="150" height="150" /></a>Une petite avant-première intimiste chez Universal pour voir la nouvelle version des Misérables une semaine avant. C'est sympa. La prochaine fois, prévoyez le pot ou le popcorn, ca sera parfait. Trève de plaisanterie, nous voici avec une énième adaptation de l'oeuvre de Victor Hugo au cinéma. Nombre de versions sont trop lourdes car l'équipe voulait coller au livre. Quid de cette version remaniée en film musical ?<!--more--></p>
<h1 style="text-align: justify;">Les Misérables savent chanter</h1>
<p style="text-align: justify;">Alors oui, on parle de film musical et non de comédie musicale car, jusqu'à preuve du contraire, on ne rira pas puisque le sujet ne s'y prête pas. Tom Hooper reprend ici la version comédie musicale éponyme de 1980 et non pas directement le roman français.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=IuEFm84s4oI[/video]</p>
<p style="text-align: justify;">L'introduction, très théatrale, très épique, nous le rappelle d'ailleurs très bien. Dans cet opéra moderne, pas une personne ne s'exprimera sans chanter. D'ailleurs, point intéressant et à contre-pied de la quasi intégralité des films musicaux, les enregistrements des chants se sont fait durant le jeu d'acteur sur le plateau et non en décallé et en studio. Et là, on se rend vite compte que la les acteurs présents, même si peu son rompu au chant (<a href="http://www.youtube.com/watch?v=37DWM2z1x5g">Hugh Jackman</a>, <a href="http://www.youtube.com/watch?v=Mj06SgTgWWs">Amanda Seyfried</a> par ex), ont un sacré talent à exprimer.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/Les-Mis-Jackman.jpg"><img class="alignnone size-thumbnail wp-image-7735" alt="Les-Mis-Jackman" src="/assets/Les-Mis-Jackman-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/Les-Miserables-2012-Movie-Poster2.jpg"><img class="alignnone size-thumbnail wp-image-7732" alt="Les-Miserables-2012-Movie-Poster2" src="/assets/Les-Miserables-2012-Movie-Poster2-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/Les-Miserables-2012-Movie-Poster1-600x888.jpg"><img class="alignnone size-thumbnail wp-image-7729" alt="Les-Miserables-2012-Movie-Poster1-600x888" src="/assets/Les-Miserables-2012-Movie-Poster1-600x888-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/LesMiserables20121_zpsba0f7dfd.jpg"><img class="alignnone size-thumbnail wp-image-7726" alt="LesMiserables20121_zpsba0f7dfd" src="/assets/LesMiserables20121_zpsba0f7dfd-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/les_miserables_2012-6.jpg"><img class="alignnone size-thumbnail wp-image-7723" alt="les_miserables_2012-6" src="/assets/les_miserables_2012-6-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738447-1765-1200.jpg"><img class="alignnone size-thumbnail wp-image-7720" alt="Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738447-1765-1200" src="/assets/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738447-1765-1200-150x150.jpg" width="150" height="150" /></a></p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738435-1765-1200.jpg"><img class="alignnone size-thumbnail wp-image-7717" alt="Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738435-1765-1200" src="/assets/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738435-1765-1200-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/anne-hathaway-new-les-miserables-posters-02.jpg"><img class="alignnone size-thumbnail wp-image-7714" alt="anne-hathaway-new-les-miserables-posters-02" src="/assets/anne-hathaway-new-les-miserables-posters-02-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401.jpg"><img alt="Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401" src="/assets/Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/02/Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401.jpg"><br />
</a></p>
<p style="text-align: justify;">Chaque protagoniste, ou couple dans le cas des Thénardier, aura au moins un moment à lui pour exprimer ce talent. Entre chaque, les joutes chantées, les osmoses amoureuses virvoltantes et autres chorales révolutionnaires vont s'alterner au rythme de ce film de près de 3h.</p>
<p style="text-align: justify;">Et là, on se rend d'autant plus compte du travail de toute l'équipe autour des acteurs : maquilleurs, musiciens, décors, ... tout vous fait oublier la durée et la lourdeur habituelle des adaptations du roman de Victor Hugo. Impossible de ne pas se refaire toutes les chansons à longueur d'heures, une fois sorti de la salle obscur. On en redemanderait presque. Presque car bon, pleurer, c'est pour les faibles. D'ailleurs, Kleenex est-il partenaire du film ? Si ce n'est pas le cas, ils ont loupé une belle opération de promotion.</p>
<p style="text-align: justify;">Que dire, pas de louper notable. Juste des libertés prises liés au format (film musical, durée restreinte). Mais rien de choquant. Au final, cette adaptation se place avec la version de Lelouch de 95 avec Belmondo dans mes adaptations de coeur et que je revois avec plaisir.</p>
Intégration d'un parc de machines Linux à un domaine Active Directory
2013-01-15T18:21:05+01:00
https://francois.aichelbaum.com/2013/01/15/integration-dun-parc-de-machines-linux-a-un-domaine-active-directory
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/tux.gif"><img class="size-thumbnail wp-image-7672 alignleft" alt="Linux sur Windows" src="/assets/tux-150x150.gif" width="150" height="150" /></a>Dans un monde professionnel où les environnements informatiques sont de plus en plus hétérogènes, il est nécessaire de pouvoir centraliser les informations la gestion des comptes ainsi que les droits associés. Alors que la documentation d'intégration des Linux (ou Mac) à un annuaire LDAP est très documentée sur internet, les guides pour l'intégration à un Active Directory est quasi absente. Elle est pourtant de plus en plus requise ... et facile ! Des comptes unifiés pour tous les OS. Une gestion des comptes fines et centralisés est alors en place. Un sudo centralisé sur l'Active Directory implique un fichier <em>/etc/sudoers</em> obsolète.<!--more--></p>
<h1 style="text-align: justify;">Avant propos</h1>
<p style="text-align: justify;">Pour la suite différents points sont supposés acquis ou en place. Vous disposez d'un domaine Active Directory Windows 2008 R2 en place. Ici, nous l'appellerons <em>integration.infra</em>. Notez que les manipulations peuvent se faire à partir des versions Windows 2003 sans problème.</p>
<p style="text-align: justify;">Les Linux sont des debian. Encore une fois, les packages sont disponibles pour toutes les grosses distributions, donc je vous laisse adapter.</p>
<p style="text-align: justify;">Côté résolution DNS, les machines Linux doivent pouvoir déjà résoudre le domaine integration.infra :</p>
<pre style="text-align: justify;">dig +short integration.infra
192.168.101.1</pre>
<p style="text-align: justify;">Si ce n'est pas le cas, une petite modification du /etc/resolv.conf est à faire en rajoutant l'Active Directory :</p>
<pre style="text-align: justify;">echo nameserver 192.168.101.1 >> /etc/resolv.conf</pre>
<p style="text-align: justify;">L'intégration à l'Active Directory est simplfiée depuis l'arrivée de Likewise Open (maintenant appelé PowerBroker Identity Services). On supposera nos Linux comme étant en 64 bits.</p>
<p style="text-align: justify;">Dernier point, on suppose avoir un compte ADMIN côté Windows avec les droits de rajout de machines.</p>
<h1 style="text-align: justify;">Côté Active Directory</h1>
<h3 style="text-align: justify;">Pré-requis</h3>
<p style="text-align: justify;">Avant Windows 2008, il est nécessaire de rajouter les attributs Unix à l'Active Directory. Pour cela, il suffit d'installer le package Identity Management for UNIX.</p>
<p style="text-align: justify;">Ensuite, nous devons rajouter un compte ldapquery : en effet, nous voulons centralisé la gestion des droits sudo et ceci ne peut se fait que via le protocole LDAP nativement embarqué dans l'AD. Pour cela, on ouvre <em>Active Directory Users and Computers</em> puis on clique droit sur <em>Users</em> puis <em>New</em> et <em>User</em>. On note le mot de passe.</p>
<p style="text-align: justify;">NB : Il peut être intéressant de travailler en LDAPS plutôt qu'en LDAP. Je vous renvoie aux nombreuses documentations disponibles sur internet (ou à votre administrateur Windows) pour son activation.</p>
<h3 style="text-align: justify;">Modification de l'Active Directory</h3>
<p style="text-align: justify;">Arrive alors la partie <em>tricky</em> : étendre le schéma Active Directory pour y intégrer le sudo. Le fichier de schéma est disponible sur vos Linux dans <em>/usr/share/doc/sudo-ldap/schema.ActiveDirectory.gz</em> mais également <a title="Schema Active Directory pour sudo" href="http://cdn.aichelbaum.com/files/s/schema.ActiveDirectory.txt" target="_blank">ici</a>.</p>
<p style="text-align: justify;">Pensez à l'éditer pour remplacer le <em>dc=X</em> par votre domaine (ici, <em>dc=integration,dc.infra</em>).</p>
<p style="text-align: justify;">En ligne de commande, il ne reste alors qu'à taper :</p>
<pre style="text-align: justify;">ldifde -i -e schema.ActiveDirectory.txt -c "CN=Schema,CN=Configuration,DC=integration,DC=infra" #schemaNamingContext</pre>
<p style="text-align: justify;">Ceci va vous rajouter tous les attributs <em>sudo</em> (<em>sudoHost</em>, <em>sudoUser</em>, ...) ainsi que la classe <em>sudoRole</em>.</p>
<h3 style="text-align: justify;">Création des groupes</h3>
<p style="text-align: justify;">Concernant sudo, une dernière manipulation est à faire : créer une OU <em>sudoers</em>"(via l'<em>ADSI</em>) puis la "peupler" avec des sudoRole comme vous le feriez avec le fichiers <em>/etc/sudoers </em>:</p>
<ul>
<li>une ligne revient à un rôle</li>
<li>un rôle contient un ou plusieurs <em>sudoHost</em></li>
<li>un rôle contient un ou plusieurs <em>sudoUser </em>en corrélation avec les groupes utilisateurs que nous souhaiterions</li>
<li>un rôle contient un ou plusieurs <em>sudoOptions</em></li>
<li>un rôle contient un ou plusieurs <em>sudoCommand</em></li>
<li>un rôle contient un ou plusieurs <em>sudoRunAs</em> (ALL à mettre par défault)</li>
</ul>
<p style="text-align: justify;">
<p style="text-align: justify;">On peut alors créer les utilisateurs et groupes dont on aura besoin pour l'usage normal.</p>
<h1 style="text-align: justify;">Côté Linux</h1>
<p style="text-align: justify;">L'ensemble des commandes s'enchaîne rapidement :</p>
<pre class="crayon-selected">wget http://download.beyondtrust.com/PBISO/7.0.4/918/pbis-open-7.0.4.918.linux.x86_64.deb.sh
chmod +x pbis-open-7.0.4.918.linux.x86_64.deb.sh
./pbis-open-7.0.4.918.linux.x86_64.deb.sh
cd /opt/pbis/bin
./domainjoin-cli join integration.infra ADMIN
./domainjoin-cli configure --enable nsswitch
./domainjoin-cli configure --enable pam
./domainjoin-cli configure --enable ssh
./config HomeDirTemplate %H/%D/%U
./config AssumeDefaultDomain true
./config LoginShellTemplate /bin/bash
aptitude install nslcd sudo-ldap
grep bind /etc/nslcd.conf >> /etc/ldap/ldap.conf
echo "sudoers_base ou=sudoers,dc=integration,dc=infra" >> /etc/ldap/ldap.conf
ln -s /etc/ldap/ldap.conf /etc/sudo-ldap.conf</pre>
<p style="text-align: justify;">Pour l'installation de nslcd, préciser la bonne URI mais surtout le compte ldapquery.</p>
<p style="text-align: justify;">Pour ceux qui voudrait automatiser l'installation (via <em>Fabric</em> par exemple), le déroulement du script de PBIS requiert l'utilisation d'expect :</p>
<pre>aptitude install expect tcl8.5
echo < EOF > /opt/install_pbis.sh
#!/bin/bash
VAR=$(expect -c "
spawn sh pbis-open-7.0.4.918.linux.x86_64.deb.sh --confirm
expect {
Y/n { send \"y\r\"; exp_continue }
Y/n { send \"y\r\"; exp_continue }
yes/no { send \"yes\r\"; exp_continue }
yes/no { send \"yes\r\"; exp_continue }
}
exit
")
EOF
chmod +x /opt/install_pbis.sh</pre>
<p style="text-align: justify;">L'installation et le déploiement s'en trouvera grandement faciliter. Petite subtilité à prévoir : l'obligation de reboot les Linux pour une intégration propre de l'authentification Active Directory en local à la machine.</p>
</p>
2013 - New Year's Party Mix
2013-01-10T15:35:15+01:00
https://francois.aichelbaum.com/2013/01/10/2013-new-years-party-mix
<p><iframe width="425" height="350" src="https://www.youtube.com/embed/XiBSPEVjLOk" frameborder="0"></iframe></p>
The American Dream, mon cauchemar culinaire
2013-01-09T10:18:45+01:00
https://francois.aichelbaum.com/2013/01/09/the-american-dream-mon-cauchemar-culinaire
<p style="text-align: justify;">Hier soir, c'était repas de début d'année avec deux anciens collègues. Pour faire léger, on a choisi un restaurant que je n'avais jamais osé testé vu ce qui j'ai vu voir et surtout ce que l'extérieur me laissait penser. Bienvenu dans mon cauchemard culinaire à l'<a href="http://www.american-dream.fr/">American Dream</a> (<a href="21 Rue Daunou 75002 Paris">21 rue Daunou, Paris 2e</a>).<!--more--></p>
<h1 style="text-align: justify;">American look</h1>
<p style="text-align: justify;">Je dirais plutôt American Museum. De l'extérieur, les murs ont l'apparence d'une vierge auberge repeinte avec une tripotée de statue d'acteur en situation, façon Planet Hollywood. L'intérieur, est un mix entre un pub anglais, une brasserie parisienne et un restaurant "à l'américaine". La carte, pardon, le livre du menu devrais-je dire, vu son nombre de page, alterne pages de menu et photo-montages pour nous faire croire que le restaurant est sponsorisé par les stars d'Hollywood. Mais bon, autant le patron de Planet Hollywood a pu sortir le carnet de chèques pour les faire venir, autant là, ce n'est pas le cas. Bref, l'ambiance appelle clairement au piège à touriste.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/Restaurant-Paris-06.jpg"><img class="alignnone size-thumbnail wp-image-7645" alt="Restaurant-Paris-06" src="/assets/Restaurant-Paris-06-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/img-0059679.jpg"><img class="alignnone size-thumbnail wp-image-7642" alt="img-0059679" src="/assets/img-0059679-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/image.jpg"><img class="alignnone size-thumbnail wp-image-7639" alt="image" src="/assets/image-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/american-dream-paris-1328651766.jpg"><img class="alignnone size-thumbnail wp-image-7636" alt="american-dream-paris-1328651766" src="/assets/american-dream-paris-1328651766-150x150.jpg" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/1107140163.jpg"><img class="alignnone size-thumbnail wp-image-7633" alt="1107140163" src="/assets/1107140163-150x150.jpg" width="150" height="150" /></a></p>
<h1 style="text-align: justify;">American beurk</h1>
<p style="text-align: justify;">Passons l'accueil qui nous fait penser qu'on pourrait être bien servi, le service en lui-même laisse à désirer. On nous bazarde la carte sur la table à peine dressée. Aucune carafe d'eau disponible, on pourrait rouiller. Surtout vu le prix de la conso (4,5€ le petit verre de Coca, 12€ minimum la pinte de bière - et quelle bière ... - ), on se souvient que le manque d'hydratation a le même résultat que l'alcool sur le cerveau.</p>
<p style="text-align: justify;">On prend alors le temps de lire le roman qui sert de menu. Des burgers. Des bagels. Des omelettes. Des pizzas. Des sushis. De tout pour tous. Mais comme on dit "trop de choix, tue le choix". Notre côté macho se rappelle à nous lorsque nous voyons le plat "Cheeseburger Tower" avec 6 steaks, accompagné de frites et oignons rings. Laissons nous tenter. Pour faire court, on n'aurait pas dû !</p>
<p style="text-align: justify;">Première désillusion au service, sur les six steaks, quatres sont réellement présents, les deux autres remplacés par du pain. La garniture, moyenne. Les sauces absentes (normale : la sauce supplémentaire est facturée 5,50 € ! ). La seconde vient au fur et à mesure de l'ingurgitation. Plus on descend dans les couches plus le burger se transforme. De haut en bas, la viande devient toujours moins cuite alors que le pain devient plus grillé. Un cauchemar gustatif.</p>
<p style="text-align: justify;">L'accompagnement n'est pas tellement mieux. Les frites allumettes sont des éponges à huiles. Même le McDo n'arrive pas à les imbiber autant. Les oignons rings ont perdu une bonne parti de la chapelure (à moins que ca aussi ca soit un supplément sur taxé ? ). Et grand mal vous prendrait de vouloir changer un des accompagnement : 4€ par changement ! Nul question de rajout par contre ...</p>
<p style="text-align: justify;">Ecoeurés, nous ne tentons pas les desserts qui laissent présager le pire. D'ailleurs, à 8 ou 9 € le café gourmand ... D'ailleurs il n'a de gourmand que le tarif, le café n'étant accompagné que d'un pauvre petit muffin ou donut ...</p>
<p style="text-align: justify;">J'en suis sorti en louant mes regretés tickets restos lâchés sur la table pour payer cette addition honteuse. A la limite du racket. Ce matin, mon estomac vient à me rappeler que mes tickets auraient été plus que mieux utilisés ailleurs. Il n'y a pas de mot. Adresse à fuir. Information à faire connaître. Guide touristique à prévenir. L'American Dream de Paris est LE lieu où l'on mange le plus mal à Paris avec un tarif exhorbitant. Mais que fait le Président ? L'a-t-on prévenu ?</p>
Création d'une plateforme anti-ddos modulaire
2013-01-04T14:00:25+01:00
https://francois.aichelbaum.com/2013/01/04/creation-dune-plateforme-anti-ddos-modulaire
<p style="text-align: justify;">Q'est-ce qu'un DDoS ? Que faire en cas de DDoS ? Comment se protéger ? Ce sont là des questions récurrentes ces temps-ci sur internet. Je vais exposer dans le présent article une solution pour se prémunir un minimum avec une architecture modulaire. L'exemple se focalisera sur les services HTTP.<!--more--></p>
<h2 style="text-align: justify;">Avant-propos</h2>
<p style="text-align: justify;">Un DDoS, pour faire simple, se rapporte à une attaque de type déni de service distribué. En gros, l'attaquant cherche à rendre votre service (site web, serveur mail, platefome complète...) indisponible grâce à plusieurs outils déployés sur PC zombies lancés à vos dépends en parallèle. Plus il y a d'<em>armes</em> (PC zombies), plus l'attaque prend de l'ampleur. De base, pour déjouer ces attaques, c'est un peu le jeu de <em>qui a la plus grosse</em>. Reste qu'on peut se prémunir de pas mal de chose, sans passer pour autant par des solutions (trop) honéreuses de type <a href="http://www.arbornetworks.com/fr/">Arbor Networks</a>.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/webbie_lg_cleanpipes_FR.gif"><img class="aligncenter wp-image-7567" alt="Plateforme Arbor Networks Clean Pipes 2.0" src="/assets/webbie_lg_cleanpipes_FR-300x171.gif" width="300" height="171" /></a></p>
<p style="text-align: justify;">On n'est pas tous milliardaires (ou du moins, pas encore). On ne peut pas tous investir dans ces solutions ni payer le tuyaux nécessaire pour jouer à <em>qui a la plus grosse</em>. Mais on doit se protéger. L'idée principale de cet article, réside donc dans la différence entre les notions de DoS et de DDoS, à savoir, le <em>distributed</em>. On cherche donc à se rapprocher autant que possible d'un DoS en segmentant l'attaque puis on travaille sur ces réductions en fonction du protocole.</p>
<p style="text-align: justify;">Dans la suite, nous discutons de flux HTTP. Donc on filtre au niveau réseau avec du firewall puis on analyse la partie HTTP avec un WAF et on réduit les connexions au serveur client (le <em>backend</em>) avec une plateforme de Caching. Chaque fonction est isolée sur une brique indépendante des autres qu'on peut remplacer ou supprimer en fonction de l'usage qu'on veut avoir.</p>
<p style="text-align: justify;">Je resterais assez succint sur la mise en place de certaines fonctionnalités avancées, sur l'évolutivité ou encore sur la centralisation des informations, ayant livré un produit un peu plus complet il y a peu.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/antiddos.png"><img class="aligncenter wp-image-7573" alt="Plateforme anti-DDoS modulaire" src="/assets/antiddos-300x129.png" width="300" height="129" /></a></p>
<p>L'architecture est dans le Cloud : pourquoi ? parce que la virtualisation offre la souplesse nécessaire à ce type d'architecture et qu'on pourra voir dans de potentielles évolutions, à définir des règles au niveau DNS pour isoler des régions géographiques sur tel ou tel fournisseur sans impacter les autres datacenter virtuel.</p>
<h2 style="text-align: justify;">Spécificités de la plateforme</h2>
<p style="text-align: justify;">La plateforme est découpée en "colonne". Toutes les colonnes sont équivalentes à la base. On essaie d'isoler une colonne par opérateur. A l'intérieur de chaque colonne, on aura une "ligne" de fonction composée d'autant de serveur de chaque type appelé "brique". Dans le cas de l'article, une colonne HTTP contient trois lignes d'un seul serveur à chaque fois :</p>
<ul>
<li>firewall</li>
<li>WAF (Web Application Firewall)</li>
<li>Caching</li>
</ul>
<p style="text-align: justify;">J'ai rédigé cet article et les scripts liés de manière spécifique au serveur OVH. Des adaptations sont à prévoir pour d'autres mais dans l'absolu, tout devrait être fonctionnel tel quel. Chaque brique est en soit une machine virtuelle (dans le cas présent, une Debian Squeeze) avec des ressources affectées en fonction de vos besoins et moyens. Ici, 2 core et 8 Go de Ram à chaque fois. On y copie importe l'arborescence de deploiement qui va bien, on lance le script, et rouler jeunesse.</p>
<p style="text-align: justify;">Au niveau réseau, on sépare la partie management de la partie service.</p>
<p style="text-align: justify;">Le serveur VMware ESXi 5.0 n'a de base qu'une IP de management. On restreint ces services de management aux seules IP qui s'y connecteront : votre bureau.</p>
<p style="text-align: justify;">Ensuite, vient le cas des différentes VIP qu'on demande à OVH :</p>
<ul>
<li>3 pour les services publiques (dont la première servira aussi pour le VPN</li>
<li>1 pour le <em>honeypot</em></li>
<li>1 pour la communication du caching avec le backend</li>
</ul>
<p style="text-align: justify;">Entre eux, chaque niveau communique sur un VLAN spécifique.</p>
<p style="text-align: justify;">Enfin, chaque serveur a une patte de management sur un réseau privé, utilisable exclusivement via le serveur de VPN.</p>
<p style="text-align: justify;">Le comportement est simple : lorsqu'un <em>client</em> se veut se connecter à la plateforme protégée, il le fait via une requête HTTP sur un <em>fqdn</em> précis. Ce <em>fqdn</em> est un alias vers un catch-all DNS de notre service de protection. Ce catch-all correspond à un gros Round Robin DNS vers les différentes VIP. C'est le point qui génère la segmentation. Plus de VIP seront disponible, plus la segmentation sera importante. L'attaquant visera soir le <em>fqdn</em> et donc toutes les VIP, se qui va répartir ses PC zombies, soit les différentes VIP, mais lui même devra avoir assez de PC zombies sous la main.</p>
<p style="text-align: justify;">Le firewall entame alors son petit travail : analyser les paquets. Ici on reste basique avec un lot de règles iptables. On pourrait y greffer à la limite un IPS pour compléter la brique. Les règles sont de deux types :</p>
<ul>
<li>basique : pré enregistrées au démarrage du service</li>
<li>dynamique : générée par les outils de bannissement</li>
</ul>
<p style="text-align: justify;">Les règles basiques correspondent à des règles de "bonne usage" contre les DoS classiques. Les règles dynamiques sont produites soit à la main, soit par l'ensemble du service : détection des scans de port, fail2ban, ... Peu importe quelle brique détecte une IP à bannir, celle-ci le sera au niveau du firewall. De plus, le bannissement se fait via un <a href="http://en.wikipedia.org/wiki/Tarpit_(networking)">TARPIT </a>pour la partie TCP et un DROP pour le reste.</p>
<p style="text-align: justify;">Les scripts qui suivront sont issues de la première version du PoC. Certains points sont à faire évoluer mais la base est présente.</p>
<h2 style="text-align: justify;">Le firewall</h2>
<p style="text-align: justify;">Au début je pensais utiliser une BSD avec du <em>pf</em>. Mais je me suis ravisé : pf ne permet pas la partie TARPIT qui est tout de même bien sympathique. Qu'est-ce que TARPIT ? C'est un redimensionnement de la fenêtre TCP à 0. Ou de manière plus imagée, c'est le pendant d'un SYN Flood côté défense. On ne renvoie pas l'ACK à un client mais on tue sa requête. Le résultat est d'engorger progressivement sa pile TCP. Le tout proportionnellement à l'ampleur de l'attaque.</p>
<p style="text-align: justify;">Le firewall portent donc trois VIP de service. Chaque voit son port 80 poussé vers le WAF. La première voit en plus un port poussé vers le VPN. Ici, le 3006/tcp.</p>
<p style="text-align: justify;">A côté de cela, pour garder une certaine dynamique dans les règles <em>iptables</em>, on ne bloque pas tout. Juste quelques attaques de type DoS standard. Le reste, on fera du préventif ou cas par cas.</p>
<p style="text-align: justify;">Du coup, <em>portsentry</em> est utilisé pour détecter les scans de ports et déclencher le bamnissement.</p>
<p style="text-align: justify;">On y installe aussi un honeypot qui simule un serveur Windows bien ouvert sur la 4e VIP. Toute tentative de connexion dessus sera détectée dans les logs par un fail2ban qui déclenchera le bannissement.</p>
<p style="text-align: justify;">Enfin, quelques paramétrages fins sont à faire spécifiquement sur le firewall :</p>
<pre># Tuning automatique de la fenêtre TCP
net.ipv4.tcp_moderate_rcvbuf=1
# Communication entre les différents noeuds pour notifier d'un engorgement (<a href="http://tools.ietf.org/html/rfc3168">RFC 3168</a>)
net.ipv4.tcp_ecn=0
# Désactive le discover automatique du MTU
net.ipv4.ip_no_pmtu_disc=0
# On désactive le démarrage lent d'une nouvelle connexion qui a déjà ouvert une session HTTP
net.ipv4.tcp_slow_start_after_idle=0
# On bloque les requêtes de type ICMP echo en broadcast
net.ipv4.icmp_echo_ignore_broadcasts=1
# On préfère traiter toutes les requêtes TCP afin de peupler les règles iptables
net.ipv4.tcp_abort_on_overflow = 1
# C'est l'arme contre les SYN FLOOD : une connexion n'est gardée en mémoire que si le serveur a reçu l'ACK
net.ipv4.tcp_syncookies = 1
# On ne laisse pas retenter un paquet TCP
net.ipv4.tcp_orphan_retries = 0
# Simple réduction de taille du paquet TCP en y mettant pas le champ time - moins de charge CPU
net.ipv4.tcp_timestamps = 0
# Active les acknoledge selectif : on ne répond pas à tous - pour de la perf, pour pourrait le mettre à 0
net.ipv4.tcp_sack = 1
# Tuning de la fenêtre TCP - on est restrictif
net.ipv4.tcp_window_scaling = 1</pre>
<p style="text-align: justify;">D'autres paramètres plus globaux sont initialisés également.</p>
<h2 style="text-align: justify;">Le WAF</h2>
<p style="text-align: justify;">Le WAF est donc le firewall applicatif. En gros, c'est une brique HTTP permettant d'analyser les requêtes et générer un comportement sécuritaire spécifique. On peut utiliser du <a href="http://www.modsecurity.org/">mod_security</a> (qui existe aussi pour nginx maintenant) ou du <a href="http://code.google.com/p/naxsi/">naxsi</a>. La grosse différence, le premier fonctionne à coup de blacklist statiques, le second fonctionne à coup de whitelist et de blacklist générée lors d'un mode d'apprentissage.</p>
<p style="text-align: justify;">Lorsqu'un client HTTP est connecté et a un comportement suspicieux, on aura la joie d'avoir une ligne dans les logs correspondants. En interfaçant avec fail2ban et le script qui va bien, on pourra déclarer l'IP de ce client au firewall qui la bannira.</p>
<p style="text-align: justify;">N'oubliez pas de déclarer les VIP sur la loopback.</p>
<h2 style="text-align: justify;">Le caching</h2>
<p style="text-align: justify;">J'ai déjà eu l'occasion de rédiger différents articles sur le caching (<a href="http://francois.aichelbaum.com/wp-admin/post.php?post=6881&action=edit">création</a> et <a href="http://francois.aichelbaum.com/comparatif-caching-nginxvarnishsquidapache/">comparaison</a>). Ici le but est juste de mettre une brique rapidement en place pour démontrer le fonctionnement.</p>
<p style="text-align: justify;">On reprend donc un nginx configuré pour le caching. La spécificité de cette brique est qu'elle sort directement sur internet via son IP publique (donc sans repasser par le firewall, contrairement aux autres briques).</p>
<p style="text-align: justify;">Au niveau sécurité de la patte publique, on bloque tout à coup de TARPIT/DROP par défaut sur celle-ci.</p>
<h2 style="text-align: justify;">Conclusion</h2>
<p style="text-align: justify;">L'ensemble des scripts est disponible sur mon <a href="https://github.com/faichelbaum/anti-ddos">github</a>. La commande magique <em>deploy</em> se charge d'installer et configurer les différents points pour un rôle donné.</p>
<p style="text-align: justify;">La commande de management <em>ddos</em> permet déjà quelques outils. Elle est à lancer avec un compte nommé <em>sysadmin</em> à qui on réduira les possibilité via <em>sudo</em>. Le compte <em>root</em> est bloqué pour le SSH.</p>
<p style="text-align: justify;">N'oubliez pas que ceci est un PoC et doit donc servir de base. Il est utilisable quasiment tel quel mais il serait mieux d'avoir un niveau suffisant pour l'adapter et l'améliorer.</p>
<p style="text-align: justify;">Imaginez une centralisation des informations, un back office, une mutualisation des firewall pour différents protocoles, des tunnels GRE entre vous et les plateformes cibles, un TARPIT directement intégré au SMTP (cf BSD), ...</p>
<p style="text-align: justify;">Dans tous les cas, voici une idée du résultat au niveau filtrage :</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2013/01/rrd.png"><img class="aligncenter size-medium wp-image-7618" alt="Graphique statistique sur le filtrage anti DDoS" src="/assets/rrd-300x100.png" width="300" height="100" /></a></p>
Complément Redis en haute disponibilité
2012-12-28T13:58:43+01:00
https://francois.aichelbaum.com/2012/12/28/complement-redis-en-haute-disponibilite
<p style="text-align: justify;">Pour ceux qui seraient intéressés, j'ai mis en place un repository <a href="https://github.com/faichelbaum/redis-addons" target="_blank">GitHub</a> concernant le déploiement de <a href="http://francois.aichelbaum.com/complement-redis-en-haute-disponibilite/">Redis 2.6 en haute disponibilité</a>. Vous y trouverez :</p>
<ul>
<li>configuration Redis Server</li>
<li>configuration Redis Sentinel</li>
<li>script d'init (Debian/Ubuntu) Redis Server</li>
<li>script d'init (Debian/Ubuntu) Redis Sentinel</li>
<li>plugin Nagios (check_redis) qui gère l'usage d'un mot de passe</li>
</ul>
Infrastructure Redis en haute disponibilité
2012-12-14T16:33:29+01:00
https://francois.aichelbaum.com/2012/12/14/infrastructure-redis-en-haute-disponibilite
<p style="text-align: justify;">A l'heure où tout devient "connecté", "disponible en ligne", les échanges par l'internet se multiplient. Pour accompagner la démocratisation des liens rapides mais également pour améliorer l'expérience cliente, il est nécessaire que les fournisseurs de service en ligne optimisent leurs applications et la manière dont ils les livrent. Bien sûr, on peut toujours augmenter les ressources matériels, mais le coût n'est pas négligeable. Parfois, les développeurs peuvent travailler main dans la main avec les administrateurs. C'est le cas de l'utilisation des caches applicatifs (Memcached,Couchbase, Redis...).</p>
<p style="text-align: justify;"><!--more--></p>
<h1 style="text-align: justify;">Avant-propos</h1>
<p style="text-align: justify;">Redis, dans la version stable actuelle (2.6) n'offre aucune fonctionnalité de mise en cluster comme Couchbase. Je ne parle pas non plus de l'absence totale d'organes de sécurité. Le but est clairement énoncé : la PER-FOR-MANCE.</p>
<p style="text-align: justify;">Du coup, peu de solution pour la haute disponibilité si ce n'est mettre en place une architecture type maître/esclave avec une promotion automatique de l'esclave en tant que maître en cas de défaillance du premier. Nous allons voir cette mise en place puis tant qu'à faire, sa supervision.</p>
<h1>Installation de l'infrastructure Redis</h1>
<p style="text-align: justify;">On suppose pré-installés deux serveurs Debian Squeeze 64 bit. Notez que la version disponible de Redis dans les repositories officiels est une vieille 1.2.6 et que seule la branche 2.4 est disponible dans les backports. Traduction : nous allons être obligés de tout compiler à la main.</p>
<p style="text-align: justify;">Pour cela, quelques pré-requis à installer :</p>
<pre style="text-align: justify;">aptitude install build-essential tcl8.5 pwgen</pre>
<p style="text-align: justify;">Le package tcl8.5 est là pour vous permettre d'effectuer quelques tests au besoin lors de la séance de compilation. Nous pouvons alors nous attaquer à Redis :</p>
<pre style="text-align: justify;">cd /usr/src
wget http://redis.googlecode.com/files/redis-2.6.7.tar.gz
tar -xzf redis-2.6.7.tar.gz
rm redis-2.6.7.tar.gz
cd redis-2.6.7
make
make install
useradd redis
mkdir /opt/redis
chown redis:redis /opt/redis
chmod 770 /opt/redis</pre>
<h1 style="text-align: justify;">Configuration Redis</h1>
<p style="text-align: justify;">Je vous met à disposition un fichier un peu préparer, <a href="http://cdn.aichelbaum.com/files/r/redis.conf">ici</a>. Cependant, quelques modifications sont à prévoir.</p>
<pre style="text-align: justify;">wget http://cdn.aichelbaum.com/files/r/redis.conf -O /etc/redis.conf</pre>
<p style="text-align: justify;">Dans le cas que je présente ici, je bind l'application sur toutes les interfaces car les serveurs Redis sont sur un VLAN précis et isolé. Au besoin, on peut simplement l'isoler sur une IP en rajoutant dans la configuration un :</p>
<pre style="text-align: justify;">bind X.X.X.X</pre>
<p style="text-align: justify;">Il s'agit également de traitement en temps réel mais donc j'ai besoin d'avoir un maximum de garanties sur la pérennité des informations stockées, je sauvegarde toutes les 60 secondes s'il y a eu au moins une modification en base.</p>
<p style="text-align: justify;">Redis a (trop) peu de sécurité. Cependant, autant mettre au moins un mot de passe pour la réplication. Pour se faire, on va en générer un propre avec pwgen :</p>
<pre style="text-align: justify;">pwgen -s -y 16</pre>
<p style="text-align: justify;">Il est à renseigner à la ligne commençant par <strong>masterauth</strong>. On réutilise le même mot dfe passe pour le champ <strong>requirepass</strong>.</p>
<p style="text-align: justify;">Autre point important à modifier dans la configuration : la taille de la mémoire allouée à Redis. Dans mon exemple :</p>
<pre>maxmemory 512mb</pre>
<p>On peut aussi la passer à 8 Go par exemple :</p>
<pre>maxmemory 8gb</pre>
<p style="text-align: justify;">Penser également à rajouter la ligne suivante dans votre /etc/security/limits.conf :</p>
<pre style="text-align: justify;">redis - nofile 20000</pre>
<p>Redis nécessite un rajout à sysctl :</p>
<pre class="crayon-selected">cat < EOF >> /etc/sysctl.conf
vm.overcommit_memory=1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth1.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth1.arp_announce = 2
EOF
sysctl -p</pre>
<h1>Mise en place de la réplication</h1>
<p>On a donc installé deux serveurs. On suppose leurs noms et IP :</p>
<ul>
<li>redis01 - 192.168.1.1</li>
<li>redis02 - 192.168.1.2</li>
</ul>
<p>On veut que <strong>redis02</strong> soit esclave de <strong>redis01</strong> :</p>
<pre>sed -i "s/# slaveof <masterip> <masterport>/# slaveof <masterip> <masterport>\n#slaveof 192.168.1.1 6379/" /etc/redis.conf</pre>
<p>Mais aussi l'inverse pour que redis01 devienne automatiquement esclave de redis01 en cas de failover :</p>
<pre>sed -i "s/# slaveof <masterip> <masterport>/# slaveof <masterip> <masterport>\n#slaveof 192.168.1.2 6379/" /etc/redis.conf</pre>
<h1>Mise en place du failover Redis</h1>
<p style="text-align: justify;">On va entre s'appuyer sur<strong> redis-sentinel</strong> qui est une solution permettant de gérer <em>facilement</em> le failover entre les serveurs.</p>
<pre style="text-align: justify;">cp /usr/src/redis-2.6.7/src/redis-sentinel /usr/local/bin/redis-sentinel</pre>
<p>Plus qu'à importer la <a href="http://cdn.aichelbaum.com/files/s/sentinel.conf">configuration</a> (et l'adapter avec vos IP et mots de passe) :</p>
<pre>wget http://cdn.aichelbaum.com/files/s/sentinel.conf -O /etc/sentinel.conf</pre>
<p style="text-align: justify;">Petite précision : <strong>sentinel</strong> gère le failover, pas le fallback automatique. Il faut donc que l'ancien maître (<strong>redis01</strong>) devienne un esclave du nouvellement promu (<strong>redis02</strong>).</p>
<p style="text-align: justify;">Pensez à installer un 3e sentinel sur le serveur de supervision avec les mêmes informations. Il vous permettra d'avoir un quorum de 2 sur les 3 sentinels possibles, très utile en cas de <em>split-brain</em> (chaque serveur est <em>UP & Running</em> mais ne voit plus son voisin).</p>
<p style="text-align: justify;">On n'avait pas encore les fichiers d'init donc on va les mettre en place avec l'intelligence. J'ai préparé deux scripts d'init pour le coup</p>
<pre style="text-align: justify;">wget http://cdn.aichelbaum.com/files/r/redis-server.init -O /etc/init.d/redis-server
wget http://cdn.aichelbaum.com/files/r/redis-sentinel.init -O /etc/init.d/redis-sentinel
chmod +x /etc/init.d/redis-se*
update-rc.d redis-sentinel defaults
update-rc.d redis-server defaults
insserv redis-sentinel
insserv redis-server</pre>
<h1>Load balancing</h1>
<p style="text-align: justify;">On va gérer l'IP flottante permettant de n'accéder qu'au maître (pour fonctionner en actif/passif) avec un bête script. Pourquoi bête ? parce que le mode de fonctionnement ne requière pas l'installation d'une usine à gaz et qu'on a un simple cron qui peut faire le boulot. Pensez juste à éditer l'IP mise pour la VIP.</p>
<pre style="text-align: justify;">wget http://cdn.aichelbaum.com/files/r/redis-vip.sh -O /usr/local/bin/redis-vip.sh
chmod +x /usr/local/bin/redis-vip.sh
echo "* * * * * /usr/local/bin/redis-vip.sh &> /dev/null" > /etc/cron.d/redis-vip</pre>
<h1>Supervision Nagios pour Redis</h1>
<p style="text-align: justify;">On va s'appuyer sur un plugin existant : <a href="https://github.com/faichelbaum/redis-addons/blob/master/check/check_redis">check_redis</a>. Il permet aussi bien de superviser l'instance Redis en elle-même, que la réplication. Pour cela, il demande au serveur son rôle dans la réplication et dans le cas d'un esclave (<em>slave</em>) son status.</p>
<p style="text-align: justify;">Rien de particulier pour l'installation en soit. Le plugin est vraiment standard :</p>
<pre style="text-align: justify;">Usage: check_redis -H HOSTNAME -p PORT -c CRITICAL -w WARNING -t TIMEOUT (-P PASSWORD)</pre>
<p style="text-align: justify;">Par contre, il faut également superviser les sentinels. Au choix : un check_tcp sur le port 26379 ou vérifier en NRPE ou SNMP le status du service<strong> redis-sentinel</strong>.</p>
Partager des mots de passe en sécurité
2012-12-12T15:27:42+01:00
https://francois.aichelbaum.com/2012/12/12/partager-des-mots-de-passe-en-securite
<p style="text-align: justify;">Voici un problème récurrent avec les allers et venues dans les sociétés. Comment partager les mots de passe d'une plateforme, la maintenir de tout changement, et éviter les fuites d'informations ?</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: justify;">Certains choisissent d'avoir un mot de passe unique ... C'est mal.</p>
<p style="text-align: justify;">D'autres préconisent d'avoir un mot de passe avec une partie mémotechnique variable (liée par exemple, au nom du serveur). C'est prédictible donc c'est mal.</p>
<p style="text-align: justify;">Certains reposent sur une centralisation des identifiants (avec un LDAP ou un Active Directory) et se partagent les informations via des fichiers type KeePassX. On se rapproche de quelque chose. Cependant, subsiste le problème d'accès à la base et de son maintient.</p>
<p style="text-align: justify;">On va avancer sur cette solution et voir à la fiabiliser.</p>
<h1 style="text-align: justify;">Avant propos</h1>
<p style="text-align: justify;">Juste quelques rappels avant d'exposer quelques bonnes méthodes à appliquer à cette solution.</p>
<p style="text-align: justify;">A chaque mouvement de personnel, il faut révoquer les accès de l'utilisateur, et modifier les accès administrateurs sur les différents serveurs/services. La centralisation des comptes et le maintient d'une base d'information prend tout son sens.</p>
<p style="text-align: justify;">Chaque modification sur la base nécessite d'être conservé (trace de la modification et conservation d'un historique des mots de passe à la rigueur).</p>
<p style="text-align: justify;">Je ne traiterais pas de la centralisation des comptes. Guillaume Vaillant vous propose <a href="http://guillaume.vaillant.me/?p=187">un billet sur le sujet orienté LDAP</a> et je verrais peut-être à en rédiger un orienté Active Directory sous peu.</p>
<h1 style="text-align: justify;">Sécuriser la donnée</h1>
<p style="text-align: justify;">On va se baser sur l'outil <a href="http://keepass.info/download.html">KeePass 2</a> (avec le plugin <a href="http://keepass.info/plugins.html#ioprotocolext">IOProtocolExt</a>). Ce logiciel permet de sauvegarder les différents mots de passe dans une base encrypté (en AES256 de base). Le plugin quant à lui permet de centraliser la base sur un serveur SFTP.</p>
<p style="text-align: justify;">Installer une distribution Linux ne doit pas être top un problème, donc on passe. Installer un serveur SSH, aussi.</p>
<p style="text-align: justify;">On modifie les utilisateurs concernés par l'accès à la base en les affectant à un groupe dédié :</p>
<pre style="text-align: justify;">groupadd keepass
gpasswd -a francois keepass</pre>
<p style="text-align: justify;">Ensuite, on crée un dossier, et on le prépare au niveau des droits et ACL (on pense à installer le package <strong>acl</strong>) :</p>
<pre style="text-align: justify;">mkdir /home/keepass
chgrp keepass /home/keepass
chmod 070 /home/keepass
chmod g+s /home/keepass
setfacl -Rmd g:keepass:rwx /home/keepass</pre>
<p style="text-align: justify;">On rajoute le logging des actions en SFTP en éditant le fichier <em>/etc/ssh/sshd_config</em> puis en relançant le service <strong>ssh</strong> :</p>
<pre style="text-align: justify;">sed -i '^Subsystem sftp /usr/lib/openssh/sftp-server^Subsystem sftp /usr/lib/openssh/sftp-server -l INFO^' /etc/ssh/sshd_config
/etc/init.d/ssh reload</pre>
<h1 style="text-align: justify;">Installer KeePass 2</h1>
<h3>Sur Windows</h3>
<p style="text-align: justify;">Pour une fois, au grand dam des <em>trolleurs</em> du vendredi, ce sont aux amis de Windows qui s'en sortent le plus facilement. Une simple installation en <em>clic-next</em> fait son affaire. Concernant le plugin, on copie les fichiers dans le dossier d'installation de KeePass et on relance l'application.</p>
<h3 style="text-align: justify;">Sur Linux</h3>
<p style="text-align: justify;">Bien que des packages soient disponibles pour les distributions majeurs, le plugin pour le SFTP utilisent des classes .NET non disponibles sur Mono. Obligé de passer par Wine. On part d'un préfixe wine vierge :</p>
<pre style="text-align: justify;">cd ~
winetricks dotnet40
wine Downloads//KeePass-2.20.1-Setup.exe</pre>
<p style="text-align: justify;">On copiera là encore les fichiers de plugin dans le dossier qui va bien.</p>
<h3>SUR MAC OS X</h3>
<p style="text-align: justify;">Même problème que sur Linux. Même solution : wine. Il faut donc installer <a href="http://www.macports.org/">MacPorts</a> puis wine :</p>
<pre>sudo port install wine
cd ~
winetricks dotnet40
wine KeePass-2.20.1-Setup.exe</pre>
<p>On copiera là encore les fichiers de plugin dans le dossier qui va bien.</p>
<h1 style="text-align: justify;">Générer la donnée</h1>
<p style="text-align: justify;">Il faut bien initialiser la base. On a donc installé KeePass 2. On crée une nouvelle base. On la sauvegarde. On la transfert en scp sur le serveur dans le bon dossier (avec WinSCP, FileZilla, ssh, ...). Pour sécuriser la base, on va utiliser un master key sous la forme d'un fichier générer par l'entropie de la souris. On garde le fichier dans un coin.</p>
<p style="text-align: justify;">On supposera que la base s'appelle <strong>base.kdbx</strong> et la clé <strong>base.key</strong>.</p>
<h1 style="text-align: justify;">Accéder à la donnée</h1>
<p style="text-align: justify;">La partie simplissime : <em>File > Open > Open URL</em>. On renseigne les informations :</p>
<ul>
<li>URL : sftp://ip/home/keepass/base.kbdx</li>
<li>user name : votre identifiant</li>
<li>password : votre mot de passe (il n'y a pas de gestion par clé pour le moment)</li>
</ul>
<p>Le fichier sera chargé automatiquement.</p>
<h1>Mise à jour de la donnée</h1>
<p style="text-align: justify;">La modification des informations se fait simplement en sauvegardant (<em>File > Save</em> – et non <em>File > Save As</em>).</p>
<p style="text-align: justify;">Il est intéressant de sauvegarder une copie locale pour des raisons de mobilité par exemple ou d'indispo du serveur. Pour se faire : <em>File > Save As > Save copy to file</em></p>
<p style="text-align: justify;">La gestion des mises à jour par plusieurs utilisateurs et des risques de conflit se fait de la manière suivante :</p>
<ul>
<li style="text-align: justify;">Les mises à jours se font seulement sur les entrées modifiées ; KeePass 2 se base principalement sur la date de modification</li>
<li style="text-align: justify;">Quand l’utilisateur A sauvegarde ses modifications sur le serveur, il récupère au même moment les mises à jour des autres utilisateurs</li>
<li style="text-align: justify;">S’il y a un conflit (A et B mettent à jours la même entrée en base), l’entrée la plus récente sera conservée (date de modification prise en compte)</li>
<li style="text-align: justify;">Le serveur prévient et demande une confirmation de l’action à mener au moment de la sauvegarde</li>
</ul>
<h1>Derniers points</h1>
<p style="text-align: justify;">Pensez à transmettre le master key aux bons utilisateurs.</p>
<p style="text-align: justify;">Pensez à mettre à jour régulièrement la master key surtout lors des départs d'utilisateurs.</p>
<p style="text-align: justify;">Ne déposez pas la base sur des partages publiques, même si elle est encryptée (GDrive, DropBox, ...).</p>
<p style="text-align: justify;">Ne transmettez pas la master key par email (surtout jointe avec les informations "vitales").</p>
Optimiser les images de son site
2012-11-27T12:36:42+01:00
https://francois.aichelbaum.com/2012/11/27/optimiser-les-images-de-son-site
<p style="text-align: justify;">Pourquoi optimiser les images de son site ? Tout simplement, parce que cela a son importance pour le référencement mais aussi et surtout pour l'expérience utilisateur. Après tout, un site web est fait pour être consulté donc autant que l'expérience utilisateur soit la meilleure possible.</p>
<h1 style="text-align: justify;"><!--more-->La bonne taille de l'image</h1>
<p style="text-align: justify;">Première erreur fréquemment rencontrée, la taille de l'image inadaptée. Régulièrement, on peut tomber soit sur une image agrandie (et donc pixélisée), soit sur une image réduite.</p>
<p style="text-align: justify;">Dans le premier cas, l'image est moche, l'expérience utilisateur dégradée car l'internaute reste critique dans l'âme et ne reviendra pas si le site n'est pas un minimum agréable. Seule solution : trouver la même image dans le bon format ou <em>a fortiori </em>dans un format bien supérieur (cf ci-dessous).</p>
<p style="text-align: justify;">Dans le second cas, on garde ce format "géant" sur notre PC et on prépare des versions adaptée grâce à notre logiciel d'image favori (<a title="The Gimp" href="www.gimp.org" target="_blank">The Gimp</a> par exemple). Ainsi, transférer le fichier image au bon format et à la bonne résolution aura plusieurs impacts :</p>
<ul>
<li>réduire la quantité de données à envoyer au navigateur de votre visiteur (donc le site s'affiche plus vite)</li>
<li>moins de travail pour le navigateur de votre visiteur (le site s'affiche plus vite et consomme moins de ressources)</li>
<li>l'image sera agréable à regarder</li>
<li>la variété des formats pour une image sur le site augmente indirectement le contenu à référencer sur le site et donc améliore le référencement du site</li>
</ul>
<p style="text-align: justify;">Dans tous les cas, l'expérience utilisateur s'améliore nettement.</p>
<h1 style="text-align: justify;">Combiner les images via des CSS Sprites</h1>
<p style="text-align: justify;">Parfois, vous aller avoir tout un semble de petits logos/icônes sur une même page et qui reviennent régulièrement sur votre site. Il est alors intéressant de combiner toutes ces images dans un seul fichier, qui sera importé et "découpé" par CSS.</p>
<p style="text-align: justify;">Pour combiner les images, si vous ne travailler par directement sur le format unifié, vous pouvez le faire via ImageMagick.</p>
<pre style="text-align: justify;">aptitude -y install imagemagick</pre>
<p style="text-align: justify;">Ensuite, pour combiner des images au format JPEG par ex :</p>
<pre>convert image1.jpg image2.jpg image3.jpg +append -quality 75 combine.jpg"</pre>
<p style="text-align: justify;">Il est possible de le faire pour d'autres formats image. ImageMagick est vraiment une belle boite à outil pour le traitement image.</p>
<p style="text-align: justify;">On peut alors intégré dans le CSS ainsi (extrait du CSS de mon blog) :</p>
<pre>#wp-social-login-connect-options a.Tumblr {
display:block;
float:left;
height:32px;
width:32px;
margin:0px;
text-indent:-9999px;
background-image:url('https://cdn.aichelbaum.com/images/S/sprites.png');
background-position:-256px 0px;
}</pre>
<pre>#wp-social-login-connect-options a.Mixi {
display:block;
float:left;
height:32px;
width:32px;
margin:0px;
text-indent:-9999px;
background-image:url('https://cdn.aichelbaum.com/images/S/sprites.png');
background-position:-288px 0px;
}</pre>
<pre>#wp-social-login-connect-options a.Steam {
display:block;
float:left;
height:32px;
width:32px;
margin:0px;
text-indent:-9999px;
background-image:url('https://cdn.aichelbaum.com/images/S/sprites.png');
background-position:-320px 0px;
}</pre>
<p style="text-align: justify;">On ne transfert donc plus qu'une seule image, plutôt petite, et on repositionne et redimensionne l'affichage de la cellule au style demandé. Encore une fois, on réduit la quantité de données à envoyer au navigateur de votre visiteur. Son expérience s'améliore encore.</p>
<h1 style="text-align: justify;">Optimiser les images</h1>
<p style="text-align: justify;">Aujourd'hui, les images, que cela soit en JPEG ou en PNG, embarque énormément d'infomations. Limite de la pollution dans certains cas. Des outils existent et permettent de nettoyer tout cela automatiquement : optipng et jpegoptim :</p>
<pre style="text-align: justify;">aptitude -y install optipng jpegoptim</pre>
<p style="text-align: justify;">Pour les utiliser d'un coup et simplement (voire les mettre dans une cron), un petit script :</p>
<pre>cat > /usr/local/bin/optimage.sh << EOF
#!/bin/bash
find $1 -name "*.jpg" -exec jpegoptim --strip-all {} \; | grep -v skipped
find $1 -name "*.png" -exec optipng -o 7 {} \; 2> /dev/null
exit 0
EOF</pre>
<p style="text-align: justify;">Du coup à l'usage, il suffit d'appeler le script avec en paramètre le dossier parent à traiter récursivement puis le tour est joué.</p>
<p style="text-align: justify;">Les fichiers gagnent encore en taille etc etc.</p>
<p style="text-align: justify;">Le site est toujours plus performant. L'utilisateur apprécit et revient. Le référencement s'amliore</p>
Skyfall : le paradoxe du grand père façon James Bond
2012-10-29T12:24:23+01:00
https://francois.aichelbaum.com/2012/10/29/skyfall-le-paradoxe-du-grand-pere-facon-james-bond
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/Skyfall_wallpaper1.jpg"><img class="alignleft size-thumbnail wp-image-7385" title="Skyfall" src="/assets/Skyfall_wallpaper1-150x150.jpg" alt="Skyfall" width="150" height="150" /></a>James Bond est l'une des sagas qui m'a le plus bercé depuis mes débuts de spectateurs. Ces longues soirées d'hiver à regarde le flegme britannique donner une leçon à ces vils espions russes ou ces escrocs en col blanc. Malheureusement, ce flegme britannique a pris un gros coup à deux reprises. Une touche trop américaine avec le style de Timothy Dalton. Une touche trop russe avec le style de Daniel Craig. Dès que je le vois, je repense à l'espion soviétique de <a href="http://www.youtube.com/watch?v=gwfgIOmHpLA">Bon baiser de Russie</a>. Bref, Skyfall est sorti vendredi donc obligation de le voir ... puis de le critiquer</p>
<p><!--more--></p>
<h2 style="text-align: justify;">Le paradoxe de James Bond</h2>
<p style="text-align: justify;">Les épisodes 21 et 22 marquait un retour dans en arrière compliqué pour l'espion anglais. Il fallait revenir aux origines du personnes, tout en avançant dans le temps pour coller à la modernité de l'actualité. Compliqué mais pas impossible, jusqu'au moment où le lien devait être fait avec le reste de la saga. C'est le but de Skyfall.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=6kw1UVovByw[/video]</p>
<p style="text-align: justify;">Comment revenir sur l'origine de l'espion, de son univers, et continuer d'avancer ? Tout simplement en programmant une destruction globale de l'existant (MI6, M, ...) pour repartir sur de nouvelles bases. Le film se charge donc de détruire le magnifique QG (réel) du MI6 pour le remplacer par les sous terrains de Churchill. "M" est mise sur le pilori pour annoncer son futur remplacement dès le début du film. Et Moneypenny fait enfin son apparition, justifiant au passage le petit jeu de séduction entre elle et Bond. Peu de gadget dans cet opus si ce n'est une petite balise radio old-school mais miniature de la part du nouveau Q.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/Skyfall-le-nouveau-James-Bond-est-le-plus-cool-de-la-saga-un-futur-classique_portrait_w532.jpg"><img class="alignnone size-thumbnail wp-image-7391" title="Skyfall" src="/assets/Skyfall-le-nouveau-James-Bond-est-le-plus-cool-de-la-saga-un-futur-classique_portrait_w532-150x150.jpg" alt="Skyfall" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/o-SKYFALL-570.jpg"><img class="alignnone size-thumbnail wp-image-7394" title="Skyfall" src="/assets/o-SKYFALL-570-150x150.jpg" alt="Skyfall" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/953216-nouveau-spot-tv-pour-le-film-skyfall-620x0-2.jpg"><img class="alignnone size-thumbnail wp-image-7397" title="Skyfall" src="/assets/953216-nouveau-spot-tv-pour-le-film-skyfall-620x0-2-150x150.jpg" alt="Skyfall" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/472047_daniel-craig-g-et-l-actrice-francaise-berenice-marlohe-d-pour-l-avant-premiere-mondiale-du-nouveau-james-bond-skyfall-le-23-octobre-2012-a-londres.jpg"><img class="alignnone size-thumbnail wp-image-7400" title="Skyfall" src="/assets/472047_daniel-craig-g-et-l-actrice-francaise-berenice-marlohe-d-pour-l-avant-premiere-mondiale-du-nouveau-james-bond-skyfall-le-23-octobre-2012-a-londres-150x150.jpg" alt="Skyfall" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/20-berenice-marlohe-skyfall-james-bond.jpg"><img class="alignnone size-thumbnail wp-image-7403" title="Skyfall" src="/assets/20-berenice-marlohe-skyfall-james-bond-150x150.jpg" alt="Skyfall" width="150" height="150" /></a></p>
<p style="text-align: justify;">Là où ce James Bond échoue lamentablement ? L'ennemi. Ce n'est plus la mode aux magnats de la finance (bah oui, c'est l'heure de la crise donc on ne va pas taper sur la production). Et alors qu'un retour aux luttes contre l'armée rouge aurait été bienvenu, on ne nous annonce un ennemi bien pire : un renegat anglais ... qui n'a rien d'anglais. Après tout, on n'a bien un espion soviet pour camper le rôle du plus anglais des espions. Alors on n'est plus à ca près. Et encore, je ne vous dit pas les crises de fous rires qui s'annoncent en regardant le jeu d'acteur de Javier Bardem.</p>
<p style="text-align: justify;">Par contre, comme bien souvent, la bande originale est magnifique. Signée Adèle, s'il vous plaît (et il vous plaira).</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=7HKoqNJtMTQ[/video]</p>
<p style="text-align: justify;">Cette douceur ne suffira malheureusement pas à masquer la violence et le côté américain du film. On frappe. On tue. Et s'il y a des survivants on se pose des questions. Les James Bond girls sont là, mais au final, bien trop transparentes. Où sont donc passées les bases des bons vieux James Bond ? Réponse, espérons-le, au prochain opus. Pour le coup, j'ai bien failli m'endormir.</p>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/james-bond-007-skyfall.jpg"><img class="aligncenter size-medium wp-image-7406" title="Skyfall" src="/assets/james-bond-007-skyfall-300x225.jpg" alt="Skyfall" width="300" height="225" /></a></p>
<p style="text-align: justify;">
</p>
Astérix et Obélix : Au service de Sa Majesté
2012-10-29T11:48:49+01:00
https://francois.aichelbaum.com/2012/10/29/asterix-et-obelix-au-service-de-sa-majeste
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/background-new-affiche.jpg"><img class="alignleft size-thumbnail wp-image-7355" title="Astérix et Obélix : Au service de Sa Majesté" src="/assets/background-new-affiche-150x150.jpg" alt="Astérix et Obélix : Au service de Sa Majesté" width="150" height="150" /></a>Ah, les aventures d'Astérix et Obélix. Toujours un grand moment de lecture que l'on soit jeune ou moins jeune. Par contre, pour ce qui est des adaptions cinémas "live", c'est une autre histoire. Sur trois films, un seul tire son épingle du jeu (<a href="http://www.youtube.com/watch?v=kCFrvuPpAoQ">Mission Cléopatre</a>) et mérite d'être vu : il faut dire que la bande à Chabat est une arme de rire massive. Quid de la nouvelle adaptation au cinéma ?</p>
<p style="text-align: justify;"><!--more--></p>
<h2 style="text-align: justify;">Astérix en voyage</h2>
<p style="text-align: justify;">Cette fois-ci, notre blond ami décolle pour voir les bretons cousins. Les normands cousins seront également de la partie. Un voyage haut en couleur en perspective annonce-t-il un niveau de qualité élevé ?</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=eLr8aU-sTb8[/video]</p>
<p style="text-align: justify;">Quatrième film, et encore un nouvel Astérix : Edouard Baer. Je dois dire que j'aime la symbiose du duo Depardieu-Clavier depuis de nombreux films. Cornillac est un bon acteur mais le rôle ne lui allait pas du tout. Edouard Baer est tout simplement PAR-FAIT !</p>
<p style="text-align: justify;">De même, un nouveau César entre en scène : Fabrice Luchini. C'est sûr, il n'a pas le nombrilisme que dégage Alain Delon et qui était fort sympatique pour le rôle. Pour autant, sa prose et sa verbale font de lui un grand et agréable César.</p>
<p style="text-align: justify;">Par contre, premier point qui m'attriste ? Les bretons sont tous joués par des Français. C'est sûr que l'ouverture à l'international est impossible pour un produit tel qu'Astérix : il ne s'est vendu qu'à 325 millions de part le monde et traduit exclusivement dans 107 langues. Du coup, ces français bretons nous sur-jouent du début à la fin l'anglais accent. Ce qui est comique les premières minutes du film devient vite ennuyeux voire fatigant.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/dany_boon.jpg"><img class="alignnone size-thumbnail wp-image-7361" title="Astérix et Obélix : Au service de Sa Majesté " src="/assets/dany_boon-150x150.jpg" alt="Astérix et Obélix : Au service de Sa Majesté " width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/asterix-et-obelix_reference.jpg"><img class="alignnone size-thumbnail wp-image-7364" title="Astérix et Obélix : Au service de Sa Majesté " src="/assets/asterix-et-obelix_reference-150x150.jpg" alt="Astérix et Obélix : Au service de Sa Majesté " width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/Astérix-et-Obélix-Au-service-de-sa-Majesté-Télérama-04.jpg"><img class="alignnone size-thumbnail wp-image-7367" title="Astérix et Obélix : Au service de Sa Majesté " src="/assets/Astérix-et-Obélix-Au-service-de-sa-Majesté-Télérama-04-150x150.jpg" alt="Astérix et Obélix : Au service de Sa Majesté " width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/Astérix-et-Obélix-Au-service-de-sa-Majesté-Télérama-03-500x341.jpg"><img class="alignnone size-thumbnail wp-image-7370" title="Astérix et Obélix : Au service de Sa Majesté " src="/assets/Astérix-et-Obélix-Au-service-de-sa-Majesté-Télérama-03-500x341-150x150.jpg" alt="Astérix et Obélix : Au service de Sa Majesté " width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/1775478_7_9734_valerie-lemercier-et-charlotte-le-bon-dans-le_4bd1cdafd8ed2bdade64e7f0dde44a4a.jpg"><img class="alignnone size-thumbnail wp-image-7373" title="Astérix et Obélix : Au service de Sa Majesté " src="/assets/1775478_7_9734_valerie-lemercier-et-charlotte-le-bon-dans-le_4bd1cdafd8ed2bdade64e7f0dde44a4a-150x150.jpg" alt="Astérix et Obélix : Au service de Sa Majesté " width="150" height="150" /></a></p>
<p style="text-align: justify;">De plus, alors que l'anachronisme de la BD est connu mais léger, celui de ce film est lourd : des huttes celtes renferment des habitations aux décorations victorienne. Usant. Ces deux points sont bien fatigant et gâche le potentiel du film.</p>
<p style="text-align: justify;">Par contre, les normands, avec un Dany Boon en principal représentant, s'en sortent très bien. J'ai beau ne pas aimé l'acteur en général, ici, il se laisse regarder et assume très bien son rôle de géant du nord.</p>
<p style="text-align: justify;">Au final, le film se révèle en demi teinte : les acteurs sont à leur place (ou presque ...) mais une ouverture à l'internationale et une liberté moins grande sur les anachronismes aurait rendu le film parfait. N°2 en qualité dans la saga.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/10/asterix_et_obelix_au_service_de_sa_majeste.jpg"><img class="aligncenter size-medium wp-image-7352" title="Astérix et Obélix : Au service de Sa Majesté" src="/assets/asterix_et_obelix_au_service_de_sa_majeste-224x300.jpg" alt="Astérix et Obélix : Au service de Sa Majesté" width="224" height="300" /></a></p>
<p style="text-align: justify;">
</p>
Code Club - Talking code
2012-10-07T15:39:42+02:00
https://francois.aichelbaum.com/2012/10/07/code-club-talking-code
<p><iframe width="425" height="350" src="https://www.youtube.com/embed/Ci3hY83rUwU" frameborder="0"></iframe></p>
Création d'une plateforme (S) FTP (S) sécurisée avec authentification centralisée et utilisant divers stockages
2012-09-26T17:02:49+02:00
https://francois.aichelbaum.com/2012/09/26/creation-dune-plateforme-sftps-securisee-avec-authentification-centralisee-et-utilisant-divers-stockages
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/FTP-logo.jpg"><img class="alignleft size-thumbnail wp-image-7250" title="FTP" src="/assets/FTP-logo-150x150.jpg" alt="FTP" width="150" height="150" /></a>Il y a quelques années, pour l'un de mes employeurs (un gros CDN français pour ne pas le citer), une problématique s'est posée suite à une utilisation abusive des plateformes FTP. En l'occurrence, il y avait plusieurs serveurs FTP :</p>
<ul>
<li>sous Windows :IIS, Filezilla Server et CoreFTP (SFTP)</li>
<li>sous Linux, plusieurs proftpd différents</li>
</ul>
<p style="text-align: justify;">Suite à l'utilisation abusive de la plateforme (historique) et l'impossibilité de remonter les traces, il a été demandé de sécuriser l'ensemble. J'en ai profité pour faire pas mal de modifications :</p>
<ul>
<li>avoir un seul point d'entrée (un même pool de <em>VIP</em>) peu importe le service</li>
<li style="text-align: justify;">avoir une authentification centralisée que ca soit en FTP, FTP avec SSL ou SFTP (à l'époque avec un Active Directory)</li>
<li style="text-align: justify;">avoir une seule et même arborescence pour tous les NAS utilisés, peu importe l'origine et réduire le nombre de comptes clients</li>
<li>enregistrer toute l'activité des serveurs (accès, commandes exécutées)</li>
<li>bannir les comportements anormaux</li>
</ul>
<p style="text-align: justify;">J'avais nommé ce genre de plate-forme <em>FTPx</em>. Je cherchais un nouveau sujet de billet. Je me suis dis que j'allais dépoussiérer cette plateforme (la refaire pour le billet donc) en lui rajoutant une petite couche complémentaire (portsentry, honeypot, ...).</p>
<p><!--more--></p>
<h2>Avant propos sur la plateforme FTP</h2>
<p style="text-align: justify;">L'architecture va se baser exclusivement sur du gratuit. Du coup, je remplace l'Active Directory par un plus basique MySQL. La plateforme montée rapidement se base sur les machines suivantes :</p>
<ul>
<li><span style="color: #3366ff;">fw</span> : firewalling et loadbalancing</li>
<li><span style="color: #3366ff;">ftpx01</span> & <span style="color: #3366ff;">ftpx02</span> : serveurs SFTP + FTP(S)</li>
<li><span style="color: #3366ff;">mysql</span> : serveur MySQL</li>
</ul>
<p style="text-align: justify;">Bien sûr, on pourrait redondé la partie fw ou mysql mais ce n'est pas le sujet de ce billet (je pourrais toujours rédiger un billet dédié s'il y a de la demande pour). Au niveau accès, de l'extérieur, un utilisateur qui fait du SFTP ne pourra pas faire de SSH. De plus, il sera restreint à son arborescence et ne pourra remonté ailleurs.</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/ftpx.png"><img class="alignnone size-medium wp-image-7256 aligncenter" title="Schéma architecture FTPX" src="/assets/ftpx-300x188.png" alt="Schéma architecture FTPX" width="300" height="188" /></a></p>
<p style="text-align: justify;">Au niveau NAS, je ne ferais que la partie cliente, de manière rapide pour montrer la logique. Donc un serveur NFS et un serveur CIFS sont supposés exister.</p>
<p style="text-align: justify;">On suppose à chaque fois partir d'une Debian légère et plutôt vierge. On ignore l'installation du serveur MySQL qui n'a rien de bien particulier.</p>
<p style="text-align: justify;">Au niveau réseau, on notera les réseaux ainsi :</p>
<ul>
<li>x.x.x.y : IP publique se finissant en y (on suppose une /24 de manière abusive)</li>
<li>z.z.a.y : IP pour le routage vers <span style="color: #3366ff;">fw</span> (on travaille sur une /24 encore)</li>
<li>z.z.b.y : IP de service entre les serveurs FTP et MySQL</li>
<li>z.z.c.y : IP de service entre les serveurs FTP et les NAS</li>
</ul>
<p>Du coup, on se retrouve avec le plan d'adressage suivant :</p>
<ul>
<li><span style="color: #3366ff;">fw</span>
<ul>
<li>public : x.x.x.1/24</li>
<li>honeypot : x.x.x.2/24</li>
<li>vip : x.x.x.3/24</li>
<li>vers <span style="color: #3366ff;">ftpx01</span> & <span style="color: #3366ff;">ftpx02</span> : z.z.a.1/24</li>
</ul>
</li>
<li><span style="color: #3366ff;">ftpx01</span> & <span style="color: #3366ff;">ftpx02</span>
<ul>
<li>vers <span style="color: #3366ff;">fw</span> : z.z.a.11/24 et z.z.a.12/24</li>
<li>vers <span style="color: #3366ff;">mysql</span> : z.z.b.11/24 et z.z.b.12/24</li>
<li>vers les <span style="color: #3366ff;">nas</span> : z.z.c.11/24 et z.z.c.12/24</li>
</ul>
</li>
<li><span style="color: #3366ff;">mysql</span>
<ul>
<li>vers <span style="color: #3366ff;">ftpx01</span> & <span style="color: #3366ff;">ftpx02</span> : z.z.b.21/24</li>
</ul>
</li>
<li><span style="color: #3366ff;">nfs</span> & <span style="color: #3366ff;">cifs</span>
<ul>
<li>vers <span style="color: #3366ff;">ftpx01</span> & <span style="color: #3366ff;">ftpx02</span> : z.z.c.31/24 & z.z.c.32/24</li>
</ul>
</li>
</ul>
<h2 style="text-align: justify;">Création de fw</h2>
<p style="text-align: justify;">On commence par installer les premiers packages.</p>
<pre style="text-align: justify;">apt-get -y install bind9 libnetfilter-conntrack3 ldirectord apticron ntp iptables module-assistant xtables-addons-common honeyd fail2ban portsentry</pre>
<p style="text-align: justify;">On implémente le module complémentaire d'iptables.</p>
<pre style="text-align: justify;">module-assistant --verbose --text-mode auto-install xtables-addons</pre>
<h3 style="text-align: justify;">Serveur DNS récursif</h3>
<p style="text-align: justify;">On s'installe un serveur DNS récursif en local pour diverses raisons (dont des histoires de performance).</p>
<pre>cat << EOF > /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
query-source address * port *;
forwarders { 208.67.222.222; 208.67.220.220; };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { none; };
listen-on { 127.0.0.1; };
allow-transfer { none; };
allow-query { any; };
allow-recursion { any; };
version none;
};
EOF
/etc/init.d/bind9 restart
echo "nameserver 127.0.0.1" > /etc/resolv.conf</pre>
<h3 style="text-align: justify;">Optimisations système</h3>
<p style="text-align: justify;">On s'applique à faire quelques optimisations qui seront bien pratique pour la suite.</p>
<pre>cat << EOF > /etc/security/limits.conf
* - nofile 65536
EOF
cat << EOF >> /etc/profile
ulimit -n 65536
EOF
cat << EOF > /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 4194304
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_mem = 4096 65536 4194304
net.ipv4.tcp_low_latency = 0
net.core.netdev_max_backlog = 30000
fs.file-max = 65536
kernel.shmmax = 8000000000
kernel.shmall = 8000000000
net.ipv4.tcp_abort_on_overflow = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65535
vm.min_free_kbytes = 65536
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth1.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth1.arp_announce = 2
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_keepalive_intvl = 1
net.ipv4.tcp_keepalive_probes = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.conf.all.proxy_arp = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 1
kernel.core_uses_pid=1
kernel.core_pattern=1
vm.dirty_background_ratio = 20
vm.dirty_ratio = 40
vm.swappiness = 1
vm.dirty_writeback_centisecs = 1500
net.ipv4.tcp_max_syn_backlog = 65536
net.core.optmem_max = 40960
net.ipv4.tcp_max_tw_buckets = 360000
net.ipv4.tcp_reordering = 5
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_rfc1337 = 0
net.core.somaxconn=65536
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_ecn=0
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.tcp_slow_start_after_idle=0
net.netfilter.nf_conntrack_acct=1
net.ipv4.icmp_echo_ignore_broadcasts=1
EOF
sysctl -p</pre>
<h3 style="text-align: justify;">Fail2ban & honeypot</h3>
<p style="text-align: justify;">L'idée est d'utiliser le honeypot pour bannir les mauvaises personnes. Pour se faire, vu qu'on doit appliquer les règles au niveau de <span style="color: #3366ff;">fw</span>, aussi bien pour du INPUT que du FORWARD et sur plusieurs IP, on va le faire via fail2ban.</p>
<pre>cat << EOF > /etc/rc.local
farpd x.x.x.2 -i eth0
/usr/local/bin/rules.sh start
exit 0
EOF</pre>
<pre>farpd x.x.x.2 -i eth0
wget http://www.alunos.di.uminho.pt/~a43175/code/perl/customPie.pm -O /etc/honeypot/customPie.pm
wget http://www.alunos.di.uminho.pt/~a43175/code/perl/buildPie.pl -O /etc/honeypot/buildPie.pl
cat << EOF > /etc/default/honeyd
RUN="yes"
INTERFACE="eth0"
NETWORK=x.x.x.2
OPTIONS="--disable-webserver"
EOF</pre>
<pre>cat << EOF > /etc/honeypot/honeyd.conf
create win2k
set win2k personality "Microsoft Windows 2000 SP2"
set win2k default tcp action block
set win2k default udp action block
set win2k default icmp action block
set win2k uptime 3567
set win2k droprate in 13
add win2k tcp port 23 "sh /usr/share/honeyd/scripts/unix/linux/suse8.0/telnetd.sh $ipsrc $sport $ipdst $dport"
add win2k tcp port 21 "sh /usr/share/honeyd/scripts/win32/win2k/msftp.sh $ipsrc $sport $ipdst $dport"
add win2k tcp port 25 "sh /usr/share/honeyd/scripts/win32/win2k/exchange-smtp.sh $ipsrc $sport $ipdst $dport"
#add win2k tcp port 80 "sh /usr/share/honeyd/scripts/win32/win2k/iis.sh $ipsrc $sport $ipdst $dport"
add win2k tcp port 110 "sh /usr/share/honeyd/scripts/win32/win2k/exchange-pop3.sh $ipsrc $sport $ipdst $dport"
add win2k tcp port 143 "sh /usr/share/honeyd/scripts/win32/win2k/exchange-imap.sh $ipsrc $sport $ipdst $dport"
add win2k tcp port 389 "sh /usr/share/honeyd/scripts/win32/win2k/ldap.sh $ipsrc $sport $ipdst $dport"
add win2k tcp port 5901 "sh /usr/share/honeyd/scripts/win32/win2k/vnc.sh $ipsrc $sport $ipdst $dport"
add win2k udp port 161 "perl /usr/share/honeyd/scripts/unix/general/snmp/fake-snmp.pl public private --config=/usr/share/honeyd/scripts/unix/general/snmp"
# This will redirect incomming windows-filesharing back to the source
add win2k udp port 137 proxy $ipsrc:137
add win2k udp port 138 proxy $ipsrc:138
add win2k udp port 445 proxy $ipsrc:445
add win2k tcp port 137 proxy $ipsrc:137
add win2k tcp port 138 proxy $ipsrc:138
add win2k tcp port 139 proxy $ipsrc:139
add win2k tcp port 445 proxy $ipsrc:445
bind x.x.x.2 win2k
EOF</pre>
<pre>/etc/init.d/honeyd restart</pre>
<pre>cat << EOF > /etc/fail2ban/filter.d/honeyd.conf
[Definition]
failregex = .* S <HOST> .*$
ignoreregex =
EOF</pre>
<pre>cat << EOF > /etc/fail2ban/action.d/banhost.conf
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = /usr/local/bin/banip.sh <ip>
actionunban = /usr/local/bin/unbanip.sh <ip>
EOF</pre>
<pre>cat << EOF > /etc/fail2ban/jail.conf
[DEFAULT]
ignoreip = 127.0.0.1 x.x.x.1
bantime = 86400
maxretry = 3
backend = polling
destemail = root@localhost
banaction = iptables-multiport
mta = sendmail
protocol = tcp
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]
action = %(action_)s
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
[honeyd]
enabled = trueinitctl list
filter = honeyd
port = all
logpath = /var/log/honeypot/honeyd.log
maxretry = 1
banaction = banhost
EOF</pre>
<pre>/etc/init.d/fail2ban restart</pre>
<p style="text-align: justify;">Toute personne tentant d'ouvrir un port sur l'honeypot sera automatiquement banni de la plateforme à coup de TARPIT pour la partie TCP et de DROP pour tout le reste.</p>
<h3 style="text-align: justify;">Portsentry</h3>
<p style="text-align: justify;">Comment lutter contre un scan de port ? Grâce à portsentry bien sûr !</p>
<pre>cat << EOF > /etc/default/portsentry
TCP_MODE="atcp"
UDP_MODE="audp"
EOF</pre>
<pre>cat << EOF > /etc/portsentry/portsentry.conf
TCP_PORTS="1,7,9,11,15,20,21,2370,79,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,2001,4000,4001,5742,6000,6001,6667,12345,12346,20034,27665,30303,32771,32772,32773,32774,31337,40421,40425,49724,54320"
UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,27444,34555,32770,32771,32772,32773,32774,31337,54321"
ADVANCED_PORTS_TCP="65536"
ADVANCED_PORTS_UDP="65536"
ADVANCED_EXCLUDE_TCP="80"
ADVANCED_EXCLUDE_UDP=""
IGNORE_FILE="/etc/portsentry/portsentry.ignore"
HISTORY_FILE="/var/lib/portsentry/portsentry.history"
BLOCKED_FILE="/var/lib/portsentry/portsentry.blocked"
RESOLVE_HOST = "0"
BLOCK_UDP="2"
BLOCK_TCP="2"
KILL_ROUTE="/sbin/route add -host $TARGET$ reject"
KILL_HOSTS_DENY="ALL: $TARGET$ : DENY"
KILL_RUN_CMD_FIRST = "0"
KILL_RUN_CMD="/usr/local/bin/banip.sh $TARGET$"
SCAN_TRIGGER="0"
EOF</pre>
<pre>cat << EOF > /etc/portsentry/portsentry.ignore.static
208.67.222.222
208.67.220.220
x.x.x.254
EOF</pre>
<p style="text-align: justify;">Encore une fois, on va utiliser un script qui va nous bannir correctement l'IP sur l'ensemble de la plateforme.</p>
<p style="text-align: justify;">Toute personne tentant un scan de port sera automatiquement banni de la plateforme à coup de TARPIT pour la partie TCP et de DROP pour tout le reste.</p>
<h3 style="text-align: justify;">Scripting</h3>
<p style="text-align: justify;">On va utiliser quelques scripts selon la tâche à exécuter :</p>
<ul>
<li>rules.sh va définir les règles par défaut</li>
<li>banip.sh va bannir une IP donnée</li>
<li>unbanip.sh va débannir une IP donnée</li>
</ul>
<pre>cat << EOF > /usr/local/bin/rules.sh
#!/bin/bash</pre>
<pre>start() {
echo "Routing"
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
iptables -t nat -A PREROUTING -d x.x.x.3 -m tcp -p tcp --dport 21 -j DNAT --to-destination z.z.a.11
iptables -t nat -A PREROUTING -d x.x.x.3 -m tcp -p tcp --dport 22 -j DNAT --to-destination z.z.a.11
iptables -t mangle -A PREROUTING -i eth0 -p tcp -s 0.0.0.0/0 -d x.x.x.3/32 --dport ftp -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth0 -p tcp -s 0.0.0.0/0 -d x.x.x.3/32 --dport 55000: -j MARK --set-mark 1
for chain in INPUT FORWARD; do
echo "Block DOS - $chain - Ping of Death"
iptables -A $chain -p ICMP --icmp-type echo-request -m length --length 60:65535 -j ACCEPT;
echo "Block DOS - $chain - Teardrop"
iptables -A $chain -p UDP -f -j DROP;
echo "Block DDOS - $chain - SYN-flood"
iptables -A $chain -p TCP ! --syn -m state --state NEW -j TARPIT;
iptables -A $chain -p TCP ! --syn -m state --state NEW -j DROP;
echo "Block DDOS - $chain - Smurf"
iptables -A $chain -m pkttype --pkt-type broadcast -j DROP;
iptables -A $chain -p ICMP --icmp-type echo-request -m pkttype --pkt-type broadcast -j DROP;
iptables -A $chain -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT;
echo "Block DDOS - $chain - UDP-flood (Pepsi)"
iptables -A $chain -p UDP --dport 7 -j DROP;
iptables -A $chain -p UDP --dport 19 -j DROP;
echo "Block DDOS - $chain - SMBnuke"
iptables -A $chain -p UDP --dport 135:139 -j DROP;
iptables -A $chain -p TCP --dport 135:139 -j TARPIT;
iptables -A $chain -p TCP --dport 135:139 -j DROP;
echo "Block DDOS - $chain - Connection-flood"
iptables -A $chain -p TCP --syn -m connlimit --connlimit-above 3 -j TARPIT;
iptables -A $chain -p TCP --syn -m connlimit --connlimit-above 3 -j DROP;
echo "Block DDOS - $chain - Fraggle"
iptables -A $chain -p UDP -m pkttype --pkt-type broadcast -j DROP;
iptables -A $chain -p UDP -m limit --limit 3/s -j ACCEPT;
echo "Block DDOS - $chain - Jolt"
iptables -A $chain -p ICMP -f -j DROP;
done
/etc/init.d/portsentry start
}
stop() {
/etc/init.d/portsentry stop
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo "$0 <start|stop|restart|reload>"
exit 1
;;
esac
exit 0
EOF</pre>
<pre>chmod +x /usr/local/bin/rules.sh</pre>
<pre>cat << EOF > /usr/local/bin/banip.sh
#!/bin/bash
if [ $# -ne 1 ]; then
echo "usage: $0 IP";
exit 1;
fi</pre>
<pre>/sbin/iptables -I INPUT -s $1 -m tcp -p tcp -j TARPIT
/sbin/iptables -I INPUT -s $1 -j DROP
/sbin/iptables -I FORWARD -s $1 -m tcp -p tcp -j TARPIT
/sbin/iptables -I FORWARD -s $1 -j DROP
/sbin/iptables -I INPUT -s $1 -m limit --limit 1/minute --limit-burst 3 -j LOG --log-level debug --log-prefix 'Portsentry: tarpiting: '
exit 0
EOF</pre>
<pre>chmod +x /usr/local/bin/banip.sh</pre>
<pre>cat << EOF > /usr/local/bin/unbanip.sh
#!/bin/bash
if [ $# -ne 1 ]; then
echo "usage: $0 IP";
exit 1;
fi
for chain in INPUT FORWARD; do
for id in `iptables -L $chain -n --line-numbers | grep $1 | awk '{ print $1 }'`; do
iptables -D $chain $id;
done
done
exit 0
EOF</pre>
<pre>chmod +x /usr/local/bin/unbanip.sh</pre>
<h3 style="text-align: justify;">Load balancing</h3>
<p style="text-align: justify;">On enchaine avec le load balancing. On déclare l'IP de la VIP en alias.</p>
<pre>cat << EOF >> /etc/network/interfaces
auto eth0:0
iface eth0:0 inet static
address x.x.x.3
netmask 255.255.255.255
EOF</pre>
<p style="text-align: justify;">Puis on configure le load balancing en lui-même. Attention, le serveur FTP va fonctionner en mode passif, donc on prévoir l'ouverture des ports dynamiques et non prévisibles au niveau du load balancing.</p>
<pre>echo CONFIG_FILE=/etc/ldirectord.cf >> /etc/default/ldirectord</pre>
<pre>cat << EOF > /etc/ldirectord.cf
checktimeout=1
negotiatetimeout=1
checkinterval=5
autoreload=yes
logfile="l0"
quiescent=yes
virtual=1
real=z.z.a.11 gate
real=z.z.a.12:21 gate
service=ftp
scheduler=lc
protocol=fwm
persistent=5
checktype=negotiate
virtual=x.x.x.3:22
real=z.z.a.11:22 gate
real=z.z.a.12:22 gate
service=ftp
scheduler=lc
protocol=tcp
persistent=5
checktype=negotiate
EOF</pre>
<pre>/etc/init.d/ldirectord restart</pre>
<h2 style="text-align: justify;">Création d'un serveur ftpx</h2>
<p>On commence par installer les premiers packages.</p>
<pre>apt-get -y install bind9 iptables fail2ban libpam-mysql mysql-client libnss-mysql-bg nscd pure-ftpd</pre>
<h3>SERVEUR DNS RÉCURSIF</h3>
<p style="text-align: justify;">On s'installe un serveur DNS récursif en local pour diverses raisons (dont des histoires de performance).</p>
<pre>cat << EOF > /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
query-source address * port *;
forwarders { 208.67.222.222; 208.67.220.220; };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { none; };
listen-on { 127.0.0.1; };
allow-transfer { none; };
allow-query { any; };
allow-recursion { any; };
version none;
};
EOF
/etc/init.d/bind9 restart
echo "nameserver 127.0.0.1" > /etc/resolv.conf</pre>
<h3>OPTIMISATIONS SYSTÈME</h3>
<p>On s'applique à faire quelques optimisations qui seront bien pratique pour la suite.</p>
<pre>cat << EOF > /etc/security/limits.conf
* - nofile 65536
EOF
cat << EOF >> /etc/profile
ulimit -n 65536
EOF
cat << EOF > /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 4194304
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_mem = 4096 65536 4194304
net.ipv4.tcp_low_latency = 0
net.core.netdev_max_backlog = 30000
fs.file-max = 65536
kernel.shmmax = 8000000000
kernel.shmall = 8000000000
net.ipv4.tcp_abort_on_overflow = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65535
vm.min_free_kbytes = 65536
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth1.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth1.arp_announce = 2
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_keepalive_intvl = 1
net.ipv4.tcp_keepalive_probes = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.conf.all.proxy_arp = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 1
kernel.core_uses_pid=1
kernel.core_pattern=1
vm.dirty_background_ratio = 20
vm.dirty_ratio = 40
vm.swappiness = 1
vm.dirty_writeback_centisecs = 1500
net.ipv4.tcp_max_syn_backlog = 65536
net.core.optmem_max = 40960
net.ipv4.tcp_max_tw_buckets = 360000
net.ipv4.tcp_reordering = 5
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_rfc1337 = 0
net.core.somaxconn=65536
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_ecn=0
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.tcp_slow_start_after_idle=0
net.netfilter.nf_conntrack_acct=1
net.ipv4.icmp_echo_ignore_broadcasts=1
EOF
sysctl -p</pre>
<h3 style="text-align: justify;">Rajout d'un point d'entrée pour syslog-ng</h3>
<p style="text-align: justify;">Pensez simplement à rajouter la ligne suivante dans less sources de syslog-ng (/etc/syslog-ng/syslog-ng.conf) pour logguer tout ce que font vos utilisateurs).</p>
<pre style="text-align: justify;">unix-stream("/chroot/log" max-connections(2048));</pre>
<h3 style="text-align: justify;">Configuration de PAM & NSS pour utiliser MySQL</h3>
<p style="text-align: justify;">On suppose le serveur MySQL pré-installé. On y configure un compte pour PAM et la table d'utilisateurs qui va bien.</p>
<pre>cat << EOF | mysql -u root -h z.z.b.21 -p
CREATE DATABASE pam;
GRANT SELECT ON pam.* TO 'pam'@'%' IDENTIFIED BY 'pampass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pam.* TO 'pamadm'@'%' IDENTIFIED BY 'pamadmpass';
FLUSH PRIVILEGES;
USE pam;
CREATE TABLE `accounts` (
`id` INT NOT NULL auto_increment primary key,
`username` VARCHAR( 30 ) NOT NULL ,
`login` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (`username`)
) ENGINE = MYISAM ;
quit;
EOF</pre>
<p style="text-align: justify;">On poursuit avec la modification de nsswitch.conf. Pour cela on remplace les lignes passwd et shadow (mais pas group) :</p>
<pre>passwd: compat files mysql
shadow: compat files mysql</pre>
<p style="text-align: justify;">Puis on prépare l'accès MySQL de nsswitch.</p>
<pre>cat << EOF > /etc/libnss-mysql.cfg
getpwnam SELECT login,'x',id+'2000','2000',username,CONCAT('/opt/ftpx/',login,login),'/bin/false' \
FROM accounts \
WHERE login='%1$s' \
LIMIT 1
getpwuid SELECT login,'x',id+'2000','2000',username,CONCAT('/opt/ftpx/',login,login),'/bin/false' \
FROM accounts \
WHERE id='%1$u'-2000 \
LIMIT 1
getspnam SELECT login,pass,'','','','','','','' \
FROM accounts \
WHERE login='%1$s' \
LIMIT 1
getpwent SELECT login,'x',id+'2000','2000',username,CONCAT('/opt/ftpx/',login,login),'/bin/false' \
FROM accounts
getspent SELECT login,pass,'','','','','','','' \
FROM accounts
getgrnam SELECT name,password,gid \
FROM groups \
WHERE name='%1$s' \
LIMIT 1
getgrgid SELECT name,password,gid \
FROM groups \
WHERE gid='%1$u' \
LIMIT 1
getgrent SELECT name,password,gid \
FROM groups
memsbygid SELECT username \
FROM grouplist \
WHERE gid='%1$u'
gidsbymem SELECT gid \
FROM grouplist \
WHERE username='%1$s'
host z.z.b.21
database pam
username pam
password pampass
port 3306
EOF</pre>
<pre>cat << EOF > /etc/libnss-mysql-root.cfg
host z.z.b.21
database accounts
username pamadm
password pamadmpass
port 3306
EOF</pre>
<p style="text-align: justify;">On ne définit en soit que les utilisateurs à qui on n'impose un groupe bien précis 'sftponly'.</p>
<pre style="text-align: justify;">groupadd -g 2000 sftponly</pre>
<p style="text-align: justify;">Reste à finir la configuration de PAM.</p>
<pre>cat << EOF > /etc/pam_mysql.conf
users.host=z.z.b.21
users.db_user=pamadm
users.db_passwd=pamadmpass
users.database=pam
users.table=accounts
users.user_column=login
users.password_column=pass
users.password_crypt=2
verbose=1
EOF</pre>
<pre style="text-align: justify;">echo auth required pam_mysql.so config_file=/etc/pam_mysql.conf >> /etc/pam.d/common-auth
echo account required pam_mysql.so config_file=/etc/pam_mysql.conf >> /etc/pam.d/common-account
echo session required pam_mysql.so config_file=/etc/pam_mysql.conf >> /etc/pam.d/common-session
echo password required pam_mysql.so config_file=/etc/pam_mysql.conf >> /etc/pam.d/common-password</pre>
<h3 style="text-align: justify;">Restrictions pour SSH</h3>
<p style="text-align: justify;">Maintenant que l'on peut s'authentifier avec des données en base, il faut restreindre la partie SSH. Le chroot de base ne me convient pas. En effet, il nécessite que le groupe d'utilisateurs ait accès en lecture au dossier parent. Or, je souhaite leur restreindre un maximum la visibilité sur leurs petits voisins. Pour cela, il faut patcher openssh en conséquence.</p>
<pre>apt-get source openssh-server
apt-get build-dep openssh-server
cd openssh-5.9p1
cat << EOF > patch.diff
--- session.c.orig 2012-09-26 15:34:02.119243513 +0200
+++ session.c 2012-09-26 15:34:24.951244387 +0200
@@ -1457,7 +1457,7 @@
if (stat(component, &st) != 0)
fatal("%s: stat(\"%s\"): %s", __func__,
component, strerror(errno));
- if (st.st_uid != 0 || (st.st_mode & 022) != 0)
+ if (st.st_uid != 0 || (st.st_mode & 077) != 0)
fatal("bad ownership or modes for chroot "
"directory %s\"%s\"",
cp == NULL ? "" : "component ", component);
EOF
patch < patch.diff
dpkg-buildpackage -rfakeroot -sa -b
cd ..
dpkg -i openssh-server*deb
rm -fR openssh*</pre>
<p style="text-align: justify;">On peut maintenant finaliser la configuration d'openssh.</p>
<pre>sed "s^Subsystem sftp /usr/lib/openssh/sftp-server^^" /etc/ssh/sshd_config
mkdir /opt/sftpd
chmod 700 /opt/sftpd
cat << EOF >> /etc/ssh/sshd_config
Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match Group sftponly
ChrootDirectory /opt/sftp/%u/%u
ForceCommand internal-sftp
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
EOF
/etc/init.d/ssh restart</pre>
<h3 style="text-align: justify;">Mise en place de la partie FTP</h3>
<p style="text-align: justify;">On va utiliser pure-ftpd. Pourquoi ? Pour une raison parfaitement objective indépendante de toute pollution extérieure : juste "j'aime bien". Au delà de ce point, il reste un très bon produit.</p>
<pre>cat << EOF > /etc/default/pure-ftpd-common
STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true
UPLOADUID=
UPLOADGID=
EOF</pre>
<pre style="text-align: justify;">echo yes > /etc/pure-ftpd/auth/65unix
echo yes > /etc/pure-ftpd/auth/70pam</pre>
<pre>echo 1 > AllowUserFXP
echo stats:/var/log/pure-ftpd/transfer.log > AltLog
echo 21 > Bind
echo yes > ChrootEveryone
echo 1 > CustomerProof
echo 1 > DisplayDotFiles
echo 1 > DontResolve
echo UTF-8 > FSCharset
echo 100 > MaxClientsNumber
echo 10 > MaxClientsPerIP
echo 99 > MaxDiskUsage
echo 5 > MaxIdleTime
echo 2000 > MinUID
echo yes > NoAnonymous
echo 1 > NoTruncate
echo yes > PAMAuthentication
echo 55000 56000 > PassivePortRange
echo /etc/pure-ftpd/pureftpd.pdb > PureDB
echo ftp > SyslogFacility
echo 1 > TLS
echo 117 007 > Umask
echo yes > UnixAuthentication
echo 1 > VerboseLog</pre>
<pre>mkdir -p /etc/ssl/private
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
chmod 600 /etc/ssl/private/pure-ftpd.pem</pre>
<pre style="text-align: justify;">/etc/init.d/pure-ftpd restart</pre>
<h2 style="text-align: justify;">Montage des arborescences réelles et virtuelles</h2>
<p style="text-align: justify;">Comme à l'habitude, vous monter vos différents points d'accès NFS et CIFS. On suppose qu'il s'agit de sous dossier de /mnt.</p>
<pre>cat << EOF > /etc/init.d/masquerade
#!/bin/sh
case "$1" in
start)
echo "Start 'masquarade'..."
echo " mount remote fs"
mount -t cifs -a
mount -t nfs -a
echo " enslave remote fs"
mount --make-slave /mnt/cifs01
mount --make-slave /mnt/cifs02
mount --make-slave /mnt/cifs03
mount --make-slave /mnt/nfs01
mount --make-slave /mnt/nfs02
mount --make-slave /mnt/nfs03
echo " bind user mounts/chroot"
/usr/local/bin/masquarade.sh add > /var/log/masquarade.log 2> /var/log/masquarade.err
[ $? -ne 0 ] && echo " failed to bind all users mounts/chroots."
;;
stop)
echo "Stop 'masquarade'..."
echo " unbind users mounts/chroot"
/usr/local/bin/masquarade.sh del > /var/log/masquarade.log 2> /var/log/masquarade.err
[ $? -ne 0 ] && echo " failed to unbind all users mounts/chroots."
echo " free remote fs"
umount /mnt/cifs01
umount /mnt/cifs02
umount /mnt/cifs03
umount /mnt/nfs01
umount /mnt/nfs02
umount /mnt/nfs03
;;
restart)
$0 stop
sleep 5
$0 start
;;
reload)
$0 restart
;;
force-reload)
$0 restart
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
exit 0
EOF
chmod +x /etc/init.d/masquerade
update-rc.d masquerade defaults</pre>
<pre>cat << EOF > /usr/local/bin/masquarade.sh
#!/bin/bash
CONF="/usr/local/etc/mounts"
DATE=`date +%s`
# USAGE
function usage()
{
echo "Usage: $0 <help> <add|del> [[<mount>] ...]";
echo " add - to add one or several mount";
echo " del - to remove one or several mount";
echo " mount - mount name from config file";
echo " help - this usage";
echo "";
echo "If no mount point is provided, all mount points from config file will be treated";
echo "Configuration: $CONF";
echo "";
}
# ADD A PMOUNT POINT
function addMount()
{
touch /tmp/masquarade.$DATE
if [ $# -ne 0 ]
then
echo "[ Traitement de points particuliers ]"
echo " Preparation du listing: "
for point in $*
do
if [ `grep -ve '^#' $CONF | grep -ve '^\s*$' | grep -F $point | wc -l` -eq 0 ]
then
echo " Aucun point $PBIND existant dans la configuration"
continue
fi
grep -ve '^#' $CONF | grep -ve '^\s*$' | grep -F $point >> /tmp/masquarade.$DATE
done
else
echo "[ Utilisation du fichier complet ]"
echo " Preparation du listing: "
grep -ve '^#' $CONF | grep -ve '^\s*$' >> /tmp/masquarade.$DATE
fi
cat /tmp/masquarade.$DATE | while read line
do
# extract data for mount point
PTYPE=`echo $line | awk -F';' '{ print $1 }'` # NOT USED
PMOUNT=`echo $line | awk -F';' '{ print $3 }'`
PBIND=`echo $line | awk -F';' '{ print $2 }'`
PRIGHTS=`echo $line | awk -F';' '{ print $4 }'`
echo -n "( + ) $PBIND: "
# check the source
if [ ! -d $PMOUNT ]
then
echo "$PMOUNT n'existe pas";
continue
fi
# create the binding
mkdir -p $PBIND
#echo "mount -vvv -o bind $PMOUNT $PBIND" &> /tmp/pouet.log;
#mount -vvv -o bind $PMOUNT $PBIND &>> /tmp/pouet.log;
mount -o bind $PMOUNT $PBIND 2> /dev/null;
if [ $? -ne 0 ]
then
echo " impossible de monter $PBIND"
continue
fi
if [ $PRIGHTS == "ro" ]
then
mount -o remount,ro $PBIND 2> /dev/null
if [ $? -ne 0 ]
then
echo " impossible de passer $PBIND en lecture seule"
continue
fi
fi
echo -n "$PBIND mounted ($PRIGHTS) "
echo "ok"
done
if [ $# -ne 0 ]
then
for point in $*
do
account=${point#/opt/sftp/}
account=${account%/*}
echo -n "* $account: "
if [ `mount | grep -F /opt/sftp/$account/dev | wc -l` -gt 0 ]
then
echo "already exists"
else
mkdir -p /opt/sftp/$account/$account/dev/ 2> /dev/null
mount -o bind /chroot/ /opt/sftp/$account/$account/dev/ 2> /dev/null
chmod 700 /opt/sftp/$account 2> /dev/null
chown root:root /opt/sftp/$account 2> /dev/null
chmod 500 /opt/sftp/$account/$account/dev 2> /dev/null
fi
echo "ok"
done
else
for account in `ls /opt/sftp`; do
echo -n "* $account: "
if [ `mount | grep -F /opt/sftp/$account/$account/dev | wc -l` -gt 0 ]
then
echo "already exists"
else
mkdir -p /opt/sftp/$account/$account/dev/ 2> /dev/null
mount -o bind /chroot/ /opt/sftp/$account/$account/dev/ 2> /dev/null
chmod 700 /opt/sftp/$account 2> /dev/null
chown root:root /opt/sftp/$account 2> /dev/null
chmod 500 /opt/sftp/$account/$account/dev 2> /dev/null
fi
echo "ok"
done
fi
rm -f /tmp/masquarade.$DATE
return
}
# DELETE A PMOUNT POINT
function delMount()
{
if [ $# -ne 0 ]
then
echo "[ Traitement de points particuliers ]"
echo " Preparation du listing: "
for point in $*
do
if [ `grep -ve '^#' $CONF | grep -ve '^\s*$' | grep -F $point | wc -l` -eq 0 ]
then
echo " Aucun point $PBIND existant dans la configuration"
continue
fi
grep -ve '^#' $CONF | grep -ve '^\s*$' | grep -F $point >> /tmp/masquarade.$DATE
done
else
echo "[ Utilisation du fichier complet ]"
echo " Preparation du listing: "
grep -ve '^#' $CONF | grep -ve '^\s*$' >> /tmp/masquarade.$DATE
echo " Retrait des logs"
for account in `ls /opt/sftp`
do
umount -f /opt/sftp/$account/$account/dev/ 2> /dev/null
#rmdir /opt/sftp/$account/$account/dev/ 2> /dev/null
done
fi
tac /tmp/masquarade.$DATE | while read line
do
PBIND=`echo $line | awk -F';' '{ print $2 }'`
PRIGHTS=`echo $line | awk -F';' '{ print $4 }'`
echo -n "( - ) $PBIND: "
if [ `grep $PBIND /proc/mounts | grep -v grep | wc -l` -eq 0 ]
then
echo "$PBIND n'est pas/plus monte"
else
umount -f $PBIND 2> /dev/null
if [ $? -ne 0 ]
then
echo "Impossible de demonter $PBIND"
continue
fi
fi
echo "ok"
done
rm /tmp/masquarade.$DATE
}
if [ $# -eq 0 ]
then
usage
exit 0
fi
if [ ! -f $CONF ]
then
echo "Fichier $CONF manquant !"
echo "Syntaxe du fichier: PTYPE;PMOUNT;PBIND;PRIGHTS"
exit 1
fi
action=0;
pos=0;
points="";
for arg in `echo $*`; do
((pos++))
case "$arg" in
help)
usage;
exit 0;
;;
add)
action=1;
if [ $# -eq 1 ]; then
addMount;
fi
;;
del)
action=-1;
if [ $# -eq 1 ]; then
delMount;
fi
;;
*)
points="${points} $arg";
if [ $pos -eq $# ]; then
if [ $action -eq 0 ]; then
usage;
exit 0;
else if [ $action -gt 0 ]; then
addMount $points;
else
delMount $points;
fi
fi
exit 0;
fi
;;
esac
done
exit 0
EOF
chmod +x /usr/local/bin/masquarade.sh</pre>
<pre>/etc/init.d/masquerade start</pre>
<p style="text-align: justify;">L'idée est que chaque utilisateur est isolé et chrooté dans son coin. Il ne remonte pas l'arborescence et n'a même pas les droits en lecture chez ses voisins. De plus, chaque action peut être loguée puisque transmise à syslog-ng.</p>
<h3 style="text-align: justify;">VIP</h3>
<p>Pour que le load balancing fonctionne avec la bonne IP dans le paquet réseau, on pense à définir un alias.</p>
<pre>cat << EOF >> /etc/network/interfaces
auto lo:0
iface lo:0 inet static
address x.x.x.3
netmask 255.255.255.255
EOF</pre>
<div></div>
<h2 style="text-align: justify;">Création d'un utilisateur</h2>
<p style="text-align: justify;">Avec votre client MySQL préféré (CLI, phpMyAdmin, autre...), il vous suffit alors de rajouter une entrée en respectant les points suivants :</p>
<ul>
<li>username correspond au nom de l'utilisateur (par ex, "Nom Prénom")</li>
<li>login correspond à son identifiant</li>
<li>pass est le mot de passe encrypté via la fonction PASSWORD() de MySQL</li>
<li>id est laissé vide pour être automatiquement incrémenté.</li>
</ul>
<h2>Conclusion</h2>
<p style="text-align: justify;">Avec cette base de plateforme, vous avez de quoi avoir un dépôt de fichiers multi utilisateur en FTP (avec ou sans SSL) et en SFTP avec un seule et unique point d'authentification, et pas mal de sécurisation au niveau des accès et remontées d'arborescence. Si vous avez des questions ou remarque, comme à l'habitude, n'hésitez pas.</p>
<p style="text-align: justify;">Merci à Guillaume Vaillant qui m'a ressorti mes archives.</p>
Jason Bourne : l'héritage ... en maison de retraite
2012-09-20T10:57:27+02:00
https://francois.aichelbaum.com/2012/09/20/jason-bourne-lheritage-en-maison-de-retraite
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/2012_the_bourne_legacy_movie-wide.jpg"><img class="alignleft size-thumbnail wp-image-7208" title="The Bourne Legacy" src="/assets/2012_the_bourne_legacy_movie-wide-150x150.jpg" alt="The Bourne Legacy" width="150" height="150" /></a>Au niveau des films d'action, la trilogie des Jason Bourne était mon petit plaisir de la dernière décennie. Quand un quatrième film, sorte de spin-off/suite avec un autre agent, a été annoncé, j'ai oscillé entre peur (de l'épisode de trop) et plaisir. Héritage lourd d'une trilogie puissante. Héritage pesant d'un agent campé par un Matt Damon ultra performant. Quid de ce nouvel opus ? Aaron Cross sera-t-il plus fort que Jason Bourne ?</p>
<p style="text-align: justify;"><!--more--></p>
<h2 style="text-align: justify;">L'héritage peut avoir du bon mais aussi du mauvais</h2>
<p style="text-align: justify;">Le premier Jason Bourne avait créé une petite surprise en soit, avec un rythme effreiné et quelques pauses pour permettre au spectateur de reprendre son souffle. Les deux opus suivants, en respectant le schéma, permettait de découvrir un peu plus de l'univers Bourne. Ce quatrième opus nous propulse donc à la poursuite de Cross, agent à éliminer suite aux révélations de Bourne.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=jMzs8Hew770[/video]</p>
<p style="text-align: justify;">Alors que la première trilogique se basait sur les livres de <a href="http://fr.wikipedia.org/wiki/Robert_Ludlum">Robert Ludlum</a>, ce nouvel opus s'inspire de l'oeuvre d'<a href="http://fr.wikipedia.org/wiki/Eric_Van_Lustbader">Eric Van Lustbader</a> qui prend la suite de Ludlum (décédé en 2001). Du coup, on essaie de prendre la même base, dans une aventure en parallèle avec les déboires de Bourne. A défaut d'un vrai rythme effreiné, une caméra trop nerveuse et régulièrement floutée. Du close combat moins bien orchestré et visuel que précédemment. Un agent 10 ans <del>trop</del> plus vieux par rapport à Bourne. Une intrigue qui se cherche et passe son temps à se raccrocher via des flashs d'infos aux aventures de Bourne. L'héritage se sent. L'incapacité à s'en défaire aussi. A croire que justement, cet héritage est trop lourd à porter. Problème de l'auteur ? Problème du réal ? Problème de la prod ? Tout en même temps, <em>mon Colonel</em>. Tous se sont fourvoyé. Bien dommage.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/the-bourne-legacy-03-470-75.jpg"><img class="alignnone size-thumbnail wp-image-7211" title="The Bourne Legacy" src="/assets/the-bourne-legacy-03-470-75-150x150.jpg" alt="The Bourne Legacy" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/the_bourne_legacy_630.jpg"><img class="alignnone size-thumbnail wp-image-7214" title="The Bourne Legacy" src="/assets/the_bourne_legacy_630-150x150.jpg" alt="The Bourne Legacy" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/rachel-weisz-jeremy-renner-the-bourne-legacy.jpg"><img class="alignnone size-thumbnail wp-image-7217" title="The Bourne Legacy" src="/assets/rachel-weisz-jeremy-renner-the-bourne-legacy-150x150.jpg" alt="The Bourne Legacy" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/bourne-legacy-rachel-weisz.jpg"><img class="alignnone size-thumbnail wp-image-7220" title="The Bourne Legacy" src="/assets/bourne-legacy-rachel-weisz-150x150.jpg" alt="The Bourne Legacy" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/bourne-legacy-pic2.jpg"><img class="alignnone size-thumbnail wp-image-7223" title="The Bourne Legacy" src="/assets/bourne-legacy-pic2-150x150.jpg" alt="The Bourne Legacy" width="150" height="150" /></a></p>
<p style="text-align: justify;">Je me suis ennuyé mortellement pendant ces 135 minutes de films. Les acteurs ne sont pas mauvais. Mais le scénario n'est pas là, et l'impression d'ECG quasi plat qui émane du film avec quelques sursaut éparses reflète clairement mon ECG pendant le film.</p>
<p style="text-align: justify;">Donc non, Aaron Cross n'est pas meilleur que Jason Bourne. Cross est déjà un retraité que l'on a repeint façon camion volé pour prétendre à une nouveauté et ainsi voler un jackpot commercial non mérité.</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/the-bourne-legacy-0v.jpg"><img class="alignnone size-medium wp-image-7229 aligncenter" title="The Bourne Legacy" src="/assets/the-bourne-legacy-0v-300x225.jpg" alt="The Bourne Legacy" width="300" height="225" /></a></p>
Comparatif des serveurs pour PHP
2012-09-11T11:49:09+02:00
https://francois.aichelbaum.com/2012/09/11/comparatif-des-serveurs-pour-php
<p style="text-align: justify;">Après le comparatif des outils de caching et la création d'un CDN (<em>scalable</em>), voici un comparatif pour le déploiement de PHP. On s'intéresse donc à PHP 5.4 dans les environnements suivants :</p>
<ul>
<li><em>apache22-php-mod</em> : apache 2.2 + module PHP 5.4</li>
<li><em>apache22-php-fpm</em> : apache 2.2 + PHP 5.4-FPM</li>
<li><em>apache24-php-mod</em> : apache 2.4 + module PHP 5.4</li>
<li><em>apache24-php-cgi</em> : apache 2.4 + PHP 5.4-FPM</li>
<li><em>nginx-php</em> : nginx + PHP 5.4-FPM</li>
<li><em>lighttpd-php</em> : lighttpd + PHP 5.4-FPM</li>
<li><em>cherokee-php</em> : cherokee + PHP 5.4 FCGI</li>
<li><em>standalone-php</em> : PHP 5.4 webserver</li>
</ul>
<div><!--more--></div>
<p style="text-align: justify;">On va faire le test en 2 temps :</p>
<ul>
<li>utilisation de phpbench pour le théorique</li>
<li style="text-align: justify;">utilisation d'un wordpress non optimisé (reprise de ce Wordpress privé des divers plugins d'optimisations)</li>
</ul>
<p style="text-align: justify;">On utilise wget pour le test pour simplement afficher le résultat : on ne compare pas la capacité des serveurs web à monter en charge. L'idée étant de voir la performance de rendu dans un milieu équivalent, on reprend des machines virtuelles identiques (2 CPU, 8 Go Ram).</p>
<p style="text-align: justify;">Pour rester dans une logique assez proche, tous les applicatifs testés seront installés par compilation.</p>
<h2 style="text-align: justify;">Installation de apache22-php-mod</h2>
<p style="text-align: justify;">On commence par les packages requis pour l'installation :</p>
<p style="text-align: justify;">[crayon]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev[/crayon]</p>
<p style="text-align: justify;">On suit par apache 2.2 :</p>
<p style="text-align: justify;">[crayon language=shell]cd /usr/src<br />
wget http://mirror.cc.columbia.edu/pub/software/apache//httpd/httpd-2.2.22.tar.gz<br />
tar -xzf httpd-2.2.22.tar.gz<br />
cd httpd-2.2.22<br />
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=prefork<br />
make && make install[/crayon]</p>
<p style="text-align: justify;">On termine par php :</p>
<p style="text-align: justify;">[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --with-apxs2=/usr/local/apache2/bin/apxs --disable-cgi --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath<br />
make && make install[/crayon]</p>
<p style="text-align: justify;">On rajout le module sur apache en rajoutant à la fin de <em>/usr/local/apache2/conf/httpd.conf</em> :</p>
<p>[crayon language=apache]LoadModule php5_module /usr/local/apache2/modules/libphp5.so<br />
<IfModule mod_php5.c><br />
<FilesMatch "\.ph(p3?|tml)$"><br />
SetHandler application/x-httpd-php<br />
</FilesMatch><br />
<FilesMatch "\.phps$"><br />
SetHandler application/x-httpd-php-source<br />
</FilesMatch><br />
</IfModule>[/crayon]</p>
<p>On relance enfin apache :</p>
<p>[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]</p>
<p style="text-align: justify;">Reste à mettre en place le blog que j'importe - non traîté ici -) et le fichier de benchmark :</p>
<p style="text-align: justify;">[crayon language=shell]cd /usr/local/apache2/htdocs/<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p style="text-align: justify;">Reste plus qu'à benchmarker tout à l'heure.</p>
<h2 style="text-align: justify;">Installation de apache22-php-fpm</h2>
<p>On commence par les packages requis pour l'installation :</p>
<p>[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev[/crayon]</p>
<p>On suit par apache 2.2 :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://mirror.cc.columbia.edu/pub/software/apache//httpd/httpd-2.2.22.tar.gz<br />
tar -xzf httpd-2.2.22.tar.gz<br />
cd httpd-2.2.22<br />
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=worker<br />
make && make install<br />
cd /usr/src<br />
wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz<br />
tar -xzf mod_fastcgi-current.tar.gz<br />
cd mod_fastcgi-2.4.6<br />
cp Makefile.AP Makefile<br />
make && make install[/crayon]</p>
<p>On rajout le module sur apache en rajoutant à la fin de <em>/usr/local/apache2/conf/httpd.conf</em> :</p>
<p>[crayon language=apache]LoadModule fastcgi_module modules/mod_fastcgi.so<br />
<IfModule mod_fastcgi.c><br />
ScriptAlias /fcgi-bin/ "/usr/local/bin/"<br />
FastCGIExternalServer /usr/local/bin/php-cgi -host 127.0.0.1:9000 -pass-header Authorization<br />
AddHandler php-fastcgi .php<br />
Action php-fastcgi /fcgi-bin/php-cgi<br />
<Directory /usr/local/bin><br />
Order Deny,Allow<br />
Deny from All<br />
Allow from env=REDIRECT_STATUS<br />
</Directory><br />
</IfModule>[/crayon]</p>
<p>On relance enfin apache :</p>
<p>[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]</p>
<p>Reste à mettre en place le blog que j'importe - non traîté ici -) et le fichier de benchmark :</p>
<p>[crayon language=shell]cd /usr/local/apache2/htdocs/<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p>On termine par php :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath<br />
make && make install[/crayon]</p>
<p>On préparer FPM en éditant le fichier <em>/usr/local/etc/php-fpm.conf</em> :</p>
<p>[crayon][global]<br />
[www]<br />
user = www-data<br />
group = www-data<br />
listen = 127.0.0.1:9000<br />
pm = dynamic<br />
pm.max_children = 5<br />
pm.start_servers = 2<br />
pm.min_spare_servers = 1<br />
pm.max_spare_servers = 3<br />
php_admin_value[open_basedir]=/usr/local/apache2/htdocs/[/crayon]</p>
<p>Bien sûr, on lance PHP-FPM :</p>
<p>[crayon language=shell]/usr/local/bin/php-fpm[/crayon]</p>
<p>Reste plus qu'à benchmarker tout à l'heure.</p>
<h2>Installation de apache24-php-mod</h2>
<p>On commence par les packages requis pour l'installation :</p>
<p>[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]</p>
<p>On suit par apache 2.4 :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://wwwftp.ciril.fr/pub/apache//httpd/httpd-2.4.3.tar.gz<br />
tar -xzf httpd-2.4.3.tar.gz<br />
wget http://mirrors.ircam.fr/pub/apache//apr/apr-1.4.6.tar.gz<br />
tar -xzf apr-1.4.6.tar.gz -C httpd-2.4.3/srclib/<br />
wget http://mirrors.ircam.fr/pub/apache//apr/apr-util-1.4.1.tar.gz<br />
tar -xzf apr-util-1.4.1.tar.gz -C httpd-2.4.3/srclib/<br />
cd httpd-2.4.3<br />
mv srclib/apr-1.4.6 srclib/apr<br />
mv srclib/apr-util-1.4.1 srclib/apr-util<br />
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=prefork<br />
make && make install[/crayon]</p>
<p>On termine par php :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --with-apxs2=/usr/local/apache2/bin/apxs --disable-cgi --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath<br />
make && make install[/crayon]</p>
<p>On rajout le module sur apache en rajoutant à la fin de <em>/usr/local/apache2/conf/httpd.conf</em> :</p>
<p>[crayon language=apache]LoadModule php5_module /usr/local/apache2/modules/libphp5.so<br />
<IfModule mod_php5.c><br />
<FilesMatch "\.ph(p3?|tml)$"><br />
SetHandler application/x-httpd-php<br />
</FilesMatch><br />
<FilesMatch "\.phps$"><br />
SetHandler application/x-httpd-php-source<br />
</FilesMatch><br />
</IfModule>[/crayon]</p>
<p>On relance enfin apache :</p>
<p>[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]</p>
<p>Reste à mettre en place le blog que j'importe - non traîté ici -) et le fichier de benchmark :</p>
<p>[crayon language=shell]cd /usr/local/apache2/htdocs/<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p>Reste plus qu'à benchmarker tout à l'heure.</p>
<h2>Installation de apache24-php-fpm</h2>
<p>On commence par les packages requis pour l'installation :</p>
<p>[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]</p>
<p>On suit par apache 2.4 :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://wwwftp.ciril.fr/pub/apache//httpd/httpd-2.4.3.tar.gz<br />
tar -xzf httpd-2.4.3.tar.gz<br />
wget http://mirrors.ircam.fr/pub/apache//apr/apr-1.4.6.tar.gz<br />
tar -xzf apr-1.4.6.tar.gz -C httpd-2.4.3/srclib/<br />
wget http://mirrors.ircam.fr/pub/apache//apr/apr-util-1.4.1.tar.gz<br />
tar -xzf apr-util-1.4.1.tar.gz -C httpd-2.4.3/srclib/<br />
cd httpd-2.4.3<br />
mv srclib/apr-1.4.6 srclib/apr<br />
mv srclib/apr-util-1.4.1 srclib/apr-util<br />
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=worker --enable-slotmem-shm<br />
make && make install[/crayon]</p>
<p>On rajout le module sur apache en rajoutant à la fin de <em>/usr/local/apache2/conf/httpd.conf</em> :</p>
<p>[crayon language=apache]ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1[/crayon]</p>
<p>On relance enfin apache :</p>
<p>[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]</p>
<p>Reste à mettre en place le blog que j'importe - non traîté ici -) et le fichier de benchmark :</p>
<p>[crayon language=shell]cd /usr/local/apache2/htdocs/<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p>On termine par php :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath<br />
make && make install[/crayon]</p>
<p>On préparer FPM en éditant le fichier <em>/usr/local/etc/php-fpm.conf</em> :</p>
<p>[crayon][global]<br />
[www]<br />
user = www-data<br />
group = www-data<br />
listen = 127.0.0.1:9000<br />
pm = dynamic<br />
pm.max_children = 5<br />
pm.start_servers = 2<br />
pm.min_spare_servers = 1<br />
pm.max_spare_servers = 3<br />
php_admin_value[open_basedir]=/usr/local/apache2/htdocs/[/crayon]</p>
<p>Bien sûr, on lance PHP-FPM :</p>
<p>[crayon language=shell]/usr/local/bin/php-fpm[/crayon]</p>
<p>Reste plus qu'à benchmarker tout à l'heure.</p>
<h2>Installation de nginx-php</h2>
<p>On commence par les packages requis pour l'installation :</p>
<p>[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]</p>
<p>On suit par nginx 1.2.3 :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://nginx.org/download/nginx-1.2.3.tar.gz<br />
tar -xzf nginx-1.2.3.tar.gz<br />
cd nginx-1.2.3<br />
./configure --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module<br />
make && make install[/crayon]</p>
<p>On configure ensuite nginx /usr/local/nginx/conf/nginx.conf :</p>
<p>[crayon]worker_processes 4;<br />
events {<br />
worker_connections 1024;<br />
}<br />
http {<br />
include mime.types;<br />
default_type application/octet-stream;<br />
sendfile on;<br />
keepalive_timeout 65;<br />
gzip on;<br />
server {<br />
listen 80;<br />
server_name test;<br />
location ~ \.php$ {<br />
fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_index index.php;<br />
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;<br />
include fastcgi_params;<br />
}<br />
location / {<br />
root /var/www;<br />
}<br />
}<br />
}[/crayon]</p>
<p>On relance enfin nginx :</p>
<p>[crayon language=shell]/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf[/crayon]</p>
<p>Reste à mettre en place le blog que j'importe - non traîté ici -) et le fichier de benchmark :</p>
<p>[crayon language=shell]cd /var/www/<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p>On termine par php :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath<br />
make && make install[/crayon]</p>
<p>On préparer FPM en éditant le fichier <em>/usr/local/etc/php-fpm.conf</em> :</p>
<p>[crayon][global]<br />
[www]<br />
user = www-data<br />
group = www-data<br />
listen = 127.0.0.1:9000<br />
pm = dynamic<br />
pm.max_children = 5<br />
pm.start_servers = 2<br />
pm.min_spare_servers = 1<br />
pm.max_spare_servers = 3<br />
php_admin_value[open_basedir]=/usr/local/apache2/htdocs/[/crayon]</p>
<p>Bien sûr, on lance PHP-FPM :</p>
<p>[crayon language=shell]/usr/local/bin/php-fpm[/crayon]</p>
<p>Reste plus qu'à benchmarker tout à l'heure.</p>
<h2>Installation de lighttpd-php</h2>
<p style="text-align: justify;">On commence par les packages requis pour l'installation :</p>
<p style="text-align: justify;">[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]</p>
<p style="text-align: justify;">On suit par lighttpd 1.4.31 :</p>
<p style="text-align: justify;">[crayon language=shell]cd /usr/src<br />
wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.31.tar.gz<br />
tar -xzf lighttpd-1.4.31.tar.gz<br />
cd lighttpd-1.4.31<br />
./configure --without-bzip2<br />
make && make install<br />
cp -a doc/config /etc/lighttpd<br />
mkdir /var/www/htdocs<br />
mkdir /var/log/lighttpd<br />
chown -R www-data:www-data /var/log/lighttpd /var/www[/crayon]</p>
<p style="text-align: justify;">On configure ensuite lighttpd<em> /etc/lighttpd/conf.d/fastcgi.conf</em> :</p>
<p style="text-align: justify;">[crayon]server.modules += ( "mod_fastcgi" )<br />
fastcgi.server += ( ".php" =><br />
((<br />
"host" => "127.0.0.1",<br />
"port" => "9000",<br />
"broken-scriptfilename" => "enable"<br />
))<br />
)[/crayon]</p>
<p style="text-align: justify;">On met aussi à jour le <em>/etc/lighttpd/lighttpd.conf</em> :</p>
<p style="text-align: justify;">[crayon]server.username = "www-data"<br />
server.groupname = "www-data"[/crayon]</p>
<p style="text-align: justify;">On relance enfin lighttpd :</p>
<p style="text-align: justify;">[crayon language=shell]lighttpd -f /etc/lighttpd/lighttpd.conf[/crayon]</p>
<p style="text-align: justify;">Reste à mettre en place le blog que j'importe - non traîté ici -) et le fichier de benchmark :</p>
<p style="text-align: justify;">[crayon language=shell]cd /var/www/htdocs/<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p style="text-align: justify;">On termine par php :</p>
<p style="text-align: justify;">[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath<br />
make && make install[/crayon]</p>
<p style="text-align: justify;">On préparer FPM en éditant le fichier <em>/usr/local/etc/php-fpm.conf</em> :</p>
<p style="text-align: justify;">[crayon][global]<br />
[www]<br />
user = www-data<br />
group = www-data<br />
listen = 127.0.0.1:9000<br />
pm = dynamic<br />
pm.max_children = 5<br />
pm.start_servers = 2<br />
pm.min_spare_servers = 1<br />
pm.max_spare_servers = 3<br />
php_admin_value[open_basedir]=/var/www/htdocs/[/crayon]</p>
<p style="text-align: justify;">Bien sûr, on lance PHP-FPM :</p>
<p style="text-align: justify;">[crayon language=shell]/usr/local/bin/php-fpm[/crayon]</p>
<p style="text-align: justify;">Reste plus qu'à benchmarker tout à l'heure.</p>
<h2>Installation de cherokee-php</h2>
<p>On commence par les packages requis pour l'installation :</p>
<p style="text-align: justify;">[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]</p>
<p>On suit par cheroke 1.2.101 :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://cherokee-project.com/install && python install[/crayon]</p>
<p>On relance enfin cherokee :</p>
<p>[crayon language=shell]/etc/init.d/cherokee-opt start[/crayon]</p>
<p>Reste à mettre en place le blog que j'importe - non traîté ici -) et le fichier de benchmark :</p>
<p>[crayon]cd /opt/cherokee/var/www<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p>On termine par php :</p>
<p style="text-align: justify;">[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath<br />
make && make install[/crayon]</p>
<p>On préparer FPM en éditant le fichier <em>/usr/local/etc/php-fpm.conf</em> :</p>
<p>[crayon][global]<br />
[www]<br />
user = www-data<br />
group = www-data<br />
listen = 127.0.0.1:9000<br />
pm = dynamic<br />
pm.max_children = 5<br />
pm.start_servers = 2<br />
pm.min_spare_servers = 1<br />
pm.max_spare_servers = 3<br />
php_admin_value[open_basedir]=/opt/cherokee/var/www/[/crayon]</p>
<p>Bien sûr, on lance PHP-FPM :</p>
<p>[crayon language=shell]/usr/local/bin/php-fpm[/crayon]</p>
<p style="text-align: justify;">On finit par l'implémentation de PHP dans cherokee :</p>
<p style="text-align: justify;">[crayon language=shell]/opt/cherokee/sbin/cherokee-admin[/crayon]</p>
<p style="text-align: justify;">On se connecte à http://127.0.0.1:9090/ :</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-accueil.png"><img class="alignnone size-thumbnail wp-image-7088" title="cherokee-accueil" src="/assets/cherokee-accueil-150x150.png" alt="" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-vservers.png"><img class="alignnone size-thumbnail wp-image-7091" title="cherokee-vservers" src="/assets/cherokee-vservers-150x150.png" alt="" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-rules.png"><img class="alignnone size-thumbnail wp-image-7094" title="cherokee-rules" src="/assets/cherokee-rules-150x150.png" alt="" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-addphp.png"><img class="alignnone size-thumbnail wp-image-7097" title="cherokee-addphp" src="/assets/cherokee-addphp-150x150.png" alt="" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-addphp2.png"><img class="alignnone size-thumbnail wp-image-7100" title="cherokee-addphp2" src="/assets/cherokee-addphp2-150x150.png" alt="" width="150" height="150" /></a></p>
<p style="text-align: justify;">Pensez ensuite à sauvegarder et faire un "Graceful Restart".</p>
<p style="text-align: justify;">Reste plus qu'à benchmarker tout à l'heure.</p>
<h2>Installation de php en standalone</h2>
<p>On commence par les packages requis pour l'installation :</p>
<p>[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]</p>
<p>On suit par php :</p>
<p>[crayon language=shell]cd /usr/src<br />
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz<br />
tar -xzf php-5.4.6.tar.gz<br />
cd php-5.4.6<br />
./configure --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath --enable-cli<br />
make && make install[/crayon]</p>
<p>Plus qu'à lancer le serveur intégré :</p>
<p>[crayon language=shell]nohup /usr/local/bin/php -S 0.0.0.0:80 -t /var/www/ &> /dev/null &[/crayon]</p>
<p>Bien sûr, il nous faut aussi le script de benchmark (et le blog à importer)</p>
<p>[crayon language=shell]cd /var/www<br />
wget http://www.php-benchmark-script.com/bench.zip && unzip bench.zip[/crayon]</p>
<p>Plus qu'à tester.</p>
<h2>Comparatif</h2>
<p>On collecte donc l'ensemble des résultats :</p>
<p>[crayon language=shell]for server in x.x.x.1 x.x.x.2 x.x.x.3 x.x.x.4 x.x.x.5 x.x.x.6 x.x.x.7 x.x.x.8; do wget http://$server/bench.php -O - ; done[/crayon]</p>
<h3>Résultats pour apache22-php-mod</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:25:25<br />
Server : x.x.x.1@x.x.x.1<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 2.374 sec.<br />
test_stringmanipulation : 2.433 sec.<br />
test_loops : 1.864 sec.<br />
test_ifelse : 1.336 sec.<br />
--------------------------------------[/crayon]</p>
<h3>Résultats pour apache22-php-fpm</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:25:57<br />
Server : x.x.x.2@x.x.x.2<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 2.265 sec.<br />
test_stringmanipulation : 2.362 sec.<br />
test_loops : 2.168 sec.<br />
test_ifelse : 1.224 sec.<br />
--------------------------------------[/crayon]</p>
<div>
<h3>Résultats pour apache24-php-mod</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:26:03<br />
Server : x.x.x.3@x.x.x.3<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 3.236 sec.<br />
test_stringmanipulation : 3.274 sec.<br />
test_loops : 2.113 sec.<br />
test_ifelse : 1.453 sec.<br />
--------------------------------------[/crayon]</p>
<div>
<h3>Résultats pour apache24-php-fpm</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:26:12<br />
Server : x.x.x.4@x.x.x.4<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 2.225 sec.<br />
test_stringmanipulation : 2.361 sec.<br />
test_loops : 2.094 sec.<br />
test_ifelse : 1.223 sec.<br />
--------------------------------------[/crayon]</p>
<div>
<h3>Résultats pour nginx-php</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:26:23<br />
Server : x.x.x.5@x.x.x.5<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 2.310 sec.<br />
test_stringmanipulation : 2.379 sec.<br />
test_loops : 2.175 sec.<br />
test_ifelse : 1.231 sec.<br />
--------------------------------------[/crayon]</p>
<div>
<h3>Résultats pour lighttpd-php</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:26:38<br />
Server : x.x.x.6@x.x.x.6<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 2.194 sec.<br />
test_stringmanipulation : 2.314 sec.<br />
test_loops : 2.194 sec.<br />
test_ifelse : 1.255 sec.<br />
--------------------------------------[/crayon]</p>
<div>
<h3>Résultats pour cherokee-php</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:26:53<br />
Server : x.x.x.7@x.x.x.7<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 2.268 sec.<br />
test_stringmanipulation : 2.381 sec.<br />
test_loops : 2.076 sec.<br />
test_ifelse : 1.236 sec.<br />
--------------------------------------[/crayon]</p>
<div>
<h3>Résultats pour standalone-php</h3>
<p>[crayon]--------------------------------------<br />
| PHP BENCHMARK SCRIPT |<br />
--------------------------------------<br />
Start : 2012-09-11 09:26:26:59<br />
Server : 0.0.0.0@<br />
PHP version : 5.4.6<br />
Platform : Linux<br />
--------------------------------------<br />
test_math : 2.351 sec.<br />
test_stringmanipulation : 2.455 sec.<br />
test_loops : 2.112 sec.<br />
test_ifelse : 1.250 sec.<br />
--------------------------------------[/crayon]</p>
<p style="text-align: justify;">Reproduire les tests ne fait varier les résultats que de quelques milli secondes, donc rien de significatif. Il en ressort donc, qu'hors optimisation de php (via ses modules entre autres) ou du serveur web, l'implémentation semble plus performante varie selon le calcul effectué. Cependant, sur le traitement global, les résultats avantagent <em>apache24-php-fpm</em> suivi de près par <em>lighttpd-php</em> et <em>cherokee-php</em>. A noter les bons résultats des implémentations en Apache 2.2 (module et FPM) mais les très mauvaises performances en module sur Apache 2.4.</p>
<p style="text-align: justify;">Les benchmarks sur le blog renvoient les mêmes résultats.</p>
</div>
</div>
</div>
</div>
</div>
</div>
Comparatif caching : nginx/varnish/squid/apache
2012-09-07T18:48:24+02:00
https://francois.aichelbaum.com/2012/09/07/comparatif-caching-nginxvarnishsquidapache
<p style="text-align: justify;">Suite à la publication de mon précédent billet (<a href="http://francois.aichelbaum.com/creer-un-caching-http-facon-cdn/">Créer un caching HTTP façon CDN</a>), j'ai eu une petite discussion sur twitter avec <a href="https://twitter.com/nicolargo">Nicolas Hennion</a> sur un comparatif des outils de mise en cache HTTP. Je me suis donc proposé de (re)faire un billet sur le sujet. Je m'attaque donc aux outils suivants : nginx, varnish, squid et apache (avec mod_cache/mod_proxy).</p>
<p style="text-align: justify;"><!--more--></p>
<h2 style="text-align: justify;">Avant propos</h2>
<p style="text-align: justify;">Le but n'étant pas de refaire une optimisation système et matérielle, je vais faire au plus simple pour le comparatif. Certains pourront considérer ma démarche simpliste mais bon, c'est la vie.</p>
<h3 style="text-align: justify;">Architecture pour le comparatif</h3>
<p style="text-align: justify;">Ne voulant pas avoir trop de différences j'ai utilisé des machines virtuelles lancées sur des machines <em>couillues</em>. Une machine de créée en debian stable 64 bits, 2 vCPU pour 8 Go Ram et 1 Gbps en réseau, pour me faire un template et ensuite je l'ai clonée ainsi :</p>
<ul>
<li style="text-align: justify;"><em>cache-apache</em> : machine de cache en apache</li>
<li style="text-align: justify;"><em>cache-nginx</em> : machine de cache en nginx</li>
<li style="text-align: justify;"><em>cache-squid</em> : machine de cache en squid</li>
<li style="text-align: justify;"><em>cache-varnish</em> : machine de cache en varnish</li>
<li style="text-align: justify;"><em>source-apache</em> : machine qui distribue les fichiers de tests en http pour le serveur apache</li>
<li style="text-align: justify;"><em>source-nginx</em> : machine qui distribue les fichiers de tests en http pour le serveur nginx</li>
<li style="text-align: justify;"><em>source-squid</em> : machine qui distribue les fichiers de tests en http pour le serveur squid</li>
<li style="text-align: justify;"><em>source-varnish</em> : machine qui distribue les fichiers de tests en http pour le serveur varnish</li>
<li style="text-align: justify;"><em>siege</em> : la machine qui servira à générer les tests</li>
<li style="text-align: justify;"><em>temoin</em> : machine qui distribue les fichiers de tests en http sans caching</li>
</ul>
<p style="text-align: justify;">Je mets un serveur "origin" (marque <em>source-xxxxx</em>) par serveur de cache afin qu'un test ne perturbe pas l'autre et ainsi pouvoir faire mes tests en parallèle.</p>
<p style="text-align: justify;">Tous les serveurs seront sur le même réseau (pas de routage) afin de ne pas risquer d'avoir des ACL ou des problèmes de performance de routage entre elles.</p>
<h3 style="text-align: justify;">Critères et méthodologie de comparaison</h3>
<p style="text-align: justify;">Les critères pris en compte sont les suivants</p>
<ul>
<li>ergonomie pour un déploiement de masse</li>
<li>possibilité de configuration fine des vhosts/directory/...</li>
<li>optimisation de la consommation des ressources fournies</li>
<li>temps de réponses</li>
<li>débits</li>
<li>montée en charge</li>
</ul>
<p style="text-align: justify;">Afin de tester l'ensemble de ces critères, et parce que je n'ai pas envie de m'installer d'outils complémentaires (et potentiellement lourds) pour le report de la métrologie, je ferais un simple visuel sur le résultat de top sur chaque serveur (<em>cache-xxxx</em> et <em>source-xxxx</em>) pendant le test.</p>
<p style="text-align: justify;">Les tests se feront à coup d'<em>ab</em> et de<em> siege</em> sur des fichiers de 1 ko, 10 ko, 100 ko, 1 Mo, 10 Mo, 100 Mo et 1 Go. De plus, tous se feront sans keepalive d'activé.</p>
<h2 style="text-align: justify;">Machine de siege</h2>
<p style="text-align: justify;">On lui installe le nécessaire :</p>
<pre style="text-align: justify;"># aptitude install siege apache2-utils</pre>
<p style="text-align: justify;">Afin de me simplifier la vie, les noms des machines sont écrites dans le fichier <em>/etc/hosts</em>.</p>
<h2 style="text-align: justify;">Machine source et témoin</h2>
<p style="text-align: justify;">On installe le nécessaire. N'y cherchant pas la performance, on installe un basique <em>apache</em>.</p>
<pre style="text-align: justify;"># aptitude install apache2</pre>
<p style="text-align: justify;">Ni on le configure, ni on l'optimise.</p>
<p style="text-align: justify;">On lui prépare ensuite les fichiers de tests dans /var/www :</p>
<pre># cd /var/www
# dd if=/dev/urandom of=1k bs=1k count=1
# dd if=/dev/urandom of=10k bs=1k count=10
# dd if=/dev/urandom of=100k bs=1k count=100
# dd if=/dev/urandom of=1m bs=1024k count=1
# dd if=/dev/urandom of=10m bs=1024k count=10
# dd if=/dev/urandom of=100m bs=1024k count=100
# dd if=/dev/urandom of=1g bs=1024k count=1000</pre>
<p style="text-align: justify;">On a donc bien nos fichiers de test :</p>
<pre># ls -lh
total 1.1G
-rw-r--r-- 1 root root 100K Sep 7 10:43 100k
-rw-r--r-- 1 root root 100M Sep 7 10:44 100m
-rw-r--r-- 1 root root 10K Sep 7 10:43 10k
-rw-r--r-- 1 root root 10M Sep 7 10:44 10m
-rw-r--r-- 1 root root 1000M Sep 7 10:48 1g
-rw-r--r-- 1 root root 1.0K Sep 7 10:43 1k
-rw-r--r-- 1 root root 1.0M Sep 7 10:44 1m
-rw-r--r-- 1 root root 177 Sep 7 10:41 index.html</pre>
<h2 style="text-align: justify;">Caching façon apache</h2>
<p style="text-align: justify;">On lui installe apache:</p>
<p style="text-align: justify;"># aptitude install apache2</p>
<p style="text-align: justify;">On jongle avec les modules utiles et non-utiles :</p>
<pre style="text-align: justify;"># a2dismod auth_basic authn_file authz_default authz_groupfile hostz_user autoindex cgid dir env reqtimeout status
# a2enmod disk_cache proxy_http</pre>
<p style="text-align: justify;">On modifie les paramètres prefork dans /etc/apache2/apache2.conf :</p>
<pre><IfModule mpm_prefork_module>
StartServers 16
MinSpareServers 16
MaxSpareServers 10
MaxClients 250
MaxRequestsPerChild 0
</IfModule></pre>
<p style="text-align: justify;">On paramètre ensuite le proxy et le caching. Pour cela on se crée un vhost dédié /etc/apache2/sites-available/crash :</p>
<pre><VirtualHost *:80>
NameServer crash
CacheRoot /opt
CacheMaxFileSize 1500000
ProxyPass / http://crash/
ProxyPassReverse / http://source-apache/
</VirtualHost></pre>
<p style="text-align: justify;">On l'active :</p>
<pre style="text-align: justify;"># a2ensite crash
# /etc/init.d/apache2 restart</pre>
<p style="text-align: justify;">Il y a vraiment peu de paramètres que l'on peut configurer à ce niveau pour améliorer le fonctionnement. Une petite modification côté système est à faire dans <em>/etc/security/limits.conf</em> :</p>
<pre>* - nofile 65535</pre>
<p style="text-align: justify;">Installer une usine à gaz pour une petite fonctionnalité qui est en plus ne dispose d'aucun paramétrage fin.</p>
<h2 style="text-align: justify;">Caching façon nginx</h2>
<p style="text-align: justify;">On rajoute les mirroirs nginx :</p>
<pre>deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx</pre>
<p style="text-align: justify;">Puis :</p>
<pre style="text-align: justify;"># wget http://nginx.org/packages/keys/nginx_signing.key -O - | apt-key add -
# aptitude update</pre>
<p style="text-align: justify;">On installe le nécessaire :</p>
<pre style="text-align: justify;"># aptitude install nginx</pre>
<p style="text-align: justify;">On configure le vhost en créant un fichier <em>/etc/nginx/sites-available/crash</em> :</p>
<pre>server {
listen 80;
server_name crash;
proxy_cache_key $scheme://$host$uri;
location ~* / {
proxy_hide_header "Vary";
add_header "Vary" "Accept-Encoding";
proxy_cache big;
proxy_pass http://source-nginx;
}
}</pre>
<p style="text-align: justify;">Puis en l'activant :</p>
<pre style="text-align: justify;"># ln -s /etc/nginx/sites-available/crash /etc/nginx/sites-enable/
# /etc/init.d/nginx restart</pre>
<p style="text-align: justify;">Ensuite on remplace le fichier <em>/etc/nginx/nginx.conf</em> par le suivant :</p>
<pre>user www-data;
worker_processes 4;
worker_rlimit_nofile 10000;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
timer_resolution 1ms;
events {
worker_connections 10000;
multi_accept on;
use epoll;
accept_mutex_delay 1ms;
}</pre>
<pre>http {
include /etc/nginx/mime.types;
client_body_temp_path /tmp 1 2;
client_header_timeout 5s;
client_body_timeout 5s;
send_timeout 10m;
connection_pool_size 128k;
client_header_buffer_size 16k;
large_client_header_buffers 1024 128k;
request_pool_size 128k;
keepalive_requests 1000;
keepalive_timeout 10;
client_max_body_size 10g;
client_body_buffer_size 1m;
client_body_in_single_buffer on;
open_file_cache max=10000 inactive=300s;
reset_timedout_connection on;
gzip on;
gzip_static on;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_proxied any;
output_buffers 1000 128k;
postpone_output 1460;
sendfile on;
sendfile_max_chunk 256k;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
resolver 127.0.0.1;
ignore_invalid_headers on;
index index.html;
add_header X-CDN "Served by myself";
proxy_cache_path /opt/disk/ levels=1:2 keys_zone=big:10m max_size=2G;
proxy_temp_path /opt/temp/ 1 2;
proxy_cache_valid 404 10m;
proxy_cache_valid 400 501 502 503 504 1m;
proxy_cache_valid any 4320m;
proxy_cache_use_stale updating invalid_header error timeout http_404 http_500 http_502 http_503 http_504;
proxy_next_upstream error timeout invalid_header http_404 http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header Server Apache;
proxy_set_header Connection Close;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass_header User-Agent;
proxy_set_header X-Accel-Buffering on;
proxy_hide_header X-CDN;
proxy_hide_header X-Server;
proxy_intercept_errors off;
proxy_ignore_client_abort on;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 128k;
proxy_buffers 16384 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 128k;
proxy_cache_min_uses 0;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}</pre>
<p>Une petite modification côté système est à faire dans <em>/etc/security/limits.conf</em> :</p>
<pre>* - nofile 65535</pre>
<p style="text-align: justify;">A mon sens, c'est celui qui offre le plus de possibilités dans le paramétrage fin et aussi dans l'évolutivité. Il ne lui manque que peu (SSI en tête de liste) pour être parfait.</p>
<h2>Caching façon squid</h2>
<p style="text-align: justify;">On commence par installer l'applicatif :</p>
<pre style="text-align: justify;"># aptitude install squid</pre>
<p style="text-align: justify;">Vous remarquerez que l'installe une version de la branche 2.x et non 3.x. La raison est simple : squid3 est encore largement en retrait au niveau fonctionnalité (et stabilité) par rapport à la précédente branche, que l'ancienne évolue toujours et qu'on cherche à comparer des produits à mettre en prod.</p>
<p style="text-align: justify;">On a besoin de changer les droits sur le dossier /opt :</p>
<pre style="text-align: justify;"># chmod 777 /opt</pre>
<p style="text-align: justify;">On paramètre alors le caching en éditant <em>/etc/squid/squid.conf</em> :</p>
<pre>acl all src all
acl localnet src 192.168.0.0/16
acl Safe_ports port 80
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access allow localnet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 80 transparent
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squid
cache_peer source-squid parent 80 0 no-query originserver
cache_dir aufs /opt 2000 16 256
tcp_recv_bufsize 131072 bytes
maximum_object_size 1500000000 bytes</pre>
<p style="text-align: justify;">On n'oublie pas de modifier le fichier <em>/etc/default/squid</em> :</p>
<pre>SQUID_MAXFD=10240</pre>
<p style="text-align: justify;">On pense encore à la petite modification côté système à faire dans <em>etc/security/limits.conf </em>en rajoutant :</p>
<pre>* - nofile 65535</pre>
<p style="text-align: justify;">Squid est je pense celui qui a la configuration la moins claire. L'optimisation est très restreinte. Son avantage est l'implémentation complète de l'HTCP qui permet à l'architecture de caching de faire communiquer les noeuds entre eux, là où les autres demandes des petites astuces. Mono process, il ne profite pas des possibilités de la machine.</p>
<h2 style="text-align: justify;">Caching façon varnish</h2>
<p style="text-align: justify;">On commence par l'installation :</p>
<pre style="text-align: justify;"># aptitude install varnish</pre>
<p style="text-align: justify;">On suit par la configuration en commencant par modifier les lignes suivantes dans <em>/etc/default/varnish</em> :</p>
<pre>START=yes
DAEMON_OPTS="-a :80 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-p thread_pools=4 \
-s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,2G"</pre>
<p style="text-align: justify;">On enchaîne avec la configuration de <em>/etc/varnish/default.vcl</em> :</p>
<pre>backend default {
.host = "source-varnish";
.port = "80";
.connect_timeout = 1s;
.first_byte_timeout = 5s;
.between_bytes_timeout = 2s;
}
sub vcl_recv {
return(lookup);
}
sub vcl_fetch {
return(deliver);
}</pre>
<p>On rajoute la petite modification côté système dans <em>etc/security/limits.conf </em>:</p>
<pre>* - nofile 65535</pre>
<p style="text-align: justify;">Varnish n'a pas une syntaxe super claire. De plus, le paramétrage fin s'arrête à définir les durées des objets, les latences et les actions à mener sur les HIT/MISS & co. Le seul intérêt que j'ai trouvé à varnish est l'implémentation complète des SSI (qui n'est que partielle sur nginx par ex).</p>
<h2 style="text-align: justify;">Comparatif</h2>
<h3 style="text-align: justify;">siege</h3>
<p style="text-align: justify;">Siege fournit un test sur la durée et la qualité de réponse sur cette durée. Pour chaque fichier de test (remplacer XX par le nom du fichier), on lance les commandes suivantes :</p>
<pre style="text-align: justify;">siege -b -c 1 -t 1M http://crash/XX
siege -b -c 10 -t 1M http://crash/XX
siege -b -c 100 -t 1M http://crash/XX
siege -b -c 1000 -t 1M http://crash/XX
siege -b -c 10000 -t 1M http://crash/XX</pre>
<p style="text-align: justify;">Siege étant très gourmand en mémoire, on est obligé de restreinte les tests sur la VM utilisée. Le tableau de résultat est disponible directement au format <a href="http://cdn.aichelbaum.com/files/s/siege.pdf">PDF</a>.</p>
<p style="text-align: justify;">Notez les points suivants :</p>
<ul>
<li>les durées sont annoncées en secondes</li>
<li>les débits sont en Mo/s</li>
<li>les erreurs sont dûes soit à la partie cliente (siege) soit à la partie serveur et donc sont à mettre entre parenthèses</li>
</ul>
<div>Siege présente des résultats assez incohérent selon la relance sur les valeurs mais aussi sur sa consommation locale de ressources. Je ne suis pas sûr de pouvoir l'utiliser pour ma conclusion (variation de plus de 10% à chaque reprise).</div>
<h3 style="text-align: justify;">ab</h3>
<p style="text-align: justify;">ab fournit un test instantanné pour définir la qualité de réponse du serveur sur une charge pré définie. Pour chaque fichier de test (remplacer XX par le nom du fichier), on lance les commandes suivantes :</p>
<pre style="text-align: justify;">ab -n 1 -c 1 http://crash/XX
ab -n 10 -c 10 http://crash/XX
ab -n 100 -c 100 http://crash/XX
ab -n 1000 -c 1000 http://crash/XX</pre>
<p style="text-align: justify;">Le tableau de résultat est disponible directement au format <a href="http://cdn.aichelbaum.com/files/a/ab.pdf">PDF</a>.</p>
<p style="text-align: justify;">Notez les points suivants :</p>
<ul>
<li>les durées sont annoncées en secondes</li>
<li>global est la durée globale du test</li>
<li>moyenne est le temps moyen rencontré</li>
<li>max est le temps maximum de chargement de la page</li>
<li>erreur est le nombre de retour non valide</li>
</ul>
<h2 style="text-align: justify;">Conclusion</h2>
<p style="text-align: justify;">varnish est une très bonne solution en soit mais il s'avère que le potentiel et les performance de nginx n'en ont pas fait l'un des serveurs HTTP de warez N°1 pour rien en son temps. Aujourd'hui, l'utiliser pour du caching a toutes ses raisons et bien plus encore.</p>
<ol>
<li><strong>MAJ le 8 septembre 2012 à 16h20</strong> : Modification de la mise en page des PDF et correction d'un lien</li>
</ol>
Créer un caching HTTP façon CDN
2012-09-05T15:17:41+02:00
https://francois.aichelbaum.com/2012/09/05/creer-un-caching-http-facon-cdn
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> What?</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#avant-propos-et-plateforme-http" id="markdown-toc-avant-propos-et-plateforme-http">Avant propos et plateforme HTTP</a></li>
<li><a href="#installation-des-serveursorigin" id="markdown-toc-installation-des-serveursorigin">Installation des serveurs <em>origin</em></a></li>
<li><a href="#installation-des-serveurs-source" id="markdown-toc-installation-des-serveurs-source">Installation des serveurs <em>source</em></a></li>
<li><a href="#installation-des-serveurs-edge" id="markdown-toc-installation-des-serveurs-edge">Installation des serveurs <em>edge</em></a></li>
<li><a href="#installation-dun-serveur-stats" id="markdown-toc-installation-dun-serveur-stats">Installation d’un serveur <em>stats</em></a></li>
<li><a href="#installation-dun-serveur-master" id="markdown-toc-installation-dun-serveur-master">Installation d’un serveur <em>master</em></a></li>
</ul>
</nav>
</aside>
<p>C’est la mode au tout <em>Cloud</em>. Je ne m’étalerais pas sur mon avis très critique à cette mode commerciale. Cependant, le fonctionnement des sites en eux-mêmes changent peu et la mode du Cloud n’entache en rien le besoin de performance. C’est le service proposé par de nombreuses société de part de le monde avec des services de livraison de contenu (CDN) qui inclus :</p>
<ul>
<li>distribution HTTP de contenus statiques</li>
<li>accélération HTTP de contenus statiques</li>
<li>streaming audio/vidéo <em>live</em> ou <em>on-demand</em></li>
</ul>
<p>Je vais donc me focaliser sur comment monter une plateforme minimale de livraison HTTP et d’accélération HTTP.</p>
<h2 id="avant-propos-et-plateforme-http">Avant propos et plateforme HTTP</h2>
<p>L’accélération web consiste en la fourniture d’un service HTTP fiable, perfomant, et allégeant la charge sur la plateforme web du client : tout le contenu statique doit être fournit par la plateforme d’accélération ou au maximum, alors que les pages dynamiques sont services par la plateforme du client. Une plateforme d’accélération est simple à mettre en place. La problèmatique par contre, va résider principalement dans les performances (systèmes et réseaux) et dans les fonctionnalités avancées offertes aux clients. Le service doit être mutualisé avec un maximum de clients mais être également flexible et adapté à chacun.
La distribution HTTP repose sur le même principe à la différence que l’on doit héberger le contenu. Il est important qu’une machine qui fait de la distribution ne fasse pas d’accélération et inversement. Cette restriction est importante car les optimisations divergent quelques peu. Je ne m’attarderais pas sur l’installation des systèmes en eux-même.</p>
<h3 id="le-matériel">Le matériel</h3>
<p>Les performances dépendent aussi bien des logiciels et de leurs configurations, que du matériel choisi. Selon les moyens, on choisira entre l’aggrégat d’interface en gigabit ou la mise en place de cartes 10 Gbps. Il est à noté que les temps d’accès sont différents entre de l’optique et du cuivre, à l’avantage de l’optique.
De même, des SSD sont à privilégier pour le cache disque lors que des disques en 15k rpm ou 10k rpm peuvent suffire sur la partie distribution.
Pourquoi je me refuse à prendre des appliances ?</p>
<ul>
<li>limitées dans les fonctions additionnelles (ou sous licenses trop chères)</li>
<li>peu évolutives</li>
<li>performances largement en retrait par rapport à du <em>home-made</em></li>
</ul>
<h3 id="le-logiciel">Le logiciel</h3>
<p>Il est intéressant de privilégier pour les noeuds de cache, des machines <em>diskless</em>, au système démarré en PXE et mis en <em>Ramdisk</em>. Si vous avez besoin d’un article sur ce point, laissez-moi savoir. L’avantage est de réduire les I/O disques lié au système.
Côté mise en cache des objets, on se penchera sur un gros RAID0 de disques en SSD, le tout avec un formatage en XFS. Pourquoi pas en Ram ? simplement parce qu’il est facile de saturer les accès concurrents en Ram dans le cas d’un CDN et que les performances sont largement suffisantes avec une belle grappe de SSD.
Côté service HTTP, on utilisera nginx, aussi bien pour la distribution que pour le caching. Pourquoi pas d’autres ?</p>
<ul>
<li>varnish en caching : il est moins extensible que nginx, un chouillat plus lourd et je le trouve clairement moins agréable à l’utilisation</li>
<li>squid en caching : monolithique et non multithreadé, on y perd en performance et en optimisation ; de plus sa configuration est trop lourde et ses performances sont au final en retrait</li>
<li>apache en caching ou en distribution : oui, pourquoi ne pas utiliser une gros usine à gaz polluante, archaïque et peu performante à la place de solution légère et performante ?</li>
</ul>
<p>On n’écrit rien en local niveau log : on mettra en place un syslog distant et centralisé. L’attrait est double : réduire les I/O locales et pouvoir facilement générer les statistiques HTTP.</p>
<h3 id="la-plateforme-http">La plateforme HTTP</h3>
<p>Celle-ci regroupe donc à minima (et hors volonté de redondances sur tout) :</p>
<ul>
<li>un serveur PXE pour fournir les OS aux machines diskless (non détaillé ici) (<em>pxe</em>)</li>
<li>un serveur syslog et statistiques (<em>stats</em>)</li>
<li>un serveur de base de données pour le backoffice offrant aux clients ou à l’équipe les outils pour le déploiement des configurations par vhosts (non détaillé ici) (<em>db</em>)</li>
<li>les serveurs de monitoring et management (<em>master</em>)</li>
<li>les serveurs de caching (on parle d’<em>edges</em>) ; il y aura 2 niveaux, donc on détaillera en <em>edge / source</em></li>
<li>les serveurs <em>origins</em> HTTP</li>
</ul>
<p>Pour des raisons de disponibilité (et de proximité), on sera amené à dupliquer autant de fois qu’il le faut chaque élément sur des sites distants. La plateforme est duplicable à volonté.
L’architecture est une pyramide inversée, à savoir à minima :</p>
<ul>
<li>4 serveurs edge qui attaquent</li>
<li>2 serveurs source qui attaquent</li>
<li>la plateforme du client ou 2 serveurs origin</li>
</ul>
<p>Les autres serveurs sont mis en parallèle de ce déploiement.</p>
<h3 id="le-réseau">Le réseau</h3>
<p>Les VIP en mode DSR seront gérées par des LVS déployés sur les masters. On peut aussi investir dans des cartes ACE. Sur la partie GSLB (load balancing géolocalisé) je vous conseille de vous référer à votre ingé réseau sur les possibilités de votre infra au niveau déclaration des entêtes & co. En effet, faire du GSLB en DNS pour la plateforme en elle-même est un peu moins efficace :</p>
<ul>
<li>à cause des serveurs DNS des FAI qui ne respectent pas les TTL (Free par ex …)</li>
<li>à cause des utilisateurs passant par des serveurs DNS tiers (Google, OpenDNS) qui faussent le calcul de géolocalisation</li>
<li>du fait que le site mis en cache doit aussi l’appliquer dans sa zone DNS et que c’est parfois compliqué de motiver un client</li>
</ul>
<p>La qualité du transit et des peerings est un point important pour assurer d’excellentes performances du CDN.
On note :</p>
<ul>
<li>X.X.A.0/24 le range d’IP public du datacenter A</li>
<li>X.X.B.0/24 le range d’IP public du datacenter B</li>
<li>10.0.A.0/8 le range d’IP privé du datacenter A</li>
<li>10.0.B.0/8 le range d’IP privé du datacenter B</li>
</ul>
<p>Les zones privées communiquent entre elles.</p>
<h2 id="installation-des-serveursorigin">Installation des serveurs <em>origin</em></h2>
<h3 id="matériel">Matériel</h3>
<p>Au niveau matériel il s’agit, dans mon cas, de serveurs Dell R510 avec 12 disques de 2 To (pour le moment), 24 Go Ram, interfaces en 10 Gbps optiques.
On commence par déployer les packages dont on a besoin :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">aptitude -y install nginx-extras bind9 ntp sysfsutils xfsprogs syslog-ng</span></code></pre></figure>
<p>Les serveurs origin se duplique automatiquement les fichiers du client grâce à une réplication en GlusterFS :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">wget http://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/5.0.3/glusterfs_3.3.0-1_amd64.deb
dpkg -i glusterfs_3.3.0-1_amd64.deb</span></code></pre></figure>
<p>La partie concernant l’importation des fichiers clients n’est pas exploitées ici. Du simple FTP au serveur SFTP utilisant un backend en LDAP, le choix est large.</p>
<h3 id="ntp">NTP</h3>
<p>On modifie simplement les lignes <em>server</em> du fichier <em>/etc/ntp.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>
<span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span></code></pre></figure>
<h3 id="dns">DNS</h3>
<p>Le service ne sera utilisé qu’en local pour la résolution DNS pour les besoins du nginx.
Pour cela, on édite le fichier <em>/etc/bind/named.conf/options</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">options</span> {
<span class="n">directory</span> <span class="s2">"/var/cache/bind"</span>;
<span class="n">query</span>-<span class="n">source</span> <span class="n">address</span> * <span class="n">port</span> *;
<span class="n">forwarders</span> { <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>; <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span>; };
<span class="n">auth</span>-<span class="n">nxdomain</span> <span class="n">no</span>;
<span class="n">listen</span>-<span class="n">on</span>-<span class="n">v6</span> { <span class="n">none</span>; };
<span class="n">listen</span>-<span class="n">on</span> { <span class="m">127</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">1</span>; };
<span class="n">allow</span>-<span class="n">query</span> { <span class="n">any</span>; };
<span class="n">allow</span>-<span class="n">recursion</span> { <span class="n">any</span>; };
<span class="n">version</span> <span class="n">none</span>;
<span class="n">max</span>-<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">recursive</span>-<span class="n">clients</span> <span class="m">10000</span>;
<span class="n">minimal</span>-<span class="n">responses</span> <span class="n">yes</span> ;
};</code></pre></figure>
<h3 id="optimisation-systeme">OPTIMISATION SYSTEME</h3>
<p>On s’attaque au scheduler disque en modifiant le fichier <em>/etc/sysfs.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">block</span>/<span class="n">sdb</span>/<span class="n">queue</span>/<span class="n">scheduler</span> = <span class="n">noop</span></code></pre></figure>
<p>On pense à adapter la partie en gras en fonction de ses disques. Dans la même idée, on modifier le bootloader <em>grub</em> en modifiant <em>/etc/default/grub</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">GRUB_CMDLINE_LINUX</span>=<span class="s2">"elevator=noop quiet"</span></code></pre></figure>
<p>puis en mettant à jour<em> grub</em> :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">update-grub</span></code></pre></figure>
<p>Le filesystem de l’espace de cache a aussi son importance :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">mkfs.xfs -f -l size=128m /dev/sda3</span></code></pre></figure>
<p>On adapte aussi le fichier <em>/etc/fstab</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf">/<span class="n">dev</span>/<span class="n">sdb1</span> /<span class="n">data</span>/<span class="n">store</span>/ <span class="n">xfs</span> <span class="n">rw</span>,<span class="n">nobarrier</span>,<span class="n">largeio</span>,<span class="n">noatime</span>,<span class="n">nodiratime</span>,<span class="n">logbufs</span>=<span class="m">8</span>,<span class="n">inode64</span> <span class="m">0</span> <span class="m">2</span></code></pre></figure>
<p>On organise ensuite la réplication entre les serveurs source. La réplication <em>GlusterFS</em> n’est à configurer que sur l’un des noeuds :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">gluster volume create store replica 2 transport tcp origin1:/data/store origin2:/data/store
gluster volume start store
gluster volume set store performance.write-behind-window-size 1024
gluster volume set store cluster.self-heal-window-size 1024
gluster volume set store cluster.lookup-unhashed off
gluster volume set store performance.flush-behind on
gluster volume set store nfs.disable on
gluster volume set store cluster.self-heal-daemon on
gluster volume set store performance.cache-size 2147483648
gluster volume set store performance.io-thread-count 64
gluster volume set store feature.read-only off</span></code></pre></figure>
<p>Notez qu’on peut répliquer autant que l’on désire. On prépare ensuite le montage du volume répliquer pour travailler dessus (/etc/fstab) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">origin1</span>:/<span class="n">store</span> /<span class="n">data</span>/<span class="n">tmp</span> <span class="n">glusterfs</span> <span class="n">defaults</span>,<span class="err">_</span><span class="n">netdev</span> <span class="m">0</span> <span class="m">0</span></code></pre></figure>
<p>On peut laisser le nom du premier serveur partout : le client GlusterFS l’utilise juste pour créer la connexion mais utilise le serveur qu’il considère le meilleur (en temps de réponse) pour les accès lecture/écrite.
La partie sysctl est importante (<em>/etc/sysctl.conf</em>) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">rp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">arp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">rp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">rmem_default</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">rmem_max</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">wmem_default</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">wmem_max</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_rmem</span> = <span class="m">4096</span> <span class="m">87380</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_wmem</span> = <span class="m">4096</span> <span class="m">65536</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_mem</span> = <span class="m">4096</span> <span class="m">65536</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_low_latency</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">netdev_max_backlog</span> = <span class="m">30000</span>
<span class="n">fs</span>.<span class="n">file</span>-<span class="n">max</span> = <span class="m">262144</span>
<span class="n">kernel</span>.<span class="n">shmmax</span> = <span class="m">16000000000</span>
<span class="n">kernel</span>.<span class="n">shmall</span> = <span class="m">16000000000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_abort_on_overflow</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_syncookies</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_fin_timeout</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_tw_reuse</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_tw_recycle</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_local_port_range</span> = <span class="m">1024</span> <span class="m">65535</span>
<span class="n">vm</span>.<span class="n">min_free_kbytes</span> = <span class="m">65536</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">lo</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth0</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth1</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">lo</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth0</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth1</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_orphan_retries</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_timestamps</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_sack</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_window_scaling</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_keepalive_intvl</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_keepalive_probes</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_forward</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">proxy_arp</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">proxy_arp</span> = <span class="m">1</span>
<span class="n">kernel</span>.<span class="n">sysrq</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">send_redirects</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">send_redirects</span> = <span class="m">1</span>
<span class="n">kernel</span>.<span class="n">core_uses_pid</span>=<span class="m">1</span>
<span class="n">kernel</span>.<span class="n">core_pattern</span>=<span class="m">1</span>
<span class="n">vm</span>.<span class="n">dirty_background_ratio</span> = <span class="m">20</span>
<span class="n">vm</span>.<span class="n">dirty_ratio</span> = <span class="m">40</span>
<span class="n">vm</span>.<span class="n">swappiness</span> = <span class="m">1</span>
<span class="n">vm</span>.<span class="n">dirty_writeback_centisecs</span> = <span class="m">1500</span>
<span class="n">fs</span>.<span class="n">xfs</span>.<span class="n">xfssyncd_centisecs</span> = <span class="m">360000</span>
<span class="n">fs</span>.<span class="n">xfs</span>.<span class="n">xfsbufd_centisecs</span> = <span class="m">3000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_syn_backlog</span> = <span class="m">65536</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">optmem_max</span> = <span class="m">40960</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_tw_buckets</span> = <span class="m">360000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_reordering</span> = <span class="m">5</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">icmp_ignore_bogus_error_responses</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_no_metrics_save</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_orphans</span> = <span class="m">262144</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_rfc1337</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">somaxconn</span>=<span class="m">262144</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_ecn</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_no_pmtu_disc</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_slow_start_after_idle</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_moderate_rcvbuf</span> = <span class="m">1</span></code></pre></figure>
<p>A adapter selon les interfaces réseaux et la Ram (partie en gras). On l’applique avec un simple :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">sysctl -p</span></code></pre></figure>
<p>Il est important d’appliquer les limites correspondantes au système (/etc/security/limits.conf) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf">* <span class="n">soft</span> <span class="n">nofile</span> <span class="m">262144</span>
* <span class="n">hard</span> <span class="n">nofile</span> <span class="m">262144</span></code></pre></figure>
<p>Certaines modifications sont à appliquer au démarrage du système (<em>/etc/rc.local</em>) :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">ifconfig eth0 txqueuelen 10000
ifconfig eth1 txqueuelen 10000
ifconfig eth0 mtu 9000
ifconfig eth1 mtu 9000
ethtool -K eth0 rx off tx off
ethtool -K eth1 rx off tx off</span></code></pre></figure>
<h3 id="distribution-http">Distribution HTTP</h3>
<p>On s’attaque donc à <em>nginx</em>. D’abord pour la partie globale :</p>
<p>{% highlight conf %}
user www-data;
worker_processes 2;
worker_rlimit_nofile 250000;</p>
<p>error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;</p>
<p>timer_resolution 1ms;</p>
<p>events {
worker_connections 102400;
use epoll;
multi_accept on;
accept_mutex_delay 1ms;
}</p>
<p>http {
include /etc/nginx/mime.types;
default_type application/octet-stream;</p>
<p> log_format access ‘[$time_local] $request_time “$request_method $scheme://$host$request_uri $server_protocol” $request_length $status $bytes_sent “$http_referer” $remote_addr “$http_user_agent”’;
access_log /data/log/access.log access;
# Client connection
client_body_temp_path /tmp 1 2;
client_header_timeout 5s;
client_body_timeout 5s;
send_timeout 10m;
connection_pool_size 256k;
client_header_buffer_size 16k;
large_client_header_buffers 1024 128k;
request_pool_size 128k;
keepalive_requests 1000;
keepalive_timeout 10;
client_max_body_size 10g;
client_body_buffer_size 1m;
client_body_in_single_buffer on;
open_file_cache max=250000 inactive=300s;
reset_timedout_connection on;</p>
<p> # Compression
gzip on;
gzip_static on;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_proxied any;</p>
<p> # Network optimizations
output_buffers 1000 128k;
postpone_output 1460;
sendfile on;
sendfile_max_chunk 256k;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;</p>
<p> # DNS
resolver 127.0.0.1;</p>
<p> # HTTP Request
ignore_invalid_headers on;
index index.html;
add_header X-CDN “Served by myself”;
add_header Connection close;</p>
<p> server_names_hash_max_size 5120;
server_names_hash_bucket_size 256;</p>
<p>upstream_fair_shm_size 1024k;</p>
<p> # Includes
include /etc/nginx/conf.d/<em>.conf;
include /etc/nginx/sites-enabled/</em>;
}
{% endhighlight %}</p>
<p>Ensuite, voici le template par<em> vhost</em> (au format <a href="http://twig.sensiolabs.org/">twig</a>) que votre robot déploiera :</p>
<p>{% highlight conf %}</p>
<h3 id="-serial-">{{ serial }}</h3>
<p>server {
listen <em>:80;
server_name {{ frontends|join(‘ ‘) }};
{ % raw %}
{% for option in default_options %}
{{- option.name }} {{ option.value }};
{% endfor %}
{% for location in locations %}
{% for rule_expert in location.rules_expert %}
# {{ location.name }}
location ~</em> {{ rule_expert.pattern }} {
{% for option in location.options %}
{{- option.name }} {{ option.value }};
{% endfor %}
root /data/tmp/vhosts/{{ vhost }}.nginx_backend/;
}
{% endfor %}
{% endfor %}
{ % endraw %}
error_page 404 /404.html;
error_page 500 /500.html;
error_page 502 /502.html;
error_page 503 /503.html;
error_page 504 /504.html;
location = /404.html { root /var/www/nginx-default; }
location = /500.html { root /var/www/nginx-default; }
location = /502.html { root /var/www/nginx-default; }
location = /503.html { root /var/www/nginx-default; }
location = /504.html { root /var/www/nginx-default; }
}
{% endhighlight %}</p>
<h2 id="installation-des-serveurs-source">Installation des serveurs <em>source</em></h2>
<h3 id="matériel-1">Matériel</h3>
<p>Au niveau matériel il s’agit, dans mon cas, de serveurs Dell R510 avec 12 disques de 2 To, 24 Go Ram, interfaces en 10 Gbps optiques.
On commence par déployer les packages dont on a besoin :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">aptitude -y install nginx-extras bind9 ntp sysfsutils xfsprogs syslog-ng</span></code></pre></figure>
<p>Les serveurs <em>source</em> se duplique automatiquement les fichiers mis en cache grâce à une réplication en GlusterFS :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">wget http://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/5.0.3/glusterfs_3.3.0-1_amd64.deb
dpkg -i glusterfs_3.3.0-1_amd64.deb</span></code></pre></figure>
<h3 id="ntp-1">NTP</h3>
<p>On modifie simplement les lignes <em>server</em> du fichier <em>/etc/ntp.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>
<span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span></code></pre></figure>
<h3 id="dns-1">DNS</h3>
<p>Le service ne sera utilisé qu’en local pour la résolution DNS pour les besoins du nginx.
Pour cela, on édite le fichier <em>/etc/bind/named.conf/options</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">options</span> {
<span class="n">directory</span> <span class="s2">"/var/cache/bind"</span>;
<span class="n">query</span>-<span class="n">source</span> <span class="n">address</span> * <span class="n">port</span> *;
<span class="n">forwarders</span> { <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>; <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span>; };
<span class="n">auth</span>-<span class="n">nxdomain</span> <span class="n">no</span>;
<span class="n">listen</span>-<span class="n">on</span>-<span class="n">v6</span> { <span class="n">none</span>; };
<span class="n">listen</span>-<span class="n">on</span> { <span class="m">127</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">1</span>; };
<span class="n">allow</span>-<span class="n">query</span> { <span class="n">any</span>; };
<span class="n">allow</span>-<span class="n">recursion</span> { <span class="n">any</span>; };
<span class="n">version</span> <span class="n">none</span>;
<span class="n">max</span>-<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">recursive</span>-<span class="n">clients</span> <span class="m">10000</span>;
<span class="n">minimal</span>-<span class="n">responses</span> <span class="n">yes</span> ;
};</code></pre></figure>
<h3 id="optimisation-systeme-1">OPTIMISATION SYSTEME</h3>
<p>On s’attaque au scheduler disque en modifiant le fichier <em>/etc/sysfs.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">block</span>/<span class="n">sdb</span>/<span class="n">queue</span>/<span class="n">scheduler</span> = <span class="n">noop</span></code></pre></figure>
<p>On pense à adapter la partie en gras en fonction de ses disques. Dans la même idée, on modifier le bootloader <em>grub</em> en modifiant <em>/etc/default/grub</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">GRUB_CMDLINE_LINUX</span>=<span class="s2">"elevator=noop quiet"</span></code></pre></figure>
<p>puis en mettant à jour<em> grub</em> :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">update-grub</span></code></pre></figure>
<p>Le filesystem de l’espace de cache a aussi son importance :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">mkfs.xfs -f -l size=128m /dev/sda3</span></code></pre></figure>
<p>On adapte aussi le fichier <em>/etc/fstab</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf">/<span class="n">dev</span>/<span class="n">sdb1</span> /<span class="n">data</span>/<span class="n">cache</span>/ <span class="n">xfs</span> <span class="n">rw</span>,<span class="n">nobarrier</span>,<span class="n">largeio</span>,<span class="n">noatime</span>,<span class="n">nodiratime</span>,<span class="n">logbufs</span>=<span class="m">8</span>,<span class="n">inode64</span> <span class="m">0</span> <span class="m">2</span></code></pre></figure>
<p>On organise ensuite la réplication entre les serveurs source. La réplication <em>GlusterFS</em> n’est à configurer que sur l’un des noeuds :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">gluster volume create cache replica 2 transport tcp source1:/data/cache source2:/data/cache
gluster volume start cache
gluster volume set cache performance.write-behind-window-size 131072
gluster volume set cache cluster.self-heal-window-size 1024
gluster volume set cache cluster.lookup-unhashed off
gluster volume set cache performance.flush-behind on
gluster volume set cache nfs.disable on
gluster volume set cache cluster.self-heal-daemon on
gluster volume set cache performance.cache-size 2147483648
gluster volume set cache performance.io-thread-count 64
gluster volume set cache feature.read-only off</span></code></pre></figure>
<p>Notez qu’on peut répliquer autant que l’on désire. On prépare ensuite le montage du volume répliquer pour travailler dessus (<em>/etc/fstab</em>) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">source1</span>:/<span class="n">cache</span> /<span class="n">data</span>/<span class="n">tmp</span> <span class="n">glusterfs</span> <span class="n">defaults</span>,<span class="err">_</span><span class="n">netdev</span> <span class="m">0</span> <span class="m">0</span></code></pre></figure>
<p>On peut laisser le nom du premier serveur partout : le client GlusterFS l’utilise juste pour créer la connexion mais utilise le serveur qu’il considère le meilleur (en temps de réponse) pour les accès lecture/écrite.
La partie sysctl est importante (<em>/etc/sysctl.conf</em>) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">rp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">arp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">rp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">rmem_default</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">rmem_max</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">wmem_default</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">wmem_max</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_rmem</span> = <span class="m">4096</span> <span class="m">87380</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_wmem</span> = <span class="m">4096</span> <span class="m">65536</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_mem</span> = <span class="m">4096</span> <span class="m">65536</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_low_latency</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">netdev_max_backlog</span> = <span class="m">30000</span>
<span class="n">fs</span>.<span class="n">file</span>-<span class="n">max</span> = <span class="m">262144</span>
<span class="n">kernel</span>.<span class="n">shmmax</span> = <span class="m">16000000000</span>
<span class="n">kernel</span>.<span class="n">shmall</span> = <span class="m">16000000000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_abort_on_overflow</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_syncookies</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_fin_timeout</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_tw_reuse</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_tw_recycle</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_local_port_range</span> = <span class="m">1024</span> <span class="m">65535</span>
<span class="n">vm</span>.<span class="n">min_free_kbytes</span> = <span class="m">65536</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">lo</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth0</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth1</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">lo</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth0</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth1</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_orphan_retries</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_timestamps</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_sack</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_window_scaling</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_keepalive_intvl</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_keepalive_probes</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_forward</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">proxy_arp</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">proxy_arp</span> = <span class="m">1</span>
<span class="n">kernel</span>.<span class="n">sysrq</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">send_redirects</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">send_redirects</span> = <span class="m">1</span>
<span class="n">kernel</span>.<span class="n">core_uses_pid</span>=<span class="m">1</span>
<span class="n">kernel</span>.<span class="n">core_pattern</span>=<span class="m">1</span>
<span class="n">vm</span>.<span class="n">dirty_background_ratio</span> = <span class="m">20</span>
<span class="n">vm</span>.<span class="n">dirty_ratio</span> = <span class="m">40</span>
<span class="n">vm</span>.<span class="n">swappiness</span> = <span class="m">1</span>
<span class="n">vm</span>.<span class="n">dirty_writeback_centisecs</span> = <span class="m">1500</span>
<span class="n">fs</span>.<span class="n">xfs</span>.<span class="n">xfssyncd_centisecs</span> = <span class="m">360000</span>
<span class="n">fs</span>.<span class="n">xfs</span>.<span class="n">xfsbufd_centisecs</span> = <span class="m">3000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_syn_backlog</span> = <span class="m">65536</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">optmem_max</span> = <span class="m">40960</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_tw_buckets</span> = <span class="m">360000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_reordering</span> = <span class="m">5</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">icmp_ignore_bogus_error_responses</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_no_metrics_save</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_orphans</span> = <span class="m">262144</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_rfc1337</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">somaxconn</span>=<span class="m">262144</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_ecn</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_no_pmtu_disc</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_slow_start_after_idle</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_moderate_rcvbuf</span> = <span class="m">1</span></code></pre></figure>
<p>A adapter selon les interfaces réseaux et la Ram (partie en gras). On l’applique avec un simple :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">sysctl -p</span></code></pre></figure>
<p>Il est important d’appliquer les limites correspondantes au système (/etc/security/limits.conf) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf">* <span class="n">soft</span> <span class="n">nofile</span> <span class="m">262144</span>
* <span class="n">hard</span> <span class="n">nofile</span> <span class="m">262144</span></code></pre></figure>
<p>Certaines modifications sont à appliquer au démarrage du système (<em>/etc/rc.local</em>) :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">ifconfig eth0 txqueuelen 10000
ifconfig eth1 txqueuelen 10000
ifconfig eth0 mtu 9000
ifconfig eth1 mtu 9000
ethtool -K eth0 rx off tx off
ethtool -K eth1 rx off tx off</span></code></pre></figure>
<h3 id="caching">CACHING</h3>
<p>On s’attaque donc à <em>nginx</em>. D’abord pour la partie globale :</p>
<p>{% highlight conf %}
user www-data;
worker_processes 2;
worker_rlimit_nofile 2500004;</p>
<p>error_log /var/log/nginx/error.log error;
pid /var/run/nginx.pid;</p>
<p>timer_resolution 1ms;</p>
<p>events {
worker_connections 102400;
use epoll;
multi_accept on;
accept_mutex_delay 1ms;
}</p>
<p>http {
include /etc/nginx/mime.types;
default_type application/octet-stream;</p>
<p> log_format access ‘[$time_local] $request_time “$request_method $scheme://$host$request_uri $server_protocol” $request_length $upstream_cache_status $status $proxy_host $upstream_addr $bytes_sent “$http_referer” $remote_addr “$http_user_agent”’;
#access_log /data/log/access.log access;
access_log off;
# Client connection
client_body_temp_path /tmp 1 2;
client_header_timeout 5s;
client_body_timeout 5s;
send_timeout 10m;
connection_pool_size 256k;
client_header_buffer_size 16k;
large_client_header_buffers 1024 128k;
request_pool_size 128k;
keepalive_requests 1000;
keepalive_timeout 10;
client_max_body_size 10g;
client_body_buffer_size 1m;
client_body_in_single_buffer on;
open_file_cache max=250000 inactive=300s;
reset_timedout_connection on;</p>
<p> # Compression
gzip on;
gzip_static on;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_proxied any;</p>
<p> # Network optimizations
output_buffers 1000 128k;
postpone_output 1460;
sendfile on;
sendfile_max_chunk 256k;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;</p>
<p> # DNS
resolver 127.0.0.1;</p>
<p> # HTTP Request
ignore_invalid_headers on;
index index.html;
add_header X-CDN “Served by myself”;
add_header Connection close;</p>
<p> server_names_hash_max_size 5120;
server_names_hash_bucket_size 256;</p>
<p>upstream_fair_shm_size 1024k;
# Proxy
proxy_cache_path /data/tmp/disk/ levels=1:2 keys_zone=big:1000m max_size=16000G;
proxy_temp_path /data/tmp/temp/ 1 2;
proxy_cache_valid 404 10m;
proxy_cache_valid 400 501 502 503 504 1m;
proxy_cache_valid any 4320m;
proxy_cache_use_stale updating invalid_header error timeout http_404 http_500 http_502 http_503 http_504;
proxy_next_upstream error timeout invalid_header http_404 http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header Server Apache;
proxy_set_header Connection Close;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass_header User-Agent;
proxy_set_header X-Accel-Buffering on;
proxy_hide_header X-CDN;
proxy_hide_header X-Server;
proxy_intercept_errors off;
proxy_ignore_client_abort on;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 128k;
proxy_buffers 16384 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 128k;
proxy_cache_min_uses 0;
# Includes
include /etc/nginx/conf.d/<em>.conf;
include /etc/nginx/sites-enabled/</em>;
}
{% endhighlight %}</p>
<p>Ensuite, voici le template par<em> vhost</em> (au format <a href="http://twig.sensiolabs.org/">twig</a>) que votre robot déploiera :</p>
<p>{% highlight conf %}</p>
<h3 id="-serial--1">{{ serial }}</h3>
<p>proxy_cache_path /data/tmp/disk/{{ upstream }} levels=1:2 keys_zone={{ upstream }}:1000m inactive=4320m max_size=16000G;
upstream {{ upstream }}.nginx_backend {
{ % raw %}
{% for backend in backends %}
server {{ backend.name }}{% for key, value in backend.options %} {{ key }}={{ value }}{% endfor %};
{% endfor %}
{ % endraw %}
fair;
}
server {
listen <em>:80;
server_name {{ frontends|join(‘ ‘) }};
{ % raw %}
{% for option in default_options %}
{{- option.name }} {{ option.value }};
{% endfor %}
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pragma $http_authorization;
{% for location in locations %}
{% for rule_expert in location.rules_expert %}
# {{ location.name }}
location ~</em> {{ rule_expert.pattern }} {
{% for option in location.options %}
{{- option.name }} {{ option.value }};
{% endfor %}
{% for header in location.del_headers -%}
proxy_hide_header “{{ header.name }}”;
{% endfor %}
{% for header in location.mod_headers %}
proxy_hide_header “{{ header.name }}”;
add_header “{{ header.name }}” “{{ header.value }}”;
{% endfor %}
proxy_cache {{ upstream }};
proxy_pass http://{{ upstream }}.nginx_backend;
}
{% endfor %}
{% endfor %}
{ % endraw %}
error_page 404 /404.html;
error_page 500 /500.html;
error_page 502 /502.html;
error_page 503 /503.html;
error_page 504 /504.html;
location = /404.html { root /var/www/nginx-default; }
location = /500.html { root /var/www/nginx-default; }
location = /502.html { root /var/www/nginx-default; }
location = /503.html { root /var/www/nginx-default; }
location = /504.html { root /var/www/nginx-default; }
}
{% endhighlight %}</p>
<h2 id="installation-des-serveurs-edge">Installation des serveurs <em>edge</em></h2>
<h3 id="matériel-2">Matériel</h3>
<p>Au niveau matériel il s’agit, dans mon cas, de serveurs avec les matériels suivants :</p>
<ul>
<li>2 CPU Intel E5620 (la plateforme date un peu)</li>
<li>96 Go Ram</li>
<li>6 x 100 Go en SSD</li>
<li>interfaces réseaux optiques 10 Gbps</li>
</ul>
<p>Ce qui suit est à faire sur l’image PXE ou sur le système local si vous en avez mis un. On commence par déployer les packages dont on a besoin :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">aptitude -y install nginx-extras bind9 ntp sysfsutils xfsprogs syslog-ng</span></code></pre></figure>
<h3 id="ntp-2">NTP</h3>
<p>On modifie simplement les lignes <em>server</em> du fichier <em>/etc/ntp.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>
<span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span></code></pre></figure>
<h3 id="dns-2">DNS</h3>
<p>Le service ne sera utilisé qu’en local pour la résolution DNS pour les besoins du nginx.
Pour cela, on édite le fichier <em>/etc/bind/named.conf/options</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">options</span> {
<span class="n">directory</span> <span class="s2">"/var/cache/bind"</span>;
<span class="n">query</span>-<span class="n">source</span> <span class="n">address</span> * <span class="n">port</span> *;
<span class="n">forwarders</span> { <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>; <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span>; };
<span class="n">auth</span>-<span class="n">nxdomain</span> <span class="n">no</span>;
<span class="n">listen</span>-<span class="n">on</span>-<span class="n">v6</span> { <span class="n">none</span>; };
<span class="n">listen</span>-<span class="n">on</span> { <span class="m">127</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">1</span>; };
<span class="n">allow</span>-<span class="n">query</span> { <span class="n">any</span>; };
<span class="n">allow</span>-<span class="n">recursion</span> { <span class="n">any</span>; };
<span class="n">version</span> <span class="n">none</span>;
<span class="n">max</span>-<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">recursive</span>-<span class="n">clients</span> <span class="m">10000</span>;
<span class="n">minimal</span>-<span class="n">responses</span> <span class="n">yes</span> ;
};</code></pre></figure>
<h3 id="optimisation-systeme-2">OPTIMISATION SYSTEME</h3>
<p>On s’attaque au scheduler disque en modifiant le fichier <em>/etc/sysfs.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">block</span>/<span class="n">sda</span>/<span class="n">queue</span>/<span class="n">scheduler</span> = <span class="n">noop</span></code></pre></figure>
<p>On pense à adapter la partie en gras en fonction de ses disques. Dans la même idée, on modifier le bootloader <em>grub</em> en modifiant <em>/etc/default/grub</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">GRUB_CMDLINE_LINUX</span>=<span class="s2">"elevator=noop quiet"</span></code></pre></figure>
<p>puis en mettant à jour* grub* :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">update-grub</span></code></pre></figure>
<p>Le filesystem de l’espace de cache a aussi son importance :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">mkfs.xfs -f -l size=128m /dev/sda3</span></code></pre></figure>
<p>On adapte aussi le fichier <em>/etc/fstab</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf">/<span class="n">dev</span>/<span class="n">sda3</span> /<span class="n">data</span>/<span class="n">cache</span>/ <span class="n">xfs</span> <span class="n">rw</span>,<span class="n">nobarrier</span>,<span class="n">largeio</span>,<span class="n">noatime</span>,<span class="n">nodiratime</span>,<span class="n">logbufs</span>=<span class="m">8</span>,<span class="n">inode64</span> <span class="m">0</span> <span class="m">2</span></code></pre></figure>
<p>La partie sysctl est importante (/etc/sysctl.conf) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">rp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">arp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">rp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_filter</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">rmem_default</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">rmem_max</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">wmem_default</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">wmem_max</span> = <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_rmem</span> = <span class="m">4096</span> <span class="m">87380</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_wmem</span> = <span class="m">4096</span> <span class="m">65536</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_mem</span> = <span class="m">4096</span> <span class="m">65536</span> <span class="m">16777216</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_low_latency</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">netdev_max_backlog</span> = <span class="m">30000</span>
<span class="n">fs</span>.<span class="n">file</span>-<span class="n">max</span> = <span class="m">262144</span>
<span class="n">kernel</span>.<span class="n">shmmax</span> = <span class="m">16000000000</span>
<span class="n">kernel</span>.<span class="n">shmall</span> = <span class="m">16000000000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_abort_on_overflow</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_syncookies</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_fin_timeout</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_tw_reuse</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_tw_recycle</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_local_port_range</span> = <span class="m">1024</span> <span class="m">65535</span>
<span class="n">vm</span>.<span class="n">min_free_kbytes</span> = <span class="m">65536</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">lo</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth0</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth1</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth2</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth3</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth4</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth5</span>.<span class="n">arp_ignore</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">lo</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth0</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth1</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth2</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth3</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth4</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">eth5</span>.<span class="n">arp_announce</span> = <span class="m">2</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_orphan_retries</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_timestamps</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_sack</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_window_scaling</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_keepalive_intvl</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_keepalive_probes</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_forward</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">proxy_arp</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">proxy_arp</span> = <span class="m">1</span>
<span class="n">kernel</span>.<span class="n">sysrq</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">default</span>.<span class="n">send_redirects</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">conf</span>.<span class="n">all</span>.<span class="n">send_redirects</span> = <span class="m">1</span>
<span class="n">kernel</span>.<span class="n">core_uses_pid</span>=<span class="m">1</span>
<span class="n">kernel</span>.<span class="n">core_pattern</span>=<span class="m">1</span>
<span class="n">vm</span>.<span class="n">dirty_background_ratio</span> = <span class="m">20</span>
<span class="n">vm</span>.<span class="n">dirty_ratio</span> = <span class="m">40</span>
<span class="n">vm</span>.<span class="n">swappiness</span> = <span class="m">1</span>
<span class="n">vm</span>.<span class="n">dirty_writeback_centisecs</span> = <span class="m">1500</span>
<span class="n">fs</span>.<span class="n">xfs</span>.<span class="n">xfssyncd_centisecs</span> = <span class="m">360000</span>
<span class="n">fs</span>.<span class="n">xfs</span>.<span class="n">xfsbufd_centisecs</span> = <span class="m">3000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_syn_backlog</span> = <span class="m">65536</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">optmem_max</span> = <span class="m">40960</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_tw_buckets</span> = <span class="m">360000</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_reordering</span> = <span class="m">5</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">icmp_ignore_bogus_error_responses</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_no_metrics_save</span> = <span class="m">1</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_max_orphans</span> = <span class="m">262144</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_rfc1337</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">core</span>.<span class="n">somaxconn</span>=<span class="m">262144</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_ecn</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">ip_no_pmtu_disc</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_slow_start_after_idle</span> = <span class="m">0</span>
<span class="n">net</span>.<span class="n">ipv4</span>.<span class="n">tcp_moderate_rcvbuf</span> = <span class="m">1</span></code></pre></figure>
<p>A adapter selon les interfaces réseaux et la Ram (partie en gras). On l’applique avec un simple :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">sysctl -p</span></code></pre></figure>
<p>Il est important d’appliquer les limites correspondantes au système (/etc/security/limits.conf) :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf">* <span class="n">soft</span> <span class="n">nofile</span> <span class="m">262144</span>
* <span class="n">hard</span> <span class="n">nofile</span> <span class="m">262144</span></code></pre></figure>
<p>Certaines modifications sont à appliquer au démarrage du système (<em>/etc/rc.local</em>) :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">ifconfig eth0 txqueuelen 10000
ifconfig eth1 txqueuelen 10000
ifconfig eth2 txqueuelen 10000
ifconfig eth3 txqueuelen 10000
ifconfig eth4 txqueuelen 10000
ifconfig eth5 txqueuelen 10000
ifconfig eth0 mtu 9000
ifconfig eth1 mtu 9000
ifconfig eth2 mtu 9000
ifconfig eth3 mtu 9000
ifconfig eth4 mtu 9000
ifconfig eth5 mtu 9000
ethtool -K eth0 rx off tx off
ethtool -K eth1 rx off tx off
ethtool -K eth2 rx off tx off
ethtool -K eth3 rx off tx off
ethtool -K eth4 rx off tx off
ethtool -K eth5 rx off tx off</span></code></pre></figure>
<h3 id="caching-1">CACHING</h3>
<p>Afin d’optimiser le nombre de socket par machine en fonction des ressources, on affecte plusieurs IP en alias à l’interface publique. De même, on pense à rajouter les IP des VIP à la loopback (<em>/etc/network/interfaces</em>).</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">auto</span> <span class="n">lo</span>
<span class="n">iface</span> <span class="n">lo</span> <span class="n">inet</span> <span class="n">loopback</span>
<span class="n">auto</span> <span class="n">eth0</span>
<span class="n">iface</span> <span class="n">eth0</span> <span class="n">inet</span> <span class="n">static</span>
<span class="n">address</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">10</span>
<span class="n">netmask</span> <span class="m">255</span>.<span class="m">255</span>.<span class="m">255</span>.<span class="m">0</span>
<span class="n">gateway</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">1</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">0</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">11</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">1</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">12</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">2</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">13</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">3</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">14</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">4</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">15</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">5</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">16</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">6</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">17</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">7</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">18</span>/<span class="m">32</span>
<span class="n">post</span>-<span class="n">up</span> <span class="n">ifconfig</span> <span class="n">eth0</span>:<span class="m">8</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">19</span>/<span class="m">32</span>
<span class="n">auto</span> <span class="n">lo</span>:<span class="m">0</span>
<span class="n">iface</span> <span class="n">lo</span>:<span class="m">0</span> <span class="n">inet</span> <span class="n">static</span>
<span class="n">address</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">248</span>
<span class="n">netmask</span> <span class="m">255</span>.<span class="m">255</span>.<span class="m">255</span>.<span class="m">255</span>
<span class="n">auto</span> <span class="n">lo</span>:<span class="m">1</span>
<span class="n">iface</span> <span class="n">lo</span>:<span class="m">1</span> <span class="n">inet</span> <span class="n">static</span>
<span class="n">address</span> <span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">249</span>
<span class="n">netmask</span> <span class="m">255</span>.<span class="m">255</span>.<span class="m">255</span>.<span class="m">255</span></code></pre></figure>
<p>Ensuite, on s’attaque à <em>nginx</em>. D’abord pour la partie globale :</p>
<p>{% highlight conf %}
user www-data;
worker_processes 32;
worker_rlimit_nofile 262144;</p>
<p>error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;</p>
<p>timer_resolution 1ms;</p>
<p>syslog local5 nginx;</p>
<p>events {
worker_connections 262144;
use epoll;
multi_accept on;
accept_mutex_delay 1ms;
}</p>
<p>http {
include /etc/nginx/mime.types;
default_type application/octet-stream;</p>
<p> log_format access ‘[$time_local] $request_time “$request_method $scheme://$host$request_uri $server_protocol” $request_length $upstream_cache_status $status $proxy_host $upstream_addr $bytes_sent “$http_referer” $remote_addr “$http_user_agent”’;
access_log syslog access;</p>
<p> # Client connection
aio off;
client_body_temp_path /tmp 1 2;
client_header_timeout 5s;
client_body_timeout 5s;
send_timeout 10m;
connection_pool_size 256k;
client_header_buffer_size 16k;
large_client_header_buffers 1024 256k;
request_pool_size 128k;
keepalive_requests 1000;
keepalive_timeout 10;
client_max_body_size 10g;
client_body_buffer_size 1m;
client_body_in_single_buffer on;
open_file_cache max=1000 inactive=3600s;
reset_timedout_connection on;</p>
<p> # Compression
gzip on;
gzip_static on;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_proxied any;</p>
<p> # Network optimizations
output_buffers 1000 128k;
postpone_output 1460;
sendfile on;
sendfile_max_chunk 256k;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;</p>
<p> # DNS
resolver 127.0.0.1;</p>
<p> # HTTP Request
ignore_invalid_headers on;
index index.html;
add_header X-CDN “Served by myself”;
add_header Connection close;</p>
<p> # Proxy
proxy_cache_path /data/cache/disk levels=1:2 keys_zone=big:4000m inactive=4320m max_size=500G;
proxy_temp_path /data/cache/temp 1 2;
proxy_cache_valid 404 10m;
proxy_cache_valid 400 501 502 503 504 1m;
proxy_cache_valid any 4320m;
proxy_cache_use_stale updating invalid_header error timeout http_404 http_500 http_502 http_503 http_504;
proxy_next_upstream error timeout invalid_header http_404 http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header Server Apache;
proxy_set_header Connection Close;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass_header User-Agent;
proxy_set_header X-Accel-Buffering on;
proxy_hide_header X-CDN;
proxy_hide_header X-Server;
proxy_intercept_errors on;
proxy_ignore_client_abort on;
proxy_connect_timeout 10;
proxy_send_timeout 10;
proxy_read_timeout 10;
proxy_buffer_size 128k;
proxy_buffers 65536 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 128k;</p>
<p> server_names_hash_max_size 5120;
server_names_hash_bucket_size 256;</p>
<p>upstream_fair_shm_size 1024k;</p>
<p> # Includes
include /etc/nginx/conf.d/<em>.conf;
include /etc/nginx/sites-enabled/</em>;
}
{% endhighlight %}</p>
<p>Ensuite, voici le template par* vhost* (au format <a href="http://twig.sensiolabs.org/">twig</a>) que votre robot déploiera :</p>
<p>{% highlight conf %}</p>
<h3 id="-serial--2">{{ serial }}</h3>
<p>proxy_cache_path /data/cache/disk/{{ upstream }} levels=1:2 keys_zone={{ upstream }}:1000m inactive=4320m max_size=400G;
upstream {{ upstream }}.nginx_backend {
server X.X.A.101 max_fails=1 fail_timeout=1;
server X.X.B.101 max_fails=1 fail_timeout=1;
fair;
}
server {
listen <em>:80;
server_name {{ frontends|join(‘ ‘) }};
{ % raw %}
{% for option in default_options %}
{{- option.name }} {{ option.value }};
{% endfor %}
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pragma $http_authorization;
{% for location in locations %}
{% for rule_expert in location.rules_expert %}
# {{ location.name }}
location ~</em> {{ rule_expert.pattern }} {
{% for option in location.options %}
{{- option.name }} {{ option.value }};
{% endfor %}
{% for header in location.del_headers %}
proxy_hide_header “{{ header.name }}”;
{% endfor %}
{% for header in location.mod_headers %}
proxy_hide_header “{{ header.name }}”;
add_header “{{ header.name }}” “{{ header.value }}”;
{% endfor %}
proxy_cache {{ upstream }};
proxy_pass http://{{ upstream }}.nginx_backend;
}
{% endfor %}
{% endfor %}
{ % endraw %}
error_page 404 /404.html;
error_page 500 /500.html;
error_page 502 /502.html;
error_page 503 /503.html;
error_page 504 /504.html;
location = /404.html { root /var/www/nginx-default; }
location = /500.html { root /var/www/nginx-default; }
location = /502.html { root /var/www/nginx-default; }
location = /503.html { root /var/www/nginx-default; }
location = /504.html { root /var/www/nginx-default; }
}
{% endhighlight %}</p>
<h3 id="syslog">SYSLOG</h3>
<p>On envoie les logs nginx directement sur le syslog centralisé, en modifiant le fichier <em>/etc/syslog-ng/syslog-ng.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">destination</span> <span class="n">d_remote</span> { <span class="n">tcp</span>(<span class="s2">"10.0.A.202"</span>, <span class="n">port</span>(<span class="m">514</span>)); };
<span class="n">filter</span> <span class="n">f_nginx</span> { <span class="n">facility</span>(<span class="n">local5</span>); };
<span class="n">log</span> { <span class="n">source</span>(<span class="n">s_src</span>); <span class="n">filter</span>(<span class="n">f_nginx</span>); <span class="n">destination</span>(<span class="n">d_remote</span>); };</code></pre></figure>
<h2 id="installation-dun-serveur-stats">Installation d’un serveur <em>stats</em></h2>
<h3 id="matériel-3">Matériel</h3>
<p>Pour la partie matériel, j’ai pris un HP G7 avec des disques 15k rpm mis en RAID 10. Au niveau réseau, les interfaces gigabit suffisent amplement.</p>
<h3 id="packages">Packages</h3>
<p>On installe les packages nécessaires :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">aptitude -y install bind9 awstats jdresolve syslog-ng geoip-bin groip-database ntp</span></code></pre></figure>
<h3 id="ntp-3">NTP</h3>
<p>On modifie simplement les lignes <em>server</em> du fichier <em>/etc/ntp.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>
<span class="n">server</span> <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span></code></pre></figure>
<h3 id="dns-3">DNS</h3>
<p>Le service ne sera utilisé qu’en local pour la résolution DNS des IP utilisateurs au moment de l’écriture des logs (ce qui évitera de le faire a posteriori pendant le calcul des statistiques).
Pour cela, on édite le fichier <em>/etc/bind/named.conf/options</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">options</span> {
<span class="n">directory</span> <span class="s2">"/var/cache/bind"</span>;
<span class="n">query</span>-<span class="n">source</span> <span class="n">address</span> * <span class="n">port</span> *
<span class="n">forwarders</span> { <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>; <span class="m">10</span>.<span class="m">0</span>.<span class="n">B</span>.<span class="m">201</span>; };
<span class="n">auth</span>-<span class="n">nxdomain</span> <span class="n">no</span>;
<span class="n">listen</span>-<span class="n">on</span>-<span class="n">v6</span> { <span class="n">none</span>; };
<span class="n">listen</span>-<span class="n">on</span> { <span class="m">127</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">1</span>; };
<span class="n">allow</span>-<span class="n">query</span> { <span class="n">any</span>; };
<span class="n">allow</span>-<span class="n">recursion</span> { <span class="n">any</span>; };
<span class="n">version</span> <span class="n">none</span>;
<span class="n">max</span>-<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">recursive</span>-<span class="n">clients</span> <span class="m">10000</span>;
<span class="n">minimal</span>-<span class="n">responses</span> <span class="n">yes</span> ;
};</code></pre></figure>
<h3 id="syslog-1">SYSLOG</h3>
<p>On centralise donc l’arrivée des logs <em>nginx</em> via <em>syslog-ng</em>. Pour cela, on édite simplement le fichier <em>/etc/syslog-ng/syslog-ng.conf</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">source</span> <span class="n">s_net</span> {
<span class="n">udp</span>(<span class="n">ip</span>(<span class="m">0</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">0</span>) <span class="n">port</span>(<span class="m">514</span>));
<span class="n">tcp</span>(<span class="n">ip</span>(<span class="m">0</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">0</span>) <span class="n">port</span>(<span class="m">514</span>) <span class="n">max</span>-<span class="n">connections</span>(<span class="m">512</span>));
};
<span class="n">destination</span> <span class="n">d_nginx</span> { <span class="n">program</span>(<span class="s2">"/usr/bin/jdresolve -a - | /usr/bin/php /opt/cdn/bin/dispatch.php"</span>); };
<span class="n">log</span> { <span class="n">source</span>(<span class="n">s_net</span>); <span class="n">destination</span>(<span class="n">d_nginx</span>); };</code></pre></figure>
<p>jdresolve est une application java permettant la résolution DNS à la volée. On le fait à ce moment plutôt que sur le <em>nginx</em> pour éviter de rallonger la durée de traitement de la requête HTTP. Idem, il est fait avant le calcul des statistiques pour ne pas rallonger le traitement. En effet, <em>awstats</em> est une véritable limace quand il s’agit de résoudre la partie DNS. Le script dispatch.php permet de dispatcher la ligne dans un fichier spécifique à son <em>vhost</em>.</p>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="k">foreach</span> <span class="p">(</span><span class="nb">explode</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="nb">file_get_contents</span><span class="p">(</span><span class="s1">'php://stdin'</span><span class="p">))</span> <span class="k">as</span> <span class="nv">$log</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">empty</span><span class="p">(</span><span class="nv">$log</span><span class="p">))</span> <span class="k">continue</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">preg_match</span><span class="p">(</span><span class="s1">'%.*".* http://([^/]*)/.* .*".* ([^\s]+).nginx_backend.*".*" .* ".*"%i'</span><span class="p">,</span> <span class="nv">$log</span><span class="p">,</span> <span class="nv">$match</span><span class="p">)</span> <span class="o">===</span> <span class="kc">FALSE</span><span class="p">)</span> <span class="p">{</span>
<span class="k">die</span><span class="p">(</span><span class="s2">"Invalid log format on line </span><span class="nv">$id</span><span class="s2">."</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$match</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> <span class="p">{</span>
<span class="nv">$dir</span> <span class="o">=</span> <span class="s1">'/mnt/nfs/log/'</span><span class="mf">.</span><span class="nb">date</span><span class="p">(</span><span class="s1">'Y/m/d'</span><span class="p">);</span>
<span class="o">@</span><span class="nb">mkdir</span><span class="p">(</span><span class="nv">$dir</span><span class="p">,</span> <span class="mo">0777</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
<span class="nv">$match</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">substr</span><span class="p">(</span><span class="nv">$match</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">strpos</span><span class="p">(</span><span class="nv">$match</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s1">'['</span><span class="p">));</span>
<span class="nb">file_put_contents</span><span class="p">(</span><span class="nv">$dir</span><span class="mf">.</span><span class="s1">'/'</span><span class="mf">.</span><span class="nv">$match</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="mf">.</span><span class="s1">'.log'</span><span class="p">,</span> <span class="nv">$match</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="mf">.</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="no">FILE_APPEND</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$match</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">&&</span> <span class="nb">sizeof</span><span class="p">(</span><span class="nv">$match</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> <span class="p">{</span>
<span class="nb">file_put_contents</span><span class="p">(</span><span class="s2">"/tmp/trash.log"</span><span class="p">,</span> <span class="nv">$match</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="mf">.</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="no">FILE_APPEND</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></figure>
<p>Pensez à modifier le chemin de dépôt pour les logs (en gras).</p>
<h3 id="statistiques">Statistiques</h3>
<p>La partie des statistiques repose sur <em>awstats</em>. Un script permet de collecter les informations en base pour chaque <em>vhost</em> et la génération en dynamique de sa configuration en cas de besoin. Je ne vais pas pouvoir vous fournir le script. Cependant, voici le modèle pour les fichiers de configuration d’<em>awstats</em>.</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">LogFile</span>=<span class="s2">"###LOG###"</span>
<span class="n">LogType</span>=<span class="n">W</span>
<span class="n">LogFormat</span> = <span class="s2">"%time1 %extra1 %methodurl %extra2 %extra3 %code %extra4 %extra5 %bytesd %refererquot %host %uaquot"</span>
<span class="n">LogSeparator</span>=<span class="s2">" "</span>
<span class="n">SiteDomain</span>=<span class="s2">"###VHOST###"</span>
<span class="n">HostAliases</span>=<span class="s2">"###FQDN###"</span>
<span class="n">DNSLookup</span>=<span class="m">0</span>
<span class="n">DirData</span>=<span class="s2">"/var/lib/awstats"</span>
<span class="n">DirCgi</span>=<span class="s2">"/cgi-bin"</span>
<span class="n">DirIcons</span>=<span class="s2">"/awstats-icon"</span>
<span class="n">AllowToUpdateStatsFromBrowser</span>=<span class="m">0</span>
<span class="n">AllowFullYearView</span>=<span class="m">2</span>
<span class="n">EnableLockForUpdate</span>=<span class="m">0</span>
<span class="n">DNSStaticCacheFile</span>=<span class="s2">"dnscache.txt"</span>
<span class="n">DNSLastUpdateCacheFile</span>=<span class="s2">"dnscachelastupdate.txt"</span>
<span class="n">SkipDNSLookupFor</span>=<span class="s2">""</span>
<span class="n">AllowAccessFromWebToAuthenticatedUsersOnly</span>=<span class="m">0</span>
<span class="n">AllowAccessFromWebToFollowingAuthenticatedUsers</span>=<span class="s2">""</span>
<span class="n">AllowAccessFromWebToFollowingIPAddresses</span>=<span class="s2">""</span>
<span class="n">CreateDirDataIfNotExists</span>=<span class="m">0</span>
<span class="n">BuildHistoryFormat</span>=<span class="n">text</span>
<span class="n">BuildReportFormat</span>=<span class="n">html</span>
<span class="n">SaveDatabaseFilesWithPermissionsForEveryone</span>=<span class="m">0</span>
<span class="n">PurgeLogFile</span>=<span class="m">0</span>
<span class="n">ArchiveLogRecords</span>=<span class="m">0</span>
<span class="n">KeepBackupOfHistoricFiles</span>=<span class="m">0</span>
<span class="n">DefaultFile</span>=<span class="s2">"index.html"</span>
<span class="n">SkipHosts</span>=<span class="s2">"REGEX[^X\.X\.A\.] REGEX[^X\.X\.B\.]"</span>
<span class="n">SkipUserAgents</span>=<span class="s2">""</span>
<span class="n">SkipFiles</span>=<span class="s2">""</span>
<span class="n">SkipReferrersBlackList</span>=<span class="s2">""</span>
<span class="n">OnlyHosts</span>=<span class="s2">""</span>
<span class="n">OnlyUserAgents</span>=<span class="s2">""</span>
<span class="n">OnlyFiles</span>=<span class="s2">""</span>
<span class="n">NotPageList</span>=<span class="s2">""</span>
<span class="n">ValidHTTPCodes</span>=<span class="s2">"200 206 300 301 302 303 304 305 307"</span>
<span class="n">ValidSMTPCodes</span>=<span class="s2">"1 250"</span>
<span class="n">AuthenticatedUsersNotCaseSensitive</span>=<span class="m">0</span>
<span class="n">URLNotCaseSensitive</span>=<span class="m">0</span>
<span class="n">URLWithAnchor</span>=<span class="m">0</span>
<span class="n">URLQuerySeparators</span>=<span class="s2">"?;"</span>
<span class="n">URLWithQuery</span>=<span class="m">0</span>
<span class="n">URLWithQueryWithOnlyFollowingParameters</span>=<span class="s2">""</span>
<span class="n">URLWithQueryWithoutFollowingParameters</span>=<span class="s2">""</span>
<span class="n">URLReferrerWithQuery</span>=<span class="m">0</span>
<span class="n">WarningMessages</span>=<span class="m">1</span>
<span class="n">ErrorMessages</span>=<span class="s2">""</span>
<span class="n">DebugMessages</span>=<span class="m">0</span>
<span class="n">NbOfLinesForCorruptedLog</span>=<span class="m">50</span>
<span class="n">WrapperScript</span>=<span class="s2">""</span>
<span class="n">DecodeUA</span>=<span class="m">0</span>
<span class="n">MiscTrackerUrl</span>=<span class="s2">"/js/awstats_misc_tracker.js"</span>
<span class="n">LevelForBrowsersDetection</span>=<span class="m">2</span> <span class="c"># 0 disables Browsers detection.
</span> <span class="c"># 2 reduces AWStats speed by 2%
</span> <span class="c"># allphones reduces AWStats speed by 5%
</span><span class="n">LevelForOSDetection</span>=<span class="m">2</span> <span class="c"># 0 disables OS detection.
</span> <span class="c"># 2 reduces AWStats speed by 3%
</span><span class="n">LevelForRefererAnalyze</span>=<span class="m">2</span> <span class="c"># 0 disables Origin detection.
</span> <span class="c"># 2 reduces AWStats speed by 14%
</span><span class="n">LevelForRobotsDetection</span>=<span class="m">2</span> <span class="c"># 0 disables Robots detection.
</span> <span class="c"># 2 reduces AWStats speed by 2.5%
</span><span class="n">LevelForSearchEnginesDetection</span>=<span class="m">2</span> <span class="c"># 0 disables Search engines detection.
</span> <span class="c"># 2 reduces AWStats speed by 9%
</span><span class="n">LevelForKeywordsDetection</span>=<span class="m">2</span> <span class="c"># 0 disables Keyphrases/Keywords detection.
</span> <span class="c"># 2 reduces AWStats speed by 1%
</span><span class="n">LevelForFileTypesDetection</span>=<span class="m">2</span> <span class="c"># 0 disables File types detection.
</span> <span class="c"># 2 reduces AWStats speed by 1%
</span><span class="n">LevelForWormsDetection</span>=<span class="m">0</span> <span class="c"># 0 disables Worms detection.
</span> <span class="c"># 2 reduces AWStats speed by 15%
</span><span class="n">UseFramesWhenCGI</span>=<span class="m">1</span>
<span class="n">DetailedReportsOnNewWindows</span>=<span class="m">1</span>
<span class="n">Expires</span>=<span class="m">0</span>
<span class="n">MaxRowsInHTMLOutput</span>=<span class="m">1000</span>
<span class="n">Lang</span>=<span class="s2">"fr"</span>
<span class="n">DirLang</span>=<span class="s2">"/usr/share/awstats/lang"</span>
<span class="n">ShowMenu</span>=<span class="m">1</span>
<span class="n">ShowSummary</span>=<span class="n">UVPHB</span>
<span class="n">ShowMonthStats</span>=<span class="n">UVPHB</span>
<span class="n">ShowDaysOfMonthStats</span>=<span class="n">VPHB</span>
<span class="n">ShowDaysOfWeekStats</span>=<span class="n">PHB</span>
<span class="n">ShowHoursStats</span>=<span class="n">PHB</span>
<span class="n">ShowDomainsStats</span>=<span class="n">PHB</span>
<span class="n">ShowHostsStats</span>=<span class="n">PHBL</span>
<span class="n">ShowAuthenticatedUsers</span>=<span class="m">0</span>
<span class="n">ShowRobotsStats</span>=<span class="n">HBL</span>
<span class="n">ShowWormsStats</span>=<span class="m">0</span>
<span class="n">ShowEMailSenders</span>=<span class="m">0</span>
<span class="n">ShowEMailReceivers</span>=<span class="m">0</span>
<span class="n">ShowSessionsStats</span>=<span class="m">1</span>
<span class="n">ShowPagesStats</span>=<span class="n">PBEX</span>
<span class="n">ShowFileTypesStats</span>=<span class="n">HB</span>
<span class="n">ShowFileSizesStats</span>=<span class="m">0</span>
<span class="n">ShowOSStats</span>=<span class="m">1</span>
<span class="n">ShowBrowsersStats</span>=<span class="m">1</span>
<span class="n">ShowScreenSizeStats</span>=<span class="m">0</span>
<span class="n">ShowOriginStats</span>=<span class="n">PH</span>
<span class="n">ShowKeyphrasesStats</span>=<span class="m">0</span>
<span class="n">ShowKeywordsStats</span>=<span class="m">0</span>
<span class="n">ShowMiscStats</span>=<span class="m">0</span>
<span class="n">ShowHTTPErrorsStats</span>=<span class="m">1</span>
<span class="n">ShowSMTPErrorsStats</span>=<span class="m">0</span>
<span class="n">ShowClusterStats</span>=<span class="m">0</span>
<span class="n">AddDataArrayMonthStats</span>=<span class="m">1</span>
<span class="n">AddDataArrayShowDaysOfMonthStats</span>=<span class="m">1</span>
<span class="n">AddDataArrayShowDaysOfWeekStats</span>=<span class="m">1</span>
<span class="n">AddDataArrayShowHoursStats</span>=<span class="m">1</span>
<span class="n">IncludeInternalLinksInOriginSection</span>=<span class="m">0</span>
<span class="n">MaxNbOfDomain</span> = <span class="m">10</span>
<span class="n">MinHitDomain</span> = <span class="m">1</span>
<span class="n">MaxNbOfHostsShown</span> = <span class="m">10</span>
<span class="n">MinHitHost</span> = <span class="m">1</span>
<span class="n">MaxNbOfLoginShown</span> = <span class="m">10</span>
<span class="n">MinHitLogin</span> = <span class="m">1</span>
<span class="n">MaxNbOfRobotShown</span> = <span class="m">10</span>
<span class="n">MinHitRobot</span> = <span class="m">1</span>
<span class="n">MaxNbOfPageShown</span> = <span class="m">10</span>
<span class="n">MinHitFile</span> = <span class="m">1</span>
<span class="n">MaxNbOfOsShown</span> = <span class="m">10</span>
<span class="n">MinHitOs</span> = <span class="m">1</span>
<span class="n">MaxNbOfBrowsersShown</span> = <span class="m">10</span>
<span class="n">MinHitBrowser</span> = <span class="m">1</span>
<span class="n">MaxNbOfScreenSizesShown</span> = <span class="m">5</span>
<span class="n">MinHitScreenSize</span> = <span class="m">1</span>
<span class="n">MaxNbOfWindowSizesShown</span> = <span class="m">5</span>
<span class="n">MinHitWindowSize</span> = <span class="m">1</span>
<span class="n">MaxNbOfRefererShown</span> = <span class="m">10</span>
<span class="n">MinHitRefer</span> = <span class="m">1</span>
<span class="n">MaxNbOfKeyphrasesShown</span> = <span class="m">10</span>
<span class="n">MinHitKeyphrase</span> = <span class="m">1</span>
<span class="n">MaxNbOfKeywordsShown</span> = <span class="m">10</span>
<span class="n">MinHitKeyword</span> = <span class="m">1</span>
<span class="n">MaxNbOfEMailsShown</span> = <span class="m">20</span>
<span class="n">MinHitEMail</span> = <span class="m">1</span>
<span class="n">FirstDayOfWeek</span>=<span class="m">1</span>
<span class="n">ShowFlagLinks</span>=<span class="s2">""</span>
<span class="n">ShowLinksOnUrl</span>=<span class="m">1</span>
<span class="n">UseHTTPSLinkForUrl</span>=<span class="s2">""</span>
<span class="n">MaxLengthOfShownURL</span>=<span class="m">64</span>
<span class="n">HTMLHeadSection</span>=<span class="s2">""</span>
<span class="n">HTMLEndSection</span>=<span class="s2">""</span>
<span class="n">BarWidth</span> = <span class="m">260</span>
<span class="n">BarHeight</span> = <span class="m">90</span>
<span class="n">StyleSheet</span>=<span class="s2">""</span>
<span class="n">color_Background</span>=<span class="s2">"FFFFFF"</span> <span class="c"># Background color for main page (Default = "FFFFFF")
</span><span class="n">color_TableBGTitle</span>=<span class="s2">"CCCCDD"</span> <span class="c"># Background color for table title (Default = "CCCCDD")
</span><span class="n">color_TableTitle</span>=<span class="s2">"000000"</span> <span class="c"># Table title font color (Default = "000000")
</span><span class="n">color_TableBG</span>=<span class="s2">"CCCCDD"</span> <span class="c"># Background color for table (Default = "CCCCDD")
</span><span class="n">color_TableRowTitle</span>=<span class="s2">"FFFFFF"</span> <span class="c"># Table row title font color (Default = "FFFFFF")
</span><span class="n">color_TableBGRowTitle</span>=<span class="s2">"ECECEC"</span> <span class="c"># Background color for row title (Default = "ECECEC")
</span><span class="n">color_TableBorder</span>=<span class="s2">"ECECEC"</span> <span class="c"># Table border color (Default = "ECECEC")
</span><span class="n">color_text</span>=<span class="s2">"000000"</span> <span class="c"># Color of text (Default = "000000")
</span><span class="n">color_textpercent</span>=<span class="s2">"606060"</span> <span class="c"># Color of text for percent values (Default = "606060")
</span><span class="n">color_titletext</span>=<span class="s2">"000000"</span> <span class="c"># Color of text title within colored Title Rows (Default = "000000")
</span><span class="n">color_weekend</span>=<span class="s2">"EAEAEA"</span> <span class="c"># Color for week-end days (Default = "EAEAEA")
</span><span class="n">color_link</span>=<span class="s2">"0011BB"</span> <span class="c"># Color of HTML links (Default = "0011BB")
</span><span class="n">color_hover</span>=<span class="s2">"605040"</span> <span class="c"># Color of HTML on-mouseover links (Default = "605040")
</span><span class="n">color_u</span>=<span class="s2">"FFAA66"</span> <span class="c"># Background color for number of unique visitors (Default = "FFAA66")
</span><span class="n">color_v</span>=<span class="s2">"F4F090"</span> <span class="c"># Background color for number of visites (Default = "F4F090")
</span><span class="n">color_p</span>=<span class="s2">"4477DD"</span> <span class="c"># Background color for number of pages (Default = "4477DD")
</span><span class="n">color_h</span>=<span class="s2">"66DDEE"</span> <span class="c"># Background color for number of hits (Default = "66DDEE")
</span><span class="n">color_k</span>=<span class="s2">"2EA495"</span> <span class="c"># Background color for number of bytes (Default = "2EA495")
</span><span class="n">color_s</span>=<span class="s2">"8888DD"</span> <span class="c"># Background color for number of search (Default = "8888DD")
</span><span class="n">color_e</span>=<span class="s2">"CEC2E8"</span> <span class="c"># Background color for number of entry pages (Default = "CEC2E8")
</span><span class="n">color_x</span>=<span class="s2">"C1B2E2"</span> <span class="c"># Background color for number of exit pages (Default = "C1B2E2")
#LoadPlugin="hashfiles"
#LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"
</span><span class="n">ExtraTrackedRowsLimit</span>=<span class="m">500</span>
<span class="n">ExtraSectionName1</span>=<span class="s2">"Hit cache status"</span>
<span class="n">ExtraSectionCodeFilter1</span>=<span class="s2">""</span>
<span class="n">ExtraSectionCondition1</span>=<span class="s2">""</span>
<span class="n">ExtraSectionFirstColumnTitle1</span>=<span class="s2">"Cache Status"</span>
<span class="n">ExtraSectionFirstColumnValues1</span>=<span class="s2">"extra3,(.*)"</span>
<span class="n">ExtraSectionFirstColumnFormat1</span>=<span class="s2">"%s"</span>
<span class="n">ExtraSectionStatTypes1</span>=<span class="n">H</span>
<span class="n">ExtraSectionAddAverageRow1</span>=<span class="m">0</span>
<span class="n">ExtraSectionAddSumRow1</span>=<span class="m">1</span>
<span class="n">MaxNbOfExtra1</span>=<span class="m">100</span>
<span class="n">MinHitExtra1</span>=<span class="m">1</span></code></pre></figure>
<p>Il est intéressant que le script gérant ces statistiques précalcule aussi les pages statiques HTML pour éviter des chargements trop long lors des consultations.</p>
<h2 id="installation-dun-serveur-master">Installation d’un serveur <em>master</em></h2>
<h3 id="materiel">Materiel</h3>
<p>Au niveau matériel, on recycle ce qu’on a. Il n’y a pas besoin de performances réelles sauf pour la base de données donc le choix est libre.</p>
<h3 id="packages-1">Packages</h3>
<p>On installe les packages principaux :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">aptitude -y install ldirectord ipvsadm bind9 ntp</span></code></pre></figure>
<p>Pour la partie backoffice et outils de cron développés en interne, je vous laisse le choix. Je ne peux pas vous fournir mon code pour le moment. Pour autant, une bonne partie de la magie se passe là concernant le déploiement automatique, la customisation par site et le monitoring.</p>
<h3 id="dns-4">DNS</h3>
<p>Le serveur DNS serveur de forwarders aux autres serveurs DNS. Lui utilisera ceux d’<a href="http://www.opendns.com/">OpenDNS</a> tant qu’à faire. Pour cela, on édite le fichier <em>/etc/bind/named.conf/options</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">options</span> {
<span class="n">directory</span> <span class="s2">"/var/cache/bind"</span>;
<span class="n">query</span>-<span class="n">source</span> <span class="n">address</span> * <span class="n">port</span> *;
<span class="n">forwarders</span> { <span class="m">208</span>.<span class="m">67</span>.<span class="m">222</span>.<span class="m">222</span>; <span class="m">208</span>.<span class="m">67</span>.<span class="m">220</span>.<span class="m">220</span>; };
<span class="n">auth</span>-<span class="n">nxdomain</span> <span class="n">no</span>;
<span class="n">listen</span>-<span class="n">on</span>-<span class="n">v6</span> { <span class="n">none</span>; };
<span class="n">listen</span>-<span class="n">on</span> { <span class="m">127</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">1</span>; <span class="m">10</span>.<span class="m">0</span>.<span class="n">A</span>.<span class="m">201</span>; };
<span class="n">allow</span>-<span class="n">transfer</span> { <span class="m">127</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">1</span>; <span class="m">10</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">0</span>/<span class="m">8</span>; };
<span class="n">allow</span>-<span class="n">query</span> { <span class="n">any</span>; };
<span class="n">allow</span>-<span class="n">recursion</span> { <span class="n">any</span>; };
<span class="n">version</span> <span class="n">none</span>;
<span class="n">max</span>-<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">clients</span>-<span class="n">per</span>-<span class="n">query</span> <span class="m">0</span>;
<span class="n">recursive</span>-<span class="n">clients</span> <span class="m">10000</span>;
<span class="n">minimal</span>-<span class="n">responses</span> <span class="n">yes</span> ;
};</code></pre></figure>
<p>Il servira aussi la zone DNS dédiée au CDN. On préconisera au client (même si l’on perd un peu en performance) de faire des CNAME vers ces enregistrement. Cela évitera d’avoir à le prévenir si l’on fait des changements. Si les changements ne sont pas prévu, que l’on gère les zones clientes en interne, ou que l’on préfère les performances, on se refusera de faire des CNAME.</p>
<h3 id="load-balancing">Load-balancing</h3>
<p>On édite le fichier <em>/etc/network/interfaces</em> et on rajoute à l’interface publique (<em>eth0</em> ici) :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">post-up ifconfig eth0:0 X.X.A.248/32
post-up ifconfig eth0:0 X.X.A.249/32</span></code></pre></figure>
<p>On utilise donc ldirector/ipvsadm. Dans <em>/etc/default/ldirectord</em> on définit le chemin de la configuration :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">CONFIG_FILE</span>=/<span class="n">etc</span>/<span class="n">ldirectord</span>.<span class="n">conf</span></code></pre></figure>
<p>Puis, on modifie le fichier correspondant :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">checktimeout</span>=<span class="m">2</span>
<span class="n">negotiatetimeout</span>=<span class="m">2</span>
<span class="n">checkinterval</span>=<span class="m">10</span>
<span class="n">autoreload</span>=<span class="n">yes</span>
<span class="n">logfile</span>=<span class="s2">"l0"</span>
<span class="n">quiescent</span>=<span class="n">yes</span>
<span class="n">emailalert</span>=<span class="n">support</span>@<span class="n">domaine</span>.<span class="n">tld</span>
<span class="n">virtual</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">248</span>:<span class="n">http</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">10</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">11</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">12</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">13</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">14</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">15</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">16</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">17</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">18</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">19</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">20</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">21</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">22</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">23</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">24</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">25</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">26</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">27</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">28</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">29</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">service</span>=<span class="n">http</span>
<span class="n">scheduler</span>=<span class="n">sed</span>
<span class="n">protocol</span>=<span class="n">connect</span>
<span class="n">persistent</span>=<span class="m">5</span>
<span class="n">virtual</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">249</span>:<span class="n">http</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">10</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">11</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">12</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">13</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">14</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">15</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">16</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">17</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">18</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">19</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">20</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">21</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">22</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">23</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">24</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">25</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">26</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">27</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">28</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">real</span>=<span class="n">X</span>.<span class="n">X</span>.<span class="n">A</span>.<span class="m">29</span>:<span class="n">http</span> <span class="n">gate</span>
<span class="n">service</span>=<span class="n">http</span>
<span class="n">scheduler</span>=<span class="n">sed</span>
<span class="n">protocol</span>=<span class="n">connect</span>
<span class="n">persistent</span>=<span class="m">5</span></code></pre></figure>
<p>Pour information sur cette configuration :</p>
<ul>
<li>gate permet le fonctionnement en DSR du load balancing</li>
<li>persistent définit la durée du sticky pour la session (ici 5 secondes)</li>
<li>autoreload déclenche le rechargement de la configuration à chaque modification du fichier</li>
<li>emailalert nous préviendra par email de tout changement d’état dans la VIP</li>
</ul>
<p>Plus qu’à lancer relancer l’interface réseau puis le service et voilà la VIP prête.</p>
<h3 id="ntp-4">NTP</h3>
<p>On veut que tous les serveurs soit synchro niveau temps. Autant avoir un serveur de référence à proximité. On a donc installé le package. Aucune modification de base à faire.</p>
Du vent dans mes molllets : un vent de jeunesse
2012-09-05T11:11:01+02:00
https://francois.aichelbaum.com/2012/09/05/du-vent-dans-mes-molllets-un-vent-de-jeunesse
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/du-vent-dans-mes-mollets-22-08-2012-10-g.jpg"><img class="alignleft size-thumbnail wp-image-6836" title="Du vent dans mes mollets" src="/assets/du-vent-dans-mes-mollets-22-08-2012-10-g-150x150.jpg" alt="Du vent dans mes mollets" width="150" height="150" /></a>Après une publication à succès aux formats livre et BD, Raphaële Moussafir nous offre une version cinéma de son oeuvre <em>Du vent dans mes mollets</em>. Elle nous y raconte donc les déboires de la jeune Rachel qui, du haut de ses neuf ans, vit bien des aventures après sa rencontre avec Valérie. Transportés dans les années 80 par son récit, nous transporte-t-elle également dans ses émotions ? Chronique d'une enfant des années 70/80.</p>
<p style="text-align: justify;"><!--more--></p>
<h2 style="text-align: justify;">La jeunesse et ses soucis</h2>
<p style="text-align: justify;">L'introduction animée, façon <a href="http://www.youtube.com/watch?v=i58qcYzFHCs">Alinéa</a>, nous raconte la naissance et les très jeunes années de la petite Rachel. On voit donc en accéléré toutes les tristesses qui l'ont traumatisée au point de dormir habillée et avec son cartable sur le dos. Bonne pour un tour chez le psy selon sa mère.</p>
<p style="text-align: center;"> [video]http://www.youtube.com/watch?v=ovPGdCoPmzc[/video]</p>
<p style="text-align: justify;">Arrivée à neuf ans, dans une nouvelle classe, elle rencontre donc l'<em>intrépide</em> Valérie. Fille d'une mère célibataire, celle-ci est prête pour les 400 coups dans lesquels elle embarque Rachel.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/large_603952.jpg"><img class="alignnone size-thumbnail wp-image-6848" title="Du vent dans mes mollets" src="/assets/large_603952-150x150.jpg" alt="Du vent dans mes mollets" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/DU-VENT-DANS-MES-MOLLETS_portrait_w858.jpg"><img class="alignnone size-thumbnail wp-image-6851" title="Du vent dans mes mollets" src="/assets/DU-VENT-DANS-MES-MOLLETS_portrait_w858-150x150.jpg" alt="Du vent dans mes mollets" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/du-vent-dans-mes-mollets-22-08-2012-19-g.jpg"><img class="alignnone size-thumbnail wp-image-6854" title="Du vent dans mes mollets" src="/assets/du-vent-dans-mes-mollets-22-08-2012-19-g-150x150.jpg" alt="Du vent dans mes mollets" width="150" height="150" /></a></p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/du_vent_dans_mes_mollets_2.jpg"><img class="alignnone size-thumbnail wp-image-6857" title="Du vent dans mes mollets" src="/assets/du_vent_dans_mes_mollets_2-150x150.jpg" alt="Du vent dans mes mollets" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/20148004.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx.jpg"><img class="alignnone size-thumbnail wp-image-6860" title="Du vent dans mes mollets" src="/assets/20148004.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx-150x150.jpg" alt="Du vent dans mes mollets" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/1748089_7_0a05_une-scenedu-film-francais-du-vent-dans-mes_733b037dd50fb5ee029d02558f8bd48c.jpg"><img class="alignnone size-thumbnail wp-image-6863" title="Du vent dans mes mollets" src="/assets/1748089_7_0a05_une-scenedu-film-francais-du-vent-dans-mes_733b037dd50fb5ee029d02558f8bd48c-150x150.jpg" alt="Du vent dans mes mollets" width="150" height="150" /></a></p>
<p style="text-align: justify;">On se fait donc transporté au début des années 80 (1981, la meilleure :-P) les larmes aux yeux tellement on rigole. C'est dans les petits détails que l'on reconnait les bons artisants dit le père. C'est dans les détails du décors, des scènes et du magnifique jeune d'acteurs (Agnès Jaoui mais aussi les deux jeunes gamines) que l'on admire et reconnaît le travail de qualité. Les cuisines kitch. Les tenues hautes en couleur. Les parents qui se parlent en franglais pour que la jeune tête blonde ne comprenne pas (selon eux).... Un moment quasi inoubliable.</p>
<p style="text-align: justify;">Mais, parce que je suis mauvais en râlerie, voici les (rares) points noirs relevés :</p>
<ul>
<li style="text-align: justify;">tellement de participants au film qu'on nous détaille même les employés de la cantine du tournage ou la marque de café pour le ravitaillement ; faut bien une durée minimale au générique</li>
<li style="text-align: justify;">tout est fait dans le détail des années 80 sauf ... la signalisation routière trop moderne ; penser aux cyclistes sur la route, c'est plus récent ...</li>
</ul>
<div style="text-align: justify;">Tout ceci n'enlève rien à la réussite du film qui mérite qu'on aille prendre sa place. Enfin un bon film français dans les règles de l'art et ca faisait (presque) longtemps qu'on en attendait.</div>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/09/VENT-DANS-MES-MOLLETS_vdef1-800x1064.jpg"><img class="alignnone size-large wp-image-6839 aligncenter" title="Du vent dans mes mollets" src="/assets/VENT-DANS-MES-MOLLETS_vdef1-800x1064-769x1024.jpg" alt="Du vent dans mes mollets" width="584" height="777" /></a></p>
Revue du web du 3 septembre 2012
2012-09-03T16:42:07+02:00
https://francois.aichelbaum.com/2012/09/03/revue-du-web-du-3-septembre-2012
<p>C’est lundi. C’est la pluie. C’est pas rose. C’est la faute à morose. Mais bon, il y a toujours de la musique pour nous ramener un peu de baaume au coeur. Ainsi il ira alors de la revue du web du jour. Au passage, allez faire un tour sur <a href="/tags/mmc">cette page</a> du blog pour écouter (et soutenir) des talents emmergeants.</p>
<h2 id="quentin-tarantino-dans-un-mashup-hommage">Quentin Tarantino dans un mashup hommage</h2>
<p>La semaine dernière, Kubrick a eu le droit à un hommage en vidéo. Cette fois, c’est au tour du déjanté Quentin Tarantino de passer à la moulinette d’un mashup en règle. Hommage de qualité. via <a href="http://golem13.fr/le-mashup-des-films-de-quentin-tarantino/">Golem13</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="le-web-et-ses-mashup">Le web et ses mashup</h2>
<p>A croire que c’est la mode de faire des mélanges. Cette fois ci, on nous mélange des bandes sons de films et chansons diverses pour un résultat sans équivoque. Du pur plaisir pour les oreilles. via <a href="http://golem13.fr/superbe-mashup-de-11-videos/">Golem13</a>.</p>
<iframe width="640" height="360" src="https://player.vimeo.com/video/ithacaaudio/walking-in-your-mind" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
<h2 id="il-nest-pas-bon-découter-la-musique-trop-fort">Il n’est pas bon d’écouter la musique trop fort</h2>
<p>Même quand il s’agît du magistral <em>Highway to Hell</em> d’AC-DC. C’est la dure leçon apprise par cette femme qui a eu la visite régulière de la police : quatre fois en 26h. Bon le titre est magnifique, on se le passe facilement en boucle en montant le son. Il faut croire que ce n’est pas du goût de tous. via <a href="http://golem13.fr/highway-to-hell-joyce-coffey/">Golem13</a> (oui encore !)</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="les-androïdes-jouent-il-de-la-musique-">Les androïdes jouent-il de la musique ?</h2>
<p>C’est une question que Philip K. Dick aurait pu se poser. On voit de plus en plus de présentation de robots aux activités diverses. Dans le cas présent, un robot à 4 bras qui se déchaîne sur sa batterie. Ok, c’est programmé. Ok, on y perd l’âme de l’artiste. Mais le résultat est là. Ca ne vaut Franck Beard des ZZ-Top qui se défonce à la batterie du haut de ses 63 ans dans de longs solos mémorables. via <a href="http://www.journaldugeek.com/2012/09/03/stickboy-robot-batteur-4-bras/">JdG</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Revue du web du 31 août 2012
2012-08-31T12:19:10+02:00
https://francois.aichelbaum.com/2012/08/31/revue-du-web-du-31-aout-2012
<p>C’est Trolldi. Une semaine sans billet c’est long alors une bonne revue du web pour se détendre et pour compenser. Bon surf !</p>
<h2 id="beer-chase--il-y-a-des-priorités-dans-la-vie">Beer chase : il y a des priorités dans la vie</h2>
<p>Et dans le cas présent, les voleurs préfèrent la bière à l’argent. La bière <em>Carlton Draught</em> s’offre une pub kitchissime avec un bon <em>feeling</em> des années 80 avec une course poursuite entre la police et des voyous. C’est sûrement de la <em>pisse</em> comme diraient certains mais c’est vendeur.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="batman-au-pays-des-tigre--dragon">Batman au pays des Tigre & Dragon</h2>
<p>Cartoon Network présente régulièrement, au travers du DC Nations, des courts métrages issue de l’univers de DC. Une vidéo qui fait le tour du net est celle du mashup entre Batman (accompagné de Catwoman et Bane) et la Chine médiévale. Un régal.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="le-web-le-cloud-et-les-américains">Le web, le cloud et les américains</h2>
<p>On savait les américains légèrement incultes et limités dans leur compréhension du monde mais là je crois qu’il y a une absence totale de capacité d’abstraction. L’information est remontée par le JdG dans <a href="http://www.journaldugeek.com/2012/08/30/cloud-computing-certains-americains-pensent-a-un-vrai-nuage/">un article d’hier</a>. Seuls 16% des américains savent ce qu’est le cloud. Une personne sur deux pensent que la météo influe sur le service. Quand on vous dit que notre métier est du maraboutage.</p>
<h2 id="je-vous-mets-un-petit-bout-de-cervelle-avec-ca-">Je vous mets un petit bout de cervelle avec ca ?</h2>
<p>Beaucoup foncent au <a href="http://www.lecamionquifume.com/">Camion qui fume</a> en ce moment. Aux US, c’est une pratique très répandu au point qu’il faut avoir de l’imagination pour se démarquer. <a href="http://golem13.fr/the-gory-gourmet-food-truck/">The Gory Gourmet</a> vous proposer donc la version Zombies. Comme une odeur de vache folle. Why not ?</p>
<h2 id="kubrick-nest-pas-cubique">Kubrick n’est pas cubique</h2>
<p>Bon elle était facile celle-là. Kubrick est un maître du cinéma et de la perspective qu’il utilise à foison dans ses films. Golem13 nous présente un petit mashup de ses films avec la bande son (envoutante et magnifique) de Requiem for a Dream. Petit hommage en soi au maître.</p>
<iframe width="640" height="360" src="https://player.vimeo.com/video/48425421" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
Go on : retour de Matthew Perry encore plus speed
2012-08-25T21:11:33+02:00
https://francois.aichelbaum.com/2012/08/25/go-on-retour-de-matthew-perry-encore-plus-speed
<p><img src="/assets/Go-On-e1344553990948-150x150.jpg" alt="Go on" />{.left} Matthew Perry, le Chandler Bing de <a href="https://www.youtube.com/watch?v=Kj1zBmJE_64">Friends</a>, revient dans une nouvelle sitcom après l’échec de <a href="https://www.youtube.com/watch?v=nCmPPEs6wN4">Mr Sunshine</a>, son projet personnel abandonné par ABC. Traits tirés, poids perdus, le comique de service est-il de retour pour le meilleur ou pour le pire ? En tout cas sa dynamique réclame qu’on le suive. <em>Go on</em> sera diffusée sur NBC à partir de septembre mais son pilote a déjà été diffusé par le network américain.</p>
<h2 id="matthew-perry-sous-crack">Matthew Perry sous crack</h2>
<p>Autant son projet personnel était dynamique, autant il a été quelque peu mal mené et surtout mal vendu par ABC. Pour autant, il ne s’est pas laissé abattu et a rempilé pour un nouveau projet proposé par Scott Silveri.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>J’ai pu voir le pilote. L’acteur se montre fatigué mais pour autant n’a pas perdu de son <em>speed</em> et de son décallage. Animateur radio mis au repos par sa direction suite au décès de sa femme, on lui demande de suivre une thérapie. Le groupe d’anonyme qui lui est affecté travaille sur les “changements de vie”. Entre les difficultés d’intégration, la perte d’un proche, les ennuis de santé, les phobies, … chaque personne du groupe à une multitude de problèmes sur lesquels il doit travailler. Tout un programme.</p>
<p>La thérapiste, aux faux airs de Courteney Cox, a du mal à canaliser l’énergie de Matthew Perry qui ne demande qu’une chose : partager son énergie et maquiller sa propre douleur. Une morale en ressort : il y a toujours pire. Donc, autant regarder vers le haut.
Une série à découvrir en septembre.</p>
<p><img alt="" src="/assets/182570_3402590706773_1150134598_n.jpg" title="" srcset=" /assets/182570_3402590706773_1150134598_n.jpg 400w" /></p>
Vos enfants 2.0
2012-08-25T14:04:24+02:00
https://francois.aichelbaum.com/2012/08/25/vos-enfants-2-0
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-book"></i> What?</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#les-enfants-et-les-bonnes-pratiques-à-leur-inculquée" id="markdown-toc-les-enfants-et-les-bonnes-pratiques-à-leur-inculquée">Les enfants et les bonnes pratiques à leur inculquée</a></li>
<li><a href="#les-enfants-un-ordinateur-et-internet" id="markdown-toc-les-enfants-un-ordinateur-et-internet">Les enfants, un ordinateur et internet</a></li>
<li><a href="#limiter-le-temps-dutilisation" id="markdown-toc-limiter-le-temps-dutilisation">Limiter le temps d’utilisation</a></li>
<li><a href="#filtrage-du-web" id="markdown-toc-filtrage-du-web">Filtrage du web</a></li>
<li><a href="#petit-cadeau-pour-mon-neveu" id="markdown-toc-petit-cadeau-pour-mon-neveu">Petit cadeau pour mon neveu</a></li>
</ul>
</nav>
</aside>
<p>Je vais faire mon vieux, mais à mon époque, lorsque l’on cherchait des infos, on sortait et finissait à la bibliothèque. Aujourd’hui, c’est de plus en plus rare de le voir. L’information (qu’il faut apprendre à confirmer) est disponible facilement via internet. Les enfants d’aujourd’hui sont connectés de plus en plus jeune. Et lorsque je vois les débordements qu’il y a (pédo-pornographie, facilité d’accès à des contenus sensibles, …) et la dérive qui en découle dans le comportement de nos enfants, j’ai peur. Du coup, vu que l’un de mes neveux (12 ans) a besoin d’un ordinateur, tant qu’à faire, autant le lui préparer, le sécuriser et lui apprendre à s’en servir. Je m’intéresse dans l’article présent à la sécurisation du PC et surtout du surf de cette petite tête blonde. Je suppose que vous lui avez déjà installer le nécessaire pour le loisir et les études.</p>
<h2 id="les-enfants-et-les-bonnes-pratiques-à-leur-inculquée">Les enfants et les bonnes pratiques à leur inculquée</h2>
<p>Déjà, on ne va pas céder <em>totalement</em> à la facilité. Totalement, car autant je ne lui mettrais pas un Windows, autant il aura le droit à une Ubuntu 12.04. Par contre, cela n’empêche pas d’y faire un ménage salvateur (liste non exhaustive) :</p>
<ul>
<li>Thunderbird, Evolution</li>
<li>Empathy, Pidgin</li>
<li>les accès au bureau à distance</li>
</ul>
<p>Ensuite, on pense à installer, même si on n’est pas <em>trolldi</em>, un anti-virus. Ce n’est pas le seul ordinateur de la maison, et il risque aussi d’échanger avec l’extérieur (famille, amis…). J’ai choisi pour le coup <em>ClamAV</em>.</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">sudo apt-get install clamav clamtk</span></code></pre></figure>
<p>On rajoutera une crontab pour mettre à jour régulièrement la base et pour scanner la machine :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="m">0</span> <span class="m">18</span> * * * /<span class="n">usr</span>/<span class="n">bin</span>/<span class="n">freshclam</span> --<span class="n">quiet</span>
<span class="m">10</span> <span class="m">18</span> * * * /<span class="n">us</span>/<span class="n">bin</span>/<span class="n">rclamscan</span> -<span class="n">r</span> /</code></pre></figure>
<p>Au besoin, je me connecterais pour le faire à la main.
Niveau firewall, j’install ufw pour le moment mais je verrais plus tard pour en faire la configuration selon les besoins, vu qu’il y a déjà un pare-feu dans la maison.
On pensera à se garder un compte d’administration sur la machine et à restreindre les droits d’utilisation de l’enfant en lui interdisant tout ce qui est tâche d’administration. Ca se passe simplement dans <em>Users and groups</em>.</p>
<h2 id="les-enfants-un-ordinateur-et-internet">Les enfants, un ordinateur et internet</h2>
<p>Personnellement, je pense qu’à 12 ans, on ne sait pas ce qui est bon pour nous sur internet et qu’on a besoin d’une supervision compétente. Du coup, <em>exit</em> les emails pour le moment. Au pire, on lui donnera un compte dont on gardera le mot de passe pour pouvoir surveiller. Idem pour tout ce qui est <em>chat</em>. De plus, ils viendront bien vite à y passer trop de temps donc autant encore le limiter comme on le fait pour la TV ou les jeux vidéos (si-si, il faut limiter).</p>
<h2 id="limiter-le-temps-dutilisation">Limiter le temps d’utilisation</h2>
<p>Nanny n’étant plus suivi, je me repporte sur TimeKpr (en me basant sur la doc <a href="http://doc.ubuntu-fr.org/timekpr">Ubuntu</a>). Au moment de l’écriture de ce billet, la version pour Precise n’est toujours pas disponible donc on suit la version pour Oneiric en ajustant.</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">sudo add-apt-repository ppa:timekpr-maintainers/ppa
sudo sed -i.bak 's/precise/oneiric/' /etc/apt/sources.list.d/timekpr-maintainers-ppa-precise.list
sudo rm /etc/apt/sources.list.d/timekpr-maintainers-ppa-precise.list.bak
sudo aptitude update
sudo aptitude install timekpr
</span><span class="gp">sudo echo "account required pam_time.so" ></span><span class="o">></span> /etc/pam.d/lightdm
<span class="gp">sudo sed -i.bak '/^OnlyShowIn=/s|$</span>|Unity<span class="p">;</span>|<span class="s1">' /etc/xdg/autostart/timekpr-client.desktop
</span><span class="go">sudo rm /etc/xdg/autostart/timekpr-client.desktop.bak</span></code></pre></figure>
<p>Ensuite, le lancement se fait simplement :</p>
<ul>
<li>soit par le menu <em>System -> Administration -> TimeKpr Control Panel</em></li>
<li>soit sous Unity, simplement en tappant TimeKpr dans la recherche d’application</li>
</ul>
<p>L’interface étant assez simple, je ne vais pas rentrer dans le détail. Par contre, il semble que certains bugs soient toujours d’actualité. Toujours selon la doc :</p>
<ol>
<li>Irrespect des limites de temps
On modifie le fichier <em>/usr/share/python-support/timekpr/timekpr.py</em> pour faire deux modifications. On remplace à la ligne 124</li>
</ol>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">u</span> <span class="o">=</span> <span class="n">getcmdoutput</span><span class="p">(</span><span class="s">'users'</span><span class="p">)</span></code></pre></figure>
<p>par</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">u</span> <span class="o">=</span> <span class="n">getcmdoutput</span><span class="p">(</span><span class="s">'ps -e -o ruser'</span><span class="p">)</span></code></pre></figure>
<p>On fait de même à la ligne 207 en remplaçant :</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="k">if</span> <span class="ow">not</span> <span class="n">isnotified</span><span class="p">(</span><span class="n">username</span><span class="p">):</span></code></pre></figure>
<p>par</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="k">if</span> <span class="n">isfile</span><span class="p">(</span><span class="n">conffile</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">isnotified</span><span class="p">(</span><span class="n">username</span><span class="p">):</span></code></pre></figure>
<ol>
<li>Pas d’affichage du temps restant
On modifie le fichier</li>
</ol>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">/usr/share/python-support/timekpr/timekpr-client.py</span></code></pre></figure>
<p>en ajoutant après la ligne 42 :</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="bp">self</span><span class="p">.</span><span class="n">lastNotified</span> <span class="o">=</span> <span class="n">datetime</span><span class="p">.</span><span class="n">datetime</span><span class="p">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></code></pre></figure>
<p>On a donc installé le strict nécessaire au niveau utilisation et on s’est assuré de limiter l’usage de l’ordinateur. Il est donc maintenant temps de filtrer le grand n’importe quoi qu’est internet.</p>
<h2 id="filtrage-du-web">Filtrage du web</h2>
<p>On va le faire avec une combinaison Squid/DansGuardian. Pensez à modifier les IP.</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">sudo aptitiude install squid dansguardian</span></code></pre></figure>
<p><em>Squid</em> ne sera utilisé que via le* localhost* car c’est* DansGuardian* qui sera considéré comme proxy dans les configuration. Pour DansGuardian, il faudra commencer par commenter la ligne UNCONFIGURED dans <em>/etc/dansguardian/dansguardian.conf</em>. On définit aussi le langage pour les erreurs.</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">language</span> = <span class="s1">'french'</span></code></pre></figure>
<p>Vu qu’on ne veut pas que l’enfant puisse facilement désactiver les paramètres du proxy sur Firefox, on les écrit en dur dans la configuration de Firefox <em>/usr/lib/firefox/firefox.cfg</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">lockPref</span>(<span class="s2">"network.proxy.http"</span>,<span class="s2">"10.202.0.1"</span>);
<span class="n">lockPref</span>(<span class="s2">"network.proxy.http_port"</span>,<span class="m">8080</span>);
<span class="n">lockPref</span>(<span class="s2">"network.proxy.type"</span>,<span class="m">1</span>);
<span class="n">lockPref</span>(<span class="s2">"network.proxy.no_proxies_on"</span>,<span class="s2">"localhost,127.0.0.1"</span>);
<span class="n">lockPref</span>(<span class="s2">"network.proxy.share_proxy_settings"</span>, <span class="n">true</span>);</code></pre></figure>
<p>Il faut ensuite activer le vérouillage dans le fichier <em>/etc/firefox/syspref.js</em> :</p>
<figure class="highlight"><pre><code class="language-conf" data-lang="conf"><span class="n">pref</span>(<span class="s2">"general.config.obscure_value"</span>, <span class="m">0</span>);
<span class="n">pref</span>(<span class="s2">"general.config.filename"</span>, <span class="s2">"firefox.cfg"</span>);</code></pre></figure>
<h2 id="petit-cadeau-pour-mon-neveu">Petit cadeau pour mon neveu</h2>
<p>Il est fan des jeux de type RPG et veut s’en faire. Je ne vais pas lui mettre RPG Maker qui est pour Windows seulement, mais par contre un équivalent sous Linux, avec un petit jeu bonus. Ca sera toujours ça en attendant qu’il apprenne à coder.</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="go">wget http://hamsterrepublic.com/ohrrpgce/archive/debian/ohrrpgce_2012.07.31.alectormancy+2-5284_i386.deb
wget http://hamsterrepublic.com/ohrrpgce/archive/debian/vikings-of-midgard_2012.07.31.alectormancy+2-5284_i386.deb
aptitude install libncurses5\:i386 libsdl-mixer1.2\:i386 libsdl1.2debian\:i386 libx11-6\:i386 libxext6\:i386 libxpm4\:i386 libxrandr2\:i386 libxrender1\:i386
dpkg -i ohrrpgce*.deb vikings*.deb</span></code></pre></figure>
Revue du web du 24 août 2012
2012-08-24T13:23:20+02:00
https://francois.aichelbaum.com/2012/08/24/revue-du-web-du-24-aout-2012
<p>C’est vendredi, c’est ravioli … Non c’est pas ça ! C’est ravioli, c’est trolldi … presque ! C’est vendredi, c’est trolldi ! Revue du web pour se faire plaisir.</p>
<h2 id="les-jeux-quon-a-joué-mentalement">Les jeux qu’on a joué mentalement</h2>
<p>Gamins, que ca soit dans la rue, la cour, le jardin, en voiture, on s’est tous imaginé des histoires ou des jeux auxquels on jouait. <a href="http://www.journalgraphic.com/2012/08/23/games-we-play-jeux-inconscients-joue/">Journal du Graphique</a> nous présente une vidéo de <a href="https://www.youtube.com/user/followthefoot">Followthefoot</a> assez sympa qui les remet en image. Je vous conseille au passage d’explorer sa chaîne Youtube, elle vaut vraiment le détour.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="le-web-redécouvre-les-gif-animés">Le Web redécouvre les GIF animés</h2>
<p>Le micro-blogging photo de Tumblr : vous connaissez. Mais certains semblent (re)découvrir les GIF animés et les considèrent comme une révolution. Pourquoi pas. Chacun y va de son train d’images. Même les community manager. Parfois, c’est drôle, comme celui d’<a href="http://500000fans.tumblr.com/">Orange</a>. Chez Orange, c’est trolldi tous les jours.</p>
<h2 id="fan-de-modélisme-et-des-avengers-cest-par-ici">Fan de modélisme et des Avengers, c’est par ici</h2>
<p>Certains occupent leur vendredi différemment. <a href="http://www.journaldugeek.com/2012/08/24/heliporteur-s-h-i-e-l-d-aeromodelisme-fan/">Journal du Geek</a> nous présente un fan des deux ayant reproduit l’héliporteur du film. Par contre, dans <a href="https://www.youtube.com/watch?v=11Mide2KXow">Captain Sky</a>, il y en avait un paquet à la fin. D’ailleurs à croire qu’il faut être borgne pour commander ces machines.</p>
<h2 id="on-se-demandait-comment-le-sol-de-letoile-noire-pouvait-être-aussi-brillant">On se demandait comment le sol de l’Etoile Noire pouvait être aussi brillant</h2>
<p>Et bien avec un nettoyage régulier et un petit passage de cape … pardon, de serpillère. Via <a href="https://twitter.com/JeremyBenmoussa">@jeremybenmoussa</a> sur Twitter.</p>
Krung Thep : un Thaïlandais à Belleville
2012-08-24T10:00:10+02:00
https://francois.aichelbaum.com/2012/08/24/krung-thep-un-thailandais-a-belleville
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/765-krung-thep.jpg"><img class="alignleft size-thumbnail wp-image-6644" title="Krung Thep" src="/assets/765-krung-thep-150x150.jpg" alt="Krung Thep" width="150" height="150" /></a>Bon ok, c'est facile, il y a trois quartiers asiatiques à Paris : rue au Maire, dans le III<sup>e</sup> arrondissement, le Triangle de Choisy, dans le XIII<sup>e</sup>, Belleville, à cheval sur le XIX<sup>e</sup> et le XX<sup>e</sup>. Pour autant, la majorité des restaurants proposés sont des Chinois ou des Japonais (en style de nourriture, je parle). Pour le coup, j'ai pu testé un Thaïlandais : <a href="https://maps.google.fr/maps?q=Krung+Thep&ie=UTF-8&ei=Bi43UMvdPMqQ0AWi1IGwDg&ved=0CAsQ_AUoAg">Krung Thep</a>. Dépaysement ? Goût ? Voyagons et découvrons.</p>
<p style="text-align: justify;"><!--more--></p>
<h2 style="text-align: justify;">Un Thaïlandais mitigé</h2>
<p style="text-align: justify;">La devanture s'apparente à n'importe quel restaurant asiatique du quartier. Par contre, contrairement aux cantines chinoises de la rue de Belleville, une fois la porte passée, on se retrouve <em>presque</em> en Thaïlande.</p>
<p style="text-align: justify;">Alors que bien des restaurants Thaïlandais se contente de chaises et tables à l'occidentale, ici, on vous propose une mise à table plus proche de la thaïlandaise. Proche car on ne vous l'impose pas. Alors que l'on devrait s'assoir en tailleur et s'accouder à une table basse, la table est réhaussée et les coussins vous offrent le choix entre une position occidentale ou l'attendu tailleur. Il faudra cependant un minimum de souplesse pour s'installer : on n'y emmènera pas nos <em>vieux</em>. L'ameublement et la décoration sont là pour vous orienter vers un esprit du pays bien que le batiment et le quartier se rappellent vite à vous. A noter aussi l'intégralité du personnel féminin. Après tout, la thaïlande a une culture matriarcale. Pour autant, le service peut paraître assez froid (étonnant en comparaison au <a href="http://francois.aichelbaum.com/restaurant-du-tibet-permathang-depaysement-et-chaleur/">Tibétain</a>).</p>
<p style="text-align: justify;">Le menu à rallonge m'inspire peu ou trop. En effet, trop de choix tue le choix. Mais surtout, trop de choix signifie pas de spécialisation et un à peu près en tout. Et c'est bien là le cas. Après un choix compliqué pour varier les saveurs et tester un maximum de choses, on s'affaire à goûter. Et là, rien d'exceptionnel. C'est bon, mais sans plus.</p>
<p style="text-align: justify;">Pour avoir testé rapidement par le passé d'autres restaurants Thaïlandais, je peux vous le dire, celui-ci n'a rien d'exceptionnel. Il ne restera pas dans les annales. Mais le cadre et le niveau correct de la nourriture vous offriront une excellente alternative aux cantines chinoises de Belleville si vous êtes dans le quartier.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/krung-thep-belleville-restaurant.jpg"><img class="alignnone size-thumbnail wp-image-6647" title="Krung Thep" src="/assets/krung-thep-belleville-restaurant-150x150.jpg" alt="Krung Thep" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/Krung-Thep.jpg"><img title="Krung Thep" src="/assets/Krung-Thep-150x150.jpg" alt="Krung Thep" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/1102_restaurantkrungthep01_1264933812.jpg"><img title="Krung Thep" src="/assets/1102_restaurantkrungthep01_1264933812-150x150.jpg" alt="Krung Thep" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/1102_restaurantkrungthep01_1264933812.jpg"><br />
</a></p>
Dupliquer une machine sous Linux en ssh (à la bourrin)
2012-08-23T19:48:17+02:00
https://francois.aichelbaum.com/2012/08/23/dupliquer-une-machine-sous-linux-n-ssh-a-la-bourrin
<p style="text-align: justify;">Pour des besoins divers, j'ai besoin de dupliquer un grand nombre de machines. Dans le cas de ces derniers jours, je dois faire du P2V sur une plateforme d'une 50e de machine. Le P2V, c'est transformer une machine physique en machine virtuelle (pour le coup sur VMWare). La plateforme étant en production et le calendrier définissant une migration s'étalant sur un mois, je duplique tout maintenant, fait la bonne configuration et ferait juste un offset des sites web (scripts PHP, images, bases SQL) au moment de la bascule avec les DNS. Petit décryptage de comment se simplifier la vie. Le but est d'être rapide et efficace et d'avoir peut de boulot à refaire.</p>
<p style="text-align: justify;"><!--more--></p>
<h2 style="text-align: justify;">1 - Avant propos</h2>
<p style="text-align: justify;">Selon vos besoins et le nombre de machines certaines étapes peuvent être supprimées. Dans mon cas, on ouvrira un tunnel SSH via une machine qui sert de passerelle pour le transfert.</p>
<p style="text-align: justify;">Dans la suite on nommera :</p>
<ul>
<li><span style="color: #3366ff;">bridge</span> : la machine qui sert pour le tunnel SSH</li>
<li><span style="color: #3366ff;">phy1</span> ... <span style="color: #3366ff;">phy9</span> : les machines physiques 1 à 9</li>
<li style="text-align: justify;"><span style="color: #3366ff;">vm1</span> ... <span style="color: #3366ff;">vm9</span> : les <span style="color: #3366ff;">vm1</span> à <span style="color: #3366ff;">vm9</span> qu'on aura préparé sur notre infra (VMWare, Xen, Proxmox ...) avec les bonnes spécifications matériel (on gardera une cohérence avec les machines physiques au niveau des numéros dans la suite)</li>
<li style="text-align: justify;"><span style="color: #3366ff;">login</span> : le login qu'on utilise non <em>root</em> qu'on utilise par défaut sur les serveurs</li>
</ul>
<p style="text-align: justify;">On suppose que notre machine perso est sur une <a href="http://www.debian.org/">Debian</a>-like pour install des packages manquant. On suppose également que les configurations serveurs sont homogènes sur le parc de serveurs physiques (sinon rapprenez vos bases).</p>
<h2 style="text-align: justify;">2 - Préparer sur les machines physiques (pré-configuration SSH)</h2>
<p style="text-align: justify;">Vu qu'on a une plateforme existente, on suppose qu'on a les moyens de s'y connecter facilement via une patte réseau de management (clées SSH + sudo par ex).</p>
<p style="text-align: justify;">Sur notre machine on installera le package cssh.</p>
<pre style="text-align: justify;">$ sudo aptitude install clusterssh</pre>
<p style="text-align: justify;">Ce package permet de lancer plusieurs sessions SSH via une seule ligne de commande et d'y reproduire les mêmes commandes sur chaque session.</p>
<p style="text-align: justify;">On se génère aussi une clé SSH (type RSA) :</p>
<pre style="text-align: justify;">$ ssh-keygen -t rsa</pre>
<p style="text-align: justify;">On met ensuite la clé <em>.ssh/id_rsa.pub</em> disponible en HTTP pour la plateforme physique (et pas pour la Terre entière !). Pensez à la supprimer après la duplication.</p>
<p style="text-align: justify;">On se connecte alors à chaque machine et on y exécute les commandes suivantes.</p>
<pre style="text-align: justify;">$ cssh <span style="color: #3366ff;">phy1 phy2 phy2</span> ... <span style="color: #3366ff;">phy9</span>
$ sudo su -</pre>
<p style="text-align: justify;">On aura besoin de l'accès root pour le transfert, donc on se l'autorise temporairement en SSH.</p>
<pre style="text-align: justify;"># mkdir -p .ssh
# wget http://mon-serveur-perso/macle.pub -O - >> .ssh/authorized_keys</pre>
<p style="text-align: justify;">Ne cherchez ma clé publique, elle n'est pas sur le net.</p>
<p style="text-align: justify;">Choisissez ensuite votre éditer favori (<em>vim</em>, <em>nano</em>, <em>ed</em>...) pour éditer le fichier <em>/etc/ssh/sshd_config</em> :</p>
<pre><span style="background-color: #ffcc99; color: #000000;"><strong>- </strong>PermitRootLogin no</span>
<span style="background-color: #ccffcc; color: #000000;"><strong>+</strong> PermitRootLogin yes</span>
<span style="color: #000000;"><span style="background-color: #ccffcc;"><strong>+</strong> AllowUsers root@<span style="color: #3366ff;">bridge</span> <span style="color: #3366ff;">login</span>@* </span><span style="background-color: #ffcc99;"><strong>-</strong> RSAAuthentication no</span></span>
<span style="background-color: #ffcc99; color: #000000;"><strong>-</strong> PubkeyAuthentication no</span>
<span style="background-color: #ffcc99; color: #000000;"><strong>-</strong> #AuthorizedKeysFile %h/.ssh/authorized_keys</span>
<span style="background-color: #ccffcc; color: #000000;"><strong>+</strong> RSAAuthentication yes</span>
<span style="background-color: #ccffcc; color: #000000;"><strong>+</strong> PubkeyAuthentication yes</span>
<span style="background-color: #ccffcc; color: #000000;"><strong>+</strong> AuthorizedKeysFile %h/.ssh/authorized_keys </span></pre>
<p style="text-align: justify;">Si vos équipes de dev se connectent aussi en SSH, pensez à les rajouter dans les <em>AllowUsers</em>. On peut alors relancer le service <em>sshd</em> :</p>
<pre style="text-align: justify;"># /etc/init.d/ssh restart</pre>
<p style="text-align: justify;">On pense à s'assurer que le package rsync est installé.</p>
<pre style="text-align: justify;"># aptitude install rsync</pre>
<p style="text-align: justify;">On prendra le temps d'analyser la volumétrie des dossiers pour ne pas copier ce qui n'est pas vraiment nécessaire. Donc mon cas, je cherche à ne pas trop me casser la tête, donc je ne transfert pas ce qui est de type backup et aussi les montages NFS (que j'ai armonisés en les montant en sous-dossiers de <em>/mnt/nfs</em>).</p>
<p style="text-align: justify;">On peut alors se délogguer de ces machines.</p>
<h2 style="text-align: justify;">3 - Lancer la synchro en rsync via un tunnel SSH</h2>
<p style="text-align: justify;">Afin d'éviter de trop saturer les liens réseaux (vu que l'ancienne plateforme physique reste en production le temps du transfert), on évitera de faire trop de duplication en simultané.</p>
<p style="text-align: justify;">On démarre donc la <span style="color: #3366ff;">vm1</span>, qui remplacera <span style="color: #3366ff;">phy1</span> et que l'on aura préalablement bien provisionné. La machine sera démarrée sur un liveCD (personnellement, je démarre sur une ISO <a href="http://www.gentoo.org/">Gentoo</a>). Une fois l'OS disponible, on se lance un terminal si l'on est sur l'interface graphique. Ensuite, tout se fera de la même manière, en ligne de commande. Je suppose que vous connaissez la configuration IP qui va bien pour <span style="color: #3366ff;">vm1</span>.</p>
<pre style="text-align: justify;">$ sudo ifconfig eth0 <em>IPVM1/CIDR</em>
$ sudo route add default gw <em>IPGW</em></pre>
<p style="text-align: justify;">On partitionne le disque comme il faut. Là encore j'ai une préférence pour le vieillissant <em>cfdisk</em>. Ensuite formatage des partitions. Puis montage. On supposera que l'on a fait très basique avec juste un<em> /</em> accompagné d'un <em>/boot</em> et d'un <em>swap</em> pour le partitionnement du disque <em>/dev/sda</em> (<span style="text-decoration: underline;"><strong>ADAPTEZ !</strong></span>).</p>
<pre style="text-align: justify;">$ sudo mount /dev/sda3 /mnt/gentoo
$ sudo mkdir /mnt/gentoo/boot
$ sudo mount /dev/sda1 /mnt/gentoo/boot
$ mkdir .ssh
$ echo "Host <span style="color: #3366ff;">phy1</span>" >> .ssh/config
$ echo " ProxyCommand nohup ssh <span style="color: #3366ff;">bridge</span> nc -w1 %h %p" >> .ssh/config
$ wget http://mon-serveur-perso/macle.priv -O .ssh/id_rsa</pre>
<p style="text-align: justify;">Encore une fois, inutile de chercher ma clé privée ...</p>
<p style="text-align: justify;">On peut enfin s'occuper du transfert. Certains dossiers sont donc à éviter. A vous d'en rajouter.</p>
<pre style="text-align: justify;">$ sudo rsync -av --progress root@<span style="color: #3366ff;">phy1</span>:/* /mnt/gentoo/ --exclude="/dev/*" --exclude="/sys/*" --exclude="/proc/*" --exclude="/mnt/nfs/*/*"</pre>
<p style="text-align: justify;">Maintenant que c'est fini, occupons-nous de la configuration finale.</p>
<pre style="text-align: justify;">$ sudo mount -t proc none /mnt/gentoo/proc
$ sudo mount -t sysfs none /mnt/gentoo/sys
$ sudo cp -a /dev/* /mnt/gentoo/dev
$ sudo mount -o bind /dev /mnt/gentoo/dev
$ sudo chroot /mnt/gentoo /bin/bash</pre>
<p style="text-align: justify;">Vu qu'on a supposé être sur une Debian, on modifiera les fichiers suivant comme il va bien :</p>
<ul>
<li>/etc/fstab</li>
<li>/etc/hosts</li>
<li>/etc/networks</li>
<li>/etc/network/interfaces</li>
<li>/etc/ssh/sshd_config (pour supprimer les modifications faites au point 2)</li>
<li>/etc/udev/rules.d/70-persistent-net.rules ou z25-persistent-net.rules (ou du genre, selon la version, qui est à vider de son contenu)</li>
</ul>
<p style="text-align: justify;">Je vous laisse adapter aux applications installées sur la machine. De la même manière, on purge la clé SSH rajoutée pour le transfert. Ensuite il faut mettre à jour <em>grub</em>.</p>
<pre># update-grub
# /usr/sbin/grub-install /dev/sda</pre>
<p style="text-align: justify;">Sur certaines vieilles Debian, il m'est arrivé de devoir modifier le fichier <em>/boot/grub/menu.lst</em> et <em>/etc/mtab</em> à la main avant de lancer <em>grub-install</em>.</p>
<p>Une fois fini, il vous suffit de redémarrer la VM sans l'ISO de Gentoo et voilà!</p>
<p>A reproduire pour chaque migration P2V.</p>
<h2>4 - Nettoyage</h2>
<p style="text-align: justify;">Une fois les machines dupliquées (ou à chaque), on pense à faire un rollback des modifications du point 2 en supprimant la clé SSH et en remodifiant la configuration de SSH.</p>
Revue du web du 23 août 2012
2012-08-23T14:58:47+02:00
https://francois.aichelbaum.com/2012/08/23/revue-du-web-du-23-aout-2012
<p style="text-align: justify;">Il fait beau. Les oiseaux chantent. Les navets sont au cinéma. L'estomac se creuse. Les méninges se réveilles sur le web. Petite revue du jour ...</p>
<p><!--more--></p>
<h2>Jack Bauer se recycle dans la patisserie</h2>
<p style="text-align: justify;">La vidéo a fait le tour du web hier et j'ai pu en profiter au cinéma pendant les bandes annonces aussi. Jack Bauer veut faire de la patisserie et avoir une boutique en ligne. Donc il se trouve un geek pour le faire mais surtout, le nouvel <em>ultrabook</em> Acer.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=5zemXwxg8Og[/video]</p>
<h2 style="text-align: justify;">Le web montre le meilleur ... de nos photographes</h2>
<p style="text-align: justify;">Il n'est pas question de Mme Michu et de ses photos ou de mon blog et mes ridicules clichés de promenades mais simplement d'une collecte de photos pro ... bonnes pour la poubelle. Certains photographes devraient se demander pourquoi il y a des écoles de photographies. <a href="http://youarenotaphotographer.com/">Vous n'êtes pas un photographe</a>.</p>
<h2 style="text-align: justify;">Un webdesigner propose son CV façon Zelda</h2>
<p style="text-align: justify;">Alors que certains ne savent toujours pas rédiger un simple CV sans faute. Alors que d'autres préfère remplacer le papier par la chanson. Alors que certains tentent le CV vidéo. Daniel Sternlicht propose <a href="http://danielsternlicht.com/">son CV</a> en un jeu HTML aux graphismes qui ne sont pas sans rappeler les vieux Zelda. Ca s'appelle "savoir se vendre".</p>
<h2 style="text-align: justify;">Quand des femmes défendent Assange</h2>
<p style="text-align: justify;">Ca se passe dans les colonnes web (papiers aussi ?) du Guardian. Katrin Alexsson et Lisa Longstaff dénonce une machination politico-judiciaire. Alors qu'elles se revendique Femmes (logique) et contre le viol (re-logique), elles rappellent les nombreux non-respects de procédure dans l'affaire, le changement de dénomination du dossier, les manipulations médiatiques. Elles mettent également en exergue que les médias majeux s'intéresse à Assange comme s'il avait été déclaré coupable. De même, elles opposent le comportement des autorités anglaises contre Assange, à leur comportement contre Pinochet à l'époque. On rajoute ceci aux déclarations du jour d'un des avocats d'Assange, le dossier est loin d'être fini. Merci mesdames pour <a href="http://www.guardian.co.uk/commentisfree/2012/aug/23/women-against-rape-julian-assange">votre article</a>.</p>
The expendables 2 ou une indigestion bouchère d’action
2012-08-23T10:21:26+02:00
https://francois.aichelbaum.com/2012/08/23/the-expendables-2-ou-une-indigestion-bouchere-daction
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/Video-The-Expendables-2.jpg"><img class="alignleft" title="The Expendables 2 - Icone" src="/assets/Video-The-Expendables-2-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a>Le premier film avait été un plaisir : réunir un wagon de stars des films d'actions des 30 dernières années sur un seul plateau. Scénario et réalisation pour <em>Sly</em>, qui n'est plus un débutant. Le film se présentait bien malgré un accueil mitigé à l'époque. Selon les codes des nanards d'actions, il avait cependant peu de points faibles.</p>
<p style="text-align: justify;">Aujourd'hui, <em>XP2012</em> (comme écrit sur l'avion de Sly), change de réal et de scénariste. Il présente de nouvelles têtes. Il nous fait des promesses. C'était hier sa sortie officielle. C'est ce matin que je me fais un maximum d'ennemis, sans <em>spoiler</em>.</p>
<p style="text-align: justify;"><!--more--></p>
<h2>De l'action nerveuse ... même derrière la caméra</h2>
<p style="text-align: justify;">Bon c'est tout excité que je fais mon téméraire pour me taper un block-buster au ciné le jour de sa sortie. Après tout, c'est un film sous testostérone donc autant faire ressortir la mienne.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=7rkdTcQLwZ4[/video]</p>
<p style="text-align: justify;">Sly avait été très fédérateur pour le premier opus. D'ailleurs, on ressentait un certain plaisir pour ses collègues de jouer devant sa caméra. On s'étonne alors qu'il ait laissé sa place de réal et de scénariste à <a href="http://fr.wikipedia.org/wiki/Simon_West">Simon West</a>. Simon West n'est pas un inconnu de l'action pour autant. Au cinéma, il nous a déjà réalisé <a href="http://www.youtube.com/watch?v=fWq-S1_1vnc">les Ailes de l'Enfer</a> (plutôt bon), <a href="http://www.youtube.com/watch?v=TbJbk0H33IU">le déshonneur d'Elisabeth Campbell</a> (très mauvais) et <a href="http://www.youtube.com/watch?v=cnNBqNb3taw">Lara Croft</a> (plutôt mauvais). Côté série, il s'est attaqué aux pilotes de <a href="http://www.youtube.com/watch?v=k3K-y-I0yz8">Human Target</a> et <a href="http://www.youtube.com/watch?v=PajqY0VgYiU">The Cape</a>, tous deux motivant les spectateurs. A croire que le cinéma n'est pas sa tasse de thé. Aujourd'hui, il désire offrir une suite à The Expendables, suite justement <em>expendable</em> (sacrifiable) car pas indispensable.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/Premiere-seance-du-22-aout-Expendables-2-ecrase-ses-concurrents_portrait_w5321.jpg"><img title="Sly + Norris" src="/assets/Premiere-seance-du-22-aout-Expendables-2-ecrase-ses-concurrents_portrait_w5321-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/no_flash.jpg"><img title="Site Promo" src="/assets/no_flash-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/jean-claude-van-damme-the-expendables-2.jpg"><img title="JCVD" src="/assets/jean-claude-van-damme-the-expendables-2-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/jean-claude-van-damme-the-expendables-2.jpg"><br />
</a></p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/EXPENDABLES-2-LINEUP.jpg"><img title="L'Equipe" src="/assets/EXPENDABLES-2-LINEUP-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/Expendables-2-trailer-3-008.jpg"><img title="Vilain et ses méchants" src="/assets/Expendables-2-trailer-3-008-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-photo-501fe42e3059f.jpg"><img title="Sly + Schwarzy + Willis" src="/assets/expendables-2-photo-501fe42e3059f-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a></p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-making-of.jpg"><img title="The Expendables 2" src="/assets/expendables-2-making-of-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-box-office.jpg"><img title="The Expendables 2" src="/assets/expendables-2-box-office-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables2-photo-sly-schwarzy.jpg"><img title="Schwarzy + Sly à l'hosto" src="/assets/expendables2-photo-sly-schwarzy-150x150.jpg" alt="The Expendables 2" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-box-office.jpg"><br />
</a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables2-photo-sly-schwarzy.jpg"><br />
</a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables2-photo-sly-schwarzy.jpg"><br />
</a></p>
<p style="text-align: justify;">Alors oui, à vouloir faire une suite à tout prix, on est obligé de faire de la sur-enchère. Cependant certaines choses manquent ou sont mal faites. L'absence de Mickey Rourke au bar est bien malheureuse. Tout comme les acteurs espérés (un jour ?) : Jackie Chan (indisponible), Nicolas Cage (trop cher), John Travolta (non intéressé), Antonio Banderas (indisponible), Clint Eastwood (?), Steven Segal (?), Wesley Snipes (en prison pour fraude fiscale - libéré en 2013) ... Par contre, d'autre sont présents : Schwarzy (avec une tenue rappelant le premier <a href="http://www.youtube.com/watch?v=c4Jo8QoOTQ4">Terminator</a>), Bruce Willis, Chuck Norris, mais surtout (et malheureusement quelque part), Jean-Claude Van Damme bien trop <em>aware</em>. Liam Hemsworth représente la très jeune vague d'acteurs de films d'action.</p>
<p style="text-align: justify;">Alors pour ces nouveaux (qui ne sont pas que des caméos), comment s'intègrent-ils ? Pour ce qui est de Willis, rien à dire, il n'a jamais arrêté et a même fait évolué son personnage de simple flic à agent de la CIA (<a href="http://francois.aichelbaum.com/cest-pas-moi-cest-lui/">Sans issue</a> par ex). Egale à lui-même.</p>
<p style="text-align: justify;">Schwarzy avait mis sa carrière d'acteur en stand by. Il n'a jamais eu un jeu parfait surtout avec ses difficultés de prononciation pour ses premiers films. Cependant, il a toujours été convaincant. Là encore, il ne déroge pas à la règle et répond à ce dont on attend de lui.</p>
<p style="text-align: justify;">Chuck Norris est l'archétype de l'acteur qui n'a pas pris la grosse tête alors que tout le monde et surtout tout internet parle de lui. L'auto-dérision lui était déjà <a href="http://www.youtube.com/watch?v=arKpdxjHamI">connu</a> après les <em>Chuck Norris Facts</em>. Sa prestation continue dans ce sens et l'arrivée du Texas Ranger pour les sauver tous est à savourer. D'ailleurs un des <em>facts</em> est repris : "Un jour, un cobra royal a mordu <em>Chuck Norris</em>. Après cinq jours de longue agonie, le cobra est mort".</p>
<p style="text-align: justify;">Liam Hemsworth a le spectre de l'un de ses ainés à combattre (Chris, vu dans Thor et The Avengers entre autres). Et avoir la même trombine et le même regard que son frangin ne va pas l'y aider s'il reste dans les films d'action. Mais bon, il ne joue pas trop mal ... tant que le script (merci West ...) ne le démolie pas : ex-soldat, il dit avoir abandonné l'armée à cause des atrocités de la guerre. C'est sûr que se faire recruter comme boucher dans une équipe de mercernaires, ca sera bien moins violent.</p>
<p style="text-align: justify;">JCVD. Un cas à part. On ne le présente plus. Par contre, on rigole de son retournement de veste. Il était connu qu'il avait refusé l'invitation pour le premier opus car il n'avait pas envie de perdre contre Jet Li et qu'il ne croyait pas en ce projet. Pour autant, dans une <a href="http://www.lesinrocks.com/2012/08/22/cinema/jean-claude-van-damme-linterview-fleuve-11288790/">récente interview</a>, il annonce que c'est simplement pour des raisons d'emploi du temps. Vu l'avancé de son projet, cette raison est peu valable. Avec cette mauvaise fois, se rajoute un jeu d'acteur en déclin. Il partait pourtant de très bas. Le travail aide ... Ridicile. D'ailleurs, il interprête le vilain de l'histoire, sobrement nommé Vilain. C'est dire.</p>
<p style="text-align: justify;">Au niveau du film en lui-même, que dire ? Dès le début, un goût de déjà-vu se fait sentir. C'est sûr, l'intro n'est pas sans rappeler le dernier <a href="http://www.youtube.com/watch?v=z93AADd2Dpo">A-Team</a>. Et ce sentiment se renforcera à chaque <em>cliché</em>, à chaque clin d'oeil. En fait, si on veut faire court, là où <em>The Expendables</em> était un agréable plaisir bourré d'action rénovée, ce second film n'est qu'un immense clin d'oeil proche d'un <a href="http://fr.wikipedia.org/wiki/Fanfiction">fanfic</a>. Les acteurs se balancent leurs répliques cultent (ou se les échangent). Les plans vu dans les autres films s'enchaîne. Par ex, un hélico abattu par Bruce Willis avec une voiture dans <em>Die Hard 4</em>, se transforme en un hélico abattu par Sylvester Stallone. Les tenues sont là aussi pour rappeler les précédents films : tenue de <em>Terminator</em> pour Schwarzy, tenues de<em> Demolition Man</em> et <em>Rocky</em> pour Sly par ex.</p>
<p style="text-align: justify;">Tout ceci pourrait tirer le film vers le kitch qui plait presque sans problème si la réalisation suivait. Enormément d'erreurs. Trop d'erreurs. D'ailleurs, inspirés de <a href="http://www.allocine.fr/video/emissions/faux-raccords/episode/?cmedia=19370188">cette émission</a>, les muscles devraient s'occuper de son cas mais surtout du directeur de la photographie. Ca manque de bimbos ! Du coup, on aurait pu espérer que Charisma Carpenter la joue pour compenser. Mais non. Dommage. Et que dire justement du directeur de la photographie : on n'a pas idée de filmer en analogique puis de faire un zoom "de la mort qui tue" en numérique en <em>post-prod</em>. Ca pique les yeux ! Certains acteurs sont transparents : Jet Li malgré l'intro ou encore Randy Couture. Quel gâchis.</p>
<p style="text-align: justify;">Bref, j'ai passé un bon moment en salle en me grillant les derniers neurones vivants hier soir. On profite des acteurs présents et on se remémore les films précédents. Pour autant, l'arrière goût de déjà-vu/vu-et-revu ne passe pas et laisse une certaine amertume envers Simon West.</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/expend2-poster-1.jpg"><img class="aligncenter" title="The Expendables 2" src="/assets/expend2-poster-1-692x1024.jpg" alt="The Expendables 2" width="584" height="864" /></a></p>
<div style="text-align: justify;"></div>
<div style="text-align: justify;"></div>
<div></div>
<div></div>
<div></div>
Revue du web du 22 août 2012
2012-08-22T12:40:44+02:00
https://francois.aichelbaum.com/2012/08/22/revue-du-web-du-22-aout-2012
<p>Comme tous les jours ou presque, petite revue du web. Cette fois, on s’intéresse à notre petite personne en priorité.</p>
<h2 id="vieux-pas-si-con">Vieux (pas si) con</h2>
<p>Rah les vieux cons qu’ils disaient. Ces ‘jeunz en jean-t-shirt-basket-casquette à l’envers. S’ils savaient. Mais il ne peuvent pas le savoir. Comme ils ne savent pas ce qu’ils feront de leur vie, du fait de leur jeunesse. Après tout, le cerveau n’est pas mature avant 30 ans. Merci le site web de <a href="http://www.slate.fr/lien/60741/adulte-cerveau-adolescent-maturite">Slate</a>. Ca me rappelle du Brassens tiens.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="parmi-les-super-héros--le--cochon-dinde-">Parmi les super-héros : le … cochon-d’inde !</h2>
<p>Vous ne connaissez pas le sketch de Bruno Salomon ? Pas grave. Par contre, Slate (oui encore eux ce matin), nous rapporte une <a href="http://www.slate.fr/lien/60771/super-heros-identification-perception-effets-psychologiques">étude de psys américains</a>. Selon cette étude, il est sain (psychologiquement voire physiquement) de s’identifier à des Super-héros. Bon bah je retourne sortir ma panoplie du Punisher et régler leur compte à ces mécréants de l’open-space.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="mars-attacks">Mars attacks</h2>
<p>Alors pour ceux qui n’ont pas suivi, un nouveau robot (Curiosity) a été déployé sur Mars. Depuis il nous envoie régulièrement des clichés. Un vrai paparazzi. D’ailleurs, il tient à nous présenter ses amis les martiens. Article fort sympa de chez <a href="http://www.gizmodo.fr/2012/08/21/ovni-curiosity-photographie-mars.html">Gizmodo FR</a>. Préparez-vous à l’invasion !</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="couper-laccès-au-web-peut-vous-coûter-la-vie">Couper l’accès au web peut vous coûter la vie</h2>
<p>Petit fait divers rapporté par le <a href="http://www.journaldugeek.com/2012/08/22/elle-tue-son-oncle-qui-avait-coupe-internet/">Journal du Geek</a>. Une timbrée de 19 ans a simplement tué son oncle pour lui avoir couper l’accès au net. Elle était droguée <em>au net</em>. Quand on voit que les jeunes ne pourraient pas survivre sans être connectés, on se rend compte qu’ils pourraient aussi tuer pour être connectés. SFR l’avait prédit.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Abraham Lincoln, chasseur de vampires de pourfandeur d'Histoire
2012-08-22T11:18:30+02:00
https://francois.aichelbaum.com/2012/08/22/abraham-lincoln-chasseur-de-vampires-de-pourfandeur-dhistoire
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/482px-Abe_Lincoln_young.jpg"><img class="alignleft size-thumbnail wp-image-6539" title="Abraham Lincoln" src="/assets/482px-Abe_Lincoln_young-150x150.jpg" alt="Abraham Lincoln" width="150" height="150" /></a>Il est de ces hommes dont la vie est devenue une légende. <a href="http://fr.wikipedia.org/wiki/Abraham_Lincoln">Abraham Lincoln</a> fait partie de ceux-là. Une vie tellement remplie et importante pour l'évolution d'un pays qu'il a inspiré nombre de mouvements et de sentiments. Nombre d'histoires aussi sont nés de sa légende. Une des ces histoires est la biographie fictive de Seth Grahame-Smith de 2010. Et fictive, elle l'est très largement, surtout lorsqu'elle modifie des faits réels pour justifier de ses idées. Classé en horreur, faut-il frissonner de sa version cinéma ?</p>
<p style="text-align: justify;"><!--more--></p>
<h2 style="text-align: justify;">Abraham Lincoln aime la hache ...</h2>
<p style="text-align: justify;">... et l'auteur du bouquin mais surtout <a href="http://fr.wikipedia.org/wiki/Timur_Bekmambetov">Timur Bekmambetov</a> aussi. Ce russe ne vous est peut-être pas inconnu : <a href="http://www.youtube.com/watch?v=2ySIiB1OBa8">Night Watch</a>, <a href="http://www.youtube.com/watch?v=ZtVD97ss7rU">Day Watch</a> (il est où le 3e opus tant attendu ?), et le m****** <a href="http://www.youtube.com/watch?v=sxEAE-10YTE">Wanted</a>.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=34x6m-ahGIo[/video]</p>
<p style="text-align: justify;">Alors oui, Smith présente son oeuvre comme une autobiographie fictive. Mais est-ce une raison pour modifier des faits avérés ? Il aurait été plus salutaire de ne pas le faire pour amplifier la possible véracité des faits fictifs contés. Au final, la vie et l'oeuvre de Lincoln sont coupées et modifiées à grands coups de hache. De la vraie bouillie. Quand on sait que Tim Burton est à la production, on se demande s'il n'avait pas un coup dans le pif au moment de signer le contrat.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/JPABRAHAM-articleLarge.jpg"><img class="alignnone size-thumbnail wp-image-6545" title="Will & Abraham" src="/assets/JPABRAHAM-articleLarge-150x150.jpg" alt="Will & Abraham" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/abraham-lincoln-vampire-hunter-rufus-sewell-benjamin-walker-erin-wasson.jpg"><img class="alignnone size-thumbnail wp-image-6548" title="Abraham contre Vadoma" src="/assets/abraham-lincoln-vampire-hunter-rufus-sewell-benjamin-walker-erin-wasson-150x150.jpg" alt="Abraham contre Vadoma" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/ABRAHAM-LINCOLN-VAMPIRE-HUNTER-NOUVEAU-POSTER-XL.jpg"><img class="alignnone size-thumbnail wp-image-6551" title="Statue d'Abraham" src="/assets/ABRAHAM-LINCOLN-VAMPIRE-HUNTER-NOUVEAU-POSTER-XL-150x150.jpg" alt="Statue d'Abraham" width="150" height="150" /></a></p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/20120809_abrahamlincoln_cover.jpg"><img class="alignnone size-thumbnail wp-image-6554" title="Abraham Lincoln" src="/assets/20120809_abrahamlincoln_cover-150x150.jpg" alt="Abraham Lincoln" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/2012_5_25_AbrahamLincolnVampireHunter1.jpg"><img class="alignnone size-thumbnail wp-image-6557" title="Abraham Lincoln" src="/assets/2012_5_25_AbrahamLincolnVampireHunter1-150x150.jpg" alt="Abraham Lincoln" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/482px-Abe_Lincoln_young1.jpg"><img class="alignnone size-thumbnail wp-image-6560" title="Abraham Lincoln" src="/assets/482px-Abe_Lincoln_young1-150x150.jpg" alt="Abraham Lincoln" width="150" height="150" /></a></p>
<p style="text-align: justify;">Je dois avouer que je suis aller voir le film pour une double raison : l'ambiance ressentie sur la bande annonce qui m'interpelait et le grand bordel qui en ressortait. Le film est-il aussi bordélique ? En fait non. Mais cela ne le sauve pas pour autant.</p>
<p style="text-align: justify;">Des films bordéliques, il y en a eu. Et bien souvent, le résultat était bénéfique : <a href="http://www.youtube.com/watch?v=JY3u7bB7dZk">Serenity</a> (et la série <a href="http://www.youtube.com/watch?v=mG9bSBGLtMc">Firefly</a>), <a href="http://www.youtube.com/watch?v=He_PWsJqsVY">Iron Sky</a>, ... Mais là, le bordelique s'amoindrit, le soufflé retombe et le navet s'enfonce.</p>
<p style="text-align: justify;">Faux raccords à foisons, aberrations à répétitions, jeu d'acteurs très en retrait, qualité des effets graphiques qui joue au yo-yo, Histoire trop modifiée... Le film n'a pas grand chose pour plaire. Et c'est ce qui ressort du film. On y reste pour voir comment va évoluer le film, mais connaissant la fin, peu de surprises pour nous réconforter d'avoir attendu.</p>
<p style="text-align: justify;">Une énorme déception et un film à fuire.</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/2012_5_25_AbrahamLincolnVampireHunter.jpg"><img class="alignnone size-medium wp-image-6542 aligncenter" title="Abraham Lincoln, chasseur de vampires" src="/assets/2012_5_25_AbrahamLincolnVampireHunter-300x230.jpg" alt="Abraham Lincoln, chasseur de vampires" width="300" height="230" /></a></p>
Revue du web du 21 août 2012
2012-08-21T11:04:19+02:00
https://francois.aichelbaum.com/2012/08/21/revue-du-web-du-21-aout-2012
<p>Aujourd’hui la revue du web sera très geek. Pour autant, je vais tenter de titiller vos souvenirs, vos plaisirs et votre curiosité.</p>
<p>## X-or, le shériff, le shériff de l’espace</p>
<p>En 5/1000e il se transforme. En 5/1000e, je rédige ce billet … ou presque. Certains se souviendront sûrement de lui ou de ses successeurs. Par contre, je ne vais pas paraphraser l’article du site web <a href="http://www.serieslive.com/news/x-or-renait-au-cinema/16606/">Séries Live</a> et vais vous laisser gratter un peu vos souvenirs et la poussière déposée dessus. Par contre, pour le plaisir, … le générique d’antant.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>## La télécommande universelle façon gamin</p>
<p>Quand on me parle de télécommande universelle, je pense à deux choses : les télécommandes universelles pour remplacer les 50.000 télécommandes du salon et les montres-télécommandes à l’époque du collège. Là, nous avons le droit à un petit plaisantin qui prend plaisir à utiliser son petit montage dans la rue pour éteindre les TV des bars ou boutiques. Vraiment dans l’esprit des montres de l’époque. Bizarrement, je trouvais ca plus comique à l’époque, vieux con que je suis.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>## Disney, l’open-source et le web</p>
<p>Quand je vois la news reprise sur le net depuis hier, je pense que Disney vient de se faire un paquet d’ennemi et que ca promet un joli bizutage. En cause, une séquence dans l’une des séries produites et diffusées par Disney Channel où l’on peut entendre un joli “<em>As-tu utilisé du code open source pour gagner du temps et un virus était caché dedans ?</em>”. Personnellement, je doute que cela soit dû à une mauvaise information du scénariste. Je miserais plus sur un partenaire <em>à la noix</em> (<em>à la pomme</em> vu l’ordinateur de la séquence) ayant demandé une petite séquence propagande.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>## Le Lazer Game nouveau est arrivé</p>
<p>Beaucoup d’entre vous connaissent les Lazer Games, peu importe le nom commercial du produit. Souvent en entrepôt, le jeu part à la conquête de la ville. <a href="http://www.gizmodo.fr/2012/08/20/lazer-tag-nouveau-arrive.html">Gizmodo FR</a> nous présente donc une évolution du produit très intéressante pour les <em>aficionados</em> du jeu. Ce n’est pas excessif au niveau prix, c’est à la page (<em>version iPhone</em> seulement pour le moment).</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>## Michael Moore, Oliver Stone et les US</p>
<p>Michael Moore critique ouvertement les US avec des films-documentaires : <a href="http://www.youtube.com/watch?v=EUSpszWfu_w">Bowling for Columbine</a>, <a href="http://www.youtube.com/watch?v=2Zf2nCiBJLo">Fahrenheit 9/11</a>, <a href="http://www.youtube.com/watch?v=8BJyyyRYbSk">SiCKO</a> … Oliver Stone le fait de manière souvent plus <em>poétique</em> : <a href="http://www.youtube.com/watch?v=4_67t6I_beg">Tueurs nés</a>, <a href="http://www.youtube.com/watch?v=EdwjsNmwo7k">Né un 4 juillet</a>, <a href="http://www.youtube.com/watch?v=gKDG9kolAaY">JFK</a>, <a href="http://www.youtube.com/watch?v=dO2LWKpeyI8">Nixon</a>, <a href="http://www.youtube.com/watch?v=weELpc3pYMs">W</a> … Aujourd’hui, ils nous offrent un papier commun dans l’édition du NY Times, disponible sur <a href="http://www.nytimes.com/2012/08/21/opinion/wikileaks-and-the-global-future-of-free-speech.html?_r=2">son site web</a>. A lire sans modération.</p>
<p>## L’Elysee et la sécurité</p>
<p>Dans certains pays, d’autres seraient morts pour moins que ça. Il est donc question d’un entrepreneur se baladant avec une clé USB non cryptée contenant les plans de l’Elysée. Clé volée directement dans sa voiture. C’est <a href="http://www.rue89.com/2012/08/21/les-plans-de-lelysee-derobes-dans-une-voiture-234748">Rue 89</a> qui le rapporte sur son site web. De quoi lancer un film de série Z.</p>
Total Recall : ma mémoire a le hoquet
2012-08-17T22:58:08+02:00
https://francois.aichelbaum.com/2012/08/17/total-recall-ma-memoire-a-le-hoquet
<p><img src="/assets/total_recall_rect-460x3071-150x150.jpg" alt="Douglas Quaid - Total Recall" />{.left} Qui n’a jamais rêvé que le fruit de son imagination soit réel ? Malheureusement, il est dur de réaliser tous nos rêves. Pour autant, pourquoi ne pas s’assurer qu’ils deviennent de vrais souvenirs, gravés dans votre mémoire. C’est le business de <em>Rekall Inc</em> : “Dites-nous vos rêves, nous les réalisons”.
Inspiré de la courte nouvelle de Philip K. Dick (<a href="http://fr.wikipedia.org/wiki/Souvenirs_%C3%A0_vendre_(nouvelle)">We Can Remember It for You Wholesale</a>), le film de 2012 est surtout un remake de celui de <a href="https://www.youtube.com/watch?v=WFMLGEHdIjE">1990</a> avec Schwarzy. Quelques différences nous offrent un film qui sait se distinguer de son aïeul.</p>
<h2 id="une-mémoire-à-déprogrammer">Une mémoire à déprogrammer</h2>
<p>Le premier réflexe que l’on a, est de se souvenir de la première version. Cependant, même si l’on se prend à chercher les clins d’oeil et les différences, il est plus agréable d’essayer de découvrir se film comme une nouvelle aventure, indépendante et vierge.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Pourquoi partir dans cette optique ? Simplement parce que la nouvelle de Philip K. Dick ne fait que tracer les lignes initiales de ces deux films (<a href="http://fr.wikipedia.org/wiki/Total_Recall">1</a> et <a href="http://fr.wikipedia.org/wiki/Total_Recall_:_M%C3%A9moires_programm%C3%A9es">2</a>), mais aussi de la série <a href="http://www.serieslive.com/serie/total-recall-2070/657/">Total Recall 2070</a>. En effet, il n’y est question que de Douglas Quaid rêvant d’aller sur Mars sans en avoir les moyens. Il s’intéresse alors à la société Rekall Inc, offrant d’implanter de faux souvenirs dans votre mémoire. Mais le service vient à déparer pour en interférant avec de vrais souvenirs enfouis. Rien de plus.
Dans la version de 1990, on enchaîne sur ce que serait ce souvenir enfoui. L’action majeur se passe sur Mars, planète que notre ami body-buildé Douglas Quaid va sauver. Dans la série de 1999, il s’agit de suivre des enqueteurs dont la plupart des affaires gravitent autour de Rekall. Aujourd’hui, Douglas Quaid est de nouveau parmi nous mais vit sur une Terre divisée entre les riches britanniques et les pauvres ouvriers australiens (oui je schématise).</p>
<p>Bien accompagné cette fois-ci encore (spéciale dédicace à Jessica Biel pour ma part), Douglas travaille comme ouvrier sur les chaines d’assemblage de soldats-robots. Pauvre, il aspire à plus grand de son côté du globe. Surtout qu’un rêve récurrent le perturbe, à croire que sa mémoire veut lui dire quelque chose. Une publicité pour Rekall va l’attirer dans l’usine à souvenir. De là, sa mémoire va commencer à se libérer.
Et pour nous, le début d’un film au pas de course, à l’action nerveuse mais pourtant claire. Calé sur la version de 1990 en bien des points et surtout l’enchaînement des séquence, le film se dénote pourtant sur l’univers, plus proche de <a href="https://www.youtube.com/watch?v=mKylB9f3_Gk">Blade Runner</a> que du premier <em>Total Recall</em>. La partie graphique plus dans le détail mais aussi la bande son plus recherchée marquent là encore des différences avec le précédent. Mais le remake se veut aussi un hommage au travail accompli par le passé et les clins d’oeil se multiplient.
On finit par se faire transporter dans ce film à grandes prétentions dans une aventure sous crack mêlant action dynamique, thème inspirant et jolie plastique. Cependant, les nombreux faux raccords pourraient causer du tord au film si l’on y fait trop attention. Reste qu’il m’avait fait peur à son annonce, mais qu’il a presque su me faire oublier l’espace de deux heures le précédent film. Un bon moment qui aurait pu être exceptionnel avec un travail mieux fini, <em>remake</em> oblige.</p>
<p>P.S. : une fille pourrait-elle m’expliquer à quoi cela sert-il de mettre une culotte blanche presque transparente par dessus un string blanc ?</p>
<p><img alt="" src="/assets/totalRecall20121.jpg" title="" srcset="/assets/resized/480/totalRecall20121.jpg 480w, /assets/totalRecall20121.jpg 500w" /></p>
Rebelle : douche écossaise
2012-08-17T16:13:12+02:00
https://francois.aichelbaum.com/2012/08/17/rebelle-douche-ecossaise
<p><img src="/assets/le-rebelle-150x150.jpg" alt="Le Rebelle" />{.left} Le Rebelle : <em>il était flic, il faisait du bon travail mais il a commis le crime le plus grave en témoignant contre d’autres flics …</em> La testostérone à l’état brut sur petit écran. Mais avec un grand coeur, faut pas déconner. Que de souvenir. Donc le film sort au cinéma …. Hmm ? On me souffle dans l’oreillette que je me serais trompé de Rebelle ? Dommage !
Donc, hier j’ai pu voir le dernier Pixar avec deux semaines de retard. Une morale au ton comique pour les enfants (petits et grands). <em>Dé-pixélisation</em> d’un bon moment en salle obscure.</p>
<h2 id="pixar-se-rebelle-en-roux">Pixar se rebelle en roux</h2>
<p><a href="http://fr.wikipedia.org/wiki/Pixar_Animation_Studios">Pixar</a>, c’est un film d’animation par an en moyenne. Un chef d’oeuvre artistique presque à chaque fois : <a href="https://www.youtube.com/watch?v=KYz2wyBy3kc">Toy Story</a>, <a href="https://www.youtube.com/watch?v=9jemRQTLFH4">Monstre & Cie</a>, <a href="https://www.youtube.com/watch?v=wYcxGGLkE84">le Monde de Nemo</a>,<a href="https://www.youtube.com/watch?v=wphN9hG0l5w">les Indestructibles</a>, <a href="https://www.youtube.com/watch?v=c3sBBRxDAqk">Ratatouille</a>, <a href="https://www.youtube.com/watch?v=alIq_wG9FNk">Wall-E</a>, <a href="https://www.youtube.com/watch?v=p-TdCD6DBfM">Là-Haut</a>. <em>Rebelle</em> est-il de cette étoffe. Pour les trop pressés, un grand Oui !</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Pour résumer l’histoire, nous suivons donc Merida, princesse héritière du roi d’Ecosse, destinée à se marier et devenir une sage petite princesse avec de bonnes manières. Bah, oui ! Une fille, ça ne rôte pas. Ca ne pète pas. Ca ne fait pas caca. Ca n’a pas besoin de savoir chasser. Sauf que Merida rêve du parfait contraire. Une demande à la sorcière du coin devrait l’y aider … Début des ennuis pour elle et du spectacle pour nous.
J’ai eu l’occasion de voir le film en VO et là, l’accent écossais fait une énorme différence sur le film en français. Cependant, avec des enfants, on fuiera clairement cette version. Mais pour les grands enfants, un plaisir additionnel, surtout à se dire “Mais qu’est-qu’il dit le blondinet ?”
Comme toujours avec les <em>Pixar</em>, une morale doit nous être livrée. Et pour ne pas déroger à la règle, les crises de fous rire vont nous y aider. Comment résister aux mini roux prêts à tout pour la farce ? Comme résister aux Jeux Ecossais bien moins ridicule que nos chers JO ? Réveillons le rebelle écossais qui dort en nous et allons taquiner du rouquin !
Sur le plan artistique, chaque détail compte. On sentirait presque les vents écossais sur notre visage en humant la bonne mousse fraiche. On pourra s’amuser cependant à chercher les coquilles mais le plaisir est trop présent pour perdre ainsi son temps.
Un voyage en Ecosse qu’on aimerait revivre. En attendant, vais me manger un <em>haggis-burger</em> …
N.B. : l’hommage pour <a href="http://www.lefigaro.fr/cinema/2011/08/25/03002-20110825ARTFIG00508-pixar-l-autre-grande-reussite-de-steve-jobs.php">Steve Jobs</a>.</p>
<p>P.S. : pour un certain père indigne dont je ne citerais pas le nom, oui j’ai aimé et j’assume !</p>
<p><img alt="" src="/assets/Concours-Rebelle-300x184.jpg" title="" srcset=" /assets/Concours-Rebelle-300x184.jpg 300w" /></p>
Revue du web du 17 août 2012
2012-08-17T14:50:07+02:00
https://francois.aichelbaum.com/2012/08/17/revue-du-web-du-17-aout-2012
<p>Allez, c’est vendredi, c’est la journée des trolls pour les geeks mais surtout une veille de WE et il fait chaud. Bref, on se rafraîchit un peu les méninges. Bref, petite revue du web. Très petite vu la journée.</p>
<h2 id="gros-muscles-grosses-gaffes">Gros muscles, grosses gaffes</h2>
<p>Allociné, outre les infos sur le cinéma, propose quelques web-émissions assez sympa. L’une de mes préférées, c’est “Faux Raccord”. Celle d’aujourd’hui, première de la nouvelle saison est particulièrement risible sur les dialogues. Alors c’est parti pour le trio <a href="http://www.allocine.fr/video/emissions/faux-raccords/episode/?cmedia=19370188">Sly-Schwarzy-Willis</a>.</p>
<h2 id="assange-ou-comment-fuire-langleterre">Assange ou comment fuire l’Angleterre</h2>
<p>Il est de ces personnes dont la vie fait parler la presse du monde entier pendant des semaines. C’est le cas de Julian Assange. Pour rappel, le fondateur de <a href="http://fr.wikipedia.org/wiki/WikiLeaks">Wikileaks</a> est convoqué en Suède pour être entendu dans <a href="http://bugbrother.blog.lemonde.fr/2010/12/08/wikileaks-julian-assange-nest-pas-un-violeur/">une affaire de viol et d’aggression sexuelle</a>. Il n’y est pas encore condamné ni même accusé. Cependant, l’Angleterre souhaite l’y renvoyé par tous les moyens. Certains y voir un complot des Etats Unis. Reste que le pays de sa Majesté n’avait pas mis autant de moyen à l’époque d’<a href="http://en.wikipedia.org/wiki/Murder_of_Yvonne_Fletcher">un tueur de flic</a>. Mais bon, en marge des manifestations pro-Assange, certains s’en donnent à coeur joie sur le web et imaginent des <a href="http://www.numerama.com/magazine/23434-julian-assange-5-tactiques-pour-s-enfuir-de-l-ambassade.html">sorties du pays possible</a>. De quoi bien rire.</p>
<h2 id="cest-lété-les-cités-sont-de-sortie-pour-la-drague">C’est l’été, les cités sont de sortie pour la drague</h2>
<p>Aller, petit plaisir avec un <a href="http://payetashnek.tumblr.com/">Tumblr</a> à savourer. Même si la probabilité que certaines ne soient que pure invention, elles ne restent pas très éloignées de la réalité.</p>
<h2 id="roulez-moins-cher-pour-vos-vacances">Roulez moins cher pour vos vacances</h2>
<p>Petite astuce pour ceux qui prennent la route pour les vacances (et même les autres). Voici <a href="http://www.challenges.fr/revue-de-presse/20120817.CHA9661/les-astuces-d-un-ingenieur-nantais-pour-reduire-de-30-sa-facture-aux-peages.html?xtor=RSS-16">un petit site</a> avec une carte interactive qui permet de définir le trajet le plus économique au niveau des péages, quite à sortir pour re-rentrer sur l’autoroute. Bonne idée. Très utile surtout vu l’augmentation régulière des tarifs autoroutiers.</p>
<h2 id="téléphoner-ou-manger-il-faut-choisir">Téléphoner ou manger, il faut choisir</h2>
<p>Dans la série des bons plans qu’il faudra faire venir chez nous, voici l’idée d’un chef de LA. Pour redonner un côté convivial aux tables et <em>déconnecter</em> ses clients, le chef offre <a href="http://www.gizmodo.fr/2012/08/17/sms-restaurant.html">une réduction</a> sur l’addition de 5% si on n’utilise pas son smartphone. A développer.</p>
Revue du web du 14 août 2012
2012-08-14T12:27:06+02:00
https://francois.aichelbaum.com/2012/08/14/revue-du-web-du-14-aout-2012
<p>Nouvelle révue du web avec du plaisir et de l’image choc. Bon surf !</p>
<h2 id="un-holodeck-à-la-maison">Un holodeck à la maison</h2>
<p>Petit rappel sur ce qu’est un <a href="http://fr.wikipedia.org/wiki/Holodeck">holodeck</a>. C’est un concept issu de Star Trek qui propose une salle “toute virtuelle”. Un monde y est recré et vous y intéragissez à volonté. C’est le summum de la réalité virtuelle. Bah de petits étudiants californiens en ont monté un. Bon, ok ce n’est pas encore du niveau de <a href="http://www.youtube.com/watch?v=E11v3qmuKxk">celui de Star Trek</a>, mais ca vaut le détour.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="gotye-ses-fans-et-le-web">Gotye, ses fans et le web</h2>
<p>Gotye et son <a href="http://www.youtube.com/watch?v=8UVNT4wvIGY">Somebody that I used to know</a> a été repris un paquet de fois sur le web, de manière détournée ou non. Petit signe de reconnaissance, l’artiste publie une vidéo en mixant une bonne partie. Aucune modification aux reprises des fans, juste une compilation des sons. Très agréable et presque zen.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="des-pyramides-englouties--dans-le-désert">Des pyramides englouties … dans le désert</h2>
<p><img src="/assets/pyr-3-564x540-150x150.jpg" alt="De nouvelles pyramides mises à jour ?" class="left" /> Bon cette fois-ci il ne s’agit pas de pyramides englouties dans l’océan. Des <a href="http://news.yahoo.com/long-lost-egyptian-pyramids-found-google-earth-005252340.html">photos de Google Earth</a> auraient mis à jour de <em>nouvelles</em> dans le désert égyptien. Elles semblent bien vieille, bien erodées.
Il n’y a plus qu’à y envoyer Indy ou Lara sur place pour s’assurer de la chose.</p>
<h2 id="le-choc-du-jour--mort-pour-une-photo">Le choc du jour : mort pour une photo</h2>
<p>Il y a des morts violentes et absurdes. Et clairement, celle qui fait le tour de <a href="http://www.leparisien.fr/faits-divers/battu-a-mort-a-cause-d-une-photo-14-08-2012-2124766.php">la presse</a> aujourd’hui l’est. Le tord de la victime : avoir apprécié une moto et la toucher pour une prise de photo. Le (présumé) coupable : un agent de sécurité au sang un peu trop chaud. L’arme : les chaussures de sécurité (coquées donc) de l’agent dans la figure de la victime. L’action se passe en deux temps car bon, mettre un homme à terre seul, c’est peu amusant. Donc autant revenir avec ses potes pour l’achever. Mon commentaire ? 1981.</p>
<h2 id="cest-de-lart-on-vous-dit-">C’est de l’art on vous dit !</h2>
<p>Aussi inutile qu’un frigo sur la banquise. Aussi artistique qu’un monochrome de Whiteman. Voici les <a href="http://golem13.fr/william-bett-surveillance/">photos des caméras de surveillances</a> exposées tels des chefs d’oeuvre. On va oublier le droit à l’image, l’accès à des données de sécurité et surtout que l’artiste n’a rien fait si ce n’est une capture d’une image qu’il ne contrôle pas. Bref, c’est de l’art puisqu’on nous le dit. Point barre.</p>
<h2 id="des-bandes-annonces-comme-vous-en-rêviez">Des bandes annonces comme vous en rêviez</h2>
<p>Des amateurs. Des jeux vidéos. Des bandes annonces. De futurs films du box office. Il n’en fallait pas plus et le <a href="http://www.journaldugamer.com/2012/08/13/top-5-meilleures-ba-amateurs/">Journal du Gamer</a> nous gratifie d’une petit Top5 qui fait du bien par où ca passe. Après tout, on a eu un florilège d’adaption vidéo ludique (voire ludique) au cinéma. Non je ne parle pas de la bataille navale transformée en <a href="/la-croisiere-samuse/">Battleship</a> en tête de liste.</p>
<h2 id="the-expendables-3">The Expendables 3</h2>
<p><img src="/assets/418851_344755945610456_263059213_n-600x921-150x150.jpg" alt="The Expendables version jeux vidéos" class="left" /> Alors que l’épisode 2 sort au cinéma cet été, un graphiste nous offre sa vision des Expendables qui serait au final digne de faire l’affiche d’un 3e opus. On remplace donc les stars du cinéma d’action par les stars du jeu vidéo d’action. Un bon plaisir.</p>
<blockquote>
<p>Hail to the Kings, Baby!</p>
</blockquote>
<h2 id="what-a-piece-of-chalk">What a piece of Chalk</h2>
<p>Petit court métrage présenté par <a href="http://www.journalgraphic.com/2012/08/12/court-metrage-with-piece-chalk/">le Journal Graphic</a>. C’est beau. C’est porteur de plein de choses. Juste à apprécier … et à méditer.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Valentin : la cuisine familiale de Belleville et de Thaïlande
2012-08-12T14:02:21+02:00
https://francois.aichelbaum.com/2012/08/12/restaurant-valentin
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/9DDDE2C9-C706-49D5-B42B-DB471046E1CF.jpeg"><img class="size-thumbnail wp-image-5294 alignleft" title="9DDDE2C9-C706-49D5-B42B-DB471046E1CF.jpeg" src="/assets/9DDDE2C9-C706-49D5-B42B-DB471046E1CF-150x150.jpeg" alt="" width="150" height="150" /></a>Samedi soir, la fatigue de la journée s'est fait sentir. La ballade en forêt m'a ouvert l'appétit. Direction un petit restaurant offrant de la cuisine familiale. Le choix s'est porté sur Valentin, petit restaurant à la devanture sans prétention, en haut de la <a href="https://maps.google.fr/maps?q=valentin+rue+rebeval&ie=UTF-8&ei=rJYnULb1BITMhAfGhYCoAg&ved=0CFcQ_AUoAg">rue Rebeval, dans le 19e</a>.</p>
<p style="text-align: justify;"><!--more--></p>
<h2>Valentin ou la cuisine familiale voyage en Thaïlande</h2>
<p style="text-align: justify;">La carte de Valentin se fait alléchante, mélangeant une cuisine du terroir à de la cuisine aux saveurs Thaïlandaises. La carte est annoncée sur des enveloppes marrons rangées dans des portes dessins. La carte du jour écrite rapidement sur un feuille de carnet. On se croirait presque revenu à l'école. A deux, petit tour du repas choisi.</p>
<ul>
<li>Entrées : os à moelle ; calamars à la thaïlandaise</li>
<li>Plats : tomates farcies ; raie au curry doux</li>
<li>Desserts : tiramisu ; tarte tatin</li>
<li>Boissons : Saint Géron et bière Organic</li>
</ul>
<div style="text-align: justify;">Que dire : tout est parfait pour de la cuisine familiale. On sent que la patron a voyagé et apprécié la Thaïlande : il n'a qu'une envie, nous le faire partager au travers de la carte. On déguste l'entrée. L'os à moelle est divin ; les calamars bien frais et assaisonné. La sauce au curry et lait de coco relève parfaitement la raie très bien cuite. Cependant, la préparation aurait pu être parfaitement finie en retirant le cartilage des filets. Pour un néophyte, cela peut être rébarbatif. Heureusement, cela n'enlève rien au goût. Côté tomates farcies, rien a redire, c'est très bon. La fin du repas se marque par deux desserts magnifiques (oui, le tiramisu n'est ni du terroir ni de Thaïlande). Assis à une table collée au bar, on voit les autres desserts se faire dresser et l'eau reste en bouche pour multiplier les goûts.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">On en reste cependant là. L'estomac est bombé. Les papilles en ébullition. La note un peu élevé mais sobre (64€). L'accueil a été très chaleureux avec quelques blagues du patron. L'adresse est notée pour un nouveau rendez-vous.</div>
<p style="text-align: center;">[print_gllr id=5291]</p>
Restaurant du Tibet-Pemathang : dépaysement et chaleur
2012-08-12T13:29:04+02:00
https://francois.aichelbaum.com/2012/08/12/restaurant-du-tibet-permathang-depaysement-et-chaleur
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/pemathangbig.jpg"><img class="alignleft size-thumbnail wp-image-5279" title="Tibet-Permathang" alt="Tibet-Permathang" src="/assets/pemathangbig-150x150.jpg" width="150" height="150" /></a>Vendredi soir, affamé et d'humeur aventureuse, je me suis retrouvé dans mon vieux V<sup>e</sup> arrondissement de Paris en direction d'un restaurant Thaïlandais à Maubert-Mutualité que l'on m'avait recommandé. Fermé pour les vacances, je me suis rabattu sur un Tibétain (tout aussi recommandé) un peu plus haut dans la rue. Découverte de la chaleur et des saveurs du <a href="https://maps.google.fr/maps?ie=UTF-8&q=restaurant+tibetain+paris+5&fb=1&gl=fr&hq=restaurant+tibetain&hnear=0x47e671ef6ff7f46f:0x50b82c368941a90,5e+Arrondissement,+Paris&cid=0,0,2374113226799631725&ei=oY0nUL6mBNCwhAex1IHoBw&ved=0CIIBEK8LMAU">Tibet-Pemathang</a>, au 13 rue Montagne Sainte Geneviève, Paris 5<sup>e</sup>.<!--more--></p>
<h2>Au Tibet, société matriarcale ; ici, restaurant féminin</h2>
<p style="text-align: justify;">Premier étonnement culturel : de l'accueil à la cuisine, en passant par le service, tout est accompli par des femmes tibétaines. Un peu d'explication nous fait comprendre que la société tibétaine est une société matriarcale. La hiérarchie est ici reportée. L'accueil se montre alors hyper chaleureux et il est clair que le client est plus que soigné.</p>
<p style="text-align: justify;">Second étonnement culturel : je suis le seul homme présent dans le restaurant pendant toute la soirée. A croire que la clientèle se passe le mot seulement entre femmes et que les hommes sont bannis de cette importation de société matriarcale. Amusant mais malheureux quelque part. Pour autant, j'en profite bien car l'ambiance y est agréable.</p>
<p style="text-align: justify;">D'ailleurs, tout de l'attention du personnel à la décoration est chaleureux. Sans trop en faire pour nous transporter au Tibet, les quelques photos et la présence du bois apparent suffisent amplement à nous faire voyager et à sentir la chaleur de l'accueil, ancrée dans cette société. Plus qu'à mettre les pieds sous la table, lire le menu et déguster.</p>
<h2 style="text-align: justify;">Voyage au Tibet au travers de la nourriture</h2>
<p style="text-align: justify;">Chaque plat au menu est présenté sous son nom tibétain et accompagné d'une explication en français. C'est limpide et les babines salivent délicieusement. On va faire donc simple, une entrée variée qui reprend chaque entrée (hors soupe) en petite quantité. Suivra un boeuf sauté et épicé. Et pour finir, une coule douce du Tibet. Le tout accompagné d'un Dhara : yaourt mélangé façon milk shake avec du miel. Addition : environ 30€ pour ce menu. Verdict ?</p>
<p style="text-align: justify;">De manière générale, les produits sont frais et bien préparés. L'entrée est parfaite pour découvrir plusieurs spécialités rapidement. Le plat, très épicés est un régal. Le Dhara est alors parfait pour calmer les épices du plat. D'ailleurs j'en redemande volontiers. Pour ce qui est du dessert, il clôt ce repas. A travers les plats, on ressent les différentes influences des immigrants ayant rejoint le Tibet à travers le temps. Les saveurs tendent aussi bien vers l'Inde que vers la Chine avec des pointes d'épices venant d'ailleurs. Un savoureux mélange qui assure le voyage.</p>
<p style="text-align: justify;">Sans conteste, l'une de mes plus belles aventures culinaires de ces derniers temps. Le prix vaut largement la qualité du repas et le voyage au Tibet ainsi réalisé. On comprend vite la panoplie de stickers du Guide du Routard sur la devanture. A refaire !</p>
<p><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/PT01.jpg"><img class="alignnone size-thumbnail wp-image-5282 aligncenter" title="Tibet-Permathang" alt="Tibet-Permathang" src="/assets/PT01-150x150.jpg" width="150" height="150" /></a></p>
Revue du web du 10 août 2012
2012-08-10T14:24:08+02:00
https://francois.aichelbaum.com/2012/08/10/revue-du-web-du-10-aout-2012
<p>Comme depuis quelques temps, petite revue du web en vidéos, en images et en textes.</p>
<h2 id="les-cariboux-soutiennent-leur-équipe-olympique-sur-le-web">Les cariboux soutiennent leur équipe olympique sur le web</h2>
<p>Nos cousins de l’autre côté de l’Atlantique soutiennent à fond leur équipe olympique. La société Rona, l’équivalent de notre Leroy Merlin, le montre dans un spot mis sur le web.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="pour-lamour-du-bien-gras">Pour l’amour du bien gras</h2>
<p>Un bon burger, il n’y a que ca de vrai. Ca nourrit. Ca remonte le moral. Ca guérit de beaucoup de choses (c’est beau l’utopie non ?). C’est aussi un art. Petite galerie sur <a href="http://fatandfuriousburger.tumblr.com/">Tumblr</a>.</p>
<h2 id="les-nounours-sont-nos-amis">Les nounours sont nos amis</h2>
<p>En tout cas, l’ours en peluche se veut signe de paie et de démocratie selon certains suédois qui en ont <a href="http://www.lemonde.fr/europe/article/2012/08/10/minsk-stockholm-les-nounours-de-la-discorde_1744694_3214.html#xtor=RSS-3208">parachuté un paquet sur la Biélorussie</a>. Le Monde dans son édition web nous explique rapidement la violence de l’acte suédois contre la paisible dictature biélorusse.</p>
<h2 id="lathétisme-est-dangereux-pour-votre-santé">L’athétisme est dangereux pour votre santé</h2>
<p>Le Huffington Post rapporte les dangers de l’athlétisme amateur au travers d’une <a href="http://www.huffingtonpost.fr/2012/08/08/jo-athletisme-amateur-gif-chutes_n_1763021.html">série de GIFs animés</a>. Attention, risque sévère de migraine en perspective.</p>
<h2 id="le-cinéma-peut-être-meûgnon">Le cinéma peut être meûgnon</h2>
<p>Qu’ils peuvent être chou les bouts-de-choux. Personnages de cinéma <a href="http://golem13.fr/praia-de-belas-moivies-kids/">revisités façon garderie</a>. C’est frais. C’est sur Golem13.</p>
<h2 id="ff-est-mort-pas-vive-ff">FF est mort. Pas vive FF</h2>
<p>C’est le Journal du Gamer qui publie <a href="http://www.journaldugamer.com/2012/07/27/pal-81-final-fantasy-est-mort-adieu/">une critique</a> sur la décadence du jeu vidéo à la japonaise, license <a href="http://fr.wikipedia.org/wiki/Final_Fantasy">Final Fantasy</a> en tête. Ca fait du bien de lire quelqu’un du même avis. La profondeur des histoires et des univers, sans parler d’un vrai <em>character design</em> est absent depuis bien trop longtemps au profit de la technique sur ce genre de jeux. Personnellement, oui FF VII me hante et FF XII a achevé la saga en s’orientant dans un gameplay à la MMO alors que FF XI n’aurait jamais dû être. C’était mieux <em>avant</em>.</p>
<h2 id="faire-du-camping-et-emmener-un-stock-de-bière">Faire du camping et emmener un stock de bière</h2>
<p>Quand on fait dans le <em>roots</em>, on a très peu de place. Pour autant, on n’abandonne pas sa bibine. Gizmodo présente une solution : <a href="http://www.gizmodo.fr/2012/08/10/biere-en-poudre.html">la bière en poudre</a>. A tester mais j’ai peur.</p>
Jusqu'à ce que la fin du monde nous sépare : j'en suis mort
2012-08-09T11:15:27+02:00
https://francois.aichelbaum.com/2012/08/09/jusqua-ce-que-la-fin-du-monde-nous-separe-jen-suis-mort
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/geocroiseur_impact.jpg"><img class="alignleft size-thumbnail wp-image-4874" title="Apocalypse" src="/assets/geocroiseur_impact-150x150.jpg" alt="Apocalypse" width="150" height="150" /></a>2012. La fin du monde approche selon la croyance populaire (non ce ne sont pas les mayas qui l'ont dit). Cependant, un astéroïde nous menace. Bruce Willis veut nous en sauver dans <a href="http://www.youtube.com/watch?v=73cWfFEKAfE">Armageddon</a>. Mais ici, le vaisseau <em>Delivrance</em> explose en vol et nous voilà définitivement condamnés. Mort clinique d'un spectateur en salle obscure.<!--more--></p>
<h2>La mort d'un genre</h2>
<p style="text-align: justify;">Hier sortait donc <em>Jusqu'à ce que la fin du monde nous sépare</em>. J'y suis allé. J'ai vu. Je n'ai pas vaincu.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=0NPhBOWA2VI[/video]</p>
<p style="text-align: justify;">Les films sur la fin du monde, une grande histoire de non amour avec le cinéma sur les dernières décennies. <em>Le Jour où la Terre s'arrêta</em> (1951). <em>Le jour d'après</em> (1983). <em>Deep</em> <em>Impact</em> (1997). <em>Armageddon</em> (1998). <em>Last Night</em> (1999). <em>La fin des temps</em> (1999). <em>Fusion</em> (2001). <em>Le jour d'après</em> (2004). <em>La guerre des mondes</em> (2005). <em>Melancholia</em> (2007). <em>Sunshine</em> (2007). <em>Le Jour où la Terre s'arrêta</em> (2008). <em>Phénomènes</em> (2008). <em>2012</em> (2009). <em>Prédictions</em> (2009). Petite liste non exhaustive donc. Mais le genre tourne quelque peu en rond : astéroïde, cataclysme naturel ou extra-terrestres. Peu de changement aux scénarios. La mort d'un genre. Ici on rejoue <em>Armageddon</em> sous un autre angle.</p>
<p style="text-align: justify;">Cette fois-ci, on la vie façon <a href="http://www.youtube.com/watch?v=lnSgSe2GzDc">Eternal sunshine in spotless mind</a>. Le couple qui s'y forme ne cherche pas désespérément à survivre mais simplement à finir sa vie ensemble. Dodge (<a href="http://www.imdb.com/name/nm0136797/">Steve Carell</a>) a été largué par sa femme (la vraie femme de Steve dans la vie) suite à l'annonce de l'explosion de la navette Delivrance. Penny (<a href="http://www.imdb.com/name/nm0461136/">Keira Knightley</a>) est une jeune fille perdue dans sa vie, hypersomniaque à ses moments perdus et amoureuse d'un loser. Tous deux, voisins depuis quelques années mais pourtant inconnus, vont profiter de la situation pour faire connaissance et tenter de s'entraider à réaliser leur dernier rêve. Revoir ses parents pour elle. Revoir son amour de jeunesse pour lui.</p>
<h2>La mort du spectateur</h2>
<p style="text-align: justify;">Alors qu'une vraie osmose se sentait entre les héros d'<a href="http://www.youtube.com/watch?v=lnSgSe2GzDc">Eternal sunshine in spotless mind</a>, nos deux tourtereaux en devenir sont ici transparents l'un pour l'autre. Tout comme le jeu d'acteur plat, le film enchaîne les platitudes de situations, les évidences dans les enchaînements. C'est long. Les temps morts s'enchaînent. Petit réconfort, le personnage de Penny aime le bon son et emmène ses vinyls. L'occasion d'avoir au moins une bonne chose dans ce film : de la bonne musique. Insuffisant.</p>
<p style="text-align: justify;">Par deux fois, on nous envoie des électrochocs pour s'assurer que nous ne sommes pas mort dans la salle obscure. Heureusement. Mais encore une fois insuffisant. Quinze personnes ont fuit la salle pour se préserver. Je suis mort sur mon siège.</p>
<p style="text-align: center;"> <a href="http://francois.aichelbaum.com/wp-content/uploads/2012/08/Jusqua-ce-que-la-fin-du-monde-nous-separe-Affiche-France.jpg"><img class="alignnone size-medium wp-image-4877" title="Jusqu'à ce que la fin du monde nous sépare" src="/assets/Jusqua-ce-que-la-fin-du-monde-nous-separe-Affiche-France-225x300.jpg" alt="Jusqu'à ce que la fin du monde nous sépare" width="225" height="300" /></a></p>
Petite revue du web du 8 août 2012
2012-08-08T15:13:16+02:00
https://francois.aichelbaum.com/2012/08/08/petite-revue-du-web-du-8-aout-2012
<p>Mercredi, jour des enfants, sorties aux cinémas, … Revue du web en attendant l’heure de la sortie des classes !</p>
<h2 id="jukebox-humain-dans-la-grosse-pomme">Jukebox humain dans la Grosse Pomme</h2>
<p><img src="/assets/thehumanjukebox-150x150.jpg" alt="The Human Jukebox - CDZA" class="left" /> En ce début d’après midi, le site web des <a href="http://www.lesinrocks.com/inrocks.tv/un-jukebox-humain-dans-les-rues-de-new-york/">InRocks</a> nous propose de (re)découvrir les performances du groupe <a href="http://www.cdzamusic.com/">CDZA</a>. Cette fois, c’est au travers d’un jeu de jukebox vivant dans les rues de New York City que le show se passe et on en redemande volontiers.
Profitez pour aller découvrir leurs autres <em>expériences musicales</em>, cela vaut vraiment le détour.</p>
<h2 id="se-protéger-cest-bien-le-faire-bien-cest-mieux">Se protéger c’est bien, le faire bien, c’est mieux</h2>
<p><img src="/assets/nginx_logo-150x150.gif" alt="nginx" class="left" /> Un peu de technique sur le web. Je viens de tomber sur un article du blog de <a href="http://korben.info/auteur">Korben</a> : <a href="http://korben.info/nginx-comment-bloquer-les-attaques-les-plus-courantes.html">comment bloquer les attaques les plus courantes</a>.
L’article est intéressant. L’idée louable. Mais je ne suis pas fan de Korben pour ses articles techniques et là encore ça se révèle incomplet. L’exercice qui vise à protéger un site perso est très complexe en soi. Le résumer à quelques lignes même pour se <em>protéger des attaques les plus courantes</em>. La configuration proposée par Korben (repris d’un tutoriel de <a href="http://www.howtoforge.com/nginx-how-to-block-exploits-sql-injections-file-injections-spam-user-agents-etc">Howtoforge.com</a>) est bien trop simpliste et réductrice. Par contre, proposer l’intégration d’un mod-security (<strong>bien configuré !</strong>) sur un Apache ou dans le cas présent, d’un <a href="http://code.google.com/p/naxsi/">naxsi</a> sur un nginx est bien plus intéressant et bien plus viable à terme. Contrairement à mod-security, naxsi fonctionne sur une liste blanche du “bon comportement du site” qu’on va lui faire apprendre au cours d’une session rapide. Donc oui, pendant les premières minutes/heures (selon l’affluence du site ou ce que l’on veut faire), le site n’est pas encore réellement protéger. Mais il ne l’était pas en amont. Au final, la protection est bien plus complète et plus fine, en autant de temps et avec moins de ligne de configuration.</p>
<h2 id="il-est-en-vie--en-vie-">Il est en vie ! En vie !</h2>
<p><img src="/assets/wall-e-irl-mike-senna-150x150.jpg" alt="Wall-E" class="left" /> Petite news du web rapportée par Golem13 : un <a href="http://golem13.fr/wall-e-irl-mike-senna/">Wall-E</a> construit par un lambda. Bon, le créateur n’est pas entièrement un anonyme puisqu’il avait déjà reproduit de la même manière un <a href="http://sennasr2d2.blogspot.fr/">R2-D2</a> en 2003.
Travail magnifique au demeurant, qui me rappelle avec la larme à l’oeil l’oeuvre de Pixar. Seul point sombre selon moi ? Le robot n’est pas entièrement autonome.</p>
<h2 id="une-part-de-serpent">Une part de serpent</h2>
<p><img src="/assets/450x305xsnakecake.jpg.pagespeed.ic_.TiMoGNyDZO-150x150.jpg" alt="Serpent ou pas serpent ?"" class="left" /> Pour ceux qui se prépare à goûter, c’est <a href="http://www.gizmodo.fr/2012/08/08/croirez-jamais-pas-vrai-serpent.html">Gizmodo France</a> qui nous propose de découvrir un python sous un angle différent.
Alors on le regarde sous tous les angles, on comprend que c’est une réplique puis … on s’interroge. Personnellement, ca m’ouvre l’appétit pour changer. A vos fourchettes !</p>
<h2 id="il-était-une-fois-zelda-au-far-west">Il était une fois Zelda au far-west</h2>
<p><img src="/assets/b8f64593-150x150.jpg" alt="Link dans Zelda" class="left" /> Je ne vous présente par Zelda, un des emblèmes du jeu vidéo <em>made in</em> Nintendo. <a href="http://www.journalgraphic.com/2012/08/03/legende-zelda-western/">Le Journal Graphic</a> nous présente un web-serie mélangeant l’univers de Zelda aux westerns spaghettis.
C’est disponible depuis le 7 août, ca divertit et le mélange n’est pas totalement rebutant.</p>
<h2 id="un-verre-de-wd-40-patron-">Un verre de WD-40, patron !</h2>
<p><img src="/assets/wd-40-200ml-150x150.jpg" alt="WD-40" class="left" /> Les mécaniciens en herbe connaissent bien le WD-40. Mais pas sûr qu’ils le connaissent comme nous le présente <a href="http://gizmodo.com/5932262/10-surprising-uses-for-wd+40-and-5-places-it-should-never-be-sprayed">Gizmodo US</a>.
Les 10 usages proposés par le site ne sont pas une excuse pour faire n’importe quoi. Il nous est donc rappelé/apporté quelques règles non négligeables.</p>
5 ans de réflexion : avec ou sans gâteau
2012-08-08T11:39:42+02:00
https://francois.aichelbaum.com/2012/08/08/5-ans-de-reflexion-avec-ou-sans-gateau
<p><img src="/assets/5-ans-de-reflexion-2012-16697-963360868-150x150.jpg" alt="Jason Segel" />{.left} Le mariage, que de réflexion à avoir et de questions à se poser. Savoir si le partenaire est le bon. Choisir la date. Choisir le mariage religieux ou non. Si oui, de quelle(s) confession(s) la cérémonie doit être. Décider d’un cadre pour la cérémonie. Tester les restaurants. Se mettre d’accord sur la liste des invités. Résoudre les soucis de son couple avant … ou pas. Bref, Que de réflexion à avoir !</p>
<h2 id="5-minutes-de-réflexion-pour-se-dire-si-on-aime">5 minutes de réflexion pour se dire si on aime</h2>
<p>Hier j’ai donc choisi après une très rapide réflexion d’aller voir le film “5 ans de réflexion”, comédie avec <a href="http://www.imdb.com/name/nm0781981/">Jason Segel</a> et <a href="http://www.imdb.com/name/nm1289434/">Emily Blunt</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Le film se présente donc comme une petite comédie romantique avec Jason Segel au scénario, pour un film sans prétention qui demande à se goûter. Donc gâteau de mariage ou donut de fast-food ? Simplement un donut de mariage.
Tom et Violet ont la vie qui leur réussi. Tom est chef dans un restaurant à la mode. L’avenir de Violet se profile dans une université de renom pour des recherches en psychologie sociale. Au delà de leurs CV, ils sont surtout amoureux et tous leurs proches les considèrent comme le couple parfait. Donc tant qu’à faire, autant se marier. Mais vient alors les questions à se poser. Et les déboires de la vie courante qui demande la réorganisation.
Et comme le bazar que va devenir leur vie pendant 5 ans le film est un gros n’importe quoi. Totalement sur joué. Des découpages parfois peu logique. Un couple qui ne fusionne jamais. Et de ce chaos nait une comédie irrésistible qui nous emporte pourtant. A ne pas comprendre. On se balade avec Tom & Violet, et attendont le Happy End évident avec la bave au coin des lèvres.
C’est rapide. Ca ne restera pas dans les mémoires. Mais ça s’apprécie clairement. Un très bon moment de relaxation.</p>
<p><img alt="" src="/assets/the-five-year-engagement-the-five-year-engagement-01-08-2012-1-g-220x300.jpg" title="" srcset=" /assets/the-five-year-engagement-the-five-year-engagement-01-08-2012-1-g-220x300.jpg 220w" /></p>
Ah les Parigots : carte de Paris
2012-08-08T10:54:23+02:00
https://francois.aichelbaum.com/2012/08/08/ah-les-parigots-carte-de-paris
<p>Je viens de recevoir ça par email, je suis plié et donc je partage … Cela vous occupera en attendant la revue de “5 ans de réflexion” qui arrive dans la journée.
Pour ceux qui n’ont pas été voir <a href="/how-to-become-parisian-in-one-hour/">Olivier Giraud</a>, ca peut vous motiver à y aller.</p>
<p><img alt="" src="/assets/paris.jpg" title="" srcset="/assets/resized/480/paris.jpg 480w, /assets/paris.jpg 500w" /></p>
News du jour sur internet
2012-08-02T12:04:52+02:00
https://francois.aichelbaum.com/2012/08/02/news-du-jour-sur-internet
<h2 id="ca-se-passe-sur-internet">Ca se passe sur internet</h2>
<p>Rien à critiquer ou à tester aujourd’hui. Pas d’argumentaire. Ca sent vraiment les vacances. Alors du coup, je vais faire un billet que je mettrais peut être à jour courant de la journée avec les conneries plus ou moins sérieuses que l’on peut trouver sur internet. Allez, commentons un peu l’actualité du jour.</p>
<h2 id="les-sales-gosses">Les sales gosses</h2>
<p>C’est le Parisien qui publie un article sur son site internet : <a href="http://www.leparisien.fr/automobile/en-voiture-les-enfants-craquent-apres-30-minutes-02-08-2012-2111048.php">le comportement des enfants en voiture</a>. Personnellement, on me parle d’enfants en voiture, je repense à un trio infernal qui joue les sales gosses (Guillaume - Pauline - votre serviteur) avec leur “c’est quand qu’on arrive ?” et autre “pipi!”. Bref. L’article se focalise sur un fait bien connu : les enfants n’ont que peu de patience en voiture. Il faut donc savoir les occuper en les divertissant. Bon rappel. Par contre, la fée DVD est à déconseiller de mon point de vue. Les vacances sont faites pour décrocher du train-train habituel. Les enfants sont déjà trop accrochés à la TV, au PC ou à la console. Laissez la place aux jeux de société pour la voiture ou inventez des jeux !</p>
<h2 id="jurassic-park">Jurassic Park</h2>
<p>C’est l’histoire d’un milliardaire qui ne va jamais au cinéma. Du coup, il veut <a href="http://www.gizmodo.fr/2012/08/02/milliardaire-veut-cloner-dinosaures.html">cloner les dinosaures</a>. Puis pourquoi s’arrêter en si bon chemin : il faut les mettre dans un parc. C’est le site internet français de Gizmodo qui nous le rapporte. Bref, il n’a pas vu la trilogie et il serait bon que quelqu’un la lui offre. Une leçon à tirer de cette news : aller au cinéma est bon pour apprendre à ne pas faire de bétises.</p>
<h2 id="il-est-sain-davoir-un-compte-facebook">Il est sain d’avoir un compte Facebook</h2>
<p>Et c’est même mieux. Ainsi se présente l’information rapportée par <a href="http://techno.ca.msn.com/photos/nouvelles-du-jour-27-au-30-juillet-2012">MSN Techno</a>. Ne pas être présent sur les réseaux sociaux peut paraître suspect et détonerait même de trouble psychologique. Comment ça, il faut être parano pour ne vouloir aucune empreinte numérique sur internet ?</p>
<h2 id="la-guerre-des-robots-viendra">La guerre des robots viendra</h2>
<p>Même si Skynet est à la bourre de quelques années, la guerre des robots viendra. Avant ou après l’invasion zombie n’est pas le soucis. Par contre, savoir y survivre oui. <a href="http://gizmodo.com/5931152/how-to-survive-a-robot-apocalypse">Petit cours</a> sur internet rapporté par Gizmodo US.</p>
<h2 id="les-super-héros-aussi-ont-une-vie">Les super-héros aussi ont une vie</h2>
<p>Un petit reportage photo est mis en ligne par <a href="http://golem13.fr/chowkarhoo-supers-heros/">Golem13</a> sur la vie cachée des super-héros. Après tout, sont humains. Quoique …</p>
<h2 id="supprimer-des-axes-rapides-réduit-la-pollution-">Supprimer des axes rapides réduit la pollution …</h2>
<p>… dixit la Mairie de Paris. C’est la logique présentée pour justifier <a href="http://www.leparisien.fr/transports/fermeture-des-voies-sur-berge-la-revolution-qui-attend-paris-02-08-2012-2110985.php">la fermeture des quais</a> rapporté par le Parisien. C’est sûr que rajouter des voitures à des axes déjà saturés, ca ne polluera pas plus. Comme le fait que les parisiens et banlieusards se reporteront sur des transports saturés. Que d’air dans le métro ou le RER. Que de plaisir à rester bloquer en bus à des carrefours saturés par les flots de voitures. Quel bonheur d’attendre dans les tunnels que les secours ramassent le hachis déposé sur les rails par un malheureux à qui son employeur vient d’annoncer qu’il était viré car il ne pouvait utiliser sa voiture et que les transports parisiens ne marchent pas. Et non le Vélib’ n’est pas une solution : vous ne savez pas faire du vélo et les chauffeurs (voiture, bus, camion) vous ignorent. Ah, le bon air pollué de Paris. Bientôt en plus forte dose.</p>
<h2 id="nettoyons-la-planète">Nettoyons la planète</h2>
<p>C’est une news d’Univers Freebox concernant la participation de <a href="http://www.universfreebox.com/article17972.html">Free au World Clean Up 2012</a>. J’en avais déjà parler il y a peu sur les réseaux sociaux car l’affiche rapporte un autre participant de poids : la Fondation PSA (du groupe PSA). D’ailleurs, PSA a déjà commencé le nettoyage, mais par Aulnay.</p>
<h2 id="météo-et-politique-font-bon-ménage">Météo et politique font bon ménage</h2>
<p>Vous vous souvenez peut-être de mon billet sur le <a href="/le-jour-dapres-hier/">climat</a>. Aujourd’hui c’est le site <a href="http://www.slate.fr/story/60133/pluie-gauche-droite-meteo-hollande">Slate</a> qui se prête au jeu et marie la météo avec la politique. Le résultat est convaincant de comique.</p>
Aux bons Amis : un couscous excellent et très bon marché
2012-07-30T19:27:45+02:00
https://francois.aichelbaum.com/2012/07/30/aux-bons-amis-un-couscous-excellent-et-tres-bon-marche
<p style="text-align: justify;">Le couscous est un de ces plats facile à trouver, surtout dans les quartiers populaires de Pariset qui réunit les critères suivants :</p>
<ul>
<li>appétissant</li>
<li>bon marché</li>
<li>nourrissant</li>
</ul>
<div>Petite revue rapide du Grenier mais surtout du restaurant <em>Aux Bons Amis</em>.<!--more--></div>
<p style="text-align: justify;">Il y a peu j'avais pu découvrir <em>Le Grenier</em> (<a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=Le+Grenier,+Rue+Oberkampf,+Paris&aq=0&oq=LE+grenier,+rue+O&ie=UTF8&hq=Le+Grenier,+Rue+Oberkampf,+Paris&ll=48.867397,2.381544&spn=0.015922,0.038581&t=m&z=15&vpsrc=0&iwloc=A&cid=7090860540041199524">rue Oberkampf à Paris</a>). N'y allez pas n'importe quel jour, le bar ne sert le couscous que le vendredi et samedi soirs. La particularité ? Le couscous y est gratuit avec pour seule obligation de consommer. Les boissons étant aux prix classiques de Paris, le tarif est largement honnête. Donc couscous à volonté. Seulement des merguez pour viande. Semoule fine. Légumes bons mais sans plus. Vu le prix, rien à redire en fait et à noter pour tous les radins.</p>
<p style="text-align: justify;">Par contre, hier j'ai pu tester une autre catégorie : aux Bons Amis, dans le quartier de <a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=Aux+bons+Amis,+paris&aq=&sll=46.22475,2.0517&sspn=17.151693,39.506836&vpsrc=0&ie=UTF8&hq=Aux+bons+Amis,&hnear=Paris,+%C3%8Ele-de-France&ll=48.877361,2.37545&spn=0.063674,0.154324&t=m&z=13&iwloc=A&cid=11710307045630742394">Belleville</a>, toujours à Paris. Cadre sympathique avec les poutres apparentes dans la première salle, patron timide mais sympa, à l'ambiance de cantine lors du plein et reposant en cette période de ramadan. La spécialité de la maison ? Le couscous évidemment, les viandes grillées accessoirement.</p>
<h4 style="text-align: justify;">On s'est focalisé sur le plat pour faire simple. Pour deux, note à la sortie : 30€. A priori, tarif moyen, mais décomposons : 9€ par tête pour le couscous "Maison" (entre 6,5 et 11€ selon la recette choisie) et 12€ pour une bouteille de vin gris du Maroc.</h4>
<p style="text-align: justify;">Le couscous "Maison" se présente en trois plats conviviaux : les viandes (mergez, keftas, brochettes d'agneaux), les légumes et la semoule fine. Rien n'est raté : la semoule est fine sans grumeaux, les légumes assaisonnés et cuits parfaitement, la viande est grillée comme il se doit. Les merguez sont parmi les meilleures que j'ai pu manger, tout comme le kefta à l'assaisonnement excellent. Les brochettes d'agneaux offrent de beaux morceaux en taille et qualité. Une verrine d'harissa maison est proposée pour relevé le tout. Pour le prix, une qualité parfaite. A tester les autres recettes ou grillades. Côté vin, rien de tel qu'un vin gris pour l'accompagnement : léger, sucré mais pas trop, il réhausse le goût global.</p>
<p style="text-align: justify;">Pour faire simple : un couscous excellent et très bon marché. A refaire.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/07/DSCN0345.jpg"><img class="alignnone size-thumbnail wp-image-3658" title="Le couscous aux bons amis" src="/assets/DSCN0345-150x150.jpg" alt="Le couscous aux bons amis" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/07/DSCN03441.jpg"><img class="alignnone size-thumbnail wp-image-3655" title="Le critique gastronomique" src="/assets/DSCN03441-150x150.jpg" alt="Le critique gastronomique" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/07/DSCN0030.jpg"><img class="alignnone size-thumbnail wp-image-3652" title="Aux bons Amis" src="/assets/DSCN0030-150x150.jpg" alt="Aux bons Amis" width="150" height="150" /></a></p>
The Dark Knight rises : ou comment Batman chute
2012-07-30T12:00:54+02:00
https://francois.aichelbaum.com/2012/07/30/the-dark-knight-rises-ou-comment-batman-chute
<p>Mercredi dernier, Batman nous a livré le dernier chapitre de sa trilogie. <a href="https://www.youtube.com/watch?v=vak9ZLfhGnQ">Batman Begins</a> avait marqué par son côté sombre et violent. <a href="https://www.youtube.com/watch?v=yQ5U8suTUw0">The Dark Knight</a> nous avait offert une nouvelle référence pour le <a href="https://www.youtube.com/watch?v=QehZjjwb7-I">Joker</a> (<a href="http://www.imdb.com/name/nm0005132/">Heath Ledger</a>). The Dark Knight Rises nous offre juste une film à potentiel non converti. Trop long. Trop de (petits) ratés. Une Catwoman perfectible. Un Bane en demi teinte. Une Marion Cotillard qui devrait avoir honte. Une ouverture lors du final qui aurait pu ne pas être faite. Décryptage d’un loupé qui, cependant, divertit.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<h2 id="batman--une-trilogie-à-ne-pas-louper">Batman : une trilogie à ne pas louper</h2>
<p>On se souvient tous des films des années 90. Deux films gothiques du maître Tim Burton (<a href="https://www.youtube.com/watch?v=VRqa47-jv0M">1</a> & <a href="https://www.youtube.com/watch?v=mnEEU3rcnw4">2</a>) qui mélangeait son univers à celui du héros masqué sans problème. Deux films de Joel Schumacher (<a href="https://www.youtube.com/watch?v=iXsS1gLn8Gk">3</a> & <a href="https://www.youtube.com/watch?v=VK7wRdzg0MM">4</a>) qu’on espère oublier avec leurs délires psychotiques. <a href="http://www.imdb.com/name/nm0634240/">Christopher Nolan</a> avait entamé sa version du chevalier sombre de manière magistrale et allant crescendo. Il nous avait annoncé une fin en apothéose et ne devait surtout pas se louper, tellement le rouleau compresseur médiatique nous en a fait bouffer pendant des semaines avant la sortie.
Avec <a href="https://www.youtube.com/watch?v=vak9ZLfhGnQ">Batman Begins</a>, <a href="http://www.imdb.com/name/nm0634240/">Nolan</a> et <a href="http://www.imdb.com/name/nm0000288/">Bale</a> nous faisaient rentrer dans un univers sombre et torturé du chevalier. On lui découvrait des origines complémentaires absentes des versions précédentes (dont <a href="http://fr.wikipedia.org/wiki/Ra's_al_Ghul">Ra’s Al Ghul</a>). Grosse surprise en sortie de salle qui a mis l’eau à la bouche de tous les fans en désespoir depuis les dernières adaptations. Malheureusement, l’<a href="http://fr.wikipedia.org/wiki/%C3%89pouvantail_(DC_Comics)">épouventail</a> y avait été assez transparent.
Dans <a href="https://www.youtube.com/watch?v=yQ5U8suTUw0">The Dark Knight</a>, nous y découvrions le némésis de la chauve-souris : le <a href="http://fr.wikipedia.org/wiki/Joker_(comics)">Joker</a>. Campé par <a href="http://www.imdb.com/name/nm0000197/">Jack Nicholson</a> précédemment, ce dernier avait défini de belles règles pour le rôle. Il était alors très dur d’arriver à sa hauteur. Mais le drogué <a href="http://www.imdb.com/name/nm0005132/">Heath Ledger</a> avait de la ressource à vendre. Il n’a d’ailleurs pas démérité son Oscar posthume tant la performance était magnifique.</p>
<h2 id="un-batman-en-déchéance">Un Batman en déchéance</h2>
<p>Annoncé avec des personnages importants de l’univers de Batman (à savoir <a href="http://fr.wikipedia.org/wiki/Catwoman">Catwoman</a> et <a href="http://fr.wikipedia.org/wiki/Bane_(DC_Comics)">Bane</a>), ce Dark Knight Rises s’annonçait surpuissant. Et rien que pour eux, les loupés existent. Oui, Bane y est enfin intelligent comme il le devrait (et contrairement à la version de Schumacher), mais reste que le jeu d’acteur, la posture et l’expression orale montrent quelques restes de ce passé atardé. Dans le cas de Catwoman c’est plus compliqué. <a href="https://www.youtube.com/watch?v=aVQAI4NdZR0">Michelle Pfeiffer</a> a donné au rôle ses titres de noblesse. <a href="https://www.youtube.com/watch?v=8P5l36B8qPw">Halle Berry</a> a ruiné le personnage. Anne Hathaway résiste, est sexy dans son latex moulant mais reste totalement transparente tout au long du film. Décidément pas Miaou la chatte bien que sortant les griffes. Les clins d’oeil aux personnages précédents sont agréables … Il en manque cependant un pour le Joker qui a fait la renommée du second opus.
Ca c’est pour les personnages. Le film en lui-même enchaîne les ratés. Commençons par la durée : 2h45 en plein été, dans des salles où la climatisation n’est soit pas en état, soit pas suffisante, c’est du suicide ! On se croirait dans le RER, en heure d’affluence avec une panne.
Ensuite, la chronologie des évènements et la gestion du calendrier est digne d’un Harry Potter : on enchaîne les changements de jours (parfois mois) sans rien comprendre. C’est totalement décousu et mal expliqué. Comment perdre le spectateur. C’est sûr qu’en 2h45 de film, Nolan n’avait pas le temps de rendre la chose agréable et propre.
Pour le jeu des acteurs, autant faire une liste nomminative :</p>
<ul>
<li>Catwoman/Selina Kyle : transparente</li>
<li>Alfred : fatigué émotionnellement, touchant, mais trop absent</li>
<li>Lucius Fox : les chevilles sont tros grosses et heureusement, il apparaît peu</li>
<li>Bane : c’est quoi cette tenue ?!</li>
<li>Mlle Tate : Marion Cotillard, vous faites honte au cinéma français et au montant du chèque perçu pour ce rôle ; depuis quand on sur-joue autant dans ce genre de film ?!</li>
<li>Batman : fatigué physiquement, limite grabataire ; oui, il doit clairement se relever</li>
</ul>
<p>On nous annonçait une trilogie, la fin ouvre sur une double possibilité (attention, ça <em>spoile</em> donc passez au paragraphe suivant si vous ne voulez pas lire) :</p>
<ul>
<li>soit la création du Robin/Nightwing (bien qu’il ne soit pas question de Dick Grayson)</li>
<li>soit la création d’un nouveau Batman</li>
</ul>
<p>Accessoirement, pour votre information, John Blake existe dans les comics (il apparaît dans le #13 de 1942 et est le Robin de l’époque) : peu connu mais bon à savoir.
Ce qu’il reste donc au final à ce film ? Son gros spectacle, un scénario qui tient la route (pour les grandes lignes) et son côté sombre. Mais bon, comme disait <a href="http://www.funnyordie.com/videos/fd747e8af8/every-3d-movie-is-the-same?playlist=featured_videos">Funny or Die</a> dans un de leurs derniers podcasts vidéos, quand on en a vu un, on les a tous vu. Pas convaincu qu’il vaille le coup d’aller s’étouffer au cinéma pour le voir.</p>
<p><img alt="" src="/assets/the_dark_knight_rises___poster_by_damovieman-d31tsnm-691x1024.png" title="" srcset="/assets/resized/480/the_dark_knight_rises___poster_by_damovieman-d31tsnm-691x1024.png 480w, /assets/the_dark_knight_rises___poster_by_damovieman-d31tsnm-691x1024.png 691w" /></p>
Holy Motors : pour Oscar, ca tourne !
2012-07-26T22:34:38+02:00
https://francois.aichelbaum.com/2012/07/26/holy-motors-pour-oscar-ca-tourne
<h2 id="holy-motors--oscar-de-la-jeunesse-">Holy Motors : Oscar de la Jeunesse ?</h2>
<p><img src="/assets/er8xdf4htd-150x150.jpg" alt="M. Oscar" />{.left} Présenté en compétition officielle du festival de Cannes 2012, Holy Motors est primé par un Oscar de la Jeunesse. Et là, je me dis que la jeunesse n’est pas une génération totalement perdue tant le film peut s’interpréter de manières diverses, voire rebuter si l’on ne prend pas le temps. Oscar est le nom de cet être étrange que nous suivons, alors qui’il vogue de vie en vie. Dix vies. Dix actes. Dix leçons. La première scène nous montre un public endormi au cinéma : allons-nous aussi nous endormir devant cet ovni ?</p>
<h2 id="une-ode-au-cinéma-et-au-théatre-ou-sujet-danthropologie-">Une ode au cinéma et au théatre ou sujet d’anthropologie ?</h2>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Oscar est donc cet homme dont on ne voit jamais le vrai visage qui va prendre la vie d’un autre pendant quelques minutes ou heures. Tour à tour vieux banquier, vieille mendiante russe, monstre dans un cimetière, père de famille… Chaque scène, chaque rendez-vous, est orchestré à la seconde et nous propose un film à part entière. Sans lien, chaque scène est un acte de la pièce jouée par Oscar (<a href="http://www.imdb.com/name/nm0491777/">Denis Lavant</a>) et accompagné par Céline (<a href="http://www.imdb.com/name/nm0778568/">Edith Scob</a>) qui lui sert de chauffeur de limousine et d’assistante. La journée est chargée. Dix actes nous attendent.
On pourra passer de la vie peu passionnante du banquier aux trubliations d’un monstre du cimetière se la jouant Fantome de l’Opera et kidnappant une mannequin, campée par <a href="http://www.imdb.com/name/nm0578949/">Eva Mendes</a>. Et là, l’un des points clés du film : la relation d’Oscar avec les femmes. Toutes veulent le manipuler à leur façon : l’assistance et la planification pour Céline, le calme et l’acceptation pour le mannequin, le mensonge par la petite fille, les souvenirs pour <em>sa collègue</em> … Toutes prendront l’ascendant sur lui, le menant où elles désirent ou le faisant réfléchir à sa situation, à sa vie (absente).
Puis, comme au théatre, nous avons le droit à notre entracte. Ou simplement, le 6e rendez-vous d’Oscar. Un boeuf d’accordéons dans une église. Rafraîchissant et bien placé. A noter la présence de Bertrand Cantat pour manier l’harmonica. ”3 ! 12 ! Merde !”</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Puis c’est la descente aux enfers pour Oscar dont la fatigue de la journée se fait sentir. Le stress se ressent. On est essoufflé pour lui. Perdu dans ses dossiers comme lui. A ne plus savoir qui il a été, qui il est et qui il va être.
La rencontre de la <a href="https://www.youtube.com/watch?v=YOcZon_R43g">Fée Verte</a>, <a href="http://www.imdb.com/name/nm0001541/">Kylie Minogue</a>, apparaît comme une divine venue. Chantante (“<a href="https://www.youtube.com/watch?v=S-1651-XCXo">Who were we</a>”), elle rappelle à Oscar son passé, leur passé. Ces êtres sans visages, sans vie propre, ces mannequins, nous font visiter les ruines de <a href="http://fr.wikipedia.org/wiki/La_Samaritaine">la Samaritaine</a>, le sol jonché de mannequins démembrés, en compagnie de ses êtres sans visage est oppressant. Mais le passé doit rester le passé. Le présent se charge de le lui rappeler de manière violente.
Céline dépose alors Oscar à son dernier rendez-vous avant de ramener la limousine au hangar d’Holy Motors. Alors qu’on ne voit jamais le vrai visage d’Oscar, Céline masque enfin le sien en nous quittant. S’engage alors un épilogue entre les âmes de ces vaissaux guidant les gens vers leurs derniers voyages, comme s’amuse à le dire <a href="http://www.imdb.com/name/nm0136021/">Leos Carax</a>.
Ce film est déroutant : ce qui est réel semble irréel et inversement. Les standards sont bousculés. On ne comprend jamais vraiment le but à tout ceci. On se plait à repenser à <a href="http://www.serieslive.com/serie/code-quantum/153/">Code Quantum</a> dans lequel Sam voyageait de vie en vie afin d’aider les autres, accompagné d’Al. Les choses sont ici bien plus rapides, brutales. Al est devenu une femme et Ziggy une limo. Une manière de marqué l’impulsivité et le mouvement, alors que la série prenait son temps. Mais alors que tout va mal pour lui et que sa vie ne lui plait pas, pourquoi continuer ? Et nous, pourquoi continuer à regarder ce film qui semble décousu ? Comme le dit Oscar, on continue pour le spectacle. Et c’est pour cela qu’on va voir ce film. Profiter de l’esthétisme. Inspirer la méditation. Apprécier la vie. Arriver à sa conclusion, le cerveau bouillonne. La digestion est longue mais bénéfique.
A voir sans conteste.</p>
<p><img alt="" src="/assets/holy_motors.jpg" title="" srcset="/assets/resized/480/holy_motors.jpg 480w, /assets/holy_motors.jpg 500w" /></p>
La tontine : un penny bien placé
2012-07-18T12:02:45+02:00
https://francois.aichelbaum.com/2012/07/18/la-tontine-un-penny-bien-place
<p><img src="/assets/clauses-tontine-150x150.jpg" alt="La tontine" />{.left} La tontine : pensez à votre avenir, faites des projets, placez bien vos pennys, qu’ils disaient.
Ca fait quelques jours que je n’ai rien posté. Normal, rien de bien passionant ici bas. Hier, on m’a proposé une réunion Tupperware financier : me faire l’article sur les tontines. Alors qu’est-ce qu’une tontine ? Quels sont mes projets ? Ai-je signé un contrat ? On va voir tout ceci.</p>
<h2 id="késako-la-tontine-">Késako la tontine ?</h2>
<p>Déjà personnellement, me parler de tontine, de placement ou simplement de mettre des sous de côté, ça me fait tout de suite penser à Mary Poppins.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Ca, c’est fait, comme on dit. Mais késako une tontine, bande d’ignards ? Selon la page <a href="http://fr.wikipedia.org/wiki/Tontine">wikipedia</a>, ça serait : <em>la tontine est un contrat aléatoire correspondant au financement collectif de l’achat d’un actif financier ou d’un bien dont la propriété revient à une partie seulement des souscripteurs</em>. Voici pour la définition. Pour les curieux, je vous laisse lire le document pour l’histoire et les informations complémentaires. A l’habitude, c’est votre banquier ou un courtier en assurance qui vous contacte pour vous faire souscrire à une assurance vie ou un placement à long terme. Ca se passe en privé. Ici, <a href="http://www.conservateur.fr/">le Conservateur</a> utilise la technique des réunions Tupperware pour faire sa pub et attirer les <del>clients</del> mutualistes.</p>
<h2 id="indigestion--de-chiffres">Indigestion … de chiffres</h2>
<p>Après s’être fait mettre à l’aise par l’hôte de maison avec les classiques plateaux charcuteries/fromages/vins, le courtier commence son show. On va nous vendre l’histoire de la mutuelle non régie par un actionnariat et donc indépendante, vieille de près de 170 ans, oeuvrant toujours à l’intérêt de ses mutualistes, et toujours meilleure que la concurrence. Alors, oui, les chiffres annoncent beaucoup de choses, la revue de presse chante leur louange, mais bon il faut que ça interpèle.
Le but premier est de vous faire réaliser que le modèle de retraite partagée auquel on participe en France n’est pas à notre avantage et qu’on sera tous en faillite une fois arrivé à la retraite et qu’il y a aujourd’hui (selon les chiffres) un manque à gagner de 20% entre ce qu’on va toucher et ce dont on va avoir besoin. Enfin 20%, c’est pour les employés. Pour les cadres ou professions libérales, c’est bien pire et monte jusqu’à 45%. Mais la tontine est là pour réhausser le sacro-saint pouvoir d’achat</p>
<p>Bref, des chiffres alarmistes pour vous dire une chose : faites des projets et mettez de l’argent de côté … dans une tontine par exemple. Alors, pour ma part, d’autres points me choquent : l’idée du projet qui sera respecté et l’argent mis de côté.</p>
<h2 id="cétait-mieux-avant">C’était mieux avant</h2>
<p>Le Conservateur s’appuie sur son expertise de 170 ans pour nous garantir qu’il sait ce qu’il dit et que le modèle mis en place en 1844 est toujours valable aujourd’hui. Reste que le monde a changé, les moeurs aussi, tout comme les habitudes liées à l’emploi. Et que dire de la capacité des jeunes couples à pouvoir faire des projets ? Oui en 1844 ou encore pour la génération du baby-boom, il était courant de rester fidèle à son employeur toute sa vie, comme le couple était fidèle l’un à l’autre. Mais aujourd’hui, les changements de boulot en cours de route sont réguliers avec une moyenne, en 2010, de 7 ans pour 58% des actifs et 3 ans pour 25%. On est loin du poste à vie de nos parents. Et de manière amusée, les durées de vie des couples sont assez proches, avec un nombre sans cesse croissant des divorces. Alors les projets … Et c’est bien sûr sans prendre en compte une vie qui semble tenir à un fil toujours plus fin.
La partie financière n’est pas en reste avec une succession de crises au XXe siècle et en ce début de XXIe siècle, des marchés financiers qui régissent toujours plus notre vie quotidienne et des conséquences pesant sur les moyens pécuniers des jeunes couples. Avec les frais quotidiens en perpetuelle augmentation et de manière bien plus rapide que l’inflation annoncée par l’insee et des salaires en régression, le niveau de vie de ces couples est loin d’être idyllique et mettre de côté des 200€ mensuels recommandés par le courtier s’avère un calvère financier. Et justement, cela empêche tout projet autre que la retraite et encore plus de se préserver de toute situation d’urgence.</p>
<h2 id="round-1--fight-">Round 1 : fight !</h2>
<p>Avec ces éléments et bien d’autres dans les manches de mon t-shirt, je titille le courtier qui se rebiffe tel un chihuahua dans le coin d’une pièce : ça montre les crocs, ça grogne pour démontrer que les chiffres ont raison. Tout ça dans le but de contrer les arguments et pouvoir rassurer le reste de l’assistance. Mais bon, il cherche mais n’y arrive point. Il n’est jamais bon de s’exciter pour se justifier et soutenir sa position. Et les chiffres, on leur faire dire ce qu’on veut. Maintenant, dans l’absolu, il a raison : il faut, tant que possible prendre les devants et prévoir notre vieillesse, comme il faut prévoir demain. La tontine permet à moindre coup de se composer un capital honnête. Le dernier exemple était d’ailleurs intéressant.</p>
<h2 id="round-2--ko">Round 2 : K.O.</h2>
<p>Un couple de jeunes de 25 ans commence à se pencher sur la question. Chacun va mettre mensuellement 100€ répartis en deux tontines par tête (pour des raisons fiscales). La tontine choisie est une tontine avec rente sur 20 ans. Donc arrivés à 45 ans, ils se retrouvent avec leur rente. Cette rente, vu qu’ils n’en ont pas besoin (bah oui, ils bossent encore), il la réinvestissent de nouveaux dans des tontines de 20 ans avec pour objectif un capital. Arrivés à la retraite (oui on espère qu’elle soit toujours à 65 ans), le capital se débloque avec un joli montant de 372.000 € pour 48.000€ investi. C’est magique. C’est le rêve. Sauf que l’évolution de notre civilisation montre qu’à 65 ans on ne sera toujours pas à la retraite. Qu’on vivra toujours plus vieux. Qu’on changera toujours plus de taff. Que mettre de côté 200€ à 25 ans, c’est déjà trop tard. Qu’on devrait mettre 800€ tous les mois à 45 ans pour compenser, chose qui ne se fera pas. Bref, les chiffres du courtier annoncent le miracle qui existerait si l’on vivait encore 30 ans plus tôt, ce qui n’est pas le cas.</p>
<h2 id="and-the-winner-is-">And the winner is …</h2>
<p>Le concept de reprendre les réunions Tupperware pour présenter des produits financiers fait son affaire puisque l’ambiance est plus détendue, et que l’échange avec le courtier est plus franc et plus intéressant. Une heure de show, c’est chaud. C’est épuisant pour lui, mais un régal pour une personne comme moi. On ne peut que réagir. On essaie alors d’imaginer, de prévoir. Mais la vie est faite de contre projets qui remettent toujours tout en question, de nos jours. Pour autant, rien n’empêche de tenter de sauver nos vieux jours. Pas de signature, mais un intérêt relevé.
Pour clore, juste un phrase qui peut prendre son importance ici : <em>faites que le rêve dévore votre vie, afin que la vie ne dévore pas votre rêve</em>.</p>
Rock Forever : Rock'n'Roll is all about love, Babe
2012-07-12T00:18:25+02:00
https://francois.aichelbaum.com/2012/07/12/rocknroll-is-all-about-love-babe
<h2 id="et-dieu-créa-le-rock">Et Dieu créa le Rock</h2>
<p><img src="/assets/rock-of-ages-150x150.jpg" alt="Rock Forever (Rock of ages)" />{.left}</p>
<p>Vous savez tous ce que Dieu créa pendant les six premiers jours. Le septième, il ne s’est pas reposé : il a créé le Rock’n’Roll !
Combien de courants musicaux en sont nés ? Combien de destins s’y sont liés ? Combien d’enfants ont été conçus sur des banquettes arrières au son de ses rifts de guitare ? Le Rock est Vie. Le Rock est Amour.
Mais pour raconter cette partition de sentiments, Broadway créa la comédie musicale <a href="https://www.youtube.com/watch?v=iKGvQ-HAezo">Rock of Ages</a> (Rock Forever). Hollywood en fit un film.</p>
<h2 id="branchez-les-guitares-moi-jaccorde-ma-basse">Branchez les guitares. Moi j’accorde ma basse.</h2>
<p>Pourquoi mettre ce billet dans trois catégories ? Tout simplement parce qu’un film se regarde mais le rock s’écoute et se ressent. J’ai choisi ce film avec la peur au ventre. Peur que la bande son ne soit pas à la hauteur avec autant de reprises. Peur de l’interprétation de Tom Cruise qui me désespère de plus en plus à chacune de ses apparitions.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Mais bon, le casting regroupe quand même quelques chanteurs : Julianne Hough et Diego Boneta (deux chanteurs de Country), Mary J. Blige (the Queen of Hip-Hop Soul). Ceci permet un niveau de chant agréable forçant les autres acteurs à travailler. Le playback se ressent un peu trop malheureusement et laisse supposer un gros travail en studio pour corriger les voix. Pour autant, la playlist est généreuse et agréable. Au niveau des acteurs, je remercie qui de droit de n’avoir pas donné une trop grande importance à l’écran à Tom Cruise : son <del>encombrance</del> importance s’arrête à l’affiche du film.
Nous sommes projetés en 1987, excellente année pour le Rock sur le Sunset Boulevard de Los Angeles. La foule se déchire entre frigides coincés et amoureux <em>of the devil</em>. Nous y suivons l’arrivée de Sherrie dans la cité des Anges avec ses rêves de gloire musicale. Elle débarque donc de son Tulsa natal (Oklahoma), sans un sous, les yeux rivés sur le Bourbon Room, le bar rock N°1. Sa (mal)chance la mettra sur la route de Drew, son Don Juan, et toute la fine équipe du bar. Stacee Jaxx (alias Tom Cruise), l’idole de ces jeunes, est un mix entre Jim Morrison, Axl Rose, Keith Richards et Iggy Pop. Mais comme toute rock star, Stacee se fait désirer et donc n’apparaît que peu à l’écran. Une chance pour nous qui permet presque de savourer une prestation honorable du scientologue. Personnellement, je l’ai trouvé relativement “plat” (comme à son habitude) jusqu’à un certain regard de sa part lors de sa deuxième venue au Bourbon Bar. J’ai alors retrouvé le Tom des années 80 pendant quelques brèves secondes.</p>
<h2 id="rock--rock--rocknroll-">Rock ! Rock ! Rock’n’Roll !</h2>
<p>Pour le plaisir, voici donc les chansons qui ont été reprises. Mais dans leurs versions originales. Une playlist YouTube est <a href="https://www.youtube.com/playlist?list=PLDE02D747D9FBDECD&feature=view_all">disponible</a>.</p>
<ol>
<li>“<a href="https://www.youtube.com/watch?v=z92bmlcmyq0">Sister Christian</a>” / “<a href="https://www.youtube.com/watch?v=cI-BohBMeLk">Just Like Paradise</a>” / “<a href="https://www.youtube.com/watch?v=nC9P8-B42cA">Nothin’ but a Good Time</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=nx0guAlTsUg">Juke Box Hero</a>” / “<a href="https://www.youtube.com/watch?v=u0ZicY7Oqmg">I Love Rock ‘n’ Roll</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=0JRgHol94Xc">Hit Me with Your Best Shot</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=rm9CyNZfAjQ">Waiting for a Girl Like You</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=UrIiLvg58SY">More Than Words</a>” / “<a href="https://www.youtube.com/watch?v=3eT464L1YRA">Heaven (Warrant song)</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=SRvCvsRp5ho">Wanted Dead or Alive (Bon Jovi song)</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=AYT7y6lFJtw">I Want to Know What Love Is</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=SRwrg0db_zY">I Wanna Rock</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=AQ4xwmZ6zi4">Pour Some Sugar on Me</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=OqeKV2UYq1Q">Harden My Heart</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=ZInRE-KryGA">Get Nervous</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=DSlSaGcc0QM">Here I Go Again</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=aCVx2jrKKXQ">Can’t Fight This Feeling</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=atxUuldUcfI">Any Way You Want It</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=-gm3FyeW7FM">Undercover Love</a>” (euh … euh … bouuuuuuuuuuuuuh !! Du - faux - Boys Band !!)</li>
<li>“<a href="https://www.youtube.com/watch?v=c56vEgA4fjU">Every Rose Has Its Thorn</a>”</li>
<li>“<a href="http://www.youtube.com/watch?v=nsdj9NRzqC4">We Built This City</a>” / “<a href="https://www.youtube.com/watch?v=4xmckWVPRaI">We’re Not Gonna Take It (Twisted Sister song)</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=N5wVZwdHmRY">Don’t Stop Believin’</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=Rbm6GXllBiw">Paradise City</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=sxdmw4tJJ1Y">Rock You Like a Hurricane</a>”</li>
</ol>
<p>D’autres chansons arrosent nos oreilles de leurs notes, directement dans leurs versions d’origine. Une playlist YouTube est <a href="https://www.youtube.com/playlist?list=PL651143A189F8FB0A&feature=view_all">disponible</a>.</p>
<ul>
<li>“<a href="https://www.youtube.com/watch?v=jO4Bb1xQHXw">I Remember You (Skid Row song)</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=4bZmGtaqP68">Everybody Wants Some!!</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=e1V8GtZjWFQ">Rock of Ages (song)</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=Vt2Y78VgfNQ">Bringin’ on the Heartbreak</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=xCChxBSRo1Y">Talk Dirty to Me</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=3cc39bU4GZ0">No One Like You</a>”</li>
<li>“<a href="https://www.youtube.com/watch?v=KW2J_UZ8lQU">Cum on Feel the Noize</a>”</li>
</ul>
<h2 id="a-voir--non-juste-à-écouter">A voir ? Non juste à écouter</h2>
<p>Au final, malgré un très bon son dans les oreilles, un bon casting et des moyens non négligeables, les rôles sont sur-joués, les émotions non transmises et le spectacle qui se voulait détonnant fait office de pétard mouillé. A voir … en vidéo chez soi si vous voulez la vidéo, sinon autant allez acheter la BO.</p>
<p><img alt="" src="/assets/Rock-of-ages.jpg" title="" srcset="/assets/resized/480/Rock-of-ages.jpg 480w, /assets/Rock-of-ages.jpg 509w" /></p>
Starbuck : tiguidou !
2012-07-11T11:37:46+02:00
https://francois.aichelbaum.com/2012/07/11/starbuck-tiguidou
<h2 id="viens-che-nous">Viens che-nous</h2>
<p><img src="/assets/starbuck_movies-150x150.jpg" alt="Starbuck" />{.left} Nos cousins québécois, on les connait pour leurs expat’ musiciens. Mais leur joual s’exprime aussi au cinéma, plus rare dans nos contrées si ce n’est avec quelques acteurs. Place à Starbuck.
Cette fois, c’est un film de 2011 qui nous arrive au cinéma. Un sujet mêlant dans leur univers, sous titré pour les passages trop hardus à comprendre. Le titre laisse perplexe au début, mais la bande annonce impose d’aller voir le film.</p>
<h2 id="who-the-fuck-is-starbuck-">Who the fuck is Starbuck ?</h2>
<p>Comme quatre à cinq milliards d’humains le lendemain, on est tous à se poser cette question : mais, who the fuck is Starbuck ?</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>C’est El Masturbator. C’est l’histoire d’un jeune sans bidoux à la fin des années 80 qui vend sa semence à une banque de sperme plus de 600 fois. Un sperme d’une grande qualité puisqu’utilisé avec succès à 533 reprises. Ce jeune, 22 ans plus tard, la quarantaine approchant, se retrouve père géniteur de 533 enfants dont 142 veulent faire sa connaissance. Sauf qu’à 40 ans, David Wosniak est irresponsable, pire livreur de viandes au monde, incapable d’avoir une relation saine avec sa blonde et qui tente la culture hydroponique pour arrondir ses fins de mois.
Toute une descente d’un homme pour pouvoir mieux en rire. Et du rire, il y en a, malgré les différents sujets abordés : don de sperme, parents génétiques, droit à l’anonymat, homosexualité, handicap lourd, décallage, difficultés d’adaptation … Une certaine profondeur d’histoire, racontée avec une certaine légèreté : on est au bord des lieux communs des relations familiales. Découvrir tous ces enfants avec toutes ces vies compliquées vont éveiller chez David tout un tas de sentiments qu’il n’espérait sûrement pas. Il va vibrer, espérer, croire. Et nous avec lui. Entre les zoulous des mange-canayes qui le pourchassent, les banques qui se la jouent pawnshop, sa famille qui le prend pour le mouton noir, sa copine en balloune mais qui ne veut plus de lui, rien n’est fait pour qu’il marque.
Sauf justement ses 142 enfants qui l’espèrent et à travers leurs vies croisées vont le motiver à s’enmieuter. Qu’il soit footballeur pro, chanteur dans le métro (<a href="http://david-giguere.com/nouvelles.php">David Giguère</a>), acteur décrié, gamine y’é stone à mort et désabusée, ado goth ou encore son fils lourdement handicapé moteur, ses enfants ont tous une leçon à lui offrir de la même manière que lui peut devenir leur ange-gardien (et non leur super-héros en lycra).</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Et c’est là l’histoire d’une vie que nous offre David. C’est aussi la leçon qu’il nous apprend dans les larmes et les rires. Le film aurait pu basculé vers la banalité, mais s’en sort. Même la fin “conte de fée” où tout le monde il est heureux passe : pas d’autre choix pour appeler à l’ouverture d’esprit du public. A noter qu’on a pensé à vous autres qui ne connaissez pas le joual avec des sous-titres donc Pratique.. Pas de vrais temps-morts. A voir. A revoir. A respirer. A s’impreigner. A cogiter.</p>
<p><img alt="" src="/assets/starbuck.jpg" title="" srcset="/assets/resized/480/starbuck.jpg 480w, /assets/starbuck.jpg 520w" /></p>
Affaire Goldorak : conjugaison du verbe larguer
2012-07-10T12:42:07+02:00
https://francois.aichelbaum.com/2012/07/10/conjugaison-du-verbe-larguer
<h1><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/07/12t46czt.jpg"><img class="size-thumbnail wp-image-1840 alignleft" title="Goldorak" src="/assets/12t46czt-150x150.jpg" alt="Goldorak" width="150" height="150" /></a>L'affaire du millénaire : l'affaire Goldorak</h1>
<p style="text-align: justify;">Non l'affaire n'est pas une histoire de coeur. Quoique, cela puisse devenir une histoire de coeur pour certains. Après tout, Actarus et son Goldorak ont bercé l'enfance de nombre d'entre nous.</p>
<p style="text-align: justify;">Reste l'un des plus grands mystères de nos vies : mais pourquoi donc Actarus fait-il deux demi-tours au moment de son transfert de la soucoupe vers le géant de fer ? Le débat a duré longtemps, les esprits se sont déchaînés mais la réponse était ailleurs. Ou ici.<br />
<!--more--></p>
<h1>Transfert autolargue</h1>
<p style="text-align: justify;">Vous vous souvenez probablement tous de Goldorak. Pour les rares ignorants, vous avez loupé quelque chose. Mais rien n'est perdu, il vous suffit de trouver un "un peu plus vieux" que vous pour tout vous dire sur le sujet. En attendant, le mystère a fait grand bruit et ce matin, la pause café m'a imposé un billet sur le sujet : le transfert autolargue.</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=gx8KtPZsP6o[/video]</p>
<p style="text-align: justify;">Bon d'avance, je remercie l'auteur d'<a href="http://www.autolargue.net/">autolargue.net</a> pour les informations complémentaires que j'ai pu y glaner et mon frangibus à l'origine de bien des idées de conspirations. Donc oui, mais pourquoi deux demi-tours lors du transfert ?</p>
<p style="text-align: justify;">A l'inverse de son ancètre <a href="http://en.wikipedia.org/wiki/Mazinger_Z">Mazinger Z</a>, le navette de pilotage n'est pas un modèle réduit s'imbriquant dans le robot pour le contrôler. Ici, elle sert de module de vol pour le robot et s'en sépare pour les combats directs. De fait, il fallait permettre à son pilote de se transférer du vaisseau vers le robot. De là est né le transfert autolargue : une fois le pilote transféré, le robot est automatiquement largué.</p>
<p style="text-align: justify;">Mais lors de son tranfert, le siège du pilote tourne sur lui en deux temps pour opérer deux demi-tours. Nombres d'hypothèses ont été avancées et Go Nagai, créateurs des sagas de robots géants <em>Mazinger</em> et <em>Grendizer</em>, y a répondu d'une langue de bois inavouable pour éluder la question et garder la réponse toujours aussi secrète. Selon l'annonce officielle, Actarus est bien trop prudent et préfère se retourner.</p>
<p style="text-align: justify;">Or, Actarus ne décide de rien dans l'histoire. En effet, Goldorak est le Golgoth le plus puissant de l'armée de Vega et Actarus n'est qu'un vil voleur ayant soustrait le robot à ses propriétaires. Il n'est donc clairement pas le créateur du robot et n'a donc pas décidé de son fonctionnement ou des rouages du transfert. La réponse officielle du créateur de l'animé n'est donc pas viable. Reste à décortiquer la vidéo du transfert, de se souvenir de nos heures de Mécano et Lego, pour aboutir à de bien meilleures spéculations.</p>
<p style="text-align: justify;">Primo, l'ensemble des commandes (dont celle du transfert) est intégré au siège/nacelle dans lequel est installé le pilote. La seule commande permettant le transfert est une poignée à tirer. Personnellement, je me souviens de mes jouets (<a href="http://www.youtube.com/watch?v=ODKXsE1ZtKY">Mask</a> en tête par exemple) où une gachette (ou un bouton) dévérouillait le mécanisme complet de transformation. On en demande peu au pilote, c'est prédéfini. Simple mécanisme. D'ailleurs l'animation ne montre aucune autre commande à manipuler pendant le transfert (surtout au moment des demi-tours). L'intervention humaine, encore une fois est à réfuter pleinement.</p>
<p style="text-align: justify;">Secundo, la vidéo montre un double point important : le moment des deux demi-tours. L'un se produit une fois le siège arrivé dans le corps du robot, l'autre avant l'entrée du siège dans la tête qui sert de centre de commande. Un élément est absent de la vidéo et impose une supposition : le tunnel de transfert est intégré au vaisseau et au robot. Mais quelle partie du tunnel reste dans le robot après ? Personnellement je dirais que le coude reste avec la soucoupe et, le reste avec le robot. Ce qui aide à la démonstration.</p>
<p style="text-align: justify;">Tercio, la partie audio montre des bruits bien différents lors des rotations, ce qui suppose des mécanismes différents mis en place. Cela vient appuyer une thèse que la rotation est liée à la mécanique du transfert.</p>
<p style="text-align: justify;">Tout m'oriente vers ce qu'on peut voir sur les plateaux rotatifs pour chemin de fer ou encore les puzzles glissants.</p>
<p style="text-align: center;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/07/ROCO-42615.jpg"><img class="alignnone size-thumbnail wp-image-1843" title="Plateau rotatif de voies ferrées" src="/assets/ROCO-42615-150x150.jpg" alt="Plateau rotatif de voies ferrées" width="150" height="150" /></a><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/07/image003.jpg"><img class="alignnone size-thumbnail wp-image-1846" title="Puzzle glissant" src="/assets/image003-150x150.jpg" alt="Puzzle glissant" width="150" height="150" /></a></p>
<p style="text-align: justify;">L'idée est donc que le mécanisme nécessite un déblocage ou un dégoupillage pour passer d'un état à un autre. Dans le cas présent, le siège doit se désolidariser du rail de la soucoupe puis se solidariser au rail du robot pour finir par occuper le centre de commande.</p>
<p style="text-align: justify;">Ainsi, le siège, à la fin de la descente, arrive sur un butoire qui le force à se retourner, un nouveau rail le prenant alors en charge. Arrivé à l'entrée de la tête, le même type de mécanisme se reproduit pour le placer dans le bon sens. CQFD.</p>
<p style="text-align: justify;">La mécanique est donc simpliste, la conspiration absente et la prudence innocente. La simplicité de la raison serait-elle la cause de la langue de bois de Go Nagai ?</p>
<p style="text-align: justify;">Le premier générique de 78 en prime (mon préféré)</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=dOO3LgzXdYg[/video]</p>
<p style="text-align: justify;">Et la version de Noam</p>
<p style="text-align: center;">[video]http://www.youtube.com/watch?v=SvDsjWerRug&feature=related[/video]</p>
<p style="text-align: justify;">PS : c'est la faute à Henley.</p>
Météo : le jour d'après hier
2012-07-09T15:51:09+02:00
https://francois.aichelbaum.com/2012/07/09/le-jour-dapres-hier
<h2 id="on-est-en-novembre">On est en novembre</h2>
<p><img src="/assets/soleil-dorage-150x150.jpg" alt="Soleil d'orage" />{.left} L’un des principaux sujets de discussion, où que l’on soit ces derniers jours, c’est la météo. Il n’est pas rare d’entendre des “Mais c’est quoi ce temps de novembre ?” ou de lire des articles sur la mauvaise météo comme si le temps se déréglait. Où encore le titre du jour du parisien : “<a href="http://www.leparisien.fr/societe/l-ete-seulement-dans-le-sud-09-07-2012-2083370.php">L’été … seulement dans le sud</a>”. En étant en <a href="http://www.imdb.com/title/tt1190080/">2012</a>, on arrive sûrement à la fin du monde …</p>
<h2 id="cest-la-fin-du-monde">C’est la fin du monde</h2>
<p>Lorsque je vois la pluie des derniers jours, ca me fait immédiatement penser au <a href="http://www.imdb.com/title/tt0319262/">Jour d’après</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Certains y voient des prémisses de fin du monde. D’autres, la fatalité de l’industrialisation du monde. L’<a href="http://fr.wikipedia.org/wiki/Agent_Smith">agent Smith</a> lui, y voit les conséquences de l’existence du parasite humain. Bref, les théories sont nombreuses, toutes valables pour peu que l’on soit ouvert, aucune démontrée, pour autant, tout le monde sort sa science.</p>
<h2 id="on-sort-notre-science">On sort notre science</h2>
<p>Bon déjà, on vire la théorie des Mayas. Pour faire court, c’est un romancier (Steve Alten) qui a voulu se faire mousser en s’auto proclamant expert et, à coup de promotion nous a vendu sa prophétie.
Ensuite, replaçons aussi nos chers présentateurs TV à leur rang : les présentateurs de la météo ne sont pas des météorologues. Tout est dans leur titre : PRE-SEN-TA-TEUR. Alors, nous ressortir des statistiques comme cela leur chante, au final, on en revient à la manipulation de masse par les médias, tant adorée par les conspirationnistes et qui ici prend toute sa forme. Bref, passons.</p>
<h2 id="un-peu-de-concret">Un peu de concret</h2>
<p>Notre galaxie bouge dans l’univers. Notre système solaire bouge dans notre galaxie. Notre planète bleue bouge dans notre système solaire. Ce mouvement est à la fois sur une rotation ovoïdale autour du Soleil, mais également une rotation sur un axe en mouvement (rotation et bascule), axe dont l’inclinaison varie. La Lune aussi bouge. Tout bouge. Mais chacun de ces corps a une incidence sur l’autre. Les plus classiques et visibles, sont la météo et les marées par exemple.
Tout ceci pour en venir justement à ce que nous disaient nos chers Mayas (et autres civilisations anciennes, pré-colombiennes en tête) : tout est cycle dans le monde vivant. Ce qui fut dans un sens, sera dans un autre et inversement. L’axe de la Terre a pivoté plus d’une fois. De nombreuses ères glacières se sont succédées. Les saisons s’enchaînent. Lors d’une marée haute d’un côté, la marée est basse ailleurs. Les rivières sous marines tournent.
Ok très bien. Tout évolue. Pour autant si l’on suit les médias, la météo semble se dégrader de manière continue et irrémédiable, et les saisons ne plus être ce qu’elles devraient. Oui, mais. Oui tout ceci est un fait, mais parce que nous n’avons aucun recul du fait d’être “la tête dans le trou”, nous ne voyons réellement le pourquoi du comment. Oui il est sûr que l’industrialisation humaine a joué sur la vitesse de réchauffement du climat. Comme le dégazage sauvage de la part des dinosaures pourrait avoir causé <a href="http://www.sciencesetavenir.fr/archeo-paleo/20120509.OBS5196/les-dinosaures-des-usines-a-methane.html">leur perte</a>. Mais justement, parce que tout est cycle, le changement est lent et progressif. Après tout, on parle de millions d’années pour les périodes de vies des sauriens contre quelques millénaires pour l’humanité. Que de relativité. Alors que dire de la météo actuelle à notre échelle. Une simple averse dans la longue vie de la Terre.
Alors que se passe-t-il ? une accumulation de choses, plus ou moins naturelles, plus ou moins aidées par l’Homme. Voici une petite liste non exhaustive, crédibles ou non.</p>
<h3 id="les-rivières-sous-marines">Les rivières sous-marines</h3>
<p>Une idée avancée par Wallace Broecker consiste en l’étude de lents courants sous marins chauds s’étendant à travers les divers océans, et ayant des cycles de 1500 ans.
Ces courants influeraient sur la météorolgie globale du fait des écarts de température entre les eaux, de leur mouvement global (à distination des pôles) … Le géochimiste explique d’ailleurs dans sa thèse que le courant aurait ralenti de près du tiers de sa vitesse en un siècle, ce qui pourrait avoir de grave répercussion sur la météo (entre autres choses).</p>
<p>### L’industrialisation</p>
<p>Que cela soit l’industrialisation au sens premier depuis le XIXe siècle ou encore les théories bio-écologiques concernant la production de la viande. Que cela soit les modes d’agricultures, ou encore la génération de méthane par les bovins. Il faut dire ce qui est : les proportions des gaz constituant l’air terrestre ont drastiquement changé en deux siècles et impliquent des changements important au niveau de l’éco système. Ce point est indéniable mais n’explique pas tout à lui seul.</p>
<h3 id="le-cycle-de-la-météo">Le cycle de la météo</h3>
<p>Je disais donc que tout était cycle. Au niveau météo aussi. Certes il nous manque des données scientifiques pour de grandes périodes, mais certaines données sont suffisantes pour extrapoler une hypothèse valable. Arnaud Lemaistre le rapportait dans un document intitulé “<a href="https://docs.google.com/viewer?a=v&q=cache:lqXGG2RCU10J:www.palais-decouverte.fr/fileadmin/fichiers/infos_sciences/terre_univers/textes/286_Lemaistre.pdf+&hl=fr&gl=fr&pid=bl&srcid=ADGEESjMKW9896keXhpSow2o7Dy1inrM1HvuFt5LrkjuJS3yengENMUAA6ZYztLrrTxsoL4o-qwT32iDqwHBBmxIsXrP4e4oUw0DR6B73SVZHaa6PPN-alCXEfXS6MFW2lyszrdZCpsK&sig=AHIEtbR5N_WM3492FzRzLVJvKFKEqJeOPA&pli=1">Chronologie climatique du dernier millénaire en Europe</a>”. Ainsi, généralement, la température était bien plus basse avec un temps plus sec. D’ailleurs les hivers étaient plus marqués avec des températures négatives sur toute la période. Mais il y a eu une petite exception d’une trentaine d’année entre 1710 et 1740 où les températures sur l’année étaient équivalentes à celles d’aujourd’hui avant un brusque refroidissement. Notre situation n’est donc pas exceptionnelle, et l’époque citée permet d’innocenter temporairement la présumé-coupable industrialisation. De plus, l’augmentation sur le siècle concerné était de +1,9° contre “seulement” 0.6° pour le siècle dernier. Intéressant.
Dans le même ordre d’idées, certains ouvrages concernant l’époque moyennageuse rapportent des hivers en été et des étés en hiver. Difficile d’avoir des données concrètes cependant. La période de glaciation se produisit principalement avant le Xe siècle, les trois siècles suivant offrant une période chaude, propices aux voyages de nos cousins Vikings, par ex.
Enfin les périodes glacières s’étalent sur des périodes de 100.000 ans avec des périodes chaudes dites inter-glacières de 10.000 à 20.000 ans.</p>
<p>### Autres causes</p>
<p>Rapidement, une liste non exhaustive d’autres causes qu’on peut lire à gauche à droite :</p>
<ul>
<li>le changement d’axe de rotation de la Terre</li>
<li>les nazis planqués sur la <a href="http://www.ironsky.net/+">face cachée de la Lune</a></li>
<li>les ondes radios (téléphones, wifi, radios, TV, …) qui perturbent le champs magnétique terrestre</li>
<li>l’autre (c’est toujours la faute de l’autre)</li>
<li>le serpent qui se mort la queue : il fait de plus en plus chaud, donc fonte des calottes polaires donc réchauffement</li>
<li>la crise socio-économique (rah les banques et les traders !)</li>
<li>pratiques agricoles pour nourrir la population globale (enfin surtout le “Nord”)</li>
<li>les chinois islamistes du FBI</li>
<li>les cycles de l’activité solaire</li>
<li>42</li>
<li>la famille et les potes de Roswell</li>
<li>les changements géologiques (naturels ou humains) : désertification, déforestation, …</li>
<li>Obi-Wan Kenobi</li>
</ul>
<p>Je vous laisse faire le tri selon vos croyances ou compétences.</p>
<h2 id="quoi-quon-fait-">Quoi qu’on fait ?</h2>
<p>Tout et rien. Oui, il faut intervenir sur l’industrialisation qui peut se révéler plus que néfaste, mais elle ne peut supporter l’entière responsabilité des changements qui se produisent. On ne peut que constater un cumul entre les actions de la nature, les cycles et bien sûr l’intervention humaine ayant pour conséquence le changement, sa vitesse et son ampleur. Est-ce définitif ? La météo du XVIIIe siècle nous montre que non.
Alors profitez simplement de la vie. Profitez du soleil. Profitez de la neige. Profitez de la pluie. Qu’est ce que cela change que l’on soit en juillet ou mars ou que sais-je ? Adaptez-vous et profitez !
Pour finir, petit point qui me fait rire sur les écolos critiquant l’industrialisation : pour modéliser les différentes théories, les chercheurs utilisent les ordinateurs privés à la façon des projets Seti ou des projets sur le cancer … Seulement 150.000 ordinateurs qu’ils disent. Question, on les alimente avec quoi ? (question valable pour le rechargement des voitures électriques).</p>
The Amazing Spider-Man : j'ai une araignée au plafond
2012-07-05T23:37:59+02:00
https://francois.aichelbaum.com/2012/07/05/jai-une-araignee-au-plafond
<h2 id="un-redémarrage-nécessité-">Un redémarrage nécessité ?</h2>
<p><img src="/assets/spider-man-revele-identite-grd-150x150.jpg" alt="Spider-Man révèle son identité" />{.left} Alors qu’une première trilogie s’était affichée sur nos écrans entre 2002 et 2007 avec un <a href="http://www.imdb.com/name/nm0001497/">Tobey Maguire</a> en guise de Peter Parker/Spiderman peu convaincant dans le costume, Sony Pictures remet le couvert avec un redémarrage complet de la license. Cette fois-ci, c’est <a href="http://www.imdb.com/name/nm1940449/">Andrew Garfield</a> qui revêt la tenue rouge et bleue de l’homme araignée. Personnellement, vu les derniers comics, je pensais que Sony aurait suivi l’orientation de Marvel avec un <a href="http://hoodedutilitarian.com/wp-content/uploads/2012/06/1.jpg">Peter Parker afro-américain</a>. Mais il faut croire que l’ouverture n’aurait pas aidé aux entrées en salles. Sam Raimi avait accompli un superbe travail sur la précédente saga étalée sur la dernière décennie. Pas sûr qu’un redémarrage soit si nécessaire. Pour autant, quelques corrections étaient à apporter et la nouvelle saga en approche se propose de les corriger.</p>
<h2 id="du-gros-spectacle">Du gros spectacle</h2>
<p>Des erreurs corrigées, il y en a … Pourquoi Peter repliait seulement deux de ses doigts pour tisser sa toile ? Simplement pour déclencher un appareil de sa création qui la tisse ; non, ce n’est pas lui qui la “produit”. Mary-Jane ? Non ils ne se sont pas connus au lycée ; c’est Tante May qui voulait à tout pris le caser bien plus tard, son pauvre chéri au coeur brisé. Où accroche-t-il sa toile pour voler ? Simplement aux grues qu’on lui sert sur un plateau ; non ca ne tient pas dans le vide. Attention, on nous annonce non plus Spider-man mais The Amazing Spider-man et il va être époustouflant.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Cependant, ici aussi, quelques erreurs sont faites : cartographie de NYC, rencontre avec Curt Connors/The Lizard, absence d’Harry Osborn, … et surtout absence de LA phrase résumant la conscience de notre amical arachnide : “A grand pouvoir, grande responsabilité”. On a bien un simulacre de phrase pour nous la rappeler, mais le poids des mots n’y est pas. Dommage.
Dommage aussi la longue introduction, qui semble ramener le film à un teenage-movie lycéen. Mais, place au spectacle.
On commencera par apprécier le casting avec un très vieillissant Martin Sheen en Uncle Ben (non pas <a href="https://www.youtube.com/watch?v=y_EiyNv2NS0">Uncle Ben’s</a>, ni <a href="https://www.youtube.com/watch?v=C4XKNNl31Gc">Ben l’Oncle Soul</a>) - cela reste toujours un succès ; un charismatique <a href="http://www.imdb.com/name/nm0406975/">Rhys Ifans</a> que l’on a pu voir récemment en James Hook dans <a href="http://www.imdb.com/title/tt1720619/">Neverland</a> (mini série de Sy-Fy relatant la génèse de Peter Pan) ou en tant qu’un des sorciers dans <a href="http://www.imdb.com/title/tt0926084/">Harry Potter et les reliques de la Mort</a> ; une sexy Emma Stone très appréciée dans <a href="http://www.imdb.com/title/tt0926084/">Zombieland</a>.
Heureusement, le film ne se résume pas seulement à son casting ou à son introduction pubère à rallonge. Ses deux heures quinze se chargent de nous en mettre plein les mirettes pour nous faire oublier le travail de Sam Raimi. Et il faut dire que le spectacle est là, se déguste, le pop-corn disparaît bien trop vite et les acrobaties de l’araignée nous comble. Andrew nous fait d’ailleurs vite oublier un Tobey Maguire qui donnait une image niaise à Peter Parker.
La réal tient la route. Graphiquement, on en prend plein la vue. L’histoire est agencée dans une optique de saga à nous distiller longuement les secrets de l’univers. J’avais apprécié la précédente saga : je sens que je vais adoré la nouvelle saga qui s’amorce depuis hier dans les salles obscures.
Allez, pour la route, je vous laisse découvrir un <a href="https://www.youtube.com/watch?v=tfeoz2QPhVU">petit plaisir personnel du soir</a>.</p>
<p><img alt="" src="/assets/the_amazing_spider-man.jpg" title="" srcset="/assets/resized/480/the_amazing_spider-man.jpg 480w,/assets/resized/800/the_amazing_spider-man.jpg 800w,/assets/resized/1400/the_amazing_spider-man.jpg 1400w, /assets/the_amazing_spider-man.jpg 1920w" /></p>
Olala, pfff, je suis parisien !
2012-07-05T11:29:34+02:00
https://francois.aichelbaum.com/2012/07/05/how-to-become-parisian-in-one-hour
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/2012/07/05/olala-pfff-je-suis-parisien/"><img class="alignleft size-thumbnail wp-image-1786" title="How to become Parisian in one hour" src="/assets/78304-flyer-htbp-tdn-150x150.jpg" alt="How to become Parisian in one hour" width="150" height="150" /></a>Vous vous souvenez certainement de ma revue de <a href="http://francois.aichelbaum.com/2012/05/03/etre-parisien-cest-etre-un-eternel-incompris/">How to become parisian in one hour</a> d'Olivier Giraud ? Après avoir fait salle comble pendant 3 ans au théatre de la Main d'Or, il revient, dans une salle bien plus grand, le théatre des Nouveautés pour au moins un an. Il y fait encore le plein. On y rit encore et toujours pendant toute l'heure. Je crois qu'il faut que j'y retourne encore pour un autre shooting. Petit reportage photo ...<!--more--></p>
<p>PS: Olivier, pour l'exercice final, tu devrais faire monter un étranger pour jouer le parisien et un parisien pour jouer l'étranger.</p>
<p>[print_gllr id=1660]</p>
Les moines danseurs de Majuli
2012-07-03T19:55:36+02:00
https://francois.aichelbaum.com/2012/07/03/les-moines-danseurs-de-majuli
<h1><strong>Sattriya – danse sacrée (Assam, Inde du nord-est)</strong></h1>
<h2><strong>Spectacle conçu et dirigé par Bhabananda Barbayan</strong></h2>
<p style="text-align: justify;"><a href="http://francois.aichelbaum.com/wp-content/uploads/2012/07/Flyer-Majuli-681x1024.jpg"><img class="alignleft size-thumbnail wp-image-1516" title="Les moines danseurs de Majuli" src="/assets/Flyer-Majuli-681x1024-150x150.jpg" alt="Les moines danseurs de Majuli" width="150" height="150" /></a>Depuis dix ans, le sattriya fait officiellement partie des huit danses classiques principales de l’Inde. Sattriya vient du mot « sattra » qui désigne les monastères hindouistes de l’Assam (nord-est de l’Inde) fondés au XVème siècle par le maître Srimanta Sankardeva (1449-1568). La danse sattriya fut créée pour accompagner les Ankiya Naat, une forme locale de théâtre dévotionnel consacré aux épisodes de la vie de Krishna et Rama.</p>
<p style="text-align: justify;">Les moines danseurs de Majuli constituent aujourd’hui la meilleure troupe de sattriya de l’Assam. Artiste au charisme exceptionnel, Bhabananda Barbayan figure parmi les danseurs les plus primés dans sa discipline. Héritier d’une transmission ininterrompue depuis cinq siècles dans les monastères, il guide les moines danseurs de Majuli au-delà des frontières des sattras, de l’Assam et de l’Inde. De magnifiques lampas (lés de soie) de l’Assam datés des XVIème/XVIIIème siècles conservés au musée Guimet seront le fil conducteur de ce nouveau spectacle. Les lampas ont été conçus du vivant du fondateur du sattriya et nous en montrent l’exacte origine : la vie de Krishna, les avatars de Vishnu, Narasimha (homme-lion), les aventures de Ram, Sita, Hanuman (singe), Ravana (démon), etc. Souhaitant apporter un souffle nouveau à la tradition tout en préservant le style chorégraphique propre au sattriya, Bhabananda Barbayan a intégré ces soieries dans la scénographie. Il a notamment opéré d’importants changements dans la création des masques et des costumes, inchangés depuis des siècles. Le plaisir de découvrir le sattriya classique dans sa forme la plus pure se mêlera à la magie de voir les personnages des soieries anciennes prendre vie grâce à la danse, la musique, le chant, le jeu d’acteur et les masques.</p>
<p>Plus d'information sur leur tournée, sur <a href="http://majulitour.com/">Majitour</a>.</p>
<p>[print_gllr id=1513]</p>
<p><em>Le texte provient du site du <a title="Musée Guimet - Les moines danseurs de Majuli" href="http://www.guimet.fr/fr/auditorium/spectacles/les-moines-danseurs-de-majuli" target="_blank">musée Guimet</a>.</em></p>
Okay café : crêpe à l'eau
2012-06-29T18:43:35+02:00
https://francois.aichelbaum.com/2012/06/29/crepe-a-leau
<p>Avec une météo mitigée qui nous rappelle la Bretagne, pourquoi ne pas manger une crêpe, mais les pieds dans l’eau ? C’est ce que nous propose l’<a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=okay+caf%C3%A9,+paris&aq=&sll=46.75984,1.738281&sspn=14.426196,33.815918&vpsrc=0&ie=UTF8&hq=okay+caf%C3%A9,+paris&hnear=&radius=15000&t=m&z=13&iwloc=A&cid=2367635947479408110">Okay Café</a>, situé sur le canal de l’Ourcq à Paris.</p>
<p><img alt="" src="/assets/okay_cafe.jpg" title="" srcset="/assets/resized/480/okay_cafe.jpg 480w, /assets/okay_cafe.jpg 500w" /></p>
<h2 id="ambiance">Ambiance</h2>
<p>Le cadre, extérieur comme intérieur, fait plaisir : le restaurant et sa terrasse sont posés sur les quais du canal avec une déco simple mais plaisante. On est vraiment les pieds dans l’eau et à part la pollution, on pourrait se croire à la mer (merci les mouettes parisiennes). Petit plus vu le volume disponible, un coin jeu pour les gamins est prévu à l’intérieur. De quoi ravir tout le monde. L’équipe quand à elle est disponible et vraiment agréable, bien que non bretonne : personne n’est parfait !</p>
<h2 id="nourriture-et-boisson">Nourriture et boisson</h2>
<p>Niveau prix, la carte annonce des tarifs dans la moyenne ce qui est agréable avec des crêpes entre 9 et 13€. Dans cette ligne directrice de la moyenne, le goût et la garniture des crêpes se développent : ni exceptionnel ni mauvais. A croire que le cadre devrait tout faire. Dommage car une garniture plus fournie ou des ingrédients aux goûts plus marqués auraient fait un énorme plus.
Par contre, le cidre fermier se boit très bien, et sa fraîcheur fait du bien avec les chaleurs (rares ?) des derniers jours.
Au final, une crêperie agréable au cadre parfait pour les petits restos d’été à Paris.</p>
The Dictator : Aladeen a dit : "Aladeen !"
2012-06-26T11:06:32+02:00
https://francois.aichelbaum.com/2012/06/26/aladeen-a-dit-aladeen
<p><img src="/assets/aladeen-150x150.jpg" alt="Aladeen" />{.left} <em>Imaginez que l’Amérique soit une dictature. Vous pourriez laisser 1% des gens posséder toutes les richesses du payer. Vous pourriez laisser vos amis s’enrichir en baissant leurs impôts et combler leurs pertes. Vous pourriez interdire aux pauvres les remboursements de santé et l’éducation. Vos médias seraient entièrement libres mais aux mains d’une seule personne et sa famille. Vous pourriez torturer des prisonniers étrangers. Vous pourriez trafiquer les élections. Vous pourriez mentir sur les raisons d’aller en guerre. Vous pourriez remplir vos prisons avec un groupe particulier de personnes et personne ne s’en plaindrait. Vous pourriez utiliser les médias pour effrayer les gens pour qu’ils supportent une politique qui va à l’encontre de leurs intérêts.</em>” … Oui, ne faisons qu’imaginer.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Après tout, Kim Jong-Il considère que ce film est de la bombe. Alors pouvons-nous être d’accord avec un dictateur ? Mis à part leur complexe de supériorité, leur délire psychotique, leur démesurée ridicule (je vous laisse comprendre), ce sont des hommes comme les autres … Nous sommes d’accord sur notre désaccord. Ce film est de la bombe. Mais les dictateurs ne sont pas comme vous et moi. Quoi qu’ils sont peut-être comme moi (concernant leur égo) : bah oui, ce n’est pas moi qui vais être comme eux !
Comment résister aux explosions de rire que nous confère le film tout au long de sa petite heure et demie. <a href="http://www.imdb.com/name/nm0056187/">Sacha Baron Cohen</a> enfile le costume du dictateur Aladeen regroupant tous les stéréotypes médiatiques des dictateurs récemment tombés ou morts. Un dictateur inculte, champion de ses propres JO, acteur oscarisé à de multiples reprises à sa propre remise de prix pour ses propres films, aimé d’un pays <em>motivé</em> à l’aimer, … Aladeen est parfait en tout point. Tout lui réussit s’il l’a décidé. Sinon … couic …
Reste que le pouvoir attire toujours la convoitise, surtout de ceux qui veulent en plus l’argent. Et là, c’est le drame. Le voyage politique à New York se transforme en putsch presque raté qui nous offre l’une des meilleures comédies de l’année, dans la droite ligne de ce que nous avait offert Borat et son voyage en Amérique profonde. Les stéréotypes sont amplifiés. La bien pensante amérique malmenée. La politique bénéfique ridiculisée. Et bien sûr, l’argent ne fait pas le bonheur mais achète tout le monde, les artites en tête de liste (<a href="http://www.imdb.com/name/nm1083271/">Megan Fox</a>, <a href="http://www.imdb.com/name/nm0001570/">Edward Norton</a>, …)
Aladeen nous offre donc un film Aladeen. Il est donc Aladeen d’aller le voir pour s’Aladeen de rire. Un avis Aladeen sans Aladeen. Juste Aladeen.</p>
<p><img alt="" src="/assets/the_dictator_2012.jpg" title="" srcset="/assets/resized/480/the_dictator_2012.jpg 480w, /assets/the_dictator_2012.jpg 560w" /></p>
Dias de Gracia : Coup de sifflet final
2012-06-20T12:01:03+02:00
https://francois.aichelbaum.com/2012/06/20/coup-de-sifflet-final
<p>Hier soir, le Mexique nous a offert un match de haut rang : le Mexique ensoleillé de la carte postale contre le Mexique violent de la réalité. Le match s’annonçait dur, sauvage, animé. Deux heures de spectacle où les aficionados des Coupes du Monde <a href="http://fr.wikipedia.org/wiki/Coupe_du_monde_de_football_de_2002">2002</a>/<a href="http://fr.wikipedia.org/wiki/Coupe_du_monde_de_football_de_2006">2006</a>/<a href="http://fr.wikipedia.org/wiki/Coupe_du_monde_de_football_de_2010">2010</a> étaient les seuls à comprendre le rythme effréné. Ce fut un jour de grâce pour les joueurs. Ce fut leur <a href="http://www.imdb.com/title/tt1450320/">Dias de Gracia</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Destins croisés entre un jeune boxeur désabusé et perdu, un flic hyper motivé et très manichéen et un otage de la haute. Le tout narré au long de 8 ans, rythmé par les coupes du mondes qui servent de point de repère temporel. Autant dire qu’un néophyte en foot se perdra très vite. Le match s’averrant bien long avant le dénouement permettant de tout remettre à sa place.
Dans un pays qu’on dépeint souvent avec son soleil, sa téquilla ou son shivas, ses plages au Spring Break, nous découvrons un envers du décors bien plus violent ou la corruption est reine et fait partie, avec sa soeur <em>violence</em>, du quotidien de tout à chacun. Qui sont les arbitres ? Y en a-t-il vraiment ? Qui contrôle quoi ? Quelle est la vraie vie de chacun ? Un grand médecin (<a href="http://www.serieslive.com/serie/dr-house/386/">Dr. House</a> pour ne pas le citer) nous disait : “Tout le monde ment”. C’est bien là le soucis, dans ce pays totalement perdu où il est si facile de se perdre soi-même.
L’action est ultra nerveuse. La caméra affolée. L’ambiance sur-chauffée. On accroche très vite. Et pour moi, qui suis anti-foot et donc sans connaissances réelles sur les Coupes du Monde, j’ai quelque peu souffert de la chronologie décousue et rafistolée à coup d’annonces de match à la radio ou d’images rapides à la TV. Ca m’a presque gâché le plaisir. Le concept est là. La qualité aussi. On sent que le Mexique vit pour le foot par moment et c’est dommage pour certains d’entre nous. Pour autant, à voir et à subir. Coup de sifflet de fin.</p>
<p><img alt="" src="/assets/DiasdeGracia.jpg" title="" srcset=" /assets/DiasdeGracia.jpg 450w" /></p>
Blanche Neige et le chasseur : neige sombre et le miroir pas si enchanté
2012-06-19T15:35:29+02:00
https://francois.aichelbaum.com/2012/06/19/snow-dark-et-le-miroir-pas-si-enchante
<p>Il est bon de croire que cette année audio-visuelle (saison 2011-2012) est celle des reprises de contes. Après tout, la télévision nous a offert <a href="https://www.youtube.com/watch?v=uar1rWVAJV0">Grimm</a> et <a href="https://www.youtube.com/watch?v=15__iA1MTqc">Once upon a time</a>, deux séries prometteuses (et prolongées), alors que le cinéma nous offre deux versions de Blanche Neige en moins de deux mois (<em><a href="http://www.imdb.com/title/tt1667353/">1</a> et <a href="http://www.imdb.com/title/tt1735898/">2</a></em>). Et ce, sans parler des adaptations distribuées directement en vidéo. Pour autant, chaque version apporte sa touche au conte. Cette fois-ci, on s’intéresse à la version sombre.<!--more--></p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>On a tous en tête au moins la version de <a href="https://www.youtube.com/watch?v=eyjc8txuG44">Disney</a>. Coloré, (en)chantant, … Disons que les <em>Bisounours</em> ont muri et se racontent trop d’histoire en étant beurrés. Ca devient sombre, glauque et presque sale. C’est un peu le même effet que la Marâtre opère sur son monde. De toutes les versions <em>live</em> du conte qu’on ait pu voir à l’écran, il est une chose certaine, c’est que Charlize Theron est LA reine dont il faut se souvenir : magnifique, imposante, ensorcellante, puissante … Pour autant, sa beauté est une tragédie pour son monde.
A moins que sa <em>Dear, Dear Snow White</em> puisse tous les sauver. Et là, c’est le drame. Blanche Neige est censée être belle, pleine de vie, souriante, chantante … Oui, le film nous dit qu’elle est la Vie et que la Nature l’aime. Mais, il y a un énorme hic. On nous impose la morne Kristen Stewart qui a bien du mal à sourire même pour les plus belles choses (rien que son sourire forcé du dernier écran est bien douloureux). Puis bon, on est dans une version “sombre”, alors il faut qu’elle devienne guerrière pour que ca saigne ! Là encore, c’est le drame : elle se veut meneuse d’hommes. Pour un conte anti féministe quelque part, où la femme ne vaut que pour sa beauté éphémère (voir la tirade de Charlize Theron à ce sujet), clairement le monde est peuplé de Simplet. Quelques battement de cils, et la pire harangue pour motiver les troupes de tous les temps suffit à tous les motiver à se faire trucider.
Bien sûr, le titre du film nous en prévient, elle est assistée du Chasseur. Pour camper le rôle, c’est Thor (Chris Hemsworth) qui s’y colle. A croire qu’il est séduit par les petites brunettes, le Viking… Alors attention, cette fois-ci, on ne lui demande pas d’être (juste) musclé, ni humaniste, mais aussi d’avoir un coeur d’artichaut. Il en est bien affaiblit le grand gaillard. Son jeu aussi.
<em>Mirror, Mirror on the wall</em> est lui quasi transparent. On a beau le voir, planté là, imposant de son reflet d’or, pour autant … il aurait pu être ailleurs, ca n’aurait pas été bien grave. C’est comme le bon “Prince” qui n’est plus que simple fils de Duc et qui, à part vouloir jouer au docteur avec la Princesse, ne sert plus à grand chose. Par contre, les septs nains, et les acteurs choisis (Bob Hoskins, Ian McShane, Toby Jones, Eddy Marsan, Nick Frost, …), sont tout bonnement parfaits dans leurs rôles. Par contre, si vous vous mettez à siffloter en vous <em>remettant au boulot</em> (<em>getting back to/from work</em>), vous risquez de vous faire décapiter par Grincheux.
Au final, une affiche prometteuse pour nous oublier la version colorisée avec Julia Roberts, un casting qui serait parfait avec une autre Blanche Neige, de beaux écrans, une bande son bien sympa, des nains sur puissants … Ce film avait tout pour être un bon. Mais l’actrice et l’adaptation en lui même du rôle de Blanche Neige font tâche et pourraient gâcher le film. Heureusement, la reine Ravenna nous permet de passer un bon moment et compense ce raté.
Au passage, pour ceux que ca intéresse, un peu de culture, ca ne fait pas de mal donc on demande à notre ami <a href="http://fr.wikipedia.org/wiki/Blanche-Neige">Wikipedia</a>.</p>
<p><img alt="" src="/assets/SnowWhiteHuntsman.jpg" title="" srcset="/assets/resized/480/SnowWhiteHuntsman.jpg 480w, /assets/SnowWhiteHuntsman.jpg 640w" /></p>
21 Jump Street : l'abus de drogue est dangereux pour la santé
2012-06-15T14:07:49+02:00
https://francois.aichelbaum.com/2012/06/15/labus-de-drogue-est-dangereux-pour-la-sante
<p>Il y aura un avant et un après 6 juin 2012. La sortie d’un film a scindé le monde en deux catégories : les vieux et les jeunes. Les vieux, ce sont ce qui regardait la TV le samedi matin dans les années 80/90 pour regarder les exploits de jeunes flics infiltrant les lycées pour démenteler des réseaux de drogues ou attraper des violeurs. Les jeunes, ce sont ces gens de la génération Z, qui n’ont pas connu tout ca. Après ce 6 juin 2012, les premiers se drogueront pour oublier, les derniers continueront à se droguer.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Ce film c’est l’adaptation ciné de <a href="http://www.imdb.com/title/tt1232829/">21 Jump Street</a> (<a href="http://www.imdb.com/title/tt0092312/">rappel de la série d’origine</a>). A la base, la bande annonce m’avait décidé à fuir le film. Au final, Henley confirmant que j’avais raison de le faire a titillé ma curiosité : il est bien connu que j’ai toujours raison mais de là à avoir raison sans savoir … Il fallait que je juge sur pièce.
Pour moi, <em>21 Jump Street</em>. ce sont les aventures d’<a href="http://www.imdb.com/name/nm0005372/">Hoffs</a>, <a href="http://www.imdb.com/name/nm0629006/">Ioki</a>, <a href="http://www.imdb.com/name/nm0217938/">Penhall</a> et bien sûr <a href="http://www.imdb.com/name/nm0000136/">Hanson</a>, le tout orchestré par le <a href="http://www.imdb.com/name/nm0931736/">Capitaine Fuller</a>, ces jeunes officiers s’infiltrant dans les écoles pour parler de choses sérieuses sur un ton sérieux limite sombre et moralisateur, dans une amérique en délabrement. Mais aujourd’hui le sérieux n’est pas vendeur. Par contre des <em>teenage movies</em> à la <a href="http://www.imdb.com/title/tt1636826/">Project X</a>, ca c’est vendeur. Pour le reste, c’est le Deputy Chief Hardy qui nous l’explique.</p>
<blockquote>
<p>Nous réactivons un ancien service d’infiltrations policières mis sur pieds dans les années 80 et nous le mettons à l’heure d’aujourd’hui.
Voyez vous, les gens chargés de ces services n’ont aucune créativité et sont totalement à court d’idées alors tout ce qu’ils savent faire c’est recycler de vieux trucs du passé et espérer que personne ne re-marquera rien.</p>
</blockquote>
<p>Voilà tout est dit : une license à succès existe et il y a surement moyen de s’en mettre plein les poches 20 ans après l’arrêt de la série. Ca sent la parodie à plein nez, le teenage movie sur joué (et mal joué), l’ambiance <em>m’as-tu vu</em> des banlieues chics, l’absence complète de caractère … Et une fois qu’on a passé le quart d’heure d’intro en se forçant à supporter le film, on prend notre rail pour voir un ce navet qu’il faudrait renier. D’ailleurs, je me demande comment les acteurs de la série ont pu accepter d’y participer (Peter DeLuise, Holly Robinson et surtout Johnny Depp) ! D’ailleurs, la chapelle n’est plus la même … Et on se coltine un Christ Coréen, <em>qui n’a pas le temps de s’ocupper de vos conneries, il a déjà bien à faire avec ses merdes coréennes</em>.
L’usage de la license n’est qu’un prétexte éhonté pour une sur-enchère devenue habituelle sur grand écran, où rien n’est fait pour être sérieux. D’ailleurs, plus d’une fois, j’avais l’impression de revoir <a href="https://www.youtube.com/watch?v=Q6hwjSXUUv8">News Kids Turbo</a>. On pourrait se dire que la méthode est là pour faire assimiler à la génération Z certains concepts quant à l’utilisation de la drogue. Mais même là, c’est loupé et la morale échappe à tout contrôle. Décevant en tout point. Et dire qu’ils se sont laissé une porte ouverte à une suite.
Les rares bons points selon moi de ce film ?</p>
<ul>
<li>la voiture</li>
<li>la présence des anciens (encore une fois, le duo Penhall/Hanson est à savourer)</li>
<li>le générique de fin</li>
</ul>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Vous voulez aller le voir ? si vous êtes “vieux”, droguez-vous, sinon, droguez vous.</p>
<p><img alt="" src="/assets/21jump.jpg" title="" srcset="/assets/resized/480/21jump.jpg 480w, /assets/21jump.jpg 674w" /></p>
Les filles ne comptent pas pour des pêches
2012-06-11T11:22:25+02:00
https://francois.aichelbaum.com/2012/06/11/les-filles-ne-comptent-pas-pour-des-peches
<p><img src="/assets/peche-150x150.jpg" alt="peche" />{.left} Ah, la cérémonie du mariage : les sourires (faux-culs ?), la boisson, les histoires, … les demoiselles d’honneur qui détestent toutes la mariée …
C’est ainsi que nous faisons la connaissance de cinq demoiselles d’honneur, au fil de la pièce d’Alan Ball, <a href="http://www.billetreduc.com/66954/evt.htm">5 filles couleur pêche</a>. Entre alcool et joints, déboires amoureux, vies sexuelles <em>compliquées mais débridées</em>, relations avec la mariée, hommes à femmes, … elles nous font vivre leurs sentiments et ressentiments. Tous les sujets y passent, même les plus sérieux, déclenchant l’hilarité du public.<!--more-->
Comment garder son sérieux quand on les voit toutes plus folles les unes que les autres, rêvant de leurs ébats dans les poubelles ou utilisant la religion comme excuse à tout et surtout à la niaiserie. On ne peut que se rompre de rire de leurs extravagances et leurs folies.
Personnellement, la seule critique que je ne me suis pas gêné de dire aux filles : c’est trop court, on avait encore le temps !
Il ne vous reste qu’une seule et unique représentation parisienne, le 24 juin. C’est au <a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=sonart,+paris&aq=&sll=46.75984,1.738281&sspn=14.426196,33.815918&vpsrc=0&ie=UTF8&hq=sonart,&hnear=Paris,+%C3%8Ele-de-France&ll=48.871151,2.356396&spn=0.054084,0.132093&t=m&z=14&iwloc=A&cid=2439162054154969027">Sonar(t)</a> à Pigalle, c’est gratuit (enfin boisson obligatoire et chapeau pour les filles). A voir. Sinon, vous pourrez les suivre à Avignon cet été !</p>
<p><img alt="" src="/assets/5filles.jpg" title="" srcset="/assets/resized/480/5filles.jpg 480w, /assets/5filles.jpg 700w" /></p>
Prometheus : promettez nous de ne pas crier dans l'espace
2012-06-10T13:26:44+02:00
https://francois.aichelbaum.com/2012/06/10/promettez-nous-de-ne-pas-crier-dans-lespace
<p>A la question “qui sont nos créateurs ?”, il est maintenant dans la culture populaire de croire que nos anciennes civilisations avait la réponse : nos dieux-créateurs étaient des extraterrestres. Dans ces conditions, si vous trouvez la route pour aller leur passer un petit coucou, pourquoi ne pas le faire ? C’est ce que nous propose <a href="http://www.imdb.fr/name/nm0000631/">Ridley Scott</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Comment parler de la polémique du film sans spoiler ou sans critique les cinéphiles du dimanche ? Tout simplement en une phrase : “si ca en a le goût, si ca y ressemble, si ca a la consistance et si ca vient de la même bestiole, c’est que c’en est”. Ca c’est dit. Passons.
L’intro du film, j’ai mis 24 heures a réellement en comprendre tout le sens et franchement, c’est abusé. On nous la balance à la figure, on s’attend à quelque chose, puis d’un revers de main on passe à autre chose qui n’a aucun lien. Ridley, si tu me lis, c’est la première fois que tu me déboussoles et me perds ainsi : je suis surpris mais surtout déçu.
Quoiqu’il en soit, l’art visuel est là : l’image est belle, l’action net, les couleurs dépaysantes, la bande son ennivrante. Mais est-ce suffisant pour nous empêcher de crier ? Pas sûr.
Vingt cinq ans avant les mésaventures du Nostromo, le Prometheus part à la rencontre de nos créateurs et ne trouvera que notre fin. Découvrir ce monde de création et de destruction offre tellement de possibilité de terreur que les sentiments autres n’y trouve pas leur place. D’ailleurs, c’est le capitaine qui nous le fait remarquer : “Etes-vous humaine ?” On explore donc cette planète, les poils hérissés pour certains, les mains crispées pour d’autres, les doigts pleines du caramel des popcorns pour les derniers. Le voyage promis est là.
Une jolie carte postale d’horreur spatiale que l’on se plait à voir.
Mais souvenez-vous :</p>
<blockquote>
<p>Dans l’espace, personne ne vous entendra crier.</p>
</blockquote>
<p>Bon pour le spoil : non ce n’est pas un clin d’oeil, <strong>bande d’ignards</strong> !</p>
<p><img alt="" src="/assets/Prometheus.jpg" title="" srcset="/assets/resized/480/Prometheus.jpg 480w, /assets/Prometheus.jpg 800w" /></p>
Blend : Le burger se fait gourmet
2012-06-10T13:04:59+02:00
https://francois.aichelbaum.com/2012/06/10/le-burger-se-fait-gourmet
<p>La France a eu sa mode du restaurant chinois, puis celle du japonais. Aujourd’hui c’est le burger. Combien de restaurant ouvrent avec pour seule carte des variations sur le burger ? J’avais déjà eu l’occasion de tester <a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=hand,+paris&aq=&sll=46.75984,1.738281&sspn=20.889338,47.878418&vpsrc=0&ie=UTF8&hq=hand,&hnear=Paris,+%C3%8Ele-de-France&t=m&z=15&iwloc=A&cid=5647606194305929415">HAND</a> (d’ailleurs il faudra le rester pour vous gratifier d’un billet), mais je n’avais pas encore fait dans le burger gourmet. C’est la proposition de <a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=blend+paris&aq=&sll=48.865724,2.336706&sspn=0.039156,0.093513&vpsrc=0&ie=UTF8&hq=blend&hnear=Paris,+%C3%8Ele-de-France&ll=48.859605,2.351074&spn=0.039161,0.093513&t=m&z=15&iwloc=A&cid=2983489397591399632">Blend</a> dans le quartier de Montorgueil. Goutons.</p>
<p><img alt="" src="/assets/Blend.jpg" title="" srcset="/assets/resized/480/Blend.jpg 480w,/assets/resized/800/Blend.jpg 800w, /assets/Blend.jpg 944w" /></p>
<h2 id="ambiance">Ambiance</h2>
<p>L’ambiance est épurée, design, relativement sobre et simple. Cependant tout est fait pour aller vite. On se tassera à plusieurs couples différents par table si l’on est pas venu en groupe de quatre, on s’assiera sur de simples mais lourds tabourets en bois, on lira la carte sur un simple bout de papier glissé dans une fente en milieu de table. Au passage, concernant la carte, petite erreur de leur part, la carte affichée en grand à l’entrée du restaurant ne correspond pas à celle proposée à table. Inutile de réfléchir à l’avance pour occuper les 30 à 45 minutes d’attentes aux heures de pointe. Le personnel bien que sympathique vous fera comprendre qu’il faut aller vite. On fait dans le gourmet, pas dans la discussion ici !</p>
<h2 id="nourriture-et-boisson">Nourriture et boisson</h2>
<p>Cinq burgers, aux noms sobres mais aux compositions très classieuses, émoustillent nos papilles d’avance et nous posent de sérieux dilème quant au choix à faire pour le diner. Venir nombreux aide à résoudre : chacun en prendra un différent pour partager et faire goûter aux autres.
Que cela soit la viande cuite de manière parfaite, le steak de mozarella qui vous en offre une bonne portion d’un goût esquit, ou encore les frites maisons aux patates douces, que de ravissement pour le palet. Et que dire du pain brioché maison ? Le tout servi dans une petite barquette métale simplicime.
Bien sûr, un bon repas s’accompagne d’une bonne boisson. On nous propose ici des bières assez exotiques (la Bellerose ou encore la californienne Sierra Nevada) qui s’accomoderont idéaliement aux burgers.
On achève cet exercice culinaire par le dessert. Le choix du jour s’est porté sur le cupcake chocolat : je dirais très bien, mais pas excellent. Le moelleux au chocolat servant de base peut s’améliorer.
Reste que cette adresse est à recommander et à tester, plusieurs fois, pour confirmer la qualité. Non je ne suis pas gourmand ! D’ailleurs, avec un repas “normalement humain”, pour une fois, j’ai été rassasié. A noter.</p>
La classe : on ne parle pas en classe
2012-06-10T12:15:00+02:00
https://francois.aichelbaum.com/2012/06/10/on-ne-parle-pas-en-classe
<p>Une ambiance de classe comme nous avons pu en avoir que l’on soit trentenaire ou plus, une carte prometteuse, voilà ce que nous offre la <a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=La+Classe,+Rue+de+Maubeuge,+Paris&aq=0&oq=la+classe,+&sll=46.75984,1.738281&sspn=20.889338,47.878418&vpsrc=0&ie=UTF8&hq=La+Classe,&hnear=Rue+de+Maubeuge,+Paris,+%C3%8Ele-de-France&t=m&z=17&cid=2519009725032060842&iwloc=A">Classe</a> (Paris 9e).</p>
<p><img alt="" src="/assets/LaClasse.jpg" title="" srcset="/assets/resized/480/LaClasse.jpg 480w, /assets/LaClasse.jpg 750w" /></p>
<h2 id="ambiance">Ambiance</h2>
<p>Les tables sont de tailles adultes mais impossible de ne pas se souvenir à quel point les nôtres pouvaient être petites pour des adultes : la table pour deux, avec la double barre au milieu pour relier les chaises, les casiers en bois ou métal pour ranger les affaires, le trou pour l’encre, la rainure pour poser les stylos ; les cartes de France, d’Europe et du Monde avec leur typo très simplifiée ; les rayonnages de livres vieillis et jaunis ; … Ah, l’école primaire de notre enfance, que de souvenir ….! Tout y est pour nous transporter dans nos souvenirs. Le personnel très sympathique nous apporte alors la carte des vins pour l’apéro dans une couverture de cahier. Vraiment, tout y est.
Comme à la cantine, l’eau est servie dans les bons vieux verres Duralex ronds.</p>
<h2 id="nourriture-et-boisson">Nourriture et boisson</h2>
<p>Une carte des vins à rallonge qui nous offre un large choix selon les goûts de chacun, selon les bouteilles, servis au verre ou non. On déguste tranquillement notre petit rouge ou notre petit blanc. Mais vu que nous y sommes aller pour l’apéro plutôt que pour le dîner, il faut bien “éponger” un peu l’alcool consommé pour profiter du reste de la soirée. Pour celà, il suffit de demander une planche charcuterie/fromage. Et là, servis accompagné d’une baguette à l’ancienne bien chaude, l’apéro prend une dimension magique. Tout y est bon. Tout y est fin. Tout y a du goût. On en redemanderait presque.
Le prix est légèrement élevé par rapport au petit balto du coin mais vu la qualité des produits et l’ambiance, chaque centime dépensé nous offre du plaisir et nous le fait oublier.
A y faire l’apéro et à l’y refaire. A tester aussi un repas car celà sent prometteur !</p>
Hot-dog : et un clébard chaud !
2012-06-07T12:20:53+02:00
https://francois.aichelbaum.com/2012/06/07/clebard-chaud
<p>L’autre jour, se faisant faim et désirant changer un peu de cantine, mais aussi des plats habituels, on a voulu se faire un hot-dog. Aux Halles, en surface, se trouve le <a href="https://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=dog's+caf%C3%A9,+paris&aq=&sll=46.75984,1.738281&sspn=14.426196,33.815918&vpsrc=0&ie=UTF8&hq=dog's+caf%C3%A9,&hnear=Paris,+%C3%8Ele-de-France&ll=48.85184,2.322063&spn=0.054105,0.132093&t=m&z=14&iwloc=A&cid=3452158383687327772">Dog’s Café</a>, qui se targue d’être le <em>meilleur chien chaud en ville</em>. Ambiance et digestion.</p>
<p><img alt="" src="/assets/DogsCafe.jpg" title="" srcset="/assets/resized/480/DogsCafe.jpg 480w, /assets/DogsCafe.jpg 533w" /></p>
<h2 id="ambiance">Ambiance</h2>
<p>Franchement, rien à redire. On est vraiment emmené dans un diner avec ses grandes baies vitrées, son zinc à rallonge sur lequel on va pouvoir diner, installé sur de hautes chaises. Le cadre est là. Le service aussi, la serveuse est disponible, agréable et souriante. Le cuistot agréable et également disponible. On apprécie et on demanderait presque du jus de chaussette <em>à discrétion</em>.</p>
<h2 id="repas">Repas</h2>
<p>La carte est prometteuse : entre le hot-dog newyorkais au choux, le hot-dog Miller à l’oignon frit et ce chili con carne, on espère se régaler, et le choix entre une saucisse au porc ou au poulet. Malheureusement, la qualité n’est pas à la hauteur de l’annonce. En bref ?</p>
<ul>
<li>pain trop sec : un pain grillé à la plancha et n’offre plus le moelleux d’un bon pain pour hot-dog et trop petit pour se manger à la main si l’on prend deux saucisses</li>
<li>une saucisse générique, juste bonne</li>
<li>un fromage à revoir : le supplément fromage offre une vulgaire petite tranche de cheddar fondu, que le burger soit à une ou deux saucisses … copie à revoir</li>
<li>des pommes de terres sautés un poil trop grasses</li>
<li>pas d’oignon frais</li>
<li>la présentation en assiette est dommage : des barquettes auraient été plus dans le <em>trip dinner</em></li>
<li>le choix dans les bières est plutôt restreint mais la Bud et la Coronna permettent de rester dans l’ambiance</li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>Au final, pour un prix honnête on s’en sort avec une qualité en deçà de la moyenne alors que le cadre est vendeur et l’annonce prometteuse … On peut attaquer pour publicité mensongère ?</p>
Perfect Sense : le 6e sens
2012-06-07T11:46:17+02:00
https://francois.aichelbaum.com/2012/06/07/6e-sens
<p>Deux mois après, je réalise qu’il me manque une revue : celle de <a href="http://www.imdb.fr/title/tt1439572/">Perfect Sense</a>. A croire que justement, j’ai également perdu mes sens puis ma mémoire …</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>On suit Susan, Michael et un monde malade. Susan est une épidémiologiste désabusée par son histoire amoureuse et ses problèmes de santé. Michael est chef cuisiner et charmeur à ses heures perdues, incapacité à s’attacher. Le monde, lui, est malade et se dépérit. C’est l’occasion qui permettra à nos deux tourtereaux de se rencontrer, de flasher et de découvrir l’Amour.
La maladie du monde n’a pas de nom, n’a pas d’origine, n’a pas de patient zéro, n’a pas de remède. Rien de connu. Juste la perte d’un sens à la fois, dans le même ordre pour tout le monde, accompagné de symptômes plutôt expressif qui font ressortir l’instinct animal de l’Homme.
Mais au final, quel est le sens le plus important à ne pas perdre ? Comment vivre sans nos sens ? Le film aurait pu virer à l’étude psychologique de masse mais nous offre l’un des couples les plus fusionnels qu’on ait pu voir sur grand écran pour nous glisser cette réflexion à mener. Chacun ira de sa conclusion, mais la vraie question ne serait-elle pas plutôt de savoir ce qui fait que la vie vaut le coup d’être vécue, quelqu’en soit le coût ?
Reste que ce que nous fait ressortir le couple Eva/Ewan est tellement fort qu’on aime et souffre avec eux. A ressentir.</p>
<p><img alt="" src="/assets/PerfectSense.jpg" title="" srcset="/assets/resized/480/PerfectSense.jpg 480w, /assets/PerfectSense.jpg 680w" /></p>
Moonrise Kingdom : scout toujours prêt !
2012-06-07T11:12:22+02:00
https://francois.aichelbaum.com/2012/06/07/scout-toujours-pret
<p>S’il y a des films qu’on a plaisir de voir et revoir, ce sont les petites comédies infantiles qui nous ramènent à nos souvenirs, à notre propre histoire de gamin. Après tout, nous restons d’éternels enfants. Personnellement, c’est l’effet que me font les films du type <a href="http://www.imdb.fr/title/tt0054949/">la guerre des boutons</a>, <a href="http://www.imdb.fr/title/tt0099669/">la gloire de mon père</a>, <a href="http://www.imdb.fr/title/tt0099266/">le chateau de ma mère</a> et autres … Ce WE, j’ai pu en rajouté un autre à la liste : <a href="http://www.imdb.fr/title/tt1748122/">Moonrise Kingdom</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Une bande annonce qui interpelle par sa bizarrerie et sa fraîcheur, un casting imposant, impossible de ne pas aller voir cet <em>OVNI</em> (Object Visuel Non Identifié). Au final, en regardant de plus près, c’est un peu la période pour ce genre de films (<a href="/2012/05/19/mon-baluchon-pour-linde-est-pret/">Indian Palace</a>, <a href="/2012/06/07/6e-sens/">Perfect Sense</a>, <a href="http://www.imdb.fr/title/tt1441952/">Des saumons dans le désert</a> …). C’est franchement rafraichissant en ces temps …
On suit donc la fugue de deux gamins (déjà) désabusés mais amoureux. Un roadtrip dans les bois à la découverte des sentiments, des liens qui peuvent se forger entre les gens, sentiments contre raison, …
Une balade en plein ouragan naissant, une chasse à l’homme version scout se prenant pour les <a href="http://www.imdb.fr/title/tt0361748/">Inglorious Basterds</a>, des adultes vraiment pas sain(t)s ni adultes et un cours sur la musique classique (profitez du générique de fin d’ailleurs). Une recette implacable pour des rires tout du long. On ne voit pas le temps passer et on veut y retourner.</p>
<p><img alt="" src="/assets/MoonriseKingdom.jpg" title="" srcset="/assets/resized/480/MoonriseKingdom.jpg 480w, /assets/MoonriseKingdom.jpg 620w" /></p>
Men in Black 3 : j'ai la classe avec un costard
2012-06-06T11:38:55+02:00
https://francois.aichelbaum.com/2012/06/06/jai-la-classe-avec-un-costard
<p>Etonnamment, personne dans mes contacts n’avait organisé de soirée en costume pour aller voir <a href="http://www.imdb.fr/title/tt1409024/">Men in Black 3</a> : pour le coup, vous me décevez les gens ! J’y suis donc aller avec mon Viking. Pour une fois qu’il était sur Paris …</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Pour se préparer, je m’étais fais une projection privée des deux premiers en numérique … puis grâce à <a href="http://www.paniccinema.com/">Panic Cinéma!</a>, une version en salle avec une bobine originale qui saute bien. Et déjà, je peux vous dire que sur les trois, hormis le pourquoi du comment du gros vilain méchant extraterrestre, ce sont les mêmes films, avec les mêmes scènes, dans le même ordre. A une exception : cette fois-ci, <em>K</em> est la demoiselle en détresse.
Fil conducteur de l’épisode ? le voyage dans le temps et le paradoxe du grand père revisité. C’est <a href="https://www.youtube.com/watch?v=KJRh-37H4fA">Doc Brown</a> qui aurait apprécié. <em>J</em> doit donc remonter de 40 ans dans le passé pour sauver <em>K</em> tué par le destructeur de planètes, <em>Boris l’Animal</em> (pardon, “<em>Juste, Boris !</em>”). Et pour remplacer le ténébreux Tommy Lee Jones âgé de “<em>110 ou 111 ans</em>”, on nous offre un Josh Brolin tout propre. Celui-ci a du mérite de reprendre le rôle et nous offre là une composition qui nous donne toute l’illusion d’avoir Tommy Lee Jones bien plus jeune (enfin avec un peu de kilométrage quand même pour quelqu’un âgé de 29 ans).
A côté de ce jeu, le voyage temporel nous offre une autre vision des extraterrestres : on passe ainsi des modernes numériques aux comédiens grimés façon <em>Star Trek - the original series</em> … Quel plaisir ! Visuellement on se dénote bien les différences avec toutes les références aux vieux films et aux vieilles séries des <em>seventies</em>.
Franchement, non ce n’est pas le meilleur des films de la saga car il ne crée pas la surprise du premier, mais il est dans la logique globale de la license et de ce qu’a pu nous offrir le second : un bon spectacle avec de l’action (moins qu’avant, on est trop vieux pour ces conneries), des clins d’oeil, de l’humour et une histoire sympatoche. Juste un bon moment au ciné donc.</p>
<p><img alt="" src="/assets/MenInBlack3.jpg" title="" srcset="/assets/resized/480/MenInBlack3.jpg 480w, /assets/MenInBlack3.jpg 754w" /></p>
C'est Barbie qui a perdu la clé
2012-05-29T21:39:59+02:00
https://francois.aichelbaum.com/2012/05/29/cest-barbie-qui-a-perdu-la-cle
<p><img src="/assets/Barbie-150x150.jpg" alt="Barbie" />{.left} Ce soir après un taff sous une chaleur assez épuisante, la fraicheur d’une salle obscure avait un air salvateur. Bon par contre, les neurones étaient tous bien grillés donc le choix de genre était tout à fait d’actualité : un gros nanard sous testostérone. C’est donc <a href="http://www.imdb.fr/title/tt1592525/">Lockout</a> qui était tout désigné.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>C’est donc l’histoire de Barbie, dite la <em>First Daughter</em> grâce au poste de Président des USA qu’occupe M. Papa Warnock, qui part dans une prison spaciale pour faire dans l’humanitaire. Et là tout dérape…</p>
<h2 id="linterrogatoire-musclé">L’interrogatoire musclé</h2>
<p>Pourquoi l’humanitaire ? Parce Papa est méchant.
Pourquoi mettre les prisonniers sur orbite ? les cellules les congèlent puis au pire, ca sera l’espace.
Pourquoi alors qu’une vitre sépare Barbie du méchant violeur un agent des services secrets est à côté du violeur ? Parce que sinon il ne pourrait pas lui permettre de trouver une arme interdite puis ca flinguerait toute l’intrigue.
Pourquoi prendre un gars qu’on considère comme un paria, qui ne fait pas partie de l’armée quand on pourrait aller prendre le meilleur des meilleurs des meilleurs, Sir ? Parce que sinon ce n’est pas drôle, il n’aurait pas la même réthorique.</p>
<h2 id="cest-en-frappant-quon-devient-forgeron">C’est en frappant qu’on devient forgeron</h2>
<p>Demandez donc à Rupert à quel point ca fait plaisir de taper sur Snow ! Il n’y a pas de petit plaisir.
Puis il en va de même entre les mutins de prisonniers : pourquoi se limiter aux pauvres gardes sans défense quand on peut se taper sur la gueule non stop … c’est tellement bon toute cette activité physique. Bien sûr, tout ceci est dans le futur, donc appuyé d’effets graphiques dont les Gobelins auraient honte par moment.
Et que dire alors de la logique des scénaristes : ils n’ont pas assez regardé les infos je crois : une bombe en collier ca ne décapite par un mec aussi proprement qu’une hache … tout en la désintégrant …
Mais bon, c’est ma poussée de testostérone qui me fait mal voir.</p>
<h2 id="femme-qui-rit-femme-à-moitié-au-lit">Femme qui rit, femme à moitié au lit</h2>
<p>Snow, c’est un peu prendre tous nos acteurs fétiches de films d’action des années 80/90, avec une pincée de mec torturé en primaire, et les passer au mixeur. On obtient une savoureuse réthorique cachée par des muscles.
Mais le numéro de charme fonctionne. Après tout, c’est ca la recette des vieux films d’actions : un gentil costaud un peu mal béché qui cognent les gros et moches méchants pour libérer la belle Barbie. Mais aujourd’hui ca passe mieux en projection privée ou en vidéo.
En tout cas, si l’on vous demande ce qu’il s’est passé dans cette chambre d’hôtel, demander plutôt à votre femme !</p>
<p><img alt="" src="/assets/Lockout_Poster2partial.jpg" title="" srcset="/assets/resized/480/Lockout_Poster2partial.jpg 480w, /assets/Lockout_Poster2partial.jpg 610w" /></p>
Sans issue : c'est pas moi, c'est lui !
2012-05-22T23:34:35+02:00
https://francois.aichelbaum.com/2012/05/22/cest-pas-moi-cest-lui
<p>Ce soir, je continue sur ma lancée du choix du film à l’aveugle : je fonce au cinéma et je prends le premier film qui démarre. C’est ainsi que je me retrouve à m’installer dans la salle pour voir <a href="http://www.imdb.fr/name/nm0000244/">Sans issue</a>, avec entre autres <a href="http://www.imdb.fr/name/nm0000244/">Sigourney Weaver</a> et <a href="http://www.imdb.fr/name/nm0000246/">Bruce Willis</a> pour les pointures américaines mais aussi <a href="http://www.imdb.fr/name/nm0147147/">Henry Cavill</a>, plutôt prometteur, et un gars de chez nous, de la cité d’à côté (puisqu’originaire de <a href="http://maps.google.fr/maps/place?ftid=0x47e66f45c618b431:0x950c4e920d76f175&q=Gennevilliers&hl=fr&ved=0CA0Q-gswAA&sa=X&ei=6AG8T8fbBdCLOq-_8MQB">Gennevilliers</a>), <a href="http://www.imdb.fr/name/nm0954704/">Roschdy Zem</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Bon avant de rentrer plus dans le vif du sujet, je vais pousser une gueulante : ils ont un soucis les distributeurs français avec les traductions de titres anglais ?! Non mais sérieusement : est-ce que l’un de vous peut m’expliquer comment <em>The Cold Light of Day</em> a pu donner en traduction <em>Sans issue</em> ? Surtout que l’expression anglaise se rapproche plus d’un “voir les choses sous leur vrai jour” … On ne doit vraiment pas parler la même langue.
Quoiqu’il en soit, je n’avais rien vu concernant ce film si ce n’est son affiche dans quelques rares salles. A croire que la promo est aussi efficace que la traduction. Du coup, salle quasi vide. Mais bon, je suis d’autant plus libre de vivre le film tranquillement sans parasitage.
Pour la faire courte, Will Shaw (joué par Henry Cavill) se retrouve au milieu d’une affaire de contre espionnage américano-israélien pendant des vacances avec sa famille en Espagne. L’enlèvement de celle-ci donnera l’occasion à Will de découvrir les sombres secrets de sa famille.
Au passage, on peut noter que Bruce Willis fait de plus en plus d’apparitions courtes dans les films alors que Sigourney Weaver semble se trouver une passion pour les espions (c.f. <a href="http://www.imdb.fr/title/tt1600195/">Identité secrète</a>). Pourquoi pas. Leur jeu reste efficace et la dynamique du film est là sans nous offrir une exagération que l’on a dans la sage de <a href="http://www.imdb.fr/character/ch0002110/">Jason Bourne</a> ou justement <a href="http://www.imdb.fr/title/tt1600195/">Identité secrète</a>. On apprécie l’avancée, les retournements plus ou moins prévisibles et le côté Pierre Richard de l’<em>espion malgré lui</em>.
Au final, un thriller d’action comme on dit, sans grandes prétentions, mais efficace si on le prend pour ce qu’il est : un divertissement de type <em>fast food</em>.</p>
<p><img alt="" src="/assets/Sans-Issue-The-Cold-Light-of-Day-Affiche-US.jpg" title="" srcset="/assets/resized/480/Sans-Issue-The-Cold-Light-of-Day-Affiche-US.jpg 480w, /assets/Sans-Issue-The-Cold-Light-of-Day-Affiche-US.jpg 620w" /></p>
Oh une bâche !
2012-05-20T22:16:38+02:00
https://francois.aichelbaum.com/2012/05/20/oh-une-bache
<p><img src="/assets/bache-150x150.jpg" alt="Bâche" />{.left} Il y a des jours où on ne sait pas se décider pour un film : entre les horaires qui ne vont pas, la salle qui ne va pas … Dans ce cas, ma solution : partir à l’aventure. De bien grands mots vous me dites ? Mais non ! Il suffit de vous faire une bonne balade à pattes dans Paris, pour arriver à votre salle favorite, et choisir le premier film qui démarre (en évitant un film déjà vu). Le sort m’a sélectionné <a href="http://www.imdb.fr/title/tt1524137/">Contrebande</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Jusqu’à ce soir, je n’avais vu que le titre dans les horaires affichés sur <a href="http://www.allocine.fr">Allociné</a> mais cela ne m’avait pas interpellé. Il est donc clair, que sans connaître le synopsis ni avoir vu la bande annonce, je m’engageais sur ce film sans aucun a priori.
On suit donc un contrebandier repenti obligé de reprendre les affaires pour sauver sa famille. Son aventure le conduira au Panama. Hasard ou coïncidence, le matin même je me documentais un peu sur le <a href="http://fr.wikipedia.org/wiki/Canal_de_Panama">Canal de Panama</a> … Personnellement, cela m’a bien fait rire !
Pour en revenir au film, c’est du déjà vu à maintes reprises. Le premier titre qui me vient en tête, c’est <a href="http://www.imdb.fr/title/tt0187078/">60 secondes chrono</a>. Mais j’y retrouve un peu l’ambiance d’un <a href="http://www.imdb.fr/title/tt0840361/">The Town</a>. Rien de bien novateur, les habitués décoderont l’intrigue dans les premières minutes du film. Reste quelques scènes sympa et surtout voir les idées pour planquer la marchandise (cf la fin du film).
Cependant, je pense qu’un élément du film, démontrant le niveau des douaniers et du capitaine du navire, nous résume assez bien la qualité du film : “Oh une bâche !” Le film se regardant facilement en vidéo ou avec une carte illimité, je vous laisse le soin de replacer cette citation dans son contexte.
Sur ce, je retourne programmé ma prochaine contrebande à faire circuler entre la cuisine et le salon.</p>
<p><img alt="" src="/assets/Contrebande.jpg" title="" srcset="/assets/resized/480/Contrebande.jpg 480w, /assets/Contrebande.jpg 510w" /></p>
Indian Palace : mon baluchon pour l'Inde est prêt
2012-05-19T21:59:40+02:00
https://francois.aichelbaum.com/2012/05/19/mon-baluchon-pour-linde-est-pret
<p>Il y a des films comme celui-ci, qui vous offrent deux sentiments à la sortie de la salle de cinéma :</p>
<ul>
<li>préparer votre voyage pour ledit pays le plus vite possible</li>
<li>qu’il manque quand même l’odorama au cinéma pour ce genre de films</li>
</ul>
<p>Ce film ? <a href="http://www.imdb.fr/title/tt1412386/">Indian Palace</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Je ne savais pas trop à quoi m’attendre avec ce film après avoir vu la bande annonce. Une comédie de et pour vieux de la vieille ? Un mix entre <a href="http://www.imdb.fr/title/tt0879870/">Mange, Prie, Aime</a> et <a href="http://www.imdb.fr/title/tt0335266/">Lost in Translation</a> ? Un déballage de platitudes évidentes ? Un concentré de stéréotypes ?
Tout ceci et rien en même temps. Après une rapide présentation de nos retraités, nous partons avec eux pour découvrir l’Inde. Et là, soit votre imagination est assez forte à la vu des couleurs et sons pour vous laisser supposer les odeurs, soit vous regretter l’absence de l’odorama. On découvre le pays, un peu comme on l’a pu faire avec <a href="https://www.youtube.com/watch?v=JrQiIpWq-_s">Pékin Express</a>, il y a quelques années (Saison 2 - La route de l’Himalaya - 2007) au travers de nos “jeunes et beaux retraités”. Ainsi, chacun vivra un mini voyage initiatique, pour confirmer qui il est, ce qu’il a perdu, ou ce qu’il a raté. Et il faut dire que <a href="http://www.imdb.fr/name/nm0006960/">John Madden</a> sait nous impliquer dans ses histoires.
On vivre avec eux. On prie. On espère. On découvre. On se réjouit. On finit par rentrer pour préparer notre bagage et voir le prochain avion.
Si vous me cherchez, je suis sûrement au <em>Best Exotic Marigold Hotel</em> pour une durée indéterminée !</p>
<p><img alt="" src="/assets/IndianPalace.jpg" title="" srcset=" /assets/IndianPalace.jpg 450w" /></p>
Bankrupt !
2012-05-18T22:24:25+02:00
https://francois.aichelbaum.com/2012/05/18/bankrupt
<p><img src="/assets/bankrupt-150x150.jpg" alt="Bankrupt" />{.left} Aujourd’hui, je ne metterais point de musique : ce n’est pas que je n’ai aucun artiste à vous proposer, au contraire, mais je prépare un petit truc qui devrait sortir ce WE. Et comme on dit, l’attente augmente le plaisir !
°Par contre, c’est vendredi, donc jour de cinéma. Et quoi de mieux qu’un jour où presque personne ne travaille que de faire bosser nos neurones ? Pour ça, un film est parfait : <a href="http://www.imdb.fr/title/tt1615147/">Margin Call</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Une plétore d’acteurs de cinéma ou de séries TV vont donc s’efforcer de nous montrer une facette de l’origine de la <a href="http://fr.wikipedia.org/wiki/Crise_bancaire_et_financi%C3%A8re_de_l'automne_2008">crise de 2008</a>. Malheureusement, le monde de la finance est un domaine bien peu passionnant, même avec des acteurs de renom…
Et s’enchaînent alors les images stéréotypées d’<a href="http://fr.wikipedia.org/wiki/Op%C3%A9rateur_de_march%C3%A9">Opérateur de marché</a> flambant leur argent, tous dans ce monde par l’appât du gain, peu importe leur formation d’origine, quand ils ne se font pas virer avec tous les égards qui leur sont dus. Il est toujours bon aussi de se faire rappeler qu’il y a toujours un chef au dessus du chef qui, lui, saura prendre <em>la bonne décision</em> en ces temps difficiles.
Au final, une phrase très juste du grand patron de la <a href="http://www.imdb.fr/title/tt0106918/">La Firme</a>, John Tuld (<a href="http://www.imdb.fr/name/nm0000460/">Jeremy Irons</a>) : “Il est possible de se faire énormément d’argent avec cette crise”. Et Hollywood nous le montre une fois de plus : peu importe l’état de leurs finances (<a href="http://www.scientificamerican.com/article.cfm?id=does-digital-piracy-really">avec le piratage</a>), il y a toujours un sujet, même anodin pour sortir un film plat qui rapporte potentiellement de gros sous grâce à ses acteurs ou son réalisateur.
Là est peut-être la clé de ce film : nous montrer qu’il n’y a pas un sujet qu’on ne puisse traiter pour s’en mettre plain les poches. En un mot comme en cent pour résumer ce film : <strong>arnaque</strong>.</p>
<p><img alt="" src="/assets/margincall.jpg" title="" srcset=" /assets/margincall.jpg 408w" /></p>
Chanson pour le printemps
2012-05-16T11:04:34+02:00
https://francois.aichelbaum.com/2012/05/16/chanson-pour-le-printemps
<p>Il faut beau, les oiseaux chantent, le printemps se montre pour quelque jour. On va le fêter en musique avec <a href="http://www.mymajorcompany.com/users/nadim">Nad!m</a> et sa chanson <em>Elle me prend la main</em>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Encore un artiste MMC que j’adore. Si c’est également votre cas, n’hésitez pas à le soutenir !</p>
Ouh un WE sans rien dire
2012-05-14T08:38:03+02:00
https://francois.aichelbaum.com/2012/05/14/ouh-un-we-sans-rien-dire
<p>Certains vont me faire la tête à force … Aucun morceau matinal … On corrige ca de suite alors. C’est une nouvelle semaine, donc un nouveau départ avec <a href="http://www.mymajorcompany.com/#!/milachka17/barbara-green">Barbara Green</a> et son <em>Repars à zéro</em> :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Vous pouvez soutenir et produire Barbara sur MMC. D’ailleurs changement de règles sur MMC qui impose qu’un artiste arrive à se faire produire en six mois sinon la porte de sortie lui sera présentée. Très expéditif comme méthode.
D’ailleurs petit lot de critique pour MMC :</p>
<ul>
<li>nouvelles règles qui font partir nombre d’artistes</li>
<li>nouvelles règles qui font fuir bon nombre de potentiels inscrits</li>
<li>les remises à cause de ces départs forcés n’inclus pas la remise des frais empochés par MMC (et il faut donc les repayer)</li>
<li>MMC considère qu’un artiste, avant d’arriver sur son site doit avoir des enregistrements audio et vidéo de bonne qualité et de bons moyens de comm (donc avoir fait une partie de la prod)</li>
</ul>
<p>Bref MMC, c’est de pire en pire … Et les artistes en patissent. Dommage.
Bon nouvelle semaine, je râle sur MMC mais il ne faut pas croire, je suis de très bonne humeur. Je prépare une bonne petite radio pour les artistes que je suis.
Ah, pi aussi, accessoirement, spéciale dédicace à son interprête pour le remercier de son concert de vendredi soir, à savoir <a href="http://www.mymajorcompany.com/#!/fabienbourguet">Fabien Bourguet</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Semaine courte mais super chargée au programme. Courage les gens !</p>
Trêve de plaisanterie
2012-05-11T08:35:35+02:00
https://francois.aichelbaum.com/2012/05/11/treve-de-plasanterie
<p><img src="/assets/fabien_bourguet-150x150.jpg" alt="Fabien Bourguet" />{.left} Ce matin, j’ai choisi une chanson qui me touche. C’est celle de <a href="http://www.mymajorcompany.com/#!/fabienbourguet/fabien-bourguet">Fabien Bourguet</a>, <em>un jour de trêve</em>.
[video]http://www.youtube.com/watch?v=cdyK3IQ-v8Y[/video] Si ses chansons vous plaisent, soutenez-le sur MMC.
Au passage, pour les parisiens, il se produit ce soir 11 mai 2012 au Caveau des Artistes à 20h45. L’entrée est à 10€. Bon concert !</p>
Dark Shadows : soyez psyché, vous serez cool
2012-05-10T08:52:22+02:00
https://francois.aichelbaum.com/2012/05/10/soyez-psyche-vous-serez-cool
<p>Ce matin j’ai voulu faire un double billet, mélangeant le film du jour, enfin … d’hier, et la chanson du jour. Bon, c’est sûr, trouver du psychédélique ou du Alice Cooper dans mes perles de MMC, malheureusement, ce n’est pas gagné. Par contre, trouver quelque chose de cool et qui collera au thème du film … Suffit de chercher <a href="http://www.mymajorcompany.com/morphe-morphe">Morphé</a> et <em>Rose promise</em> :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Comme à l’habitude maintenant, Morphé est à produire sur MMC. Belle introduction à l’amour que cette chanson, non ? Et bien c’est aussi le thème de fond du dernier Tim Burton, <em>Dark Shadows</em> :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Certes ce n’est pas un univers entièrement sorti de l’imagination de Timmy, mais il faut avouer qu’il a particulièrement bien revu la <a href="https://www.youtube.com/watch?v=aFgGywbxeRw&feature=results_video&playnext=1&list=PL37B0F4C0CB9D67EC">série télévisée des années 60</a>. Le psychédélique et torturé Tim Burton nous fait donc ressucité Barnabas Collins en 1972, en pleine guerre du Vietnam, avec ses mouvements Hippies et ses couleurs d’opposition.
Commandés par Tim Burton, ses acteurs fétiches, Helena Bonham Carter et Johnny Depp sont soutenus par Michelle Pfeiffer, qui me rappelle sans cesse l’une des sorcières de <a href="https://www.youtube.com/watch?v=kldLBWaSuKU">Stardust</a> et Eva Green, pour les têtes d’affiche. Et, il faut dire, que ces dernières se sont toutes les deux plus que bien adaptées au style de la maison.
On rigole, on frissone, on dévore le popcorn bien trop vite avec ce mélange de <a href="https://www.youtube.com/watch?v=v5Umz8UWTqk">Famille Addams</a> (de Barry Sonnenfeld) et <a href="https://www.youtube.com/watch?v=xjZihSC42HI">Charlie et la Chocolaterie</a>, sauce Scooby, dépeignant cette réunion de famille sur thème de la malédiction amoureuse. Ah, l’Amour …
Ce film s’est fait attendre, surtout avec tout le buzz orchestré sur les médias sociaux. Dans ces conditions, il arrive trop souvent que l’on soit déçu (non je ne vise aucune super production américaine de ces dernières années offrant un nombre de suite trop important), mais pour le coup, le ravissement est là … et m’impose d’y retourner ASAP ! Après tout, c’est du Tim Burton, et il ne déçoit jamais (précision : sur un film de son cru … suivez mon regard …).
Pour terminer, en se faisant plaisir avec un Alice Cooper de 1972, ca sera le petit cadeau du matin :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>A se demander si ce n’est pas un vampire immortel d’ailleurs …</p>
<p><img alt="" src="/assets/darkshadows.jpg" title="" srcset="/assets/resized/480/darkshadows.jpg 480w, /assets/darkshadows.jpg 500w" /></p>
Petit réveil en douceur
2012-05-09T07:42:01+02:00
https://francois.aichelbaum.com/2012/05/09/petit-reveil-en-douceur
<p>Ce matin, c’est <a href="http://www.mymajorcompany.com/luke-greenwald-1">Luke Greenwald</a> qui se charge de votre réveil avec <em>Tired and Wasted</em>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Comme à l’habitude, si vous appréciez, soutenez le sur MyMajorCompany.</p>
Journée du souvenir en musique
2012-05-08T10:47:14+02:00
https://francois.aichelbaum.com/2012/05/08/journee-du-souvenir-en-musique
<p>C’est une journée du souvenir pour pas mal d’entre vous. Autant le faire avec un bon son pop-rock de chez nous. Voici donc <a href="http://www.mymajorcompany.com/#!/mathyl5">Mathyl</a> avec <em>Rappelle-toi</em>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Si ses chansons vous plaisent, produisez-la sur MyMajorCompany.
NB: j’ai profité dans la semaine pour rajouter l’authentification via Facebook et Twitter pour ceux qui veulent commenter le blog.</p>
American Pie 4 : j'ai trop mangé de tartes
2012-05-07T21:03:37+02:00
https://francois.aichelbaum.com/2012/05/07/jai-trop-mange-de-tartes
<p>Ceux qui me connaissent vont se dire qu’il y a un énorme soucis : comme ai-je pu trop mangé de tartes, moi, l’estomac sur pattes, l’héritier de Gargantua ?! La faute aux <em>American Pies</em>. Tout le monde connait les trois premiers volets sortis au cinéma entre 1999 et 2003. Entre 2005 et 2009, quatre autres nous ont nourris directement en vidéo, pour notre plus grand damne, pour ceux qui ont voulus garder un esprit adolescent.
Et bien cette année, 13 ans après le premier, l’équipe d’ados en rute revient sévire, à croire que leurs comptes en banque sont vide.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Impossible de se mettre dans le même état d’esprit qu’à l’époque. Le film reprend pourtant la même sauce, un peu plus osé (plus de nudité), un peu plus adultes (ils ont tous une vie maintenant) pour autant, la tarte ne cuit pas correctement.
Je ne dis pas que je n’ai pas laissé échappé quelques pouffements… C’est sûr, je ne m’égosillait pas comme le mec à deux places de moi. Mes neurones ne doivent pas se percuter de la même manière, je crois.
Quoi qu’il en soit, on est à une époque où la créativité d’Hollywood se borne à beaucoup de suite, remake, … mais là c’est trop. La nostalgie n’opère pas, le charme est absent, le déluré, lui, est radin. Un Projet X proposera bien meilleur spectacle. Même les trois premiers que je me suis refais avant la séance m’apporte plus de plaisir.
Donc non clairement le film de trop et une tarte mal préparée. Même le ton moralisateur des jeunes <em>gens</em> maintenant mûrs qui aurait pu ressortir est partie voir un autre film.</p>
Sauvons le jour
2012-05-07T15:01:08+02:00
https://francois.aichelbaum.com/2012/05/07/sauvons-le-jour
<p>Journée plaisante pour certains. Journée morne pour d’autres.
Journée vivante pour les uns. Journée soporifique pour les autres.
Dans tous les cas, un peu de bon rock fait du bien, donc place à <a href="http://www.mymajorcompany.com/annsom">Ann’So M</a> avec <em>Save the Day</em>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Vous aimez ? Parrainez-la sur MyMajorCompany !</p>
Et une deuxième brochette
2012-05-05T12:56:52+02:00
https://francois.aichelbaum.com/2012/05/05/et-une-deuxieme-brochette
<p>Hier je vous ai présenté mes petites perles :</p>
<ul>
<li><strong><a href="http://www.mymajorcompany.com/annsom">Ann’So M</a></strong> (pop/rock)</li>
<li><strong><a href="http://www.mymajorcompany.com/luke-greenwald-1">Luke Greenwald</a></strong> (reggae/rock)</li>
<li>**<a href="http://www.mymajorcompany.com/devon-graves">Devon Graves</a> (pop/folk) - <a href="http://www.mymajorcompany.com/morphe-morphe">Morphé</a> à la guitare</li>
</ul>
<p>Aujourd’hui je vous présente la légion :</p>
<ul>
<li>**<a href="http://www.mymajorcompany.com/#!/remyash">Ash of Sound</a> (pop/rock)</li>
</ul>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<ul>
<li><strong><a href="http://www.mymajorcompany.com/#!/mathyl5">Mathyl</a></strong> (pop/rock)</li>
</ul>
<p>Vers <a href="http://www.noomiz.com/Mathyl">Noomiz</a></p>
<ul>
<li><strong><a href="http://www.mymajorcompany.com/#!/jessieryanmusic/jessie-ryan-music">Jessie Ryan</a></strong> (pop/rock)</li>
</ul>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<ul>
<li><strong><a href="http://www.mymajorcompany.com/#!/songsofmaryjane/songs-of-maryjane">Maryjane</a></strong> (pop/folk)</li>
</ul>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<ul>
<li><strong><a href="http://www.mymajorcompany.com/#!/milachka17/barbara-green">Barbara Green</a></strong> (pop/rock)</li>
</ul>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<ul>
<li><strong><a href="http://www.mymajorcompany.com/#!/monsieur-plume/monsieur-plume">Monsieur Plume</a></strong> (chanson française)</li>
</ul>
<p>Vers <a href="http://www.zicmeup.com/artiste/florentvergnes/sons#">Zic Me Up</a> (écoutez “<em>Le Sage</em>”)</p>
Mon premier, une petite brochette de chanteurs dont j'espère beaucoup
2012-05-04T16:54:41+02:00
https://francois.aichelbaum.com/2012/05/04/mon-premier-une-petite-brochette-de-chanteurs-dont-jespere-beaucoup
<p>Plutôt que de rédiger un long billet, je vous laisse apprécier les chanteurs (pas la qualité de l’enregistrement, bande de râleurs).</p>
<p><strong><a href="http://www.mymajorcompany.com/annsom">Ann’So M</a></strong> (pop/rock)</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>** <a href="http://www.mymajorcompany.com/devon-graves">Devon Graves</a>** (pop/folk) - <a href="http://www.mymajorcompany.com/morphe-morphe">Morphé</a> à la guitare</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>** <a href="http://www.mymajorcompany.com/luke-greenwald-1">Luke Greenwald</a>** (reggae/rock)</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Etre Parisien, c'est être un éternel incompris
2012-05-03T01:05:11+02:00
https://francois.aichelbaum.com/2012/05/03/etre-parisien-cest-etre-un-eternel-incompris
<p>Ce soir, pour changer, direction le théatre (de la Main d’Or). Au programme, un cours pour anglophone (ou pas) pour devenir parisien.</p>
<p><img alt="" src="/assets/howtobecomeparisian.jpg" title="" srcset="/assets/resized/480/howtobecomeparisian.jpg 480w, /assets/howtobecomeparisian.jpg 499w" /></p>
<p>Bon, ok la représentation est entièrement en anglais et ce qui rébutera plus d’une personne (j’en ai une en tête, tiens, mais je n’ai pas dit mon dernier mot) sous le prétexte de la barrière de la langue : et bien c’est une erreur magistrale car Olivier Giraud est tellement vivant sur scène, que tout se comprend, peu importe la langue.
Alors, oui, tout de suite, vous allez me rétorquer, que nous, pauvres Parisiens que nous sommes (enfin pour ceux qui le sont, pour les autres, désolé mais tout le monde ne peut pas être parfait et on l’est déjà pour vous) allons être stéréotypés à outrance et dénigrés au possible … Et bien, oui nous sommes stéréotypés de nos caractères véridiques. A aucun moment, je n’ai pu réfuter que nous étions tel que présentés. Mais c’est tellement bon de rire de soit même et Olivier (bien que Bordelais, lui aussi ne peut pas être parfait…) gère ca avec brio. On se délecte de notre mauvais caractère ou nos mauvaises habitudes. Mais bon, le Parisien est un être à part et il n’y a pas meilleur spectacle pour le décrire.
Un cours magistral en huit chapitre, une interro à la fin, un plaisir sans fin et oui, je te confirme Olivier, je vais me souvenir encore de ton spectacle un moment. Par contre, au moment du sexe, là, désolé pour ton égo, mais je penserais à quelqu’un d’autre, car t’es trop peu mon genre.
Bon, je profite pour tirer mon chapeau :</p>
<ul>
<li>un soir de débat électoral, alors que les cafés/restos se plaignent de la faible clientèle, le théatre fait le plein</li>
<li>Olivier a cru en son projet et l’a mené au bout … et c’est un succès</li>
</ul>
<p>Reste à trouver ceux que j’emmènera et je fais le serment qu’ils y seront et que je les accompagnerais avec le même plaisir.
Encore plus fier d’être Parisien après ce soir. Merci Olivier !</p>
Je me vengerais !
2012-04-29T01:08:27+02:00
https://francois.aichelbaum.com/2012/04/29/je-me-vengerais
<p>Ce soir, le film, parce que c’est le week, parce que c’est du Marvel, parce que c’est du super Box Office américain, parce que j’aime, parce que c’était avec des fanas de comics … c’était ca :</p>
<p><img alt="" src="/assets/46527.jpg" title="" srcset="/assets/resized/480/46527.jpg 480w, /assets/46527.jpg 620w" /></p>
<iframe width="640" height="360" src="https://www.dailymotion.com/video/1vfwp_" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
<p>Bon ok, celui là je l’ai vu un paquet de fois sur la 6 et il était à Panic Cinéma il y a deux semaines. J’étais voir le survitaminé, le génétiquement modifié, le body buildé, le déique, le sexy, le comique, le précis, l’amateur The Avengers, lancé par les Studios Marvel :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Bon, on reprend certains personnages sous des traits connus (Iron Man, Captain America, Thor, Loki) et quelques nouveaux ou certains qui change à chaque nouvelle affiche cinématographique (suivez mon regard vers le géant vert). Pour autant, j’ai l’impression depuis l’été dernier, que personne n’a remarqué que Captain America est aussi la Torche Humaine (un des <a href="https://www.youtube.com/watch?v=3V0h28qYPqQ">4 Fantastiques</a>) ou que l’Agent Hill est <a href="https://www.youtube.com/watch?v=U01hsTwtc-c">canadienne</a> à ses heures perdues. Bon le premier me choque le plus vu que c’est la même license (<em>Marvel</em>). C’est un peu comme Ryan Reynolds qui campe Green Lantern chez <em>DC</em> et Deadpool chez <em>Marvel</em>… Mais bon, ca ne change pas grand chose au spectacle.
Pour en revenir à nos vengeurs, il est de ces films qui nous rappellent pourquoi on aime aller au cinéma : pour y voir du spectacle, rire, frissoner, dévorer le popcorn trop vite tellement on est plongé dans l’action à tendre la main mécaniquement entre le paquet et la bouche … Et clairement, <em>Avengers</em> est de ce genre de film. Oui, bien sûr, comme tout film où la 3D a été rajoutée en post-prod, on rumine de gâcher une part du plaisir là dedans. Reste que c’est beau, l’action claire en permanence, dynamique, un ton comique lié aux relations entre les différents protagoniste (que ca soir Tony Stark qui passe ton temps à titiller Bruce Banner, Captain America qui veut jouer son rôle de capitaine, Black Widow qui est une faible femme aussi mortelle que sexy et bien sûr le tandem entre le Viking et le Troll à savoir Thor/Hulk).
En résumé, un régal de divertissement, car il ne se raconte pas mais se vit …
Pour terminer, je résume pourquoi vous aller foncer au ciné :</p>
<ul>
<li>une phrase : “Hulk … Smash !”</li>
</ul>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<ul>
<li>une vidéo (<strong>ATTENTION</strong> : énorme spoil donc cliquez à vos risques et péril) :</li>
</ul>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Bons crus
2012-04-27T01:41:31+02:00
https://francois.aichelbaum.com/2012/04/27/bons-crus
<p>Pour une fois, ce soir, je parle de vins. J’ai passé ma deuxième soirée découverte d’une cave très agréable sur Paris :</p>
<p><img src="/assets/Logo_rvb_gris_72.jpg" alt="Crus" /></p>
<p>C’est dans le 1er arrondissement à proximité de Châtelet. Un cadre plein de charme, un patron passionné et très agréable, une experte en vins passionnée et charmante, une plétore de bouteilles, un ravissement pour les papilles, un cours permanent pour les curieux, …
Au delà de la vente au détail, ils se font aussi grossistes mais également meneurs de soirées découvertes (publiques ou privées) : l’occasion de (re)découvrir les vins, de manière générale ou d’un producteur (ce soir, du Chablis). On déguste, on s’instruit … Un vrai plaisir sans nom ou se mélange les adjectifs et les plaisirs olfactifs et gustatifs tels un torrent d’émotions … le tout accompagné de plateaux de charcuteries et fromages aussi raffinés que les boissons servies.
A découvrir, à recommander, à partager et à profiter. Au passage, mon côté nerd adore le moteur de recherche “logique” de leur site, assez rare pour le remarquer.
Pour le plaisir :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>A la vôtre !</p>
2 days in New York : perdu dans la traduction
2012-04-25T22:23:05+02:00
https://francois.aichelbaum.com/2012/04/25/perdu-dans-la-traduction
<p><img src="/assets/perdu-150x150.jpg" alt="Perdu" />{.left} Mieux vaut tard que jamais comme on dit ? Cela fait un mois que <em>2 days in New York</em> est sorti dans les salles obscures françaises, deux semaines que je soutiens que j’irais le voir mais que mon planning est sans cesse modifié mais cette fois c’est fait ! J’ai fui lâchement l’inactivité lassive du soir pour me réfugier au chaud de la salle de projection pour le voir.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Quelques uns me parlaient d’un bon film, sans plus, on rigole “mais” … mais quoi ? Je ne sais pas. A force, j’ai cru finir devant un <a href="https://www.youtube.com/watch?v=yYAS92XPvIM">Lost in Translation</a> familial et français. Mais ces critiques ne m’atteignent pas : j’adore la productive et vivante Julie Delpy et la piplette déconcertante qu’est Chris Rock …
Ah … les français, leurs râleries, leurs hypocrisies, leurs ignorances … c’est ainsi que la famille de <em>Marion</em> (Julie Delpy) nous représente, comme les américains comme <em>Mingus</em> (Chris Rock) nous dépeindraient avec nos saucissons et reblochons à faire passer tels de la contrebande. Mais au delà, sont surtout mis en exergue les a prioris, le brassage culturel, la vie de chacun, l’effet de la loi de Murphy et bien sûr … l’inexistence même des coïncidences ! Une nana disjonctée, un vrai <em>new yorker</em>, une soeur psychotique/nympho/exhib, un boulet de service, un père qui ne débite pas un mot d’anglais, un fils un peu perdu et une fille qui finira comme la première Goth Black … Un bon groupe comme on les aime.
Tout est raconté à la légère, tel les mensonges que l’on raconte à un voisin chiant dans l’ascenceur pour s’en débarasser. Rien n’est pris au sérieux si ce n’est notre propre désespoir et justement que chacun se retrouve à un moment … perdu dans sa propre réalité. Chaque drame a son happy end.
Après tout, nous français, nous délectons avec plaisir et humour du malheur de nos congénaires, alors faisons-le avec panache et légèreté ! Julie Delpy nous offre une comédie à déguster à n’importe quelle heure.
Je cherche encore à comprendre la tentative de comparaison de <em>certains</em> avec du <em>Woody Allen</em>, à croire qu’il faut toujours comparé à certains dinosaures américains pour apprécier la fraicheur et légèreté de la nouvelle vague francaise…</p>
Ian égorge la magie
2012-04-24T08:29:34+02:00
https://francois.aichelbaum.com/2012/04/24/ian-magie-gore
<p>Roh c’est mal … je deviens un poisson rouge (et non un poisson clown, bande de mauvaises langues) : je vais voir un spectacle et j’oublie d’en parler. Pour le coup, c’est tout les lundis (me concernant c’était la semaine dernière), à la <a href="http://cantada.net/">Cantada</a>, c’est gratuit et c’est :</p>
<p><img src="/assets/ian.jpg" alt="Ian Magie Gore" /></p>
<p>Bon, tant qu’à faire, on est à la Cantada, donc on profite de la carte : absinthes, hypocras, charcuterie … Ca c’est moins gratuit mais pas trop cher et c’est bon !
Puis on descend voir le spectacle à la cave, on s’installe et on attend. Ian aussi attend : “parce que c’est à 20h30”. Pas 20h28. Pas 20h31. Non … 20h30 … faut pas louper l’heure de début ! Alors Ian et sa magie gore c’est quoi ? Voici son résumé sur <a href="http://www.billetreduc.com/64090/evt.htm">Billetreduc</a> :</p>
<blockquote>
<p>Vous ne connaissez pas le cinema gore ?
Vous ne comprenez rien à la prestidigitation ?
Vous croyez que le mentaliste est un blondinet rebelle qui joue avec le cerveau des gens ?
Vous imaginez qu’un blockbuster est un film de chasseur de fantômes ?
Les tours de magies ne dérapent jamais ?
Je vous expliquerez tout pour devenir de vrais geeks !
Une soirée sang pour sang interactive!</p>
</blockquote>
<p>Le ton ? la déconnade, le foirage, le kitch … puis viendra les <em>eurk</em>, les <em>aie</em>, les <em>ouch</em>, les <em>oups</em> … Quelques suprises qui ne sont ni de la magie ni du gore mais qui a priori donnent plus de frissons aux demoiselles à rassurer après coup !
Bref, une heure de show mélangeant tous les styles : ça tâche, c’est drôle, ça donne des frissons, ça titille la curiosité … A faire (et à refaire).
Bon petite astuce pour ceux qui ne s’encombrent pas de choses inutiles : il faut emmener un magnétoscope VHS Pal/Secam, une péritel, une multi-prise et une petite TV compatible. Là, votre soirée sera unique !
Accessoirement, un guest permanent : Cloclo était, est et sera là !
Si <em>Nils</em> m’envoie enfin des photos, je les publierais ;)</p>
Ne paniquez pas au cinéma !
2012-04-22T01:33:29+02:00
https://francois.aichelbaum.com/2012/04/22/ne-paniquez-pas-au-cinema
<p>Ce soir, j’ai découvert <a href="http://www.paniccinema.com/">Panic! Cinema</a> : c’est un rendez-vous hebdomadaire pour les cinéphiles et les non-cinéphiles, pour voir des films de genre. Le rendez-vous se passe à la Nouvelle Latina, rue du Temple, cadre extrêmement sympa.
Quand on voit la liste des films, on se dit que ca peut être sympa. Quand on voit que c’est 5€ en tarif unique, on se dit que ca devient intéressant. Quand on apprend que c’est compatible avec les cartes illmités UGC et Pass, on sait qu’on va sûrement y aller. Et là, on nous souffle que la bière est offre dans ce cadre super agréable avec des gens plus que sympas : plus aucune raison de fuir !
On arrive, on papote, on lève le coude … Puis on descend voir la pré-séance. La semaine passé, le film <em>aurait du être</em> La revanche de Hulk : les organisateurs s’excusent d’avoir présenté <em>son mariage</em> et se propose de corriger le tir en diffusant le bon film … en une minute. C’est … suffisant. S’ensuit une chanson de vampire “<a href="https://www.youtube.com/watch?v=yGLwqtOF_XY">First Date</a>”, la bande annonce d’un nouveau film sur les vampires, “<a href="https://www.youtube.com/watch?v=0IblzBerSFk">Jesus VS les vampires</a>”, <a href="https://www.youtube.com/watch?v=f6QmgTQpLWU">Blade Trinity en 5 secondes</a>, puis bien sûr une fin alternative en dessin animé pour … <a href="http://bcove.me/ss4kiz0j">Twilight</a> … Comment dire … On est lancé !
J’ai eu le plaisir d’y faire mon baptême avec le film Higanjima, film de vampires japonais, tiré d’un manga éponyme.</p>
<p><img src="/assets/higanjima-aff.jpg" alt="Higanjima" /></p>
<p>Pour avoir déjà goûter aux vampires sauce Yakitori avec <a href="https://www.youtube.com/watch?v=tYnciEGup9k">Blood</a> (version anime), je n’ai pas franchement été dépaysé sur l’ambiance et le style graphique. Le film respecte les règles <em>du genre</em> : un lieu reclu (une des 7000 îles japonaises), un vampire libéré de sa prison, un héros torturé, des gamins pleins d’espoirs désillusionés, du sang en surdosage, une nana sexy, …
Le film est rythmé, comique, sanglant, … parfois aberrant. Et c’est là que son charme s’opère. On apprécie son côté décallé qui reste sur les rails <em>de son genre</em>.
Bref, une soirée parisienne gratuite et super plaisante, à refaire régulièrement : ca tombe bien, c’est toutes les semaines !</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Twixt, deux doigts coupent fin ...
2012-04-12T21:52:25+02:00
https://francois.aichelbaum.com/2012/04/12/twixt-deux-doigts-coupent-fin
<p><img src="/assets/twix-150x150.gif" alt="Twix" />{.left} Le dernier Coppola que je me suis fait au ciné, c’était un film de la fille du <em>Maître</em> <a href="https://www.youtube.com/watch?v=sU0oZsqeG_s">Lost in Translation</a> - Sofia Coppola, 2003). Le sentiment qui me revient à chaque fois que je pense à ce film ? “Hein ? Quoi ? Je suis où ? Il s’est passé quoi ?” … Bref, perdu … Je crois qu’en fait, c’est génétique chez eux. En tout cas, je suis dans le même état après Twixt.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>On suit donc un écrivain raté, un Stephen King de seconde classe, dominé par la mort de sa fille, guidé par Edgar Allan Poe, dans un univers présentant les traits d’un livre d’<a href="https://www.youtube.com/watch?v=auw3_z9EyRg">Alan Wake</a> en plus … épuisé par l’alcool.
Tous les clichés sont donc réunis : un écrivain atteind du mal de la page blanche, à qui l’ont colle une étiquette de genre qu’il n’aime pas, torturé par la mort de sa fille dont il se culpabilisé, agressé en permanence par sa <del>sorcière</del> femme, défoncé au mauvais alcool (et parfois un bon whisky onirique) et aux somnifères ; un bled paumé dans l’amérique profonde, traumatisé par un massacre ; des <del>bouseux</del> autochtones rares et … bizarres ; un shérif qui rêve de son quart d’heure américain ; un agent qui ne pense qu’à son argent ; …
Bon c’est sûr, avec un environnement pareil, un synopsis qui tiens sur une carte de visite et un Val Kilmer toujours plus gros (il continue d’imiter son mentor, Marlon Brando), on part tout de suite sur de mauvaises bases avec ce film. Puis, on se rappelle que c’est le Maître à la baguette, que tous les détails comptent.</p>
<ul>
<li>Twixt ? selon le wikipedia, c’est de l’<em>anglais archaïque</em> pour dire “entre (deux choses)” ; on passe notre temps à hésiter : entre deux émotions (mal-être et agacement), entre deux mondes (monde vivant et monde onirique), entre deux films (un thriller et un film d’horreur)</li>
<li>Val Kilmer ? Un acteur qui avait un potentiel et qui l’a gâché (comme son personnage)</li>
<li>Le beffroi ? Sept cadrans, sept heures différentes, sept séquences, sept coups de cloche à sept reprise, sept cadavre d’enfants alors qu’il devrait y en avoir douze, on ne connait qu’un seul jour, le dimanche, le 7e … sept … toujours sept … à la manière du “Nevermore” du corbeau d’Egdar Poe … (au passage, le budget est de … 7 millions de dollars)</li>
<li>tout est intemporel : on ne sait plus l’heure à cause du beffroi, on ne sait plus la date avec les personnages qui sont présents à toutes les époques et dans les deux univers, …</li>
</ul>
<p>Au final, l’impression d’être perdu est clairement une manipulation voulue. On nous perd dans le fouilli ambiant, pour nous rattraper par des messages chocs, des images plus qu’expressive et toujours d’actualité, peu importe le pays. Assez perturbant car on ne sait jamais sur quel pied danser avec le film, et encore moins quoi ressentir après coup.</p>
<p>Par contre, je n’avais pas vu autant de sang (dans la scène finale) depuis que Freddy Krueger avait tué <a href="https://www.youtube.com/watch?v=p0rbyIMXBJA">Johnny Depp</a>.</p>
<p>Bon allez, pour la route, je ne pouvais pas ne pas la sortir :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Perturbé, je suis incapable, même après ce billet, de dire si j’ai apprécié ou non ce film ; je suis clairement perdu avec … Mais Coppola reste le <a href="https://www.youtube.com/watch?v=WaVZmo8CsGQ">Maître</a>. A voir si vous voulez arrêter l’alcool ou la drogue.</p>
<p><img alt="" src="/assets/twixt.jpg" title="" srcset=" /assets/twixt.jpg 300w" /></p>
La croisière s'amuse ...
2012-04-11T22:57:59+02:00
https://francois.aichelbaum.com/2012/04/11/la-croisiere-samuse
<p>Ce soir j’ai <em>re</em>découvert un monument de l’art audiovisuel cinématographique :</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Bon alors attention, le cast est super long, super non exhaustif et super pas dans l’ordre :</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=3kzBwxQ39mM">Olive et Tom</a></li>
<li><a href="https://www.youtube.com/watch?v=6Rf55GTEZ_E">John Carter</a> quand il s’est pas vu quand il a bu</li>
<li><a href="https://www.youtube.com/watch?v=AABvc7Y9hpE">Mr Bean</a> qui se la joue <a href="https://www.youtube.com/watch?v=kT552wBkiuE">Panthère Rose</a></li>
<li>les <a href="https://www.youtube.com/watch?v=5SrpxsaMFQw">Cowboys</a> de l’espace revus par les <a href="https://www.youtube.com/watch?v=InBXu-iY7cw">Village People</a></li>
<li>un réal qui croit être le fils de <a href="https://www.youtube.com/watch?v=NZZvtQtdbzM">Rolland Emmerich</a></li>
<li>une BO bien rock’n’roll avec un magistral <a href="https://www.youtube.com/watch?v=o018byLnMFM">Thunderstruck</a></li>
<li>un <a href="https://www.youtube.com/watch?v=snr3ajCFR9Y">Qui Gon Jinn</a> au regard de feu mais je me demande s’il ne porte pas déjà des couches</li>
<li>des <a href="https://www.youtube.com/watch?v=oEYH28o3aOw">jouets</a></li>
<li>une <a href="https://www.youtube.com/watch?v=DE0jyoMggGQ">chanteuse</a> <del>pulpeuse mais fragile</del> sur-tatouée, comme un vrai marines !</li>
<li>une <a href="https://www.youtube.com/watch?v=qwpjSpc3loQ">Barbie</a></li>
<li>une <a href="https://www.youtube.com/watch?v=wBAfpjf5z2U">bataille navale pour de faux</a> parce que sinon ca fait bobo</li>
<li>des aliens sortis de <a href="https://www.youtube.com/watch?v=ElxWObVu8GY">Mass Effect</a> armés par <a href="https://www.youtube.com/watch?v=4nPReFao19g">Lost Planet</a></li>
<li>le tout à bord du <a href="https://www.youtube.com/watch?v=m_wFEB4Oxlo">Pacific Princess</a></li>
<li>pour mettre en valeur le patriotisme et le sacrifice de <a href="https://www.youtube.com/watch?v=NIyksk8uiEo">Pearl Harbor</a></li>
<li>sans oublié, la référence à <a href="https://www.youtube.com/watch?v=u_Mx1kA3irk">Touche pas mon périscope</a></li>
<li>un survivor qui n’a pas oublié ses classes de <a href="https://www.youtube.com/watch?v=DnN_ElUIW78">Foot US</a></li>
<li>un <a href="https://www.youtube.com/watch?v=nXCXw7R9pWc">intello</a>, ca a des lunettes, les chocottes et c’est pas doué</li>
<li>du <a href="https://www.youtube.com/watch?v=xZ96tl5MrfU">Fast and Furious <del>Hawaï</del> Tokyo Drift</a> à la mer</li>
<li>la séquence émotion des <a href="https://www.youtube.com/watch?v=wLlmymHRNZg">Rasta Rocket</a></li>
<li>l’autre séquence émotion perdue entre l’<a href="https://www.youtube.com/watch?v=dJ3kwMq18-8">entraide</a> et la <a href="https://www.youtube.com/watch?v=t8NR6n1nRMI">douleur</a></li>
<li><a href="https://www.youtube.com/watch?v=g1-9vw8cUi8">‘Ti Biscuit</a> en patron de la Défense US</li>
<li>un <a href="https://www.youtube.com/watch?v=PQaNxnXh68s">burrito</a> au poulet</li>
<li>c’est l’histoire de <a href="https://www.youtube.com/watch?v=TRE7gINaS5o">Dumb and Dumber</a> qui ont un fils, comme s’appelle-t-il ?</li>
<li>l’armée ca vous <a href="https://www.youtube.com/watch?v=V7SgZ2kbENg">forme</a> votre jeunesse dépravée</li>
<li>de <a href="https://www.youtube.com/watch?v=STp1UtMrKR4">beaux dialogues</a> parce que ca motive (réf à un certain Mr J.)</li>
<li>au moins autant d’invités, de clins d’oeils involontaires (ou pas ?), de référence qu’il y a de séquences …</li>
</ul>
<p>Ca donne</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>D’ailleurs, UGC le résume tout aussi bien en une image dans son mensuel :</p>
<p><img src="/assets/ugc.png" alt="UGC - Mensuel 04/12 - Battleship" /></p>
<p>Je suis à jeun. Par contre, avec un budget annoncé de 200 millions de dollars pour transformé le jeu de la bataille navale en film, je pense que la Prod et la Réa ont bien profité pour se démonter le cerveau.
J’ai rarement vu une salle aussi hilare du début à la fin. C’est gros. C’est baveux. C’est énorme. C’est LA référence des super-grosses productions américaines pour les décennies à venir. C’est LE nanard du siècle.
Ok je partais avec l’idée d’aller voir un navet vu que le ruhbe m’empêche de connecter tous les neurones. Au final, j’en sors, je suis soigné, et me souviens de tout … Ils mettent des choses dans les clim’ des UGC ? Bref, c’est tout simplement énorme dans le n’importe quoi. Pas une séquence sans me rappeler un film, une série, un DA, un personnage, une chanson, … Et dès la première séquence, on vous fait comprendre que ce n’est pas votre cerveau qui déraille mais bien le film qui sera comme ca.
C’est Battlleship. C’est inclassable. C’est sorti aujourd’hui. C’est sain pour votre santé. Et moi, je pars me chercher un burrito au Jumbo … pardon, au poulet.</p>
<p><img alt="" src="/assets/battleship.jpg" title="" srcset="/assets/resized/480/battleship.jpg 480w, /assets/battleship.jpg 600w" /></p>
A l'oeil d'aucun
2012-04-04T21:07:29+02:00
https://francois.aichelbaum.com/2012/04/04/a-loeil-daucun
<p><img src="/assets/oeil-150x150.jpg" alt="oeil" />{.left} Alors ce soir au dîner, je vous propose la recette suivante :</p>
<ul>
<li>une base de <a href="http://www.allocine.fr/series/ficheserie_gen_cserie=58.html">24H Chrono</a></li>
<li>une bidasse bien française</li>
<li>un soupçon d’<a href="http://fr.wikipedia.org/wiki/Anonymous_(collectif)">Anonymous</a> pour être à la mode</li>
<li>de la crème électorale</li>
<li>saupoudré d’un enregistrement rappelant par moment du <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=57410.html">Saw</a> …</li>
</ul>
<p>Et on obtient … <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=191181.html">Aux yeux de tous</a>. Bon, c’est sûr, j’y suis allé avec un méchant <em>a priori</em> sur le film et principalement la partie “hacking”. Faut être réaliste, nous remettre un coup d’<em>Anonymous</em> pour faire passer la pillule c’était un peu trop à mon goût (mais c’est un autre débat).</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Le film démarre et je subis clairement les premières minutes, tant que notre cher Martin, le pirate, ne fait qu’être spectateur. Entre l’environnement permettant tout et n’importe quoi, la beauté dans la bascule des écrans, le tout accessoirisé par <a href="http://www.microsoft.com/hardware/fr-fr">Microsoft</a> … et j’en passe des meilleurs … Quoi que non je ne passe pas …
La caméra passera rapidement et furtivement sur les écrans pour nous montrer des pseudos lignes de commande ou de code … et s’attardera parfois sur des écrans de toute beauté pour les connaisseurs. Un exemple ?
Dans le film :</p>
<p>~~~~ {.shell .numberLines startFrom=1}
$ pstree -l 13278</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre></td><td class="rouge-code"><pre>
(on s'en fout du nombre ...) donne en résultat ... une recherche sur la présence d'une nana dans tous les hopitaux parisiens ... C'est magique.
Dans la réalité, [pstree](http://manpagesfr.free.fr/man/man1/pstree.1.html) affiche un arbre des processus d'un système Linux (un arbre permettant de savoir de quel programme un autre programme dérive, pour faire simple).
~~~~ {.shell .numberLines startFrom=1}
$ pstree
</pre></td></tr></tbody></table></code></pre></div></div>
<p>renvoie par exemple</p>
<p>~~~~ {.shell .numberLines startFrom=1}
init─┬─atop
├─cron
├─6<em>[getty]
├─master─┬─anvil
│ ├─pickup
│ └─qmgr
├─mysqld_safe─┬─logger
│ └─mysqld───19</em>[{mysqld}]
├─openvpn
├─pdns_server─┬─pdns_server───11<em>[{pdns_server}]
│ └─{pdns_server}
├─postgrey
├─snmpd
├─sshd───sshd───sshd───bash───sudo───su───bash───pstree
├─syslog-ng───syslog-ng
└─udevd───2</em>[udevd]
~~~~</p>
<p>Le “-l” ? Il permet un affichage dit “long” donc avec plus d’infos. Le nombre ? De démarrer à un certain niveau directement.</p>
<p>Bref on est à des années lumières d’une recherche sur des bases d’hôpitaux.
On continue ? Les caméras : peu importe que cela soit des caméras de sécurités, des globes de banque, de boutiques, etc etc … Toutes ont du son : c’est tout simplement parfait pour espionner.
On pourrait continuer longtemps sur les incohérences … Donc autant en faire abstraction sinon on sort direct de la salle de cinéma.
Passé un bon gros 20/30 minutes, le film se dynamise un peu et nous rappelle qu’on est au cinéma pour se divertir … L’histoire sur l’attentat suit son cours puis vient nous rappeler que n’importe quel média peut être manipuler … parfois (?) par les politiques. On pourrait se dire que le film tombe bien ? Peut être trop …
Quoi qu’il en soit, le film me laisse un goût amer, mélangeant les questions qu’on est en droit de se poser sur l’actualité de ces dernières semaines, à une mauvaise réalisation qui rend l’ensemble assez indigeste. Pour faire simple : le potentiel du film est clairement gâcher.
Ok le budget du film minime, sa sortie en salle assez confidentielle, mais bon :</p>
<ul>
<li>la réalisation ferait échouer le candidat aux épreuves universitaires</li>
<li>le hacking nous rappelle à quel point notre “science” ressemble à du chinois (d’ailleurs ils auraient mis des caractères à la <a href="https://www.youtube.com/watch?v=8ze54ymmi1A">Matrix</a> j’aurais préféré …)</li>
<li>les effets visuels (l’explosion de l’attentat en tête de file) ne sont même pas au niveau des <a href="http://www.gobelins.fr/">Gobelins</a></li>
</ul>
<p>Dommage : le synopsis était sympa, le parti pris de n’avoir que des images “de webcam/cam de sécurité/…” audacieux … mais le reste échoue lamentablement.
Bref, à voir si vous vous posez encore des questions sur ce que vous voyez dans les médias ou que vous voulez rire des <em>Script Kiddies</em> membre des <em>Anonymous</em> et dans tous les autres cas … A FUIR !</p>
Hop hop on garde le rythme
2012-03-29T21:26:16+02:00
https://francois.aichelbaum.com/2012/03/29/hop-hop-on-garde-le-rythme
<p>Bon aujourd’hui c’est un billet “<a href="/category/feelings/">Fellings</a>” car je ne sais pas trop de quoi parler … Ah si, on peut lister ces deux derniers jours !</p>
<h2 id="cinéma--chronicle--the-wrath-of-the-titans">Cinéma : Chronicle & the Wrath of the Titans</h2>
<p>Alors Chronicle on va le résumé ainsi : un mix entre du <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=20268.html">Projet Blairwitch</a> pour l’ambiance visuel et le concept et du <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=6429.html">Akira</a> pour les mecs qui gagnent des pouvoirs et potentiellement pêtent un câble.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>On passe un bon moment même si l’on se doute dès le début de comment tout ca va finir … Mais on regarde … On regarde la nature humaine s’exprimer de deux manières différentes. Après tout : à de grands pouvoirs, de grandes responsabilités. On apprécie que la vidéo ne soit pas fouillie (ni trop quand elle doit l’être) contrairement à certains films à effets spéciaux récents… Pas grand chose à dire : juste à le prendre pour ce qu’il est : une vue de la nature humaine, une bonne ambiance, un bon trip, un bon moment.</p>
<p>Par contre, la Colère des Titans… Alors ok, on fait tout de suite abstraction de la mythologie (de ce qu’on s’en souvient ou non) et on reste focalisée sur l’adaptation plus que libre faite par <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=127950.html">le Choc des Titans</a> version 2010 …</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Bon dès lors, on s’attend simplement à un gros spectacle en 3D … On en a presque pour son argent : l’action est là, les graphismes sont propres, la 3D … absente … Bon, si vous avez conservé vos lunettes UGC … on s’en fout presque …
Ce que je regrette ? La BO présente du <a href="https://www.youtube.com/watch?v=m6VojYGrnpg%26ob%3Dav2n">Marilyn Manson</a> en bande son … Et bah non, on reste sur de la pure musique de film presque sans vie … Dommage, ca aurait pu donner un énorme plus d’avoir une OST avec ce genre de dynamisme … Mais bon …
Après, on rigolera clairement du jeu de certains acteurs vraiment pas convaincant (Liam Neeson & Ralph Fiennes en tête …) surtout que ce ne sont plus de jeunes premiers.
Bref, gros spectacle mais qui loupe clairement le coche de se démarquer sur “le reste” (3D, bande originale, jeu des acteurs…) puisqu’il est très clairement annoncé pour nous en mettre plein la vue … Dommage, il y avait de quoi en faire un vrai blockbuster avec ces petits plus … A ranger en nanard à gros budget qui se fera vite oublier … Jusqu’à la prochaine suite …</p>
<h2 id="au-taff--le-salon-cloud">Au taff : le salon Cloud</h2>
<p>Plus petit que par le passé. Moins animé que par le passé. Plus de presta (SSII et VRP) que par le passé (qui viennent vous démarcher, sans stand). Plus fouilli. Plus éreintant.
Et juste “Cloud”… Dommage, la partie Datacenter est presque oubliée, et le Green IT, passé de mode.
Pourtant, cela ramenait du meilleur monde et donnait beaucoup plus de matière à parler … Du coup, tout le monde vend la même chose, de la même manière, … Après, il y a quelques exceptions :</p>
<ul>
<li><a href="http://www.iliad-entreprises.fr/">nous</a> déjà : normal j’y suis … je ne suis pas objectif (mais si on a quelque chose en plus quand même)</li>
<li><a href="https://www.outscale.com">Outscale</a> : qui a choisit un mode de fonctionnement très différent de la concurrence, des outils différents, puis bon, l’affectif joue puisque j’ai fait mes classes en infogérance avec ses fondateurs (David Gillard et Laurent Seror) et certains membres (Fred Jolliton en tête)</li>
<li><a href="http://www.cloudbees.com/">CloudBees</a> : même si je suis allergique au Java, leur approche et leur produit m’a interpelé au milieu du reste</li>
</ul>
<p>Bon prochain coup, faut prévoir les masseuses par contre (pour moi) et mes pitbulls pour qu’on n’est pas à jeter le “spam” humain comme on finit par le faire à la fin de la journée …</p>
<h2 id="feelings-">Feelings ?</h2>
<p>Bon si je ne dis rien sur ce point, on va me dire que je ne communique pas, que je garde trop pour moi, que j’inquiète les gens, etc etc …
Donc je me retrouve, je suis positif … Juste que tout ces chamboulements dans ma vie perso font que j’ai envie d’autre chose niveau pro … Recommencer, pour tourner totalement la page sur ce passé.
Et quelque part, revoir d’anciens patrons/collègues chez qui j’ai fait mes classes d’infogérant et pour qui j’ai énormément de respect … fait que le côté nostalgie rappuie sur ce point …
Rajouté aux rêves et souvenirs que j’ai en ce moment …
Enfin bon, maître-mot du moment PO-SI-TIF !</p>
<p>Bon et la vidéo qui me donne le sourire aujourd’hui ?</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
Ce matin, revue de films
2012-03-27T09:11:09+02:00
https://francois.aichelbaum.com/2012/03/27/ce-matin-revue-de-films
<p>Vu que je dois m’occuper au maximum l’esprit et me forcer à sortir, ma solution de facilité : profiter de ma carte UGC.
Du coup, en quatre jours, quatre films : <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=137263.html">John Carter</a>, <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=178074.html">Target</a>, <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=183556.html">la Dame en Noir</a> et <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=145083.html">Hunger Games</a>. Allons-y dans l’ordre.</p>
<h2 id="john-carter">John Carter</h2>
<p>On est vendredi soir, je déprime un peu beaucoup, je dois me changer FORTEMENT les idées : direction le ciné avec un film que je crois être un super nanard : <em>John Carter</em>.
Pour ceux qui auraient la flemme de cliquer, il s’agit d’un film mélangeant action, aventure et science fiction, produit par Disney, réalisé par Andrew Stanton (un habitué de chez Pixar ayant déjà réalisé <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=126123.html">Toy Story 3</a>, <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=130368.html">Là-Haut</a>, <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=123734.html">Wall-E</a> et <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=46211.html">Ratatouille</a>) basé sur le premier volume du <em>Cycle de Mars</em> d’Edgar Rice Burroughs (1917).
On résume ? une maison de production avec des moyens assez énorme, pour rester gentil, un réalisateur de films magnifiques, et un livre des premières heures de la SF donc avec la naïveté et les bases de l’époque (la rédaction du livre a commencé a priori en 1911 donc l’histoire est centenaire !). A la base, il y a de quoi promettre.
Puis on se souvient que Disney commet souvent des impairs : où sera-t-il aujourd’hui ? Dans toute la promo …</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Résultat, le film est prometteur, mais la promo a tout gâché et donc pas assez d’entrée … Qu’en est-il vraiment ? Et bien il en ressort un excellent divertissement à la qualité graphique Pixar ! Action rapide (et nette), un peu de romance légère façon macho début du XXe siècle, une épopée de gladiateur, … J’ai vu un mélange de <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=20754.html">Star Wars - la Menace Fantôme</a> (pour les graphismes), de <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=12811.html">Flash Gordon</a> (pour l’ambiance mélangeant les style et d’une autre époque) et tous les bons vieux péplum avec Charlton Heston ou Kirk Douglas !
Et pour ceux comme <a href="http://odieuxconnard.wordpress.com/2012/03/22/john-cratere/">Odieux Connard</a>, qui vont voir le film sous LSD en s’arrêtant à la promo faite (oui je sais, faut le prendre au 50.000e degré son blog) : allez voir les <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=180509.html">Chroniques de Mars</a> et on reparle de <em>John Carter</em> ! Bref, faites abstraction de la partie “Disney”, de toutes les affiches sur les abri-bus et dans le métro et profitez de ce film pour ce qu’il est : un énorme spectacle pour toute la famille reposant sur les origines de la SF un chevalier sans maître, une princesse, une guerre, un dragon/sorcier) avec de faux airs de nanard. Perso, je suis fan.</p>
<h2 id="target">Target</h2>
<p>Samedi je me suis dit, tant qu’à faire, autant prendre le rythme d’un film quotidien. Cogitant pas mal sur les histoires de triangle amoureux, je me rabas sur celui que je ne devrais pas : <em>Target</em>. Réalisé par McG, j’ai confiance pour un bon spectacle. J’ai découvert McG via des séries et quelques adaptations : <a href="http://www.serieslive.com/serie/chuck/1087/">Chuck</a>, <a href="http://www.serieslive.com/serie/supernatural/628/">Supernatural</a>, <a href="http://www.serieslive.com/serie/human-target-la-cible/2006/">Human Target</a> ou encore <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=57405.html">Terminator Renaissance</a> et les deux <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=27119.html">Charlie’s Angels</a>.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>C’est rythmé. C’est explosif. C’est sur-joué. C’est une relation amoureuse sous testostérone. Une fois qu’on a dit ca, le film est résumé. Une pointe d’humour quand même sinon ca serait fade… Mais oui, voilà tout le film. C’est le genre qu’on regarde et qu’on oublie quelques minutes après, même en ayant passé un bon moment. Je ne regrette pas, mais je n’irais pas le revoir volontairement.
L’histoire tient du sitcom. Le naturel des espions est artificiel. L’action présente est télescopée. Reste Reese que j’adore et la réalisation dynamique de McG pour sauver le film. J’en suis sorti avec un avis mitigé : peu digeste du fait des à peu près, diverti quand même, mais déçu de l’histoire et de la manière de la mener. Dommage.</p>
<h2 id="la-dame-en-noir">La Dame en noir</h2>
<p>Dimanche midi, il fait beau, on peut aller se cacher dans une salle obscure pour se faire peur : ca sera <em>la Dame en noir</em>. Bon on connait Daniel Radcliffe pour l’avoir vu grandir à travers son rôle d’<a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=29276.html">Harry Potter</a>. Peut-être trop d’ailleurs ce qui fait que toute la promo a tourné autour de lui en nous laissant parfois apercevir un lien non désiré entre tout ca …</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>Heureusement, aucun lien si ce n’est l’étiquette collée au visage de Daniel. Il va vraiment avoir du mal à s’en défaire. Pour autant, le film, adapation du livre éponyme est vraiment agréable a regarder. Tant qu’on n’a pas des wanabe-racaillettes en train de piailler à la moindre image … Bref …
Mon premier sentiment pendant le film : le même sentiment que lorsque j’ai vu <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=863.html">Shining</a> pour la première fois : curieux, en attente, sursautant sur mon siège même lorsque c’est prévisible … Le jeu des acteurs est convaincant, la réalisation propre, la photo un peu trop flou sur certaines scène, mais l’ambiance est clairement là et on apprécie le film.
Oui l’histoire est plus que prévisible, et on en arrive vite à se poser deux fins possibles et, comme tout impatient, attendre la fin pour savoir si l’on s’est trompé ou non. Mais on nous la fait déguster, apprécier, morceau par morceau, et on finit plus horrifié par la cause que par les conséquences. Pour ceux qui cherche une autre vision de l’épouvante, celle qui fait cogiter et non celle qui cherche à nous faire boire des litres de sang accompagnés de lambeaux de chair humaine.</p>
<h2 id="hunger-games">Hunger Games</h2>
<p>Alors là, j’étais le voir par curiosité avec un avis très mitigé. On est lundi soir, je suis crevé après une journée assez bizarre et j’ai lu deux/trois choses sur <em>Hunger Games</em> mais surtout vu l’affiche. Pour la petite histoire, <em>Hunger Games</em>, c’est avant tout une trilogie littéraire récente, primée, vendue à foison… On se dit tout de suite : il y a matière, surtout après avoir lu le synopsis ! Puis c’est un film. La première approche d’un film ? Son affiche et là, je remarque le détail, qui personnellement me refroidit : la position de la main de <em>Katniss</em> pour tenir son arc : elle va avoir sacrément mal en décochant sa flèche ; donc soit ils ont oublié les conseillers dans la partie budget de la super production, soit il y a quelque chose. Réponse ? Il y a quelque chose et ca s’appelle l’incompétence de celui qui a sélectionner la photo car le conseiller ou la formation à l’archerie est bien présent.</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen=""></iframe></div>
<p>On se retrouve donc dans un monde post-rebellion où les Etats Unis ne sont plus (ça nous change déjà) et remplacé par un Etat divisé en secteurs. L’ambiance qui ressort de la gouvernance telle qu’elle nous ait présentée ? un mélange de <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=32224.html">Running Man</a>, <a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=253.html">New York 1997</a> (rah … Snake !) et d’<a href="http://www.allocine.fr/film/fichefilm_gen_cfilm=132663.html">Alice au Pays des Merveilles</a> (j’hésite sur la version…). On se demande où on n’est au début … puis on commence à apprécier. A voir les volumes suivants.
Mais avant de pouvoir apprécier l’ambiance, on doit déjà arriver à digérer la réalisation caméra au poing qui donne plus le mal au crâne qu’autre chose : l’action générale est floue, on est perdu … Vu le réalisateur, pas étonnant dans le rendu, mais plus étonnant dans le choix. A croire qu’il s’est fait un film de guerre juste avant et qu’il s’est dit que ca serait bon pour dynamiser l’action. Monumentale erreur !
On pourra cependant apprécié <em>Lenny Kravitz</em> même s’il a peu de scène. Remarque, on a toujours la sensatin qu’il a eu des coupures nets dans l’histoire et l’enchaînement des scènes, à croire que certains ont oublié qu’adaptation ne signifiait pas prendre un livre et sortir la hache …
Mais bon, on reste assez, on ignore le mouvement de caméra et les coupures, puis on commence à apprécier le film pour son potentiel et non pour son rendu. Dommage.
Autre point que je regrette ? la bande originale “<a href="http://www.amazon.fr/Hunger-Games-District-digital-booklet/dp/B007GHW76U">The Hunger Games : songs from District 12 and beyond</a>” n’inclut AUCUNE chanson de Lenny … Roh !!!
Bon, vous allez vous dire que le film est nul, que je regrette … franchement, non. Oui je n’ai clairement pas apprécié la réalisation et certains choix fait, pour autant, le film me donne envie de découvrir les livres mais me fait aussi attendre avec impatience les deux prochains volets. J’ai passé deux très bonnes heures et si on me demandait d’accompagner quelqu’un et de me le refaire, j’accepterais.</p>
Autoconfiguration des mails
2012-03-23T08:27:48+01:00
https://francois.aichelbaum.com/2012/03/23/autoconfiguration-des-mails
<p>Aujourd’hui j’ai retrouvé une motivation longtemps disparue pour bosser. Je me suis intéressé à des histoires de DNS et d’emails.
J’avais eu une remontée de quelques “soucis” lors de la configuration des comptes mails par certains hébergés (membres/clients) de l’association (<a href="http://www.heimdall.net">Heimdall.net</a>). Je viens de mettre différentes choses en place.</p>
<h2 id="mise-à-jour-des-entrées-dns">Mise à jour des entrées DNS</h2>
<p>Il manquait quelques entrées DNS “classiques” : j’ai donc remis les CNAME correspondants pour les smtp.<em>, imap.</em> et pop.*. De plus, leur absence pertubait certains hébergés donc d’une pierre deux coups.
J’ai aussi corrigé l’accès au webmail pour qu’on puisse à nouveau l’utiliser en <a href="http://webmail.heimdall.net">webmail.*</a>.</p>
<h2 id="autoconfiguration-globale">Autoconfiguration globale</h2>
<p>Il y a une <a href="http://tools.ietf.org/html/rfc6186">RFC</a> concernant l’utilisation des enregistrements DNS type SRV pour l’accès et l’envoi des emails. Les champs sont bien renseignés pour la zone heimdall.net :</p>
<figure class="highlight"><pre><code class="language-console" data-lang="console"><span class="gp">$</span><span class="w"> </span><span class="k">for </span>proto <span class="k">in </span>smtp imap pop3 submission<span class="p">;</span> <span class="k">do </span>dig srv _<span class="nv">$proto</span>._tcp.heimdall.net | <span class="nb">grep </span>SRV | <span class="nb">tail</span> <span class="nt">-1</span> <span class="p">;</span> <span class="k">done</span>
<span class="go">_smtp._tcp.heimdall.net. 79 IN SRV 0 1 25 mail.heimdall.net.
_imap._tcp.heimdall.net. 151 IN SRV 0 1 143 mail.heimdall.net.
_pop3._tcp.heimdall.net. 300 IN SRV 0 1 110 mail.heimdall.net.
_submission._tcp.heimdall.net. 300 IN SRV 0 1 587 mail.heimdall.net.</span></code></pre></figure>
<p>Par contre pour tester plus, vu que ce qui suit est déjà en place …</p>
<h2 id="autoconfiguration-pourthunderbird">Autoconfiguration pour Thunderbird</h2>
<p>J’ai également trouvé un moyen qui permet à <a href="http://www.mozilla.org/fr/thunderbird/">Thunderbird</a> de se configuration automatiquement avec un simple fichier <a href="http://autoconfig.heimdall.net/mail/config-v1.1.xml">XML</a>. A voir ce qu’on peut y rajouter, mais le résultat est assez bluffant déjà de base : on donne son adresse mail et son mot de passe à <a href="http://www.mozilla.org/fr/thunderbird/">Thunderbird</a>, il fait le reste … j’adore !</p>
<h2 id="autoconfiguration-pour-outlook-2010">Autoconfiguration pour Outlook 2010</h2>
<p>Dans le même esprit que pour <a href="http://www.mozilla.org/fr/thunderbird/">Thunderbird</a>, il existe un format <a href="http://autodiscover.heimdall.net/autodiscover/autodiscover.xml">XML</a> pour la configuration automatique d’Outlook 2010. Plus qu’à trouver les outils MS pour tester …</p>
Il faut bien un début !
2012-03-21T19:06:19+01:00
https://francois.aichelbaum.com/2012/03/21/il-faut-bien-un-debut
<p>Un blog et tellement de questions.
Pourquoi un blog ? Pourquoi maintenant ? Que pourrais-je y écrire ? J’ai ré-ouvert ce domaine il y a quelques jours, et installé le wordpress peu après … Puis plus rien. Pour une raison très simple : ma vie actuelle est compliquée et douloureuse. Ceci a eu pour effet un isolement de ma part avec des pensées bien trop noires.
Mais bon, ma nature double fait que j’ai ouvert les yeux sur certaines choses ce matin. J’ai besoin de retrouver la solitude liée à mon côté loup pour pouvoir méditer, me retrouver avec moi-même et faire ce que j’ai à faire pour reprendre ma place en haut de la pyramide.
Cela ne va pas se faire en quelques secondes, et contrairement à ce que beaucoup pensent, certains d’entre nous n’ont pas besoin de se faire entourer car justement, l’étouffement lié peut être bien plus destructeur qu’autre chose.
Ce besoin de solitude vient aussi de mon sentiment de trahison d’une personne très proche, qui, même dans la situation actuelle, avec la guerre sans nom qu’elle m’a lancé avec son oubli volontaire, reste ma Lili. On pourrait considérer que c’est une énorme bétise de penser encore et toujours à elle mais bon, l’instinct est et restera supérieur ! Suffit de faire appel au reptilien pour éviter la souffrance.
Tout ceci pour justifier le délais de réflexion avant de déposer mes premiers mots. Les autres questions ? Le temps y fournira les réponses, comme à toute chose. Mais je ne prévois pas de restreindre ce blog à un seul et unique type de messages.
Aujourd’hui, j’entame un parcours initiatique pour parachever ma traversée du désert. Ma seule certitude ? Que je peux faire confiance à mon instinct, quoi qu’il arrive.</p>