Dec 22

Implementation of ERP solution involves a hefty budget with long time and conscientious efforts for customization. With the recession taking a notch out of many budgets and a often several years of development under their belt,  open source ERP solutions have started to emerge as feasible alternative to the big names with big bank accounts. The key reasons for the diversion includes lower cost, flexibility, large group of users and independence from solution providers. Additionally, companies can easily download the open source ERP solutions and the utilize their budgets to customize them to fit the needs of the company instead of for an off-the-shelf license.

1. WebERP

weberplogo

It is a web based ERP system for small and mid sized Enterprise. The LAMP application has a stable code base and is packed with features suited for distributed businesses in wholesale and distribution. The features sales order, accounts receivable, user defined sales analysis, purchase orders, accounts payable, inventory management, general ledger, manufacturing, multi-language, multi-currency, complex tax system support. It also has multiple inventory locations with serial number and lot tracking facilities as well as full double entry accounting. In addition, it offers sales orders support for assemblies and kit-sets.

2. Openbravo

openbravo-logo
It’s one of the best open source ERP software for SMBs. Openbravo is a web-based program that was based on Compiere ERP program. It provides the entire status of a company that includes production information, inventory, customer information, order tracking and workflow information.

Openbravo accompanies wide ranging features that makes it easier to handle for end users. Some of its key features include dimensional reporting, alerts, email, keyboard navigation. It is easily configurable and tailors the existing functionality and business rules and is capable in adding many new functionality without any programming.

The ERP software offers better compatibility and sharing, allowing export of single file or a collection of files to Excel, CSV, or PDF directly from the application. Users can easily create third-party modules or plugins or even browser the directory and choose the shared functionality created by other users to install. It allows high scalability enabling deployment in single server or on a cluster of them, serving up to thousands of users. Any record in the system can be easily audited and traced to user who created it.

3. Compiere

compiere
Compiere is organized uniquely to avoid the duplication of information and the need for synchronization. With an innovative design Compiere allows easy customization of the application. Modules included in the ERP solution include Customer relationship management, Quote to Cash, Requisition-to-Pay, Partner Relations Management, Warehouse, Supply Chain Management, Performance Analysis, Double-entry Book-keeping, Work-flow-Management and Web Store.

4. xTuple

xtuple_logo
The xTuple PostBooks is an integrated ERP, CRM and accounting system, based on the xTuple ERP Suite.

Modules for ERP xTuple

  • Accounting: general ledger, accounts receivable and payable, bank reconciliation, financial reporting
  • Sales: quotes, order entry, sales reporting, shipping
  • Product Definition: items, infinite-level bills of material (BOM)
  • CRM: universal address book, incident management, opportunity management, to-do lists, project management
  • OpenRPT: open source report writer
  • Inventory: multiple locations, other advanced warehouse features
  • Light Manufacturing: work orders, strong support for make to order
  • Purchasing: purchase orders, receiving, vendor reporting

PostBooks is a cross platform application that runs equally well on Windows, Linux and Mac. It is fully internationalized with support for multiple tax structures, multi-currency, multilingual translation packs maintained by xTuple’s global community.

5.  OpenERP

openlogo
This is a complete open source ERP software, designed to address the enterprise needs and processes. OpenERP integrates accounting, hr, sales, crm, purchase, stock, production, services management, project management, marketing campaign. It offers separate client and server components and XML-RPC interfaces. Open ERP is complete and modular system with 350 modules. The ERP software has a strong MVC architecture with an object database, a dynamic GUI, distributed server, flexible workflows, and customizable reports. The database is PostgreSQL and the server part is written in Python.

The key features of OpenERP include management accounting, financial accounting, inventory management, sales and purchase management, tasks automation, Human Resource Management, marketing campaigns, help desk, and point of sale.

Apart Linux, Windows and Mac interfaces, OpenERP has an web interface eTiny that is also available for the Turbogears web framework. OpenERP is widely  used by customers looking to automate their sales processes effectively.


6. Apache OFBiz

ofbiz
It is an Open Source Enterprise Resource Planning (ERP) system that provides a suite of enterprise applications that integrates and automates several business process of an enterprise. The  framework offers a common data model and sophisticated business processes. There is a common architecture for all applications build around data, logic and process components. Apache OFBiz  is built on open source technologies and standards like JavaJava Enterprise Edition (JEE), XML and SOAP.

