<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://notomorrow.de/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>notomorrow.de code:notes</title>
        <description></description>
        <link>https://notomorrow.de/</link>
        <lastBuildDate>Thu, 16 Apr 2026 03:08:08 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://notomorrow.de/ttps://notomorrow.de/lib/tpl/std/images/favicon.ico</url>
            <title>notomorrow.de</title>
            <link>https://notomorrow.de/</link>
        </image>
        <item>
            <title>code:notes:icinga</title>
            <link>https://notomorrow.de/code/notes/icinga?rev=1409761929</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;icingainstallprocess&quot;&gt;Icinga Install Process&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
following on centos &lt;a href=&quot;http://docs.icinga.org/1.0/en/quickstart-icinga.html&quot; class=&quot;urlextern&quot; title=&quot;http://docs.icinga.org/1.0/en/quickstart-icinga.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://docs.icinga.org/1.0/en/quickstart-icinga.html&lt;/a&gt;
see &lt;a href=&quot;https://notomorrow.de/code/notes/icinga_rules&quot; class=&quot;wikilink2&quot; title=&quot;code:notes:icinga_rules&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;code:notes:icinga_rules&quot;&gt;icinga_rules&lt;/a&gt; for a &lt;em&gt;yet&lt;/em&gt; unfinished paste of the configuration.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;## some debian deps&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;aptitude install&lt;/span&gt; libdbi-dev fcgiwrap&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;mkdir&lt;/span&gt; src
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; src
&lt;span class=&quot;kw2&quot;&gt;git clone&lt;/span&gt; git:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;git.icinga.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;icinga-core.git
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; icinga-core&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
.&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;configure
&lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt; all
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; useradd &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; icinga
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt; fullinstall
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt; install-config
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt; install-webconf
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;vim&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;icinga&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;objects&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;contacts.cfg
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; htpasswd &lt;span class=&quot;re5&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;icinga&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;htpasswd.users icingaadmin
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service httpd restart
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; chkconfig httpd on
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;src&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;wget&lt;/span&gt; https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;nagios-plugins.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;download&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;snapshot&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nagios-plugins-master.tar.gz
&lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; tfvz nagios-plugins-master.tar.gz
&lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; xfvz nagios-plugins-master.tar.gz
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; nagios-plugins-master.tar.gz
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; nagios-plugins-&lt;span class=&quot;sy0&quot;&gt;*/&lt;/span&gt;
.&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;configure &lt;span class=&quot;re5&quot;&gt;--prefix&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;icinga &lt;span class=&quot;re5&quot;&gt;--with-nagios-user&lt;/span&gt;=icinga
&lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Icinga Install Process&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;icingainstallprocess&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1078&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;nginxconfig&quot;&gt;nginx config&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code nginx&quot;&gt;&lt;span class=&quot;co1&quot;&gt;## Icinga Classic - Configuration                                                                                                                  location /icinga {                                                                                                                                   alias   /usr/local/icinga/share;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;  &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.html&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpAuthBasicModule#auth_basic&quot;&gt;&lt;span class=&quot;kw6&quot;&gt;auth_basic&lt;/span&gt;&lt;/a&gt;              &lt;span class=&quot;st0&quot;&gt;&amp;quot;Icinga Access&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpAuthBasicModule#auth_basic_user_file&quot;&gt;&lt;span class=&quot;kw6&quot;&gt;auth_basic_user_file&lt;/span&gt;&lt;/a&gt;    /usr/local/icinga/etc/htpasswd.users&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; /icinga/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;\.cgi$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /usr/local/icinga/sbin&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/icinga/cgi-bin/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;\.cgi /$1.cgi &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#break&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;break&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt; /etc/nginx/fastcgi_params&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_pass&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_pass&lt;/span&gt;&lt;/a&gt;  unix:/var/run/fcgiwrap.socket&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_index&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_index&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt;  SCRIPT_FILENAME  &lt;span class=&quot;re0&quot;&gt;$document_root&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fastcgi_script_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpAuthBasicModule#auth_basic&quot;&gt;&lt;span class=&quot;kw6&quot;&gt;auth_basic&lt;/span&gt;&lt;/a&gt;              &lt;span class=&quot;st0&quot;&gt;&amp;quot;Icinga Access&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpAuthBasicModule#auth_basic_user_file&quot;&gt;&lt;span class=&quot;kw6&quot;&gt;auth_basic_user_file&lt;/span&gt;&lt;/a&gt;    /usr/local/icinga/etc/htpasswd.users&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt;  AUTH_USER          &lt;span class=&quot;re0&quot;&gt;$remote_user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt;  REMOTE_USER        &lt;span class=&quot;re0&quot;&gt;$remote_user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nginx config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nginxconfig&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1079-2151&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;links&quot;&gt;Links&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/dnsmichi/icinga/blob/master/contrib/nginx/nginx.icinga.conf&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dnsmichi/icinga/blob/master/contrib/nginx/nginx.icinga.conf&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/dnsmichi/icinga/blob/master/contrib/nginx/nginx.icinga.conf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2152-2396&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;distributedservices&quot;&gt;distributed services&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
uses active and passive checks, rest is timing.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;     
define service{
 #use                     distributed-service   ; template to inherit from
 use generic-service
 name                    distributed-service   ; name of this template
 ;active_checks_enabled   0                 ; no active checks
 check_command               service-is-stale
 passive_checks_enabled  1                 ; allow passive checks
 check_period            24x7              ; check active all the time
 check_freshness         1
 register                0                 ; this is a template, not a real service
 }            &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;distributed services&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;distributedservices&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2397-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>code:notes</category>
            <pubDate>Wed, 03 Sep 2014 16:32:09 +0000</pubDate>
        </item>
        <item>
            <title>code:notes:ipmi</title>
            <link>https://notomorrow.de/code/notes/ipmi?rev=1504731771</link>
            <description>
