Project: Ruby in .NET

Here you will find the next in a series of projects where I had to write a simple application that demonstrated the ability of the .NET Framework and Visual Studio to be extended for languages other than those that come with the default installation.

This application demonstrates Ruby in .NET

rubyfile.rb

   1:  class Employee
   2:      #    class constructor
   3:      def initialize( ) 
   4:          @name = ""
   5:          @rate = 0
   6:          @hours = 0
   7:      end
   8:      
   9:      #    class constructor, first overload. Use to set @name when instantiating a new Employee object
  10:      def initialize( aName ) 
  11:          @name = aName
  12:          @rate = 0
  13:          @hours = 0
  14:      end
  15:      
  16:      #    class constructor, first overload. Use to set @name, @rate, & @hours when instantiating a new Employee object
  17:      def initialize( aName, aRate, aHours ) 
  18:          @name = aName
  19:          @rate = Float(aRate)
  20:          @hours = Float(aHours)
  21:      end
  22:      
  23:      #    Get() and Set() methods for @name variable
  24:      def setName( aName )
  25:          @name = aName
  26:      end
  27:      
  28:      def getName()
  29:          return @name
  30:      end
  31:      
  32:      #    Get() and Set() methods for @rate variable
  33:      def setRate( aRate )
  34:          @rate = Float(aRate)
  35:      end
  36:      
  37:      def getRate()
  38:          return @rate
  39:      end
  40:      
  41:      #    Get() and Set() methods for @hours variable
  42:      def setHours( aHours )
  43:          @hours = Float(aHours)
  44:      end
  45:      
  46:      def getHours()
  47:          return @hours
  48:      end
  49:      
  50:      #    Determine if employee earned overtime pay
  51:      def getOverTime()
  52:          if( @hours > 40 )
  53:              return (@hours - 40)
  54:          end
  55:          return 0
  56:      end
  57:      
  58:      #    Calculate employee's gross pay
  59:      def getGrossPay()
  60:          if( getOverTime() > 0 )
  61:              return ( (@hours*@rate) + (@rate*getOverTime())*1.5 )
  62:          else
  63:              return ( @hours*@rate )
  64:          end
  65:      end
  66:  end
  67:   
  68:  #    Custom method to determine if a string value can be parsed as a numeric value
  69:  def isNumeric(s)
  70:      begin
  71:          Float(s)
  72:      rescue
  73:          false # not numeric
  74:      else
  75:          true # numeric
  76:      end
  77:  end
  78:   
  79:  #
  80:  #    'main()'
  81:  #
  82:   
  83:  #    get user's name
  84:  puts( "Hello! And your name is...? " )
  85:  name = gets()
  86:   
  87:  #    get user's payrate
  88:  puts( "What is your payrate? " )
  89:  rate = gets()
  90:   
  91:  #    cycle error message until a valid payrate value is entered
  92:  while( !isNumeric(rate) )
  93:      puts( "Invalid payrate value! Please enter only numbers or a decimal point!" )
  94:      puts( "What is your payrate? " )
  95:      rate = gets()
  96:  end
  97:   
  98:  #    get user's work hours
  99:  puts( "How many hours did you work? " )
 100:  hours = gets()
 101:   
 102:  #    cycle error message until a valid hours value is entered
 103:  while( !isNumeric(hours) )
 104:      puts( "Invalid hours value! Please enter only numbers or a decimal point!" )
 105:      puts( "How many hours did you work? " )
 106:      hours = gets()
 107:  end
 108:   
 109:  #    create a new Employee object using name, rate, & hours
 110:  emp = Employee.new( name, rate, hours )
 111:   
 112:  #    display message if employee earned overtime
 113:  if( emp.getOverTime > 0 )
 114:      puts( "You earned overtime!" )
 115:  end
 116:   
 117:  #    print gross pay
 118:  puts( "Your gross pay will be $#{emp.getGrossPay()}" )
 119:   
 120:  #
 121:  #    End 'main()'
 122:  #

That's all. I didn't try writing a WinForm app with Ruby, simply because I didn't have a lot of time or inclination to do so when this project was due. What you see here is really just a simple Ruby app. The main point of the project was that Visual Studio was perfectly capable of being used as a Ruby IDE.

Source Code

Comments (0)

There are no comments for this entry.

Project: COBOL in .NET

For your viewing pleasure, a sample application I had to build for course I attended a while ago. We wrote some sample applications in a variety of languages, and all of them were implemented within the .NET Framework.

This application demonstrates COBOL in .NET.

