• 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

    Ruby on Rails versus CakePHP: A Syntax Comparison Guide

    Steph Skardal

    By Steph Skardal
    November 26, 2010

    My time is typically split between Interchange and Spree development, but in a recent project for JackThreads, I jumped back into CakePHP code. CakePHP is one of the more popular PHP MVC frameworks and is inspired by Rails. I decided to put together a quick syntax comparison guide between CakePHP and Rails since I occasionally have to look up how to do some Rails-y thing in CakePHP.

    Basic

    Ruby on Rails CakePHP
    MVC Code Inclusion Rails is typically installed as a gem and source code lives in the user’s gem library. In theory, a modified version of the Rails source code can be “frozen” to your application, but I would guess this is pretty rare. CakePHP is typically installed in the application directory in a “cake/” directory. The “app/” directory contains application specific code. From my experience, this organization has allowed me to easily debug CakePHP objects, but didn’t do much more for me.
    Application Directory Structure
    app/
      controllers/ models/ views/ helpers/
    lib/
    config/
    public
      javascripts/ images/ stylesheets/
    vendors/
      plugins/ extensions/
    
    controllers/
    models/
    views/
      layouts/ elements/ ...
    config/
    webroot/
    tmp/
    plugins/
    vendors/ …

    php ecommerce ruby rails

    Liquid Galaxy Sysadmin+ Wanted

    Benjamin Goldstein

    By Benjamin Goldstein
    November 18, 2010

    This position has been filled. See our active job listings here.

    End Point Corporation is hiring for a motivated and creative GNU/Linux systems administrator. The work will primarily involve installing, supporting, maintaining and developing infrastructure improvements for Google Liquid Galaxy systems. Liquid Galaxy is an impressive panoramic system for Google Earth and other applications. Check it out!

    Responsibilities:

    • Set up and upgrade Liquid Galaxy Systems at client locations. (Some travel is required, including internationally.)
    • Do on site and remote troubleshooting and support.
    • Participate in ongoing work to improve the system with automation, monitoring, and customizing configurations to clients’ needs.
    • Provide first-class customer service.

    Requirements:

    • BS degree or equivalent experience
    • At least 3 years of experience with Linux systems administration
    • Strong scripting skills in shell, and also Python, Ruby, Perl or PHP
    • Proven technical troubleshooting and performance tuning experience
    • Excellent analytical abilities along with a strong sense of ownership and urgency, plus the drive and ability to rise to new challenges and master new skills
    • Awareness and knowledge about security issues
    • Good communication skills
    • The basic physical …

    jobs-closed linux visionport sysadmin

    Utah Open Source Conference 2010 part 1

    Jon Jensen

    By Jon Jensen
    November 12, 2010

    It’s been about a little over a month since the 2010 Utah Open Source Conference, and I decided to take a few minutes to review talks I enjoyed and link to my own talk slides.

    Magento: Mac Newbold of Code Greene spoke on the Magento ecommerce framework for PHP. I’ve somewhat familiar with Magento, but a few things stood out:

    • He finds the Magento Enterprise edition kind of problematic because Varien won’t support you if you have any unsupported extensions. Some of his customers had problems with Varien support and went back to the community edition.

    • Magento is now up to around 30 MB of PHP files!

    • As I’ve heard elsewhere, serious customization has a steep learning curve.

    • The Magento data model is an EAV (Entity-Attribute-Value) model. To get 50 columns of output requires 50+ joins between 8 tables (one EAV table for each value datatype).

    • There are 120 tables total in default install—​many core features don’t use the EAV tables for performance reasons.

    • Another observation I’ve heard in pretty much every conversation about Magento: It is very resource intensive. Shared hosting is not recommended. Virtual servers should have a minimum of 1/2 to 1 GB RAM. Fast disk & …


    conference database ecommerce javascript open-source perl python ruby security magento

    (Image|Graphics)Magick trick for monitoring or visualizations

    Kiel Christofferson

    By Kiel Christofferson
    November 3, 2010

    It’s a good time for all when we start poking fun at the visual assault of stereotypical PowerPoint presentations. On the other hand, when data is presented in an effective visual format, human brains are able to quickly grasp the ideas involved and pick out important pieces of information, such as “outliers”.

    Without getting into a long trumpeting session about the usefulness of data visualization (there are plenty of books on the subject), I’d like to jump directly into a Magick trick or two for creating simple visualizations.

    Let’s imagine we’ve got a group of machines serving a particular purpose. Now let’s say I want quick insight into not only the internal activity of all 8 machines, but also what the systems believe they are sending to their displays.

    With a little magick (of the ImageMagick or GraphicsMagick variety), we can save ourselves from running “ps” and “free” and from having to be in the same room (or the same country) as the system we’re checking up on.

    First, let’s organize some simple output from the system:

    $ echo -en "$(hostname) GPID: $( pgrep googleearth-bin ). APPID: $( pgrep -u root -f sbin/apache2 ).\nCRASH: $( ls -1 ${HOME}/.googleearth/crashlogs/ | …

    graphics linux visionport monitoring

    Speeding up the Spree demo site

    Jon Jensen

    By Jon Jensen
    November 2, 2010

    There’s a lot that can be done to speed up Spree, and Rails apps in general. Here I’m not going to deal with most of that. Instead I want to show how easy it is to speed up page delivery using standard HTTP server tuning techniques, demonstrated on demo.spreecommerce.com.

    First, let’s get a baseline performance measure from the excellent webpagetest.org service using their remote Internet Explorer 7 tests:

    • First page load time: 2.1 seconds
    • Repeat page load time: 1.5 seconds

    The repeat load is faster because the browser has images, JavaScript, and CSS cached, but it still has to check back with the server to make sure they haven’t changed. Full details are in this initial report.

    The demo.spreecommerce.com site is run on a Xen VPS with 512 MB RAM, CentOS 5 i386, Apache 2.2, and Passenger 2.2. There were several things to tune in the Apache httpd.conf configuration:

    • mod_deflate was already enabled. Good. That’s a big help.
    • Enable HTTP keepalive: KeepAlive On and KeepAliveTimeout 3
    • Limit Apache children to keep RAM available for Rails: StartServers 5, MinSpareServers 2, MaxSpareServers 5
    • Limit Passenger pool size to 2 child processes (down from the default 6), to queue extra …

    ecommerce hosting optimization performance rails spree

    Keep the Aisles Clean at Checkout

    Mark Johnson

    By Mark Johnson
    October 26, 2010

    It’s no mystery in ecommerce that checkout processing must flow smoothly for an effective store. Providing products or services in high demand doesn’t mean much if they cannot be purchased, or the purchase process is so burdensome that would-be customers give up in frustration.

    Unfortunately, checkout also tends to include the most volatile elements of a web store. It virtually always involves database writes, which can be hindered by locking. It often involves real-time network access to 3rd-party providers, with payment transactions being at the top of the list. It can involve complex inventory assessments, where high concurrency can make what’s normally routine highly unpredictable. Meanwhile, your customers wait, while the app sifts through complexity and waits on responses from various services. If they wait too long, you might lose sales; even worse, you might lose customers.

    Even armed with the above knowledge, it’s all too easy to fall into the trap of expediency. A particular action is so logically suited to be included as part of the checkout routine, and a superficial evaluation makes it seem like such a low-risk operation. That action can be tucked in there just after …


    ecommerce interchange performance tips

    Spree on Rails 3: Part One

    Steph Skardal

    By Steph Skardal
    October 25, 2010

    A couple of weeks ago, I jumped into development on Spree on Rails 3. Spree is an open source Ruby on Rails ecommerce platform. End Point has been involved in Spree since its inception in 2008, and we continue to develop on Spree with a growing number of clients. Spree began to transition to Rails 3 several months ago. The most recent stable version of Spree (0.11.2) runs on Rails 2.*, but the edge code runs on Rails 3. My personal involvement of Rails 3 based Spree began recently; I waited to look at edge Spree until Rails 3 had a bit of momentum and until Rails 3 based Spree had more documentation and stability. My motivation for looking at it now was to determine whether End Point can recommend Rails 3 based Spree to clients and to share insight to my coworkers and other members of the Spree community.

    First, I looked at the messy list of gems that have built up on my local machine throughout development of various Rails and Spree projects. I found this simple little script to remove all my old gems:

    #!/bin/bash
    
    GEMS=`gem list --no-versions`
    for x in $GEMS; do sudo gem uninstall $x --ignore-dependencies -a; done
    

    Then, I ran gem install rails to install Rails 3 and dependencies. …


    ecommerce rails spree

    Spree on Rails 3: Part Two

    Steph Skardal

    By Steph Skardal
    October 25, 2010

    Yesterday, I discussed my experiences on getting Rails 3 based Spree up and running. I’ve explained in several blog articles (here and here) that customizing Spree through extensions will produce the most maintainable code – it is not recommended to work directly with source code and make changes to core classes or views. Working through extension development was one of my primary goals after getting Spree up and running.

    To create an extension named “foo”, I ran rails g spree:extension foo. Similar to pre-Rails 3.0 Spree, a foo directory is created (albeit inside the sandbox/) directory as a Rails Engine. The generator appends the foo directory details to the sandbox/ Gemfile. Without the Gemfile update, the rails project won’t include the new foo extension directory (and encompassed functionality). I reviewed the extension directory structure and files and found that foo/lib/foo.rb was similar to the the *_extension.rb file.

    New
    require 'spree_core'
    

    module Foo class Engine < Rails::Engine

    config.autoload_paths += %W(#{config.root}/lib)
    
    def self.activate
      # Activation logic goes here.
      # A good use for this is performing
      # class_eval on classes that are defined
      # …

    ecommerce rails spree
    Previous page • Page 172 of 220 • Next page