• DPCRadio: Under PHP’s hood December 21, 2010

    Johannes Schlüter

    PHP developers usually don't have to care about the inner workings of PHP and the Zend Engine as it simply works. This presentation will present some of the inner workings, like teaching the truth about references. Additionally it will present basics of PHP's opcode, the internal representation of a script, and it's consequences for opcode caching, autoloading and other related issues.

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • lessphp: PHP implementation of Less CSS December 17, 2010

    In a nutshell, Less CSS is a tool that lets you simplify your CSS style sheet and allows you to extend limited CSS functionality by introducing variables, mixins, operations and nested rules. The original implementation is written in Ruby; however, there is a PHP solution based on LESS CSS called lessphp. The definition of lessphp from the project's website is as follows:

    lessphp is a compiler that generates css from a small superset language that adds many additional features seen in other languages. It is based off an original Ruby implementation called LESS (http://lesscss.org/). For the most part, lessphp is syntactically compatible with LESS, with the exception of a few things...

    So why use lessphp? Because it can speed up CSS development, mainly by using the features of less. Your CSS code is much simpler, cleaner and nicely structured and better organised. The tradeoff is the fact that lesscss code needs to be compiled after each change is introduced. Moreover, on one project, we found out that web designers do not always write CSS with DRY principles in mind, and lack of time to work with designers on that introduced some problems.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Video Interview: Lorna Mitchell December 14, 2010

    With the Call for Papers open and the for the Dutch PHP Conference 2011, it seems like a good time to bring in this interview from last year's host, Lorna Mitchell. Watch this short video for her impressions of the overall event, and some top tips for getting your talks accepted this year!

    Video Interview: Lorna Jane Mitchell from Ibuildings on Vimeo.

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Announcing the Dutch PHP Conference 2011 December 8, 2010

    It's that time of year again! For the fifth year in a row, Ibuildings is organising the Dutch PHP Conference, and the new website is back online at http://www.phpconference.nl. The event will be held in Amsterdam from 19th to 21st May 2011. Thursday 19th is tutorial day, and Friday 20th and Saturday 21st are the main conference days. Mark those days in your calendar!

    Call for Papers

    The Dutch PHP Conference is *the* place to be when you want to broaden your PHP skill set, so we’re looking for high-quality, technical sessions from speakers who can cover advanced topics and keep our demanding audience inspired. Tutorials are 3 or 6 hours in length (note that 6 hours is our preference) and the standard conference sessions should be 45 minutes.

    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Unit Testing Databases with Zend Framework December 7, 2010

    Testing the database layer is a fundamental step during application development. It allows us to ensure that all data operations behave properly, without data loss or corruption. In this article, we are going to describe a simple way to test the database layer of our applications, using PHPUnit database classes, Zend Framework extensions and some custom reusable code to facilitate the process for all the domain models. This article will walk you through, step by step, for each of the tasks needed to achieve this.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Using MongoDb in PHP Applications November 30, 2010

    After recently attending the MongoUK conference in London, it is clear that MongoDB is fast finding application amongst cutting-edge web developers. As a relatively new concept for persistence, NoSQL (Not Only SQL) and more specifically document-oriented databases, such as MongoDB, are starting to enter the web applications landscape. Its strength lies in speed and ability to cope with dynamic data, making its goals align closely with requirements of many websites around today.

    This tutorial will show you how to incorporate MongoDB into new or existing object-oriented applications, by showing how to interact and integrate with applications and how to deploy applications using MongoDB. Credit for this approach must go to Matthew Weier O'Phinney who spoke on this topic at the DPC 2010 conference in June. I would suggest reading this tutorial if you are considering using MongoDB for an application and are looking for a starting point on which to build an idea of its features. Alternatively, you may also be interested in this tutorial if you've found yourself getting tied to the persistence layer in the past and are looking for ways to reduce that technology lock-in. If you've implemented MongoDB into many of your systems, then maybe this tutorial will, open your eyes on a new way of integrating it. Whatever your background, if you understand object-orientation and want to start using MongoDB, then this tutorial is for you.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Microsoft Certified Applications: SilverStripe November 24, 2010

    Microsoft recently certified the first open source web application to run on Windows Server 2008 R2. That application was SilverStripe, a Content Management System (CMS) originally developed by a team in New Zealand. There are many excellent CMS and other open source web projects but Microsoft saw something they liked in SilverStripe. Ibuildings are certified SilverStripe partners and have been working with it for quite some time, so I thought this was a great time to shed some light on this excellent product.

    SilverStripe has put a lot of work into achieving good performance on Windows and IIS, but it also works well on Linux or Mac Servers running open source web server software. There is also a wide variety of databases which SilverStripe supports including SQLServer, MySQL, Postgres and SQLite.

    What SilverStripe Offers

    Every web site has different requirements, but a CMS application aims to provide a lot of the features needed while at the same time being easy to customise and extend. Database abstraction is particularly suited to a CMS since the schema is fairly simple and based around a page. SilverStripe has an advanced abstraction layer with an elegant syntax that effectively frees you from defining the database schema and instead lets you define models. In this article, I will show you how to define a new page type with custom fields by extending the Page model, and we'll also take a look at some of the areas that are particularly nicely done by Silverstripe.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: The Art of Scalability November 23, 2010

    Lorenzo Alberton

    Having invested time and energy into your application,
    nothing could be more exciting than seeing it gain popularity, and seeing your user base grow. However the success of your application could also turn into your worst nightmare! What if the site cannot cope with the load and collapses under its own weight?

    The ability to grow (and shrink) according to the needs and the available resources is an essential part of designing applications. In this talk we'll cover the fundamental elements of scalability, including aspects involving people, processes and technology. With sound and proven principles and some advice on how to shape your organisation, set the right processes and design your application, this session is a must-see for developers and technical leads alike.

     

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Optimising HMVC Web Applications for Performance November 16, 2010

    In an earlier article written for techPortal, , the Hierarchical-Model-View-Controller architecture was explored. Using an example web application called Gazouillement and the Kohana Framework, the article investigated how structuring code using an HMVC methodology can help overcome some common scalability challenges in complex software architectures. The article concluded by demonstrating the relative simplicity of horizontally scaling the HMVC Gazouillement example application, after analysis of the execution bottlenecks.

    The previous article was intended to be a reintroduction to HMVC for the web application era. HMVC is not a new concept: it was originally referenced in a Java World article over ten years ago and based on an idea that dates back forty years. Todays rise in notoriety of HMVC might be due to the popularity it is enjoying in modern frameworks. Or it could be that the similarity in size and scope of modern web applications to their desktop cousins has given developers reason to revisit the HMVC architecture. Given the present interest in HMVC, this is a great time to explore the subject further and answer a few of the questions arising from the previous article.

    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Conference Report: FOWA London 2010 November 15, 2010

    This year I was lucky enough to attend the 1st day of the FOWA conference. With experience of language-specific technical conferences, I was expecting talks of the same calibre as I have seen at PHP events, but geared towards front-end technologies. However I was a little disappointed. The conference was aimed mainly at business people, with most talks delivered at a high-level, focusing on trends in the industry. I saw very little code throughout the day.

    Easily the most interesting talks I saw were two about HTML5 and related technologies: Michael Mahemoff's HTML5: The Platform Apps Have Been Waiting For and Bruce Lawson's impromptu talk, Standards Yay!
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: Stress-free deployment November 9, 2010

    Rob Allen

    This talk will concentrate on the various strategies you can use to ensure that developing and releasing new features to a live website is stress-free. Firstly we will look at how organising your source code into branches can provide confidence and allow for features to go-live in any order. We will the consider the mechanics of deploying a new version of the website to the server, ensuring that we can repeat the process the same way every time. Finally we will look at how to roll back a deployment easily and quickly when something goes wrong.

    The slides are over on Rob's site if you want to follow along with the talk.

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Creative MVC: Meet the ViewModel Pattern November 2, 2010

    In this article we will introduce a powerful new tool in the arsenal of developers - the ViewModel. This provides MVC applications a natural location for presentation logic and lazy functionality while maintaining the segregation between the layers of responsibility within the code. It allows designers access to data and methods they need, while hiding aspects that aren't needed at view level.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: Plant Pyrus in your system - A guide to a plugin system. October 27, 2010

    Helgi Thormar Thobjoernsson

    Anyone that has written a Content Management System or a blog system, has quickly realised that people will want to extend the functionality of the application and thus the developer has to embark on a journey to write a plugin system with everything that comes with that.

    One of the biggest parts of any plugin system is the part that deals with discovery, installation, upgrading, dependency handling, infrastructure and other equally boring things. An essential part of any plugin system yet everyone dreads writing it, and few actually take on the task of writing it.

    With Pyrus (the new PEAR installer) these tasks will not only be easy to do but also a joy. By embedding Pyrus in your application with its lavish new APIs you can use a tried and tested solution that hundred of thousands of people use every day on their command line, but you will be able to provide it right IN your tool, in your admin area, properly integrated with the layout and dictating the flow of the processes so it fits the ideologies of your software. Learn how to provide your users with fantastic experience, at the low price of using in the Pyrus installer in your application instead of trying to write your own solution.

    Update: The slides for this talk are also available

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • The EAV Data Model October 21, 2010

    One problem many developers encounter while defining and analysing data requirements is the situation where a number of different attributes can be used to describe an object, but only few attributes actually apply to each one. One option is to create a table with a column representing each attribute; this is suitable for objects with a fixed number of attributes, where all or most attributes have values for a most objects. However, in our case we would end up with records where majority of columns would be empty, because attributes may be unknown or inapplicable.

    To solve the above problem you can apply the EAV (Entity, Attribute, Value) model. This pattern is also known under several alternative names including "object-attribute-value" model and "open schema". In the EAV data model only non-empty values are stored in database, where each attribute-value (or key-value) pair describes one attribute of a given entity. EAV tables are often characterized as "long and skinny"; "long" refers to multiple rows describing entity, and "skinny" to the small number of columns used. In this article we will describe the EAV model, its implementation, and show applications of using it in the real world - including examining how Magento makes use of this pattern.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: Advanced Git October 12, 2010

    David Soria Parra

    Besides OpenSource projects like the Linux Kernel, OpenJDK or Perl, companies increasingly use distributed version control systems like Git and Mercurial. Their unique features makes new and modern work-flows possible, which are particularly useful in agil development.

    The talk gives a introduction to the advanced features of Git and the fundamental concepts of modern distributed version control systems.

    The slides are also available

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Understanding APC October 7, 2010

    APC is a performance-enhancing extension. It should not be confused with a magic pill, although having it around does provide a positive impact on performance! If configured incorrectly, APC can cause unexpected behaviour, however when implemented optimally APC can be a useful weapon in your arsenal. In this post we will examine APC's capabilities and it's application both as an opcode cache and in its less common usage as a data cache.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Video Interview: Thijs Feryn September 28, 2010

    This year at the Dutch PHP Conference, we managed to capture some of our speakers on camera, and asked them about their talks and about the event itself. Read on for the video interview we did with Thijs Feryn - you can also get the audio from his talk PHP Through the Eyes of a Hoster which was published here on techPortal recently.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Building a Continuous Integration Server for PHP with Hudson September 20, 2010

    Continuous integration (CI) is fast becoming part of the standard development model for creating high quality software, and rightly so. Delivering reliably high quality software is in the best interest of yourself, your manager and your clients. This is not an article about Continuous Integration itself, but will introduce Hudson, a key tool, and may help you to implement your own CI strategy. Last year we also published a tutorial on phpUnderControl, which is another CI tool that you might like to consider.

    Hudson itself is written in Java, however the folks over at hudson-ci.org have made its installation as pain-free as possible. This article will focus on setting up Hudson on a debian-based platform however the general outline will be useful even for use on a different platform; there are packages available for other linux distributions over on the hudson-ci.org website.
    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: PHP Through the eyes of a hoster September 14, 2010

    Speaker:Thijs Feryn

    Most PHP talks are given from the point of view of people who work on a project internally. These people are mostly developers, designers, project managers, QA's and there's even an occasional business man who shares his opinion on PHP. I would like to talk about PHP through the eyes of a hoster. Eventually a project is going to get hosted on the internet and in a lot of cases an external webhosting company will take care of that. As the support manager and open source evangelist of a large hosting company, I will bring you a story about how a hoster experiences the wonderful world of PHP, about what can go wrong for customers and about how a webhoster can solve these issues.

    This tale describes everyday situations in 45 minutes where PHP is a blessing as well as a burden. This includes:

    • Ensuring harmony on a shared server
    • Migrating applications from other servers
    • Dealing with hacked websites
    • Boosting performance
    • Teaching customers how to make their apps scale
    • Solving code issues serverwise
    • Securing applications
    • Patching, debugging & profiling

    If you wish, you can also download the slides from this session

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: Web services for consumer devices September 7, 2010

    Speaker:Melanie Rhianna Lewis
    A web service is an API provided by a site that allows a remote application to access data and use functionality without having to 'act like a web browser'. Consumer devices, such as a smart phone, set top box or games console, often do not have a form factor that allows the easy use of an interactive web site but do allow the download of custom applications which use web services provided by such sites.

    The talk will describe how a web service targeted at consumer devices can be implemented. It will look at the different methods of calling remote functionality such as SOAP, XML-RPC, JSON and restful services. It will also consider the limitations of consumer devices, memory restrictions, communications bandwidth restrictions, and so on that have to be considered when designing a web service aimed at consumer devices. Finally it will have a brief look at how to make a service secure.

     

    Slides: http://www.cyberspice.org.uk/downloads/%20WebServicesForConsumerDevices-20100612.pdf

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: Designing for Reusability August 25, 2010

    Speaker: Derick Rethans
    This session explain a certain set of design issues for library code that either is often extended, or created with extending and inheritance in mind. There are many ways how a library can be designed to make it both easier to test, as well as for external developers to consume and use. This presentation provides techniques for doing so.

     

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: Technical Debt August 17, 2010

    Speaker: Elizabeth Naramore
    Technical debt is something that most project teams or independent developers have to deal with - we take shortcuts to push out releases, we don't focus on quality, deadlines need to be met, quick fixes slowly become the standard. Whatever the reason, if we don't manage our technical debt (not unlike financial debt), before too long our applications are technically bankrupt, and we are forced to completely refactor and start anew.

    In this talk, we will discuss what technical debt is, when it is acceptable and when it isn't, and strategies for effectively managing it, both on an independent and team level. We'll talk about how it affects the entire team and how to work through minimizing it, as well as working effectively as a team to address it.

    (see also the slides from this talk: http://naramore.net/slides/DPC10-techdebt.pdf)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • DPCRadio: APC & Memcache the High Performance Duo August 3, 2010

    Speaker: Ilia Alshanetsky

    APC and Memcache both provide effective mechanism for caching data within PHP applications to improve performance and latency. This talk will cover when to use both of these tools to get the most of your apps and which workflows better suit each tool.

     

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • Creating Pluggable Applications Using Data Sourcing July 12, 2010

    The first versions of most projects are self-contained applications. They work as-is, without any connection to other applications. It often isn't until a later release that there is focus on interoperability. They build import/export functionality into their applications or add webservices that allow other applications to interact with it.

    While this is an important steps toward application interoperability, there is often an important step missing. Most interoperable applications lack one final feature that allows full seamless integration: data sourcing, or the ability to get the data it needs from elsewhere.

    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus
  • The Test Driven Challenge – Winners and Results July 8, 2010

    In May and June we ran another one of our PHP coding contest. We love to play with PHP and offer people a chance to show off their coding skills in exchange for prizes!

    This time the contest revolved around creating a class that satisfies a given unit test case.

    The test case contained tests for 7 mathematical operations. The contestants did not only have to guess the actual operation, but also provide a class that implements the operation in as few lines as possible.

    Two contests for the prize of one

    Contest 1 - Smallest solution adhering to decent coding practices

    The main contest was just that; because there was some discussion on twitter regarding the 'fewest lines as possible' we updated the contest with a rule about 'good coding practice' and we ignored coding standard issues; so a brace on the same line or on the next line was considered equally good, and we accepted both regular if constructs and the ternary operator. Some contestants removed all methods from their code and replaced it by a single __call construct, but our jury decided that that is not considered a decent coding practice.

    (more...)

    Digg This
    Reddit This
    Stumble Now!
    Buzz This
    Vote on DZone
    Share on Facebook
    Bookmark this on Delicious
    Kick It on DotNetKicks.com
    Shout it
    Share on LinkedIn
    Bookmark this on Technorati
    Post on Twitter
    Google Plus