Program.cbl

   1:         class-id. Main as "SENG.COBOL.App.Main".
   2:         environment division.
   3:         configuration section.
   4:         repository.
   5:        
   6:         static.
   7:    
   8:         method-id. "Main" 
   9:             custom-attribute is type "System.STAThreadAttribute".
  10:         local-storage section.
  11:         01 mainForm type "SENG.COBOL.App.Form1".
  12:         procedure division.
  13:         
  14:             set mainForm to new "SENG.COBOL.App.Form1"()
  15:             invoke type "System.Windows.Forms.Application"::"Run"(mainForm)
  16:             goback.
  17:         
  18:         end method "Main".
  19:    
  20:         end static.
  21:         end class Main.

This part of the code is the entry point for the CLR.

Form1.cbl

   1:         class-id. Form1 as "SENG.COBOL.App.Form1" is partial
   2:                   inherits type "System.Windows.Forms.Form".
   3:                   
   4:         environment division.
   5:         configuration section.
   6:         repository.
   7:        
   8:         object.
   9:         working-storage section.
  10:         01 FirstName    PIC A(25).
  11:         01 LastName     PIC A(75).
  12:         01 PayRate      PIC 9(10)V9(2).
  13:         01 HoursWorked  PIC 9(4)V9(2).
  14:         01 GrossPay     PIC 9(14)V9(2).
  15:         
  16:         method-id. NEW.
  17:         procedure division.
  18:             invoke self::"InitializeComponent"
  19:             goback.
  20:         end method NEW.
  21:   
  22:         method-id.  "btnCalc_Click" final private.
  23:         procedure division using by value sender as object e as type "System.EventArgs".
  24:             SET FirstName TO TYPE "System.Convert"::"ToString"(self::"txtFirst"::"Text").
  25:             SET LastName TO TYPE "System.Convert"::"ToString"(self::"txtLast"::"Text").
  26:             SET PayRate TO type "System.Convert"::"ToDecimal"(self::"txtRate"::"Text").
  27:             SET HoursWorked TO TYPE "System.Convert"::"ToDecimal"(self::"txtHours"::"Text").
  28:             MULTIPLY PayRate BY HoursWorked GIVING GrossPay.
  29:             SET self::"lblPayStub"::"Text" TO TYPE "System.Convert"::"ToString"(GrossPay).
  30:         end method "btnCalc_Click".
  31:   
  32:         method-id.  "btnClear_Click" final private.
  33:         procedure division using by value sender as object e as type "System.EventArgs".
  34:             SET self::"txtFirst"::"Text" TO NULL.
  35:             SET self::"txtLast"::"Text" TO NULL.
  36:             SET self::"txtRate"::"Text" TO NULL.
  37:             SET self::"txtHours"::"Text" TO NULL.
  38:             SET self::"lblPayStub"::"Text" TO NULL.
  39:         end method "btnClear_Click".
  40:   
  41:         method-id.  "btnExit_Click" final private.
  42:         procedure division using by value sender as object e as type "System.EventArgs".
  43:             STOP RUN.
  44:         end method "btnExit_Click".
  45:        
  46:         end object.
  47:         end class Form1.

This is essentially the application logic. It specifies the event handlers for the controls used by this project.

