Mugo Web main content.

In-depth insights on content, code, and creativity

mysqldump alternative: MySQL backups with Percona Xtrabackup

Many hosting companies will take care of file system and database backups for you.  We have a few clients where we have file system backups configured, but database backups have to be handled manually, since the database is "live data".  Often we can just configure a cronjob that runs mysqldump so that a database snapshot is stored to a file and thus regularly backed up when the file system backup is run.  However, sometimes you have a perfect storm where mysqldump is too heavy for the server (causing severe slowdowns or even crashing some services), even if run in the least intensive way (such as with the --quick flag) and at a low traffic time: partially due to lack of system resources and a large database.

LEARN MORE

Mugo news: April 2012

The start of 2012 has been full of exciting events for Mugo, with customer site launches, extension releases, eZ Publish community initiatives, tutorials, and more. Here is a list of what we've been up to lately.

LEARN MORE

eZ Publish template basics: the big picture

If you're relatively new to eZ Publish, you might know about siteaccesses, design, extensions, and overrides. You can build a basic extension, edit a template file, and write a simple full view override rule. However, you might have trouble putting this all together. You might struggle with whether to put your template in the "standard" design or a custom site design folder. You might be confused as to whether to put your template in the "override/templates" folder or the "templates" folder, and/or the overall template path in the first place. This article will take a step back for a high-level look at how eZ Publish loads extensions, particularly design extensions, as well as how to find out which templates are being used and how to properly override them.

LEARN MORE

Why Mugoers like working at Mugo

Mugo Web is not a large company that offers perks such as an indoor gym, a company hockey pool, a big travel budget, or a fridge stocked with fresh fruit and snacks every day (although we do our best on an individual basis to share good food with each other!). That said, we love working at Mugo, for reasons that might not be so obviously communicable on our website. Here are our raw responses to an internal e-mail thread that asked "What are 3 things you like about working at Mugo?"

LEARN MORE

eZ Ecosystem Conference March 19-20 in Berkeley, California

Mugo Web is jointly hosting the first eZ Publish event of the year in North America with Granite Horizon. We are currently accepting talk proposals and training topic requests.

LEARN MORE

Contributions to the eZ Publish code base via GitHub

The open source content management system eZ Publish moved its code repository to GitHub near the end of 2010. Although eZ Publish's code base has been open source since its first version in 1999, before the move to GitHub, it was not an easy process for the community to contribute to the code.  Mugo Web has enjoyed contributing to the eZ Publish code by making pull requests and hopes to make more in the future!

LEARN MORE

Exact image resizing in eZ Publish with custom image filters

eZ Publish comes with a useful set of image settings, and has a powerful framework within which you can define custom filters to be executed by the image handler. In this article, we'll show you how to make use of a custom ImageMagick filter to achieve exact image sizes.

LEARN MORE

Mobile browser detection and redirection in eZ Publish

When you are setting up a mobile website separate from the main website, one of the elements that tends to be an after-thought is main-to-mobile site redirection. This article goes through some of the considerations regarding creating a mobile setting, and main-to-mobile site redirection specifically.  It explains how to use Apache Mobile Filter as one option to facilitate mobile device detection and redirection.

LEARN MORE

Using a custom static cache handler for offline wiki sync in eZ Publish

Mugo has an internal wiki to share and store various information for all team members. Previously we used mostly text files saved in Dropbox, which actually worked quite well. However, we are now using a more powerful solution that combines eZ Publish, a custom static cache handler, and Dropbox.

LEARN MORE

Subdomain rewrite rule strategy: whitelisting

Here is a quick how-to for a strategy to prevent duplicate content across domains and subdomains of the same site by "whitelisting" discrete domains and redirecting all other requests to the main domain.

LEARN MORE

Separate Star Rating aggregate value from "your rating"

eZ Publish comes standard with the Star Rating extension, which adds the ability for users to rate content on your website. It works well out of the box. By default, the interface to rate an article is combined with the aggregate rating on an article. Here's a quick example on how to tweak that functionality so that "your rating" is separate from the aggregate rating.

LEARN MORE

eZ Publish DFS - high performance considerations when serving image aliases

This blog post is about how eZ Publish serves content images -- also called image aliases -- in a DFS cluster setup.  The eZ DFS setup is the recommended and most common solution for high traffic eZ Publish sites that are run off multiple servers.  However, it still has some room for improvement when it comes to serving images. In this post, we describe how eZ Publish currently serves image aliases, along with its downsides and some alternative approaches. At the end, we describe a possible implementation with some example performance gains.

LEARN MORE

Google Page Speed Service and eZ Publish loading performance

