This commit is contained in:
gferg 2001-07-04 19:03:03 +00:00
parent 3ba2c43a28
commit 70a4ef4b56
5 changed files with 359 additions and 99 deletions

View File

@ -42,7 +42,7 @@ C++ Programming HOW-TO
<author>Al Dev (Alavoor Vasudevan)
<htmlurl url="mailto:alavoor@yahoo.com"
name="alavoor@yahoo.com">
<date>v40.0, 14 June 2001
<date>v40.1, 01 July 2001
<abstract>
This document provides a comprehensive list of C++ URL
pointers, links to C++ online textbooks, and programming tips on C++.
@ -1560,6 +1560,10 @@ Visit the following sites for Java like API for C++
The following IDE tools (Integrated Development Environment) are available for
C++:
<itemize>
<item> The "top rated" Dev-C++ is an full-featured Integrated Development Environment (IDE)
for both Win32 and Linux. It uses GCC, Mingw or Cygwin as compiler and libraries set.
It is at <url url="http://www.bloodshed.net/devcpp.html">
and at <url name="mirror-site" url="http://sourceforge.net/projects/dev-cpp">
<item> KDE <url name="Kdevelop" url="http://www.kdevelop.org">
<item> Blatura site <url name="C++ Tools" url="http://home.xnet.com/~blatura/linapp6.html#tools">
<item> Amulet <url name="Amulet" url="http://www.cs.cmu.edu/afs/cs.cmu.edu/project/amulet/www">

View File

