<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oxagile Software Development Company Web Application Development Blog &#187; source code</title>
	<atom:link href="http://blog.oxagile.com/tag/source-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.oxagile.com</link>
	<description>Web and Mobile Application Development Services</description>
	<lastBuildDate>Wed, 21 Dec 2011 20:11:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lightbox customization (PHP programming tips)</title>
		<link>http://blog.oxagile.com/2008/10/07/lightbox-customization-php-programming-tips/</link>
		<comments>http://blog.oxagile.com/2008/10/07/lightbox-customization-php-programming-tips/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 13:25:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[image gallery]]></category>
		<category><![CDATA[Lightbox]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programming PHP]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://blog.oxagile.com/?p=125</guid>
		<description><![CDATA[ 
   Current version of Lightbox (widely used in web development) has an intricate navigation in the image gallery. At first a user trys to guess where to show “previous” or “next” buttons. This navigation isn’t user friendly. Here are some small modifications for creating a simple navigation:

The best way for creating it [...]]]></description>
			<content:encoded><![CDATA[ 
   <span class = "facebook-like-this" style = "height: px"><iframe src="http://www.facebook.com/plugins/like.php?href=http://blog.oxagile.com/2008/10/07/lightbox-customization-php-programming-tips/&layout=standard&show_faces=false&width=100%&action=like&colorscheme=light&locale=en_US&font=" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:100%px; height:px"></iframe></span><p>Current version of <strong>Lightbox</strong> (widely used in <a href="http://www.oxagile.com/">web development</a>) has an intricate navigation in the image gallery. At first a user trys to guess where to show “previous” or “next” buttons. This navigation isn’t user friendly. Here are some small modifications for creating a simple navigation:</p>
<p style="text-align: center;"><img class="size-full wp-image-152 aligncenter" title="lightbox1" src="http://blog.oxagile.com/wp-content/uploads/2008/10/lightbox1.gif" alt="" width="500" height="233" /></p>
<p>The best way for creating it in your image gallery is overriding the code without direct changes in the lightbox source code. It’s profitable when it is necessary to update the source code.</p>
<p><span id="more-125"></span></p>
<p>Note: In the examples we were using lightbox2.04 in folder lightbox, the folder with the names of styles for containing css styles and the folder with the name ‘js’ for containing the java script code.</p>
<p>1.    Creat the lightbox_override.css in the styles folder and place in it the next code snippet:</p>
<p>[source='php']<br />
#hoverNav{ height: 40px; width: 100%; z-index: 10;}<br />
#hoverNav a{ outline: none; text-align:center }</p>
<p>/* change height for next and previous link */<br />
#prevLink, #nextLink{ width: 60px; height: 40px !important; background-image: url(data:image/gif;base64,AAAA); display: block; }<br />
#prevLink, #prevLink:hover, #prevLink:visited:hover { background: url(/lightbox/images/prevlabel.gif) left 15% no-repeat;}<br />
#nextLink, #nextLink:hover, #nextLink:visited:hover { background: url(/lightbox/images/nextlabel.gif) right 15% no-repeat;}</p>
<p>/* change image data container height */<br />
#imageDataContainer{ height:40px;font: 10px Verdana, Helvetica, sans-serif; background-color: #fff; margin: 0 auto; line-height: 1.4em; overflow: auto; width: 100% ; }</p>
<p>#imageData{ color: #666; }<br />
#imageData #imageDetails{ text-align: center; padding-left:60px; padding-right:60px}<br />
#imageData #numberDisplay{ }<br />
#imageContainer #bottomNavClose{ position:absolute; float: right;  padding-top:2px; width: 17px; right: 10px;outline: none;}<br />
[/source]</p>
<p>2.    Creat the lightbox_override.js in the ‘js’ folder and place in it the next code snippet:<br />
[source='php']<br />
/**<br />
* Override lightbox initialization.<br />
*<br />
*/<br />
Lightbox.prototype.initialize = function() {</p>
<p>this.updateImageList();</p>
<p>this.keyboardAction = this.keyboardAction.bindAsEventListener(this);</p>
<p>if (LightboxOptions.resizeSpeed > 10) LightboxOptions.resizeSpeed = 10;<br />
if (LightboxOptions.resizeSpeed < 1)  LightboxOptions.resizeSpeed = 1;</p>
<p>this.resizeDuration = LightboxOptions.animate ? ((11 - LightboxOptions.resizeSpeed) * 0.15) : 0;<br />
this.overlayDuration = LightboxOptions.animate ? 0.2 : 0;  // shadow fade in/out duration</p>
<p>var size = (LightboxOptions.animate ? 250 : 1) + 'px';<br />
var objBody = $$('body')[0];</p>
<p>objBody.appendChild(Builder.node('div',{id:'overlay'}));</p>
<p>// Change lightbox html code and place next and previous link to bottom of box<br />
objBody.appendChild(Builder.node('div',{id:'lightbox'}, [<br />
Builder.node('div',{id:'outerImageContainer'},<br />
Builder.node('div',{id:'imageContainer'}, [<br />
Builder.node('a',{id:'bottomNavClose', href: '#' },<br />
Builder.node('img', { src: LightboxOptions.fileBottomNavCloseImage })<br />
),<br />
Builder.node('img',{id:'lightboxImage'}),<br />
Builder.node('div',{id:'loading'},<br />
Builder.node('a',{id:'loadingLink', href: '#' },<br />
Builder.node('img', {src: LightboxOptions.fileLoadingImage})<br />
)<br />
)<br />
])<br />
),<br />
Builder.node('div', {id:'imageDataContainer'},<br />
Builder.node('div',{id:'imageData'}, [<br />
Builder.node('div',{id:'hoverNav'}, [<br />
Builder.node('a',{id:'prevLink', href: '#' }),<br />
Builder.node('a',{id:'nextLink', href: '#' }),<br />
Builder.node('div',{id:'imageDetails'}, [<br />
Builder.node('div',{id:'caption'}),<br />
Builder.node('span',{id:'numberDisplay'})<br />
])<br />
])<br />
])<br />
)<br />
]));</p>
<p>$('overlay').hide().observe('click', (function() { this.end(); }).bind(this));<br />
$('lightbox').hide().observe('click', (function(event) { if (event.element().id == 'lightbox') this.end(); }).bind(this));<br />
$('outerImageContainer').setStyle({ width: size, height: size });<br />
$('prevLink').observe('click', (function(event) { event.stop(); this.changeImage(this.activeImage - 1); }).bindAsEventListener(this));<br />
$('nextLink').observe('click', (function(event) { event.stop(); this.changeImage(this.activeImage + 1); }).bindAsEventListener(this));<br />
$('loadingLink').observe('click', (function(event) { event.stop(); this.end(); }).bind(this));<br />
$('bottomNavClose').observe('click', (function(event) { event.stop(); this.end(); }).bind(this));</p>
<p>var th = this;<br />
(function(){<br />
var ids =<br />
'overlay lightbox outerImageContainer imageContainer lightboxImage hoverNav prevLink nextLink loading loadingLink ' +<br />
'imageDataContainer imageData imageDetails caption numberDisplay bottomNav bottomNavClose';<br />
$w(ids).each(function(id){ th[id] = $(id); });<br />
}).defer();<br />
};<br />
[/source]</p>
<p>Difference between standard initialization and custom is in changing html element positions.</p>
<p>3.    Include the standard litebox files:</p>
<p>[source='php']</p>
<p><script type="text/javascript" src="/lightbox/js/prototype.js"></script><br />
<script type="text/javascript" src="/lightbox/js/scriptaculous.js?load=effects,builder"></script><br />
<script type="text/javascript" src="/lightbox/js/lightbox.js"></script></p>
<link rel="stylesheet" href="/lightbox/css/lightbox.css" type="text/css" media="screen"/>
[/source]</p>
<p>4.    Include the ‘css’ customization:</p>
<p>[source='php']</p>
<link rel="stylesheet" href="/styles/lightbox_override.css" type="text/css" media="screen"/>
[/source]</p>
<p>5.    Include the java script logic customization:</p>
<p>[source='php']</p>
<p><script type="text/javascript" src="/js/lightbox_override.js"></script><br />
[/source]</p>
<p><strong>Note</strong>: all files included must be located in the head element of the html page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oxagile.com/2008/10/07/lightbox-customization-php-programming-tips/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The waterfall model</title>
		<link>http://blog.oxagile.com/2007/10/17/the-waterfall-model/</link>
		<comments>http://blog.oxagile.com/2007/10/17/the-waterfall-model/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 15:01:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Project management in IT]]></category>
		<category><![CDATA[Software development methodologies]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[development process]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://blog.oxagile.com/?p=132</guid>
		<description><![CDATA[ 
   The waterfall model (one of the approaches to software development or web development project) describes a linear development method that is often considered the classic approach to the systems development life cycle. This model is a sequential model, used to create different kinds of software, where project development is seen as [...]]]></description>
			<content:encoded><![CDATA[ 
   <span class = "facebook-like-this" style = "height: px"><iframe src="http://www.facebook.com/plugins/like.php?href=http://blog.oxagile.com/2007/10/17/the-waterfall-model/&layout=standard&show_faces=false&width=100%&action=like&colorscheme=light&locale=en_US&font=" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:100%px; height:px"></iframe></span><p>The waterfall model (one of the approaches to software development or <a href="http://www.oxagile.com/skill_set.html">web development project</a>) describes a linear development method that is often considered the classic approach to the systems development life cycle. This model is a sequential model, used to create different kinds of software, where project development is seen as flowing steadily downwards (like a waterfall) through the phases of software development requirements analysis, UI design, software implementation, project verification and software maintenance. The process itself can be divided into different  phases, depending on the IT project or other <a href="http://www.oxagile.com/">web development</a> requirements.</p>
<p><span id="more-132"></span></p>
<p>The main idea of the waterfall model is that software development proceeds from one phase to the next step in a purely sequential manner or way. For example, the wed development team first completes requirements and  when all the desired requirements are fully completed, reviewed and approved, the IT team proceeds to GIU design phase. So, the waterfall model means that the programming team should move to a next following step only when previous phase is completed and everything is approved. However in some model modifications some slight or major variations and even changes  may be included.</p>
<p>The most important advantage of the waterfall idea is that it allows for departmentalization and managerial control. In the common practice a schedule with deadlines for each phase of project development is made and a product can proceed through the development process under the created schedule.</p>
<p>The next argument for the waterfall model is that it puts solid requirements on theproject documentation (design documents and requirements specs) as well as the source code. And if any of team members left the project, less knowledge would be lost in comparison to a project with less designed and documented methodologies. In the waterfall model a fully working design document should be present so, that a new team member or even the entire new team will easily familiarize themselves with a project by reading the documents.</p>
<p>In common practice waterfall methodologies result in a project schedule with 20-40% of the time invested for the first two phases, 30-40% of the time to coding, and the rest dedicated to testing and implementation time. The actual project organization needs to be highly structured. Most medium and large projects will include a detailed set of procedures and controls, which regulate every process on the project.<br />
In theory, such process leads to the project being delivered on time because of detailed plan for each phase, created previously.</p>
<p>However, in practice it’s often impossible to follow the pure waterfall model, because it does not consider the inevitable changes and revisions that become necessary in the development process. Also, many specialists argue on the waterfall model as a bad idea in practice, generally because of the inability to perfect one stage of a software product, before moving to another stage and learning something new from them for any non-trivial project.<br />
For example, customers may not be sure of what requirements exactly they want before they see a working prototype and can comment upon it; they may change their requirements constantly after seeing a result of development, and program designers and implementers may have little or no control over this. If customers change their requirements after a design document is finished, then the document must be modified to correspond to the new requirements. Also, project designers may not be aware of future implementation or development difficulties when writing a design for an unimplemented software product. For example, it may become clear on the implementation phase that a particular area of product functionality is extraordinarily difficult to implement. In this situation, it is better to revise and change the design document rather to persist in using a conception, that was made based on incorrect predictions and that does not consider the newly discovered problem areas. This is one of the reasons, why the waterfall model isn’t commonly used in agile software development.</p>
<p>So, to conclude – the most significant weakpoint of the waterfall model is the possibility that a poor or wrong design choice will not be discovered until the final stages of implementating or testing.  The risk of this happening will increase as the project duration and size go up.  Even competent people make simple mistakes and considering the solid waterfall timetable, mistakes made in the design or requirements documents may not be discovered until half of a year of programming have been completed and the system is being tested.<br />
From the author’s point of view the waterfall model in its pure form can be successfully used either on small projects or on trivial projects, where all requirements are known before the project starts and they won’t change over the time. For example, in mobile games development industry all requirements are usually developed and perfected before the project starts, what allows the development team to work on the pure waterfall model. However if there is even a miserable chance that the project is non-trivial or there are non-completed requirements the waterfall model won’t be the best one to work on.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oxagile.com/2007/10/17/the-waterfall-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

