Thứ Năm, 29 tháng 10, 2009

Web Multi Level Marketing System MLM software


A back-end system that calculate comission, handling of users, billing and ordering while allowing the members access to real time information
about their sales, comissions and history through a user friendly front-end, that will make their jobs a breeze.

System Overview:

System Features (Core Package):

o Support multiple members' group (e.i. MLM 1 account or MLM 4
accounts)
o Able to record renewal and resign member
o Able to view team organization by up-line or by sponsor
o Unlimited downline in system
* Billing & Orders
o Support Invoice & Credit Note
o Allow TOP-UP when over end-of-period
o Support BV & PV for each item
o Multiple Tender Payments (e.g. Cash, Credit card, T/T,
coupon & cheque)
* Membership Module
o Allow member view profit & team organization
o Allow member view buying history & manage coupon on-hand
o Internet/Intranet support
* Comission Module
o Support 2 commission plans e.g. Daily bonus & Monthly bonus
o Allow to calculated bonus for any period
o Allow to transfer commission payment to ERP/Direct bank

Optional Features:

* Inventory Module
o Multiple Warehouse support
o Support set-item/Substitution item
o Allow to define Unit Price for different period
o Inventory Report e.g. Stock card, Dead-stock list, Stock
On-Hand, etc.

* E-Commerce Module
o Catalogue Online
o Shopping Cart
o Online-Payment
o Integrated with member module in MLM system

Built-In Commission Plan:

* Daily Commission Plan (Plan-A)
o 1 time only and apply to use this plan with specified period
o Required Min. BV in invoice
o Commission in this plan consist on:
+ Introduce: 30% (pay to sponsor)
+ Expanding Business: 10% when active more than 2 lines
(pay to up-line & roll-up though root)
o This plan is calculated daily

* Monthly Commission Plan (Plan-B)
o Allow member to apply this plan anytime that they want
o Provide POSITION for each member
o Concern PS (Personal Sales), PGS (Personal Group Sales) and
APV (Accum. PV) for promote
o Some items are paid by month, some items are paid by year
(accum. By month)

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Web Design



The Internet, being one of the most valuable, cost effective and efficient ways to reach and impact possible customers world wide, has been the IT area most ill used, due to the assault of non professional who call themselves "web designers".

The sad reality

Not many people understand still the power and potential of Internet. A media channel, open to the world, 24 X 7, multilingual, multimedia, without limitations. Yet, because of its "proximity" to our daily life, people tend to underestimate it. If given the choice, most would invest on air time on TV rather than on a professional website, even though TV reaches only a local audience, in a single language, for just a few seconds a day.

Every company can afford to have a professional website. The only obstacle remains to be the people seating on managerial positions who still don't understand the power they can unleash by investing on a professional website.

Why Blueball?

For a simple reason: we respect the great media that internet is. Blueball understands the web is a powerful tool and an ally for any company trying to achieve success in all aspects of their business.

We have been involved on the web services for more than 10 years, so we have the experience as well as the technical and *marketing knowledge* to explode its full potential.

Technology used in a purposeful way

Blueball understands technology should be a platform to serves human purposes. We use the newest, most powerful to help our customers achieve
their goals. In this case, to create a website that informs, attracts and serves your intended market. Blueball will guide you to choose the
right technology and we will develop it, top quality.

Once technology is out of the way, Blueball will help you to produce all the aesthetical, visual and informative elements of your website. We
will arrange them in a synergetic manner to maximize its potential.

Some of our main services are:

* Overall design
* Logo design
* Browsing design
* Logic and distribution
* Creation of images and graphics (2D and 3D)
* Selection of pics
* Professional photography (Available in Thailand and Vietnam only)
* Content selection
* Content creation
* Text correction and translation (English, French, German, Spanish,
Thai and Vietnamese only)

Some problems you maybe facing now:

* You already have a website but instead of helping you is harming you. Poor design, lack of browsing logic, lack of content, misspellings and unfriendliness to use are some of the main enemies of sites developed by people who are not true professionals
* You have a nice looking page, but it doesn't serve its purpose. Without content and focus, a website is good for nothing
* The wrong technology was used on your website. Many developers use some technologies because they like them, not because they are good to achieve their customer's goals (i.e.. Flash technology)
* Your company doesn't have a corporate image. Your business cards, power point presentations, letterhead and website look all different
* Your logo is not professional: your website won't be either. Even the most beautiful website will not benefit from the wrong logo
* Your website is full of grammatical and spelling mistakes. The contents are not well developed. How could you earn someone's trust if you cannot control your own quality?
* Your contents in foreign languages sound unreliable or even unintelligible for native speakers
* Your website is out of date. The last maintenance and update of your website goes so far back in time you cant even remember if it ever happened

Our solution:

* We provide a design service that will show your company at its best. Internet is the only channel where you can look better than a competitor 100 times your size. Our designers team come from different backgrounds to suit the needs of your products/services and country.
* According to your market we will develop in England, Mexico, Thailand or Vietnam.
* We can develop your content and marketing texts; organize and display the content the best way possible. We also have translations services, for English, Germany, Spanish, French, Thai and Vietnamese. We put your ideas into words, and then we send the text to London, Berlin, Mexico City, Thailand, or Saigon to get them revised by marketing professionals, who help retain the spirit of the words on each foreigner language.
* The website we create can be the center of your corporate image. We can develop for you the rest of your image, logo, stationary and presentations so your company has a solid image once and for all.

Acquiring web design methodology:

* *Analysis*: research the customers needs and detect what are the solutions that best fit his needs. Determine strengths and weaknesses
* *Strategy*: determine the specific goals of the design for the website, we will determine the best way to proceed, what is there to use, to improve or to develop brand new, keeping focus on marketing. Determine the right technologies for your needs
* *Transition*: costing, contract negotiation and initiation
* *Deployment*: Up loading the website to your server
* *Training*: according to the kind of tool, one or more of our trainers will help your employees so they get familiar with the application
* *Maintenance*: periodically check your website to keep it up to date
* *Warranty*: We will correct any hidden errors the coding may have as soon as possible, so it will not to affect your image or your business

Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Social Voting System - Software


So what is Social Voting System?

Social voting is a system that allows you to display your ideas or
upcoming designs on the web and get immediate feedback from the public.
Blueball's Social Voting System helps you build communities of people
who share similar interests.

What do I get out of people's commenting my designs?

* Using Social Voting System help you to confirm or modify current
prototypes
* Make your designs more marketable
* Minimize the risk of product rejection
* Minimize the risk of mass production with flaws on design or
functionality
* Recognize your natural markets
* Design more accurate marketing plans
* Build communities around common interests
* Bring down your ideas to the real world

Saving thousands

Taking and idea from the drawing table (or computer nowadays) to
production takes time and a lot of money. Modern materials require
molding that cost up to hundreds of thousands of dollars. That is a why
investing on a tool like Social Voting System makes sense: You can take
the public into your design considerations, so you can be sure that your
design has contact and acceptance in the real world.

How do I interact with my audience?

