Friday, May 29, 2009

Visual FoxPro is still here, still very relevant

I am writing this article because I read a very interesting article about Visual FoxPro on SD Times web site! The title of the article is ‘Where have you gone, Visual FoxPro?’ Even though the Article did some justice to the FoxPro Product, and its great contributions and the many product milestones, I still thought that the basic question posed by the article had to be answered. This is important to many of us who still use Visual FoxPro to architect and deliver great MIS Products because as far as we are concerned, Visual FoxPro is still very much here!

So what then can we say is Visual FoxPro’s place in an enterprise application architecture today? Is it relevant when compared to other alternative offerings from Microsoft – the company that makes Visual FoxPro! This article attempts to document our experiences as a company that sells many custom-developed application software products made with virtually all of Microsoft’s Database Offerings (Ms-SQL Server, Ms Access and Of course Ms Visual FoxPro)!

I first started using FoxPro in 1992! Then it was version 1.01 running on a PCMOS 4.1 Network. I was fresh out of school with some little programming knowledge on GW-Basic, MF Cobol and dBASE III! The Mortgage Bank I joined and worked for ran its Banking Software (Swift Banking System) written with Clipper 5 on a FoxPro Database. At the time, most people wrote their programs on dBASE IV and then had those programs compiled with FoxPro or with Clipper! I fell in love with FoxPro immediately because it was so easy to use and had a much more polished interface than dBASE IV and what is more, I was also very impressed that a package as huge as Banking was running on a FoxPro box and was very stable in indeed!

Then in 1993, I left the banking sector and did not again use FoxPro until 2001 when I taught ‘Building solutions with Visual FoxPro 6.0’ to Students at MicroLink College (then the school had the option to use either Microsoft Access or Visual FoxPro to demonstrate Database Concepts)! It was during this time that I started exploring the idea of developing a powerful, versatile, modern and affordable MIS Package for Colleges and Universities since the college at that time had no computerized data storage and retrieval system – that package would eventually today become CampusManager™ University Advantage – still in commercial distribution and in use among several University Colleges in Ethiopia today (and running as a pure Fox solution).

The requirement was for a system that is feature –rich, user friendly, provided reasonable storage capacities for the sort of volumes of data that could be generated by a school or university college and was yet affordable by schools in the third-world. The combined features of an affordable and feature-rich system was necessary because most of the clients that buy our system can be considered as small or medium-scale enterprises that will ‘balk’ at the cost involved in licensing Ms SQL Server or Oracle Databases. Also, the programs would be running in an environment where these organizations may not necessary afford thousands of dollars to retain trained SQL Server or Oracle DBA’s so the system had to be light, easy to run and still provide all the storage capacity and power of an enterprise solution built to run on SQL Server or Oracle!

This reality for us was underscored by the fact that most of the Visual Basic programs we wrote that were designed to run with MS SQL Server; have always suffered from customer (small to medium scale organizations) complaints - Managers do not simply find that purchasing expensive Ms SQL Server database licenses is somewhat prohibitive! At the same time, Microsoft Access (Jet Database Engine)/MSDE did not present an attractive alternative because of the 2GB File Size limit that would sooner rather than later force a mid-sized company to look for alternative storage. Add to this the fact that in a typical school, we would have more than 10 users working at a time and Access’s well documented behavior when 10 (ten) or more users are accessing the database concurrently! To summarize, our ‘business parameters’ for selecting an application development tool for our CampusManager™ Offering was (and still is) as follows:

* System must be feature rich
* System must provide reasonable storage capacity for at least 5 years for a school or college with about 2000 student population
* System must be capable of supporting at least 20 concurrent users without signs of stress (imagine that at least 15 homeroom teachers at a time have to record marks and enter grading information during peak period such as exam time concurrently along with other routine activities by staff and faculty). Our first site, a premium private school boasted 60 homeroom teachers (Grades 1 to 12 each with five sections A to E)
* System has to be capable of routine performance on just about any environment (the first school we sold to had a P3 Server with Two Processors) since in our market, most clients may just have a PCs and may never even have heard of Servers
* System must be light and fast and be able to be easily, deployed, configured and implemented in the end-users environment
* Total cost of ownership for the system must be kept to a minimum. For example, can users easily administer the database (most of our clients may have a teacher or two with a background in simple applications and so would not possess the type of skills required to manage a typical SQL Server Database). FoxPro in contrast is easy and fun to learn!
* System must be affordable. If our clients can pay not only for our system but also license the database engine for online database maintenance, it is great for them and for us!