@ -44,7 +44,7 @@ Revision Control System
<author>Al Dev (Alavoor Vasudevan)
<htmlurl url="mailto:alavoor@yahoo.com"
name="alavoor@yahoo.com">
<date>v21.0, 14 June 2001
<date>v21.2, 02 July 2001
<abstract>
This document is a "practical guide" to very quickly setup CVS/RCS source code
control system. This document has custom shell scripts which are wrappers
@ -71,8 +71,8 @@ flavors of Unix liks Solaris, HPUX, AIX, SCO, Sinix, BSD, SCO, etc.. and BeOS.
-->
<sect>Introduction
<p>
Source code control system is a MUST to manage
the changes occuring to software project during development. Developers need a complete history of changes
A source code control system is a MUST to manage
the changes occurring to software project during development. Developers need a complete history of changes
to backtrack to previous versions in case of any problems.
Since source code is the most vital component of any software project and
software development takes a huge amount of time and money, it is very important to spend some
@ -80,7 +80,7 @@ time in <it><bf>safe-guarding</bf></it> the source code by using source code con
<p>
CVS (Concurrent Version Control System) is a powerful tool which allows
concurrent development of software by multiple users. It uses RCS
underneath and has application layer interface as a wrapper on top RCS.
underneath and has an application layer interface as a wrapper on top of RCS.
CVS can record the history of your files (usually,
but not always, source code). CVS only stores the differences
@ -1243,6 +1243,7 @@ print "Please enter description (will be used for"
print -n "all the files checked in) : "
read description
# Option prune does not work, use -maxdepth 0
#find * -prune -type f |
# The number of args is zero or more....
@ -1252,7 +1253,9 @@ else
listoffiles="$@"
fi
find $listoffiles -prune -type f |
# Option prune does not work, use -maxdepth 0
#find $listoffiles -prune -type f |
find $listoffiles -maxdepth 0 -type f |
while read ii
do
#echo $ii
@ -1929,7 +1932,8 @@ fi
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -2169,7 +2173,8 @@ mkdir -p "$CVSROOT/$subdir/Locks" 2>/dev/null
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -2473,7 +2478,8 @@ fi
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -2639,10 +2645,12 @@ fi
#echo "all args : " $@
if [ $# -eq 0 ]; then
tmpbb=` find * -prune -type d `
#tmpbb=` find * -prune -type d `
tmpbb=` find * -maxdepth 0 -type d `
elif [ $# -eq 1 ]; then
if [ "$1" = "." ]; then
tmpbb=` find * -prune -type d `
#tmpbb=` find * -prune -type d `
tmpbb=` find * -maxdepth 0 -type d `
else
if [ -d $1 -a ! -d $CVSROOT/$subdir/$1 ]; then
print "\nThe directory $subdir/$1 does not exist in $CVSROOT"
@ -2679,7 +2687,9 @@ fi
# Get all the files in the current directory
listfiles=`ls $tmpbb `
find * -prune -type f |
# Option prune does not work use maxdepth
#find * -prune -type f |
find * -maxdepth 0 -type f |
while read ii
do
for jj in $listfiles ; do
@ -2771,7 +2781,8 @@ fi
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -2914,7 +2925,8 @@ fi
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -3048,7 +3060,8 @@ fi
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -3162,7 +3175,8 @@ fi
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -3316,7 +3330,8 @@ fi
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
@ -3455,7 +3470,8 @@ subdir=` echo $cur_dir | cut -b $len-2000 `
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"

View File

@ -37,7 +37,7 @@
" name="
bri@cs.uchicago.edu
">
<date>v2.8, 14 June 2001
<date>v2.9, 04 July 2001
<abstract>
This is a detailed guide to kernel configuration, compilation, upgrades,
@ -144,8 +144,6 @@ The latest version of this section is at <url url="http://www.aldev.8m.com"> and
These sites have <bf>lots of linux goodies</bf> and tips.
A copy of the above web-site is reproduced here -
Kernel re-compile is required in order to make the kernel very lean
and which will result in FASTER operating system . It is also
required to support any new devices.
@ -155,7 +153,7 @@ tested on Redhat Linux, but it should work for other distributions with
very minor changes.
<enum>
<item> Note: You can have many kernel images on your system. By following the steps below
<item> <bf>Note:</bf> You can have many kernel images on your system. By following the steps below
you do not overwrite or damage your existing kernel. These steps are <bf>very safe</bf>
and your current kernel will be intact and will not be touched.
<p>
@ -172,28 +170,32 @@ bash# rpm -i bin86*.rpm
(The bin86*.rpm and 'as86' is required only for <bf>OLDER Linux</bf> systems like redhat 5.x.
Get Intel assembler 'as86' command from
dev86*.rpm on cdrom or from
<url url="http://rpmfind.net/linux/RPM/mandrake/7.1/Mandrake/RPMS/bin86-0.4-12mdk.i586.html">
, <url url="http://rpmfind.net/linux/RPM/kondara/jirai/i586/bin86-0.4-8k.i586.html">
<url name="bin86-mandrake" url="http://rpmfind.net/linux/RPM/mandrake/7.1/Mandrake/RPMS/bin86-0.4-12mdk.i586.html">
, <url name="bin86-kondara" url="http://rpmfind.net/linux/RPM/kondara/jirai/i586/bin86-0.4-8k.i586.html">
).
<p>
<item> Start X-windows with 'startx'.
<item>
<itemize>
<item> Start X-windows with 'startx'. If you are not able to start X-window then
see next step below.
<code>
bash# man startx
bash# startx
bash# cd /usr/src/linux
bash# make xconfig
bash# man startx
bash# startx
bash# cd /usr/src/linux
bash# make xconfig
</code>
The <bf>"make xconfig"</bf> brings up a user friendly GUI interface! <bf>DO NOT</bf>
use 'make config' which is a command-line option (
use this <bf>ONLY if you CANNOT</bf> bring up X-window).
A better alternative to command-line 'make config' is <bf>'make menuconfig'</bf> which
brings up a user-friendly ncurses text-based menu interface.
Some persons like 'make menuconfig' over 'make xconfig'. My personal preference -
whenever I cannot bring up the X-window, I use 'make menuconfig'.
You can load the
configuration file from <it>/usr/src/linux/.config</it> (dot config file. Note the dot
before config).
<item> If you are not able to start X-window above then try -
<code>
bash# make menuconfig
If the above command fails then try -
bash# make config
</code>
</itemize>
The <bf>"make xconfig" or "make menuconfig"</bf> brings up a user friendly GUI interface.
You can load the
configuration file from <it>/usr/src/linux/.config</it> (dot config file. Note the dot
before config).
<p>
<item> Within 'make xconfig' you must do these to avoid problems -
@ -207,6 +209,7 @@ With this option you can load/unload the device drivers
dynamically on running linux system on the fly.
See these man pages
<code>
bash# rpm -i /mnt/cdrom/Redhat/RPMS/modutils*.rpm
bash# man lsmod
bash# man insmod
bash# man rmmod
@ -285,13 +288,113 @@ select your old kernel, boot and re-try all over again. Your old kernel
<bf>is still INTACT and SAFE</bf> at say <it>/boot/vmlinuz-2.0.34-0.6</it>
<p>
<item> Loadable Modules:
<item> If your new kernel 'myker' boots and works properly, you can create the
boot disk. Insert a blank floppy into floppy drive and -
<code>
bash# cd /usr/src/linux
bash# make bzdisk
See also mkbootdisk -
bash# rpm -i mkbootdisk*.rpm
bash# man mkbootdisk
</code>
<p>
<item> <bf>LOADABLE MODULES: </bf>
This step is required <bf>ONLY if</bf> you had enabled Loadable module support in
step 3 above.
Loadable module are located in /lib/modules. You MUST do this step if you enabled or
disabled any modules, otherwise you will get 'unresolved symbols' errors during
or after kernel boot.
Check for insmod command which is extensively used for loading the modules.
<code>
bash# cd /usr/src/linux
bash# make modules
bash# make modules_install
bash# man insmod
bash# insmod
bash# rpm -i /mnt/cdrom/Redhat/RPMS/modutils*.rpm
</code>
This will copy the modules to /lib/modules directory.
</enum>
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect1> Troublshoot Common Mistakes
<p>
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect2> No init found
<p>
The following mistake is commited very frequently by new users.
If your new kernel does not boot and you get -
<code>
Warning: unable to open an initial console
Kernel panic: no init found. Try passing init= option to kernel
</code>
The problem is that you <bf>did not</bf> set the "root=" parameter properly
in the /etc/lilo.conf. In my case, I used root=/dev/hda1 which is
having the root partition "/". You must properly point the root device in your
lilo.conf, it can be like /dev/hdb2 or /dev/hda7.
The kernel looks for the init command which is located in /sbin/init.
And /sbin directory lives on the root partition.
For details see -
<code>
bash# man init
</code>
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect2> Kernel does not load module - Unresolved symbol error messages
<p>
When you boot kernel and system tries to load any modules and
you get "Unresolved symbol : __some_function_name" then it means
that you did not clean compile the modules and kernel. It is mandatory that
you should do <bf>make clean</bf> and make the modules. Do this -
<code>
bash# cd /usr/src/linux
bash# make dep
bash# make clean
bash# nohup make bzImage &
bash# tail -f nohup.out (.... to monitor the progress)
bash# make modules
bash# make modules_install
</code>
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect2> Kernel fails to load a module
<p>
If the kernel fails to load a module (say loadable module for network card
or other devices), then you may want to try to build the driver for device
right into the kernel. Sometimes <it><bf>loadable module will NOT
work</bf></it> and the driver
needs to be built right inside the kernel. For example - some network cards do not
support loadable module feature - you MUST build the driver of the network card
right into linux kernel. Hence, in 'make xconfig' you MUST not select loadable
module for this device.
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect2> Loadable modules
<p>
You can install default loadable modules with -
The step given below may not be required but is needed <bf>ONLY FOR EMERGENCIES</bf> where
your /lib/modules files are damaged. If you already have
@ -320,53 +423,44 @@ bash# rpm -i /mnt/cdrom/contrib/kernel-modules*.rpm
....(For old linux systems which do not have insmod pre-installed)
</code>
<p>
<item> This step is required <bf>ONLY if you had downloaded a new
version</bf> of linux kernel source.
Loadable module are located in /lib/modules.
<code>
bash# cd /usr/src/linux
bash# make modules
bash# make modules_install
</code>
<p>
<item> If your new kernel 'myker' boots and works properly, you can create the
boot disk. Insert a blank floppy into floppy drive and -
<code>
bash# cd /usr/src/linux
bash# make bzdisk
See also mkbootdisk -
bash# rpm -i mkbootdisk*.rpm
bash# man mkbootdisk
</code>
</enum>
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect1> Troublshoot Common Mistakes
<sect1> Post Kernel Building <label id="postkernel">
<p>
The following mistake is commited very frequently by new users.
After successful build and booting of linux kernel you may want to do these
additional steps to make some of your devices to work.
(The steps below were tested on Redhat linux but should work with others too)
If your new kernel does not boot and you get -
<bf>Sound card configuration: </bf>
<itemize>
<item> Connect your external speakers to the sound card's audio port.
<item> Connect your CDROM audio wire to sound card's audio 4-pin socket. (Otherwise
your cdrom drive will not play music from your music cd)
<item> Refer to HOWTO docs on 'Sound' at <url url="http://www.linuxdoc.org">
</itemize>
<code>
Warning: unable to open an initial console
Kernel panic: no init found. Try passing init= option to kernel
bash$ su - root
bash# man sndconfig
bash# /usr/sbin/sndconfig
</code>
The problem is that you <bf>did not</bf> set the "root=" parameter properly
in the /etc/lilo.conf. In my case, I used root=/dev/hda1 which is
having the root partition "/". You must properly point the root device in your
lilo.conf, it can be like /dev/hdb2 or /dev/hda7.
Then start X-window 'KDE desktop' with 'startx' command.
Click on 'K Start->ControlCenter->SoundServer->General->Test Sound'. This should
play the test sound. Then click on 'K Start->MultiMedia->SoundMixer->SoundVolumeSlider'
and adjust the sound volume.
The kernel looks for the init command which is located in /sbin/init.
And /sbin directory lives on the root partition.
For details see -
<code>
bash# man init
</code>
<bf>Network card configuration: </bf>
<itemize>
<item> Use /sbin/linuxconf
<item> Or use KDE control panel
<item> Refer to HOWTO docs on 'Networking' at <url url="http://www.linuxdoc.org">
</itemize>
<bf>Configuration of other devices: </bf>
Refer to HOWTO docs relating to your devices at <url url="http://www.linuxdoc.org">
<!--
*******************************************
************ End of Section ***************

View File

@ -45,7 +45,7 @@ PHP HOW-TO
" name="
alavoor@yahoo.com
">
<date>v25.1, 19 June 2001
<date>v25.3, 03 July 2001
<abstract>
This document tells you howto develop PHP programs and also to migrate all the
Windows 95 GUI applications to powerful PHP + HTML + DHTML + XML + Java applets + Javascript.
@ -313,16 +313,25 @@ HTML objects. Get these from
See also the Top downloaded classes from
<url name="Top PHP classes" url="http://phpclasses.upperdesign.com/browse.html/top">
And visit <url url="http://www.phpclasses.com">.
And see Form classes, template classes at
the site <url name="corporate Intranet/Internet" url="http://www.aldev.8m.com/index.html#target5">
<p>
<item> Third, design and create your own PHP classes by inheriting from the
generic
<url name="PHP classes" url="http://phpclasses.upperdesign.com">
or <url url="http://www.phpclasses.com">.
<p>
<item> Fourth, use IDE tools from <ref id="PHP IDE">
<item> Fourth, use the template classes to seperate the presentation from business logic,
see <url url="http://www.phpclasses.com">.
<p>
<item> Fifth, use IDE tools from <ref id="PHP IDE">
<p>
<item> Most of your PHP code should be in classes for easy code maintainence and re-usability.
</itemize>
See also
<url name="Aldev's PHP classes" url="http://phpclasses.upperdesign.com/browse.html/author/35463">
<!--
*******************************************
************ End of Section ***************
@ -679,6 +688,89 @@ and <url name="mirror" url="http://www.miro.com.au">
<chapt> Object Oriented Features - public, private, protected <label id = "oop">
-->
<sect> Object Oriented Features - public, private, protected <label id = "oop">
<p>
PHP scripting language provides object oriented features through the
<bf>class</bf> keyword.
Features like public, private and protected will be supported in the future
release (they are in TODO list). In the meantime, you can
use the following coding conventions to
distinguish between private, public and protected variables:
<enum>
<item> All private variables and functions always start with underscore <bf>"_"</bf>
followed by lowercase letters
like <bf>var $_myvar;</bf>
<p>
<item> All Protected variables and functions always start with <bf>"_T"</bf> followed
by lowercase letters
like <bf>var $_Tmyvar;</bf>
<p>
<item> All Public variables and functions do not start with underscore "_"
like <bf>var $myvar;</bf>
<p>
<item> All variables and functions always start with lowercase letter (no uppercase)
like <bf>var $_myvar;</bf> and NOT like <bf>var $_Myvar;</bf>
</enum>
<code>
class someabc {
var $_conn; // Private variable
var $_Tmyvar; // Protected variable
var $connMYCONNECTION; // Public variable
var $connToDb; // Public variable
var $myvar3; // Public variable
var $myvarTHISTEST; // Public variable
function _foofunction() {} // Private function
function _Tfoofunction() {} // Protected function
function foofunction() {} // Public function
}
</code>
The private, protected declarations provide the encapsulation and data-hiding.
But you must consider the following disadvantages of encapsulation:
<itemize>
<item> Encapsulation usually requires more code, hence it
sacrifices performance especially for scripting languages like PHP
<p>
<item> Encapsulation requires lots of Set/Get methods for private/protected properties.
<p>
<item> Since encapsulation unneccessarily increases the code size, it is
not recommended for scripting language like PHP.
<p>
<item> You can enforce a good degree of encapsulation by using the coding
convention suggested in this section.
</itemize>
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt> HTML Editor <label id = "htmleditor">
-->
<sect> HTML Editor <label id = "htmleditor">
<p>
HTML editors for PHP on Windows 95/NT/2000 are:
<itemize>
<item> 1st Page 2000 - Rated 1st (the best HTML editor) <url url="http://www.evrsoft.com">
<item> Cool Page - Rated 2nd <url url="http://www.coolpage.com">
<item> Coffeecup - Rated 3rd <url url="http://www.coffeecup.com/editor">
<item> Arachnophilia - Rated 4th <url url="http://www.arachnoid.com/arachnophilia/index.html">
</itemize>
The best HTML editor is <bf>1st Page 2000</bf>, and it is a excellent HTML editor.
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt> IDE tools for PHP <label id = "PHP IDE">
-->
<sect> IDE tools for PHP <label id = "PHP IDE">
@ -738,7 +830,15 @@ and see also <ref id="ptags" name="ptags of PHP">
<p>
PHP IDE/editor on MS Windows platform are :
<itemize>
<item> Soyal, a excellent PHP editor (MS Windows) <url url="http://soysal.free.fr/PHPEd">
<item> Rated 1st (the best PHP tool on MS Windows) :
PHPTriad is a complete PHP development and server environment for
Windows. It installs PHP, Apache, MySQL, and PHPMyAdmin, both installing and setting up
the environment. PHPTriad is at
<url url="http://www.phpgeek.com/phptriad.php">
and at <url name="mirrorsite" url="http://sourceforge.net/projects/phptriad">
<item> Rated 2nd : PHP Coder <url url="http://www.php-ide.com">
<item> Rated 3rd: PHPEd (Soyal), an excellent PHP editor (MS Windows) <url url="http://soysal.free.fr/PHPEd">
<p>
<item> IDE for PHP editor (MS Windows): <url url="http://www.phpedit.com">
<item> Color editor gvim for PHP (Win and linux)
at <url url="http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html">
@ -1205,6 +1305,22 @@ C:\> c:\Program Files\php\bin\php filename.php
************ End of Section ***************
*******************************************
-->
<sect1>Standalone MS Windows GUI applications using PHP<label id = "winapp">
<p>
Since PHP is general purpose scripting language and is like a <it>"glue"</it>
language, you can use it develop standalone MS Windows GUI applications.
PHP can be very easily combined with MS Windows C++ GUI classes to create
GUI applications. And developing applications with PHP is extremely fast
as it is a scripting language and it's runtime performance is also excellent
as compared with other scripting languages like Perl, Visual Basic and Python.
PHP can also be used for developing standalone GUI applications for Linux/Unixes.
<!--
*******************************************
************ End of Section ***************
*******************************************
@ -1290,8 +1406,8 @@ limitations -
is eliminated in PHP scripting language.
<item> PHP applications are very stable and do not depend on the browser
technologies unlike Javascript applications which depend on browsers.
PHP will give you the freedom to select any server platform and browser does
not know that the HTML page is generated by PHP!!
PHP will give you the freedom to select any server platform. The browser does
not know that the HTML page is generated by PHP !!
<item> PHP has excellent database conectivity to all SQL database servers.
<item> PHP has partial support for Object oriented features
<item> PHP has C++, Perl, Javascript like syntax features and has programs like

View File

@ -46,7 +46,7 @@ Vi Improved with syntax color highlighting
"name="
alavoor@yahoo.com
">
<date>v17.0, 14 June 2001
<date>v17.1, 28 June 2001
<abstract>
This document is a guide to quickly setting up the Vim color editor on Linux or Unix systems. The information here will improve the productivity of programmers because the
Vim editor supports syntax color highlighting and bold fonts, improving the
@ -679,6 +679,9 @@ set autoindent
"
" You may want to turn off the beep sounds (if you want quite) with visual bell
" set vb
" Source in your custom filetypes as given below -
" so $HOME/vim/myfiletypes.vim
</CODE>
It is <bf>very strongly</bf> recommended that you set the <it>tabstop</it> to 4 and
<it>shiftwidth</it> to 4.
@ -751,6 +754,9 @@ set ignorecase
" You may want to turn off the beep sounds (if you want quite) with visual bell
" set vb
" Source in your custom filetypes as given below -
" so $HOME/vim/myfiletypes.vim
" Make command line two lines high
set ch=2
@ -856,39 +862,63 @@ This section below is obtained from gvim session by typing 'help syntax' -
bash$ gvim some_test
:help syntax
</code>
Click on Menu Window=>Close_Others to close other Window. And then do CTRL+] on 'Syntax Loading Procedure' menu which will take you there.
Click on the menu Window=>Close_Others to close other Window. And then do CTRL+] on 'Syntax Loading Procedure' menu which will take you there.
(Use CTRL+T to rewind and go back).
If a file type that you want to use is not detected yet, there are two ways to
add it. It's better not modify the <it>$VIMRUNTIME/filetype.vim</it> file. It will be
overwritten when installing a new version of Vim.
Create a file in $HOME/vim/myfiletypes.vim and put these line in it -
If a file type you want to use is not detected, then there are two ways to
add it.
<bf>Method 1: </bf> You can modify the <it>$VIMRUNTIME/filetype.vim</it> file,
but this is not recommended as it will be overwritten when you
install a new version of Vim.
<bf> Method 2: </bf> Create a file in $HOME/vim/myfiletypes.vim and put
these lines in it -
<code>
"
*************************************************************
" Filename : $HOME/vim/myfiletypes.vim
" myfiletypefile
" See the document by typing :help autocmd within vim session
" see also the doc at /usr/share/vim/doc/autocmd.txt
" This file will setup the autocommands for new filetypes
" using the existing syntax-filetypes.
" For example when you open foo.prc it will use syntax of plsql
" Basically does :set filetype=prc inside vim
" Add a line in $HOME/.gvimrc as below:
" so $HOME/vim/myfiletypes.vim
"
*************************************************************
augroup filetype
au! BufRead,BufNewFile *.mine set filetype=mine
au! BufRead,BufNewFile *.xyz set filetype=drawing
au! BufRead,BufNewFile *.prc set filetype=plsql
au!
au! BufRead,BufNewFile *.phc set filetype=php
au! BufRead,BufNewFile *.mine set filetype=mine
au! BufRead,BufNewFile *.xyz set filetype=drawing
au! BufRead,BufNewFile *.prc set filetype=plsql
augroup END
</code>
Then add a line in your $HOME/.vimrc and $HOME/.gvimrc file to set the "myfiletypefile" variable to
the name of this file. (<bf>CAUTION:</bf> You MUST put this in both vimrc and gvimrc files
Then add a line in your $HOME/.vimrc and $HOME/.gvimrc file to source
in the file "myfiletypes.vim".
(<bf>CAUTION:</bf> You MUST put this in both vimrc and gvimrc files
in order for this to work) Example:
<code>
let myfiletypefile = "~/vim/myfiletypes.vim"
so $HOME/vim/myfiletypes.vim
</code>
<bf>NOTE:</bf> Make sure that you set "myfiletypefile" before switching on file type
<bf>NOTE:</bf> Make sure that you set "so myfiletypes.vim" before switching on file type
detection. This is must be before any ":filetype on" or ":syntax on"
command.
Your file will then be sourced after the default FileType autocommands have
See the documentation on autocommand at -
<itemize>
<item><bf>:help autocmd</bf> (within a vim editing session)
<item>See also the doc at /usr/share/vim/doc/autocmd.txt
</itemize>
Your file will then be sourced in after the default FileType autocommands have
been installed. This allows you to overrule any of the defaults, by using
":au!" to remove any existing FileType autocommands for the same pattern.
Only the autocommand to source the scripts.vim file is given later. This
makes sure that your autocommands in "myfiletypefile" are used before
makes sure that your autocommands in "myfiletypes.vim" are used before
checking the contents of the file.
<!--
*******************************************