Great Plains Dexterity Customization Options - Overview For Developers

Looks like Microsoft Great Plains becomes more and more popular, partly because of Microsoft muscles behind it. Now it is targeted to the whole spectrum of horizontal and vertical market clientele. Small companies use Small Business Manager (which is based on the same technology - Great Plains Dexterity dictionary and runtime), Great Plains Standard on MSDE is for small to midsize clients, and then Great Plains serves the rest of the market up to big corporations.

If you are developer who is asked: how do we customize Great Plains with its native programming language - Great Plains Dexterity - read this and you will have the clues on where to look further.

The history of the Dexterity. Great Plains Dexterity - this is proprietary programming language and technology, designed back to earlier 1990th with the goal to build platform independent graphical accounting package - Great Plains Dynamics. Dexterity itself is written in C (following popular those days hope - that C will provide platform independence). You can install Dexterity from Great Plains 7.5 CD #2. Obviously it requires a lot of learning / training, but it allows your custom piece be seamlessly integrated with Great Plains interface.

1. Native Dexterity Cursors. Dexterity was designed as platform independent programming language and so if you want your code to be operable on all currently supported databases - you use Dexterity ranges and loops to manipulate the records

2. Great Plains Dexterity with SQL Stored Procs Nowadays, most of Great Plains installations are moved to SQL Server - so you can use Dexterity for custom forms drawing only and make the buttons run SQL stored procedures.

3. COM Objects calls. Beginning with version 7.0 Dexterity supports COM objects - you register them as libraries in Dexterity. Refer the manual. This technique allows you to call such nice things as web services across the internet.

4. Dexterity Forms - if you like VBA and are comfortable to do all the business logic in VBA - you can use Dexterity as new forms creator/editor. This is OK - but you have to purchase VBA/Modifier and Customization Site Enabler from MBS.

Some restrictions. Great Plains is actually integration of multiple dictionaries: DYNAMICS.DIC, ADVSECUR.DIC, EXP1493.DIC, etc. In your Dexterity customization you can deal with one dictionary - DYNAMICS.DIC. If you need cross dictionaries customization - consider using SQL Stored Procs for crossing dictionary borders and pulling data/making changes in the other dictionary..

Happy customizing!

About The Author

Andrew Karasev is Chief Technology Officer in Alba Spectrum Technologies - USA nationwide Great Plains, Microsoft CRM customization company, based in Chicago, Texas, California, Florida, New York and having locations in multiple states and internationally (www.albaspectrum.com), he is Dexterity, SQL, C#.Net, Crystal Reports and Microsoft CRM SDK developer.

akarasev@albaspectrum.com

Cross Browser Compatibility

There are literally hundreds of web browsers in use around the world. All of them implement the W3C document standards a little differently. Web designers must wrestle with these differences to make a web site work. This article discusses the effect those different implementations has on design.

What is Cross Browser Compatibility?

If a web page is completely cross-browser compatible, it will look more or less the same in all of the existing web browsers. The most commonly used browsers are Internet Explorer, Netscape Navigator, Firefox and Opera.

Each one of these browser implements HTML, JavaScript and Cascading Style Sheets (CSS) a little differently. Some difference only create cosmetic difference others can break the webpage. The situation gets worse because each browser is free to implement “enhancements” to the W3C standard version of each of these formats.

Then to compound matters even more the underlying operating systems also creates difference in how the computer displays graphical elements and text differently. When you add the fact that people are also using multiple versions of each of the browsers, no wonder web designers get headaches.

So what is a web designer to do?

Obviously, 100% compatibility with all potential browsers is impossible. But it is possible to design your web page so it will work in the most popularly used browsers.

To accomplish that, a web designer must write squeaky-clean code that conforms to the W3C standards to get consistent results across all browser platforms. The whole idea behind the standards is that if each browser adheres to the same set of rules, you will get more or less consistent results in all of the existing browsers.

Conforming can be a real challenge. It will limit some of the neater effects available in specific browsers. There are online code validators available. You can validate HTML code at http://validator.w3.org , the validator can also validate your CSS and links. The service is free.

The validator checks your code based on the DOCTYPE you specify on the webpage. The DOCTYPE tells the browser which version of HTML or CSS the web page is using.

HTML Editors

There are some compatibility issues associated with anything other than hand coding for HTML (and for that matter, even with hand coding.)

