This is something that I have personally struggled with since I became a programmer. Proper planning can make or break an application. Without it, a program can become very difficult to manage, update and scale. Your method of organization and inheritance needs to be thought out from the beginning before it is ever implemented in code. I can attest that trying to simply plan a project as you go and write each function as it comes will result in terrible code, poor functionality, higher bandwidth costs and a lack of scalability.

Now I am no project planning expert but maybe this will help out some beginners and get them pointed in the right direction. I am going to break this up into a few different sections and try to keep it as general as possible to cut back on confusion.

Step 1: Brainstorming

Grab a pen and paper (or Notepad) and start brainstorming the different features and sections your application will have. Start off with the main ones. If it is a blog then some major sections might be posting, comments and administration. Once you’re satisfied, take one section at a time and dig a little deeper. The comments section, for example, will need a submission form, spam protection, form validation and error output, etc. Keep refining this data until you are brain-dead. I would even recommend revisiting it every day for a couple days. This will ensure that you have covered all angles.

Step 2: Planning

So now you have a document (or two) outlining the different features and sections of your website. Now this is far from a spec. We need this data to be more organized and easy to read. Enter mind maps. A mind map is sort of like a web diagram that you did in grade school. They can be very difficult to do on paper (be sure you have plenty of eraser). I recommend using a program called FreeMind, which is a great program that allows you to get the process and functionality of your program on paper in a clear and concise manner.

When creating your MindMap, start off with a single node that is your software’s name. Then think of what a user can do from the home page and consult your brainstorming documents. Once you have your first level of functionality mapped out, go into each node one-by-one and input the different elements from your brainstorming documents. Repeat this process until you have everything mapped out. The software makes it very easy to move stuff around later on and has plenty levels of undo so don’t worry about simple mistakes.

Step 3: Functionality

Every advanced programmer has their own method for mapping out functionality (even if they just keep it all in their head). It is a good idea to map out each function separately (or even just the main functions). I personally recommend UML (Unified Modeling Language); there are many programs out there that use UML and provide a great environment to create your models.

Step 4: Database

The database is the backbone of your program. Mapping out a database can be difficult, however, proper database planning can cut back on hours of extra programming and stress. The best program I have found for mapping database architecture is Notepad or FreeMind. Start from your most important table (most likely your user table) and build from there. All tables usually interact with one another eventually. If you’re starting with a user table, write down all the fields, data types, etc that go with it, using your MindMap and UML diagrams as a resource.

Step 5: Execution

Start with your database. This is the foundation of any application. Build it slowly and feel free to revise as you go along (but be sure to update your database diagram). Once you are satisfied and your database is 100% (at least according to your diagram) go ahead and fill in some sample data. You can add data later as you need it.

Using your MindMap and UML diagrams as a guide, start by creating key site functions and classes. If you are creating a blog then you would have a class that handles user data and common user functionality. The same goes for comments, form validation, managing users, etc.. Once you have built as much as you can without the need for a front-end, then you can proceed.

A decent template system is always a good idea, it does take out a lot of the work involved and make it easy for non-technical designers to implement functionality within their designs. Not to mention updating and adding UI later on is much easier.

Using your template system, start to piece together the site in a logical order. It might be a good idea to begin with your administration area but that can really depend on the program and how advanced the administration is. When you get to the front-end, start with your login and session management, then proceed to sign-up, then move onto the users profile.

A good piece of advice I have heard is to code in the order in which a user would use your site or application. I interpret this loosely as this can change drastically depending on what your program calls for.

Originial Source from: http://blog.code-purity.com/archives/2009/7/3/planning_your_php_project_the/

One of the great things about MySQL is the superior innovation model that’s used to deliver database server software. Rather than relying solely on internal engineers who create and maintain a piece of software (as in a traditional software company), MySQL partners with the millions of active users across the world who take advantage of the open source model and daily extend the MySQL server to do new and pioneering things. These innovations can then be submitted to MySQL AB, tested, validated, and rolled into the database server so everyone can benefit from the creativity of the very active MySQL community. More …

This article is the first installment of a five-part series of articles covering xdebug, a free and open source swiss army knife tool for PHP developers. xdebug is a PHP extension created by Derick Rethans, one of the PHP core developers. This week, we will show you how to install xdebug and introduce you to some of the basic features. In the subsequent parts of this article series, we will have a closer look at one of xdebug’s main features, namely tracing, profiling, debugging, and code coverage. More …

Introduction

Because of the limitations of HTTP, it is difficult to monitor the status of files as they are uploaded via HTML forms. While other programming languages have built-in methods to monitor file uploads, PHP does not. This article shows how to implement such a solution in PHP.

In order to achieve this, the APC (Alternative PHP Cache) PHP extension is required, as well as PHP 5. Specifically, APC 3.0.13 or newer and PHP 5.2 or newer are required for the code in this article to work. We will cover installation of APC in the next section. It is assumed you already have a working PHP 5.2 installation.

In this article we will develop a solution that will allow users to upload a file from their computer using HTML forms. We will then determine the progress of the upload while it is in progress using Ajax, and display the status to the user. More …