People can browse each one of the designs and ideas showcased. Using a
fast simple interface they can add comments on each one of your designs.
If you wish to receive their own ideas they can visit your website and
get a free account (user-password) to gain the right to publish their
own ideas on your Voting System.

Blueball's Social Voting System also allow people to subscribe to
mailing lists by products, so by the time you are ready to produce and
deliver, you already have a group of potential customers.

Social Voting System is a great tool to build communities around a
common interest. You can have your own and other people's designs and
voting for them.

Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Online Issue Tracker


Online Issue Tracker

Online Issue Tracker is a system that allows you maximum control over your projects with a simple visual interface that helps you have a grip on every person, every specification and every stage of the project, until completion is reached.

Why do companies need an Online Issue Tracker?

Most task and projects stretch on time. When tasks are done by more than 1 person, it is difficult and not cost efficient to call meetings even inside your own premises, imagine when you have o work with people in more than one place. The project and each process will go from one place to the other, backwards and forwards, being revised, updated, changed, etc, etc.

Online Issue Tracker is the tool you need to control your project and now at all times where the project is standing, who is working on what, all in a single screen.

Is it difficult to use?

Not at all. All our systems are created around usability. Blueball doesn't believe in systems that have to be studied for days until you can understand basic functions. If you cannot use it through basic simple logic and your prior experience with computers, then most mprobably you will not use it at all, therefore we fail on our pursue to satisfy our customers.

How can I trust it?

Our Online Issue Tracker was created to answer our own internal needs. Every day Blueball has to control projects using resources in many different countries, we needed a powerful, efficient, well thought tool that would help us to keep control over every single stage of our projects. This Online Issue Tracker did the job and it is still our main management tool both, internally as well as between us and our around
the world.



*Main characteristics:*

* Multilingual
* Templatable
* Ajax / One screen system
* Multiproject
* Project modules / sections
* Teams / user
* Task priority
* Allow task scheduling
* Easy multiuser serialization / searching
* Check assignments by team member or unassigned
* Include time planning and time attendance
* Immediate excel downloading
* Code repository by project to preserve knowledge
* Stay - logged technology
* Task filtering by priority, assigned to, module, status, reported
by, etc.

*Want to know more?* Please

*Want to be more *? Fill up a quick form so we know more about you.
Completing the registration form will take around 1 minute. You will need to supply a minimum of information so we can contact you in a more efficient way.

Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Document Management System software


Content management refers to the process of capturing, storing, sorting, codifying, integrating, updating and protecting any and all information.

Why companies need a Document Management System (DMS)?

One of the greatest problems of any company is to have up to date, safe information. It does sound simple, but it is a crucial part of a
company's process which is usually neglected or overlooked.

Main risks of handling documents:

* Information most be passed, but the document containing it, never reaches the staff who need to be informed (targets)
* The targets receive the document (first version) and they change it with authorization (second version), but failing to resend it
to all the other targets (version 1 and 2 circulating through your company).
* The targets receive the document and they change it without authorization (illegal version), spreading later the changed
document to other targets and leaving two existing documents with different information in your company (legal and illegal version
misinforming your staff).
* All intended targets get the first version of a document, but some fail to receive following updates.
* The person who created the document can loose, misplace or erase the original document.

Now, these may sound like small details, but imagine that the information you are passing is a crucial change of policies, or a price
list; misinformation can cost a company thousands of dollars per month or make it loose credibility or even customers.

Why Blueball's Document Management System (DMS)?

Our DMS is an advanced, versatile, web based system with collaboration tools that help companies manage their contents, documents, news,
information and files, enabling them to promote new, faster ways of group collaboration, acceleration of communication and share of knowledge.

Because this application is modular you can actually choose what parts of the application you really need today and what parts you may delay
until you truly need them, so you invest your money on what is necessary, nothing more.

Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Smart Workflow


Workflow refers to the automation of a business process, in whole or
part, during which documents, information or tasks are passed from one
participant to another for action, according to a set of procedural rules.

What is special about Blueball's Workflow?

* Our workflow is an activity flow controller
* Allows any kind of process to be followed and executed
* Workflow package is not application aware
* Application doesn't need to be aware of workflow package
* Workflow is activity independent; it is unaware of the tasked
performed
* Allows complex steps to be executed "multiscreen" and "interrupted
tasks"

Workflows tasks: For types or tasks are allowed:

* Automatic; the task is executed the moment that it's enabled
* Manual; the task is enabled by the flow and a work-item is placed
in user (authorized) inbox to be performed
* Time; the task is enabled by the flow and it's executed after an
specified time
* External; events that don't belong to the system such as
telephone, fax, email or other systems (this will normally require
the development of a task to capture them).

Workflow routing:

* Sequential
* Parallel
* Conditional
* Interactive

Workflows Splits and Joints:Execution of a workflow can:

* Split (more than one action follows)
* Join (more than one execution line was taken and they must be
finished before one step)

Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Thứ Tư, 28 tháng 10, 2009

Framework and Components



Framework and Components
F3.0 (Workflow Framework)

Blueball's Framework, F3.0 is a general application framework that
provides Rapid Application Development for templatable, skinnable,
multilanguage applications, that can be loosely integrated through and
independent workflow.

Blueball's new framework F3.0 is more orientated than ever to let you
start programming now!

The new features our latest version has over F2.0 are:

