<div dir="ltr"><div><div><div><div><div><div><div><div>Hi Max,<br></div><div><br></div></div></div></div></div></div></div></div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 1 January 2018 at 21:16, Max Lapshin <span dir="ltr"><<a href="mailto:max.lapshin@gmail.com" target="_blank">max.lapshin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra">what is the difference from <a href="https://github.com/mochi/egeoip" target="_blank">https://github.com/mochi/<wbr>egeoip</a> ?</div></div></blockquote><div><br></div><div>My original motivation in writing 
this library was indeed to create a modern replacement for egeoip, which
 I've depended upon for the past few years.<br><br>Some of the things I desired:<div><br></div>1) Not having snapshots of the database committed into the repository<br>    - This makes the repository grow over time and cloning it taking ever longer.<br><br>2) Making database updates seamless<br>    - Which was solved by loading them from network (closely related to 1.)<br></div><div></div><div><div>    - Caching on the local file system is then leveraged to reduce potentially<br></div><div>      reduced reliability.<br></div><div>    - In order to not consume too much bandwidth, conditional HTTP requests<br></div><div>      are used whenever possible.<br></div><div><br></div>3) Support for the GeoLite2 databases<br>    - GeoLite Legacy databases are being discontinued and will no longer receive updates after April 2018.<br><br>4) Less rigidly structured entries<br>    - Which was solved by returning entries as maps instead of records and having the code <br>      be particularly unopinionated about what data those entries contain.<br><br><div>5) Not having a limited number of workers as a potential bottleneck<br></div><div>    - This was solved by sharing the different database sections as reference-counted binaries<br></div>      through ETS<br></div></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Guilherme<br></div></div></div></div></div></div>
</div></div>