Introduction

APC (Alternative PHP Cache) is a PHP opcode cache. It stores PHP pages in RAM and reduces hard disk activity. This makes a real difference to the performance in Moodle, and you should be able to achieve a 50% increase in system capacity and your CPU will be 50% less busy.

This guide is for installation of APC on a Windows server. The instructions have been tested on a Windows 2003 server, and they should also be applicable if you are using Windows XP as a test server. More …

Optimizing with APC

Opcode caches save energy, expenses, improve overall user experience on web sites, and it’s often one of the simplest optimizations to implement. This article will explain the basics of installing, configuring, and tuning an opcode cache for PHP, the Alternative PHP Cache (APC). More…

Last year’s article on hard
core SEO tips
proved to be the most popular article on SEO Theory. It
still receives a respectable amount of traffic. I was stuck for a topic
that morning and decided to challenge people’s preconceptions
about search engine optimization.

All year long I’ve thought to myself, “I wish I could
do THAT again”. Well, I can’t promise you’ll have as
much fun with these tips as with last year, but they do represent a
year’s reflection on the lessons we can learn from challenging the
ideas that have become so strongly fixed in the collective SEO wisdom.

20 More Hard Core SEO Tips – The List

  1. Create a Web site with unscannable copy and get each page to
    rank for at least 2 expressions.
  2. Create a Web site without using targeted keywords in your copy
    and get each page to rank for at least 2 expressions.
  3. Create a web site using tables for page layout, ensuring that
    the text is linearized, and get each page to rank for at least two
    expressions.
  4. Inspire 5 other sites to link to a press release WITHOUT using
    a press release distribution service AND without asking for links.
  5. Compare your server log referrals for Yahoo! and Microsoft
    Search to your Google Analytics referral data for those search
    services.
  6. Create a splash/intro page. Use only Flash or only an image
    (no embeds) and promote it to the top of four (4) competitive queries.
  7. Obtain 10 FREE 1-way, value-passing links from separate
    domains that you don’t own for a single site in one hour without
    using link dropping scripts, forum signatures or posts, blog comments,
    or social media sites.
  8. Reverse the polarity of your Web site. If it’s mostly
    graphics, make it mostly text. If it’s mostly text, make it
    mostly graphics. If it’s mostly user-generated content, make it
    mostly your own unique, coherent, original content. If it’s not
    mostly UGC, make it mostly UGC.
  9. Create a schmuck list. Add to it every time you come across
    someone who posts self-promotional comments on blogs, forums, or social
    media sites; every time you read a blog post from someone who equates
    blogs with social media; every time you come across someone who says
    links are the most important part of SEO; every time you see someone
    attribute TrustRank to Google. Add yourself to the list each time you
    agree with the schmucks until you learn to stop being a schmuck.
  10. Find 3 active SEO forums where people don’t talk about
    Google PageRank updates.
  11. Write down your 10 best previously unshared SEO tips, tricks,
    techniques, or tactics. Lock the list away and never share it on the
    Web or at a conference.
  12. Register a domain. Write a humorous essay on how to brush your
    teeth, or how to wash your car, or how you felt the first day of
    school. Put the essay on the domain. Forget about the site.
  13. Create a Web site in a language you’ve never used
    before. Get the Web site indexed in appropriate search engines. Get the
    site to rank for at least 2 expressions.
  14. Write an essay or tutorial on SEO. Do not discuss on-page
    factors, links, or social media.
  15. Ask 3 kids aged 7-10 what their favorite sites are and why
    they like those sites. Ask 3 kids aged 25-30 what their favorite sites
    are and why. Find 3 points in common between the 2 groups.
  16. Design a new navigation system for your Web site. Install it
    without removing the old navigation system.
  17. Create a forum signature that links to one of your
    competitors’ sites in a flattering, sincere way.
  18. Find 10 obscure, well-written Web sites that are NOT blogs and
    which contain thoughtful articles that interest. Send an email to each
    site owner that sincerely compliments their site 5 times. Use 250 words
    or less. Do not mention your own site or explain what you do.
  19. Create a 10-doorway page site. Get the pages to rank in Google
    without invoking a penalty or filter.
  20. Pick an expression no one searches for. Within 6 months,
    generate at least 100 natural queries for that expression.

20 More Hard Core SEO Tips – The Explanations

Professional search engine optimization keeps moving forward. If you
don’t continue to challenge yourself, you stagnate. And people who
stagnate in this industry are uncompetitive.

Create a site with unscannable copy. Why?
Because most Web content is not scannable. Because most Web news copy is
not scannable. “Write for the Web” is a non-sensical
expression. You write for people, not the Web, and people will read
anything that is well-written and engaging. People will stop and read
anything that captures their interest. They’ll leave anything that
bores them. Making your copy scannable doesn’t make it less
boring.

Create a site without targeting keywords. Put
yourself in everyone else’s shoes. You were once there. Create a
site about a topic and focus on the topic. Toss out all your SEO
knowledge and skill. Once you find out what the pages naturally attract
search referrals for, optimize for those referral expressions.
Let go of your preconceptions about what you SHOULD be doing and learn
to respond to what people are searching for.