Apache OFBiz comes with a wide range of functionalities  that include

  • Accounting (agreements, invoicing, vendor management, general ledger)
  • Asset Maintenance
  • Catalogue and Product Management
  • Facility and Warehouse Management
  • Manufacturing
  • Order Processing
  • Inventory Management, automated stock replenishment etc.
  • Content Management System (CMS)
  • People and Group Management
  • Project Management
  • Sales Force Automation
  • Work Effort Management
  • Electronic Point Of Sale (ePOS)
  • eCommerce
  • Human resources (HR)

OFBiz introduces the concept of screens where each page typically represents a screen.  It’s architecture allows rapid customization of the application to a business needs without any new coding.

7. JFire

jfire
It is a comprehensive and flexible ERP solution for businesses of all size. The system offers enterprise processes with powerful analysis, reporting, and customization options. It has been designed to be highly customizable. JFire is a highly scalable system that can support small companies as well as giant companies with extensive user base, multi-currency & multi-language requirements. JFire is developed with the latest technologies such as J2EE 1.4, JDO 2.0, Eclipse RCP 3.3.

Key modules in JFire include

  • Accounting
  • Flexible Price Configurations
  • Store Management
  • Reporting
  • Integration with external payment and delivery interfaces
  • CRM

8. ERP5

erp5
This is a strong community that offers powerful ERP solution for small businesses. ERP5 is fully packed with features that includecustomer relationship management ( CRM), production management (MRP), supply chain management (SCM), product design management (PDM), accounting, human resources and e-commerce. For the small businesses, ERP5 has an Express edition which integrates ERP, CRM and KM funtionalities.

It offers a web based platform that can be used and configured for users and administrators through a browser. It provides an intuitive and polished user interface that makes an easy to understand ERP system.

9. Opentaps

opentaps

It is a complete open source platform. Opentaps features a modern architecture that includes a complete full ERP and CRM solution.  The ERP solution also includes mobile connectivity and built-in business intelligence tools. Key modules in opentaps are Online Store, CRM, Warehouse Application, Financials, Purchasing and Administrative Applications

Although not the best of the lot opentaps serves as one of the best open source ERP software as an alternative to expensive and inflexible commercial ERP solutions. It would perfectly fit the replacement for in-house solutions that are difficult to maintain or extend, or as a starting point to build your unique business model and processes.

10. ADempiere

adempiere
It is essentially a business suite that combines ERP, CRM and SCM support for business processes. ADempiere is an open-source ERP software that provides a framework for extending and customizing to meet business needs. Adempiere is developed in J2EE technology, especially using the JBoss application server. It’s database support is restricted to Oracle and PostgreSQL.

Jun 27

For those of you who don’t know, iTeam consists of a highly qualified design and development team made up of graphic designers, programmers, and systems and business analysts. This team combines the skill and creativity required to promote your business online with website design and Search Engine Optimisation, increase online sales through website analytics, and improve productivity and efficiency through custom database software, and office network maintenance.

Check out the new site!

www.iTeamTech.ca

I appreciate any feedback you have.  Feel free to leave a comment and let me know what you think!

Jun 2

Aptana has a plugin for Eclipse that makes developing websites and web applications for the iPhone really simple.  Here’s the installation notes from Aptana:

Installing this Plugin via Aptana or Eclipse

  1. From the Help menu, select Software Updates > Find and Install… to open an Install/Update pop-up window.
  2. On the Install/Update pop-up window, choose the Search for new features to install option, and click the Next button.
  3. Set up a new remote site to scan for updates.
    1. Click the New Remote Site… button to open a New Update Site pop-up window.
    2. On the New Update Site pop-up window, type the name of the new plug-in in the site Name text box.
    3. In the URL text box, type the URL http://update2.aptana.org/studio/24131b/ for the update site.
    4. Click OK.
    5. Click the Finish button to open an Updates window.
  4. On the Updates window, check the box next to the name of the plug-in, and click the Next button.
  5. Choose the option to accept the terms of the license agreement, and click the Next button.
  6. Click the Finish button.
  7. Click the Install All button.

Now when you create a new iPhone project, it adds in some nice CSS and other features that makes developing on the iPhone much simpler.

Dec 15

1. Disable IPv6
At least I dont need IPv6 yet so this is what I do to disable it.
sudo kate /etc/modprobe.d/aliases
And change the line:
alias net-pf-10 ipv6
to:
alias net-pf-10 off #ipv6
This will disable IPv6 on all network interfaces. You need to reboot.