So for us it is against this backdrop that we realized that we had a copy of Visual FoxPro bundled with our Visual Studio 6.0 suite of enterprise development tools. After carefully assessing our options, we came to the conclusion that Visual FoxPro 6.0 was the best tool in the Visual Studio suite (we had been concentrating on Visual Basic and Visual C++ against Jet/SQL Server for our other applications) to build a fast, data-centric MIS system for schools, colleges and universities because it just about offered the right combination of power, speed, storage capacity and licensing cost for the market we wanted to target with our system. For us, this meant that we would not have to ‘fight’ with our clients about expensive database licensing nor would we have to explain why our clients need to move to a more expensive Database Server after just 2-3 years. At the same time, should the need arise, we can easily upgrade the system to run on a bigger database engine (such as SQL server or the Advantage Database Server that now provides full Visual FoxPro Compatibility) without expensive code rewrites!

Since our software was released in June of 2006, we have upgraded to using Visual FoxPro 9.0 and have found that our product has elicited quite a lot of interest because of the attractive cost of the package and licensing terms for a VFP Database (optional). But whether our clients accept to buy VFP Database licenses or not (in which case they can use the VFP runtime), our product is still a money-spinner for Microsoft since our clients will still need to license Microsoft Windows to run the application; plus, they always license the application with a promise to upgrade to Ms SQL after a number of years.

A couple of months after SD Times posed the question “Where have you gone Visual FoxPro?”; we want to supply an emphatic answer – “Visual FoxPro is still here today! Visual FoxPro is still very relevant in the enterprise!” Here in Africa, we are using Visual FoxPro to build modern, powerful, object-oriented and affordable applications for fast growing companies!

And yes! Even though Microsoft says they shall make Visual FoxPro no longer, the product can only get better as many members in the community work to make great add-ons and improvements in the product, adding badly needed functionality. With some of the cool tools we have found on CodePlex such as VFPX and most especially ActiveVFP, we can say that we are in no great hurry to re-write our application on the .NET framework anytime soon

Get Rid of Porn-how to Get Rid of Porn From Your Computer

Get rid of porn today! This is important to get rid of porn from your hard drive or it can lend you in some serious trouble! Sometimes while you browse the internet porn fragments and popups install themselves into your registry and it is almost impossible to get rid of this stuff. They always popup on your screen and do generally have viruses and spy ware attached to them! Whether you downloaded the porn yourself or it entered the computer by itself you need to get rid of porn fast!!!

The problem with internet porn fragments is it burries itself deep inside your hard drive and it makes getting rid of porn almost impossible task. Once it is on your hard drive you will NOT get rid of it wihout special porn deletion software! Any porn fragments can be traced back and found on your hard drive no matter how hard you try to get rid of it and this can cost you a pretty penny if you get traced by computer forensics and it can lend you in jail for illegal pornography! This is exactly why you need to get rid of porn now and Porn Terminator Porn Cleaner Works!

I had constant porn popups when i was browsing the internet and my hard drive and registry was fully littered with porn so i had to find a way to get rid of porn from my harddrive and i stumbled upon The Porn Terminator and i decided to give it a shot because i had no time to lose and i didn't want to lose my family or my job because my hardrive was littered with porn. I bought the software and downloaded it and within about 15 minutes i got rid of all porn that was inhibiting my computer, so getting rid of porn is possible and it can be done with the right software! I got rid of all porn on my harddrive and i encourage you to do thesame! Why risk everything you love

An Innovative Database Design Method

This article is intended to give you a single idea that we think is innovative and that you can hopefully use to spur on your design and development tasks and help you build a database system that will meet most if not all of your needs.

The Problems Encountered at the End of a Project

Toward the end of a project, just as you are about to go live with your new database system is often when things can go wrong forcing you to delay the introduction of your new database system.

For this reason, thinking ahead with the notion of meeting as many of the needs your company can use and preparing the ground work for documenting new requirements as they unfold and avoiding a troublesome ending should be at the forefront of your thoughts.

You can do something to prevent this from happing by planning ahead and by setting up an innovative method of documenting the design, development and deployment process with a separate dynamic database model.

The Solution

It all begins by documenting your new database feasibility study and your systems analysis effort and incorporating these documents into your final set of design notes that capture your business requirements, business logic and transactional data into the complete package.

