• 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

    Setting a server role in Salt (comparing Puppet and Salt)

    Spencer Christensen

    By Spencer Christensen
    December 23, 2013

    There are many ways to solve a given problem, and this is no truer than with configuration management. Salt (https://saltstack.com) is a fairly new tool in the configuration management arena joining the ranks of Puppet, Chef, and others. It has quickly gained and continues to grow in popularity, boasting its scalable architecture and speed. And so with multiple tools and multiple ways to use each tool, it can get a little tricky to know how best to solve your problem.

    Recently I’ve been working with a client to convert their configuration management from Puppet to Salt. This involved reviewing their Puppet configs and designs and more-or-less mapping them to the equivalent for Salt. Most features do convert pretty easily. However, we did run into something that didn’t at first/assigning a role to a server.

    We wanted to preserve the “feeling” of the configs where possible. In Puppet they had developed and used a convention for using some custom variables in their configs to assign an “environment” and a “role” for each server. These variables were assigned in the node and role manifests. But in Salt we struggled to find a similar way to do that, but here is what we learned.

    In …


    automation devops puppet salt

    Database federation performance showdown

    Josh Tolley

    By Josh Tolley
    December 19, 2013


    Flickr user garryknight

    The PostgreSQL Foreign Data Wrapper has gotten a fair bit of attention since its release in PostgreSQL version 9.3. Although it does much the same thing the dblink contrib module has long done, it is simpler to implement for most tasks and reuses the same foreign data wrapper infrastructure employed by several other contrib modules. It allows users to “federate” distinct PostgreSQL databases; that is, it allows them to work in combination as though they were one database. This topic of database federation has interested me for some time—​I wrote about it a couple years ago—​and when postgres_fdw came out I wanted to see how it compared to the solution I used back then.

    First, some background. The key sticking point of database federation that I’m focused on is transaction management. Transactions group a series of steps, so either they all complete in proper sequence, or none of them does. While lots of databases, and other technologies like messaging servers, can handle transactions that involve only one service (one database or one messaging server instance, for example), federation aims to allow transactions to span multiple services. If, for instance, …


    database java performance postgres

    End Point Partners with A-Zero to Expand Liquid Galaxy Services in South Korea

    Dave Jenkins

    By Dave Jenkins
    December 19, 2013

    End Point Corporation continues its global leadership for Liquid Galaxy development and professional services, and has signed a partnership agreement with A-Zero of South Korea to further expand those services for the display platform and its associated professional services.

    This partnership promises to be beneficial for the South Korean market. Already, A-Zero has lined up a number of engagements where the Liquid Galaxy could be deployed, bringing the incredible display platform together with the wealth of data resources in one of the most online-savvy countries in the world.

    “We look forward to great business opportunities with our new friends at End Point,” said Cho Hyungwan, Director of Business Development for A-Zero. “We can see many uses for the platform here in our market.” A-Zero is a systems integrator and software development company based in Seoul with skills in GIS data manipulation, complex system deployments, and close relations with Google Enterprise partners in the region.

    To kick-off this partnership, End Point brought a Liquid Galaxy Express to Seoul to show the platform at a nation-wide GIS conference together with A-Zero. The trade show was a great success, …


    clients visionport

    Use Ansible/Jinja2 templates to change file content based on target OS

    Emanuele “Lele” Calò

    By Emanuele “Lele” Calò
    December 19, 2013

    In the End Point hosting team we really love automating repetitive tasks, especially when it involves remembering many little details which can over time be forgotten, like differences of coreutils location between some versions of Ubuntu (Debian), CentOS (Red Hat) and OpenBSD variants.

    In our environment we bind the backup SSH user authorized_keys entry to a custom command in order to have it secured by being, among other aspects, tied to a specific rsync call.

    So in our case the content of our CentOS authorized_keys would be something like:

    command="/bin/nice -15 /usr/bin/rsync --server --daemon .",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAB3[...]Q== endpoint-backup
    

    Sadly that’s only true for CentOS systems so that if you want to automate the distribution of authorized_keys (as we’ll show in another post) to different Linux distributions (like Ubuntu) you may need to tweak it to comply to the new standard “/usr/bin” location, which will be eventually adopted by all new Linux versions overtime.. RHEL 7.x onward included.

    To do the OS version detection we decided to use an Ansible/Jinja2 template by placing the following line in the Ansible …


    devops ansible redhat debian linux ssh

    Getting navigation bar to look good in iOS 7

    Kamil Ciemniewski

    By Kamil Ciemniewski
    December 17, 2013

    Apple has recently released iOS 7—​a major upgrade to its operating system for mobile devices. Whether users like it or not—​developers have to treat it seriously. There is nothing worse in the world of technology than being viewed as passé.

    From the point of view of users, the new look and feel resembles somewhat the overall movement in the user interface design. The flat UI style is the new hotness nowadays.

    On the developers’ side of the fence though, this means lots of hard work. Apple has introduced lots of changes so that many iOS apps had to be changed and even redesigned to look acceptable in iOS 7.

    Some applications have already dropped support for older versions of iOS

    One of them is… Evernote! Its team has decided that supporting older systems would be too costly and that they have decided to dump it. The only way to have the Evernote app is to have it installed before the release of its latest version.

    The troublesome navigation bar

    One issue I encountered while working on an iOS app lately was that the app started to display oddly. The top bar was overlapping with the contents of the views.

    The reason is because now the top bar overlaps with the UI underneath. …


    ios

    3 common misconceptions about Ruby on Rails

    Tim Case

    By Tim Case
    December 16, 2013

    1) Rails is easy to learn.

    Rails has a steep learning curve and that’s never going away. From the beginning it was conceived of as an advanced tool for experienced web developers and having a low cost of entry for beginners is not part of the Rails way. Rails makes web development faster by depending on conventions that the developer needs to learn and utilize. There are a lot of these conventions and for a beginner the cost of learning them will be extremely low throughput initially. However, the investment pays off much later down the road when the throughput skyrockets due to familiarity with the framework. Another overlooked thing that makes Rails development hard to learn is that there is a lot more to learn than just Ruby and Rails, there’s also things like source code management, databases, front end servers, testing and while these subjects are common to web development in general, you’ll still need to learn the “Rails way” to approaching these satellite concerns that make up a typical production application. Brook Riggio created this fantastic chart that shows all the subjects that a Rails dev needs to be familiar with in the excellent article “Why Learning Rails is Hard”, …


    rails

    New Kamelopard version

    Josh Tolley

    By Josh Tolley
    December 16, 2013

    I recently pushed new Kamelopard version (v0.0.14), and thought I should briefly mention it here. This release includes a few bug fixes, including one that fatally affected several v0.0.13 installations, but its major improvement is a greatly expanded test suite. For quite some time many Kamelopard functions have had only placeholder tests, marked as “pending" in the code, or no test at all. In particular, this includes many of the more complex (or in other words, difficult to test) functions. Version 0.0.14 added 35 new tests, including for the frequently used orbit() function as well as for the relatively new multidimensional function logic.

    The typical Kamelopard test creates a Kamelopard object, test that it responds to the right set of methods, renders it to KML, and finally inspects the result for correctness. This can quickly become complicated, as some KML objects can take many different forms. Here are a few selections from one of the new tests, as an example. This is for the ColorStyle object, which is an abstract class handling part of the options in other style objects.

    This first section indicates that this test includes several other tests, defined elsewhere. …


    kamelopard visionport ruby open-source kml

    Python decorator basics

    Miguel Alatorre

    By Miguel Alatorre
    December 13, 2013

    Python decorators have been around since 2005, when they were included in the release of Python 2.4.1. A decorator is nothing more than syntax for passing a function to another function, or wrapping functions. Best put, a decorator is a function that takes a function as an argument and returns either the same function or some new callable. For example,

    @foo
    @bar
    @baz
    @qux
    def f():
        pass
    

    is shorthand for:

    def f():
        pass
    f = foo(bar(baz(qux(f))))
    

    Say we have some functions we are debugging by printing out debug comments:

    def mul(x, y):
        print __name__
        return x*y
    
    def div(x, y):
        print __name__
        return x/y
    

    The printing in the functions can be extracted out into a decorator like so:

    def debug(f):            # debug decorator takes function f as parameter
        msg = f.__name__     # debug message to print later
        def wrapper(*args):  # wrapper function takes function f's parameters
            print msg        # print debug message
            return f(*args)  # call to original function
        return wrapper       # return the wrapper function, without calling it
    

    Our functions get decorated with:

    @debug
    def mul(x, y):
        return x*y
    
    @debug
    def div(x, y):
        return x/y …

    python
    Previous page • Page 107 of 220 • Next page