* F3.0 is and MVC (framework for rapid application development over PHP
* While F2.0 provided an event model similar to .net, F3.0 pushes
for a cleaner, more pure MVC
* F3.0 looks forward to reduce coding on presentation layer by
implementing re-usable view strategies
* F3.0 also looks for cleaner, purer OO code models

Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

System Development Service - Software


The Internet, being one of the most valuable, cost effective and efficient ways to reach and impact possible customers world wide, has been the IT area most ill used, due to the assault of non professional who call themselves "web designers".
The sad reality
Not many people understand still the power and potential of Internet. A media channel, open to the world, 24 X 7, multilingual, multimedia, without limitations. Yet, because of its "proximity" to our daily life, people tend to underestimate it. If given the choice, most would invest on air time on TV rather than on a professional website, even though TV reaches only a local audience, in a single language, for just a few seconds a day.
Every company can afford to have a professional website.
The only obstacle remains to be the people seating on managerial positions who still don't understand the power they can unleash by investing on a professional website.
Why Blueball?
For a simple reason: we respect the great media that internet is. Blueball understands the web is a powerful tool and an ally for any company trying to achieve success in all aspects of their business.
We have been involved on the web services for more than 10 years, so we have the experience as well as the technical and *marketing knowledge* to explode its full potential.
Technology used in a purposeful way
Blueball understands technology should be a platform to serves human purposes. We use the newest, most powerful to help our customers achieve their goals. In this case, to create a website that informs, attracts and serves your intended market. Blueball will guide you to choose the right technology and we will develop it, top quality.
Once technology is out of the way, Blueball will help you to produce all the aesthetical, visual and informative elements of your website. We will arrange them in a synergetic manner to maximize its potential.
Some of our main services are:
* Overall design
* Logo design
* Browsing design
* Logic and distribution
* Creation of images and graphics (2D and 3D)
* Selection of pics
* Professional photography (Available in Thailand and Vietnam only)
* Content selection * Content creation
* Text correction and translation (English, French, German, Spanish, Thai and Vietnamese only)
Some problems you maybe facing now:
* You already have a website but instead of helping you is harming you. Poor design, lack of browsing logic, lack of content, misspellings and unfriendliness to use are some of the main enemies of sites developed by people who are not true professionals
* You have a nice looking page, but it doesn't serve its purpose. Without content and focus, a website is good for nothing
* The wrong technology was used on your website. Many developers use some technologies because they like them, not because they are good to achieve their customer's goals (i.e.. Flash technology)
* Your company doesn't have a corporate image. Your business cards, power point presentations, letterhead and website look all different * Your logo is not professional: your website won't be either. Even the most beautiful website will not benefit from the wrong logo * Your website is full of grammatical and spelling mistakes. The contents are not well developed. How could you earn someone's trust if you cannot control your own quality? * Your contents in foreign languages sound unreliable or even unintelligible for native speakers * Your website is out of date. The last maintenance and update of your website g
oes so far back in time you cant even remember if it ever happened Our solution: * We provide a design service that will show your company at its best. Internet is the only channel where you can look better than a competitor 100 times your size. Our designers team come from different backgrounds to suit the needs of your products/services and country.
* According to your market we will develop in England, Mexico, Thailand or Vietnam.
* We can develop your content and marketing texts; organize and display the content the best way possible. We also have translations services, for English, Germany, Spanish, French, Thai and Vietnamese. We put your ideas into words, and then we send the text to London, Berlin, Mexico City, Thailand, or Saigon to get them revised by marketing professionals, who help retain the spirit of the words on each foreigner language.
* The website we create can be the center of your corporate image. We can develop for you the rest of your image, logo, stationary and presentations so your company has a solid image once and for all.

Acquiring web design methodology:
* *Analysis*: research the customers needs and detect what are the solutions that best fit his needs. Determine strengths and weaknesses
**Strategy*: determine the specific goals of the design for the website, we will determine the best way to proceed, what is there to use, to improve or to develop brand new, keeping focus on marketing. Determine the right technologies for your needs
* *Transition*: costing, contract negotiation and initiation
**Deployment*: Up loading the website to your server
* *Training*: according to the kind of tool, one or more of our trainers will help your employees so they get familiar with the application
* *Maintenance*: periodically check your website to keep it up to date
* *Warranty*: We will correct any hidden errors the coding may have as soon as possible, so it will not to affect your image or your business


Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

IT Outsourcing, Software outsourcing, IT Services & Outsourcing


Offshoring is the usage of manpower from a specialized external agency OUTSIDE YOUR COUNTRY to lower your cost due to cheaper labor, administration and training fees.
Apart from allowing your business to be more competitive, offshoring also let you concentrate on the business's core activities. (If you are in Thailand or VietNam, you can get oraccording to your needs).
We work while you sleep
One of the main benefits about offshoring is the "factory feeling" - 24 HOURS PRODUCTION - Your team comes back every morning to find the tasks they assigned to Blueball's team already waiting for them.
Real time teams
If your business requires it, we can also set up a team for you who can work for you in real time. Please contact us to dicuss specific conditions that may apply according to your time zone.
The language barrier?
All our people have good written and reading English skills.
Blueball understands though, communication is crucial when giving-receiveing orders, therefore, we can offer you a dedicated translators for every five to ten positions you outsource-offshore with us. Available languages now are: French, German, Spanish, Vietnamese and English. Other languages are available on request.
The managers you talk with are all fluent English speakers. Our CEO and CIO combined are fluent in German, English, French, Thai and Spanish and they are always available for negotiations.

Why Bluaball?
Blueball has been a PARTNER TO SUCCESS to a number of companies around the world. At some point, our clients had to INCREASE EFFICIENCY AND CAPACITY without having to engage on a massive internal growth. They suddenly had FLEXIBILITY to expand or shrink according to their workloads.
Blueball has developed a METHODOLOGY to control our internal processes: We can control our own people; and for you?
We developed an: You can control tasks and results in a simple, clear, screen: You are never out control.
Our policies and passion to please, translate in a 90% recurrence from our international. Most of them are Japanese transnational companies, so you know the degree of excellence we are accustomed to.
Manpower Quality
Blueball follows the principle of quality growth. We will no grow for the sake of quick profit endangering our quality and therefore our reputation. We prefer to steadily recruit people following a strict process of PROFILING, TESTING, SCREENING AND ENROLLMENT. We then induct the person to a mindset of service and commitment. Along the way, Blueball will "westernize" their working style by explaining cultural differences that are vital to deliver good results.

Communication
We offer crystal clear communication and a personal manager for your account as a minimum standard. Our top managers are always available to you to discuss any issue further.
Reasons to offshore
. High labor cost and taxes
. law that make it too risky and expensive to hire local work ship
. Have to increase capacity for a new project
. Have to change premises to grow
. Having projects that are delayed due to lack of personnel
. Incapacity to accept a new project due to lack of new technology
. Having projects that were incorrectly planned and more programmers need to assigned
. Having "stuck" projects your in-house team doesn't know how to solve
Reasons to change offshoring company
. Offhored programmers who lack of knowledge
. Offshored programmers who are not well trained for the job
. Offshored programmers without the right profile to perform the task
. Offshored programmers who see your company as an alien and don't feel the degree of responsibility that the rest of your staff does
. Offshored programmers who lack discipline and commitment
. Companies who don't have proper control over its employees
. No guarantee or replacement programs
. No transfer of knowledge between programmer and replacement
. Bad attitude and/or wrong personality for the job
. No communication with the offshoring company
Our offshoring methodology
1. Analysis: research the customer's requirements and readiness for outsourcing
2. Strategy: determine the best overall outsourcing strategy for the customer's business
3. Transition: costing, contract negotiation and initiation
4. Implementation: project management, review and monitoring, where appropriate with a phased hand-over of control to the customer
5. Auditing Results: Continually audit, update and correct our processes
Want to know more? Please
Want to be more? Fill up a quick form so we know more about you. If you have the time though, we recommend you to fill up a specially designed for offshoring services! Completing the questionnaire form will take around 5 minutes. You will need to supply a minimum of information about your current needs and processes in order to give us a better idea of how to start handing your case.

Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033
Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Thứ Ba, 20 tháng 10, 2009

3 ways to improve efficiency when outsourcing programmers

Imagine that after only two hours in office, you have finished your whole work. You take your jacket, your golf bag and head to the car park while your boss waves you good bye with a smile on his face.
That would be a company that rewards efficiency.
Most companies though, reward “sitting time” developing an attitude such as: “I am here and there is no escape”. That is the normal working relationship we have grown accustomed to.
Yet, there is a working format that could deliver much more output that a normal employee-employer format: Outsourcing; in this case I am talking about outsourcing programmers.
It is Monday morning and this new programmer arrives in your office, someone who is supposed to be a professional, trained and ready to sit and follow instructions from a clear list of specifications; there is no reason to waste a single minute of his time; after all you are paying premium.
Problem is, your IT manager, or the project leader didn’t do his homework. He didn’t define the tasks ahead in a simple list of specifications, what for? The outsourced programmer can be told what to do when he comes and sits beside him. WRONG
This is the single most common reason why outsourcing programmers never really deliver. How could they? Programmers don’t read minds and chances are, your IT management doesn’t have a clear idea about the project to be developed.
Don’t be surprised, this happens in almost every company that develops software internally or for others.
So why do IT people not make good specs?
First of all: pure lack of motivation. Again, organizations don’t reward efficiency, let alone excellence. Rarely, if ever, the IT department is given the importance of other departments such as marketing or sales. Small budgets and unreasonable deadlines leave IT people resented and with no reason to commit. I never saw an IT department being rewarded for efficiency, for cutting expenses or for delivering on time.
Second, lack of know how. Making clear scopes and specifications is not an easy task. Especially since most people aren’t really trained for the job, and very few are “lucky enough” to learn from those who actually write this stuff well. So how on earth could someone without training foresee a myriad of details that together will make a project as a whole?
Third: overqualified resources. Many IT managers ask overqualified programmers from outsourcing companies, believing that the more the programmer knows, the less they have to explain. Unfortunately, this only activates a new chain of frustration and inefficiency. You can do nothing worse to a capable person that giving him a job that is way down his league. Not to mention that overqualified people are more expensive.
So, what to do?
Get your IT managers to learn how to spec properly. The more time spent detailing specifications, the less time your company will spend programming. So you are doing more, with less time and money.
Reward proficiency. If your IT manager have good reasons to improve, chances are he or she will. According to our experience companies use 50 to 70% of the capabilities of our programmers. If your managers get to work professionally, they could increase work output by up to 50%! That is money you are saving and that could go, at least some part, into rewards for the IT boys.
Engage your Outsourcing Company. Very few outsourcing companies will have the ability or the will to help you. That is why you have to get your outsourced programmers from companies that see you as a strategic partner, rather than a golden, fat cow. Ask them to organize training sessions for your middle management, which should make a big difference.
I have been in this industry many years, and I haven’t seen many companies who haven’t benefited from these simple recommendations. In fact, only one company comes to my mind that regardless the efforts, didn’t improve.
Resistance to change happens, especially when the highest IT management positions are occupied by people with no vision. As a GM, MD, or CEO of your company you most not overlook the head of your technology department.
In this article I only talked about saving costs and efficiency, but the real result if you can implement some of these changes, is the improvement of quality. A system developed under proper specifications, is not only better, but it is scalable and upgradable; which strangely, is still a rarity these days.
Blueball.co.ltd
http://www.blueballgroup.com
Tlahui Calva – CEO
Has extensive experience on the field of IT offshoring
Tel: +66 8 9699 3358
Email: tlahui@blueballgroup.com
tlahui@yahoo.com
Our Office
Thailand Head Office
Vietnam Production Center
Mexico Special Developments
Thailand
Head Office
252/94 Muang Thai Phatra Complex,
Tower 2, 17th floor, Ratchadapisek Rd,
Huay Kwang, 10310, Bangkok Thailand
T:026932940
F:026932941
Vietnam
Production Center
Quang Trung Software Park, Ground floor,
Anna building, Ho Chi Minh City, Vietnam
T: 084371032
F: 084371033

Chủ Nhật, 18 tháng 10, 2009

Developing an erp software

In past few years, every business firms have hunted to expand and improve their command over a number of information systems and amalgamate all of them in order to provide a sole regular view of business operations and information.

The standard practice is to develop a module for each department of a company. The five common modules we come across in an erp software are: Finance, Stock Management, Manufacturing, Sales and Purchase. Each module is to automate the book keeping process of a company. The finance module is for use by the Finance department of the company. Similarly, a separate module is created for use by each module. The team developing erp software has to have all information pertaining to working of each department and inter relationships between each department. The working of a department can be thought of as consisting of a sequence of many events occurring on a daily basis. Each event in turn can be defined by a set of data. Also, each piece of data can be stored in the database based on certain set of rules. All this, together define an event. The erp team has to collect information about the working of the company, classify the working of a department as a set of events, identify all data which has to be recorded during an event, determine how each piece of data is to stored, and how the data is to be displayed. This process has to repeated for each department and the collective information becomes the foundation for creating the erp software.
Programming expertise

The importance of programming experience and expertise need not be specifically emphasized for developing an erp software. The development team should preferably have experience in developing software applications which have been implemented and used practically. This experience will enable an individual to appreciate the importance of usage of features by end user. Any feature, however technologically superior they may be, are of no use if they are not used by users. Expertise in using front end tools (.Net framework ) either VB.Net or C# is a must. What we create using the front end tool is of vital importance as this what the end user sees first in an erp software. Creating forms, menus, and using controls is an art. If an user finds it easy to navigate through all the pages and enter data, experience shows the usage of software is more, which should be the goal of any erp programming team.

every ERP software implementation is rigorous task and usually includes the following steps:

• Planning of project
• Choosing an Enterprise software selection/review team
• Analyzing business and operational process
• Identification of best practices
Apart from this, ERP software evaluation also includes:
• RFP creation
• Joint conception of a implementation plan
• Mapping of business needs and modules configuration
• Data adaptation from legacy systems
• Documentation & Production
• Finally post-implementation support and auditing

Database Adiministration expertise

All data entered in an erp software is stored in a database. The database is repository of all data pertaining to different departments of a company. A database administrator takes care of all issues pertaining to the database. The erp team should possess a high degree of expertise regarding databases. A successful erp with high uptime is directly related to the uptime of the database. A database administrator with hands on practical experience of maintaining a database is an important member of the erp team.

Databases of today have rigorous but simple setup server procedures, sophisticated security features, tools to create the database files, and setup the relationship between tables. Databases can be manipulated using sql programs called stored procedures which are a vital feature. Stored procedures are used to perform validations while the data is being added. Stored procedures are written to Insert, Update and delete data in the database.

An erp software has to have data access technology to transfer data entered in the erp software to the database server. Microsoft’s ado.net. is used to develop data access component. ERP software of today have to be developed using disconnected architecture and ado.net supports such an architecture.
Application Architecture expertise


Developing an erp software is a long drawn process and requires a high level of commitment and willingness to go through the hurdles and setbacks. But, once done an erp software can set a company ahead of competitors with the immense benefits it offers.
Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Thứ Năm, 15 tháng 10, 2009

IT Outsourcing Company

Offshore IT outsourcing services are based engagements and agreement of the conditions and build an outsourcing partnership. Web development team combines always High quality software, Individual approach, Adaptable development teams, highly manageable processes, flexible payment models and etc. There are different facets of outsourcing like need to expertise; outsourcing services, strategic importance have become the most sorts after business practice in the world market with Web development services as well as product application development. These can be typecast into professional services, project management, outsourcing development units with proficient resources, and a joint venture with an offshore trader for offshore outsourcing services with various business issues such as documentation, official work like preparing invoices, data entry, inventory management, accounting and finance etc.

Traditional outsourcing services and IT outsourcing services are fielding classification, effort your knowledge base which can be availed in the current market place. Today world has become a global market with concentrated competition of business and requirements. There are different facets of outsourcing like need to expertise; outsourcing services, strategic importance have become the most sorts after business practice in the world market with Web development services as well as product application development.

Today, there are many firms that prefer to outsource their software projects offshore.
If we carefully look at the present situation, the growing momentum of business competition has led to industry growth.
Moreover, every business firm wants to be at the top position or retain its high position, but maintaining top position is not an easy task.

The factors like on-time completion of project, accessibility of skilled and trained IT professionals, cost saving or discrete communication has put an extra pressure on various companies.

This is where the concept Software Outsourcing evolved, and today more than the half of all fortune 500 companies target offshore software development companies.
As per recent studies, it has been found that with the help of offshore IT outsourcing many companies have reported a 40% to 60% increase in net savings. Highlighting about some of the various advantages of Software outsourcing is:


* It acts a one-stop process-centric centre.

* It provides the best availability of best trained IT personnel. In fact a better and immediate access to a big pool of finest industry skills facilities in overcoming hiring gap for IT professionals in the developed countries.

* It follows a customer-centric delivery approach, and thus helps in the significant reduction of development time.


Many organizations have recognized that they have to focus on their core competencies with respect to the limitations that they have. Outsourcing Company is a team of dedicated software programmers and indispensable for every business enterprise today. The beneficiaries are not only the clients but the service provider benefit a lot as well. Outsourcing Company is a team of dedicated software programmers and indispensable for every business enterprise today. Today world has become a global market with concentrated competition of business and requirements. So many companies are working as offshore outsourcing company those are providing the various projects as skills jobs.

Selecting the experienced firm can be a good decision, but in case you are planning to save your money then you may also consult to established trustworthy firm. Software outsourcing VietNam has become one of the most vital business strategies that have been widely adopted for immediate success in global business world. The market is expanding and generating newer opportunities for everyone.

Find IT outsourcing and more useful information about outsourcing, offshoring on IT Services & Outsourcing.

Thứ Hai, 12 tháng 10, 2009

Common errors in rich applications

Let's review some common errors in rich applications:

  1. Missing files / resources
  2. Missing updates
  3. CSS Class conflict
  4. Data related problems
    1. Incorrect data
    2. Server errors make the data dirty
    3. UTF with BOM files
  5. Cache results don't let you see the results
  6. Incorrect JS

1. Missing files / resources

One of the most common issues we find in applications is that developers forget to download or deploy some files, CSS files, support images, etc..

Images

This mistakes are subtle and sometimes hard to notice as some browsers simply don't show anything, unfortunately other browser will show a massive X in place of the missing image.

CSS

You will normally notice you are missing a CSS file because the screen looks weird (layout), or the font colors, backgrounds have changed

JS

Javascript errors are caused many times by not loaded JS files.

Debugging

You can easily find which files are missing using firebug,

  1. Open firebug
  2. Go to Net tab
  3. Select All, or the specific type you suspect
  4. All missing files are written in red
    1. You can mouse over them to see the complete path of the file and then verify if the resource exist on server or not
    2. You can click the + symbol, to check the requesting Headers, the Response header and the HTML

Paths are correct, resources still missing

In some environments, resources will keep failing to download, this is specially true when you load a lot of files. Tequila offers some strategies to prevent this problem. To enable them: file minimization, joining and monitored downloading, you simply:
  1. Open includes/config.php (server side)
  2. Find the js_includes configuration section (package it's included in core)
  3. Modify these lines to enable:

$js_safeloading = true;

$js_blocktillcomplete = true;
$js_retry = 3;
$js_cachedir = 'temp';

This will minimize, join all JS files, cache results for faster execution, monitor downloading, retry up to $js_retry times and optionally ($js_blocktillcomplete) Block the screen use until the files are loaded successfully.

* Notice. Minimization require all your JS files to be very well done (at least all closing brackets and ending semicolons). Tequila uses a standard minimization library and there are many tools online to check your library is valid, try this very strict validator JSLINT

2. Missing updates

Another common reason of involuntary bug induction is incorrect application updating, as files and resources are split across the application it's quite common that partial updates are made. i.e. Template files are not updated, or JS or CSS or...

Solution

Use a file comparison tool, or use mercurial to upgrade your application.

3. CSS Class conflict

CSS is awesome, it allow many levels of definition that allow precise change of look and layout, unfortunately some times CSS definitions can crash. i.e. A YUI component / JS component define the look of
and so your application does. The final result is a mix of both definitions.

Debugging

  1. Find out the source of the conflict
    1. Right click on the conflicting element
    2. Inspect element
    3. Verify on the left panel you are on the right HTML tag
    4. Check the list of styles on the right panel, to see which one is defining the tag
      1. Each entry also mentions the file and line number

Solution

Once you have identified the conflicting resources you can:
  1. Decide to remove one of them (this removal can be specific to one page, i.e. a complex one-screen)
  2. Modify one of the CSS to be more specific
    1. You can use CSS syntaxis to affect just the children of one node, i.e. #mainlayer div
    2. You can modify the HTML to apply an specific class to the affected element
    3. You can add a class to parent to differentiate, (i.e. HTML:
      CSS: .special_case div )

4. Data related problems

Modern applications transmit a lot of data using ajax, this data is hard to debug as it's normally not visible, so the 1st step is to make data visible.

Viewing exchanged data

  1. Open firebug using the icon on the right bottom corner
  2. Click on console
    1. You will see a list of all AJAX calls
    2. Open them by clicking on the + icon
    3. Params tab: You will be able to see the information sent by JS
    4. Headers tab: You can see the headers sent by server
    5. Response tab: You can view here the reply from server

Common problems

Based on this data you can start moving towards a solution, some common problems you can find are
  1. Server errors make the data dirty
  2. Incorrect data
  3. UTF with BOM files

1. Server errors

This is the easiest error to debug, simply inspect the "response tab" like a normal web page and work over the PHP in server to clean up all the errors.

* If you are sending all parameters using GET (querystring). You can also right click on the Console entry and select Open in New Tab

This will allow you to inspect data in detail, you can switch server modes from XML to cd, to get rid of the headers and be able to read the complete errors. (Simply replace rrt=xml -> rrt=nh or cd; read RRT section on Tequila manuals for more info on Requested Response Types)

2. Incorrect data

Incorrect data might point to a logic problem in the server code, use your normal debugging techniques to solve this issue.

Another possible problem is that server and client versions are out of sync. Verify which data is correct before starting modifications. Then work on the server or JS files as necessary.

3. UTF with BOM files

Sometimes you will discover everything is correct, data is perfect, JS is in place and still you keep getting errors from your ajax callback function (this happens specially with XML data).

There's a subtle bug with files saved as UTF with BOM, the problem is that when they are included, PHP immediately start the output making impossible to set the correct XML headers.
Solution
Open every file included in the task with Notepad++ or another editor that support this setting and re save them WITHOUT BOM (optionally you can enable output cache but this is only recommended for testing, cache code is commented in index.php file)

5. Cache results don't let you see the results

This is a common issue, sometimes you own browser cache keeps showing images, css or data from previous calls. You can clear the cache or install the "web developer" plug in mentioned above, simply:

Click on Disable button > Disable Cache.

This will allow you to have a clean environment all the time.
Server cache
We have found on some online servers that PHP pages are cached and the changes made on the PHP are not reflected, try adding some extra info, an extra echo or some visual element that let you know your code is being executed. You might even be connected to the wrong server :)

If required, duplicate the file you are testing, and use this copy for debugging / developing. Update the real file after results are satisfactory, normally the server will start using the updated version after some hours.

6. Incorrect JS

Once you have determined that the server is sending the right responses and all resources are loaded, it's time to move debugging to the client side, You can work on this debugging in many ways.

Echo, echo echo.

Using the exact same technique as in PHP, you can use alert() at some places to inspect execution values.

debug.js

Tequila includes a very basic library to inspect values at running time, you must include it at server side to be able to use it on client, a couple of useful functions are:
function showobj(myObj, title, complete)
function showScript (content, safehtml, title)

Firebug!

And your best friend again: line by line debugging. Before you get crazy following each line, you should inspect your code in an external editor and determine the function you think might be the problem, i.e. the callback function, in ajax

To start debugging in firebug

  1. Open firebug (icon on bottom right side of the screen)
  2. Click on script tab
  3. Under script you will find 2 selectors, the 2d one indicates the name of the library being displayed
  4. Open this selector and select the library you want to debug
  5. Move the left pane to the line of code you want to inspect
  6. Add a breakpoint by clicking on the left hand side of the numbers, a red spot will appear
  7. Keep the window open
  8. Trigger in the normal window the action you want to inspect
  9. Execution will stop in the breakpoint you added, you can then
    1. Control execution advance using the icons on top of the code, right side
    2. Watch the value of all variables including objects on the right pane
    3. You can also add custom watches on the right pane

Debugging advanced applications

Debugging have become increasingly complex in web applications as there are too many elements taking part.

Common components
Let's start by inspecting the common components:

1. Database server
2. Web server
3. PHP
4. Framework
5. Application
6. Browser
7. JS
8. CSS
9. XML



The real problem with Rich Clients is that they hide information from us, the data comes in one of many formats "behind the curtains" making access to data very complicated.

It's important to notice that to debug these applications many times you will need good understanding of HTML, CSS, JS, PHP, XML and AJAX. If you don't feel confident about your abilities on some, request help from your peers or your project manager after you have pinpointed the problem.
Tools to debug applications

1. Firefox
2. Firebug
3. Web developer (optional)

Find php framework and more useful information about RAD workflow open source.

Debugging in Online servers without access to Core files

In some case you will find that it will be useful to get debugging information from Tequila core files in an environment you don't have access to modify, you have 2 options for this scenario:
Files that are inheritable
Most Tequila classes are descendant of other Tequila classes, i.e. Dao, application_controller, application_view. In this case you will normally have access to the child class (part of the application) but not to the parent file (part of core)

Case: Debug person_DAO() method save

1. Open DAO.php from your local copy of Core
2. Open person_DAO
3. Copy all methods you are interested in debugging from (1) to (2)
4. Add Tequila debugging information
5. Execute locally to verify your new code doesn't introduce new errors and that debugging information is valuable
6. Upload to testing/real environment
7. Execute using by case activation(Check debugging page if you need help with this)


You will now have full view of what's happening without needing to have access to DAO or any other Core class
Files that are not inheritable
Other times you will need to have access to framework files, here the recommendation splits again:

1. Systems under development
2. Long time running systems


For systems under development, I recommend to add and keep a core with basic debugging functions (production copy has all debugging info commented). Only once the system is released the debugging information is removed

For long time running systems, if there's really no option, the debugging file should be prepared and replaced on server so per instance conditional debugging can be run.

Another last option for servers with many systems will be to keep on server 2 copies of the framework, one with debugging instructions and a production one, it's very easy to update the configuration of a single system to use one or the other.

Find php framework and more useful information about RAD workflow open source.

Logical errors

The most difficult kind of error to debug, it normally doesn't relate with a mistake in the language but with the problem solving.

This errors will normally be noticed because the results of an operation doesn't match the expected ones in all or some of the cases.

To narrow down this errors, we often need to analyze what's happening at execution time, sometimes we are able to line by line debugging if we have a proper set up environment, still many times, we need to debug in online servers, or other environments without an integrated debugger.

In order to debug this errors we normally need to 'see' what's happening inside the application, for this your best friends in PHP are:

echo; print_r; debug_print_backtrace()

This functions however doesn't allow us to debug in a real environment or to inspect specific cases, Tequila implements a set of debugging functions that works conditionally allowing you to implement them in a real environment and have the ability to inspect what's happening.

Tequila equivalent functions.

Tequila offers the possibility of conditionally activate debugging, please check Tequila documentation for a complete set of functions and the ways to activate in different scenarios
Example of a logical case

Let's imagine an example where $user is the publisher of a document, and the document $author field appear empty
The strategy for tackling this bug would be something like:

1. Try to point out the place where you believe data / execution is going wrong (Controller perhaps?, model?)
2. Add debugging code, i.e. myecho ("executing suspecting function, Value of user = $user");
3. Add debug code (as in 2) in several spots until you can trace the place where the value of $user change
1. Try function / class entry points
2. Try before and after calling other functions that you believe can affect this value
4. Remove all the debugging entries that show correct values
5. Drill down the function where the value was altered
6. Repeat until you can pin point an specific line or section


The idea behind is to narrow the problem to an specific function or segment of the code.


Notes

Remember:

* Try to be logical, common functions used by everyone in the same way are normally not the cause of the problem
* Don't blame it because you cannot understand it
o SQL
o RegEx
o Packages
o Libraries
o Complex strings
* Most times libraries and packages are safe to use, it's more common that your own code is faulty and not the team /public code. (This doesn't mean they cannot contain bugs/issues that no one discovered before, but you shouldn't blame this parts from the beginning)


Dates
Dates are a small challenge in application development, verify that your application date data is congruent. Tequila favors the canonical format:

YYYYMMDD HH:MM:SS

As this is the only universally understood format, while you can use many formats to display dates, we recommend this to store and pass date data.

Be aware of locales with different years like Thai, for this cases we recommend to store normal data and just replace the year on view, as the calendar doesn't match the year it mentions but the current one.

Example:
Thai year: 2552, does not match the calendar of standard year 2552, but matches the calendar of 2009.
Other errors
There are other kinds of possible errors that go beyond debugging, you can read Tequila good practices or other similar documents to better understand this, among this errors:

* Bad architecture design
* Improper code separation
* Non independent functions
* Bad OO coding


Line by line debugging
The best and easiest way to debug in any language is to use a line by line run time debugger in the style of visual studio, where you can see how the application is running and the values are changing, unfortunately this option is not often available in PHP.
You can try installing the debugger in Zend or one of the many options available. (Check IBM link for more info)

Find php framework and more useful information about RAD workflow open source.

Database errors

In this category I will comment about database design, SQL errors and Data validation errors which are very common ones.


It's also important to notice that not all errors are bugs or failures but sometimes incorrect use of data and/or resources.


What makes use of data 'correct'?

* Minimal exchange of information
o Delimited rows
o Delimited columns
o Don't retrieve BLOB/TEXT until required
* Standard SQL queries
* Non specific db-brand queries
* Proper indexed and accessed information
* Proper keys definition
* Reuse of objects and connection objects


In Tequila by using DAO classes and generated pages these errors are somehow minimized as the page provide simple JS validation and the SQL is formed by the DAO class, unfortunately DAO cannot determine when to eliminate BLOB's/TEXT fields from the query, nor workaround poor DB libraries.


As with any code introduction new places for bugs/issues are created, let's examine some common ones.
DAO errors

There are some common misuses of DAO classes:

* Using DAO instead of DAO_unique for tables with no autonumeric field (auto increment)
* Using $key instead of $keys for DAO_unique
* Not setting $nullable array for tables that doesn't allow nulls and use ADODB library


Abuse of data
Some errors are very hard to notice as they don't create errors but just affect performance

* Not filtering results
* Loading Text and BLOB fields when they are not required, specially on multiple records
* Loading a full set of data to display just a section (pagination, see LIMIT clause for more info)


* To avoid these problems in DAO classes you should create a special method in the DAO child that return just the fields you need.

SQL Errors
A common source of failures are incorrect SQL statements; at development time all SQL queries must be tested out of the system first (and then in); some SQL statements might work correctly with a simple test query, but will fail when using real data, some common mistakes are:

* Filter criteria is incorrectly joined
* One side of a JOIN can include NULL values, You need to use a left/right join (this often becomes evident, when the system uses real data)
* Null values in the data

Database design

Database design is an speciality in itself, please consult with your manager or project leader. When creating tables don't forget to use the prefixes T_ for tables and I_ for fields.


Out of Tequila I still recommend this or a similar notation, specially if you consider a database migration can take place in the future.
Issues with Naming, Advanced functions & DB versions

Please be aware that some common functions might not be supported by specific databases, or will fail even if supported,


Here's a list of some of issues we have discovered in different databases:


* MySql before 4.1
o Lack of support for subselects (Use joins instead)
* MySql
o Regex support is faulty. We have found mysql crashed several times due to use of REGEX to find tags (others worked well)
* MSSQL
o SQL PHP library is really deficient, therefore Tequila uses the ADODB COM object (You can monitor status of new library here)
* MSSQL using ADODB
o Support is still incredibly bad, with lack of paging support and other critical stuff.
o Until the release of the new Microsoft library this issues are unsolvable and Tequila/PHP uses workarounds for them.
* ORACLE
o Long names. Oracle doesn't support very long field names
o Oracle use UPPER CASE


CASE sensitivity

A common cause for bugs on system migration is case sensitivity, be aware of the following:



* MySQL doesn't respect Case in table names in windows systems
* MySQL respect case in *nix systems
* PHP is case sensitive (always)
* Oracle forces UPPERCASE*


*Tequila has a modified Oracle library that allow mixed case to be used in queries (to allow db migration) however this comes with an overhead.
Implications breakdown
Coming down to code this means that when you change the OS or even the web server your application might completely crash. Possible reasons are:

* The Script to create the DB was exported from the window system
* The target database uses different case


Example:
We assume system was developed on win and SQL is dumped from this system

// Table is exported from Win system
$mSql = "SELECT UserName from Users WHERE idUser = 3";
...
$username = $rst['UserName'];
// Will succeed in windows
// Will fail in *nix as Users table doesn't exist; Users != users
// Will fail in Oracle as field it's called $rst['USERNAME']
Recommended practices

* In your code use always UPPER CASE for table names and fields
* Define your database using UPPER CASE for tables
* Verify your export database script 'case' is correct before recreating.

Database mobility
Coding for proper database mobility is a challenge in itself. In Tequila/BB we have standardized a set of practices to favor mobility:

* Prefer use DAO over SQL to have a single control point
* Have single entry points for DB querys (functions execSQL and insertSQL)
* Have a single function for data retrieval (getData)
* Use only standard SQL
* Avoid / Minimize use of stored procedures
* Avoid / Minimize use of temp tables
* Prefix all tables with T_
* Prefix all field names with I_


* These practices are critical, not following them might result in your code being rejected, some critical cases like the use of 'name' field will result in database reserved word conflicts

Find php framework and more useful information about RAD workflow open source.

Debugging

In order to learn debugging we must understand:

* Types of bugs
* The debugging process
* Complex applications (Ajax, RIA, etc.) behavior
* Complex applications moments of interest
* Tools


Types of bugs

* Syntax/parse errors
* Fatal errors, warnings and notices
* Database errors
* Logical errors


Syntax Errors
This is the most common error at development time, luckily most can be avoided using a good editor; the most common causes are:

* Missing ; at the end of the line (The error normally displays on the next line)
* Missing or extra parentheses
* Unclosed braces
* Type errors
* Incorrect string concatenation


Fatal Errors

Fatal errors normally occur in development time and stop PHP from running. Error messages are normally clear and indicate the precise line that causes the error.


Common causes are:

* Extra } in classes
* Calls to non existing classes or functions