Best Choice - The best choice for compatibility is Dreamweaver but you cannot use layers. Layers must be converted to tables to be used.

Worst Choice - The worst choice is FrontPage. FrontPage is loaded with problems because it uses Microsoft and therefore internet explored specific code. Items that will not work in other browsers include:

* Marquees - you can use a JavaScript scroller to create a similar effect that will work in the most common browsers. * bgsound tag - this is IE specific. * Page Transitions - this is IE specific. * Front Page generated Style sheets - this is IE specific and can have unexpected results or crash other browsers. * Front Page generated DHTML - it is better to use JavaScript to create the effects you want since it is more likely to be cross browser compatible. * Hover Buttons - this is IE specific and has been know to crash browsers including older versions of IE. You can use JavaScript, flash or CSS to get similar effects.

Other HTML Editors - the rest of the HTML editors will fall somewhere between Dreamweaver and FrontPage in cross browser compatibility. You just have to test the code your HTML editor generates.

CSS Style Sheets

Not all of your style sheets will work correctly in all of the browsers. However, style sheets rarely crash a web browser, but sometimes the pages will be downright ugly if not completely unreadable. One of the major CSS problems is absolute positioning since most browsers do not support it and it will cause different block to overlap others and create a jumbled mess.

Flash

Flash is great for adding style to a webpage and Macromedia provides flash plug-ins for all of the major web browsers. But don’t build the entire site with flash. Browser for the blind, most handheld devices do not support flash.

A small but significant number of users don’t like it and don’t install the plug-in so they won’t be able to access a flash site. Also, search engines spyders can’t follow the links on a flash site and won’t index it.

Graphic Links

While these are attractive, they have the same problems as flash with browsers for the blind and hand-held devices. Always use the alt tag with graphics.

Bottom Line - even code that is validated may not work correctly in all the major browsers. The best way a web designer can create cross browser compatibility is to test all of their web pages in the most popular browsers to see what happens. Personally, I find that a combination of style sheets and tables works best to ensure my pages look good in all of the browsers.

Software For Creating E-book Covers

So you have decided that you want to make a new e-book for you site and it’s business or service. This is an excellent idea, and can easily generate a large amount of profit if it is done right. Along with the usual preview chapters and index, you have the beef of the matter. Well have you ever considered exactly how you are going to package the whole deal, to make it look good enough to sell?

If you want to go with something spicy and original, you can bet you are going to pay an arm and a leg for someone such as a designer to do it for you. This in turn eats at your products profits to begin with. What happens if you have no idea on how to even make an e-book cover? Do you know the coding? Do you know how to format it? If the answers are no, which no offence is more than likely, you will need some help. Why however would you want to pay a large sum of money to someone else to do it, if there is no guarantee of success with it? This is where the new generation software comes into play, not only can it be a snap to run, you will be up in no time with your e-book in hand ready for the market place.

The fact remains true; there are a great many e-book cover software programs on the market. What you get with the program and the ease of use is what truly separates the good ones from the bad. It is true that you will get a poor product if you do not invest from the start; you get what you pay for. The best way to look at it is this way, if you spend a larger sum of money now and get a good product this product will sell. On that note if you make an e-book with a great title page, and can sell it for $45.99 online, within a couple of sales it is already paid for itself. Then you turn around and make another e-book at the same value, and you guessed it you are now in the black and have the profits to prove it.

Another major benefit to this type of software is this, if your business has been floundering the last little while you have something else to fall back on. This is a very lucrative business, where some designers are charging up to $250.00 per cover page. One cover page made for someone else and the software is again paid for. This could easily be a turn around, or an extension to the business you already have.
*****

To Your Success!

Chantal McBride has proven techniques and opportunities to generate wealth online. Go to www.ProIncomeOpportunities.com to profit from a home business that is right for you.

Memorial Day Screensavers - The Spirit Of Patriotism

Memorial Day is a national holiday in the United States. This day all Americans remember the brave soldiers who gave their life for their country. Memorial Day screensavers can bring a great sense of gratitude and patriotism. Let us see how we can use them. Please look for the following in selecting Memorial Day Screensavers.

Design - Avoid downloading three-dimensional screensavers. Download screensavers with video because video shots look great. Watch for use of colors that symbolize the nation. The design should evoke the feeling of patriotism and remind the users of the sacrifice of life by the brave soldiers. The main object of downloading these screensavers is to remember about the lives that were given by the brave, and the Memorial Day Screensavers must do that. The text on the screensavers must match the occasion. Look at the text carefully and make sure that the colors and fonts are visible and not lost in design. Download screensavers that come with music. Don’t download screensavers without music. Adjust the volume of the music after you download the screensaver.