Google Page Speed Service is an interesting new offering for websites. It is currently free, but with limited availability for the time being. It claims up to 20 - 60% speed-up in overall page load. It accomplishes this by routing all site traffic through Google, which will automatically perform some optimizations such as minifying CSS and JavaScript and serving some page assets through its own content delivery network (CDN). This is quite interesting, and there is even a site that runs a test to show you how your site performance will change if you use the service. We ran this test on a few client sites, and certainly there was up to a 25% performance improvement on some; however, for others the Google-optimized version was slower!

LEARN MORE

Expanded eZ Publish hosting requirements on shared server environments

We've worked with clients who use multi-server, fully redundant, clustered environments, and we've worked with clients in unique shared environments. If you are trying to determine the suitability of a LAMP web hosting environment for eZ Publish, there are a few simple requirements, which are well documented. In a dedicated or virtual hosting environment with full shell access, setup can be a breeze. However, sometimes the client has a specific shared web server that they must use, whether due to contractual limitations or various other internal constraints. Here is a list of extra eZ Publish requirements and complications that we've seen in shared hosting environments -- something you can check before proceeding!

LEARN MORE

Country, State and Page break questions in eZ Survey

In addition to the Matrix question type, we have added these question types: Country (dropdown list of countries), State (similar to country but with USA states and Canadian provinces) and Page break (enabling paginated surveys) to the eZ Survey extension.

LEARN MORE

Creating and executing eZ Publish tasks with Mugo Queue

The Mugo Queue extension is a generic framework for queuing specific tasks in eZ Publish. It stores tasks in the ezpending_actions table and can execute such tasks in batches. It includes a ready-to-use task for re-building the eZ Find search index, whether for an entire site or only specific parts of a site. (You can build your own fetch function to re-index, say, just objects of a certain content class.) This blog post explains how to develop your own task.

LEARN MORE

New Matrix question type for eZ Survey

eZ Survey is an eZ Publish extension that enables you to quickly and easily build surveys on a site. Its power is in its "ezsurvey" datatype, which enables editors to add different questions (of different question types) per object, without having to create separate content classes for each different survey. The Mugo Survey Addons extension adds a Matrix question type to the default question types available with eZ Survey.

LEARN MORE

Creating dashboard widgets in eZ Publish: disk space example widget

In eZ Publish 4.3 and higher, the default Administration Interface landing page after a user has logged in is the dashboard. On this dashboard is a listing of widgets, such as a list of the latest edited content. It is very simple to add a new widget to this dashboard, and we've built an example widget -- showing the server's disk space information -- to illustrate this.

LEARN MORE

Create your own Firefox search engine plugin

Do you frequently use the Google, Wikipedia, and other search boxes in Firefox, typically in the top right of the window? Ever wanted to add your own for a site that isn't on the directory? Here's a quick and dirty guide to creating your own Firefox search engine plugin, using the api.jquery.com search as an example.

LEARN MORE

Cross-siteaccess internal links in eZ Publish

Among the many advantages of hosting multiple sites on the same eZ Publish installation is the ability to create internal links. eznode:// and ezobject:// links preserve the accuracy of the generated URL links even when content is moved around or renamed within any of the sites. (Of course, you can also use such links even when you host only one site.) However, out of the box, eZ Publish is not siteaccess-aware when generating cross-siteaccess links. For example, if your site sitea.com is contained within the subtree /sitea and your site siteb.com is contained within the subtree /siteb, internal links from sitea.com to siteb.com would end up linking to "sitea.com/siteb/article" instead of "siteb.com/article". While the user can be redirected with rewrite rules, it still creates a confusing user experience. Here's a simple solution jointly developed with another eZ Partner Granite Horizon that results in generated links that are siteaccess-aware.

LEARN MORE

Custom eZ Publish VAT handler: state- or province-based taxes

For us, the introduction of the HST in BC means more complex cross-province tax rules. For our software service judgmentcalculator.com we previously charged all Canadians 5% GST. Now we must charge our customers a different tax rate depending on the province that they live in. Thankfully, with eZ Publish as our webshop platform, we were able to quickly implement a custom VAT (value added taxes) handler.

LEARN MORE

Growing again

We're still growing. This is becoming a theme.

LEARN MORE

2009 Mugo year in review

2009 was a busy year at Mugo, and we were actually a bit surprised to find that we had worked on over 40 different websites and web applications. eZ Publish has enabled us to provide a wide variety of powerful and flexible web solutions. Before 2010 speeds by, we'd like to take a moment to look back at a sampling of the types of solutions we've built (and continue to build), as well as a few other successes from the past year.

LEARN MORE

Translating eZ Publish websites: a simple tool for template/script translations

eZ Publish is well-known as a Content Management System with built-in multi-language features. To present different translations of pages, eZ Publish uses 3 major components: content translation, content class translation, and template / script translation. In this post, we will explain these 3 components and introduce a script to help translate strings in templates.

LEARN MORE