Warnings

Errors that doesn't stop PHP but will normally cause problems. Some common causes:

* Incorrect number of parameters
* Not found index in array
* Cannot modify header information
* Session_start - headers already sent


All warnings must be fixed, normally PHP will display which line of code is making the incorrect function call, this is the place to start checking.


If you need to trace the function calls (stack) to detect where the problem occurs you can use debug_print_backtrace() in PHP; in Tequila you can call showcallstack();
Notices

Notices are lighter errors in PHP, sometimes code appear to work properly if you ignore them, but this might just mean code shows a standard behavior but doesn't always mean the developer intended behavior. Good code must not generate a single Notice, common 'Notice' causes are:

* Undeclared variables
* Missing quotes


i.e. $array[key];

// if you mean:

$array['key'];

//it will work as PHP believes it's a constant with value 'key'


// but if you meant

$array[$key];

//it might work but logic is completely wrong, an empty key might be returned

Find php framework and more useful information about RAD workflow open source.

Enable error reporting in your environment

I often find systems with dozens of errors simply because developers turn off reporting, and as PHP allow Notices and some errors to go by they simply don't care. This can hide big coding problems and it also looks really bad on a developer / company. This MUST never be done, turn on your debugging!

To turn on error reporting:
Permanently (A MUST for all developers and managers):