The entire set of design notes could now be inserted into a separate database identified as the “Design Notes Metadata Database” or some similar title. Each table could relate to a major project phase such as requirements gathering, business data and logic collecting, table design and development, test data accumulation, testing, etc.

Each record within every table could relate to a feature of the new database and each field within that metadata record could describe a component of the feature. The record descriptions would remain intact through out the entire design, development, test, deployment and operation. They would in addition remain available for continual update and reference for new employees just becoming familiar with the application.

The entire process can contribute enormously to clarifying data during development and later when maintenance or troubleshooting needs to be performed, or new features need to be added. It would be a simple matter to query the metadata database and discover necessary information you can use to take the appropriate action.

Because all the design notes are embedded in a separate metadata database and because this represents a dynamic maintainable database that is updated during all phases of the project – you should not find yourself in trouble at the end of your project.

Better Data Acquisition with More Articulate Database Designs

Environmental data and life science studies are heavily dependent on data acquisition systems and these in turn are becoming more noticeably dependent on well designed collection systems best represented by database systems. The more articulate these database systems become the more accurate and plentiful does knowledge in these areas rise.

The environment and life science data collected thus far in history is beginning to become richer in terms of metadata and mapping strategies for building more dynamic databases. These new inputs help design closer phraseologies matching the scientific, engineering and technical scenarios necessary to build each new generational model.

Computers have long ago outperformed the promises made by database applications that suggested we would be able to easily collect various real world signals and waveforms and easily extract critical information for subsequent use as a systematic controlling agent for dynamic expansion of knowledge acquisition.

But as our data acquisition has grown exponentially through better sensors and more elaborate instrumentation, our knowledge acquisition has not. That is, until maybe, now. The heart of the solution might be the database system concepts slowly emerging and their more articulate reach into semantic scenario measurement systems.

Sensors working in conjunction with instruments all tied to a data logger provide the measurement configuration. Data loggers are electronic devices that collect data over time or in a specific radius.

These immediate flat data files connected to data loggers house the raw sensor signals. Their readings are periodically transferred to simple but more secure databases which in turn contribute to a knowledge database management system as more data feeds into relational and hierarchical databases.

The Knowledge base grows as the feed into relational and hierarchical database management systems grow to provide level-tag assignments and assist in the eventual manipulation that will be necessary for successful extraction of meaningful real world data to help develop an insight in understanding the environment.

Through the use of a human interface and because the databases mentioned above are so well mapped with predetermined location and expectation tags and are strongly aided with relevant metadata, a system of data highlighted reports are produced that help suggest different kinds of conclusions both scientific technical for practical engineering purposes.

This process continues to evolve into more intricate patterns as database designs become more articulate in their abilities to store, compare, manipulate and report data.

Database Management System Types and their Characteristics

Database management has become important part of every company that has got data to be managed and handled. Server databases and desktop databases are two types of database management systems. The desktop one is concerned with single-user applications and is connected with standard personal computers.

Whereas the server database is mainly connected with multi-user applications and have greater reliability and data consistency. It is costlier than desktop database and operates on high performance servers.

Any website should not blindly dive into the conclusion of database design selection, proper pre-analysis and research is necessary. Sometimes it happens that you decide to buy expensive server database but when calculating your business requirements, desktop database seems to be proper. Also many times requirements for server based database also arises.

In order to analyze the needs of the company about which database would be best, certain points have to clear. Like in how much time will your company data need to be changed and who would make these changes. The concerned authority who would be in-charge of using database and the work they would perform should be known. Also the person responsible for maintenance for data and the source that would be providing IT support should be having knowledge. See to it that which hardware is available and the budget for purchasing the hardware.

After clearing these important issues you can start the procedure of specific database management system evaluation. In order to fulfill database's complex needs, you may require sophisticated server platform that is multi-user based as in Oracle and SQL server. For simpler needs desktop database is the right choice like Microsoft Access. It is inexpensive and offers simple data storage and manipulation facilities. As the name suggests it operates on personal computers and is best for them. Apart from Microsoft Access, Lotus, FileMaker Pro, FoxPro and Paradox are some popular desktop database software.

Oracle, Microsoft SQL server and IBM DB-2 are some popular server databases. They provide enough expertise to manage large amount of data effectively and users can access to these data whenever required. The companies that can afford this particular type of database, they can get the benefit of detailed data management design and solution.

Thus a well structured and planned database design provides a strong base for future company success. Henceforth you can plan accordingly for better performance and futuristic growth.