&lt;p&gt;
== ipmitool
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;ipmitool &lt;span class=&quot;re5&quot;&gt;-I&lt;/span&gt; lanplus &lt;span class=&quot;re5&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$host&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-U&lt;/span&gt; adm sol activate&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>code:notes</category>
            <pubDate>Wed, 06 Sep 2017 21:02:51 +0000</pubDate>
        </item>
        <item>
            <title>code:notes:nginx</title>
            <link>https://notomorrow.de/code/notes/nginx?rev=1408068740</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nginx&quot;&gt;NGINX&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NGINX&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-25&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ssl&quot;&gt;SSL&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;      ssl on;
      ssl_dhparam /etc/nginx/keys/dh4096.pem;
      ssl_protocols TLSv1.2 TLSv1 SSLv3;
      ssl_ciphers ALL:!aNULL:!eNULL:!ADH:!EXP:!DES:!MEDIUM:!LOW:kEDH+DHE:SHA256:RC4+RSA;
      ssl_prefer_server_ciphers   on;
      ssl_session_timeout  5m;
      ssl_session_cache    shared:SSL:10m;
      ssl_certificate  /etc/nginx/keys/ntmr.crt;
      ssl_certificate_key /etc/nginx/keys/ntmr.key;
  &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSL&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssl&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;26-467&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;proxy&quot;&gt;Proxy&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
strip ssl and adjust server vars for cgi scripts
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  
location / {
  proxy_pass  http://www;                                                                         
  proxy_set_header        Accept-Encoding   &amp;quot;&amp;quot;;
  proxy_set_header        Host            $host;
  proxy_set_header        scheme          $scheme;
  proxy_set_header        X-Real-IP       $remote_addr;
  proxy_set_header        X-Forwarded-Port       $server_port; 
  proxy_set_header        X-Forwarded-For        $proxy_add_x_forwarded_for;
  proxy_set_header        X-Forwarded-Proto      $scheme;
        
  proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  
  proxy_redirect off;
} 
  
  &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;468-1217&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;ww1&quot;&gt;ww1&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
global scope                                                                                                                                     
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;map $http_x_forwarded_port $external_port {
  default $http_x_forwarded_port;
  &amp;#039;&amp;#039; $server_port;
} 
  &lt;/pre&gt;

