Welcome to my website. I am always posting links to photo albums, art, technology and other creations. Everything that you will see on my numerous personal sites is powered by the formVistaTM Website Management Engine.


  • Subscribe to this RSS Feed
  • Embedding Flash with Valid Markup
    02/18/2008 10:31PM
    Anyone who has tried to W3C validate a page with the default output from Flash knows you get a slew of errors.

    Here's a great article on modifying your <object> and <embed> tags so that your pages will validate.

    Flash Satay: Embedding Flash While Supporting Standards by Drew McLellan

    Here's a quick example that you can run with that includes the markup for a transparent background:

    <object type="application/x-shockwave-flash" width="368" height="201" data="icms_art/nbir5.hdr.anim.swf">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="allowFullScreen" value="false" />
    <param name="movie" value="icms_art/nbir5.hdr.anim.swf" />
    <param name="quality" value="high" />
    <param name="wmode" value="transparent" />

  • Mounting Logical Volumes Under Linux
    02/12/2008 3:15PM
    Let's say you have a disk that you want to put in an external USB enclosure, mount and read some files.  What if it's a boot disk that uses LVM?  What if you have two LVM groups with the same name?

    Here's a quick how-to on mounting just this type of LVM volumes from a USB disk.
    When you first attach your disk in it's USB enclosure you should be able to see which device it is associated with by looking at /var/log/messages.  In my case, it was assigned to /dev/sdc

    When you run an fdisk command on the drive you'll get something like:

    Disk /dev/sdc: 80.0 GB, 80000000000 bytes
    255 heads, 63 sectors/track, 9726 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0xd0f4738c

       Device Boot      Start         End      Blocks   Id  System
    /dev/sdc1   *           1          13      104391   83  Linux
    /dev/sdc2              14        9726    78019672+  8e  Linux LVM

    The problem is a bit more complicated when both your existing OS and the disk that you want to mount have the same name for their logical volume.

    Do a pvscan and you'll be able to see the names of the logical volumes on the two disks.

    # pvscan
      PV /dev/sdc2   VG VolGroup00   lvm2 [74.38 GB / 0    free]
      PV /dev/sda2   VG VolGroup00   lvm2 [74.31 GB / 32.00 MB free]

    In this case, you will need to rename the volume group on the disk that you want to mount via the USB enclosure.  You'll need to do one of two things:
    • Shutdown your existing computer, disconnect the drives from it, attach the erstwhile USB mounted disk and fire it up with some sort of boot/rescue CD
    • Put the disk in another box, and fire up with the aforementioned boot/rescue CD
    I had an extra chassis lying around that I could use so instead of mucking around in my machine, I just used it.  I also used the Fedora Core 8 installation DVD, but you should be able to use any type of Linux rescue disk that contains the lvm binaries.

    So once you've got your hardware all set up, boot using the rescue disk.  In this case, using the FC 8 install disk, when you get to the prompt where it asks if you want to search for and mount an exsiting partition/installation, select "Skip".

    You'll now be on the command line.  Keep in mind that in rescue mode, all lvm commands need to be preceded with "lvm".

    Do a search/scan for your logical volumes with one of the following commands:

    # lvm vgscan
    # lvm lvscan
    # lvm pvscan

    # vgscan
    Reading all physical volumes.  This may take a while...
    Found volume group "VolGroup00" using metadata type lvm2

    Then rename your volume group:

    # lvm vgrename VolGroup00 VolGroup01

    You could name it anything that you want, that's just what I happened to use.

    Shutdown your machine and put the newly renamed volume group disk back in it's USB enclosure, attach to your computer and fire it up.

    A vgscan should display the following:

    # vgscan
    Reading all physical volumes.  This may take a while...
    Found volume group "VolGroup01" using metadata type lvm2
    Found volume group "VolGroup00" using metadata type lvm2

    Activate the volume:

    # vgchange -a y /dev/VolGroup01
      2 logical volume(s) in volume group "VolGroup01" now active

    Mount the volume group

    # mount /dev/mapper/VolGroup01-LogVol00 /mnt


    You may or may not have to include the "mapper/" entry in the path, check with your distro to see how it deals with paths to volume groups.  All I had to do was "tab" once I typed /dev/mapper/VolGroup01 and it scrolled through the available logical volumes in the group.

  • A Quick How-To on Installing IIS and .NET under Windows XP Pro
    12/27/2007 2:07PM
    I've got a client that needs a site with a simple navigational program to be hosted under IIS with ASP.NET.

    So, I put together IIS on a VMWare XP install and here's the quick how-to:
    1. Go to Add/Remove programs
    2. Put the WinXP Pro install CD in the machine.
    3. Click on Add/Remove Windows Components and click on the check box next to Internet Information Services (IIS)
    4. After installation you should be able to open up a browser and type "localhost" and get the default welcome page.
    5. If you get either a You are not authorized to view this page" or a user name and password prompt, make sure that the user account with which you are currently logged in has administrator rights and that you have a password set for that account.
    6. Install .NET
    7. Register .NET with IIS

    Open a CMD window, change dir to
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(or whatever other version you are registering)

    Run the following commands in sequence:
    aspnet_regiis -i
    aspnet_regiis -s W3SVC/
    8. Make sure to include the .aspx extension on your files and you should be all set to start developing .NET applications.
  • Dynamically Instantiating New Objects in ActionScript 3.0
    12/26/2007 9:51AM
    Let's say you are building an application and want to be able to dynamically instantiate new objects in AS 3.0 (Flash CS3)?

    Read on for the answer . . .
    The syntax for doing this has drastically changed from AS 2.0, however there is still one gotcha that remains the same.

    In my case, I'm not only dynamically instantiating class names, but also their reference names.

    Here's how I figured out how to do it:

    // Import the getDefinitionByName util and your class
    import flash.utils.getDefinitionByName;
    import com.example:ExampleClass;

    // Create a variable to store a reference to your new class
    var classReference:ExampleClass;

    // Create a class object and use getDefinitionByName to specify the name of the class you are instantiating.
    var class_tempClass:Class = Class(getDefinitionByName("com.example:ExampleClass"));
    classReference = new class_tempClass();

    This works great.  However, what if you don't know what classes you'll be instantiating and want to be able to leave that open at runtime?  This is where it's the same in 2.0.  If you don't include the reference to the class at compile time (var classReference:ExampleClass; ) you cannot dynamically instantiate this class, regardless of whether or not it is in your class path.

    As a result, you are left with having to decide which classes you might want to instantiate at runtime and somewhere in your code, include a reference to each class such that it's included at compile time.

    Another AS 3.0 programmer indicated that it might be possible to dynamically load a swf that includes a reference to that class, but you would have to load and make sure that that swf has initialized before attempting to instantiate the object.

    Maybe a way to go about it is to keep a library of swf files that have the same name as the class that you want to instantiate and write a utility that will dynamically instantiate objects.  The first thing it would do is load a swf with a reference to the class, then it would instantiate the object, returning to the calling code a reference to the newly created instance.

    I think I'll give that a try and then post and update to this thread with my findings.

  • Web Design Safe Areas for Common Screen Resolutions
    12/21/2007 7:55AM
    When you are designing a website one of the first things that you have to decide is the screen resolution that your audience will be using.  There are still plenty of people out there using 1024x768 or, in some cases, smaller resolutions.

    800x600 monitors: 760x410
    1024x768 monitors: 960x575

Advanced Search