Form1.Designer.cbl

   1:         class-id. Form1 as "SENG.COBOL.App.Form1" is partial
   2:                   inherits type "System.Windows.Forms.Form".
   3:                   
   4:         environment division.
   5:         configuration section.
   6:         repository.
   7:        
   8:         object.
   9:         working-storage section.
  10:         01 label1 type "System.Windows.Forms.Label".
  11:         01 label2 type "System.Windows.Forms.Label".
  12:         01 txtFirst type "System.Windows.Forms.TextBox".
  13:         01 txtLast type "System.Windows.Forms.TextBox".
  14:         01 label3 type "System.Windows.Forms.Label".
  15:         01 txtRate type "System.Windows.Forms.TextBox".
  16:         01 label4 type "System.Windows.Forms.Label".
  17:         01 txtHours type "System.Windows.Forms.TextBox".
  18:         01 label5 type "System.Windows.Forms.Label".
  19:         01 btnCalc type "System.Windows.Forms.Button".
  20:         01 btnClear type "System.Windows.Forms.Button".
  21:         01 btnExit type "System.Windows.Forms.Button".
  22:         01 lblPayStub type "System.Windows.Forms.Label".
  23:         01 components type "System.ComponentModel.IContainer".
  24:        
  25:        *> Required method for Designer support - do not modify
  26:        *> the contents of this method with the code editor.
  27:         method-id.  "InitializeComponent" private.
  28:         procedure division.
  29:         set txtFirst to new "System.Windows.Forms.TextBox"
  30:         set label1 to new "System.Windows.Forms.Label"
  31:         set label2 to new "System.Windows.Forms.Label"
  32:         set txtLast to new "System.Windows.Forms.TextBox"
  33:         set label3 to new "System.Windows.Forms.Label"
  34:         set txtRate to new "System.Windows.Forms.TextBox"
  35:         set label4 to new "System.Windows.Forms.Label"
  36:         set txtHours to new "System.Windows.Forms.TextBox"
  37:         set label5 to new "System.Windows.Forms.Label"
  38:         set btnCalc to new "System.Windows.Forms.Button"
  39:         set btnClear to new "System.Windows.Forms.Button"
  40:         set btnExit to new "System.Windows.Forms.Button"
  41:         set lblPayStub to new "System.Windows.Forms.Label"
  42:         invoke self::"SuspendLayout"
  43:        *> 
  44:        *> txtFirst
  45:        *> 
  46:         set txtFirst::"Location" to new "System.Drawing.Point"( 27 60)
  47:         set txtFirst::"Name" to "txtFirst"
  48:         set txtFirst::"Size" to new "System.Drawing.Size"( 244 23)
  49:         set txtFirst::"TabIndex" to 0
  50:        *> 
  51:        *> label1
  52:        *> 
  53:         set label1::"AutoSize" to True
  54:         set label1::"Location" to new "System.Drawing.Point"( 24 40)
  55:         set label1::"Name" to "label1"
  56:         set label1::"Size" to new "System.Drawing.Size"( 79 17)
  57:         set label1::"TabIndex" to 1
  58:         set label1::"Text" to "First Name:"
  59:        *> 
  60:        *> label2
  61:        *> 
  62:         set label2::"AutoSize" to True
  63:         set label2::"Location" to new "System.Drawing.Point"( 24 100)
  64:         set label2::"Name" to "label2"
  65:         set label2::"Size" to new "System.Drawing.Size"( 81 17)
  66:         set label2::"TabIndex" to 3
  67:         set label2::"Text" to "Last Name:"
  68:        *> 
  69:        *> txtLast
  70:        *> 
  71:         set txtLast::"Location" to new "System.Drawing.Point"( 27 120)
  72:         set txtLast::"Name" to "txtLast"
  73:         set txtLast::"Size" to new "System.Drawing.Size"( 244 23)
  74:         set txtLast::"TabIndex" to 2
  75:        *> 
  76:        *> label3
  77:        *> 
  78:         set label3::"AutoSize" to True
  79:         set label3::"Location" to new "System.Drawing.Point"( 26 163)
  80:         set label3::"Name" to "label3"
  81:         set label3::"Size" to new "System.Drawing.Size"( 69 17)
  82:         set label3::"TabIndex" to 5
  83:         set label3::"Text" to "Pay Rate:"
  84:        *> 
  85:        *> txtRate
  86:        *> 
  87:         set txtRate::"Location" to new "System.Drawing.Point"( 29 183)
  88:         set txtRate::"Name" to "txtRate"
  89:         set txtRate::"Size" to new "System.Drawing.Size"( 108 23)
  90:         set txtRate::"TabIndex" to 4
  91:        *> 
  92:        *> label4
  93:        *> 
  94:         set label4::"AutoSize" to True
  95:         set label4::"Location" to new "System.Drawing.Point"( 160 163)
  96:         set label4::"Name" to "label4"
  97:         set label4::"Size" to new "System.Drawing.Size"( 101 17)
  98:         set label4::"TabIndex" to 7
  99:         set label4::"Text" to "Hours Worked:"
 100:        *> 
 101:        *> txtHours
 102:        *> 
 103:         set txtHours::"Location" to new "System.Drawing.Point"( 163 183)
 104:         set txtHours::"Name" to "txtHours"
 105:         set txtHours::"Size" to new "System.Drawing.Size"( 108 23)
 106:         set txtHours::"TabIndex" to 6
 107:        *> 
 108:        *> label5
 109:        *> 
 110:         set label5::"AutoSize" to True
 111:         set label5::"Location" to new "System.Drawing.Point"( 26 232)
 112:         set label5::"Name" to "label5"
 113:         set label5::"Size" to new "System.Drawing.Size"( 67 17)
 114:         set label5::"TabIndex" to 9
 115:         set label5::"Text" to "Pay Stub:"
 116:        *> 
 117:        *> btnCalc
 118:        *> 
 119:         set btnCalc::"Location" to new "System.Drawing.Point"( 287 252)
 120:         set btnCalc::"Name" to "btnCalc"
 121:         set btnCalc::"Size" to new "System.Drawing.Size"( 75 23)
 122:         set btnCalc::"TabIndex" to 10
 123:         set btnCalc::"Text" to "Calc"
 124:         set btnCalc::"UseVisualStyleBackColor" to True
 125:         invoke btnCalc::"add_Click"(new "System.EventHandler"(self::"btnCalc_Click"))
 126:        *> 
 127:        *> btnClear
 128:        *> 
 129:         set btnClear::"Location" to new "System.Drawing.Point"( 287 281)
 130:         set btnClear::"Name" to "btnClear"
 131:         set btnClear::"Size" to new "System.Drawing.Size"( 75 23)
 132:         set btnClear::"TabIndex" to 11
 133:         set btnClear::"Text" to "Clear"
 134:         set btnClear::"UseVisualStyleBackColor" to True
 135:         invoke btnClear::"add_Click"(new "System.EventHandler"(self::"btnClear_Click"))
 136:        *> 
 137:        *> btnExit
 138:        *> 
 139:         set btnExit::"Location" to new "System.Drawing.Point"( 287 317)
 140:         set btnExit::"Name" to "btnExit"
 141:         set btnExit::"Size" to new "System.Drawing.Size"( 75 23)
 142:         set btnExit::"TabIndex" to 12
 143:         set btnExit::"Text" to "Exit"
 144:         set btnExit::"UseVisualStyleBackColor" to True
 145:         invoke btnExit::"add_Click"(new "System.EventHandler"(self::"btnExit_Click"))
 146:        *> 
 147:        *> lblPayStub
 148:        *> 
 149:         set lblPayStub::"Font" to new "System.Drawing.Font"( "Century Gothic" 14.25 type "System.Drawing.FontStyle"::"Regular" type "System.Drawing.GraphicsUnit"::"Point" 0 as type "System.Byte")
 150:         set lblPayStub::"Location" to new "System.Drawing.Point"( 26 255)
 151:         set lblPayStub::"Name" to "lblPayStub"
 152:         set lblPayStub::"Size" to new "System.Drawing.Size"( 245 85)
 153:         set lblPayStub::"TabIndex" to 13
 154:        *> 
 155:        *> Form1
 156:        *> 
 157:         set self::"ClientSize" to new "System.Drawing.Size"( 384 364)
 158:         invoke self::"Controls"::"Add"(lblPayStub)
 159:         invoke self::"Controls"::"Add"(btnExit)
 160:         invoke self::"Controls"::"Add"(btnClear)
 161:         invoke self::"Controls"::"Add"(btnCalc)
 162:         invoke self::"Controls"::"Add"(label5)
 163:         invoke self::"Controls"::"Add"(label4)
 164:         invoke self::"Controls"::"Add"(txtHours)
 165:         invoke self::"Controls"::"Add"(label3)
 166:         invoke self::"Controls"::"Add"(txtRate)
 167:         invoke self::"Controls"::"Add"(label2)
 168:         invoke self::"Controls"::"Add"(txtLast)
 169:         invoke self::"Controls"::"Add"(label1)
 170:         invoke self::"Controls"::"Add"(txtFirst)
 171:         set self::"Font" to new "System.Drawing.Font"( "Century Gothic" 9.75 type "System.Drawing.FontStyle"::"Regular" type "System.Drawing.GraphicsUnit"::"Point" 0 as type "System.Byte")
 172:         set self::"MaximizeBox" to False
 173:         set self::"Name" to "Form1"
 174:         set self::"StartPosition" to type "System.Windows.Forms.FormStartPosition"::"CenterScreen"
 175:         set self::"Text" to "SENG.301 Project 1"
 176:         invoke self::"ResumeLayout"(False)
 177:         invoke self::"PerformLayout"
 178:         end method "InitializeComponent".
 179:   
 180:        *> Clean up any resources being used.      
 181:         method-id. "Dispose" override protected.
 182:         procedure division using by value disposing as condition-value.
 183:             if disposing then
 184:               if components not = null then
 185:                 invoke components::"Dispose"()
 186:               end-if
 187:             end-if
 188:             invoke super::"Dispose"(by value disposing)
 189:             goback.           
 190:         end method "Dispose".
 191:   
 192:         end object.
 193:         end class Form1.