The other factors that come into play of selection are adware or spyware in the file. These are bad for your system and should be avoided. Don’t download from any website that does not promise screensavers without adware and spyware. In case of doubt, run your anti virus program on the file and remove if any adware is found. Select websites that offer easy installation. Lengthy procedure will be troublesome. Take these small cares and you will be able to feel the mood of the Memorial Day on your desktop with Memorial Day Screensavers

The author C.D.Mohatta writes articles, advice and ideas at http://www.yourromanceguide.com/ on topics like love, dating, marriage, relationships, break-ups, etc. He also writes for screen-savers and desktop wallpapers at http://www.screene.com/ on topics like nature, spirituality, motivation, love-romance, holidays, animals, management etc. The third site, the author writes for, is http://www.cupidecards.com/ - it has free romantic ecards for topics like i love you, i miss you, valentine’s day, love notes, etc.

Electronic Document Management Systems

An electronic document management system is a computer-based system whereby software tools are used to capture, process, index, store, retrieve, distribute and dispose of the documents. The documents may be in the form of spreadsheets, word processing documents, multimedia files and the like. An electronic document management system includes the capturing of documents through scanning, bar coding and optical character recognition, maintaining workflow management by the control of an orderly flow of documents, and the distribution of documents across individuals and departments.

Many of the processes of document management systems are included in electronic document management software, which also allows documents to be captured and stored in the form of graphical images. The software can be run on a personal computer and networked using the company’s existing network. It allows instant access to documents, enhances collaboration with respect to sharing information among departments and offices, and ensures security to files and records.

A user can create a document, attach graphical images and index the document along with the attachment, using the software. Any information on the document can later be accessed simultaneously by all users having a security clearance, irrespective of their geographical location. Subsequent changes and modifications made thereafter are also stored, along with the original document which the other users can view as a complete file. An electronic document management system ensures against misplacement or loss of files due to the provision of an online security system. Also, it makes disaster recovery easy because of the possibility of the external storage of information. In addition to this, the software provides control over the users who can access, view and forward any documents.

An electronic document management system is more cost-efficient than paper-based document management. It saves costs on office space, file cabinets, papers and personnel to maintain the files.

Electronic document management systems can be implemented in organizations where there are large volumes of documents that are difficult to manage and track because of their distant physical locations. It is beneficial to organizations which have to provide instant and multiple access to the information and keep track of all the modifications made by the users to the original documents during its lifecycle. An electronic document management system brings about the centralized management of documents and enables better and faster decisions due to improved workflow management.

Document Management Systems provides detailed information on Document Management Systems, Electronic Document Management Systems, Document Management System Software, Database And Document Management Systems and more. Document Management Systems is affiliated with Document Scanning Services.

CAD India,Raster to vector Conversion,Paper to CAD conversion,3D Modeling,Architectural Drawing

Why Paper to CAD Conversions?

In today’s high tech world one needs to save time, to utilize it for better resources.

In the present era of computers, managing your Paper documents can really be easy. All your architectural, mechanical or engineering drawings or Drafting can easily be converted into digital format.

With the help of CAD, computer aided design; one can address all issues regarding 2D, 3D drawings, raster image scanning.

CAD can convert manual paper drawings into digital format. You just need to lay confidence in the present technology & see what all wonders can be done.

CAD conversion are useful to many industries as they convert paper to digital format. With CAD, existing manual hardcopy drawings get easily converted into Electronic CAD files. These become professional record drawings.

Paper to CAD Conversion offers various benefits as converted drawings give more professional look to your work

All kinds of Engineering Drawings, Mechanical Drawings, Architectural Drawings, and Scanning of Documents can be done with computer aided design.

CAD has found its application in various industries including architectural, engineering and in building industry.

So, utilize this service, to cut down on your paper documents. As this will give an edge to your business over others.

Webmaster -http://www.bluentcad.com

Lotus Domino: Application Integration - A Programmer View

There are two approaches for application integration:

• Programmer’s approach - for applications integration it is necessary to create some program codes;

• Integrator’s approach - in this case special software products are to be used and the integration process set up by those software settings.
The following tools may be used for the first approach:

