<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Prune&#039;s Blog</title>
	<atom:link href="http://www.lecentre.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lecentre.net/blog</link>
	<description>Internet, UNIX, Video, Leisure...</description>
	<lastBuildDate>Thu, 19 Jan 2012 20:38:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Syslog LogAnalyzer with LDAP authentication</title>
		<link>http://www.lecentre.net/blog/archives/1328</link>
		<comments>http://www.lecentre.net/blog/archives/1328#comments</comments>
		<pubDate>Thu, 19 Jan 2012 20:38:44 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[adiscon]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[loganalyzer]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rsyslog]]></category>
		<category><![CDATA[syslog]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1328</guid>
		<description><![CDATA[&#160; &#160; Adiscon is the company responsible for developping LogAnalyzer, a syslog (rsyslog, syslog-ng&#8230;) and/or flat file &#171;&#160;analyzer&#160;&#187;. By analyzer, understand that it enables you to display the log in a meaningful way, splitting it depending on &#171;&#160;views&#160;&#187; and enabling real search filters. If you don&#8217;t have the money for things liks Splunk and you [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="adiscon LogAnalyzer" src="http://loganalyzer.adiscon.com/wp-content/themes/loganalyzer/log-analyzer-logo.gif" alt="" width="274" height="68" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Adiscon is the company responsible for developping LogAnalyzer, a syslog (rsyslog, syslog-ng&#8230;) and/or flat file &laquo;&nbsp;analyzer&nbsp;&raquo;.<br />
By analyzer, understand that it enables you to display the log in a meaningful way, splitting it depending on &laquo;&nbsp;views&nbsp;&raquo; and enabling real search filters.</p>
<p>If you don&#8217;t have the money for things liks Splunk and you are not convinces by other new projects using Rails, NoSQL and other tools that are a pain in the ass to install, you may fallback to LogAnalyzer.<br />
<span id="more-1328"></span><br />
Loganalyzer is a LAMP (Apache, PHP, Mysql) application. Installing it is as easy as putting the PHP files in you web Documentroot and browse to it. You will be asked a few questions and you can start importing your log files.</p>
<p>To do that you need to create &laquo;&nbsp;sources&nbsp;&raquo; of data. A source can now be a flat file on the local disk or a database (Mysql).<br />
The choice for us was to use rSyslog on our servers. rSyslog is installed on every UNIX host. It is then configured to send the logs to a &laquo;&nbsp;loghost&nbsp;&raquo; server.<br />
Additionaly, on some hosts, flat files like the Apache access_log or Error_log are also sent by rSyslog.<br />
This lead to a client rsyslog.conf like :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#rsyslog v3 config file</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># if you experience problems, check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># http://www.rsyslog.com/troubleshoot for assistance</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### MODULES ####</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imuxsock<span class="sy0">.</span>so    <span class="co2"># provides support for local system logging (e.g. via logger command)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imklog<span class="sy0">.</span>so      <span class="co2"># provides kernel logging support (previously done by rklogd)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#$ModLoad immark.so     # provides &#8211;MARK&#8211; message capability</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> omrelp<span class="sy0">.</span>so      <span class="co2"># load RELP output module to send logs using RELP instead of UDP-TCP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imfile         <span class="co2"># load the file input module to scan specific log files</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### GLOBAL DIRECTIVES ####</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Use default timestamp format</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionFileDefaultTemplate</span> RSYSLOG_TraditionalFileFormat</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># File syncing capability is disabled by default. This feature is usually not required,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># not useful and an extreme performance hit</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#$ActionFileEnableSync on</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### File Input module ####</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileName</span> <span class="sy0">/</span>opt<span class="sy0">/</span>app<span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>mylog<span class="sy0">.</span>xml</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileTag</span> mylog<span class="sy0">.</span>xml<span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileStateFile</span> mylog<span class="sy0">.</span>xml</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileFacility</span> local5</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileSeverity</span> notice</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputRunFileMonitor</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### RULES ####</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> TraditionalFormatWithPRI<span class="sy0">,</span><span class="st0">&quot;%PRI-text%: %timegenerated% %HOSTNAME% <span class="es6">%s</span>yslogtag<span class="es6">%%</span>msg:::drop-last-lf%<span class="es1">\n</span>&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all kernel messages to the console.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Logging much else clutters up the screen.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#kern.* /dev/console</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log anything (except mail) of level info or higher.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Don&#8217;t log private authentication messages!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>info<span class="sy0">;</span>mail<span class="sy0">.</span>none<span class="sy0">;</span>authpriv<span class="sy0">.</span>none<span class="sy0">;</span>cron<span class="sy0">.</span>none<span class="sy0">;</span>local5<span class="sy0">.!</span>notice <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>messages<span class="sy0">;</span>TraditionalFormatWithPRI</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># The authpriv file has restricted access.</span></div>
</li>
<li class="li1">
<div class="de1">authpriv<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>secure</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all the mail messages in one place.</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/mail"><span class="kw3">mail</span></a><span class="sy0">.*</span> <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>maillog</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log cron stuff</span></div>
</li>
<li class="li1">
<div class="de1">cron<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>cron</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Everybody gets emergency messages</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>emerg <span class="sy0">*</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save news errors of level crit and higher in a special file.</span></div>
</li>
<li class="li1">
<div class="de1">uucp<span class="sy0">,</span>news<span class="sy0">.</span>crit <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>spooler</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save boot messages also to boot.log</span></div>
</li>
<li class="li1">
<div class="de1">local7<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>boot<span class="sy0">.</span><a href="http://www.php.net/log"><span class="kw3">log</span></a></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ### begin forwarding rule ###</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># The statement between the begin &#8230; end define a SINGLE forwarding</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># rule. They belong together, do NOT split them. If you create multiple</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># forwarding rules, duplicate the whole block!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Remote Logging (we use TCP for reliable delivery)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># An on-disk queue is created for this action. If the remote host is</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># down, messages are spooled to disk and sent when it is up again.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$WorkDirectory</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span>spool<span class="sy0">/</span>rsyslog <span class="co2"># where to place spool files</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueFileName</span> fwdRule1 <span class="co2"># unique name prefix for spool files</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueMaxDiskSpace</span> 1g <span class="co2"># 1gb space limit (use as much as possible)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueSaveOnShutdown</span> on <span class="co2"># save messages to disk on shutdown</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueType</span> LinkedList <span class="co2"># run asynchronously</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionResumeRetryCount</span> <span class="sy0">-</span><span class="nu0">1</span> <span class="co2"># infinite retries if host is down</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.*</span> <span class="sy0">@@</span>loghost<span class="sy0">:</span><span class="nu0">514</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#*.* <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> mrelp:loghost:20514;RSYSLOG_ForwardFormat</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ### end of the forwarding rule ###</span></div>
</li>
</ol>
</div>
</div>
<p>On the server (receiver) side, the rSyslog will put data into files, rotating every day, and inside the DB.<br />
Actualy I don&#8217;t know yet if it is a good idea. For the moment I keep everything. I may consider archiving the flat files and deleting old logs from the DB.<br />
Then the DB would act as a buffer to search and correlate.</p>
<p>This is the server rsyslog.conf :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co2"># if you experience problems, check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># http://www.rsyslog.com/troubleshoot for assistance</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># rsyslog v3: load input modules</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># If you do not load inputs, nothing happens!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># You may need to set the module load path if modules are not found.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># stats module &#8211; experimental</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># supprimer pour la mise en prod</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> impstats</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$PStatInterval</span> 600</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$PStatSeverity</span> 7</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/syslog"><span class="kw3">syslog</span></a><span class="sy0">.</span>debug <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>rsyslog<span class="sy0">-</span>stats</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> immark <span class="co2"># provides &#8211;MARK&#8211; message capability</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imuxsock <span class="co2"># provides support for local system logging (e.g. via logger command)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imklog <span class="co2"># kernel logging (formerly provided by rklogd)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> ommysql <span class="co2"># locad Mysql backend module</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$WorkDirectory</span> <span class="sy0">/</span>opt<span class="sy0">/</span>rsyslog<span class="sy0">/</span>work <span class="co2"># default location for work (spool) files</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Templates</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> RemoteHost<span class="sy0">,</span><span class="st0">&quot;/opt/rsyslog/data/%<span class="es4">$YEAR</span>%/%<span class="es4">$MONTH</span>%/%<span class="es4">$DAY</span>%/%HOSTNAME%/<span class="es6">%s</span>yslogfacility-text%.log&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># used for Cisco, vanilla syslog when we can&#8217;t parse host name</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> RemoteFromHost<span class="sy0">,</span><span class="st0">&quot;/opt/rsyslog/data/<span class="es6">%F</span>ROMHOST%/%<span class="es4">$YEAR</span>%/%<span class="es4">$MONTH</span>%/%<span class="es4">$DAY</span>%/<span class="es6">%s</span>yslogfacility-text%.log&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ######### Receiving Messages from local host only ##########</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all kernel messages to the console.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Logging much else clutters up the screen.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#kern.* /dev/console</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log anything (except mail) of level info or higher.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Don&#8217;t log private authentication messages!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>info<span class="sy0">;</span>mail<span class="sy0">.</span>none<span class="sy0">;</span>authpriv<span class="sy0">.</span>none<span class="sy0">;</span>cron<span class="sy0">.</span>none <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>messages</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># The authpriv file has restricted access.</span></div>
</li>
<li class="li1">
<div class="de1">authpriv<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>secure</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all the mail messages in one place.</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/mail"><span class="kw3">mail</span></a><span class="sy0">.*</span> <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>maillog</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log cron stuff</span></div>
</li>
<li class="li1">
<div class="de1">cron<span class="sy0">.*</span> <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>cron</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Everybody gets emergency messages</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>emerg <span class="sy0">*</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save news errors of level crit and higher in a special file.</span></div>
</li>
<li class="li1">
<div class="de1">uucp<span class="sy0">,</span>news<span class="sy0">.</span>crit <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>spooler</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save boot messages also to boot.log</span></div>
</li>
<li class="li1">
<div class="de1">local7<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>boot<span class="sy0">.</span><a href="http://www.php.net/log"><span class="kw3">log</span></a></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ######### Receiving Messages from Remote Hosts ##########</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># at this point, we consider only remote messages</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$RuleSet</span> remote</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># TCP Syslog Server:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># provides TCP syslog reception and GSS-API (if compiled to support it)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imtcp<span class="sy0">.</span>so <span class="co2"># load module</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerBindRuleset</span> remote</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerRun</span> <span class="nu0">514</span> <span class="co2"># start up TCP listener at port 514</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># TCP Syslog Server for Cisco &#8211; need port over 1024 :</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># provides TCP syslog reception and GSS-API (if compiled to support it)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imtcp<span class="sy0">.</span>so <span class="co2"># load module</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerBindRuleset</span> remote</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerRun</span> <span class="nu0">1470</span> <span class="co2"># start up TCP listener at port 514</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># UDP Syslog Server:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imudp<span class="sy0">.</span>so <span class="co2"># provides UDP syslog reception</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputUDPServerBindRuleset</span> remote</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$UDPServerRun</span> <span class="nu0">514</span> <span class="co2"># start a UDP syslog server at standard port 514</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># RELP Syslog (Reliable Event Logging Protocol)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># WARNING : RELP messages are not passed through ruleset yet and will be logged localy</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imrelp <span class="co2"># load RELP input module to send reliable messages &#8211; better than TCP and UDP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputRELPServerRun</span> <span class="nu0">20514</span> <span class="co2"># RELP port on 20514</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># #########</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># log remote hosts to specific files</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueType</span> LinkedList <span class="co2"># use asynchronous processing</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueFileName</span> dbq <span class="co2"># set file name, also enables disk mode</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionResumeRetryCount</span> <span class="sy0">-</span><span class="nu0">1</span> <span class="co2"># infinite retries on insert failure</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.*</span> <span class="sy0">-</span>?RemoteHost</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># log everything to mysql using default template</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#*.* <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> mmysql:database-server,database-name,database-userid,database-password</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#*.* <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> mmysql:localhost,loganalyzer,rsyslog,password</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># syslog-ng style template used by centreon-syslog</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> sysMysql<span class="sy0">,</span><span class="st0">&quot;INSERT INTO logs (host,facility, priority,level,tag,datetime,program,msg,ProcessID) VALUES (&#8216;%HOSTNAME%&#8217;,&#8217;<span class="es6">%s</span>yslogfacility%&#8217;,&#8217;<span class="es6">%s</span>yslogpriority%&#8217;,&#8217;<span class="es6">%s</span>yslogseverity%&#8217;,&#8217;<span class="es6">%s</span>yslogtag%&#8217;, &#8216;%timereported:::date-mysql%&#8217;,'%programname%&#8217;, &#8216;%msg%&#8217;,'%procid:R,ERE,0,ZERO:[0-9]+&#8211;end%&#8217;)&quot;</span><span class="sy0">,</span> SQL</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.*</span> <span class="sy0">:</span>ommysql<span class="sy0">:</span>localhost<span class="sy0">,</span>loganalyzer<span class="sy0">,</span>rsyslog<span class="sy0">,</span>password<span class="sy0">;</span>sysMysql</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># END remote logging</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#</span></div>
</li>
</ol>
</div>
</div>
<p>On the mysql side you will need to install the syslog-ng database schema. Mine is changed to also support ProcessID. (I will join the schema soon).<br />
On the Loganalyzer side you need to define sources and views.<br />
Sources will define which data source to use&#8230; flat file, mysql&#8230;<br />
To be able to use Mysql you will need to also create (or use the provided) DBMapping. This will match the DB fields to the Syslog Fields.<br />
Finaly, the &laquo;&nbsp;view&nbsp;&raquo; will decide which fields to display. For example, you could decide to display only the date and message of the error logs in a view because the hostname is not usefull. In another view you could decide that the date is not important but the host is, with the HTTP status code&#8230;</p>
<p>OK. You are all set-up with Loganalyzer&#8230; but you can only log-in with users from the mysql database.<br />
My users are in LDAP.<br />
While it would be hard to change the whole application to authenticate and search the groups in LDAP, the authentication part is easy to do.<br />
I just changed the functions_users.php so, instead of looking the user in the DB, do the auth on LDAP, create the user in the DB and continue with the normal behaviour&#8230;</p>
<p>Here is the code of the new function in <strong>include/functions_users.php</strong> :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> CheckLDAPUserLogin<span class="br0">&#40;</span> <span class="re0">$username</span><span class="sy0">,</span> <span class="re0">$password</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">global</span> <span class="re0">$content</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ldap_filter</span><span class="sy0">=</span><span class="st_h">&#8216;(&amp;amp;&#8217;</span><span class="sy0">.</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPSearchFilter&#8217;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">&#8216;(&#8216;</span><span class="sy0">.</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUidAttribute&#8217;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">&#8216;=&#8217;</span><span class="sy0">.</span><span class="re0">$username</span><span class="sy0">.</span><span class="st_h">&#8216;))&#8217;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Open LDAP connection</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">=</span><a href="http://www.php.net/ldap_connect"><span class="kw3">ldap_connect</span></a><span class="br0">&#40;</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPServer&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPPort&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/ldap_set_option"><span class="kw3">ldap_set_option</span></a><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">,</span> LDAP_OPT_PROTOCOL_VERSION<span class="sy0">,</span> 3<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Bind as the privilegied user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$r</span><span class="sy0">=</span><a href="http://www.php.net/ldap_bind"><span class="kw3">ldap_bind</span></a><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">,</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindDN&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindPassword&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// search for the user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$r</span><span class="sy0">=</span><a href="http://www.php.net/ldap_search"><span class="kw3">ldap_search</span></a><span class="br0">&#40;</span> <span class="re0">$ds</span><span class="sy0">,</span> <span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBaseDN&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$ldap_filter</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&quot;uid&quot;</span><span class="sy0">,</span><span class="st0">&quot;cn&quot;</span><span class="sy0">,</span><span class="st0">&quot;localentryid&quot;</span><span class="sy0">,</span><span class="st0">&quot;userpassword&quot;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">DieWithFriendlyErrorMsg<span class="br0">&#40;</span> <span class="st0">&quot;Debug Error: Could not login user &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;pre&gt;&quot;</span> <span class="sy0">.</span> <a href="http://www.php.net/var_export"><span class="kw3">var_export</span></a><span class="br0">&#40;</span><span class="re0">$_SESSION</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot;</span> <span class="sy0">.</span> <span class="re0">$ldap_filter</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$info</span> <span class="sy0">=</span> <a href="http://www.php.net/ldap_get_entries"><span class="kw3">ldap_get_entries</span></a><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">,</span> <span class="re0">$r</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$info</span> <span class="sy0">||</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;count&quot;</span><span class="br0">&#93;</span> <span class="sy0">!=</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">DieWithFriendlyErrorMsg<span class="br0">&#40;</span> <span class="st0">&quot;Debug Error: Could not login user &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;pre&gt;&quot;</span> <span class="sy0">.</span> <a href="http://www.php.net/var_export"><span class="kw3">var_export</span></a><span class="br0">&#40;</span><span class="re0">$_SESSION</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot;</span> <span class="sy0">.</span> <span class="re0">$ldap_filter</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// now we have the user data. Do a bind to check for his password</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$r</span><span class="sy0">=</span><a href="http://www.php.net/ldap_bind"><span class="kw3">ldap_bind</span></a><span class="br0">&#40;</span> <span class="re0">$ds</span><span class="sy0">,</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;dn&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re0">$password</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// for the moment when a user logs in from LDAP, create it in the DB.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// then the prefs and group management is done in the DB and we don&#8217;t rewrite the whole Loganalyzer code&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// check if the user already exist</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sqlquery</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT * FROM &quot;</span> <span class="sy0">.</span> DB_USERS <span class="sy0">.</span> <span class="st0">&quot; WHERE username = &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$result</span> <span class="sy0">=</span> DB_Query<span class="br0">&#40;</span><span class="re0">$sqlquery</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span> <span class="sy0">=</span> DB_GetSingleRow<span class="br0">&#40;</span><span class="re0">$result</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Create User</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$result</span> <span class="sy0">=</span> DB_Query<span class="br0">&#40;</span><span class="st0">&quot;INSERT INTO &quot;</span> <span class="sy0">.</span> DB_USERS <span class="sy0">.</span> <span class="st0">&quot; (id, username, password, is_admin, is_readonly) VALUES (&quot;</span><span class="sy0">.</span><span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;localentryid&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;, &#8216;<span class="es4">$username</span>&#8216;, &#8216;rnd&quot;</span><span class="sy0">.</span><a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><a href="http://www.php.net/mt_rand"><span class="kw3">mt_rand</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;rnd&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&#8217;, 0, 1)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">DB_FreeQuery<span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;last_login&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_readonly&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;username&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUidAttribute&#8217;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;password&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;hidden&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;dn&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;dn&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;ID&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;localentryid&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_readonly&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_readonly&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;last_login&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;last_login&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="re0">$myrowfinal</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Default return false</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> CheckUserLogin<span class="br0">&#40;</span> <span class="re0">$username</span><span class="sy0">,</span> <span class="re0">$password</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">global</span> <span class="re0">$content</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// if auth LDAP is used, don&#8217;t check the DB yet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> GetConfigSetting<span class="br0">&#40;</span><span class="st0">&quot;LDAPUserLoginRequired&quot;</span><span class="sy0">,</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="st0">&quot;true&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span> <span class="sy0">=</span> CheckLDAPUserLogin<span class="br0">&#40;</span> <span class="re0">$username</span><span class="sy0">,</span> <span class="re0">$password</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// TODO: SessionTime and AccessLevel check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$md5pass</span> <span class="sy0">=</span> <a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><span class="re0">$password</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sqlquery</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT * FROM &quot;</span> <span class="sy0">.</span> DB_USERS <span class="sy0">.</span> <span class="st0">&quot; WHERE username = &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217; and password = &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$md5pass</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$result</span> <span class="sy0">=</span> DB_Query<span class="br0">&#40;</span><span class="re0">$sqlquery</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span> <span class="sy0">=</span> DB_GetSingleRow<span class="br0">&#40;</span><span class="re0">$result</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>The rest of the code is the same.<br />
Also I had to add some configuration entries in the config.php file</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// &#8212; LDAP auth options</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUserLoginRequired&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw4">true</span><span class="sy0">;</span> <span class="co1">// activate LDAP auth</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPServer&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;localhost&quot;</span><span class="sy0">;</span> <span class="co1">// LDAP server hostname or IP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPPort&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">389</span><span class="sy0">;</span> <span class="co1">// LDAP port, 389 or 636 for SSL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBaseDN&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;ou=my,o=ldap&quot;</span><span class="sy0">;</span> <span class="co1">// Base DN for LDAP search</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPSearchFilter&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;(objectclass=inetOrgPerson)&quot;</span><span class="sy0">;</span> <span class="co1">// search filter</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUidAttribute&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;uid&quot;</span><span class="sy0">;</span> <span class="co1">// the LDAP attribute used in the search to find the user. ex : uid, cn</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindDN&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;cn=Manager,ou=my,o=ldap&quot;</span><span class="sy0">;</span> <span class="co1">// DN of the privileged user for the search</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindPassword&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">&#8216;secret&#8217;</span><span class="sy0">;</span> <span class="co1">// Password of the privilegied user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPGroupAttribute&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">&#8216;member&#8217;</span><span class="sy0">;</span> <span class="co1">// attribute used to search for groups</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &#8212;</span></div>
</li>
</ol>
</div>
</div>
<p>Here is the diff that you can put in a file and use the &laquo;&nbsp;patch&nbsp;&raquo; command to install.</p>
<div class="codesnip-container" >
<div class="diff codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">&#8212; include/functions_users_orig.php 2012-01-19 14:36:24.000000000 -0500</div>
</li>
<li class="li1">
<div class="de1"><span class="re4">+++ include/functions_users.php <span class="nu0">2012</span>-01-<span class="nu0">19</span> <span class="nu0">14</span>:<span class="nu0">33</span>:<span class="nu0">12.000000000</span> -0500</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re6">@@ -<span class="nu0">157</span>,<span class="nu0">16</span> +<span class="nu0">157</span>,<span class="nu0">83</span> @@</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re7">-function CheckUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+function CheckLDAPUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">global $content;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- // TODO: SessionTime and AccessLevel check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $ldap_filter=&#8217;<span class="br0">&#40;</span>&amp;amp;&#8217;.$content<span class="br0">&#91;</span>&#8216;LDAPSearchFilter&#8217;<span class="br0">&#93;</span>.&#8217;<span class="br0">&#40;</span>&#8216;.$content<span class="br0">&#91;</span>&#8216;LDAPUidAttribute&#8217;<span class="br0">&#93;</span>.&#8217;=&#8217;.$username.&#8217;<span class="br0">&#41;</span><span class="br0">&#41;</span>&#8216;;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $md5pass = md5<span class="br0">&#40;</span>$password<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $sqlquery = &quot;SELECT * FROM &quot; . DB_USERS . &quot; WHERE username = &#8216;&quot; . $username . &quot;&#8217; and password = &#8216;&quot; . $md5pass . &quot;&#8217;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $result = DB_Query<span class="br0">&#40;</span>$sqlquery<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $myrow = DB_GetSingleRow<span class="br0">&#40;</span>$result, true<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Open LDAP connection</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$ds=ldap_connect<span class="br0">&#40;</span>$content<span class="br0">&#91;</span>&#8216;LDAPServer&#8217;<span class="br0">&#93;</span>,$content<span class="br0">&#91;</span>&#8216;LDAPPort&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ ldap_set_option<span class="br0">&#40;</span>$ds, LDAP_OPT_PROTOCOL_VERSION, 3<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Bind as the privilegied user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$r=ldap_bind<span class="br0">&#40;</span>$ds,$content<span class="br0">&#91;</span>&#8216;LDAPBindDN&#8217;<span class="br0">&#93;</span>,$content<span class="br0">&#91;</span>&#8216;LDAPBindPassword&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // search for the user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$r=ldap_search<span class="br0">&#40;</span> $ds, $content<span class="br0">&#91;</span>&#8216;LDAPBaseDN&#8217;<span class="br0">&#93;</span>, $ldap_filter, array<span class="br0">&#40;</span>&quot;uid&quot;,&quot;cn&quot;,&quot;localentryid&quot;,&quot;userpassword&quot;<span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ DieWithFriendlyErrorMsg<span class="br0">&#40;</span> &quot;Debug Error: Could not login user &#8216;&quot; . $username . &quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;pre&gt;&quot; . var_export<span class="br0">&#40;</span>$_SESSION, true<span class="br0">&#41;</span> . &quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot; . $ldap_filter <span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $info = ldap_get_entries<span class="br0">&#40;</span>$ds, $r<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!$info || $info<span class="br0">&#91;</span>&quot;count&quot;<span class="br0">&#93;</span> != <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ DieWithFriendlyErrorMsg<span class="br0">&#40;</span> &quot;Debug Error: Could not login user &#8216;&quot; . $username . &quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;pre&gt;&quot; . var_export<span class="br0">&#40;</span>$_SESSION, true<span class="br0">&#41;</span> . &quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot; . $ldap_filter <span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // now we have the user data. Do a bind to check for his password</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$r=ldap_bind<span class="br0">&#40;</span> $ds, $info<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;dn&#8217;<span class="br0">&#93;</span>,$password<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // for the moment when a user logs in from LDAP, create it in the DB.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // then the prefs and group management is done in the DB and we don&#8217;t rewrite the whole Loganalyzer code&#8230;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // check if the user already exist</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $sqlquery = &quot;SELECT * FROM &quot; . DB_USERS . &quot; WHERE username = &#8216;&quot; . $username . &quot;&#8217;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $result = DB_Query<span class="br0">&#40;</span>$sqlquery<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow = DB_GetSingleRow<span class="br0">&#40;</span>$result, true<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!isset<span class="br0">&#40;</span>$myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Create User</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $result = DB_Query<span class="br0">&#40;</span>&quot;INSERT INTO &quot; . DB_USERS . &quot; <span class="br0">&#40;</span>id, username, password, is_admin, is_readonly<span class="br0">&#41;</span> VALUES <span class="br0">&#40;</span>&quot;.$info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;localentryid&#8217;<span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span>.&quot;, &#8216;$username&#8217;, &#8216;rnd&quot;.md5<span class="br0">&#40;</span>mt_rand<span class="br0">&#40;</span><span class="br0">&#41;</span>.&quot;rnd&quot;<span class="br0">&#41;</span>.&quot;&#8217;, 0, 1<span class="br0">&#41;</span>&quot;<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ DB_FreeQuery<span class="br0">&#40;</span>$result<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span> = <span class="nu0">0</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow<span class="br0">&#91;</span>&#8216;last_login&#8217;<span class="br0">&#93;</span> = <span class="nu0">0</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow<span class="br0">&#91;</span>&#8216;is_readonly&#8217;<span class="br0">&#93;</span> = <span class="nu0">1</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;username&#8217;<span class="br0">&#93;</span> = $info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>$content<span class="br0">&#91;</span>&#8216;LDAPUidAttribute&#8217;<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;password&#8217;<span class="br0">&#93;</span> = &quot;hidden&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;dn&#8217;<span class="br0">&#93;</span> = $info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;dn&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;ID&#8217;<span class="br0">&#93;</span> = $info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;localentryid&#8217;<span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span> = $myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;is_readonly&#8217;<span class="br0">&#93;</span> = $myrow<span class="br0">&#91;</span>&#8216;is_readonly&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;last_login&#8217;<span class="br0">&#93;</span> = $myrow<span class="br0">&#91;</span>&#8216;last_login&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return $myrowfinal;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Default return false</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+<span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+function CheckUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+<span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ global $content;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // if auth LDAP is used, don&#8217;t check the DB yet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span> GetConfigSetting<span class="br0">&#40;</span>&quot;LDAPUserLoginRequired&quot;, &quot;&quot;<span class="br0">&#41;</span> == &quot;true&quot;<span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow = CheckLDAPUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ else <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // TODO: SessionTime and AccessLevel check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $md5pass = md5<span class="br0">&#40;</span>$password<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $sqlquery = &quot;SELECT * FROM &quot; . DB_USERS . &quot; WHERE username = &#8216;&quot; . $username . &quot;&#8217; and password = &#8216;&quot; . $md5pass . &quot;&#8217;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $result = DB_Query<span class="br0">&#40;</span>$sqlquery<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow = DB_GetSingleRow<span class="br0">&#40;</span>$result, true<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">// The admin field must be set!</div>
</li>
<li class="li1">
<div class="de1">if <span class="br0">&#40;</span> isset<span class="br0">&#40;</span>$myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
</ol>
</div>
</div>
<p>For the SQL of the logs tables :</p>
<div class="codesnip-container" >
<div class="sql codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> <span class="st0">`logs`</span> <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`host`</span> varchar<span class="br0">&#40;</span>128<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`facility`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`priority`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`level`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`tag`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`datetime`</span> datetime <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`program`</span> varchar<span class="br0">&#40;</span>256<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`msg`</span> text collate utf8_unicode_ci<span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`seq`</span> bigint<span class="br0">&#40;</span>20<span class="br0">&#41;</span> <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`counter`</span> int<span class="br0">&#40;</span>11<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="st0">&#8217;1&#8242;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`fo`</span> datetime <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`lo`</span> datetime <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`processid`</span> char<span class="br0">&#40;</span>8<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span><span class="st0">`seq`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`datetime`</span> <span class="br0">&#40;</span><span class="st0">`datetime`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`priority`</span> <span class="br0">&#40;</span><span class="st0">`priority`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`facility`</span> <span class="br0">&#40;</span><span class="st0">`facility`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`program`</span> <span class="br0">&#40;</span><span class="st0">`program`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`host`</span> <span class="br0">&#40;</span><span class="st0">`host`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`host_datetime`</span> <span class="br0">&#40;</span><span class="st0">`host`</span><span class="sy0">,</span><span class="st0">`datetime`</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> ENGINE<span class="sy0">=</span>MyISAM <span class="kw1">AUTO_INCREMENT</span><span class="sy0">=</span>1339013 <span class="kw1">DEFAULT</span> CHARSET<span class="sy0">=</span>utf8 COLLATE<span class="sy0">=</span>utf8_unicode_ci;</div>
</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1328/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitoring PHP APC cache usage</title>
		<link>http://www.lecentre.net/blog/archives/1311</link>
		<comments>http://www.lecentre.net/blog/archives/1311#comments</comments>
		<pubDate>Mon, 03 Oct 2011 19:22:08 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1311</guid>
		<description><![CDATA[APC is one of PHP Opcode Cache on the &#171;&#160;market&#160;&#187;. It is free and should be bundled inside the next revision of PHP, version 6. I won&#8217;t go deep into how OpCode caches work, you will find a lot of docs, just google for APC, Xcache, eAccelerator&#8230; What I can say is that APC (as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/10/APC-INFO-qxat3p01-10.100.34.39-Mozilla-Firefox_2011-10-03_14-31-37.jpg"><img class="alignleft size-full wp-image-1312" title="APC INFO (qxat3p01) (10.100.34.39) - Mozilla Firefox_2011-10-03_14-31-37" src="http://www.lecentre.net/blog/wp-content/uploads/2011/10/APC-INFO-qxat3p01-10.100.34.39-Mozilla-Firefox_2011-10-03_14-31-37.jpg" alt="" width="128" height="53" /></a></p>
<p>APC is one of PHP Opcode Cache on the &laquo;&nbsp;market&nbsp;&raquo;. It is free and should be bundled inside the next revision of PHP, version 6.</p>
<p>I won&#8217;t go deep into how OpCode caches work, you will find a lot of docs, just google for APC, Xcache, eAccelerator&#8230; What I can say is that APC (as other caches do) will &laquo;&nbsp;save&nbsp;&raquo; binary parts of your PHP code into memory and use it when you call for the same PHP function again. This way you save all the PHP file opening, parsing, etc.</p>
<p>Maybe you noticed I said &laquo;&nbsp;into memory&nbsp;&raquo;. Yes. When you start APC it take a small amount (64 or 32Mo standard) of memory and store the binary parts in it.<br />
This is fine but what if you have a really big website with lots of functions, classes, includes&#8230; like when you&#8217;re using Typo3 and tons of extensions ?</p>
<p>One thing you won&#8217;t come accross often on internet is &laquo;&nbsp;How (the hell) do I know if APC is performing well ?&nbsp;&raquo;</p>
<p>First, most of the time, the PHP page generation time is halved when you activate APC. This is a good clue. Great.<br />
But what about memory consumption ?</p>
<p>During my tests, I found that APC completly flush the memory if it cannot add a new object. I don&#8217;t know if it&#8217;s a normal behaviour but it&#8217;s what I noted. This is why you have to extensively do your testing and tune the memory size before going to production.</p>
<p>This can be done really easyly with the apc.php page provided in the  APC package. You may not have it if you used some Linux package installer like yum or aptitude. If so, you&#8217;ll have to download the APC source from their website and copy apc.php to your web DocumentRoot or wherever you want it. As this is giving sensible informations, I would recomment to put it in a secured place.<br />
We are using Typo3 here so I put the page in the /typo3 folder, which is protected and only accessible by the backend users. This is secure enough for now. Else, use the default login process, user &laquo;&nbsp;apc&nbsp;&raquo; and password &laquo;&nbsp;password&nbsp;&raquo;. This can be changed in the page. Disable it if you put the file inside an already protected location.</p>
<p>Browse to your apc.php page and see what happen. First, you&#8217;ll get a nasty PHP error if you don&#8217;t have APC PHP module enabled. Ensure it is enables in /etc/php.d/apc.conf (on CentOS, can be somewhere else on other distro).</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/10/APC-INFO3.jpg"><img class="aligncenter size-large wp-image-1326" title="APC-INFO3" src="http://www.lecentre.net/blog/wp-content/uploads/2011/10/APC-INFO3-1024x696.jpg" alt="" width="1024" height="696" /></a></p>
<p>What you see here is, on the left, some metrics and informations of the versions, uptime&#8230;<br />
On the right you have the memory utilisation and the cache hit/miss representation. Also, you can see the fragmentation of the memory. You don&#8217;t want that but actualy I&#8217;m not sure you have a way to reduce it&#8230;</p>
<p>The things you need to check are on the left side, in the panel &laquo;&nbsp;File Cache Information&nbsp;&raquo;.<br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2011/11/APC-INFO.jpg"><img class="aligncenter size-full wp-image-1321" title="APC-INFO" src="http://www.lecentre.net/blog/wp-content/uploads/2011/11/APC-INFO.jpg" alt="" width="456" height="220" /></a></p>
<p>Hits : how many objects were already in the cache and were used</p>
<p>Miss : how many objects were NOT in the cache, for whatever reason : first request for it, memory full, object can&#8217;t be cached&#8230;</p>
<p>Cache Full Count : how many times the cache (memory) was full and flushed</p>
<p>This last one is one of the most important and need to be checked first when you website start to slow.</p>
<p>Monitoring</p>
<p>Now you want to monitor this with your Nagios/Centreon or whatever&#8230; Well.<br />
I found a &laquo;&nbsp;APC monitoring project&nbsp;&raquo; out there, <a href="https://github.com/wwalter/apc-php-monitor" target="_blank">APC-PHP-MONITOR on GitHub</a>. This was my starting point as this one is really basic.</p>
<p>As they do, I made a PHP script you have to put in your PHP website somewhere. I used a basic check to ensure only the right IP can access this script. In my case, 10.1.1.88.</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;!&#8211;</span>?php <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&quot;REMOTE_ADDR&quot;</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st0">&quot;10.1.1.88&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">print</span><span class="br0">&#40;</span><a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span>apc_cache_info<span class="br0">&#40;</span><span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span><span class="kw4">true</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span> ?<span class="sy0">&#8211;&gt;</span></div>
</li>
</ol>
</div>
</div>
<p>Then I modified the PHP script so I can use it from Nagios or whatever. I named the file check_php_apc_cache.php. It&#8217;s not a superbe PHP script. It&#8217;s just dirty working fine for now.</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;!&#8211;</span>?php <span class="sy0">&lt;</span>br ?<span class="sy0">&#8211;&gt;</span> <span class="co2"># check_php_apc_cache.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Modification by Sebastien Prune THOMAS</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># v1 &#8211; 20111003</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># creation</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">####################################</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$options</span> <span class="sy0">=</span> <a href="http://www.php.net/getopt"><span class="kw3">getopt</span></a><span class="br0">&#40;</span><span class="st0">&quot;H:p:w:c:d::&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># variables</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$output</span> <span class="sy0">=</span> <span class="st0">&quot;OK&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$port</span><span class="sy0">=</span><span class="nu0">80</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$warning</span><span class="sy0">=</span><span class="nu0">30</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$critical</span><span class="sy0">=</span><span class="nu0">10</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$debug</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># code return : 0=OK, 1=WARN, 2=CRIT, 3=UNKNOWN</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$retcode</span><span class="sy0">=</span><span class="nu0">3</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$argv</span><span class="br0">&#41;</span> <span class="sy0">&amp;</span>lt<span class="sy0">;</span> 2 or <span class="re0">$argv</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="st0">&quot;help&quot;</span> <span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot;usage: php apc_stats.php -H hostname -p [port] -w [warning] -c [critical] [-d]<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot; hostname will be changed in a URL like http://hostname:port/apc_mon.php<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot; port is the HTTP port to use, default to 80<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot; warning : low level of cache use that will raise a warning. default 30<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot; critical : low level of cache use that will raise a critical. default 10<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot; -d enables debug mode<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="sy0">;</span> <span class="br0">&#125;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;H&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> and <span class="sy0">!</span><a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;H&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$host</span> <span class="sy0">=</span> <span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;H&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;p&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> and <span class="sy0">!</span><a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;p&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$port</span> <span class="sy0">=</span> <span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;p&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;w&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> and <span class="sy0">!</span><a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;w&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$warning</span> <span class="sy0">=</span> <span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;w&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;c&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> and <span class="sy0">!</span><a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;c&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#91;</span><span class="st0">&quot;d&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$debug</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="co2">#ensure critical is lower than warning if ($critical &amp;gt;= $warning) {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> <span class="st0">&quot;Error : critical value must be lower than warning<span class="es1">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># get the answer from the php APC page</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$url</span> <span class="sy0">=</span> <span class="st0">&quot;http://&quot;</span> <span class="sy0">.</span> <span class="re0">$host</span> <span class="sy0">.</span> <span class="st0">&quot;:&quot;</span> <span class="sy0">.</span> <span class="re0">$port</span> <span class="sy0">.</span> <span class="st0">&quot;/apc_mon.php&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$results</span> <span class="sy0">=</span> <a href="http://www.php.net/file_get_contents"><span class="kw3">file_get_contents</span></a><span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;server is not responding&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$results</span><span class="br0">&#41;</span> <span class="re0">$results</span> <span class="sy0">=</span> <a href="http://www.php.net/unserialize"><span class="kw3">unserialize</span></a><span class="br0">&#40;</span><span class="re0">$results</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span><span class="br0">&#40;</span><span class="st0">&quot;ERROR/n&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># debug</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$debug</span> <span class="sy0">==</span> 1<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$results</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># compute ratio</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$results</span><span class="br0">&#91;</span><span class="st0">&quot;num_hits&quot;</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span>gt<span class="sy0">;</span> 0<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$hit_ratio</span><span class="sy0">=</span><span class="br0">&#40;</span><span class="re0">$results</span><span class="br0">&#91;</span><span class="st0">&quot;num_hits&quot;</span><span class="br0">&#93;</span><span class="sy0">/</span><span class="br0">&#40;</span><span class="re0">$results</span><span class="br0">&#91;</span><span class="st0">&quot;num_hits&quot;</span><span class="br0">&#93;</span><span class="sy0">+</span><span class="re0">$results</span><span class="br0">&#91;</span><span class="st0">&quot;num_misses&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">*</span><span class="nu0">100</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$hit_ratio</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$hit_ratio</span> <span class="sy0">&amp;</span>gt<span class="sy0">;=</span> <span class="re0">$warning</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$output</span> <span class="sy0">=</span> <span class="st0">&quot;OK&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$retcode</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$critical</span></div>
</li>
</ol>
</div>
</div>
<p>You can then create a Nagios check or Template. Mine looks like this :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">define <span class="kw3">command</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">command_name check_PHP_APC_cache</div>
</li>
<li class="li1">
<div class="de1">command_line php <span class="re1">$USER1</span>$<span class="sy0">/</span>check_php_apc_cache.php <span class="re5">-H</span> <span class="re1">$HOSTADDRESS</span>$ <span class="re5">-p</span> <span class="re1">$ARG1</span>$ <span class="re5">-w</span> <span class="re1">$ARG2</span>$ <span class="re5">-c</span> <span class="re1">$ARG3</span>$</div>
</li>
<li class="li1">
<div class="de1">;<span class="re1">$ARG1</span>$ TCP port <span class="br0">&#40;</span>80<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">;<span class="re1">$ARG2</span>$ warning level <span class="br0">&#40;</span>30<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">;<span class="re1">$ARG3</span>$ critical level <span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>Finaly, the result :<br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2011/10/Centreon-IT-Network-Monitoring-Mozilla-Firefox_2011-10-03_15-04-13.jpg"><img class="alignnone size-large wp-image-1316" title="Centreon - IT &amp; Network Monitoring - Mozilla Firefox_2011-10-03_15-04-13" src="http://www.lecentre.net/blog/wp-content/uploads/2011/10/Centreon-IT-Network-Monitoring-Mozilla-Firefox_2011-10-03_15-04-13-1024x83.jpg" alt="" width="1024" height="83" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1311/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amino Aminet A125 serial cable schematis</title>
		<link>http://www.lecentre.net/blog/archives/1305</link>
		<comments>http://www.lecentre.net/blog/archives/1305#comments</comments>
		<pubDate>Fri, 26 Aug 2011 19:02:19 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[IPTV]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1305</guid>
		<description><![CDATA[Thanks to Sudhir this is the schematics and the file to create the PCB. As he explain, the A125 (maybe others) are in 3.3v levels, which is not TTL compatible (and is also different from a RS-232 serial cable !!! don&#8217;t use a serial cable directly on it as it have a +_15v signal amplitude [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to Sudhir this is the schematics and the file to create the PCB.</p>
<p>As he explain, the A125 (maybe others) are in 3.3v levels, which is not TTL compatible (and is also different from a RS-232 serial cable !!! don&#8217;t use a serial cable directly on it as it have a +_15v signal amplitude which may destroy your Amino. Actualy I did this without destroying it&#8230; but still&#8230;.).</p>
<p>Again, use this at your own risk&#8230; we are not responsible.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/08/RS232LC3P-Ver1-schematic.png"><img class="aligncenter size-full wp-image-1306" title="RS232LC3P-Ver1-schematic" src="http://www.lecentre.net/blog/wp-content/uploads/2011/08/RS232LC3P-Ver1-schematic.png" alt="" width="1202" height="716" /></a></p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/08/RS232LC3P-Ver1.cmp_.png"><img class="aligncenter size-full wp-image-1307" title="RS232LC3P-Ver1.cmp" src="http://www.lecentre.net/blog/wp-content/uploads/2011/08/RS232LC3P-Ver1.cmp_.png" alt="" width="271" height="195" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1305/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shoot35 CINEbox Mattebox review (Updated)</title>
		<link>http://www.lecentre.net/blog/archives/1265</link>
		<comments>http://www.lecentre.net/blog/archives/1265#comments</comments>
		<pubDate>Tue, 01 Mar 2011 12:48:32 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[35mm]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[mattebox]]></category>
		<category><![CDATA[shoot35]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1265</guid>
		<description><![CDATA[Shoot35 is a well known company in the Indie Film-making market. They first started with DoF adaptors for small cameras. I bought the SG-Blade, the latest revision of the DoF adaptor, that I&#8217;ve been using for two years now. It&#8217;s strong and functionnal and CHEAP, far cheaper than the Letus, which have nothing more to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5996.jpg"><br />
</a><img class="alignleft size-full wp-image-1266" title="cinebox" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/cinebox.jpg" alt="" width="151" height="113" /><a href="http://www.shoot35.com" target="_blank">Shoot35</a> is a well known company in the Indie Film-making market. They first started with DoF adaptors for small cameras. I bought the SG-Blade, the latest revision of the DoF adaptor, that I&#8217;ve been using for two years now. It&#8217;s strong and functionnal and CHEAP, far cheaper than the Letus, which have nothing more to offer. I reviewed the SG-Blade here.</p>
<p>Then I also bought the Shoot35 Follow focus, revision 1, which was cheap and cheap. I mean, you have a good feeling when pulling focus but&#8230; it&#8217;s cheap. Again, they made a revision two which is far better and can compete with all the biggest brand. It&#8217;s a little more expensive though.</p>
<p>The last thing I needed was a Matte-box. I had to rent one on every time I had a serious work, with sometime some supprises. For example, a rental company gave us the mattebox but without the swing arm&#8230; And most of the time when you rent cheap you don&#8217;t have a swing arm, you have to take the MB off every time you change the lense, which can happen a lot depending on your DP <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Shoot35 announced they Matte box some time ago. The first batch was gone in a minut, and the second also. But this time I was informed and ambushed to be able to order in the second ! And I got one !!</p>
<p>Here is my review with some pictures</p>
<p><span id="more-1265"></span></p>
<h3>Unboxing</h3>
<p>So today I received the box. Inside is the classic Shoot35 package with red foam. The MB is delivered with a hard case (made of plasic, it&#8217;s not a safety case but is fine for most of us. Maybe they should add an option for a Pellicase&#8230;).</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5979.jpg"><img class="alignnone size-medium wp-image-1267" title="DSC_5979" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5979-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5981.jpg"><img class="alignnone size-medium wp-image-1268" title="DSC_5981" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5981-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5982.jpg"><img class="alignnone size-medium wp-image-1269" title="DSC_5982" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5982-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5983.jpg"><img class="alignnone size-medium wp-image-1272" title="DSC_5983" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5983-250x166.jpg" alt="" width="250" height="166" /></a></p>
<p>Inside you find the MB itself with the flaps. There is another box containing the insert, the &laquo;&nbsp;clip-on&nbsp;&raquo; (or adaptor) ring  and a set of hallen keys.<br />
The hard case is not the same model as I had before but feels strong. Don&#8217;t let it go under a car or in a river though&#8230; Also, you can&#8217;t lock it. This can be a real problem if you&#8217;re taking a fly&#8230;</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5985.jpg"><img class="alignnone size-medium wp-image-1270" title="DSC_5985" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5985-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5986.jpg"><img class="alignnone size-medium wp-image-1271" title="DSC_5986" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5986-250x166.jpg" alt="" width="250" height="166" /></a></p>
<h3>Description</h3>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1278" title="DSC_5992" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5992-1024x681.jpg" alt="" width="614" height="409" /></p>
<p>The MB feels solid. The metal parts are strong anodised alluminium, black for most of the parts and red for handles. The swing-away arm is a bit rigid for the moment but I&#8217;m sure it will be good after some time.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5987.jpg"><img class="alignnone size-medium wp-image-1273" title="DSC_5987" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5987-250x175.jpg" alt="" width="250" height="175" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5988.jpg"><img class="alignnone size-medium wp-image-1274" title="DSC_5988" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5988-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5989.jpg"><img class="alignnone size-medium wp-image-1275" title="DSC_5989" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5989-250x166.jpg" alt="" width="250" height="166" /></a></p>
<p>As you can see on the next picture, the front have 4 white screws in the corners. These are used to &laquo;&nbsp;plug&nbsp;&raquo; the Matte Insert used to limit the light getting inside the MB. It&#8217;s magnetic and stick to the screws.</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5990.jpg"><img class="aligncenter size-large wp-image-1276" title="DSC_5990" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5990-1024x681.jpg" alt="" width="614" height="409" /></a></p>
<p>The CINEbox also offer two filter tray. They can hole 4&#215;4 filters. You can order them red or black. I&#8217;ve ordered black as I thought the light bounding on it may give a red tint on the image/flares. Now I have the MB in hands, I don&#8217;t think it can be a problem. But this is just a question of design and how you will be a star with your mattebox. I don&#8217;t care and the red handles are already fine for me <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6010.jpg"><img class="aligncenter size-large wp-image-1292" title="DSC_6010" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6010-681x1024.jpg" alt="" width="681" height="1024" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5991.jpg"><img class="aligncenter size-large wp-image-1277" title="DSC_5991" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5991-1024x681.jpg" alt="" width="614" height="409" /></a></p>
<p>The filters holders can both rotate independantly. This behaviour is controled by the red handler. As it&#8217;s brand new it feels hard to move, specialy if you&#8217;re moving them one at a time. You have a clic at every 90°, plus some other in the middle.The white handler is used to lock to filter tray in position. There is a center &laquo;&nbsp;click&nbsp;&raquo; so you can precisely adjust it.</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5993.jpg"><img class="aligncenter size-large wp-image-1280" title="DSC_5993" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5993-1024x681.jpg" alt="" width="614" height="409" /></a></p>
<p>The Rubber Bellows (Donut) is fine. It is firmly attached to the MB itself using screw. I&#8217;m more used to MB where you can take it off quickly, which can be usefull sometime. As this is aimed for &laquo;&nbsp;small&nbsp;&raquo; optics, the 80mm hole should be enough. In the inside, a ring with small balls is here to &laquo;&nbsp;clip-on&nbsp;&raquo; a smaller ring adapter. I ordered a 77mm ring to use on my PMW EX1 and the 24-70 f2.8 Nikon lense.</p>
<p style="text-align: left;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5994.jpg"><img class="aligncenter size-large wp-image-1279" title="DSC_5994" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5994-1024x681.jpg" alt="" width="614" height="409" /></a><br />
The CINEbox can be used on the EX1 if you open the LCD under the microphone. I tried the MB on it as a clip-on. I wasn&#8217;t able to remove the arm, so it was really too heavy for the rubber bellows to handle.</p>
<p style="text-align: left;"><strong>Update :</strong> Actualy, the CINEbox manual present a soft-mount (the rubber bellows) and a Hard-Mount, which is made of hard plastic. This is used to &laquo;&nbsp;clip on&nbsp;&raquo; the lense. You can&#8217;t order it right now though. Also, you have to unscrew the rubber bellows, which is not possible quickly on a set. You will have to chose. Also, removing the arm is dony by removing the three bolts connecting the shade to the arm.</p>
<p>The Swing-Away Arm feels really solid. Actualy, much more than some competitors like RedRock.</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5995.jpg"><img class="aligncenter size-large wp-image-1281" title="DSC_5995" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5995-681x1024.jpg" alt="" width="409" height="614" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5995.jpg"></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5996.jpg"><img class="aligncenter size-large wp-image-1282" title="DSC_5996" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5996-1024x681.jpg" alt="" width="614" height="409" /></a></p>
<p>The left handle allow to adjust the MB independently from the arm. At the closest position, the MB can cross before the arm. This can be handy sometimes. On the other way, if you are short with the 15mm rods, you can push it almost 5cm forward. This is also useful when you have lenses with different length. You can adjust without having to move the arm.<br />
Also, I had a problem with a MB one day, where you HAD to put the arm at the end of the rods. Then the MB was also beeing block by the rods&#8230;No way to push it closer&#8230;<br />
It&#8217;s No problem with the CINEbox. The moving parts are above the arm, so above the rods.</p>
<p>The right handle is here to tighten the swing movement. I would have prefer a quicker push/pull button like on the RedRock, but this handle is really accessible so it should be fine.</p>
<p>You can also adjust the parallelism of the mattebox them the arm is pushed.<br />
One last picture of the arm opened :</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5998.jpg"><img class="aligncenter size-large wp-image-1283" title="DSC_5998" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5998-1024x681.jpg" alt="" width="614" height="409" /></a></p>
<p>I put the CINEbox on my SG-blade rod support. The camera was not there, but I tried with a 50mm f1.2 Nikon lense.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6001.jpg"><img class="alignnone size-medium wp-image-1284" title="DSC_6001" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6001-166x250.jpg" alt="" width="166" height="250" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6002.jpg"><img class="alignnone size-medium wp-image-1285" title="DSC_6002" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6002-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6003.jpg"><img class="alignnone size-medium wp-image-1286" title="DSC_6003" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6003-250x166.jpg" alt="" width="250" height="166" /></a></p>
<p>It&#8217;s working nicely.</p>
<p>From the front view, you can see the lense is kind of &laquo;&nbsp;low&nbsp;&raquo; in the hole. It is not centered.This is not a big issue but still.<br />
The SG-Blade is already at it&#8217;s top position and I won&#8217;t be able to rise it more. <span style="font-family: mceinline;">As the CINEbox does not have a height adjustment, I&#8217;m screwed !!!<br />
I don&#8217;t know how they managed this high. I&#8217;ll have to check with the competitors mattebox to see if it&#8217;s standard. If it is then it&#8217;s the SG-blade that is not standard ! I&#8217;ll have to figure that out. Again, if it was possible to remove the rubber bellows, I could fit any lense without problem. </span></p>
<p><span style="font-family: mceinline;"> </span><strong>Update</strong> : As pointed out Wayne, a member of Shoot35 Team, I did not read the manual coming with the CINEbox. This is why  I passed on the height position adjustment. This can be done by loosening the three bolts connecting the shade and the arm. Here is the picture. Sorry Wayne, I was too busy (hurry)&#8230;.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5995.jpg"><img class="aligncenter size-large wp-image-1281" title="DSC_5995" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_5995-681x1024.jpg" alt="" width="681" height="1024" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6004.jpg"><img class="aligncenter size-large wp-image-1287" title="DSC_6004" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6004-1024x681.jpg" alt="" width="614" height="409" /></a>You also see the flaps handles here. Nothing special to say. They are working perfectly.</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6005.jpg"><img class="aligncenter size-large wp-image-1288" title="DSC_6005" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6005-1024x681.jpg" alt="" width="614" height="409" /></a>The flaps are a little smaller than what I&#8217;m used to. I will surely have to design somthing to increase the length of the top flag and use some scratch to tighten it.<br />
The sides flap are also too small. The screw where the moving part  is tighten should be at the same height as the handle of the top flap. Again, nothing really bad, but still&#8230;</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6006.jpg"><img class="alignnone size-medium wp-image-1289" title="DSC_6006" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6006-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6008.jpg"><img class="alignnone size-medium wp-image-1290" title="DSC_6008" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6008-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6009.jpg"><img class="alignnone size-medium wp-image-1291" title="DSC_6009" src="http://www.lecentre.net/blog/wp-content/uploads/2011/03/DSC_6009-250x166.jpg" alt="" width="250" height="166" /></a></p>
<h3>Conclusion</h3>
<p>It&#8217;s a good product. It feels solid and is made with good materials. While I&#8217;m still waiting to be able to use it on a movie, i&#8217;m confident. It is better than some other brands I worked with but still have few small problems. Also, note that this mattebox is designed for the DSLR market. As I&#8217;m more in the &laquo;&nbsp;movie&nbsp;&raquo; (understand old legacy camcorders world) market, I&#8217;m used to more versatile hardware.</p>
<p>My opinion is you can seriously go for it. I&#8217;ll have a try with a 14mm lense soon to ensure the side of the MB is not in the field (which was confirmed by Shoot35) but I see no reason why.<br />
I hope they will release a V2 soon, with, for example, carbon instead of (heavy) plastic and instant-lock swing-away.</p>
<p>&nbsp;</p>
<h4><span style="color: #99cc00;">Pros :</span></h4>
<ul>
<li>cheap</li>
<li>solid</li>
<li>two rotating filter tray</li>
<li>swing arm</li>
<li>can adjust height</li>
<li>clip-on mode if you remove some bolts and buy the hard-mount kit</li>
</ul>
<h4><span style="color: #ff0000;">Cons :</span></h4>
<ul>
<li>can&#8217;t take rubber bellows off easily</li>
<li>heavy ? (will have to compare)</li>
<li>hard to find for the moment (but I don&#8217;t care I now have one <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1265/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Pioneer DDJ-T1 : remaping the 4 effects banks</title>
		<link>http://www.lecentre.net/blog/archives/1258</link>
		<comments>http://www.lecentre.net/blog/archives/1258#comments</comments>
		<pubDate>Mon, 28 Feb 2011 18:26:05 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1258</guid>
		<description><![CDATA[As some of you noticed from my previous post, the Pioneer DDJ-T1 can handle the 4 decks of Traktor DJ PRO. Traktor PRO also offer 4 bank of effects, and some more effects compared to the LE version. As putting the knobs for 4 FX bank would have been too much, you still have a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/ddj-t1-1.jpg"><img class="alignleft size-medium wp-image-1259" title="ddj-t1-1" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/ddj-t1-1-250x127.jpg" alt="" width="250" height="127" /></a>As some of you noticed <a title="Pioneer DDJ-T1 first review" href="http://www.lecentre.net/blog/archives/1209" target="_blank">from my previous post,</a> the Pioneer DDJ-T1 can handle the 4 decks of Traktor DJ PRO.<br />
Traktor PRO also offer 4 bank of effects, and some more effects compared to the LE version.</p>
<p>As putting the knobs for 4 FX bank would have been too much, you still have a solution to change that. It&#8217;s really easy, it just takes some time.</p>
<p><span id="more-1258"></span></p>
<p>The solution is to duplicate all the FX settings and add a modifier, let&#8217;s say the &laquo;&nbsp;SHIFT&nbsp;&raquo; key&#8230;</p>
<p>It&#8217;s exactly what I did and here is the preset (TSI) file.</p>
<p>Another solution is to use the &laquo;&nbsp;Function&nbsp;&raquo; key, so you can &laquo;&nbsp;lock&nbsp;&raquo; all the FX buttons from FX1/2 to FX3/4 with one hand&#8230; Maybe I&#8217;ll change my preset after some time if I really use the 4 FX banks&#8230; <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So, how does it work&#8230;</p>
<p>Well, easy. When you push the &laquo;&nbsp;Shift&nbsp;&raquo; key (either the one from the left or rignt deck), every FX settings is swapped. FX1 functions changes to FX3 and FX2 to FX4.</p>
<p>Let&#8217;s take an example. You&#8217;re playing with the A deck. You play a tune and start FX1 as &laquo;&nbsp;Advanced&nbsp;&raquo; with the Flanger. Let&#8217;s say FX2 is already applying a reverb on deck B.</p>
<p>Now you want to add a Beatmaster to deck A. Well, technicaly you can&#8217;t do that on the T1. The solution is to use the FX3 on deck A.</p>
<p>So first, go the preferences and enable the 4 effects bank. Remember you need to have Traktor PRO version !!<br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/4fx1.png"><img class="aligncenter size-medium wp-image-1260" title="4fx1" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/4fx1-229x250.png" alt="" width="229" height="250" /></a></p>
<p>Then import the .TSI file.  Now you can get back to the T1.</p>
<p>Press any of the &laquo;&nbsp;SHIFT&nbsp;&raquo; key on the T1. The one under the &laquo;&nbsp;AUTO LOOP&nbsp;&raquo; function. You will see the FX1 switch change. It turns OFF. If you strop pressing the Shift key, it turns on again.<br />
This is because the FX key 1 and 2 are switching to FX 3 and 4, which are off for the moment.</p>
<p>So, still pressing Shift, click on the FX1 key of the Deck A. It should lights up.<br />
Still pressing the Shift key, click on the Select button 1 of the FX1. It should change the FX2 effect on bank one, admitting you are in Chained mode for FX3 and FX4.</p>
<p>When you have set the Beatmaster on the first effect of FX3 bank, you can click on the enable button and change the effect parameter. If you stop pressing shift, your modification will apply to FX1, so don&#8217;t forget to press Shift every time you want to work on FX 3 or 4.</p>
<h2>Note :</h2>
<p>While working on the remaping, I found that pressing Shift when changing the effect selected (buttons 1, 2, 3 of each effect) was changing the effect backward (MIDI decrease instead of increase). Whil i&#8217;m using the Shift key for my setup I had to change this behaviour. You can only change the effects increasingly now.</p>
<h2>Download :</h2>
<p><a title="Pioneer DDJ-T1 preset for Traktor" href="http://www.lecentre.net/blog/download/backup-T1-seul-20110228-4FX.tsi">You can download my Preset HERE</a>. (right click and chose &laquo;&nbsp;save as&nbsp;&raquo; or &laquo;&nbsp;save as file&nbsp;&raquo;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1258/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pioneer DDJ-T1 : the DJ machine (updated x2)</title>
		<link>http://www.lecentre.net/blog/archives/1209</link>
		<comments>http://www.lecentre.net/blog/archives/1209#comments</comments>
		<pubDate>Fri, 25 Feb 2011 17:29:52 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[controler]]></category>
		<category><![CDATA[ddj]]></category>
		<category><![CDATA[ddj-t1]]></category>
		<category><![CDATA[dj]]></category>
		<category><![CDATA[Pioneer]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[t1]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[traktor]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1209</guid>
		<description><![CDATA[The DDJ &#8211; T1 is the new Digital Controler from Pioneer. It is composed of two controlers, the S1 for Serato and the T1 for Traktor. You can find all the specs on any website talking about Pioneer like Clubic, DJ Tech Tools and, indeed, Pionner itself. It really seems they did a great marketing [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-1222" title="ddj-t1" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/ddj-t1-250x164.jpg" alt="" width="250" height="164" /> The DDJ &#8211; T1 is the new Digital Controler from Pioneer. It is composed of two controlers, the S1 for Serato and the T1 for Traktor. You can find all the specs on any website talking about Pioneer like <a href="http://www.clubic.com/audio-hifi/actualite-390702-pioneer-ddj-t1-ddj-s1-controleur-dj-traktor-itch.html" target="_blank">Clubic</a>, <a href="http://www.djtechtools.com/2011/01/10/pioneer-to-release-traktor-and-serato-controllers_ddj-t1-ddj-s/#more-10132" target="_blank">DJ Tech Tools</a> and, indeed, <a href="http://www.pioneer.eu/fr/content/press/news/DDJ-controllers.html" target="_blank">Pionner </a>itself. It really seems they did a great marketing announcement as almost every site is showing the same EXACT article, specs and pictures.</p>
<p>Well, maybe I&#8217;ll be the first to do a review ?</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span id="more-1209"></span>I ordered mine from <a href="http://www.thomann.de/fr/pioneer_ddj_t1.htm" target="_blank">Thomann</a>. First because they have the same market price, 1090€. Then, because they are reliable, they offer 30 days return if not happy, they give a 3 years guaranty, the shipping is free, via UPS, with traking and it arrived in 3 days&#8230;.</p>
<p style="text-align: center;">So, I received a BIG box, announced to be 8 kilos<br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5964.jpg"><img class="aligncenter size-large wp-image-1223" title="DSC_5964" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5964-1024x681.jpg" alt="" width="819" height="545" /></a></p>
<p>Inside, a smaller box, well packaged. Then, inside, the controler is wrapped in a protection tissue. One plastic bag contains all the small parts like the usb and power cord (with a French and a UK plug), the &laquo;&nbsp;documentation&nbsp;&raquo;, CD&#8217;s and other legal papers.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5965.jpg"><img class="alignnone size-medium wp-image-1224" title="DSC_5965" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5965-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5966.jpg"><img class="alignnone size-medium wp-image-1225" title="DSC_5966" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5966-166x250.jpg" alt="" width="166" height="250" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5967.jpg"><img class="alignnone size-medium wp-image-1226" title="DSC_5967" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5967-250x166.jpg" alt="" width="250" height="166" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5975.jpg"><img class="alignnone size-medium wp-image-1234" title="DSC_5975" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5975-250x166.jpg" alt="" width="250" height="166" /></a></p>
<p>If the Power plug is fine and enable to be used in most of Europeans countries, the USB cable, small (1.5m) and rigid, is really cheap. For example, the 550€ EKS Otus I had before is bundled with a 2M big cable you can use with confidence.</p>
<p>The two CDs included are for a Windows driver (you wont need it if you have a Mac) and a Traktor CD labeled &laquo;&nbsp;special DDJ T1&#8243;. Actualy, the ony difference with Traktor LE is&#8230; the included presets for the T1.</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5968.jpg"><img class="aligncenter size-large wp-image-1227" title="DSC_5968" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5968-1024x681.jpg" alt="" width="819" height="545" /></a></p>
<p>The T1 is massive. Each deck is almost the size of a CDJ-800. The jog is smaller and lighter. You can feel the good construction. knobs and switches are solid, you won&#8217;t be disapointed if you&#8217;re used to Pioneer hardware.</p>
<p>On the front left side you find two headphones plugs, one big and one small jack. On the right you have a jack plug for a microphone, a level knob and a switch to choose between microphone or line input (the line input is on the back).</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5974.jpg"><img class="alignnone size-large wp-image-1233" title="DSC_5974" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5974-1024x681.jpg" alt="" width="614" height="409" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5973.jpg"><img class="alignnone size-large wp-image-1232" title="DSC_5973" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5973-1024x681.jpg" alt="" width="614" height="409" /></a></p>
<p>Pn the back side you have the power plug, a pin to lock the cables, an USB plug and an On/Off switch. On the other side you have the auxilary input and two outputs : one on RCA and one, balanced, using jacks.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5970.jpg"><img class="alignnone size-large wp-image-1229" title="DSC_5970" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5970-1024x681.jpg" alt="" width="614" height="409" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5971.jpg"><img class="alignnone size-large wp-image-1230" title="DSC_5971" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5971-1024x681.jpg" alt="" width="614" height="409" /></a></p>
<p>As Traktor does not include a &laquo;&nbsp;<em>monitoring</em>&nbsp;&raquo; output, so does the T1. I will have to build (or find) a small adapter so I can control the volume of one of the output independently from the master volume&#8230; Note to Pioneer:  on the V2, please, add another (cloned) output with a volume knob.</p>
<p>The T1 is divided in three parts : two decks and a mixer in the middle.</p>
<h2>The Mixer :</h2>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5972.jpg"><img class="alignnone size-large wp-image-1231" title="DSC_5972" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5972-681x1024.jpg" alt="" width="681" height="1024" /></a></p>
<p>This is a basic 4 ways mixer. From bottom to top you have :</p>
<ul>
<li>the cross fader : you can&#8217;t disable it. You can un-assign it in Traktor but it seems it is re-enabled every time you start Traktor. Another solution is to remove the controler assignement in the prefs.</li>
<li>the fader start switch : this will start the song (play) as soon as you move the fader (useless)</li>
<li>the 4 faders&#8230; the same feeling as with any Pioneer mixer. Note the first two decks (A and B) are the faders in the center</li>
<li>next is the auto-sync selection. There you will set one song a Master and sync all the others against it. Master switch lights red when selected, slave (sync) is orange</li>
<li>CUE switches, used to send the sound of each track in the headphones. Light orange when selected, Pioneer style</li>
<li>1 and 2 FX selection. There you can assign each effect (FX) deck to any of the 4 tracks. Lights orange when selected</li>
<li>on each track, a 3 way equalizer and a gain</li>
<li>in the middle, the typical headphone volume and the cue/master balance</li>
<li>above it is the master output volume</li>
<li>finaly, at the top is the module used to control the loading and assignation of songs.<br />
The big knob set the song list in fullscreen. This is easier to work with, especialy when you&#8217;re in the 4 deck display mode.<br />
Turning it left/right scroll in the list.<br />
If you push on &laquo;&nbsp;<em>tree</em>&nbsp;&raquo; while turning this know you&#8217;ll scroll on the left folder tree.<br />
If you push on &laquo;&nbsp;<em>favorite</em>&nbsp;&raquo; while turning this know, you&#8217;ll swith to the favorites playlists, on the top of the song list.</li>
<li>A,B,C and D switches load the track in the selected slot.</li>
</ul>
<h2>The decks</h2>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5969.jpg"><img class="aligncenter size-large wp-image-1228" title="DSC_5969" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5969-681x1024.jpg" alt="" width="681" height="1024" /></a></p>
<p>Well, the picture is a little too bright&#8230; but&#8230;<br />
Again, from bottom to top :</p>
<ul>
<li>on the left, the play and cue switch. Classic Pioneer. One note though : if you&#8217;re in the play mode (the song is playing) and you stop it with the job, pushing the CUE button will move you to the last CUE point. I was expecting it would set a new CUE point at the current location&#8230; Maybe just one option to change somewhere&#8230;</li>
<li>on the right, the pitch/tempo slider</li>
<li>above it, the &laquo;&nbsp;key lock&nbsp;&raquo; enable the MASTER TEMPO mode, a Pioneer special, enable you to change the tempo (the speed) of the song while not changing the tone of the song</li>
<li>the Tempo Range switch change the pitch slider from +/- 6%, 10% 16% and 100%. This is better than what was possible with the OTUS, when it was set in the prefs, and between 6, 10 and 33%</li>
<li>The jog&#8230; smooth, light, solid&#8230; It&#8217;s smaller than the one on the CDJ-800, 900, 1000, and so one. Also, the side is not the same. I prefer the feel on the CDJ but it&#8217;s not that bad. While Traktor do the sync itself, you won&#8217;t use it as much as you do on a CDJ.<br />
The top is really sensitive and light. great.<br />
The circle between the top and the side lights red in a beautiful way when you turn the T1 on. For the moment I wasn&#8217;t able to see the same effect when playing or scratching. I would really love to see something like on the OTUS, where the color turn around when the track is playing, and the two jogs synchronized when the song is in sync too&#8230; <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
It seems, as far as I can see on the first videos on youtube, that the red light should move&#8230; Not the case on mine. I&#8217;ll call the support tomorrow&#8230;&nbsp;</p>
<p><span style="color: #ff0000;">UPDATE</span> : the red disc only work when you plug the power cord.  It&#8217;s not working if you&#8217;re powering the T1 only with the USB cable. It is the same for the AUX/MIC input. my recommendation is to always use the power cord !</li>
<li>On the left, the &laquo;&nbsp;Auto Loop&nbsp;&raquo; know is activated when pushed. Rotating it chose the number of steps to loop. It&#8217;s a pre-defined auto-loop, like on the first CDJ-800. You can then change the loop size on the fly without loosing the tempo. Great and simple effect !</li>
<li>the SHIFT key is exactly the same as on your keyboard : it adds new functionalities to other knobs. When pushed, the Auto-loop will be changed to the GRID resizing tool. You will then be able to adjust the GRID (the calculated tempo of the song) so it really fits the song&#8230; then you will never lose sync between your songs. This is how Traktor enable you to adjust a badly calculated song BPM</li>
<li>The IN and OUT loop buttons are the same as the CDJ-1000. Once the loop is defined it can be stored for future use by using the store option in Traktor. I don&#8217;t think you have a direct store option for loops on the T1, but I&#8217;ll have to dig. Pushing one of the IN or OUT button when the loop is defined enable you to modify it using the jog. Finaly, you can activate or desactivate it without losing it with the &laquo;&nbsp;activate&nbsp;&raquo; switch</li>
<li>on the right you have 4 switches for hot cues, extended to 8 when you push the SHIFT button. The button on the left, with two leds, select the CUE mode of the beatgrid mode.<br />
CUE mode is for cue&#8230; pushing a hotcue button in the mode will set a cue point. pushing a cue point while pressing the delete button will&#8230; ok, understand ?<br />
Beatgrid mode is almost the same way as the auto-loop mode, but is used to move/resize the loop on the tempo</li>
<li>the srcolling thing (don&#8217;t remember the Pioneer name) is really cool. Everybody is putting this kind of stuff now, even on the new DJM-900 Nexus mixer. It has two modes.<br />
Normal mode will allow you to scroll precisely in the song. you can quickly search or jump to a special position<br />
Function mode (lights in red) is not defined in standard. The documentation explain how to use it. It&#8217;s like a 5 switch sensitive button. I have no clue for the moment. Next Traktor version should enable a sample bank&#8230; It will be a way to trigger the samples&#8230; Maybe for the moment I&#8217;ll be able to recall some FX pressets&#8230;</li>
<li> on the right, the filter and it&#8217;s activation switch (light orange). I don&#8217;t like the way this filter behave, but it&#8217;s built-in and can&#8217;t be really changed&#8230;</li>
<li>on the top is the FX part. It recalls all the know present inside Traktor. Chained and Advances modes can be used (only if you have Traktor PRO)<br />
Chained mode gives 3 FX atthe same time but with little control. the 1/2/3 button select or scroll between all the availlable effects. Then each know/button activate the effect and define the &laquo;&nbsp;power&nbsp;&raquo; of it. The Dry/Wet know allow to balance between the normal sound and the effect sound. Note that most of the time the effect sound is less loud than the normal sound<br />
Advanced mode enable only one effect at a time but gives a better control. There, the effect is activated with the button under the dry/wet knob. Each of the 3 knobs change an effect parameter depending on the choosen effect. This node is especialy good with the Flanger which offer a real control on the effect variables.</li>
</ul>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5978.jpg"><img class="aligncenter size-large wp-image-1238" title="DSC_5978" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/DSC_5978-1024x681.jpg" alt="" width="819" height="545" /></a></p>
<p>This is finaly a picture of the T1 plugged and running, with some options enabled. Simply Pioneer.</p>
<h2>Final thought</h2>
<p>As you know now I already use Traktor for some time with an EKS OTUS controler. I had some hard time during parties, with lost knobs or worst, lost sound. I still don&#8217;t know if it&#8217;s an OTUS or a Traktor problem&#8230; Whatever.</p>
<p>When I first plugged the T1 in my old traktor&#8230; nothing worked !!!<br />
I then installed the special T1 Traktor from the CD. I thought it would install a new application but it turns out not. Then I had the presets in Traktor&#8230; but still, Traktor was only receiving few controler requests. For example, a double tap on the CUE button was only received by traktor as a &laquo;&nbsp;I pushed the CUE button&nbsp;&raquo;, so the song continues to play even after the CUE was released.</p>
<p>I then decided to try the T1 on my MacPro, a 8 core/12Gb of RAM computer. No traktor was previously installed. It was working better, but still&#8230;</p>
<p>Finaly, I tried to re-install my laptop (Macbook pro 17&#8243; with a core 2 duo CPU). Then <strong>everything went FINE</strong> !!! and I can tell <strong>the T1 really rocks </strong>!<br />
If you&#8217;re used to Traktor, wroking with the T1 is really easy&#8230; Just be careful to switch  the deck from A to C or B to D before using the CUE button. I&#8217;m already sure I&#8217;ll pause some tracks during a mix, but i&#8217;m already known to do that (maybe I sould stop drinking sometime&#8230; <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) !</p>
<p>Last thing, finaly, I &laquo;&nbsp;<em>upgraded</em>&nbsp;&raquo; the special T1 version of Traktor with my already bought Traktor PRO version&#8230; It&#8217;s possible and works seemlessly. You then have access to full 4 decks, filters (chaines + advanced) and every option of the PRO version. Again, Traktor know exactly how to make money&#8230; When you come from an Apple world, you&#8217;re already used to pay for every little option <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Differences with the <strong>Serato S1</strong> version</h3>
<p>Most of the differences comes from the software and how Pioneer managed it. I never liked Serato, even if I&#8217;m not satisfied with Traktor. For example, Deckadance have many more features that Traktor is missing. For example, sample deck, VST effects, sampler and so on.</p>
<h4>pros for T1</h4>
<ul>
<li>4 decks vs 2 decks</li>
<li>8 hot-cue vs 5 hot-cue</li>
</ul>
<h4>pros for S1</h4>
<ul>
<li>XLR output (can be achieved on the T1 with adapters as BOTH have symetric outputs&#8230; don&#8217;t know why they are not both XLR&#8230;)</li>
<li>bundeled vinyl style break (music melt down when you stop the track). You have to use an effect for that in Traktor</li>
<li>red slider to display track timing (this is not really usefull but feels pretty to have)</li>
<li>2 microphones instead of one, shared with the AUX input (but seriously, who&#8217;s using a microphone ? and two ?)</li>
<li>microphone plug on the top instead of the front. It&#8217;s always better to have plugs on the top. Plugs on the front are always in the way and finaly defect during the party&#8230;</li>
</ul>
<p>Actualy, there is a real troll on internet about &laquo;&nbsp;<em>who&#8217;s the best</em>&nbsp;&raquo; between the two&#8230;</p>
<p><em>My point of view ?</em></p>
<p>none. Except<strong> the T1 is 4 deck </strong>which is really an advantage !</p>
<p>They are all designed to fill at best the software. It&#8217;s not Pioneer&#8217;s job to handle what software can&#8217;t. They are just making a MIDI interfact and they are doing it fine.<br />
On the Traktor side, we&#8217;re expecting the new Trakor version soon, in April. It is supposed to handle sample decks, which will be a real advance.<br />
On Serato side, I really don&#8217;t know. I just can say most of the DJs I know are using it. Surely because of it&#8217;s audio interfaces, where you can easily and trustly use a set of CDJs to control the music. When talking money, I&#8217;m not sure people will switch to the Pionner&#8217;s device. It&#8217;s expensive and it&#8217;s big, too big to be easily installed in a club for a set&#8230;</p>
<p>My feeling is that the T1 is handling more options. I feel the S1 is bundled with more &laquo;&nbsp;appearance&nbsp;&raquo; tools, like the vue-meter and the red bar, but actualy offer less direct control. But again, it&#8217;s not Pioneer&#8217;s fault, it&#8217;s Serato lacking some options or some control facilities.</p>
<p>I really think the next chalenge will be on the interface and the functions the software can deal with. Traktor is on it&#8217;s way for good&#8230; Let&#8217;s see what Serato have to offer&#8230;</p>
<h3><span style="color: #99cc00;">Pros :</span></h3>
<ul>
<li>easy to install if you don&#8217;t already have Traktor installed</li>
<li>easy to setup (use the wizzard)</li>
<li>good construction</li>
<li>good feeling, especialy if you already like Pionner&#8217;s touch</li>
<li>the price, if you consider the only better option is a DJM-900 Nexus and two CDJ2000</li>
</ul>
<p><span style="background-color: #ffffff; color: #ff0000;">Cons :</span></p>
<ul>
<li>Can be a mess if you already have Traktor installed</li>
<li>1.5m USB cable is not trustable</li>
<li>no preset for FX3 and FX4 but it may be configurable using the SHIFT key</li>
<li>the price</li>
<li>the size : it&#8217;s not really transportable as was the OTUS. I&#8217;ll have to find a bigger back-pack to be able to use my motorbike</li>
<li>lacks of monitoring output, will have to work on an external solution with a pre-amp</li>
</ul>
<p>&nbsp;</p>
<p><span style="color: #3366ff;">UPDATE</span> :</p>
<p>To be able to use the Auxilary or microphone input, you have to :</p>
<ol>
<li> power the T1 with the power block, not just the USB</li>
<li>go inside Traktor&#8217;s configuration and chose the T1s inputs for a deck<br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/traktor-passthrough-conf.png"><img class="alignnone size-medium wp-image-1254" title="traktor-passthrough-conf" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/traktor-passthrough-conf-223x250.png" alt="" width="223" height="250" /></a></li>
<li>set the selected deck as passthrough  (instead of internal) by using the small arrow under the deck&#8217;s letter<br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/select-passthropugh1.png"><img class="alignnone size-medium wp-image-1255" title="select-passthropugh1" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/select-passthropugh1-250x113.png" alt="" width="250" height="113" /></a><br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2011/02/select-passthrough-2.png"><img class="alignnone size-medium wp-image-1256" title="select-passthrough-2" src="http://www.lecentre.net/blog/wp-content/uploads/2011/02/select-passthrough-2-250x112.png" alt="" width="250" height="112" /></a></li>
</ol>
<p>note that when using the auxilary input, you can&#8217;t beat-sync on it. You can use the filters, low, mid, high and gain ajustments as well as effects, but they can&#8217;t sync to the beat either. Maybe next Traktor version will be able to detect the beat of an external source ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1209/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress NextGEN Gallery and GPS data</title>
		<link>http://www.lecentre.net/blog/archives/1201</link>
		<comments>http://www.lecentre.net/blog/archives/1201#comments</comments>
		<pubDate>Tue, 18 Jan 2011 14:23:08 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1201</guid>
		<description><![CDATA[NextGen(eration) Gallery is a WordPress plugin from Alex Rabe. It provides image galleries, albums with great ease of administration. As said by the author, it fills a gap in WordPress gallery systems. It can handle &#171;&#160;display&#160;&#187; templates, which can be added to the plugin Views or simply in your theme. That&#8217;s what I&#8217;m working on [...]]]></description>
			<content:encoded><![CDATA[<p><a title="NextGen Gallery" href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/" target="_blank">NextGen(eration) Gallery</a> is a WordPress plugin from Alex Rabe. It provides image galleries, albums with great ease of administration.<br />
As said by the author, it fills a gap in WordPress gallery systems.</p>
<p>It can handle &laquo;&nbsp;display&nbsp;&raquo; templates, which can be added to the plugin Views or simply in your theme. That&#8217;s what I&#8217;m working on right now for the Photo Theme I&#8217;m using in my <a title="blog.lecentre.net" href="http://blog.lecentre.net" target="_blank">new Photo Blog</a>.<br />
This way you don&#8217;t have to install another plugin and use hooks.</p>
<p>While it&#8217;s working well, it still have some features missing.</p>
<p>One of the missing stuffs is beeing able to display GPS data.<br />
My photo blog have Geo-Tagged pictures. I want to be able to display them along with a google map image so my readers can see where it was taken. I also want to display some of the EXIF informations, like lense type, aperture, shutter speed and so on&#8230;</p>
<p>While some of them (most) are already handeled by the NextGen gallery, some of them are not.<br />
NextGen Gallery is using the exif_read_data function to get the data from the file like :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span> <span class="sy0">=</span> <span class="sy0">@</span><a href="http://www.php.net/exif_read_data"><span class="kw3">exif_read_data</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">image</span><span class="sy0">-&gt;</span><span class="me1">imagePath</span> <span class="sy0">,</span> 0<span class="sy0">,</span> <span class="kw4">true</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
</div>
<p>Then, the RAW exif datas are separated in arrays. When trying to access the EXIF tags (using get_EXIF), only the part of the array under [EXIF] will be used. In fact this is partly false, as the get_EXIF function also dig under IFD0 and WINXP.<br />
As the GPS data from my Nikon D700 are under the [GPS] array, there is no chance that NextGen gallery sees them even if you use the wordpress filter to add some new EXIF tags.</p>
<p>Then you only have one solution : check in the RAW meta-data or&#8230; change NextGen so it can handle them in the EXIF tags stored in the database.</p>
<p>So, my solution is divided in few parts :</p>
<ul>
<li>Hardcode some new EXIF tags</li>
<li>get the GPS data inside get_EXIF</li>
<li>add a function to parse the GPS data and make them readable/usable by Google Map</li>
</ul>
<p>Let&#8217;s do it :</p>
<h3>Hardcode some new EXIF tags</h3>
<p>In the file lib/meta.php, change the get_common_meta function so it look like :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> get_common_meta<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">global</span> <span class="re0">$wpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;aperture&#8217;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;credit&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;camera&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;caption&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;created_timestamp&#8217;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;copyright&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;focal_length&#8217;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;iso&#8217;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;shutter_speed&#8217;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;flash&#8217;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;title&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;altitude&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;longitude&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;latitude&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;timestamp&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;datestamp&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;satellites&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;direction&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;lense&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;keywords&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&nbsp;&raquo;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
</div>
<p>As you can see, I add all the GPS data, plus &laquo;&nbsp;lense&nbsp;&raquo;, which is just a hook as the EXIF tag for the lense is actualy &laquo;&nbsp;UndefinedTag:0xA434&#8243;</p>
<p>You can also add the new tags in the i8n translation function</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> i8n_name<span class="br0">&#40;</span><span class="re0">$key</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tagnames</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;aperture&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Aperture&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;credit&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Credit&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;camera&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Camera&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;caption&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Caption&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;created_timestamp&#8217;</span> <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Date/Time&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;copyright&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Copyright&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;focal_length&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Focal length&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;iso&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;ISO&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;shutter_speed&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Shutter speed&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;title&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Title&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;author&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Author&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;tags&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Tags&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;subject&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Subject&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;make&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Make&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;status&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Edit Status&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;category&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Category&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;keywords&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Keywords&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;created_date&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Date Created&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;created_time&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Time Created&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;position&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Author Position&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;city&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;City&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;location&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Location&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;state&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Province/State&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;country_code&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Country code&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;country&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Country&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;headline&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Headline&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;credit&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Credit&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;source&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Source&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;copyright&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Copyright Notice&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;contact&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Contact&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;last_modfied&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Last modified&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;tool&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Program tool&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;format&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Format&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;width&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Image Width&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;height&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Image Height&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;flash&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Flash&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;latitude&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Latitude&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;longitude&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Longitude&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;altitude&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Altitude&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;lense&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Lense&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
</div>
<h3>get the GPS data inside get_EXIF</h3>
<p>Now, every time you insert a new image or re-import the meta-data, the new tags will be asked. We need to change the get_EXIF function so it can find them.<br />
Still in lib/meta.php, go down to the get_EXIF function and change it to  :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> get_EXIF<span class="br0">&#40;</span><span class="re0">$object</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="sy0">!</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/is_array"><span class="kw3">is_array</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_array</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span><span class="br0">&#91;</span><span class="st_h">&#8216;EXIF&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$exif</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span><span class="br0">&#91;</span><span class="st_h">&#8216;EXIF&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;FNumber&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;aperture&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">&#8216;F &#8216;</span> <span class="sy0">.</span> <a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_frac2dec</span><span class="br0">&#40;</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;FNumber&#8217;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">,</span> 2 <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Model&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;camera&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <a href="http://www.php.net/trim"><span class="kw3">trim</span></a><span class="br0">&#40;</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Model&#8217;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;DateTimeDigitized&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;created_timestamp&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> date_i18n<span class="br0">&#40;</span>get_option<span class="br0">&#40;</span><span class="st_h">&#8216;date_format&#8217;</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">&#8216; &#8216;</span> <span class="sy0">.</span> get_option<span class="br0">&#40;</span><span class="st_h">&#8216;time_format&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_date2ts</span><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;DateTimeDigitized&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;FocalLength&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;focal_length&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_frac2dec</span><span class="br0">&#40;</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;FocalLength&#8217;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="sy0">.</span> __<span class="br0">&#40;</span><span class="st_h">&#8216; mm&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;ISOSpeedRatings&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;iso&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;ISOSpeedRatings&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;ExposureTime&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;shutter_speed&#8217;</span><span class="br0">&#93;</span> &nbsp;<span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_frac2dec</span> <span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;ExposureTime&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;shutter_speed&#8217;</span><span class="br0">&#93;</span> &nbsp;<span class="sy0">=</span><span class="br0">&#40;</span><span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;shutter_speed&#8217;</span><span class="br0">&#93;</span> <span class="sy0">&gt;</span> 0<span class="sy0">.</span>0 and <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;shutter_speed&#8217;</span><span class="br0">&#93;</span> <span class="sy0">&lt;</span> <span class="nu19">1.0</span><span class="br0">&#41;</span> ? <span class="br0">&#40;</span> <span class="st_h">&#8217;1/&#8217;</span> <span class="sy0">.</span> <a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span> 1 <span class="sy0">/</span> <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;shutter_speed&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="sy0">-</span>1<span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="sy0">:</span> <span class="br0">&#40;</span><span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;shutter_speed&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;shutter_speed&#8217;</span><span class="br0">&#93;</span> <span class="sy0">.=</span> &nbsp;__<span class="br0">&#40;</span><span class="st_h">&#8216; sec&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Bit 0 indicates the flash firing status</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Flash&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;flash&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> &nbsp;<span class="br0">&#40;</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Flash&#8217;</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> <span class="nu0">1</span> <span class="br0">&#41;</span> ? __<span class="br0">&#40;</span><span class="st_h">&#8216;Fired&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;nggallery&#8217;</span><span class="br0">&#41;</span> <span class="sy0">:</span> __<span class="br0">&#40;</span><span class="st_h">&#8216;Not fired&#8217;</span><span class="sy0">,</span><span class="st_h">&#8216; nggallery&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;UndefinedTag:0xA434&#8242;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;lense&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;UndefinedTag:0xA434&#8242;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// additional information</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span><span class="br0">&#91;</span><span class="st_h">&#8216;IFD0&#8242;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$exif</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span><span class="br0">&#91;</span><span class="st_h">&#8216;IFD0&#8242;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Model&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;camera&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Model&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Make&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;make&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Make&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;ImageDescription&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;title&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <a href="http://www.php.net/utf8_encode"><span class="kw3">utf8_encode</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;ImageDescription&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Orientation&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;Orientation&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;Orientation&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// additional GPS information</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span><span class="br0">&#91;</span><span class="st_h">&#8216;GPS&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$exif</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">exif_data</span><span class="br0">&#91;</span><span class="st_h">&#8216;GPS&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// send exif data to the function to get GPS on one line</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;GPSLatitudeRef&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$GPS</span><span class="sy0">=</span><span class="kw2">self</span><span class="sy0">::</span><span class="me2">get_Exif_GPS</span><span class="br0">&#40;</span><span class="re0">$exif</span><span class="sy0">,</span> 1<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;latitude&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$GPS</span><span class="br0">&#91;</span><span class="st_h">&#8216;latitude&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;longitude&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$GPS</span><span class="br0">&#91;</span><span class="st_h">&#8216;longitude&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;altitude&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$GPS</span><span class="br0">&#91;</span><span class="st_h">&#8216;altitude&#8217;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot; metres&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;timestamp&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$GPS</span><span class="br0">&#91;</span><span class="st_h">&#8216;timestamp&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;direction&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$GPS</span><span class="br0">&#91;</span><span class="st_h">&#8216;direction&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;GPSSatellites&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;satellites&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;GPSSatellites&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;GPSDateStamp&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$meta</span><span class="br0">&#91;</span><span class="st_h">&#8216;datestamp&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$exif</span><span class="br0">&#91;</span><span class="st_h">&#8216;GPSDateStamp&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>You can see two things here :<br />
- if the meta asked is &laquo;&nbsp;lense&nbsp;&raquo;, we look for the un-named attribute<br />
- when we are done with EXIF and IFD0, we check in the GPS array</p>
<h3>add a function to parse the GPS data and make them readable/usable by Google Map</h3>
<p>Now we create the function to re-calculate the GPS coords. Create a function somewhere in the class. A good place is at the end of the lib/meta.php file, just before the last closing bracket.</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> get_Exif_GPS<span class="br0">&#40;</span><span class="re0">$exif</span><span class="sy0">,</span> <span class="re0">$assoc</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//get the Hemisphere multiplier</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$LatM</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="re0">$LongM</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLatitudeRef&quot;</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st_h">&#8216;S&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$LatM</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLongitudeRef&quot;</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st_h">&#8216;W&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$LongM</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//get the GPS data</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LatDegree&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLatitude&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LatMinute&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLatitude&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LatgSeconds&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLatitude&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>2<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LongDegree&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLongitude&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LongMinute&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLongitude&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LongSeconds&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSLongitude&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>2<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;Altitude&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSAltitude&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;TimeHour&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSTimeStamp&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;TimeMin&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSTimeStamp&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;TimeSec&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSTimeStamp&quot;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>2<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;direction&#8217;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$exif</span><span class="br0">&#91;</span><span class="st0">&quot;GPSImgDirection&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//convert strings to numbers</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$gps</span> <span class="kw1">as</span> <span class="re0">$key</span> <span class="sy0">=&gt;</span> <span class="re0">$value</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pos</span> <span class="sy0">=</span> <a href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="sy0">,</span> <span class="st_h">&#8216;/&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$pos</span> <span class="sy0">!==</span> <span class="kw4">false</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$temp</span> <span class="sy0">=</span> <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;/&#8217;</span><span class="sy0">,</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gps</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$temp</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span> <span class="sy0">/</span> <span class="re0">$temp</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//calculate the decimal degree</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span><span class="br0">&#91;</span><span class="st_h">&#8216;latitude&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$LatM</span> <span class="sy0">*</span> <span class="br0">&#40;</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LatDegree&#8217;</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LatMinute&#8217;</span><span class="br0">&#93;</span> <span class="sy0">/</span> 60<span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LatgSeconds&#8217;</span><span class="br0">&#93;</span> <span class="sy0">/</span> 3600<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span><span class="br0">&#91;</span><span class="st_h">&#8216;longitude&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$LongM</span> <span class="sy0">*</span> <span class="br0">&#40;</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LongDegree&#8217;</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LongMinute&#8217;</span><span class="br0">&#93;</span> <span class="sy0">/</span> 60<span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;LongSeconds&#8217;</span><span class="br0">&#93;</span> <span class="sy0">/</span> 3600<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span><span class="br0">&#91;</span><span class="st_h">&#8216;altitude&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;Altitude&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span><span class="br0">&#91;</span><span class="st_h">&#8216;timestamp&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;TimeHour&#8217;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">&#8216;:&#8217;</span><span class="sy0">.</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;TimeMin&#8217;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">&#8216;:&#8217;</span><span class="sy0">.</span><span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;TimeSec&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span><span class="br0">&#91;</span><span class="st_h">&#8216;direction&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$gps</span><span class="br0">&#91;</span><span class="st_h">&#8216;direction&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$assoc</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$result</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/json_encode"><span class="kw3">json_encode</span></a><span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<h3>Conclusion</h3>
<p>Re-importing the meta-data of all your pictures should add the new stuffs.</p>
<p>I&#8217;v posted in the WordPress forum and asked for this to be added to the NextGen Gallery dev tree. Still have no answer for now. Maybe someone will come with a better code or better idea ?<br />
I also asked for someone to check how GPS data are included in files from other brands as I can only tell for the Nikon&#8217;s D700.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1201/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery tricks and notes</title>
		<link>http://www.lecentre.net/blog/archives/1193</link>
		<comments>http://www.lecentre.net/blog/archives/1193#comments</comments>
		<pubDate>Tue, 04 Jan 2011 13:32:29 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Dev]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1193</guid>
		<description><![CDATA[jQuery is a well known JavaScript &#171;&#160;framework&#160;&#187;. It have unique features for DOM manipulation and web page animations. Another one is MooTools, said to be better in animations. When you&#8217;re on a webpage with sliding images (orbit, novo slider&#8230;), growing windows or overlays&#8230; you can be pretty sure they are using one of these frameworks. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jquery.com/"><img class="alignleft size-full wp-image-1194" title="logo_jquery_215x53" src="http://www.lecentre.net/blog/wp-content/uploads/2011/01/logo_jquery_215x53.gif" alt="" width="215" height="53" /></a> <a title="jQuery" href="http://jquery.com/" target="_blank">jQuery</a> is a well known JavaScript &laquo;&nbsp;framework&nbsp;&raquo;. It have unique features for DOM manipulation and web page animations. Another one is <a title="MooTools" href="http://mootools.net/" target="_blank">MooTools</a>, said to be better in animations.</p>
<p>When you&#8217;re on a webpage with sliding images (orbit, novo slider&#8230;), growing windows or overlays&#8230; you can be pretty sure they are using one of these frameworks. The latest versions of WordPress bundle jQuery. As I wanted a special theme for my photo-blog (not yet finished but can be seen <a title="blog photo Lecentre.net" href="http://blog.lecentre.net" target="_blank">here</a>), I had to dig in jQuery.</p>
<p>While the jQuery basis is really simple, somehow well documented on their website and full of examples on the net, you still have tricks to know so your code is 100% efficient, bug free and more important cross browser compatible (I mean, compatible with IE 6/7).</p>
<p>I will reference here the pages/people talking of such hints, tricks and notes, and maybe give my own recommendations and discoveries.</p>
<p>First one is actualy mine, even if it&#8217;s obvious : install Firebug or enable Safari Developper options in your browser. This way, just right-clic on a part of a webpage and &laquo;&nbsp;Inspect&nbsp;&raquo; it.<br />
Most of jQuery scripts are in &laquo;&nbsp;full text&nbsp;&raquo;, not minified or obfuscated. Or, at least, you will find clues of the author, the licence&#8230; and be able to use it, copy/modify it or just be insipred.</p>
<p>Second one is a must-read when you already know the basis of jQuery. It&#8217;s a 14 point tricks/notes from Jeffrey Way and located at <a title="14 jQuery Tricks" href="http://net.tutsplus.com/tutorials/javascript-ajax/14-helpful-jquery-tricks-notes-and-best-practices/" target="_blank">http://net.tutsplus.com</a></p>
<p>They also have two other interresting articles about <a title="jQuery Hidden Features" href="http://net.tutsplus.com/tutorials/javascript-ajax/uncovering-jquerys-hidden-features/" target="_blank">Hidden Features</a> and <a title="jQuery Animation" href="http://net.tutsplus.com/tutorials/javascript-ajax/jquery-animations-a-7-step-program/" target="_blank">Animation</a>.</p>
<p>I would also like to add two blogs/website of people providing great examples and tutorials for free :</p>
<ul>
<li><a title="Malihu" href="http://manos.malihu.gr/" target="_blank">Malihu</a></li>
<li><a title="Codrops" href="http://tympanus.net/codrops/category/tutorials/" target="_blank">Codrops</a></li>
</ul>
<p>More will come</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1193/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SmallHD 6&#8243; HD field monitor</title>
		<link>http://www.lecentre.net/blog/archives/1158</link>
		<comments>http://www.lecentre.net/blog/archives/1158#comments</comments>
		<pubDate>Mon, 25 Oct 2010 11:49:16 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Cinéma]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1158</guid>
		<description><![CDATA[Back in april 2010 I ordered the DP6 monitor from SmallHD. At this time I was looking for a monitor with many inputs, good resolutions so you can pull focus seriously, something rugged and finaly, a monitor that accept the HD-SDI input from my video camcorder, the Sony PMW-EX1. At this time the market was [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-1159" title="media.nl" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/media.nl_-250x187.png" alt="" width="250" height="187" /> Back in april 2010 I ordered the DP6 monitor from SmallHD. At this time I was looking for a monitor with many inputs, good resolutions so you can pull focus seriously, something rugged and finaly, a monitor that accept the HD-SDI input from my video camcorder, the Sony PMW-EX1.</p>
<p>At this time the market was trusted by big companies. Hopefully they do good hardware. On the other side, it&#8217;s pricy.<br />
Few years ago I involved myself in creating my own LCD field monitor. While I had a good LCD panel, the electronic board, the G2DI from Winmate, was bad for handling HD-SDI signal. Also, the firmware was closed with no possibility to add anything fancy without either paying Winmate to do it or pay the developper kit&#8230;</p>
<p>I had the chance to work in the french movie industry and worked with the more expensive monitors, like the Panasonic BT-LH900, the best screen to date, and some of the ASTRO multi-purpose monitor for digital intermediate (which was my position at this time).</p>
<p>Then came an outsider : a company claiming it can do better and cheaper -&gt; SmallHD</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/splash2.jpg"><img class="aligncenter size-full wp-image-1160" title="splash2" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/splash2.jpg" alt="" width="536" height="256" /></a></p>
<p>I made a long technical comparison of every monitor that could fit my needs. I&#8217;ll try to sum this up here. This roundup is not the one I made back in time but one up to date, now the DP6 is here. Some monitor or brands may be forgoten but they seriously can&#8217;t compete. Please comment if I&#8217;m wrong.</p>
<table style="width: 500px;" border="1" frame="void">
<caption><strong>Field Monitor Comparison </strong></caption>
<tbody>
<tr>
<th> Brand</th>
<td>Ikan</td>
<td>Ikan</td>
<td>SmallHD</td>
<td>Panasonic</td>
<td>Marshall</td>
<td>Swit</td>
<td>Carrion</td>
</tr>
<tr>
<th>Modele</th>
<td>VX7</td>
<td>VX9</td>
<td>DP6</td>
<td>BT-LH900</td>
<td>V-LCD651<br />
STX-3GSDI</td>
<td>any</td>
<td>TCHD-01b</td>
</tr>
<tr>
<th>Screen Size</th>
<td>7&#8243;</td>
<td>8.9&#8243;</td>
<td>5.6&#8243;</td>
<td>8.4&#8243;</td>
<td>6.5&#8243;</td>
<td></td>
<td>8.4&#8243;</td>
</tr>
<tr>
<th>resolution</th>
<td>1024 x 600</td>
<td>1024 x 600</td>
<td>1280 x 800</td>
<td>1024 x 768</td>
<td>1024 x 768</td>
<td>800 x 480</td>
<td>1024 x 768</td>
</tr>
<tr>
<th>Format</th>
<td>16:9</td>
<td>16:9</td>
<td>16:10</td>
<td>4:3</td>
<td>4:3</td>
<td></td>
<td>4:3</td>
</tr>
<tr>
<th>external size</th>
<td>9&#8243;</td>
<td>11.4&#8243;</td>
<td>6&#8243;</td>
<td>11.4&#8243;</td>
<td>8.8&#8243;</td>
<td></td>
<td>10.7&#8243;</td>
</tr>
<tr>
<th>HD-SDI input</th>
<td>1</td>
<td>1</td>
<td>1</td>
<td>2</td>
<td>1</td>
<td></td>
<td>1 (model C has 2)</td>
</tr>
<tr>
<th>HD-SDI passthrough</th>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td></td>
<td>1 (model C has 2)</td>
</tr>
<tr>
<th>HDMI input</th>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td></td>
<td>yes through adapter on DVI input. also have VGA input</td>
</tr>
<tr>
<th>HDMI passthrough</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td></td>
<td>0</td>
</tr>
<tr>
<th>Componant</th>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td></td>
<td>1</td>
</tr>
<tr>
<th>Composite</th>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td></td>
<td>1</td>
</tr>
<tr>
<th>Flip Screen</th>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td></td>
<td>yes</td>
</tr>
<tr>
<th>Markers</th>
<td>yes</td>
<td>yes</td>
<td>not yet, future upgrade</td>
<td>yes</td>
<td>yes</td>
<td></td>
<td>yes</td>
</tr>
<tr>
<th>Focus help</th>
<td>Peaking ?</td>
<td>Peaking ?</td>
<td>Peaking<br />
Color Focus Assist</td>
<td>Peaking</td>
<td>Peaking,<br />
focus assist</td>
<td></td>
<td>Not realy, can use sharpness</td>
</tr>
<tr>
<th>Exposition help</th>
<td>no</td>
<td>no</td>
<td>False Color, Histogram soon</td>
<td>Histogram /<br />
waveform</td>
<td>False Color</td>
<td></td>
<td>no</td>
</tr>
<tr>
<th>Freeze Frame</th>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>no</td>
<td>yes</td>
<td></td>
<td>no</td>
</tr>
<tr>
<th>Blue Screen</th>
<td>yes</td>
<td>yes</td>
<td>yes, also monochrome and negative</td>
<td>yes</td>
<td>yes</td>
<td></td>
<td>yes</td>
</tr>
<tr>
<th>Buttons</th>
<td>lots</td>
<td>lots</td>
<td>3</td>
<td>lots</td>
<td>lots</td>
<td></td>
<td>some</td>
</tr>
<tr>
<th>Quick Access Buttons</th>
<td>2</td>
<td>2</td>
<td>2</td>
<td>?</td>
<td>4</td>
<td></td>
<td>yes (?)</td>
</tr>
<tr>
<th>Power</th>
<td>12-20V plug or XLR4<br />
support for many batteries from other brands</td>
<td>12-20V plug or XLR4<br />
support for many batteries from other brand</td>
<td>5-18V with small not locked plug<br />
external power, Canon batteries or special SmallHD batteries lasting 4h and can be charged while used</td>
<td>11-17V XLR4 or V-Mount batteries</td>
<td>12V XLR4 or many battery handlers</td>
<td></td>
<td>12V</td>
</tr>
<tr>
<th>Case</th>
<td>Plastic</td>
<td>Plastic</td>
<td>Aluminium, black &laquo;&nbsp;unibody&nbsp;&raquo; style</td>
<td>metal+plastic</td>
<td>plastic</td>
<td></td>
<td>metal</td>
</tr>
<tr>
<th>Bundeled Accessories</th>
<td>none in standard version at the time, shoe mount adapter now</td>
<td>none in standard version at the time, shoe mount adapter now</td>
<td>flash drive for upgrade, power adapter</td>
<td>?</td>
<td>none</td>
<td></td>
<td>none</td>
</tr>
<tr>
<th>Existing Accessories</th>
<td>lots</td>
<td>lots</td>
<td>Sunhood, screen protection, cables, Canon battery plug, SmallHD Batteries, support arm, much more</td>
<td>Sunhood, house, rack mount</td>
<td>heavy duty<br />
protector,<br />
rackmount,<br />
arm&#8230;</td>
<td></td>
<td>none</td>
</tr>
<tr>
<th>Firmware Upgrade</th>
<td>yes, return to factory</td>
<td>yes, return to factory</td>
<td>yes, via USB key provided, MAC/PC compatible</td>
<td>no ?</td>
<td>no ?</td>
<td></td>
<td>no</td>
</tr>
<tr>
<th>Price</th>
<td>1049$</td>
<td>1149$</td>
<td>1299$</td>
<td>4800$</td>
<td>1750$<br />
(2100$<br />
normal price)</td>
<td></td>
<td>1750$ with one HD-SDI</td>
</tr>
<tr>
<th>Comments</th>
<td>One of my best choice for some time but wasn&#8217;t ready yet.<br />
Lower resolution than DP6. can downscale SDI to component HD, great feature !</td>
<td>can downscale SDI to component HD, great feature !</td>
<td></td>
<td>the best known but really expensive</td>
<td></td>
<td>too low resolution to be considered</td>
<td>same panel as BT-LH900 = good quality<br />
Lacks specific features for cinema</td>
</tr>
</tbody>
</table>
<p>While writing this, I just noted Ikan already have a comparison chart, with the DP1, not the DP6. Of course, if you put the DP6 in it, you&#8217;ll see it have everything the Ikan have, plus better resolution.</p>
<p>The conclusion here is that the Ikan is cheaper with almost the same features. Actualy, back in april, the Ikan wasn&#8217;t released yet. Moreover it&#8217;s a big company, and as many others, they tend to release a new product and switch to the next one, meaning no improvement will be done. That&#8217;s another point for SmallHD. It&#8217;s a brand new (young) company with motivated people and few products : they have to be the best and will make it. Moreover the DP6 have the best resolution of all monitors.<br />
I finaly decided to pre-order the SmallHD DP6, the new 5.6&#8243; monitor (6&#8243; external size) in April. The plan was to receive it late june to use it on the next short movie we done in july.</p>
<p>SmallHD came through some troubles with parts of the monitor and had to delay the release to late august. Most of the time, when this kind of thing happen, companies just refund and that&#8217;s it. NOT SmallHD.</p>
<p>They offered either to get refund OR get the monitor later PLUS a discount coupon on the store. I think the amount was dependent on the delays, early pre-orderer like me had almost 10% of the total price. GREAT.<br />
<em><span style="text-decoration: underline;">UPDATE</span> : SmallHD also paid interrests to people asking for a refund !!!</em></p>
<p>I finaly received the monitor in Quebec, Canada, where I was travelling. I had to trash the box there, so no picture of it. It&#8217;s a small box with the monitor well packed and secured in foam&#8230; good work.</p>
<p>But&#8230; oups&#8230; they forgot the battery !!!<br />
Two emails and a week later the battery arrived at home, in France. Thanks !</p>
<p>Actualy I wasn&#8217;t able to use the DP6 until I get back to France. At this time the SATIS, the french biggest show for broadcast, cinema, lighting&#8230; was starting. I went there with the DP6. I had some tests with many camera like the Canon 5D, 1D or D60 or with Sony and Panasonic camcorders. I was about to test it on the ARRI Alexa but there was seriously too many people there&#8230; <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Back at home I emailed SmallHD with all the improvements I think they can do on the SP6, like the &laquo;&nbsp;false color&nbsp;&raquo; feature existing on the Marshall monitors. I had a really quick answer from them (thanks Reed) and entered the Beta Testing group.</p>
<p>I&#8217;m now running the 1.2.1 BETA version of the firmware which includes the False Color feature.</p>
<p>Here are some pictures of the DP6 connected to the Sony PMW-EX1 using the HD-SDI cable.</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2240.jpg"><img class="aligncenter size-full wp-image-1166" title="DSC_2240" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2240.jpg" alt="" width="576" height="383" /></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2240.jpg"> </a></p>
<p style="text-align: left;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2240.jpg"></a>The latest firmware version adds also a startup splash screen<br />
<a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2247.jpg"><img class="aligncenter size-full wp-image-1168" title="DSC_2247" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2247.jpg" alt="" width="576" height="383" /></a></p>
<p>Even if the pictures are not that good, let&#8217;s review the DP6 functions :</p>
<ul>
<li>Default</li>
</ul>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2248.jpg"><img class="aligncenter size-full wp-image-1169" title="DSC_2248" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2248.jpg" alt="" width="576" height="383" /></a>There you can see the picture out of the EX1, configured with informations like battery, TC, sound. You also have the DP6 format selection, in green, on the top right of the image (SDI, 1080p).</p>
<ul>
<li>Focus Help</li>
</ul>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2250.jpg"><img class="aligncenter size-full wp-image-1171" title="DSC_2250" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2250.jpg" alt="" width="576" height="383" /></a>When you activate the Focus Assist mode, using the right switch, the image changes to a &laquo;&nbsp;night view&nbsp;&raquo; where only the in focus points (edges) are in white. It&#8217;s almost the same as the EX1 feature where you have red (or any color configured) edges on the picture. Having the black backgorund for out of focus helps a little bit more. I&#8217;ll come back later with any comment on using this feature on stage.</p>
<ul>
<li>False Colors</li>
</ul>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2249.jpg"><img class="aligncenter size-full wp-image-1170" title="DSC_2249" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2249.jpg" alt="" width="576" height="383" /><br />
</a>False Color is the new way to display your exposure on the screen. You can see all range of colors depending on the exposure if your scene. Black is for dark areas, then blue, orange, green, then white.<br />
As this is a Beta version, I don&#8217;t have the real mapping between colors and real intensity, but I&#8217;m sure SmallHD will release it soon. Whatever, avoid yellow or white. This function is default on the middle switch of the DP6, which can now be used as a quick access switch.</p>
<ul>
<li>Menus</li>
</ul>
<p style="text-align: left;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2246.jpg"><img class="aligncenter size-full wp-image-1167" title="DSC_2246" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2246.jpg" alt="" width="576" height="383" /></a>The menus of the DP6 are arranged around the screen.<br />
Top left are the image parameters, like color mode, contrast, brightness. Then the Advanced menu gives more screen control. Then Input menu gives the input selection : SDI, HDMI, YPrPb or Composite. Composite is using the green component input.<br />
Last right menu is System to change backlight, USB power or reset to factory.<br />
On the lower of the screen is the Misc menu with the menu opacity, the language (only english for now) and the version display.<br />
Then the Picture In Picture (PIP) menu. It seems you can&#8217;t have SDI and HDMI at the same time for the moment. Will have to check that again but, eh, I never used the PIP feature of any of my screens <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Latest menu is in the lower right and is the Preset menu. With the latest firmware you display it by turning the wheel from outside the menu. There you can select one of the 10 presets, PLAYBACK or DSLR REC menu. Both last are used with Canon 5D/7D as the display mode of these DSLR are not 16:9 compliant.</p>
<p style="text-align: left;">My DP6 is equipped with the battery and the screen protection. The DP6 have a neoprene protection sleeve. It also have a neoprene sunshield you can plug on the four corners of the display in few seconds.<br />
See pictures under.</p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2253.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2253" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2253.jpg" alt="" width="576" height="383" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2255.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2255" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2255.jpg" alt="" width="383" height="576" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2257.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2257" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2257.jpg" alt="" width="576" height="383" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2258.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2258" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2258.jpg" alt="" width="383" height="576" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2260.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2260" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2260.jpg" alt="" width="576" height="383" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2262.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2262" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2262.jpg" alt="" width="383" height="576" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2265.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2265" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2265.jpg" alt="" width="576" height="383" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2266.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2266" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2266.jpg" alt="" width="576" height="383" /></a></p>
<p style="text-align: center;"><a href="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2269.jpg"><img class="aligncenter size-full wp-image-1173" title="DSC_2269" src="http://www.lecentre.net/blog/wp-content/uploads/2010/10/DSC_2269.jpg" alt="" width="576" height="383" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1158/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New gallery: ete-2010</title>
		<link>http://www.lecentre.net/blog/archives/1136</link>
		<comments>http://www.lecentre.net/blog/archives/1136#comments</comments>
		<pubDate>Thu, 12 Aug 2010 11:35:36 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Photo]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1136</guid>
		<description><![CDATA[Vacances d&#8217;été 2010 en Provence (04) et dans les Alpes (05)]]></description>
			<content:encoded><![CDATA[<p>[[Diaporama]]</p>
<p>Vacances d&#8217;été 2010 en Provence (04) et dans les Alpes (05)<br />
<span id="more-1136"></span></p>
<div class="ngg-galleryoverview" id="ngg-gallery-18-1136">
<p>	<!-- Slideshow link --></p>
<div class="slideshowlink">
		<a class="slideshowlink" href="http://www.lecentre.net/blog/archives/1136?show=slide"><br />
			[Diaporama]		</a>
	</div>
<p>	<!-- Thumbnails --></p>
<div id="ngg-image-463" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-1.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-1" alt="vacance-ete-2010-1" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-1.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-464" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-2.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-2" alt="vacance-ete-2010-2" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-2.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-465" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-3.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-3" alt="vacance-ete-2010-3" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-3.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-466" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-4.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-4" alt="vacance-ete-2010-4" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-4.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-467" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-5.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-5" alt="vacance-ete-2010-5" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-5.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-468" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-6.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-6" alt="vacance-ete-2010-6" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-6.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-469" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-7.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-7" alt="vacance-ete-2010-7" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-7.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-470" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-8.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-8" alt="vacance-ete-2010-8" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-8.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-471" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-9.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-9" alt="vacance-ete-2010-9" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-9.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-472" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-10.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-10" alt="vacance-ete-2010-10" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-10.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-473" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-11.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-11" alt="vacance-ete-2010-11" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-11.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-474" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-12.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-12" alt="vacance-ete-2010-12" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-12.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-475" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-13.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-13" alt="vacance-ete-2010-13" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-13.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-476" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-14.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-14" alt="vacance-ete-2010-14" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-14.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-477" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-15.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-15" alt="vacance-ete-2010-15" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-15.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-478" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-16.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-16" alt="vacance-ete-2010-16" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-16.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-479" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-17.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-17" alt="vacance-ete-2010-17" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-17.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-480" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-18.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-18" alt="vacance-ete-2010-18" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-18.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-481" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-19.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-19" alt="vacance-ete-2010-19" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-19.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-482" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-20.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-20" alt="vacance-ete-2010-20" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-20.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-483" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-21.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-21" alt="vacance-ete-2010-21" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-21.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-484" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-22.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-22" alt="vacance-ete-2010-22" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-22.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-485" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-23.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-23" alt="vacance-ete-2010-23" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-23.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-486" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-24.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-24" alt="vacance-ete-2010-24" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-24.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-487" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-25.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-25" alt="vacance-ete-2010-25" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-25.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-488" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-26.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-26" alt="vacance-ete-2010-26" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-26.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-489" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-27.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-27" alt="vacance-ete-2010-27" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-27.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-490" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-28.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-28" alt="vacance-ete-2010-28" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-28.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-491" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-29.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-29" alt="vacance-ete-2010-29" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-29.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-492" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-30.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-30" alt="vacance-ete-2010-30" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-30.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-493" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-31.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-31" alt="vacance-ete-2010-31" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-31.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-494" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-32.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-32" alt="vacance-ete-2010-32" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-32.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-495" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-33.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-33" alt="vacance-ete-2010-33" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-33.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-496" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-34.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-34" alt="vacance-ete-2010-34" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-34.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-497" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-35.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-35" alt="vacance-ete-2010-35" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-35.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-498" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-36.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-36" alt="vacance-ete-2010-36" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-36.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-499" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-37.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-37" alt="vacance-ete-2010-37" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-37.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-500" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-38.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-38" alt="vacance-ete-2010-38" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-38.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-501" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-39.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-39" alt="vacance-ete-2010-39" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-39.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<div id="ngg-image-502" class="ngg-gallery-thumbnail-box"  >
<div class="ngg-gallery-thumbnail" >
			<a href="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/vacance-ete-2010-40.jpg" title=" " rel="lightbox[set_18]" ><br />
								<img title="vacance-ete-2010-40" alt="vacance-ete-2010-40" src="http://www.lecentre.net/blog/wp-content/gallery/ete-2010/thumbs/thumbs_vacance-ete-2010-40.jpg" width="100" height="75" /><br />
							</a>
		</div>
</p></div>
<p>	<!-- Pagination --></p>
<div class='ngg-navigation'><span>1</span><a class="page-numbers" href="http://www.lecentre.net/blog/archives/1136?nggpage=2">2</a><a class="page-numbers" href="http://www.lecentre.net/blog/archives/1136?nggpage=3">3</a><a class="next" id="ngg-next-2" href="http://www.lecentre.net/blog/archives/1136?nggpage=2">&#9658;</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1136/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