2. Run boot processes in parallel
This will make upstart to run the boot processes in parallel and speed up the boot process.
sudo kate /etc/init.d/rc
Find and change the line:
CONCURRENCY=none
to:
CONCURRENCY=shell

3. Aliasing hostname to localhost
Right or wrong, you decide. But I picked this up in the Ubuntu forums the other day and it does improve the startup of some apps.
sudo kate /etc/hosts
and add you hostname to the first line after localhost like this:
127.0.0.1 localhost yourhost
127.0.1.1 yourhost

4. Disable pango
I know that this is already taken care of in Firefox but it still makes a good performance boost to thunderbird and some other apps.
sudo kate /etc/environment
and add:
MOZ_DISABLE_PANGO=”1″

5. Preload
It does what you think. It preloads most common used libs and files = faster startup times on your applications.
sudo apt-get install preload

What about prelink?
Prelink is no longer necessary in feisty. Feisty uses a new linking mechanism called DT_GNU_HASH which speeds up the linking process without the need for continuously running prelink.

6. Swappiness
The default value for vm.swappiness is 60 in Ubuntu Feisty whic is a good default value but if you want to tweak the performance a little bit more you can change this value to a lower value to reduce the load of the swap. If you run the follwing command:
sysctl -q vm.swappiness
You will se that the value is set to 60. And by running:
sudo sysctl vm.swappiness=10
You will change the value from 60 to 10 which will make your system write to swap a lot less and I would recommend this to everyone that has 512 MB of memory or more. If you find that you have very little use of swap set the value to 0. This will not disable the swap but it will make your system write to the swap as little as possible and keep as much as possible in memory. This makes a huge improvment when switching between applications since they are now likley to be in physical ram instead of on the swap partition.

To set your value permanent you need to change the sysctl.conf file:
sudo kate /etc/sysctl.conf
Add the line
vm.swappiness=10

To the end of the file. This way it will be set upon boot.

I’ve found that the value of 5 works very good for my use and I have 1 GB of memory.

7. Profile grub
There is a option to grub called profile which will profile your startup. What it does is that it kind of indexing all the files read during boot/startup and later on it will find and read those files quicker.

Hit the escape button when booting to get to the grub menu.
Select your default boot kernel and hit the e button.
Go down to the second line and hit the e button again.
Add profile to the end of the line and press enter.
Hit the b button to boot with your new option.

The first time it will take a little bit longer to boot because it has to build the index (or whatever they want to call it) but every boot after this will be a lot smoother.
You need to do this every time you update your kernel or have made other huge changes to your system that might affect the files needed during boot.


The following could cause your system to be unstable or even unable to boot so please use them care…

8. sysv-rc-conf
Install sysv-rc-conf and disable the services you don’t need at startup.
As an example. On my computer I don’t have bluetooth so I don’t need to start it at boot time.
So simply disable what ever you don’t have or use.

sudo apt-get install sysv-rc-conf
and then run:
sudo sysv-rc-conf

9. Kernel hacking
Even thought the new kernel in feisty is very good and already tuned a bit there still are some things you can do to the kernel the will make your system snappier and boot up even faster.

Use this thread from the ubuntu forums as a guide on how to compile your own kernel.
master kernel thread

What I do is that I make sure to add my file system I use to the kernel instead of loading them as modules. Take out whatever I don’t have or use and then compile my new and hopefully improved kernel ;)

10. Filesystem setup
The choice and use of the file system is a big issue when dealing with performance. Depending on your usage of your system you might need to configure your filesystem different.

For my usage I like to use the following setup (which I think is a good desktop setup)

Mountpoint filesystem Size

Using the following options in fstab for all my xfs partitions:
noatime,nodiratime,logbufs=8

Using LVM can really speed up the disk performance. And you get a lot of other good stuff with it as well. Read more about LVM here.
I choose to have /root and /home on one VolumeGroup and /data on another simply because I can then split them up on diffrent physical disks and have them spanning over multiple physical disks witch really speeds up the reads and writes.

At the moment this is pretty much it but I will update this as soon as I discover more performance tunings…


Tuning applications

Not so much to add here but this what I like to do.

1. Firefox
Use swiftfox instead. It’s optimized for your CPU.
Install the fasterfox add-on
If it’s not already set, disable IPv6. In the url enter about:config and find the ipv6 entry and disable it.
Install adblock plus add-on
to disable ad’s it helps a lot :)

2. openoffice
If you don’t need that extras that java JRE provides then simply disable it openoffice. That’s what I do.

Grab from XLN

Aug 10

Echo vs. Print