• ODBC. In Lotus Domino codes may be used:

o Three @-functions (@DbColumn, @DbLookUp and), which work with registrated ODBC-drivers . @DbColumn returns the whole column from external table, @DbLookUp process search by the key, and @DbCommand runs a command of ODBC-driver or external table (for ex, UDATE or DELETE);

o Three inside LotusScript Data Objects (LS:DO), which support connection process, running of SQL-request and provide operations with received result table. This tool is more flexible than usage of described above @-functions (specifically, transactions mechanism, errors handling, etc);

o Free NotesSQL ® ODBC-driver allows calling Lotus Domino databases by SQL. This method is available only for simple Lotus Domino databases, as them are not relation databases and SQL is not good to work with (problems with multiple fields values and different fields set in documents);

• JDBC. For direct using of JDBC mechanism, free IBM JDBC-driver may be downloaded, which allows calling Lotus Domino databases from Java-applications. This approach is better then use NotesSQL ® ODBC-driver, but can not be use with complex databases. JDBC technology also using in some integration mechanisms, but JDBC itself is hidden from the programmer(as example, using build in JSP Custom Tag Libraries);

• OLE. Using of this technology is in the Microsoft platforms frame. If this limitation is acceptable for a task, then using of this technology allows data exchanging from LotusScript to OLE-applications. Specifically it is possible to export data from Lotus Domino to MS Excel or MS Word. This technology often is using to create reports for Lotus Domino data. In Lotus Domino exists Notes/FX mechanism, which implicitly uses OLE- technologies. This mechanism allows to process automatic data exchange between fields of Lotus Domino forms and information stated on OLE-server. Lately Notes/FX are used in really applications very seldom;

• XML. Using of this technology in Lotus Domino R 6 allows processing of Lotus Domino objects’ stream transformation (documents, design elements, ACL, etc.) into XML and back, apply in a stream XSLT to XML, put filters on translated/received information, as well as review XML by build in LotusScript-classes, processed DOM and SAX parsing;

• HTML. If an HTTP task is started on Domino server, then from external applications is available sending/receiving data by of the same name protocol;

• CORBA. This technology used in Lotus Domino more in Java content. Applets, servlets, Domino JSP Custom Tag Libraries, using this technology may exchange data with Lotus Domino;

Apart in integration solutions line are DECS (Domino Enterprise Connection Services), DCR (Data Connection Resources) and LEI (IBM Lotus Enterprise Integrator for Domino) technologies. These technologies except of coding request administration settings to be tuned and may be refer as to first (programmer) as to second (integrator) approaches to integrate applications.

DECS technology allows direct connection with DB2, Oracle, MS SQL Server, Sybase sources, and external sources by ODBC and OLE technologies.

DECS technology requests of the same name task on the Domino server, as well as some settings in DECS Administrator database. Two types of documents can be created in this database:

• Connection, which provides the possibility connecting with an external system. Without details, let say that this document provides the path to external source and login and password for this connection;

• Activity, provides correspondence between Lotus Domino fields and information from external source. The correspondence is assigned by special Lotus Domino form and fields. This document can support up to four case types (form open in Lotus Domino, data changing, deleting or new record creation in Lotus Domino). After Activity document is activated the same processes in external source will be started if the tracking cases happen in Lotus Domino. For example, imputing and saving the new data in Lotus Domino (in case if them are tracking), analog data arrive in external source.

DECS mechanism works correctly in case if external source data are worked with only by Lotus Domino. Otherwise, if the data arrived in external source omitting Lotus Domino they do not automatically transferred to Lotus Domino.

DCR technology appeared in Lotus Domino R 6, is an interface extension for DECS technology and work only with corresponding task on Domino DCR server. Without details, the new design element by name DCR may be considered as analog of Connection document from DECS Administrator database. By the way, analogies of Activity documents are determinated directly in Lotus Domino forms.

LEI technology may be considered as developing of DECS. Using of LEI allows to developers much more possibilities for data processing with build in Lotus Connector Classes for LEI.

Good luck in your system setting up and contact us for any help in Moscow +7 (095) 918-3314, +7 (095) 918-3111 , in USA: 1-866-528-0577!

Alba Spectrum Technologies
USA: 1-866-528-0577, 1-961-5918, Deutschland (0177) 8349 806, Moskau (095) 918 3314

help@albaspectrum.com