This code draws the form for this application. Great stuff, eh?

As you can see, it's not pure COBOL, but that may be a good thing. The pure COBOL to create this form and run it would be pretty darn long and probably more prone to error.

Source Code

If you like, you may click this link to download the source code for this project.

Comments (0)

There are no comments for this entry.

PHP Referrer Snippet

This is a small chunk of code I use as part of my login script:

if( !isset( $_SESSION['ref'] ) )
{
    $_SESSION['ref'] =$_SERVER['HTTP_REFERER']; 
}

and

$ref = strip_tags_attributes( $_SESSION['ref'] );
$_SESSION['ref'] = "";
header( "Location: ".$ref );

The first snippet is part of the load section of the login page. It checks to see if the session contains an index for a referral page (useful for if/when the user gets posted back to the page due to login errors). The next snippet is part of the actual login script. It sets a local variable to the current value of the session 'ref' index, clears the value of the session, and then redirects the user back to the page they originally came from.

It does need some work, since the user could technically arrive directly at the login page. If that were the case, these snippets would redirect them away from my site (or your site, if you use these snippets). However, it works well enough for now. You can easily add some extra code to redirect the user to your index page if they came from an external site...

Enjoy!

:]

Comments (0)

There are no comments for this entry.

CSS Template 1

This is the companion CSS template for the HTML template. Use both together as a starting point for your own website.