1. Open PHP.ini
2. Set error_reporting = E_ALL;


* After PHP 5 you can use E_STRICT; to get notice of deprecated functions
Runtime
At the beginning of your code add:

error_reporting(E_ALL);

* When you set tequila to debug mode, error reporting is turned on
Disable error suppression
PHP allows @ symbol to suppress errors, this is very useful in some cases but at debugging time must be removed to be able to see the errors.
Find php framework and more useful information about RAD workflow open source.

Debugging Applications

Debugging applications can be a challenging task; it takes programming abilities, understanding of the code flow and specific bug finding abilities, on top of these there can be multiple complications, environment, closed libraries, different browsers and servers.

I write this document in the hope that it will help you improve your debugging abilities, so you can minimize your debugging time and also code better to prevent bugs!

* This tutorial uses many techniques from PHP Tequila framework but can be easily used for other languages / frameworks.

In this document:

Editor selection
The best starting point is the editor selection; use an editor that helps with indentation, function identification, and common syntax highlighting. Line numbers is an absolute must!

For PHP I strongly recommend: Zend / Eclipse, for general purposes Notepad++ (be sure to add/enable the function list plug in).

Find php framework and more useful information about RAD workflow open source.

Chủ Nhật, 11 tháng 10, 2009

Real Rapid Application Development

