Database seeding can be a pain to perform and end up very clumsy. Seeding is a process required in the majority of web applications – either for stress testing or just to generate a reasonable sample of test data during testing. Laravel 4 already has database seeding and migrations built in, which of course is great. However, the functionality to generate the actual sample data is lacking. Enter Faker – a package, available via composer. The author describes this better than I can:
Faker is a PHP library that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.
Continue reading Laravel 4 Database Seeding with Faker
I’ll keep this purposely short. I’m just in the process of attempting to transfer a basic 3 page static “Talktalk business website”, with a contact form from TalkTalk Business to my own hosting provider. This should be an easy task and a task I can do blindfolded for a tiny static website consisting of 3 pages.
My client asked TalkTalk for a copy of the site’s files (which will consist of a couple of html files and a single server side script to process the contact form). Nothing ground breaking by any means.
Continue reading TalkTalk Business Websites – A Brief Encounter
Opencart have implemented product filters as of 1.5.5. In my opinion, category level product filters are a much needed feature and something Opencart has been lacking for a while. However, in true Opencart style, to date their documentation/announcement is completely lacking, simply citing “Product Filters” as a new feature – even their demo store still uses Opencart 1.5.4, meaning you won’t even be able to see the amazing new Opencart product filters in action!
Continue reading Opencart 1.5.5 – Product Filters
Counter Cache (or Counter Cache Columns) is the term coined when adding a column to data tables in order to keeps track of aggregate data in an application. The term “cache” is used because the application has no need to perform costly count queries. It can simply read the value of the “count column”. This practice is less costly when compared to performing separate database queries. The worst case scenario, where the application has database queries within a loop is avoided too.
Continue reading Counter Cache
A Different take on the normal “Website Transfer Guide” …
Taking over, or inheriting responsibility for an existing website happens to any web designer or developer at some point. In theory, website transfers sound extremely minor and insignificant – take a backup of the site, re host and away you go. As a result, if you Google something generic like “transfer web site” you’ll get lots of guides that are technically correct but rarely work in theory, as external factors have a big part to play. For instance, look at the website transfer guide of 123-reg.It appears transferring a site is a case of following a couple of basic points. It really isn’t! In reality, taking responsibility for a website is an absolute minefield and deceptively complex. A website transfer guide should reflect these complexities. What follows are some points to consider, from the view of a web developer when doing just that.
Continue reading Website Transfer Guide – Common Pitfalls & Solutions
Opencart theme development, in it’s current state is flawed in my opinion. Opencart is a great platform for any type of ecommerce store, having a plethora of features for users and a low entry point for developers. As a result, Opencart has plenty of themes available for download, just take a look on Themeforest. Occassionally, to test out various things out I’ll install such themes locally. More often than not the theme will break the store completely, or render parts of the site completely broken.
9 times out of 10 the issue will be down to the theme developer not sticking to basic Opencart theming guides – they’re very basic to say the least. The main point to note is that Opencart, like other ecommerce platforms, uses a fallback technique on the “default” theme. So, for example, if Opencart doesn’t find a template for a category listing page, it will fallback to the template from the default theme. If the latter is not adhered to, and it isn’t – look at some of the so called “premium” themes out there, it makes upgrading very, very painful. There are theme developers out there that are copying over a files for the sake of it, when no changes are made. If your theme literally only has changed the color/layout of the footer, apart from the default stylesheet folder, image folder and header template you only need the footer.tpl in your theme folder.
Continue reading Opencart Theme Development – My Opinion
CodeIgniter’s validation library is amazing out of the box and will save any developer an absolute ton of time. However, as CodeIgniter is an MVC framework it’s validation library does encourage data validation directly in controllers – which of course for the “MVC Nazis” out there is against strict MVC principals. So, data validation should strictly happen at the model layer, not in the controller. Moving data validation to the model has a few benefits – it allows your application to follow to coveted “Fat Model, Skinny Controller” pattern and allows you to validate other data types (not just posted data). Again, you can technically keep things neat by saving your validation rules to a config file and keeping validation in the controller, but that still breaks the MVC principals.
Continue reading Validate Data within A Model using CodeIgniter and MY_Model
There are a plethora of reasons to use a good base model (also called CRUD Model, MY-Model) for all your CRUD operations in a CodeIgniter (or any) application. Amongst many, a base model will boostrap all models it extends, keep your application as “DRY” as possible and speed up general development. Codeigniter has a pretty neat active record implementation, but you do tend to repeat a lot of the boring database stuff when writing models. In my opinion, you’d be insane not to use a good base model. There are many out there, but I use the amazing base model from Jamie Rumblelow (it deserves and SEO Link before you ask!).
Continue reading Why Codeigniter Base Models Rock
It’s been fairly common news for a while now that the age old Yell.com offer web design services, or “Yellsites” as some have coined it. There’s been a lot written about this fact, with some people citing lots of reasons why Yell websites are evil. There also a fairly in depth post that goes on to actually explain why the author dislikes yell.com websites over here. Additionally, there is also a big pool of annoyed people over at the infamous reviewcentre.
Personally, I think their sites will never set the world on fire, but at the end of the day Yell are tapping into a certain and very specific niche where the majority of their clients are very small businesses. It’s truly a case of you get what you pay for (even if a Yell.com website will cost you more overtime, which is what I assume is key Yell’s business model). For me, it’s great really, as seem to have lots of clients who currently have a Yell site, realise their site isn’t performing for them and want to move on – in I (or any other web person) step. Yell are clearly going down the bulk route with their sites being mass produced and based upon templates – at the end of the day they aren’t charging bespoke prices (in the short term anyway). I say fair play to them if they want to go down that route. This post isn’t in any way intended to knock Yell.com websites in the least. Although I’m not a fan of their apparent sales patter I keep hearing about where Yellsites say they have a special partnership with Google” or the “Did you know Yell.com is the most searched UK website” – for the record, both of those statements are frankly lies and total rubbish.
Continue reading Yell Websites and Template Recycling – A Review
I’ve come across an endless list of IE6 hacks and apparent fixes for the one browser that still causes many issues. This on is my favourite:
<!--[if IE 6]>
<meta http-equiv="refresh" content="0; url=http://www.microsoft.com/windows/internet-explorer/default.aspx" />
/* <![CDATA[ */ window.top.location = 'http://www.microsoft.com/windows/internet-explorer/default.aspx'; /* ]]> */
Drastic, yet very epic and takes seconds to implement. Solves all your IE6 problems