&lt;p&gt;
cgi config
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;include fastcgi_params;
fastcgi_param  SERVER_PORT          $external_port;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ww1&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ww1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1218-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>code:notes</category>
            <pubDate>Fri, 15 Aug 2014 02:12:20 +0000</pubDate>
        </item>
        <item>
            <title>code:notes:osm_roads</title>
            <link>https://notomorrow.de/code/notes/osm_roads?rev=1408068631</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openstreetmaproaddata&quot;&gt;OpenStreetMap Road Data&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
download street to postcode relations from geofabrik (check &lt;a href=&quot;http://download.geofabrik.de/limit.html&quot; class=&quot;urlextern&quot; title=&quot;http://download.geofabrik.de/limit.html&quot; rel=&quot;ugc nofollow&quot;&gt;Bandwidth and Connection Rate Limits&lt;/a&gt;) and save to mysql
&lt;/p&gt;

&lt;p&gt;
sql:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;create table osm_roads( id integer, name char( 255 ), category char( 255 ), postal_code char( 255 ));&lt;/pre&gt;

&lt;p&gt;
shell:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget -e robots=off -nd -r -l1 -np -A *.bz2 http://download.geofabrik.de/openstreetmap/europe/germany/
wget -O - https://notomorrow.de/_export/code/notess/osm_roads?codeblock=0 &amp;gt; osm_roads.py
wget -O - https://notomorrow.de/_export/code/notes/osm_roads?codeblock=1 &amp;gt; osm_roads.sql
mysql &amp;lt; osm_roads.sql
for i in *.bz2; do bunzip2 $i &amp;amp;&amp;amp; python osm_roads.py ${i%.bz2} &amp;amp;&amp;amp; rm ${i%.bz2}; done;&lt;/pre&gt;

&lt;p&gt;
todo: save cleaned street values, like ccity for cities
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://notomorrow.de/_export/code/code/notes/osm_roads?codeblock=0&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;osm_roads.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sys&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; MySQLdb
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;pprint&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;pprint&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#pp = pprint.PrettyPrinter(indent=4)&lt;/span&gt;
&amp;nbsp;
idx_replace &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;,&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;(&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;)&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; clean&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; s &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; c &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; idx_replace: s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s.&lt;span class=&quot;me1&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; s
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; indexstr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; l &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;|&#039;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; clean&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; l &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; act&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#pprint( { &#039;save&#039;: data })&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;addr:city&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:     data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;addr:city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;addr:country&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:  data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;country&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;addr:country&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;addr:postcode&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data: data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;addr:postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;addr:street&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:   data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;street&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;addr:street&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;highway&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:
        data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;category&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;highway&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;steet&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;name&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:
            data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;street&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;postal_code&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:        data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postal_code&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;category&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;building&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:   data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;category&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;building&#039;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;street&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data: &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;: &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;category&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:  data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;category&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;addr&#039;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:      data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;
    data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;way_id&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;way_id&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
    found &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    idx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;## postcode from geo_db&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;:
        c1.&lt;span class=&quot;me1&quot;&gt;execute&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;select name, sortname from geo_place where postcode=%s&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        found &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; c1.&lt;span class=&quot;me1&quot;&gt;fetchone&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; found &lt;span class=&quot;kw1&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;pprint&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;city found&#039;&lt;/span&gt;: found &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; found&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;ccity&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; found&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;## check existing&lt;/span&gt;
    c1.&lt;span class=&quot;me1&quot;&gt;execute&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;select id, city from osm_roads3 where street=%s and category=%s and postcode=%s and city=%s&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;street&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;category&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    found &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; c1.&lt;span class=&quot;me1&quot;&gt;fetchone&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; found &lt;span class=&quot;kw1&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;:
        &lt;span class=&quot;kw3&quot;&gt;pprint&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;road found&#039;&lt;/span&gt;: found &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;## insert roads&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ccity&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data: data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;ccity&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; clean&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;ccity&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;: data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;ccity&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; clean&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;ccity&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    c2.&lt;span class=&quot;me1&quot;&gt;execute&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&amp;quot;insert into osm_roads3( way_id, street, category, postcode, city, ccity )
                                VALUES( %s, %s, %s, %s, %s, %s )&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;way_id&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;street&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;category&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;ccity&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ins: %s&amp;quot;&lt;/span&gt; % data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;way_id&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;## update plz&lt;/span&gt;
        c1.&lt;span class=&quot;me1&quot;&gt;execute&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;select id from osm_plz where postcode=%s and city=%s&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; c1.&lt;span class=&quot;me1&quot;&gt;fetchone&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;plz: %s - %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            c2.&lt;span class=&quot;me1&quot;&gt;execute&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&amp;quot;insert into osm_plz( postcode, city ) VALUES( %s, %s )&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;## update index&lt;/span&gt;
        idx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; indexstr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;postcode&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;city&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;street&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;idx: %s&amp;quot;&lt;/span&gt; % idx
        c2.&lt;span class=&quot;me1&quot;&gt;execute&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&amp;quot;insert into osm_idx( id, idx ) VALUES( %s, %s )&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;way_id&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; idx &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; lxml &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; etree
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; read_dump&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; infile &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; infile &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;r&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; ev&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; el &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; etree.&lt;span class=&quot;me1&quot;&gt;iterparse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; infile&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; events&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;start&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;end&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        tag &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; el.&lt;span class=&quot;me1&quot;&gt;tag&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; ev &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;start&#039;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; tag &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;way&#039;&lt;/span&gt;:
                k &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;way_id&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; el.&lt;span class=&quot;me1&quot;&gt;attrib&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;id&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;way_id&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; data:
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; tag &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;tag&#039;&lt;/span&gt;:
                    a &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; el.&lt;span class=&quot;me1&quot;&gt;attrib&lt;/span&gt;
                    data&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;k&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; a.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;v&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;utf8&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; tag &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;way&#039;&lt;/span&gt;:
                save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; tag&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        el.&lt;span class=&quot;me1&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    conn &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; MySQLdb.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;host &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;xxx&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;passwd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;xxx&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;db &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;xxx&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    c1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; conn.&lt;span class=&quot;me1&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    c2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; conn.&lt;span class=&quot;me1&quot;&gt;cursor&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; MySQLdb.&lt;span class=&quot;me1&quot;&gt;Error&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; e:
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Error %d: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;readfile %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw3&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
read_dump&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;commit&amp;quot;&lt;/span&gt;
conn.&lt;span class=&quot;me1&quot;&gt;commit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
c1.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
c2.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
conn.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://notomorrow.de/_export/code/code/notes/osm_roads?codeblock=1&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_sql&quot;&gt;osm_roads3.sql&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DATABASE&lt;/span&gt; roads &lt;span class=&quot;kw1&quot;&gt;CHARACTER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; utf8;
&lt;span class=&quot;kw1&quot;&gt;CONNECT&lt;/span&gt; roads;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`osm_roads3`&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BIGINT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNSIGNED&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`way_id`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`category`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`postcode`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`street`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;124&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`city`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;124&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`idx`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`ccity`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;UNIQUE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`osm_idx`&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BIGINT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`idx`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`osm_plz`&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BIGINT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNSIGNED&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`postcode`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`city`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;UNIQUE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;-- prefill with postcodes&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`geo_place`&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`id`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`postcode`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`category`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`name`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;`sortname`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>code:notes</category>
            <pubDate>Fri, 15 Aug 2014 02:10:31 +0000</pubDate>
        </item>
        <item>
            <title>code:notes:php-fpm</title>
            <link>https://notomorrow.de/code/notes/php-fpm?rev=1408068675</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;php&quot;&gt;php&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
add php fpm service as user &lt;em&gt;ntmr&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
  adduser –system –home /devnull –no-create-home –group –disabled-login –gecos “ntmr” ntmr
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;php&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;php&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-304&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;fpmconfig&quot;&gt;fpm config&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://notomorrow.de/_export/code/code/notes/php-fpm?codeblock=0&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_conf&quot;&gt;/etc/php5/fpm/pool.d/ntmr.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file init&quot;&gt;[notomorrow.de]
&amp;nbsp;
user = ntmr
group = ntmr
listen = &#039;/tmp/php-fpm-ntmr.sock&#039;
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
&amp;nbsp;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;fpm config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fpmconfig&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;305-565&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;nginxconfig&quot;&gt;nginx config&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://notomorrow.de/_export/code/code/notes/php-fpm?codeblock=1&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_inc&quot;&gt;/etc/nginx/inc/ntmr.php.inc&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; \.php$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_split_path_info&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_split_path_info&lt;/span&gt;&lt;/a&gt; ^&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.+\.php&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;/.+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;$&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt;        fastcgi_params&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt;  SCRIPT_FILENAME  &lt;span class=&quot;re0&quot;&gt;$document_root&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fastcgi_script_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_intercept_errors&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_intercept_errors&lt;/span&gt;&lt;/a&gt; on&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_pass&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_pass&lt;/span&gt;&lt;/a&gt; unix:/tmp/php-fpm-ntmr.sock&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;

&lt;h3 id=&quot;samplehost&quot;&gt;sample host&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code file etcnginxconfdntmrconf&quot;&gt;        root   /srv/ntmr;
        index  index.php index.html;
&amp;nbsp;
         location / {
           try_files $uri $uri/index.php; }
&amp;nbsp;
        include        conf.d/ntmr.php.inc;
&amp;nbsp;
        ssl on;
        ssl_certificate  /etc/nginx/keys/mail.ntmr.crt;
        ssl_certificate_key /etc/nginx/keys/mail.ntmr.key;                                                                                    
&amp;nbsp;
        ssl_session_timeout  5m;
        ssl_protocols  SSLv2  TLSv1;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;
&amp;nbsp;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nginx config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nginxconfig&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;566-1566&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;php-apps&quot;&gt;php-apps&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://notomorrow.de/code/notes/dokuwiki&quot; class=&quot;wikilink2&quot; title=&quot;code:notes:dokuwiki&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;code:notes:dokuwiki&quot;&gt;dokuwiki&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;php-apps&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;php-apps&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1567-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>code:notes</category>
            <pubDate>Fri, 15 Aug 2014 02:11:15 +0000</pubDate>
        </item>
        <item>
            <title>code:notes:postgres</title>
            <link>https://notomorrow.de/code/notes/postgres?rev=1408068833</link>
            <description>
&lt;p&gt;
== Postgres replication install
&lt;/p&gt;

&lt;p&gt;
=== debian 
&lt;/p&gt;

&lt;p&gt;
requirements
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install wget get build-essential libkrb5-dev
apt-get install libxslt-dev libxml2-dev libpam-dev libedit-dev&lt;/pre&gt;

&lt;p&gt;
pg
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | apt-key add -
apt-get install postgresql-9.1
echo &amp;quot;deb http://apt.postgresql.org/pub/repos/apt/ squeeze-pgdg main&amp;quot; \
  &amp;gt;&amp;gt; /etc/apt/sources.list.d/pgdg.list

(cat &amp;lt;&amp;lt;-DEMO
Package: *
Pin: release o=apt.postgresql.org
Pin-Priority: 500
DEMO
) &amp;gt;&amp;gt; /etc/apt/preferences.d/pgdg.pref

apt-get update
apt-get install pgdg-keyring
apt-get install postgresql-9.2 postgresql-server-dev-9.2&lt;/pre&gt;

&lt;p&gt;
repmgr
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone git://github.com/2ndQuadrant/repmgr.git
cd repmgr
make clean
make USE_PGXS=1
make USE_PGXS=1 install

update-alternatives --install /usr/bin/repmgr repmgr /usr/lib/postgresql/9.2/bin/repmgr 10
update-alternatives --install /usr/bin/repmgr repmgr /usr/lib/postgresql/9.2/bin/repmgrd 10&lt;/pre&gt;

&lt;p&gt;
=== centos 
&lt;/p&gt;

&lt;p&gt;
  yum install repmgr
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;repmgr               x86_64               1.2.0-1.rhel6                 pgdg91                59 k&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>code:notes</category>
            <pubDate>Fri, 15 Aug 2014 02:13:53 +0000</pubDate>
        </item>
    </channel>
</rss>
