Press "Enter" to skip to content

Category: Life: Work and Techy

Magento: Associating customer accounts

If you run a Magento e-commerce store, you may occasionally find existing customers placing orders without being logged into their account. This isn’t a problem usually, unless the customer is one of those vary rare ones which actually logs into the customer frontend to track/check their order(s). If they weren’t logged in, they won’t see the ecommerce order.

So how do you fix this? Well, there is a Magneto module available to do this, but (as is increasingly common in the Magento world) it costs $99. Or there is my way which is free and requests two SQL statements:

UPDATE sales_flat_order, customer_entity
SET sales_flat_order.customer_id=customer_entity.entity_id
WHERE
sales_flat_order.customer_email=customer_entity.email

UPDATE sales_flat_order_grid,sales_flat_order
SET sales_flat_order_grid.customer_id=sales_flat_order.customer_id
WHERE
sales_flat_order_grid.increment_id=sales_flat_order.increment_id

Done.

Techy: Dedicated server prices compared

We’ve just started our annual “provider audit” and our first “task” was to look at comparable dedicated hosting providers to make sure we are getting a package for us at the lowest reasonable rate. Our requirements are:
* Minimum 4Gb RAM
* 4 CPU Cores at 2.0Ghz or above
* 2x 500Gb hard drives
* RAID 1 or RAID 10 (software or hardware)
* 1Tb monthly data transfer limit
* Minimum of 4 IPv4 IP addresses
* Europe hosting (UK preferred)
* CentOS/RedHat operating system
* Ideally cPanel, IPv6 and remote “console” support
* Not “Cloud/VPS” (we’re going to be using the server for shared hosting and shared hosting on shared hardware just seems silly)

Our budget for this was £200+vat. Here’s what we found:
View in new window.

We haven’t yet made a decision (I must admit, we’ve been extremely happy with Memset for quite a few years now) – it is interesting what all the companies offer. Please remember that this spreadsheet is incomplete in parts (the ? should show where), doesn’t actually assess the providers networks or what support package is offered (i.e. there may be an “unlisted” reason one costs £100pm more than another!).

Is there any one you think we’ve missed?

Command Line awk Regular Expression for Apache logs

For code testing against a live site, I’ve had to extract all urls from an Apache access file – but how to do this from the Linux command line?

The secret is to use two regular expressions (regexp) in a “awk” command – for example:

cat examine.txt | awk 'sub(/.*(GET|POST) \//,"")&&sub(/ HTTP.*/,"")'

This will pipe the contents of the file examine.txt to AWK which will run two regular expressions. The first one will remove the “phrase” “GET /” or “POST /” and anything before it – and the second will remove the “phrase” ” HTTP” and anything after it. It’ll then give you a nice list of URLs to test.

Oh – and if you’d like it to produce a nice “curl friendly” file of just URLs starting “xyz.php” from host example.com then:

cat examine.txt | grep "GET /xyz.php" | awk 'sub(/.*(GET|POST) \//,"http://example.com/")&&sub(/ HTTP.*/,"")' > curl.txt

should do the trick (combine that with cat curl.txt | xargs -n1 -i curl {} > /dev/null to test)

Techy: Setting up IPv6 on Linux Mint

On my Linux Mint 14 HP Laptop, I need connectivity to the “new” IP v6 internet – however, neither our office router (a 4 year old Draytek Vigor 2820n) or our ISP (BT Business Infinity) support IPv6: so how do I get access?

Well, first of all, I’ve signed up for an account via Sixxs.net (who provides what is called a “4to6 tunnel”) and waited for my account to be approved (it took about 3 days). I then requested a tunnel type of “Dynamic NAT-traversing IPv4 Endpoint using AYIYA” from the UK provider Goscomb and waited for that to be approved (which took about 8 minutes).

Once I had the tunnel, I needed to configure my laptop. A quick “sudo apt-get install aiccu” installed the AICCU package – which is the “SixXS Automatic IPv6 Connectivity Client Utility” (it’s also available for Windows, Mac, FreeBSD and many other platforms).

I then modified /etc/aiccu.conf by running “dpkg-reconfigure aiccu” which prompted me to select my Tunnel Broker (SixXS), my SixXS username (in the format WXYZ-SIXXS) and my SixXS password. It then automatically restarted aiccu for me.

Finally, I needed to configure my DNS to use IPv6 resolvers. I tend to use OpenDNS for DNS provision (if your nameservers are 208.67.222.222 and 208.67.2220.220 then you do as well), but I needed IPv6 ones. Luckily, OpenDNS provides the following IPv6 DNS resolvers 2620:0:ccc::2 and 2620:0:ccd::2. Add them to my /etc/resolv.conf file in the format:
# OpenDNS ipv6
nameserver 2620:0:ccc::2
nameserver 2620:0:ccd::2
# OpenDNS ipv4
nameserver 208.67.222.222
nameserver 208.67.220.220

Go to the IPv6 test site at http://www.test-ipv6.com/ and my score is 10/10! Woot!