The most common way to output text with PHP is using echo or print. In this section we will see the similarities and the differences between them.

Similarities

  • They are both language constructs (not functions) so by all means drop the parentheses:
    <?php
        echo 'foo';
    
        print 'bar';
    ?>
  • They can be used to output multiple lines:
    <?php
        echo 'This is the first line.
        This is the second line.';
    
        print 'As you can see,
        it works with print, too.';
    ?>

Differences

  • print returns 1 so it can be used as a function:
    <?php
        (1 == 1) ? print 'true' : print 'false'
        //Outputs 'true'
    
        (1 == 1) ? echo 'true' : echo 'false'
        //Doesn't work
    
        echo (1 == 1) ? 'true' : 'false'
        //Outputs 'true'
    ?>
  • With echo you can “concatenate” with a comma.  I put concatenate in quotes because it looks and feels like concatenation is happening, but it’s not actually concatenation.  I’ll talk about that more later.
    <?php
        echo 'With echo you can ', 'use the comma ', 'to output multiple parameters.';
        //Works
    
        print 'With print ', 'you will get ', 'an error.';
        //Doesn't work
    ?>

Realistically there is no real reason to prefer print over echo unless you want to use it as a function.  Give me a solid case for this usage and I’ll bend, but I’ve never needed to use it.  echo can do all the things that print does better: it’s slightly faster than print…and it’s one less character to type!

Dots vs. Commas

As I mentioned earlier, you can use both dots and commas to output strings and variables using echo but with print, you can only use dots. So, what’s the difference?

When using dots, all the parts are concatenated to form a single string that will then be printed, while with commas, all the parts are printed individually, and although the end result appears to be concatenation, each item is actually output one-by-one.

This actually makes the use of commas slightly faster than using dots because the string concatenation is skipped but the end result is exactly the same – no spaces will be added between the arguments (like in Python) – so commas are the preferred method for outputting multiple string segments and variables with echo.

<?php
    $var = 'foobar';
    echo 'The value of $var is ', $var;
    //Output: The value of $var is foobar
?>

Single Quotes vs. Double Quotes

In PHP there are two main ways to specify a string: single quotes (’foo‘) and double quotes (”bar“).  There’s also a couple more ways — heredoc and nowdoc — but I don’t want to get into that can of worms here.

Single quotes

When you need to output a plain string, the single quotes are probably the best idea.

Variables and escaped characters (e.g. \n, \t, \" etc.) will not be expanded, except for \' and \\ (you can also write just a single \ to output the backslash). This will make the parsing of a single quoted string slightly faster than a double quoted one, and you don’t have to escape double quotes (e.g. in HTML attributes) as we can see in the following examples:

<?php
    echo 'This is a plain string';
    //Output: This is a plain string

    $var = 123;
    echo 'This $var and this \n newline character will not be expanded.';
    //Output: This $var and this \n newline character will not be expanded.

    echo 'The \' single quote and the \\ backslash will be expanded.
    The single \ backslash works too.';
    //Output: The ' single quote and the \ backslash will be expanded.
    //The single \ backslash works too.

    echo '<img src="foo.jpg" alt="test" height="100" width="100">';
    //Output: <img src="foo.jpg" alt="test" height="100" width="100">
?>

Double quotes

If you use a double quoted string, variables and escaped characters will be expanded.

<?php
    $var = 123;
    echo "This $var will be expanded. You can also use \$var if you want to avoid it.";
    //Output: This 123 will be expanded. You can also use $var if you want to avoid it.

    echo "This characters will be expanded too:\nfoo\n\tbar\nbaz";
    //Output: This characters will be expanded too:
    //foo
    //    bar
    //baz

    echo "<img src=\"foo.jpg\" alt=\"test\" height=\"100\" width=\"100\">";
    //Output: <img src="foo.jpg" alt="test" height="100" width="100">

    echo "You can also print characters in octal and hexadecimal notation like \141 and \x62.";
    //Output: You can also print characters in octal and hexadecimal notation like a and b.
?>

Bottom line is that it’s better to use single quotes and avoid to include variables inside the strings.  The only real time you may want to use double-quotes is when you have lot of variables that have to be included in a string.  In this case, the use of double quotes may improve the readability of the code.

Conclusion

  • Use echo instead of print
  • Don’t use parentheses with echo (or any language constructs for that matter)
  • Use single quotes if you don’t have to use escaped characters or need to expand many variables
  • Always use a comma instead of a dot when joining strings and variables in an echo statement

« Previous Entries