Reverse Engineering MySQL Database Driven Applications on Windows

Version:1.0 StartHTML:0000000168 EndHTML:0000008367 StartFragment:0000000499 EndFragment:0000008350
Introduction

You've just started a new job, you need to hit the ground running and quickly, but the rest of the team are “too busy” with their work and you don't want to keep pestering your new colleagues or boss with questions. Enter the MySQL Binary Log.

If you have never heard of the Binary Log I suggest at least finding out what it is and what it is usually used for before you continue with the tutorial.
Tools of the trade

O.K. Let's start with the tools required for the job. You will need to download a neat little toolkit called unxutils from Source Forge and make sure it's install path is referenced in your Path. Unxutils is a handy tool which brings many Unix commands to the windows desktop. It especially useful if you commonly switch between Windows and Linux platforms. Once you have done this you need to open a Command Prompt window and test to make sure you can access the commands. Type the following command and hit enter.

ls -l

If you get a directory listing you can happily move on to the next step. Enabling the Binary Log on Windows. The above command was simply to test if unxutils was installed correctly.
The Service

If you search Google for "Enabling MySQL Binary Log on Windows" you will get a stack of results returned some of which will lead you to MySQL bug status results. The reason for this is that since most Windows users will have MySQL installed, using a Windows installer, on their system as a Service and by default Binary Logging is not enabled. If you follow the below instructions to the letter you will be one of few who has Binary Logging enabled on a Windows box.

For this example I am going to install another MySQL Service along side my original one as I do not wish to use Binary Logging all the time. If you already have a MySQL Service running make sure you stop it at this point. If you don't already have the command line open from the first task then fire it up and type the following command.

sc create MySQLBinLogging binPath= ""C:PathToMySQL Serverbinmysqld" --log-bin=yourmachinename MySQL"

After you have run this command you should see a success message at which point you can open the services manager and start the service. On a typical MySQL installation the binary log file will be located in the MySQL data directory on Vista this is typically in “C:ProgramDataMySQL Serverdata” and will be named as you specified with the –log-bin directive when installing the service. The log file is rotated on a size basis so the first log file should have a suffix of 000001 and so on. At this point we are ready to extract the juicy data we have been waiting to get at.
The Data

Again we will be operating from the command line for now so assuming you still have it open change your path to the data directory where the log file is type the following command and hit enter.

tail -f mylogfile

And that is it. If you want to output the data into a text file for further analysis just type the following.

tail -f mylogfile > myoutputfile.txt

NOTE: The binary log only stored update data so you won't get your select data here. You will need to work with the General Query Log for selects.

XML Databases Dynamically Redefine Meta-Databases

More and more implementations of XML related software are beginning to prove that the tree-like structures of XML databases may be the best useful working models of meta-databases with web service connections through web applications.

As you know, metadata is essential for understanding information stored in relational databases through schemas and other descriptors and has become increasingly important in supporting the growing notion that relational databases are falling behind when it comes to wireless networks, sensory arrays and numerous other kinds of complex networks associated with the corporate world of data trafficking.

Since metadata can describe how and when and by whom a particular set of data was collected, and how the data is formatted it can nicely become useful in a tree-like structure with attribute-tags serving as data-about-data.

For many years, databases were implemented as relation structures that kept records of kinds of data that many times lacked the appropriate pre-design and semantic relationships necessary for a normative vocabulary. This approach did not work well with different partially structured data types. But since many other kinds of data where already becoming well established within the specifications of relational type implementations, the concept of a regular corporate database became synonymous with being a relational model.

However, this started to change as the group of people who kept databases became more diverse. The more database designers began to explore the limits of the medium and of the electronic technology that made it possible, the more the boundaries of what could be called a "database" expanded.

Today, mobile data streaming devices may well change the definition of meta-databases entirely by making it possible for database designers to create new kinds of postings through growing web services connections. XML databases give designers a new flexibility in tying multiple kinds of different platforms to work together as one system

Another element of the XML database class of software that is starting to redefine meta-databases is the corporate database. The XML software has opened up a wide variety of web services that are drastically rearranging the IT departments within corporations.

As more companies experience the benefits of using XML datasets as metadata models for controlling relational structures with XML software, the more dynamic will the use of meta-databases become. Between all of these different forces that are constantly expanding and reshaping the XML database sphere of software, the more we will see new semantic tag systems reaching through the self defining nature of XML.