http://sites.google.com/site/phptequila/Home/real-rapid-application-development
Real Rapid Application Development
In this tutorial we will review how to create a really fast applications using Tequila framework, we will use the same DB as in First tutorial, but you can use the following techniques with any other DB

We assume:

* You already download and install Tequila
* You already created a testing database
* You already test the application is running

If you haven't done all this, just follow the installation page instructions

Let's get started

1. Add application tables to the DB.

Using your favorite db tool (PHPmyAdmin, SqlYog, command line) execute this script.

DROP TABLE IF EXISTS T_RECIPES;
DROP TABLE IF EXISTS T_CATEGORIES;

CREATE TABLE T_CATEGORIES (
I_IDCATEGORY int NOT NULL AUTO_INCREMENT,
I_NAME varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY(I_IDCATEGORY)
) engine=InnoDB;;

CREATE TABLE T_RECIPES (
I_IDRECIPE int NOT NULL AUTO_INCREMENT,
I_IDCATEGORY int NOT NULL,
I_TITLE varchar(100) NOT NULL DEFAULT '',
I_DESCRIPTION varchar(255) NULL,
I_DATE date NULL,
I_INSTRUCTIONS text NULL,
CONSTRAINT fk_r_c foreign key (I_IDCATEGORY) references T_CATEGORIES(I_IDCATEGORY),
PRIMARY KEY(I_IDRECIPE)
) engine=InnoDB;

