• 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
  • Multi-store Architecture for Ecommerce

    Steph Skardal

    By Steph Skardal
    February 29, 2012

    Something that never seems to go out of style in ecommerce development is the request for multi-site or multi-store architecture running on a given platform. Usually there is interest in this type of setup to encourage build-out and branding of unique stores that have shared functionality.

    A few of Backcountry.com’s stores driven by a multi-store architecture, developed with End Point support.

    End Point has developed several multi-store architectures on open source ecommerce platforms, including Backcountry.com (Interchange/Perl), College District (Interchange/Perl), and Fantegrate (Spree/Rails). Here’s an outline of several approaches and the advantages and disadvantages for each method.

    Option #1: Copy of Code Base and Database for Every Site

    This option requires multiple copies of the ecommerce platform code base, and multiple database instances connected to each code base. The stores could even be installed on different servers. This solution isn’t a true multi-store architecture, but it’s certainly the first stop for a quick and dirty approach to deploy multiple stores.

    The advantages to this method are:

    • Special template logic doesn’t have to be written per site — the …

    ecommerce interchange rails spree

    Rails 3 remote delete link handlers with Unobtrusive Javascript

    Brian Gadoury

    By Brian Gadoury
    February 28, 2012

    I recently encountered a bug in a Rails 3 application that used a remote link_to tag to create a Facebook-style “delete comment” link using unobtrusive javascript. I had never worked with remote delete links like this before, so I figured I’d run through how I debugged the issue.

    Here are the relevant parts of the models we’re dealing with:

    class StoredFile < ActiveRecord::Base
      has_many :comments, :dependent => :destroy
    end
    class Comment < ActiveRecord::Base
      belongs_to :user
      belongs_to :stored_file
    end

    Here’s the partial that renders a single Comment (from the show.html.erb view for a StoredFile) along with a delete link if the current_user owns that single Comment:

    <%= comment.content %> -<%= comment.user.first_name %>
    <% if comment.user == current_user >
      <%= link_to 'X', stored_file_comment_path(@stored_file, comment), :remote => true, :method => :delete, :class => 'delete-comment' >
    <% end  ->

    Here’s a mockup of the view with 3 comments:

    At first, the bug seemed to be that the “X” wasn’t actually a link, and therefore, didn’t do anything. Clicking the “X” with Firebug enabled told a different story. There …


    javascript jquery rails tips

    Liquid Galaxy at the World Oceans Summit

    Gerard Drazba

    By Gerard Drazba
    February 24, 2012

    Jenifer Austin Foulkes, Product Manager for Google Ocean contacted End Point for the purpose of using Liquid Galaxy as a presentation platform at ocean-centric conferences around the world. The World Oceans Summit was held at the Capella Singapore Resort, February 22nd through February 24th, 2012 and Liquid Galaxy was there: World Oceans Summit

    Josh Tolley of End Point specially developed a Google Earth tour for the Liquid Galaxy featuring Hope Spots:

    “Hope Spots are special places that are critical to the health of the ocean, Earth’s blue heart.”

        —from the Sylvia Earle Alliance website

    The Underwater Earth Seaview Project was unveiled for the first time in Singapore. Liquid Galaxy showcased some of the amazing panoramas created by the project. The panoramas are beautiful in the immersive format that a Liquid Galaxy provides.

    “We’re on a mission to reveal our oceans. Why? Because the biggest threat to life in our oceans is the fact that it is out of sight and out of mind.”

        —from the Underwater Earth website

    Gap Kim from Google Singapore worked hard to get approvals to bring a portable Liquid Galaxy to the World Ocean Summit and also to have it subsequently installed at …


    visionport event

    Spring authentication plugin

    Josh Tolley

    By Josh Tolley
    February 24, 2012

    One of our clients regularly deploys Pentaho with their application, and wanted their users to be able to log in to both applications with the same credentials. We could, of course, have copied the user information from one application to another, but Pentaho, and the Spring system it uses for authentication, allows us to be much more elegant.

    Spring is often described as an “application development framework”, or sometimes an “Inversion of Control container”, which essentially means that you can redefine, at run time, exactly which objects perform various services within your application. That you have to navigate a bewildering and tangled web of configuration files in order to achieve this lofty goal, and that those files suffer from all the verbosity you’d expect from the combined forces of XML and Java, normally isn’t as loudly proclaimed. Those inconveniences notwithstanding, Spring can let you do some pretty powerful stuff, like in our case, redefining exactly how a user gets authenticated by implementing a few classes and reciting the proper incantation in the configuration files.

    Spring handles most of the plumbing in the Pentaho authentication process, and it all starts …


    java pentaho casepointer

    Downloading CSV file from Django admin

    Szymon Lipiński

    By Szymon Lipiński
    February 22, 2012

    Django has a very nice admin panel. The admin panel is highly extensible and there can be performed really cool enhancements. One of such things is a custom action.

    For the purpose of this this article I’ve created a simple Django project with a simple application containing only one model. The file models.py looks like this:

    from django.db import models
    from django.contrib import admin
    
    class Stat(models.Model):
        code = models.CharField(max_length=100)
        country = models.CharField(max_length=100)
        ip = models.CharField(max_length=100)
        url = models.CharField(max_length=100)
        count = models.IntegerField()
    
    class StatAdmin(admin.ModelAdmin):
        list_display = ('code', 'country', 'ip', 'url', 'count')
    
    admin.site.register(Stat, StatAdmin)

    I’ve also added a couple of rows in the database table for this model. The admin site for this model looks like this:

    Now I want to be able to select some rows and download a CSV file right from the Django admin panel. The file should contain only the information about selected rows.

    This can be done really easy with the admin actions mechanism. Over the table with rows there is the actions …


    django python

    Perl, UTF-8, and binmode on filehandles

    Greg Sabino Mullane

    By Greg Sabino Mullane
    February 21, 2012

    Original image by avlxyz

    I recently ran into a Perl quirk involving UTF-8, standard filehandles, and the built-in Perl die() and warn() functions. Someone reported a bug in the check_postgres program in which the French output was displaying incorrectly. That is, when the locale was set to FR_fr, the French accented characters generated by the program were coming out as “byte soup” instead of proper UTF-8. Some other languages, English and Japanese among them, seemed to be fine. For example:

    ## English: "sorry, too many clients already"
    ## Japanese: "現在クライアント数が多すぎます"
    ## French expected: "désolé, trop de clients sont déjà connectés"
    ## French actual: "d�sol�, trop de clients sont d�j� connect�s"

    That last line should be very familiar to anyone who has struggled with Unicode on a command line, with those question marks on an inverted background. Our problem was that the output of the script looked like the last line, rather than the one before it. The Japanese output, despite being chock full of Unicode, does have the same problem! More on that later.

    I was able to duplicate the problem easy enough by setting my locale to FR_fr and having …


    perl unicode

    World IPv6 Launch: 6 June 2012

    Jon Jensen

    By Jon Jensen
    February 17, 2012

    For any of our readers who don’t know: The classic Internet Protocol (IPv4) supported around 4 billion IP addresses, but it recently ran out of free addresses. That the addresses would eventually all be used was no surprise. For more than a decade, a replacement called IPv6 has been under development and allows practically unlimited addresses.

    Last year there was a one-day trial run called World IPv6 Day. Our own Josh Williams wrote about it here. It was the first major attempt for mainstream websites to enable dual-stack IPv4 and IPv6 networking, so that both the “old” and “new” Internet could access the same site. It was intended to bring to the surface any problems, and it went very well – most people never knew it was happening, which was the goal.

    World IPv6 Launch is 6 June 2012 – The Future is Forever

    This year there’s a much bigger event planned: World IPv6 Launch, and this time IPv6 is meant to stay on. Google, Facebook, Yahoo!, Bing, and many other major sites are participating. A big advance over last year’s event is that many ISPs and vendors of home networking gear are also participating. That means it won’t just be a test that classic IPv4 still works for people alongside IPv6, but that for some customers, native IPv6 …


    hosting ipv6 networking

    Tracking down PostgreSQL XYZ error: tablespace, database, and relfilnode

    Greg Sabino Mullane

    By Greg Sabino Mullane
    February 14, 2012

    One of our Postgres clients recently had this error show up in their logs:

    ERROR: could not read block 3 of relation 1663/18421/31582:
    read only 0 of 8192 bytes

    Because we were using the tail_n_mail program, the above error was actually mailed to us within a minute of it occurring. The message is fairly cryptic, but it basically means that Postgres could not read data from a physical file that represented a table or index. This is generally caused by corruption or a missing file. In this case, the “read only 0 of 8192” indicates this was most likely a missing file.

    When presented with an error like this, it’s nice to be able to figure out which relation the message is referring to. The word “relation” is Postgres database-speak for a generic object in the database: in this case, it is almost certainly going to be a table or an index. Both of those are, of course, represented by actual files on disk, usually inside of your data_directory. The number given, 1663/18421/31582, is in the standard X/Y/Z format Postgres uses to identify a file, where X represents the tablespace, Y is the database, and Z is the file.


    The first number, X, indicates which tablespace this relation …


    database postgres
    Previous page • Page 153 of 223 • Next page