P. Gottmann is a technical writer in Ronix Systems (http://www.ronix-systems.com) the European branch of Alba Spectrum Technologies ( http://www.albaspectrum.com ), IBM and Microsoft Business Solutions Partner serving clients in Berlin, Hamburg, Paris, Vienna, Roma, Munich, Madrid, Chicago, New York, Los Angeles, Miami, Denver, Phoenix, London, Sidney, Sao Paulo.

40/sec to 500/sec

Introduction

Surprised, by the title? well, this is a tour of how we cracked the scalability jinx from handling a meagre 40 records per second to 500 records per second. Beware, most of the problems we faced were straight forward, so experienced people might find this superfluous.
Contents

* 1.0 Where were we?

1.1 Memory hits the sky
1.2 Low processing rate
1.3 Data loss :-(
1.4 Mysql pulls us down
1.5 Slow Web Client

* 2.0 Road to Nirvana

2.1 Controlling memory!
2.2 Streamlining processing rate
2.3 What data loss uh-uh?
2.4 Tuning SQL Queries
2.5 Tuning database schema
2.5 Mysql helps us forge ahead!
2.6 Faster…faster Web Client

* 3.0 Bottom line

Where were we?

Initially we had a system which could scale only upto 40 records /sec. I could even recollect the discussion, about “what should be the ideal rate of records? “. Finally we decided that 40/sec was the ideal rate for a single firewall. So when we have to go out, we atleast needed to support 3 firewalls. Hence we decided that 120/sec would be the ideal rate. Based on the data from our competitor(s) we came to the conclusion that, they could support around 240/sec. We thought it was ok! as it was our first release. Because all the competitors talked about the number of firewalls he supported but not on the rate.

Memory hits the sky

Our memory was always hitting the sky even at 512MB! (OutOfMemory exception) We blamed cewolf(s) inmemory caching of the generated images.But we could not escape for long! No matter whether we connected the client or not we used to hit the sky in a couple of days max 3-4 days flat! Interestingly,this was reproducible when we sent data at very high rates(then), of around 50/sec. You guessed it right, an unlimited buffer which grows until it hits the roof.

Low processing rate

We were processing records at the rate of 40/sec. We were using bulk update of dataobject(s). But it did not give the expected speed! Because of this we started to hoard data in memory resulting in hoarding memory!

Data Loss :-(

At very high speeds we used to miss many a packet(s). We seemed to have little data loss, but that resulted in a memory hog. On some tweaking to limit the buffer size we started having a steady data loss of about 20% at very high rates.

Mysql pulls us down

We were facing a tough time when we imported a log file of about 140MB. Mysql started to hog,the machine started crawling and sometimes it even stopped responding.Above all, we started getting deadlock(s) and transaction timeout(s). Which eventually reduced the responsiveness of the system.

Slow Web Client

Here again we blamed the number of graphs we showed in a page as the bottleneck, ignoring the fact that there were many other factors that were pulling the system down. The pages used to take 30 seconds to load for a page with 6-8 graphs and tables after 4 days at Internet Data Center.

Road To Nirvana

Controlling Memory!

We tried to put a limit on the buffer size of 10,000, but it did not last for long. The major flaw in the design was that we assumed that the buffer of around 10000 would suffice, i.e we would be process records before the buffer of 10,1000 reaches. Inline with the principle “Something can go wrong it will go wrong!” it went wrong. We started loosing data. Subsesquently we decided to go with a flat file based caching, wherein the data was dumped into the flat file and would be loaded into the database using “load data infile”. This was many times faster than an bulk insert via database driver. you might also want to checkout some possible optimizations with load data infile. This fixed our problem of increasing buffer size of the raw records.

The second problem we faced was the increase of cewolf(s) in memory caching mechanism. By default it used “TransientSessionStorage” which caches the image objects in memory, there seemed to be some problem in cleaning up the objects, even after the rerferences were lost! So we wrote a small “FileStorage” implementation which store the image objects in the local file. And would be served as and when the request comes in. Moreover, we also implmentated a cleanup mechanism to cleanup stale images( images older than 10mins).

Another interesting aspect we found here was that the Garbage collector had lowest priority so the objects created for each records , were hardly cleaned up. Here is a little math to explain the magnitude of the problem. Whenever we receive a log record we created ~20 objects(hashmap,tokenized strings etc) so at the rate of 500/sec for 1 second, the number of objects was 10,000(20*500*1). Due to the heavy processing Garbage collector never had a chance to cleanup the objects. So all we had to do was a minor tweak, we just assigned “null” to the object references. Voila! the garbage collector was never tortured I guess ;-)

Streamlining processing rate

The processing rate was at a meagre 40/sec that means that we could hardly withstand even a small outburst of log records! The memory control gave us some solace,but the actual problem was with the application of the alert filters over the records. We had around 20 properties for each record, we used to search for all the properties. We changed the implementation to match for those properties we had criteria for! Moreover, we also had a memory leak in the alert filter processing. We maintained a queue which grew forever. So we had to maintain a flat file object dumping to avoid re-parsing of records to form objects! Moreover, we used to do the act of searching for a match for each of the property even when we had no alert criteria configured.

What data loss uh-uh?

Once we fixed the memory issues in receiving data i.e dumping into flat file, we never lost data! In addition to that we had to remove a couple of unwanted indexes in the raw table to avoid the overhead while dumping data. We hadd indexes for columns which could have a maximum of 3 possible values. Which actually made the insert slower and was not useful.

Tuning SQL Queries

Your queries are your keys to performance. Once you start nailing the issues, you will see that you might even have to de-normalize the tables. We did it! Here is some of the key learnings:

* Use “Analyze table” to identify how the mysql query works. This will give you insight about why the query is slow, i.e whether it is using the correct indexes, whether it is using a table level scan etc.

* Never delete rows when you deal with huge data in the order of 50,000 records in a single table. Always try to do a “drop table” as much as possible. If it is not possible, redesign your schema, that is your only way out!

* Avoid unwanted join(s), don’t be afraid to de-normalize (i.e duplicate the column values) Avoid join(s) as much as possible, they tend to pull your query down. One hidden advantage is the fact that they impose simplicity in your queries.

* If you are dealing with bulk data, always use “load data infile” there are two options here, local and remote. Use local if the mysql and the application are in the same machine otherwise use remote.

* Try to split your complex queries into two or three simpler queries. The advantages in this approach are that the mysql resource is not hogged up for the entire process. Tend to use temporary tables. Instead of using a single query which spans across 5-6 tables.

* When you deal with huge amount of data, i.e you want to proces say 50,000 records or more in a single query try using limit to batch process the records. This will help you scale the system to new heights

* Always use smaller transaction(s) instead of large ones i.e spanning across “n” tables. This locks up the mysql resources, which might cause slowness of the system even for simple queries

* Use join(s) on columns with indexes or foreign keys

* Ensure that the the queries from the user interface have criteria or limit.

* Also ensure that the criteria column is indexed

* Do not have the numeric value in sql criteria within quotes, because mysql does a type cast

* use temporary tables as much as possible, and drop it…

* Insert of select/delete is a double table lock… be aware…

* Take care that you do not pain the mysql database with the frequency of your updates to the database. We had a typical case we used to dump to the database after every 300 records. So when we started testing for 500/sec we started seeing that the mysql was literally dragging us down. That is when we realized that the typicall at the rate of 500/sec there is an “load data infile” request every second to the mysql database. So we had to change to dump the records after 3 minutes rather than 300 records.

Tuning database schema

When you deal with huge amount of data, always ensure that you partition your data. That is your road to scalability. A single table with say 10 lakhs can never scale. When you intend to execute queries for reports. Always have two levels of tables, raw tables one for the actual data and another set for the report tables( the tables which the user interfaces query on!) Always ensure that the data on your report tables never grows beyond a limit. Incase you are planning to use Oracle, you can try out the partitioning based on criteria. But unfortunately mysql does not support that. So we will have to do that. Maintain a meta table in which you have the header information i.e which table to look for, for a set of given criteria normally time.

* We had to walk through our database schema and we added to add some indexes, delete some and even duplicated column(s) to remove costly join(s).

* Going forward we realized that having the raw tables as InnoDB was actually a overhead to the system, so we changed it to MyISAM

* We also went to the extent of reducing the number of rows in static tables involved in joins

* NULL in database tables seems to cause some performance hit, so avoid them

* Don’t have indexes for columns which has allowed values of 2-3

* Cross check the need for each index in your table, they are costly. If the tables are of InnoDB then double check their need. Because InnoDB tables seem to take around 10-15 times the size of the MyISAM tables.

* Use MyISAM whenever there is a majority of , either one of (select or insert) queries. If the insert and select are going to be more then it is better to have it as an InnoDB

Mysql helps us forge ahead!

Tune your mysql server ONLY after you fine tune your queries/schemas and your code. Only then you can see a perceivable improvement in performance. Here are some of the parameters that comes in handy:

* Use the buffer pool size which will enable your queries to execute faster –innodb_buffer_pool_size=64M for InnoDB and use –key-bufer-size=32M for MyISAM

* Even simple queries started taking more time than expected. We were actually puzzled! We realized that mysql seems to load the index of any table it starts inserting on. So what typically happened was, any simple query to a table with 5-10 rows took around 1-2 secs. On further analysis we found that just before the simple query , “load data infile” happened. This disappeared when we changed the raw tables to MyISAM type, because the buffer size for innodb and MyISAM are two different configurations.

for more configurable parameters see here.

Tip: start your mysql to start with the following option –log-error this will enable error logging

Faster…faster Web Client

The user interface is the key to any product, especially the perceived speed of the page is more important! Here is a list of solutions and learnings that might come in handy:

* If your data is not going to change for say 3-5 minutes, it is better to cache your client side pages

* Tend to use Iframe(s)for inner graphs etc. they give a perceived fastness to your pages. Better still use the javascript based content loading mechanism. This is something you might want to do when you have say 3+ graphs in the same page.

* Internet explorer displays the whole page only when all the contents are received from the server. So it is advisable to use iframes or javascript for content loading.

* Never use multiple/duplicate entries of the CSS file in the html page. Internet explorer tends to load each CSS file as a separate entry and applies on the complete page!

Bottomline
Your queries and schema make the system slower! Fix them first and then blame the database!

See Also

* High Performance Mysql

* Query Performance

* Explain Query

* Optimizing Queries

* InnoDB Tuning

* Tuning Mysql

Categories: Firewall Analyzer | Performance Tips
This page was last modified 18:00, 31 August 2005.

-Ramesh-

Protect Your Computer…and Your Business!

We all take the computer for granted. I mean, all we have to do is switch it on and it’s ready to go. But did you ever stop to think what would happen if your computer suddenly crashed? And that is the only computer you have to work on!

What will happen to your work and your business for the next few days or weeks?

Do you have the original or a copy of all your programs?

Do you have the setup configurations, eg for your ISP?. You will need this to re-install some programs.

Do you have a copy of your email address book? Your email list or address book is vital to your business.

Do you remember all your passwords - for retrieving email, connecting to your ISP, membership sites, etc?

So what can you do to ensure that your computer will run as well as you’d expect, and continue working when your computer is down? Here’s a few simple tips:

1.Is your computer protected from viruses? Install an anti-virus software such as Norton AntiVirus or McAfee, and make sure to get regular updates. New viruses are coming out more often these days so you need to have updates regularly. Anything more than 3 months old needs to be updated today.

You can do an online virus scan at: http://housecall.antivirus.com

2.Install a firewall. Anytime your computer is connected to the Internet without a firewall, it is operating under an “open door” policy to intruders. Hackers can get in, take what they want, and even leave open a “back door” so they can turn your computer into a “zombie” and use it to attack other computers, distribute porn and spam.

Your bank account and credit card information, passwords, documents and personal files can be stolen while you’re busy surfing. Don’t let that happen!

You can download a personal firewall from here:
http://www.zonelabs.com or from http://soho.sygate.com/products/spf_standard.htm

3. Make regular backups of your important files. Keep a record of all vital information, such as passwords, system configurations, etc. in a file and also print a copy of this and keep in a safe place. Make a duplicate and keep at another location.

If your computer does not come with a zip drive or CDRW drive, it would be a good idea to invest in one. Zip drives and CDRW drives are inexpensive and can be easily installed. The cost of a blank CD for example is less than $1.00 and can store up to 650MB of data.

If you lost some files or your hard disk crashed you can easily retrieve them from the backups. And if your computer is down for repair, you can take that backup CD and work from another machine.

4.Remove all unwanted files on your hard disk. You can safely remove files in your temporary internet folder. In Internet Explorer, select Tools -> Internet options - > Delete Files.

5.Increase your systems performance by defragmenting your hard disk regularly. As applications and files are saved and deleted they gradually cause your hard disk to fragment. By defragmenting your hard disk you can optimise the performance of your computer. Defragmenting may also save wear and tear on your hard disk and extend its lifespan.

Do this today.

About The Author

About the author: Ahmad Supaat provides work-at-home ideas and opportunites for anyone interested to start a business online. For more information please visit http://insiderprofit.com. Subscribe to the “Insiderprofit Home Business Tips”: mailto:insiderprofit@getresponse.com, mailto:insiderprofit@yahoo.com

Microsoft Great Plains Integration Manager - Advanced Techniques

Great Plains Integration Manager scripting and translation - overview for programmer, software developer, database administrator, IT specialist

Microsoft Business Solutions main middle market ERP application - Microsoft Great Plains has multiple integration options: MS SQL Scripting (stored procedures and views), ADO.Net programming, Microsoft SQL Server DTS packages. You certainly can deploy such SDK tools as eConnect. However here we would like to show you how to program the simplest user friendly tool: Microsoft Great Plains Integration Manager.

We assume that you are familiar with Microsoft scripting technologies: Visual Basic for Application (VBA). You should be aware, however, about poor performance of Integration Manager. We recommend it for low volume of complex transactions. It is good tool, if you are importing about 100 transactions per day from text file (when you need to come through empty lines or something not matching the template to filter integration lines). If you have thousand transactions and performance is critical - switch to SQL Stored procs or Dexterity custom process server.

1. VBA Scripting - Launch Great Plains Integration Manager, open your integration, right click->Properties, switch tab to scripts, open Before Document script. Now place this code in it:


If Left(SourceFields(”F4″), 4)=”THRU” Then

SetVariable “DocDate”, Right(SourceFields(”F4″), 8) 

End If

If IsNull(SourceFields(”F1″)) Or IsNull(SourceFields(”F7″)) Then

CancelDocument

End If

It should mean that you can create DocDate variable and assign it the value from your query field.  The second statement cancels document integration if certain condition met (when line is empty or is not actually integration line - something like comment record, etc.)

Now open Before Document Commit script and place this code there:

Dim MyTime, MyHour

MyTime = Now

MyHour = Hour(MyTime)

If Not IsNull(GetVariable(”DocDate”)) then

SetVariable “DocNumber”, GetVariable(”DocNumber”)+1

DestinationFields(”Document Number”)=”THRU”+GetVariable(”DocDate”) &”A” & GetVariable(”DocNumber”)

DestinationFields(”Posting Date”)=GetVariable(”DocDate”)

DestinationFields(”Description”)=”Client Check “+ SourceFields(”F1″)

If Not IsNull(SourceFields(”F8″)) Then

DestinationFields(”Check.Check Number”)=SourceFields(”F8″)

Else

SetVariable “DocNumber”, GetVariable(”DocNumber”)+1

DestinationFields(”Check.Check Number”)=GetVariable(”DocDate”)& MyHour&GetVariable(”DocNumber”)

End If

DestinationFields(”Check.Date”)=GetVariable(”DocDate”)

If Month(DestinationFields(”Check.Date”)+1)= Month(DestinationFields(”Check.Date”)) Then

DestinationFields(”Check.Date”)=DestinationFields(”Check.Date”)+1

End If

End If

Here you do two things.  First you construct check number, using Date and time plus Document number.  And the second is even more interesting - you alter check date.

In After Integration script place this code:

ClearVariables

It is good idea to nullify your variables.

2. Translation. Imagine that your are something like collection agency and you need to translate your vendors (from whom you purchase AR) into real vendors (banks). In AP integration open Destination Mapping, select Vendor ID, in the Rule Properties, click on the button next to Translation field, answer No, click on Translation tab and paste from Excel your translation list, something like this:


JOHNB	BANKOFAMERICA

PETERP	BANKOFAMERICA

MARTHAM	CITIBANK

Now your vendors from integration file will be replaced with real vendors from Great Plains.

Happy integrating! if you want us to do the job - give us a call 1-866-528-0577! help@albaspectrum.com

About The Author

Andrew Karasev is Chief Technology Officer in Alba Spectrum Technologies - USA nationwide Great Plains, Microsoft CRM customization company, based in Chicago, California, Colorado, Arizona, New York, Texas, Florida, Georgia, Canada, UK, Australia and having locations in multiple states and internationally (www.albaspectrum.com), he is Dexterity, SQL, C#.Net, Crystal Reports and Microsoft CRM SDK developer; akarasev@albaspectrum.com

Next Page »