2. Browse to addpage
URL: yourproject/Project1/index.php?task=addpage

* If you give write permissions to the Project1 folder the application should show no errors.

This is the welcome page of Tequila generator "sunrise".

*If you want to edit the details of each page keep reading, if you want to generate the application in one click go to the end of this document

On this page:

1. On first execution Sunrise generates an XML definition of the application.
2. Select the radio button Update XML from DB

* You don't need to push any button to save this is a session setting

Click on images for full resolution
3. Check the Table relations
Click on the Table relations link at the top Menu.

On this tab you can see the relation between categories and recipes. For this tutorial we don't need to change anything.

* You can also modify and add relations on this page, this will not modify the DB definition but inform Sunrise of the data relation. We strongly recommend you to capture all your data relations in this page.

4. Create Recipes Page
Follow steps as shown in the illustration.

1. Select T_RECIPES table
2. Click on Let me edit the details, this allow you to enter detailed information
3. Tabs can be toggled (open/close) Click on the 2d to open Related pages
4. Notice the right control and relation has been preset (if your screen looks different check step 2.2)
5. Select the size of the controls as shown (optional)
6. Select a WYSIWYG control, nicedit is included with the source
7. Un-select the elements that shouldn't appear in the list view (Click on the left one the right will follow)
8. Add validation for title, to make it a required element
9. Click the Save button