Create a site using tables for page layout. One
of the dumbest ideas ever passed around the SEO community was that
it’s easier to design search-friendly content with CSS/DIVs than
with tables. If you don’t know how to make a clean page design
using tables, you don’t know enough about tables to form an
opinion on their use in Web design. Tables
were originally used for page layout
, and CSS1 was NOT intended for page
layout. Search optimizers need to know how to optimize page designs
without acting like illiterate code snobs.

Inspire 5 other sites to link to a press release.
SEOs like to use press releases and it shows: SEO press releases tend to
be ugly, unimaginative, and brutally distributed across as many Web PR
services as possible. If you can create an elegant, attractive, and
interesting press release, you’ll get more visbility and traffic
than from the cookie-cutter model the SEO community loves.

Compare server log referrals to Google Analytics.
Once you’ve seen just how much information Google Analytics fails
to report to you, you’ll wonder why you ever liked it in the first
place. Google does not seem to know what search referrals from other
engines look like. But YOU need to know what they look like.

Create a splash/intro page. I love these pages.
SEOs shake in their boots, roll their eyes, and get out their
floppy-eared SEO tutorials when they run into splash pages. Piffle.
Learn how to optimize for anything and you’ll quit rolling your
eyes needlessly. You should be able to optimize any Flash-only site in
your sleep.

Obtain 10 free links. I worded this as carefully
as I could, so as to rule out all the cheap tricks SEOs tend to rely
upon. Resourceful SEOs can get those links quickly. How resourceful are
you?

Reverse the polarity of your Web site. SciFi
reference included for Todd Friesen’s eye-rolling enjoyment.
However, as an SEO technician you need to be able to optimize any kind
of content. The content style you favor is the one you least need to
practice optimizing.

Create a schmuck list. You’ll never get
out ahead of the crowd if you keep agreeing with all their mediocre
ideas. When you learn to distinguish your own creativity from other
people’s rehashed SEO tips, you’ll magnify your SEO powers
tenfold. Question everything other SEOs say. Challenge them to back up
their points with facts, data, and proof. Most of them CAN’T.

Find 3 active SEO forums …. This will
teach you to recognize just how easily the SEO community obsesses over
nonsense. Your schmuck list will explode while you are on this quest.

Write down your 10 best tips. If you don’t
have 10 SEO ideas you haven’t shared with other people on the Web,
you need to shut up. If you still have 10 unshared ideas, you have an
“SEO secret”. It’s your competitive advantage. So shut
up anyway and enjoy the knowledge that only you possess. Stupidity is
its own reward, and people who give away their competitive advantage are
just plain stupid.

Build and forget a domain. Check three things
after six months: search referrals, inbound links, and the time people
spend on your site. Repeat the evaluation at the 12-month mark. If you
learn nothing from the experiment, start over again and keep doing it
until you learn something — anything.

Build a site in another language. You have no
idea of the SEO lessons this one experiment will teach you.

Write an SEO tutorial …. If you cannot
think of anything to put into an SEO essay that doesn’t mention
on-page optimization, links, and social media MUCH YOU HAVE YET
TO LEARN
about SEO, my young Padawan.

2 Age Range Focus Groups. You’ll be amazed
at how much you’ll learn about successful Web site promotion just
by asking people what they like and why they like it. But comparing the
answers you get from different demographic groups helps you see the core
values that matter most.

Add a second navigation system to your site.
Think this is unnecessary? Then find a way for the second navigation
system to add value. Search engine optimization adds value. Objections
just get in the way of doing what SEOs need to do best: add value.

Promote a competitor through your forum
signature
. Do this for six months and you’ll eventually stop
obsessing over how many links the other guy has.

Compliment other sites about their content. This
will teach you how to treat Webmasters (who have never heard of you
before) like they were human beings rather than link slaves waiting to
do your bidding.

Create 10 doorway pages. Search engines
don’t hate doorway pages, just spammy doorway pages. Every page on
your site can act like an entry page. This exercise will teach you the
difference between Web spam and content. Script kiddies won’t
understand.

Build a query space. If you can generate 100
natural queries (that excludes all rank-checking) for an unused
expression, you can help any web site build its search referral traffic.
(NOTE: This exercise won’t make clients and prospects any smarter
— just you.)

20 More Hard Core SEO Tips – What They Mean

Last year I tried to challenge people’s assumptions about
HOW to optimize for search. This year I want people to think about what
“search engine optimization” really means.

It’s not about links. It’s not about social media.
It’s not about being tricky and deceptive.

Search engine optimization gives us the power and the freedom to
participate in search as searchers, publishers, and even as indexers. We
have to use that power responsibly, but more importantly we have to
appreciate it for what it is: knowledge that most people don’t
possess.

This is a list of ten useful articles about database design which includes some tips and practical suggests to help you to design quickly databases for your web projects.

The list includes some tips to define relationships-entities model, common database design mistakes, database normalization, how to use PHP and SQL to create tables and relationships and a correct approach to define relationships between tables. More …

Next Page »