:]

The Template: template-style.css

/*
*    Put all CSS that is common to all media types directly in the page, outside of any media selectors
*/
 
/*
*    The line following this comment is what's known as a 'CSS reset.' Using the wildcard selector ('*') selects all element.
*    Setting the padding and margin to zero helps override each browser's default settings, and makes it more likely
*    our CSS looks the same on most browsers. Remove that line if you want to build off of the default settings.
*/
*{ margin: 0; padding: 0; }
 
/*
*    General form for CSS selectors:
*
*    tag{
*        attribute: value;
*    }
*
*    #id{
*        attribute: value;
*    }
*
*    .class{
*        attribute: value;
*    }
*/
 
 
/*
*    Use media selectors to build CSS specific to a media type.
*/
 
@media screen
{
}
 
@media tty
{
}
 
@media tv
{
}
 
@media projection
{
}
 
@media handheld
{
}
 
@media print
{
}
 
@media braille
{
}
 
@media aural
{
}

Copy and paste the code, or you can download the source.

Comments (0)

There are no comments for this entry.

HTML Template 1

I put together a simple HTML/XHTML template for anyone that wants it. If you're new to web design, this template should be a good way to get started. I also created a CSS template to go with this HTML template. You can find it here.

The Sample: template.html

   1:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
   2:  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   3:      <head>
   4:          <!--
   5:              This tag is used to specify the character set for your page.
   6:              It is usually easiest to select UTF-8, since it's fairly standard and allows for the widest range of characters. This tag should be the first tag in the head of your document.
   7:          -->
   8:          <!-- <meta http-equiv="content-type" content="text/html; charset=utf-8" /> -->
   9:          <!--
  10:              This is a list of all of the possible stylesheet media types. Delete all but the one(s) you are creating CSS for. 
  11:              Also note that you must remove the HTML comments from around the link tag or the browser will ignore it.
  12:              Alternately, you could just use the "all" media version, and specify the media-specific CSS in the stylesheet itself, using the @media selector. See sample CSS for details.
  13:          -->
  14:          <!-- <link rel="stylesheet" type="text/css" href="" media="screen" /> -->
  15:          <!-- <link rel="stylesheet" type="text/css" href="" media="tty" /> -->
  16:          <!-- <link rel="stylesheet" type="text/css" href="" media="tv" /> -->
  17:          <!-- <link rel="stylesheet" type="text/css" href="" media="projection" /> -->
  18:          <!-- <link rel="stylesheet" type="text/css" href="" media="handheld" /> -->
  19:          <!-- <link rel="stylesheet" type="text/css" href="" media="print" /> -->
  20:          <!-- <link rel="stylesheet" type="text/css" href="" media="braille" /> -->
  21:          <!-- <link rel="stylesheet" type="text/css" href="" media="aural" /> -->
  22:          <!-- <link rel="stylesheet" type="text/css" href="" media="all" /> -->
  23:          <!--
  24:              This is a link to your site's favicon (the icon that appears on bookmarks and/or the navigation bar.
  25:              Just like the CSS link above, choose one, delete the rest.
  26:          -->
  27:          <!-- <link rel="shortcut icon" type="image/x-icon" href="/somepath/image.ico" /> (old style) -->
  28:          <!-- <link rel="icon" type="image/vnd.microsoft.icon" href="/somepath/image.ico" /> -->
  29:          <!-- <link rel="icon" type="image/png" href="/somepath/image.png" /> -->
  30:          <!-- <link rel="icon" type="image/gif" href="/somepath/image.gif" /> -->
  31:          <title>Site/Page Title</title>
  32:      </head>
  33:      <body>
  34:          <div id="container">
  35:              <div id="header">
  36:                  <h1><a href="/link-to-home-page">Site Title</a></h1>
  37:              </div>
  38:              <div id="navigation">
  39:                  <ul id="navbar">
  40:                      <li>
  41:                          <a href="">Link 1</a>
  42:                      </li>
  43:                      <li>
  44:                          <a href="">Link 2</a>
  45:                      </li>
  46:                      <li>
  47:                          <a href="">Link 3</a>
  48:                      </li>
  49:                  </ul>
  50:              </div>
  51:              <div id="content">
  52:                  <h2>Entry Title 1</h2>
  53:                  <p>
  54:                      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sollicitudin, metus a ultricies laoreet, turpis purus commodo neque, quis vehicula nibh lacus id libero. Duis fringilla, mauris at ultrices aliquet, tellus sapien pharetra augue, quis molestie odio velit quis tortor. Cras molestie sem eu turpis dignissim commodo. Ut condimentum gravida consequat. Curabitur eget ligula est. Phasellus aliquet iaculis tristique. Quisque dapibus lorem est. Vestibulum pulvinar, ligula eu aliquam vehicula, dui odio porttitor urna, a tempor dui arcu in orci. Duis ultricies risus id enim porttitor tristique. Maecenas mollis risus sit amet arcu iaculis eu consectetur nunc luctus. Suspendisse convallis faucibus imperdiet. Nullam pharetra euismod quam vel ultricies. Phasellus in nisl quis turpis sollicitudin porttitor a quis quam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce elementum ultricies nisi non vestibulum. Proin sed nunc mauris. Proin purus erat, pulvinar non consequat sed, consectetur at augue. 
  55:                  </p>
  56:                  <h2>Entry Title 2</h2>
  57:                  <p>
  58:                      Vivamus et lectus ante, eu laoreet libero. Vivamus quis porta quam. Integer eu eros arcu, in pharetra est. Duis id diam vel mi eleifend mattis dapibus in purus. Vivamus laoreet porttitor purus. Aliquam at venenatis lectus. Suspendisse vehicula scelerisque fermentum. Ut suscipit orci eu metus rutrum quis pulvinar lectus convallis. Aliquam erat volutpat. Vestibulum sit amet enim lectus. Cras scelerisque aliquam sapien a tempor. Fusce porta nunc in massa molestie ultricies. Suspendisse pulvinar interdum aliquet. Donec nec nisl sed velit pharetra tempor in vitae diam. Donec quis euismod risus. In malesuada, velit tincidunt porttitor sagittis, libero lectus placerat orci, in convallis nibh libero nec metus. Cras vel erat tortor. Aliquam erat volutpat. Nullam sit amet erat odio, in posuere magna. 
  59:                  </p>
  60:                  <h2>Entry Title 3</h2>
  61:                  <p>
  62:                      Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed in pharetra quam. Aenean mauris libero, tincidunt eget ultricies sit amet, dictum ut quam. Aliquam erat volutpat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut feugiat accumsan vehicula. Sed congue mattis sapien at tempus. Aliquam ac odio diam. Fusce sodales ipsum ac tortor porta malesuada. Pellentesque feugiat vehicula accumsan. Nunc neque felis, sodales eget porttitor vel, suscipit non velit. Nunc eu justo ipsum, non ultrices orci. Aliquam sed arcu tortor. Donec egestas metus in mauris consectetur a tempus turpis pretium. Maecenas et rutrum dolor. Sed eget massa tellus. Suspendisse potenti. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur sed lobortis nunc. 
  63:                  </p>
  64:              </div>
  65:              <div id="footer">
  66:                  <p>
  67:                      &copy; First copyright year - current year. Statement of rights reserved. Designer links, etc.
  68:                  </p>
  69:              </div>
  70:          </div>
  71:      </body>
  72:  </html>

Copy and paste this code into your favorite editor, or click here to download the source code.

Comments (0)

There are no comments for this entry.

Page: 12Next

Invalid login. Please try again...

Forgot password? Sign up