• Home

  • Custom Ecommerce
  • Application Development
  • Database Consulting
  • Cloud Hosting
  • Systems Integration
  • Legacy Business Systems
  • Security & Compliance
  • GIS

  • Expertise

  • About Us
  • Our Team
  • Clients
  • Blog
  • Careers

  • VisionPort

  • Contact
  • Our Blog

    Ongoing observations by End Point Dev people

    Monitorama, Berlin, EU - Day 1

    Emanuele “Lele” Calò

    By Emanuele “Lele” Calò
    September 19, 2013

    If you care about the quality of your IT infrastructure and work, there are times where you really need to focus on a valuable and important aspect: community.

    The thing is that most people don’t realize how valuable the human factor is when working in the IT field, until they happen to be in such a marvellous conference as Monitorama has been so far.

    I was lucky enough to be there, in Berlin from 2013.09.19 to 2013.09.20, to enjoy all the awesome talks and attendees which was present there. And what I’m really saying that besides most of the speeches were quite technically interesting and definitely good quality ones, they definitely didn’t only revolves about monitoring per se.

    I won’t mention each and every talk, though they all would have deserved it, but I’ll say that while I was very inspired by Danese Copper’s talk about Open Source value and importance, I was also very entertained Ryan Dotsmith’s one about how you could/should learn from failures, either yours or others ones, or the very specific “on the field” one from Katherine Daniels.

    On top of that while I generally don’t appreciate sponsors having “talks” during this kind of conferences, I actually appreciated how …


    conference monitoring nagios

    Apache accidental DNS hostname lookups

    Jon Jensen

    By Jon Jensen
    September 18, 2013

    Logging website visitor traffic is an interesting thing: Which details should be logged? How long and in what form should you keep log data afterward? That includes questions of log rotation frequency, file naming, and compression. And how do you analyze the data later, if at all?

    Allow me to tell a little story that illustrates a few limited areas around these questions.

    Reverse DNS PTR records

    System administrators may want to make more sense of visitor IP addresses they see in the logs, and one way to do that is with a reverse DNS lookup on the IP address. The network administrators for the netblock that the IP address is part of have the ability to set up a PTR (pointer) record, or not. You can find out what it is, if anything.

    For example, let’s look at DNS for End Point’s main website at www.endpoint.com using the standard Unix tool “host”:

    % host www.endpoint.com
    www.endpoint.com has address 208.43.132.31
    www.endpoint.com has IPv6 address 2607:f0d0:2001:103::31
    % host 208.43.132.31
    31.132.43.208.in-addr.arpa domain name pointer 208.43.132.31-static.reverse.softlayer.com.
    % host 2607:f0d0:2001:103::31
    1.3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.1.0.1.0.0.2.0.d.0.f.7.0.6.2.ip6.arpa …

    devops hosting linux networking

    Interchange Form Testing with WWW::Mechanize

    Jeff Boes

    By Jeff Boes
    September 17, 2013

    Recently, I encountered a testing challenge that involved making detailed comparisons between the old and new versions of over 200 separate form-containing HTML (Interchange) pages.

    Because the original developers chose to construct 200+ slightly-different pages, rather than a table-driven Interchange flypage (curses be on them forever and ever, amen), an upgrade to change how the pages prepared the shopping cart meant making over 200 similar edits. (Emacs macros, yay!) Then I had to figure out how to verify that each of the 200 new versions did something at least close to what the 200 old versions did.

    Fortunately, I had easy ways to identify which pages needed testing, construct URLs to the new and old pages, and even a way to “script” how to operate on the page-under-test. And I had WWW::Mechanize, which has saved my aft end more than once.

    WWW::Mechanize is a pretty mature (originally 2008) “browser-like” system for fetching and acting on web pages. You can accept and store cookies, find and follow links, handle redirection, forms, you name it—​but not Javascript. Sorry, but there are other tools in the box that can help you if you are working with more interactive pages.

    In my …


    automation interchange perl testing

    My Favorite Git Commands

    Steph Skardal

    By Steph Skardal
    September 16, 2013

    Git is a tool that all of us End Pointers use frequently. I was recently reviewing history on a server that I work on frequently, and I took note of the various git commands I use. I put together a list of the top git commands (and/or techniques) that I use with a brief explanation.

    git commit -m “****”

    This is a no-brainer as it commits a set of changes to the repository. I always use the -m to set the git commit message instead of using an editor to do so. Edit: Jon recommends that new users not use -m, and that more advanced users use this sparingly, for good reasons described in the comments!

    git checkout -b branchname

    This is the first step to setting up a local branch. I use this one often as I set up local branches to separate changes for the various tasks I work on. This command creates and moves you to the new branch. Of course, if your branch already exists, git checkout branchname will check out the changes for that local branch that already exists.

    git push origin branchname

    After I’ve done a bit of work on my branch, I push it to the origin to a) back it up in another location (if applicable) and b) provide the ability for others to reference the branch. …


    git

    PostgreSQL 9.3 Released

    Szymon Lipiński

    By Szymon Lipiński
    September 10, 2013

    Yesterday PostgreSQL 9.3 was released. It contains many great new features, below is a simple description of those I think are most important. There are many more than the short list, all of them can be find at PostgreSQL 9.3 Release Notes website.

    One of the most important features of the new release is the long list of bug fixes and improvements making the 9.3 version faster. I think it is the main reason for upgrading. There are also many new features which your current application will not possibly use, but faster database is always better.

    The new mechanism of background workers gives us quite new possibilities to run a custom process in the background. I’ve got a couple of ideas for implementing such background tasks like a custom message queue, or postgres log analyzer, or a tool for accessing PostgreSQL using HTTP (and JSON—​just to have API like the NoSQL databases have).

    Another nice feature, which I haven’t checked yet, is data checksums. Something really useful for checking data consistency at data files level. It should make all the data updates slower, but I haven’t checked how much slower, there will be another blog post about that.

    There is also parallel pg_dump …


    postgres

    Fixed Navigation Bar: HTML, CSS, and JavaScript Breakdown

    Steph Skardal

    By Steph Skardal
    September 2, 2013

    Something that I’ve seen frequently these days on content rich sites are fixed navigation bars, or small abbreviated header in the form of a horizontal bar at the top of the screen that shows after a user has scrolled below the header. Here’s an example:


    A live example of an abbreviated fixed navigation bar at the top of the articles at ABCNews.com. The background has a grey opaque layer for demonstration purposes only.

    I recently implemented this functionality for H2O, and I’ll go through the tools needed to do this.

    HTML Markup

    First thing’s first, you need the HTML markup for this. The only tricky thing here is that the horizontal bar must be outside of any wrapping dividers on the page that are confining the content to a set width. For example, if your content is limited to 900 pixels in width, the horizontal bar markup must be outside that constraint. Here’s what the HTML might look like:

    <div id="fixed_bar">
      <div class="wrapper">
        Links & content here.
      </div>
    </div>
    

    Note that in the above HTML, the “wrapper” div may be constraining the content width to match the remaining content, such as in the example above. This HTML may …


    css html javascript jquery

    YAPC Europe in Kyiv

    Jon Jensen

    By Jon Jensen
    August 24, 2013

    This year’s YAPC (Yet Another Perl Conference) Europe was held in Kyiv, Ukraine on August 12-14. There was a full schedule of three tracks of interesting talks at the conference, spread over three days.

    I spoke just after lunch on the first day. My talk was Adventures in Perl Packaging, on our experience at End Point building a custom-compiled perl RPM for RHEL/CentOS, and many hundreds of CPAN modules into RPMs in a custom Yum repository. I also touched on similarities in Debian, alternative ways of getting custom perl & CPAN using perlbrew, plenv, and Carton (akin to Ruby’s rvm, rbenv, and bundler), and others’ efforts at packaging Perl modules in RPMs. I had several good follow-up conversations later about this and have some plans about how we may do things better in RHEL/CentOS 7.

    Larry Wall, creator of Perl (and also patch!), was at this conference, and it was fun to talk with him and his wife Gloria again. Larry pretty definitively settled one question: In recent months an idea has been floated that the next version of Perl 5 might simply be renamed to Perl 7 to skip over the seemingly endlessly under construction Perl 6. That would solve an annoying marketing problem, …


    conference perl

    Log Jam: Be careful with local syslog

    Josh Williams

    By Josh Williams
    August 22, 2013

    All they really wanted to do is log any query that takes over 10 seconds. Most of their queries are very simple and fast, but the application generates a few complicated queries for some actions. Recording anything that took longer than 10 seconds allowed them to concentrate on optimizing those. Thus, the following line was set in postgresql.conf:

    log_min_duration_statement = 10
    

    Log Everything

    A little while back, Greg wrote about configuring Postgres to log everything, and the really good reasons to do so. That isn’t what they intended to to here, but is effectively what happened. The integer in log_min_duration_statement represents milliseconds, not seconds. With a 10ms threshold it wasn’t logging everything the database server was doing, but enough that this performance graph happened:

    Reconstructed I/O Utilization

    Reconstructed I/O Utilization

    That is, admittedly, a fabricated performance plot. But it’s pretty close to what we were seeing at the time. The blue is the fast SAS array where all the Postgres data resides, showing lower than normal utilization before recovering after the configuration change. The maroon behind it is the SATA disk where the OS (and /var/log) resides, …


    performance postgres
    Previous page • Page 113 of 220 • Next page