Click on images for full resolution
5. Create Categories Page
Categories page it's easier, just:

1. Select T_CATEGORIES table
2. Click the button to load details
3. Add validation for category Name (Required)
4. Click save to generate the page.

Click on images for full resolution

6. Review your hard work!
At this time, your pages have been generated and all the settings you changed saved, if you need to make further changes to this pages, just repeat steps 1,2

View your results:

1. You can see the generated controllers on: Project1/includes/app/controllers
2. Browse to: index.php?task=categories
3. Try adding an empty category to test validation
4. Try adding "Soups" category using normal "Submit" button
5. Try adding "Desserts" category using Ajax "Save and Continue"
6. Exit and see the list of categories
7. View and edit the information until you are satisfied
8. Click on view recipes on the list mode
9. Click on Add a new recipe
10. Notice the select, description, date controls and Instructions?
11. Perhaps you want to repeat step 4 and change description for a textarea control? or change the date for a hidden field and set it in the db?

Using RIA's Mashups, XML, Json?
Try adding this "rrt" (requested response types) to the url in any method (view, Browse are nicer to test)

* index.php?task=recipes&mode=Browse&rrt=block
* index.php?task=recipes&mode=Browse&rrt=xml
* index.php?task=recipes&mode=Browse&rrt=json

*New: Check our RIA/FLEX tutorial to see how to link this application!
Regenerating your pages?

Don't worry, the generator makes an MD5 check of all the files, if there is any changes in between the page you are generating and the one stored it will backup the existing file adding the date and time to the name.

Faster? You don't need details?
Maybe you just need a mockup or you don't need to select controls and extra validation.

1. Click on One App
2. Click Go.

Tequila DB tables will be ignored, all your files will be created at once.
Find Rad workflow and more useful information about php framework on workflow.

Tutorial, Your first app

http://sites.google.com/site/phptequila/Home/tutorial--your-first-app
Your first application!

In this tutorial you will learn:

1. How files are organized in Tequila
2. How your code should be organized
3. How to make a complete CRUD (Create Read Update Delete) page
4. How to create a template
5. How to work with multiple languages


* Note: This tutorial DON"T use the fastest way to create the application using Tequila, rather it tries to help you get familiar with the framework

For this tutorial let's try the famous categories / recipe example

Pre-requisites
We assume you already download and configure a Tequila application, if you haven't you can do it following this page

Project description
Simple recipes application with recipes categories

Creating database

Run this script from your favorite mySql application
(phpMyAdmin or any other)

DROP TABLE IF EXISTS T_RECIPES;
DROP TABLE IF EXISTS T_CATEGORIES;

CREATE TABLE T_CATEGORIES (
I_IDCATEGORY int NOT NULL AUTO_INCREMENT,
I_NAME varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY(I_IDCATEGORY)
) engine=InnoDB;;

CREATE TABLE T_RECIPES (
I_IDRECIPE int NOT NULL AUTO_INCREMENT,
I_IDCATEGORY int NOT NULL,
I_TITLE varchar(100) NOT NULL DEFAULT '',
I_DESCRIPTION varchar(255) NULL,
I_DATE date NULL,
I_INSTRUCTIONS text NULL,
CONSTRAINT fk_r_c foreign key (I_IDCATEGORY) references T_CATEGORIES(I_IDCATEGORY),
PRIMARY KEY(I_IDRECIPE)
) engine=InnoDB;

Hey what about the T_'s and I_'s

They are not required, we suggest as a good practice for multiple databases; When you work with a single database is easy to see your mistakes in field and table naming as the create instruction will fail when you run it. When you need to migrate your application to a new database you might discover name, date, status and many other words are reserved in one of them. So as a simple practice we name all fields I_ and all tables T_.

Find Rad workflow and more useful information about workflow on php framework.